好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

angular 一个界面调用另一个界面的方式1

 

红色标记的hr都是顶级的module,每个路由节点都会引入hr这个module,所以这些嵌入的界面可以放在hr这个module下

angular.module(' hr.templateCache ').run(['$templateCache',  function   ($templateCache) {
    $templateCache.put( 'presc-create-modal.html', "<div hr-draggable class=\"create-presc\" modal=\"modalShow\" options=\"prescModalOpts\" ng-controller=\"PrescCreateModalController\">\n    <header class=\"modal-header\">\n        <button type=\"button\" class=\"close\" ng-click=\"closePrescCreateModal()\">&times;</button>\n        <h5>生成处方</h5>\n    </header>\n    <div class=\"mg5505\">\n        <div class=\"form-horizontal presc-attr\">\n            <!--处方类型-->\n            <div class=\"control-group label-four drug-type\">\n                <label class=\"control-label\">处方类型:</label>\n                <div class=\"controls\">\n                        <span ng-repeat=\"prescTypeDict in prescTypeDictList\"\n                              ng-if=\"isPrescTypeShow(prescTypeDict.codeName)\">\n                            <label class=\"checkbox inline\">\n                                <input type=\"checkbox\" value=\"{{prescTypeDict.codeName}}\" ng-click=\"applyCheckEvent()\"\n                                       ng-disabled=\"isRejectOption(prescTypeDict)\" ng-checked=\"isPrescAttrChecked(prescTypeDict.codeName)\"\n                                       name=\"prescAttr\">{{prescTypeDict.codeName}}\n                            </label>\n                        </span>\n                </div>\n            </div>\n            <!--药房-->\n            <div class=\"control-group label-two drug-room\" ng-show=\"clinicInfo.groupOrder != 2\">\n                <label class=\"control-label\">药房</label>\n                <div class=\"controls\">\n                    <select ui-select2 id=\"deptInfo\"\n                            enter-loop=\"1\" enterindex=\"3\"\n                            ng-model=\"performDeptIdPrescCreate\" ng-change=\"changePerformDept(performDeptIdPrescCreate)\">\n                        <option ng-repeat=\"dept in departmentWestDispensary\"\n                                code=\"{{dept.deptCode}}\"\n                                value=\"{{dept.deptCode}}\">{{dept.deptName}}\n                        </option>\n                    </select>\n                </div>\n            </div>\n        </div>\n        <div class=\"body-content border-line-top-left-right\" ng-grid=\"prescOrdersGrid\"></div>\n    </div>\n    <div class=\"modal-footer btn-right\">\n        <button class=\"btn btn-primary\" ng-click=\"createPresc()\">生成</button>\n        <button class=\"btn btn-default\" ng-click=\"closePrescCreateModal()\">关闭</button>\n    </div>\n</div>" );
}]);

angular.module( ' hr ').controller('PrescCreateModalController', ['$scope', '$http', '$timeout', 'hrDialog', 'HrDrugBillingAttr', 'hrProgress' ,
      function   ($scope, $http, $timeout, hrDialog, HrDrugBillingAttr, hrProgress) {
    $scope.modalShow  =  true  ;
      //  医嘱生成处方药房 
    $scope.performDeptIdPrescCreate =  null  ;
      //  可生成处方医嘱List(药疗,不摆药,已执行) 
    $scope.ordersDrugWestListPrescCreate =  [];
      //  页面显示可生成处方医嘱List 
    $scope.orderDetailListPrescCreate =  [];
      //  医嘱最后发药信息List 
    $scope.drugPrescDetailList =  [];
    $scope.prescModalOpts  =  {
        dialogClass:  "modal create-presc-modal" ,
        backdropFade:   false  ,
        dialogFade:   false  ,
        keyboard:   true  ,
        backdrop:   true  ,
        backdropClick:   false  
    };
    $scope.closePrescCreateModal  =  function   () {
        $scope.modalShow  =  false  ;
        $scope.modal.close();
        $timeout(  function   () {
            $scope.$destroy();
        })
    };

      function   initPrescCreate() {
        $scope.ordersDrugWestListPrescCreate  = angular.copy($scope.ordersDrugWestOtherList.filter( function   (doctorOrder) {
              return   isOrderForPrescCreate(doctorOrder);
        }));
          for  ( var  i = 0; i < $scope.ordersDrugWestListPrescCreate.length; i++ ) {
              var  orderDetail =  convertDrugWestToDetail($scope.ordersDrugWestListPrescCreate[i]);
            orderDetail.packageUnits  =  $scope.ordersDrugWestListPrescCreate[i].drugOrderDetail.packageUnits;
            orderDetail.totalAmount  =  null  ;
            orderDetail.days  =  null  ;
            $scope.orderDetailListPrescCreate.push(orderDetail);
        }
        $scope.performDeptIdPrescCreate  =  getDefaultDispensary($scope.departmentWestDispensary, $scope.defaultWestDispensary);
        setOrderDetailShow();
    }

      function   getOrderFilterShow(rowIndex) {
          if  (rowIndex > 0 ) {
              var  orderDetail =  $scope.orderDetailListPrescCreate[rowIndex];
              var  orderDetailPre = $scope.orderDetailListPrescCreate[rowIndex - 1 ];
              var  orderClass =  orderDetail.orderClass;
              var  orderClassPre =  orderDetailPre.orderClass;
              if  (orderClass === orderClassPre && orderDetail.groupNo ===  orderDetailPre.groupNo) {
                  return   false  ;
            }
        }
          return   true  ;
    }

      function   getOrderTxtExtendDrugWestShow(rowIndex) {
          var  orderDetailList =  $scope.orderDetailListPrescCreate;
          if  (orderDetailList.length <=  rowIndex) {
              return   true  ;
        }

          var  totalLen = orderDetailList.length - 1 ;
          var  pre = 0 ;
          var  next = 0 ;

          if  (rowIndex ===  totalLen) {
            next  =  rowIndex;
        }   else   {
            next  = rowIndex + 1 ;
        }
          if  (rowIndex > 0 ) {
            pre  = rowIndex - 1 ;
        }
          var  currentGroupNo =  orderDetailList[rowIndex].groupNo;
          var  preGroupNo =  orderDetailList[pre].groupNo;
          var  nextGroupNo =  orderDetailList[next].groupNo;

          if  (rowIndex === 0 ) {
              if  (next > rowIndex && currentGroupNo ===  nextGroupNo) {
                  return   true  ;
            }
        }   else   if  (rowIndex ===  totalLen) {
              if  (pre < rowIndex && currentGroupNo ===  preGroupNo) {
                  return   false  ;
            }
        }   else   {
              if  (currentGroupNo ===  preGroupNo) {
                  if  (currentGroupNo ===  nextGroupNo) {
                      return   false  ;
                }   else   {
                      return   false  ;
                }
            }   else   {
                  if  (currentGroupNo ===  nextGroupNo) {
                      return   true  ;
                }   else   {
                      return   true  ;
                }
            }
        }
          return   true  ;
    }

    $scope.changePerformDept  =  function  (performDeptIdPrescCreate){
        angular.forEach($scope.ordersDrugWestListPrescCreate,   function  (item){
            item.performDeptId  =  performDeptIdPrescCreate;
        })
    };

      function   setOrderDetailShow() {
        $scope.orderDetailListPrescCreate.forEach(  function   (item, index) {
            item.detailShow  =  getOrderFilterShow(index);
            item.orderTxtExtendShow  =  getOrderTxtExtendDrugWestShow(index);
            item.orderStatusCodeName  = $scope.getOrderStatusByCode(item, "order" );
            item.firmId  =  $scope.getDrugFirmIdByOrderId(item.orderId);
        });
    }

      function   isOrderForPrescCreate(doctorOrder) {
          if  (doctorOrder.orderClass === orderClassEnum.orderDrugWest && doctorOrder.drugBillingAttr === HrDrugBillingAttr.NONE && doctorOrder.orderStatus ===  orderStatusEnum.EXECUTE) {
              var  index =  $scope.getSelectedRowNumOther(doctorOrder.orderId);
              if  (index !== -1) { //  停止医嘱 护士站未回写doctorOrders状态 需要检查performStatus 
                 if  ($scope.orderDetailOtherList[index].performStatus ===  orderStatusEnum.EXECUTE) {
                      return   true  ;
                }
            }
        }
          return   false  ;
    }

      function   getDrugPrescDetailByOrderId(orderId) {
          var  filter = $scope.drugPrescDetailList.filter( function   (item) {
              return  item.itemNo ===  orderId;
        });
          if  (filter.length > 0 ) {
              return  filter[0 ];
        }
          return   null  ;
    }

      function   calculateDays(drugOrderDetail,orderDetail) {
          /*  var drugPrescDetail = getDrugPrescDetailByOrderId(drugOrderDetail.orderId);
        if (drugPrescDetail == null) {
            return null;
        }  */ 
         var  amountPerPackage = drugOrderDetail.amountPerPackage || 0;   //  包装数量 
         var  dosage = drugOrderDetail.dosage || 0;    //  药品默认一次使用剂量 0.25 
         var  usageUnits = drugOrderDetail.usageUnits || "";    //  使用单位 
         var  dosePerUnit = drugOrderDetail.dosePerUnit || 0;     //  最小单位剂量 0.25 
         var  doseUnits = drugOrderDetail.doseUnits || "";      //  剂量单位 mg 
         var  units = drugOrderDetail.units || "";      //  单位 片 
         var  freqCounter = drugOrderDetail.freqCounter || 0;      //  默认频率次数 3 
         var  freqInterval = drugOrderDetail.freqInterval || 0;    //  默认频率间隔 1 
         var  freqIntervalUnit = drugOrderDetail.freqIntervalUnit || "";    //  默认频率间隔单位 日 
         var  totalAmount = drugOrderDetail.quantity || 0;      //  数量 
         var  dosageForUnits = 0 ;
          var  countPerDay = 0 ;
          var  countPerWeek = 0 ;

          if  (usageUnits !==  units) {
            dosageForUnits  = dosage /  dosePerUnit;
        }   else   {
            dosageForUnits  =  dosage;
        }
          if  (freqIntervalUnit === "小时" ) {
            countPerDay  = (24 / freqInterval) *  freqCounter;
        }   else   if  (freqIntervalUnit === "分钟" || freqIntervalUnit === "分" ) {
            countPerDay  = (24 * 60 / freqInterval) *  freqCounter;
        }   else   if  (freqIntervalUnit === "日" ) {
            countPerDay  = (freqCounter /  freqInterval);
        }   else   if  (freqIntervalUnit === "周" ) {
            countPerWeek  = freqCounter /  freqInterval;
        }
          var  days =  orderDetail.days;
          if  (freqIntervalUnit === "周" ) {
            orderDetail.totalAmount  = Math.ceil(Math.ceil(days / 7) * countPerWeek * dosageForUnits /  amountPerPackage);
        }   else   {
            orderDetail.totalAmount  = Math.ceil(days * countPerDay * dosageForUnits /  amountPerPackage);
        }
        orderDetail.totalAmount  = isNaN(orderDetail.totalAmount==0? null :orderDetail.totalAmount)== true ? null  :orderDetail.totalAmount;
    }

      //  查询最后发药天数 
     function   getLastPerformDays(callback) {
          var  orderIdList = $scope.ordersDrugWestListPrescCreate.map( function   (item) {
              return   item.orderId;
        });
          var  successCallback =  function   (data) {
            $scope.drugPrescDetailList  =  data;
            callback();
        };
          var  errorCallback =  function   (data) {
            hrDialog.dialog(hrDialog.typeEnum.WARN, {
                message:  "查询发药信息失败!" ,
                detail: data.message
            });
            callback();
        };
        HrUtils.httpRequest($http, Path.getUri( "api/inp-orders/presc-last-perform-days" ), successCallback, errorCallback, hrDialog, HrUtils.httpMethod.POST, orderIdList);
    }

      //  小包装大包装的转换 
     function   getPackageUnits(index) {
          var  drugOrderDetail =  $scope.ordersDrugWestListPrescCreate[index].drugOrderDetail;
          var  successCallback =  function   (data) {
            data  = data.filter( function   (item) {
                  return  item.amountPerPackage > 1 ;
            });
              if  (data.length > 0 ) {
                drugOrderDetail.packageSpec  = data[0 ].packageSpec;
                drugOrderDetail.packageUnits  = data[0 ].packageUnits;
                drugOrderDetail.amountPerPackage  = data[0 ].amountPerPackage;
                $scope.orderDetailListPrescCreate[index].packageUnits  = data[0 ].packageUnits;
                $scope.orderDetailListPrescCreate[index].orderTxt  =  $scope.getOrderTxtDrugWest(drugOrderDetail);
            }
            calculateDays(drugOrderDetail,$scope.orderDetailListPrescCreate[index]);
              if  (index < $scope.ordersDrugWestListPrescCreate.length - 1 ) {
                getPackageUnits( ++ index);
            }
        };
          if  (drugOrderDetail.amountPerPackage === 1 ) {
            HrUtils.httpRequest($http, Path.getUri( "api/drug-info-list/special-drug-price-list"), successCallback,  null  , hrDialog, HrUtils.httpMethod.POST, drugOrderDetail);
        }   else   {
            calculateDays(drugOrderDetail,$scope.orderDetailListPrescCreate[index]);
              if  (index < $scope.ordersDrugWestListPrescCreate.length - 1 ) {
                getPackageUnits( ++ index);
            }
        }
    }

      function   convertDrugWestToDetail(inpOrders, prescSpecType) {
          var  orderDetail =  {};
          var  drugOrderDetailTemp =  inpOrders.drugOrderDetail;
          if  (drugOrderDetailTemp.deleteStatus !== 1 ) {
            orderDetail  = $scope.getOrderDetailDrug(inpOrders, drugOrderDetailTemp,  true , 0 , prescSpecType);
        }
          return   orderDetail;
    }

      function   getDrugPrescAttrDetail(data){
          if  (Strings.isNullOrEmpty(data)){
              return  "普通" ;
        }
          var  prescAttr = "" ;
          switch   (data.toxiCode) {
              case  "2" :
                prescAttr  = "精1" ;
                  break  ;
              case  "7" :
                prescAttr  = "精2" ;
                  break  ;
              case  "6" :
                prescAttr  = "毒" ;
                  break  ;
              case  "5" :
                prescAttr  = "麻" ;
                  break  ;
              default   :
                prescAttr  = "普通" ;
        }
          return   prescAttr;
    }

      //  获取药品属性 
     function   getDrugPrescAttr(ordersDrugWestListPresc, index, callback){
          var  doctorOrders =  ordersDrugWestListPresc[index];
          var  successCallback =  function   (data) {
            doctorOrders.prescAttr  =  getDrugPrescAttrDetail(data);
              if  (index < ordersDrugWestListPresc.length - 1 ) {
                getDrugPrescAttr(ordersDrugWestListPresc,  ++ index, callback);
            }   else   {
                callback();
            }
        };
        HrUtils.httpRequest($http, Path.getUri( "api/inp-orders/get-drug-prescAttr?drugCode=" + doctorOrders.drugOrderDetail.drugCode), successCallback,  null , hrDialog, HrUtils.httpMethod.POST,  null  );
    }

      //  生成orderDrugInfo 
     function   getOrderDrugInfo(doctorOrders, drugOrderDetail, callback){
          var  orderDrugInfo =  new   OrderDrugInfo();
        orderDrugInfo.operationStatus  = doctorOrders.operationStatus; //
         orderDrugInfo.administration =  drugOrderDetail.administration;
        orderDrugInfo.amountPerPackage  =  drugOrderDetail.amountPerPackage;
        orderDrugInfo.amountPerPackage  =  drugOrderDetail.amountPerPackage;
        orderDrugInfo.babyNo  =  doctorOrders.babyNo;
        orderDrugInfo.billingAttr  =  doctorOrders.billingAttr;
        orderDrugInfo.charge  = drugOrderDetail.totalAmount *  drugOrderDetail.price;
        orderDrugInfo.costs  = drugOrderDetail.totalAmount *  drugOrderDetail.price;
        orderDrugInfo.days  =  drugOrderDetail.days;
        orderDrugInfo.dosage  =  drugOrderDetail.dosage;
        orderDrugInfo.dosePerUnit  =  drugOrderDetail.dosePerUnit;
        orderDrugInfo.doseUnits  =  drugOrderDetail.doseUnits;
        orderDrugInfo.drugCode  =  drugOrderDetail.drugCode;
        orderDrugInfo.drugName  =  drugOrderDetail.drugName;
        orderDrugInfo.drugSpec  =  drugOrderDetail.drugSpec;
        orderDrugInfo.drugTradeCode  =  drugOrderDetail.drugTradeCode;
        orderDrugInfo.drugTradeName  =  drugOrderDetail.drugTradeName;
        orderDrugInfo.duration  =  drugOrderDetail.duration;
        orderDrugInfo.durationUnits  =  drugOrderDetail.durationUnits;
        orderDrugInfo.encounterNo  =  doctorOrders.encounterNo;
        orderDrugInfo.firmId  =  drugOrderDetail.firmId;
        orderDrugInfo.focusSelfPay  =  doctorOrders.focusSelfPay;
        orderDrugInfo.freqCounter  =  drugOrderDetail.freqCounter;
        orderDrugInfo.freqInterval  =  drugOrderDetail.freqInterval;
        orderDrugInfo.freqIntervalUnit  =  drugOrderDetail.freqIntervalUnit;
        orderDrugInfo.frequency  =  drugOrderDetail.frequency;
        orderDrugInfo.groupGraph  =  doctorOrders.groupGraph;
        orderDrugInfo.isGroup  = doctorOrders.isGroup; //
         orderDrugInfo.memo =  doctorOrders.memo;
        orderDrugInfo.menstruumIndicator  =  drugOrderDetail.menstruumIndicator;
        orderDrugInfo.packageSpec  =  drugOrderDetail.packageSpec;
        orderDrugInfo.packageUnits  =  drugOrderDetail.packageUnits;
        orderDrugInfo.performDeptId  =  doctorOrders.performDeptId;
        orderDrugInfo.prescAttr  =  doctorOrders.prescAttr;
        orderDrugInfo.price  =  drugOrderDetail.price;
        orderDrugInfo.stIndicator  =  drugOrderDetail.stIndicator;
        orderDrugInfo.totalAmount  =  drugOrderDetail.totalAmount;
        orderDrugInfo.units  =  drugOrderDetail.units;
        orderDrugInfo.usageUnits  =  drugOrderDetail.usageUnits;
        orderDrugInfo.userDescription  =  drugOrderDetail.userDescription;
        orderDrugInfo.visitNo  =  doctorOrders.visitNo;
        callback(orderDrugInfo);
    }

      //  校验是否数量为空 
     function   checkTotalAmountOrDays(orderDetailListPresc, ordersDrugWestListPresc, callback){
          var  filter = orderDetailListPresc.filter( function  (item){
              if (Strings.isNullOrEmpty(item.totalAmount) || item.totalAmount == 0 || Strings.isNullOrEmpty(item.days) || item.days == 0 ){
                  return   item;
            }
        });
          if (filter.length > 0 ){
              for ( var  i=0; i<  ordersDrugWestListPresc.length;){
                  if (ordersDrugWestListPresc[i].orderId == filter[0 ].orderId){
                    hrDialog.dialog(hrDialog.typeEnum.WARN, {message:  "请检查" + ordersDrugWestListPresc[i].drugOrderDetail.drugName + "药品天数或者数量" })
                        .close(  function  (){
                        });
                      return   false  ;
                }
                 ++ i;
            }
        }   else   {
            callback();
        }
    }

      /*  function checkDrugFirm(orderDrugInfo, callback) {
        var queryInfo = {
            "drugCode": orderDrugInfo.drugCode,
            "drugTradeName": "",
            "deptCode": $scope.performDeptIdPrescCreate,
            "chargeType": $scope.patientInfo.chargeType,
            "constrainedDoctorLevel": $scope.doctorInfo.constrainedDoctorLevel,
            "packageUnitsFlag": 1,
            "displayFlag": true
        };
        var drugInfoSuccessCallback = function (data) {
            if (data && data.length > 0) {
                var list = data.filter(function (item) {
                    if (item.drugCode === orderDrugInfo.drugCode && item.drugSpec === orderDrugInfo.drugSpec && item.firmId === orderDrugInfo.firmId && item.packageSpec === orderDrugInfo.packageSpec) {
                        return true;
                    }
                });
                if (list.length > 0) {
                    orderDrugInfo.price = data[0].price;
                    callback(orderDrugInfo);
                } else {
                    hrDialog.dialog(hrDialog.typeEnum.WARN, {message: orderDrugInfo.drugName + "(" + orderDrugInfo.packageSpec + ")" + "'药品不可供!"});
                }
            } else {
                hrDialog.dialog(hrDialog.typeEnum.WARN, {message: orderDrugInfo.drugName + "(" + orderDrugInfo.packageSpec + ")" + "'药品不可供!"});
            }
        };
        HrUtils.httpRequest($http, Path.getUri("api/drug-name-dict/drug-trade-price-info"), drugInfoSuccessCallback, null, hrDialog, HrUtils.httpMethod.POST, queryInfo);
    }  */ 

     //  检验是否选中要生成处方的医嘱 
     function   checkOrdersQuantity(callback) {
          var  orderDetailListPresc =  [];
          var  ordersDrugWestListPresc =  [];
        angular.forEach($scope.orderDetailListPrescCreate,   function  (item,index){
              if  (item.checked){
                orderDetailListPresc.push(item);
                ordersDrugWestListPresc.push($scope.ordersDrugWestListPrescCreate[index]);
            }
        });
          if (orderDetailListPresc.length == 0 ){
            hrDialog.dialog(hrDialog.typeEnum.WARN, {message:  "请选择要生成的处方的医嘱!" });
              return   false  ;
        }   else   {
            callback(orderDetailListPresc, ordersDrugWestListPresc);
        }
    }

      function   getPrescAttr() {
          var  prescAttrList =  [];
          var  checkBoxs = $('input[name="prescAttr"]' );
          for  ( var  i = 0; i < checkBoxs.length; i++ ) {
              var  checkBox =  checkBoxs.get(i);
              if  (checkBox.checked && ! angular.equals(checkBox.value, prescAttrEnum.PT)) {
                prescAttrList.push(checkBox.value)
            }
        }
          var  prescAttr = prescAttrList.join(";" );
          if  (angular.equals(prescAttr, "" )) {
            prescAttr  =  prescAttrEnum.PT;
        }
          return   prescAttr;
    }

    $scope.columnDefsPrescOrders  =  [
        {
            field:  '', displayName: '选择', width: "5%", cellClass: "text-center", cellTemplate: '' +
        '<div class="ngCellText">\n    <input type="checkbox" ng-model="row.entity.checked" ng-show="row.entity.groupSubNo == 1" ng-true-value="1" ng-false-value="0" ng-click="preventCheck(row.rowIndex)"/>\n</div>' 
        },
        {
            field:  'startDateTime', displayName: '下达时间', width: "9%", cellClass: "text-center", cellTemplate: '' +
        '<div class="ngCellText" ng-show="row.entity.detailShow">{{::getOrderDateTime(row.getProperty(col.field))}}</div>' 
        },
        {
            field:  'repeatIndicator', displayName: '长/临', width: "5%", cellTemplate: '' +
        '<div class="ngCellText" ng-show="row.entity.detailShow">{{::getOrderRepeatIndicator(row.getProperty(col.field))}}</div>' 
        },
        {
            field:  'days' ,
            displayName:  '天数' ,
            width:  '5%' ,
            cellClass:  "text-center" ,
            cellTemplate:  '' +
            '    <div class="input-append">\n        <input class="input-mini drug-amount-presc text-right" type="text" ng-model="row.entity.days" ng-change="changeOrdersDays(row.rowIndex)"\n               number-only-by-condition number-type="+" decimal-type="integer"/>\n    </div>\n' 

        },
        {
            field:  'totalAmount' ,
            displayName:  '数量' ,
            width:  "11%" ,
            cellTemplate:  '' +
        '    <div class="input-append">\n        <input class="input-mini drug-amount-presc text-right" type="text" ng-model="row.entity.totalAmount" ng-disabled="true"/>\n        <span class="add-on">{{row.entity.packageUnits}}</span>\n    </div>\n' 
        },
        {
            field:  'orderTxt', displayName: '医嘱', cellTemplate: '' +
        '<div class="ngCellText" title="{{::row.entity.firmId}}"> ' +
        '<span ng-bind-html="deliberatelyTrustDangerousSnippet(row.getProperty(col.field))"></span> ' +
        '<span class="drug-order-detail-flag">{{::row.entity.groupGraph}}</span> ' +
        '<span ng-show="row.entity.orderTxtExtendShow" ng-bind-html="deliberatelyTrustDangerousSnippet(row.getProperty(\'orderTxtExtend\'))"></span>' +
        '</div>' 
        },
        {
            field:  'doctor', displayName: '医师', width: '8%', cellTemplate: '' +
        '<div class="ngCellText" ng-show="row.entity.detailShow">{{::row.getProperty(col.field)}}</div> ' 
        },
        {
            field:  'orderStatus', displayName: '状态', width: '7.5%', cellTemplate: '' +
        '<div class="ngCellText" title="{{::row.entity.orderStatusCodeName}}">' +
        '{{::row.entity.orderStatusCodeName}}' +
        '</div>' 
        }
          /*  ,
        {
            field: 'prescDate',
            displayName: '最后发药时间',
            width: '10%',
            cellClass: "text-center",
            cellTemplate: '' +
            '<div class="ngCellText" title="{{::getOrderDateTime(row.getProperty(col.field))}}">' +
            '{{::getOrderDateTime(row.getProperty(col.field))}}' +
            '</div>'
        }  */  
    ];

      var  rowTemplatePrescOrders = "<div ng-style=\"{ \'cursor\': row.cursor}\" ng-repeat=\"col in renderedColumns\"\n    ng-class=\"col.colIndex()\" class=\"ngCell {{col.cellClass}} {{changeClassState(row.entity)}}\">\n    <div class=\"ngVerticalBar\" ng-style=\"{height: rowHeight}\" ng-class=\"{ ngVerticalBarVisible: !$last }\">&nbsp;</div>\n    <div ng-cell></div>\n</div>" ;

    $scope.prescOrdersGrid  =  {
        data:  'orderDetailListPrescCreate' ,
        columnDefs:  'columnDefsPrescOrders' ,
        rowTemplate: rowTemplatePrescOrders,
        enableColumnResize:   false  ,
        multiSelect:   false  ,
        enableSorting:   false  
    };

    $scope.preventCheck  =  function   (index) {
          var  orderDetail =  $scope.orderDetailListPrescCreate[index];
          if (orderDetail.groupSubNo == 1 ){
            angular.forEach($scope.orderDetailListPrescCreate,   function  (item){
                  if (item.groupNo ==  orderDetail.groupNo)
                item.checked  =  orderDetail.checked;
            })
        }
        event.stopPropagation();  //  已在rowTemplate 添加点击行选择 
     };

    $scope.changeOrdersDays  =  function   (index) {
          var  orderDetail =  $scope.orderDetailListPrescCreate[index];
          var  days =  orderDetail.days;
        angular.forEach($scope.orderDetailListPrescCreate,  function  (item,index){
              if (item.groupNo ==  orderDetail.groupNo){
                item.days  =  days;
                calculateDays($scope.ordersDrugWestListPrescCreate[index].drugOrderDetail,$scope.orderDetailListPrescCreate[index]);
            }
        });
    };

    $scope.isPrescTypeShow  =  function   (codeName) {
          if  (codeName ===  prescAttrEnum.PT) {
              return   false  ;
        }   else   if  (codeName === prescAttrEnum.ET && ! $scope.isChildAvaliable) {
              return   false  ;
        }
          return   true  ;
    };

    $scope.isPrescAttrChecked  =  function   (codeName) {
          if  (codeName === prescAttrEnum.YB && $scope.prescInsuranceSign === "1" ) {
              return   true  ;
        }
          if  ($scope.clinicInfo.clinicSource === clinicSourceEnum.ER_ORDER_INP && codeName ===  prescAttrEnum.JZ) {
              return   true  ;
        }
          return   false  ;
    };

    $scope.isRejectOption  =  function   (prescTypeDict) {
          if  (! $scope.prescTypeDictList) {
              return   false  ;
        }
          if  (prescTypeDict.codeName === prescAttrEnum.YB && $scope.prescInsuranceSign === "0" ) {
              return   true ; //  非医保患者,禁用医保 
         }
          //  急诊红区 默认勾选禁用 
         if  ($scope.clinicInfo.clinicSource === clinicSourceEnum.ER_ORDER_INP && prescTypeDict.codeName ===  prescAttrEnum.JZ) {
              return   true  ;
        }
          var  prescAttr =  getPrescAttr();
          if  (angular.equals(prescAttr, prescAttrEnum.PT)) { //  普通处方,均可用 
             return   false  ;
        }
          var  prescAttrList = $scope.prescTypeDictList.filter( function   (e) {
              return  prescAttr.split(";").some( function   (codeName) {
                  return  e.codeName ===  codeName;
            })
        });
          var  isReject = prescAttrList.some( function   (e) {
              if  (! e.ctrvalue1) {
                  return   false  ;
            }   else   {
                  return  e.ctrvalue1.split(";").some( function   (rejectCodeId) {
                      return  rejectCodeId ===  prescTypeDict.codeId;
                });
            }
        });
          var  isReverseReject = prescAttrList.some( function   (e) {
              if  (! prescTypeDict.ctrvalue1) {
                  return   false  ;
            }   else   {
                  return  prescTypeDict.ctrvalue1.split(";").some( function   (rejectCodeId) {
                      return  rejectCodeId ===  e.codeId;
                })
            }
        });
          return  isReject ||  isReverseReject;
    };

    $scope.applyCheckEvent  =  function   () {
          if  (! $scope.$$phase) {
            $scope.$apply();
        }
    };

    $scope.createPresc  =  function   () {
          //  检查是否选中 
        checkOrdersQuantity( function (orderDetailListPresc, ordersDrugWestListPresc){ //  选中的要生成的处方的医嘱 
            checkTotalAmountOrDays(orderDetailListPresc, ordersDrugWestListPresc,  function  (){
                getDrugPrescAttr(ordersDrugWestListPresc,  0,  function  (){
                      var  groupNo = ordersDrugWestListPresc[0 ].groupNo;
                      for ( var  i=0; i< ordersDrugWestListPresc.length; ){
                          var  doctorOrders =  ordersDrugWestListPresc[i];
                          if (ordersDrugWestListPresc[i].groupNo ==  groupNo){
                              if (ordersDrugWestListPresc[i].groupSubNo == 1 ){
                                doctorOrders.operationStatus  = "1" ;
                                doctorOrders.isGroup  = "0" ;
                            }   else   {
                                doctorOrders.operationStatus  = "0" ;
                                doctorOrders.isGroup  = "1" ;
                            }
                        }   else   {
                            groupNo  =  doctorOrders.groupNo;
                            doctorOrders.operationStatus  = "1" ;
                            doctorOrders.isGroup  = "0" ;
                        }
                          var  drugOrderDetail =  doctorOrders.drugOrderDetail;
                        drugOrderDetail.totalAmount  =  orderDetailListPresc[i].totalAmount;
                        drugOrderDetail.days  =  orderDetailListPresc[i].days;
                          //  封装new InpOrderDrugInfo(); 
                        getOrderDrugInfo(doctorOrders, drugOrderDetail,  function  (orderDrugInfo){
                            $scope.addDrugInfoDetailForOrder(orderDrugInfo);
                            i ++ ;
                        })
                    }
                })
                $scope.closePrescCreateModal();
            });
        })
    };

    (  function   () {
        initPrescCreate();
        getLastPerformDays(  function   () {
              //  getPackageUnits(0); 
         });
    })();
}]);


angular.module( ' hr.service ').factory('PrescCreate', ['$templateCache', '$document', '$compile', '$rootScope', '$timeout' ,
      function   ($templateCache, $document, $compile, $rootScope, $timeout) {

          /*  *
         * 打开modal
         * @param scope 父级$scope
           */ 
         function   _openPrescCreateModal(scope) {
              new   PrescCreateModal(scope).open();

        }

          function   PrescCreateModal(scope) {
              this ._scope =  scope;
              this ._activeElement =  null  ;
              this ._element = angular.element($templateCache.get('presc-create-modal.html' ));
        }

        PrescCreateModal.prototype.open  =  function   () {
              if   (event) {
                event.stopPropagation();
                event.preventDefault();
            }
              this ._activeElement =  $(document.activeElement);
              this  ._activeElement.blur();
              var  scope =  this ._scope.$ new  ();
            scope.modal  =  this  ;
            $document.find( 'body').append( this  ._element);
            $compile(  this  ._element)(scope);
            $timeout(  function   () {
                Mousetrap.reset();
            });
        };

        PrescCreateModal.prototype.close  =  function   () {
              this  ._element.remove();
              this  ._activeElement.focus();
        };

          return   {
            openPrescCreateModal: _openPrescCreateModal
        }
    }
]); 

使用方式:

 var  InpOrdersController = ["$scope", "$q", "$http", "$filter", "hrDialog", "$timeout", "PluginManager", "$window", "HrOrderStatus", "hrProgress", "HrDrugBillingAttr", "HrBillingAttr", " PrescCreate ", "MainTreatGroupVerify", "CpVariationCheck", "HrOrder", "$rootScope", "HrChargeType", "$debounce",  function   ($scope, $q, $http, $filter, hrDialog, $timeout, PluginManager, $window, HrOrderStatus, hrProgress, HrDrugBillingAttr, HrBillingAttr,  PrescCreate , MainTreatGroupVerify, CpVariationCheck, HrOrder, $rootScope, HrChargeType, $debounce) {
      //  生成处方调用 
    $scope.openCreatePrescModal =  function   () {
          if   ($scope.operButtonDisabled.create) {
              return   false  ;
        }
        findPerformOrders(  function   () {
             PrescCreate .openPrescCreateModal($scope);
        });
    };
}]; 

因为绑定InpOrdersControllr的module注入了hr所以在InpOrdersController可以注入hr下的PrescCreate

查看更多关于angular 一个界面调用另一个界面的方式1的详细内容...

  阅读:44次