1. 程式人生 > >angular 一個界面調用另一個界面的方式1

angular 一個界面調用另一個界面的方式1

nsa UNC tco actor attr tde apply pty PC

紅色標記的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