var appFormly = angular.module("formlyExample", [ "formly", "formlyBootstrap", "ui.bootstrap", "ngSanitize", "ui.select", "ui.grid", ]); app.requires.push("formlyExample"); // var appFormly = angular.module('formlyExample', [ // 'formly', 'formlyBootstrap','ui.bootstrap', // 'ngSanitize','ui.select','ui.grid'], // 图片上传 app.factory("fileReader", [ "$q", "$log", function ($q, $log) { var onLoad = function (reader, deferred, scope) { return function () { scope.$apply(function () { deferred.resolve(reader.result); }); }; }; var onError = function (reader, deferred, scope) { return function () { scope.$apply(function () { deferred.reject(reader.result); }); }; }; var getReader = function (deferred, scope) { var reader = new FileReader(); //fileReader reader.onload = onLoad(reader, deferred, scope); reader.onerror = onError(reader, deferred, scope); return reader; }; var readAsDataURL = function (file, scope) { var deferred = $q.defer(); var reader = getReader(deferred, scope); reader.readAsDataURL(file); return deferred.promise; }; return { readAsDataUrl: readAsDataURL, }; }, ]); appFormly.filter("minutesToHours", function () { //分钟转小时 return function (num) { var hour = parseInt(num / 60); var minute = num % 60; return hour + "小时" + minute + "分钟"; }; }); appFormly.config(function config(formlyConfigProvider) { //格式转换方法 XXX-XXX转驼峰命名 function camelize(string) { string = string.replace(/[\-_\s]+(.)?/g, function (match, chr) { return chr ? chr.toUpperCase() : ""; }); // Ensure 1st char is always lowercase return string.replace(/^([A-Z])/, function (match, chr) { return chr ? chr.toLowerCase() : ""; }); } //获取ngModelAttr对象设置 function getNgModelAttr(attrs, bindings) { var ngModelAttrs = {}; angular.forEach(attrs, function (attr) { ngModelAttrs[camelize(attr)] = { attribute: attr, }; }); angular.forEach(bindings, function (binding) { ngModelAttrs[camelize(binding)] = { bound: binding, }; }); return ngModelAttrs; } formlyConfigProvider.setWrapper({ overwriteOk: true, name: "bootstrapLabel", templateUrl: "assets/views/customform/tpl/normal-label.html", }); //流程图 formlyConfigProvider.setType({ name: "ui-process", templateUrl: "assets/views/customform/tpl/cmdb/ui-process.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$modal", "SweetAlert", "api_bpm_domain", function ($scope, $modal, SweetAlert, api_bpm_domain) { $scope.processdata = []; api_bpm_domain .flowTracing($scope.model.applicationForm.processInstanceId) .then(function (data) { console.log(data); $scope.processdata = data.data; }); }, ], }); //出库单详情 formlyConfigProvider.setType({ name: "ui-getoutinform", extends: "radio", templateUrl: "assets/views/customform/tpl/cmdb/ui-getoutinform.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$modal", "SweetAlert", "api_bpm_domain", function ($scope, $modal, SweetAlert, api_bpm_domain) { if ( angular.isDefined($scope.model.type.id) && !$scope.model.type.name ) { if (($scope.model.type.id = 0)) { $scope.model.type.name = "新资产入库"; } else if (($scope.model.type.id = 1)) { $scope.model.type.name = "新设备领用出库"; } else if (($scope.model.type.id = 2)) { $scope.model.type.name = "资产归还"; } else if (($scope.model.type.id = 4)) { $scope.model.type.name = "设备更换"; } } }, ], }); //多选框组件 formlyConfigProvider.setType({ name: "ui-checkboxmore", extends: "radio", templateUrl: "assets/views/customform/tpl/cmdb/ui-checkboxmore.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$modal", "SweetAlert", "api_bpm_domain", function ($scope, $modal, SweetAlert, api_bpm_domain) { $scope.options.initialValue = $scope.model[$scope.options.key]; }, ], }); //入库单详情 formlyConfigProvider.setType({ name: "ui-getininform", extends: "radio", templateUrl: "assets/views/customform/tpl/cmdb/ui-getininform.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$modal", "SweetAlert", "api_bpm_domain", function ($scope, $modal, SweetAlert, api_bpm_domain) { if ( angular.isDefined($scope.model.type.id) && !$scope.model.type.name ) { if (($scope.model.type.id = 0)) { $scope.model.type.name = "新资产入库"; } else if (($scope.model.type.id = 1)) { $scope.model.type.name = "新设备领用出库"; } else if (($scope.model.type.id = 2)) { $scope.model.type.name = "资产归还"; } else if (($scope.model.type.id = 4)) { $scope.model.type.name = "设备更换"; } } }, ], }); //申请人详情 formlyConfigProvider.setType({ name: "ui-requsterinfom", extends: "radio", templateUrl: "assets/views/customform/tpl/cmdb/requsterinfom.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, }); //设备耗材list组件 formlyConfigProvider.setType({ name: "ui-uplodchange", templateUrl: "assets/views/customform/tpl/cmdb/uplodchange.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, view: function (APIService, contentId) { return APIService.downloadAttachment(contentId); }, }, }; }, controller: [ "$scope", "$filter", "ngTableParams", "$rootScope", "Restangular", function ($scope, $filter, ngTableParams, $rootScope, Restangular) { // var data = { "haodata": [], "shedata": [] }; var haodata = []; var shedata = []; if ($scope.model.consumables) { if (angular.isArray($scope.model.consumables)) { haodata = $scope.model.consumables; } else { haodata = JSON.parse($scope.model.consumables); } $scope.model.consumables = haodata; angular.forEach(haodata, function (item, index) { haodata[index].item = index + 1; }); } if ($scope.model.assets) { if (angular.isArray($scope.model.assets)) { shedata = $scope.model.assets; } else { shedata = JSON.parse($scope.model.assets); } $scope.model.assets = shedata; angular.forEach(shedata, function (item, index) { shedata[index].item = index + 1; }); } $scope.tableParamshao = new ngTableParams( { page: 1, count: 5, }, { total: haodata.length, getData: function ($defer, params) { var orderedData = params.sorting() ? $filter("orderBy")(haodata, params.orderBy()) : haodata; $defer.resolve( orderedData.slice( (params.page() - 1) * params.count(), params.page() * params.count() ) ); }, } ); $scope.tableParamsshe = new ngTableParams( { page: 1, count: 5, }, { total: shedata.length, getData: function ($defer, params) { var orderedData = params.sorting() ? $filter("orderBy")(shedata, params.orderBy()) : shedata; $defer.resolve( orderedData.slice( (params.page() - 1) * params.count(), params.page() * params.count() ) ); }, } ); $scope.editId = -1; $scope.setEditId = function (pid) { $scope.editId = pid; }; if (angular.isUndefined($scope.form.dropState)) { $scope.form.dropState = false; } var to = $scope.options.templateOptions; var bindId = $scope.model.processInstanceId; //获取附件列表 $scope.listAttachmen = function () { to.ApiService.listAttachment( to.listAttachmentUrl, to.bindType, bindId ).then(function (result) { var myData = Restangular.stripRestangular(result); // $scope.listAttachmens = myData; $scope.attachments = myData.data; }); }; $scope.listAttachmen(); // if (to.bindType && $scope.model[to.bindType].processInstanceId) { // $scope.listAttachmen(); // } else if (to.bindType && $scope.model[to.bindType].id) { // $scope.listAttachmen(); // } //附件下载 $scope.download = function (token, filename) { var downUrl = to.ApiService.downloadAttachment( to.downUrl, token ).getRequestedUrl(); // window.open(downUrl); var a = document.createElement("a"); a.href = downUrl; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }; //附件预览 $scope.view = function (id, previewUrl) { if (previewUrl) { window.open(previewUrl); } }; }, ], }); //多选框组件 formlyConfigProvider.setType({ name: "ui-nodataimage", templateUrl: "assets/views/customform/tpl/cmdb/ui-nodataimage.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, }); //ui-grid list formlyConfigProvider.setType({ name: "ui-gridtwolist", // extends: 'input', templateUrl: "assets/views/customform/tpl/cmdb/gridtwolist.html", defaultOptions: function (options, $scope) { return { templateOptions: {}, }; }, controller: [ "$scope", "$modal", "i18nService", "SweetAlert", function ($scope, $modal, i18nService, SweetAlert) { //gridone $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myDatagrid"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = true; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = false; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = false; $scope.myDatagrid = []; $scope.myDatagridall = []; $scope.selected = { item: {}, }; $scope.memoryfilterDatagrid = { idx: 0, sum: 10, }; if (angular.isFunction($scope.options.templateOptions.fetchItems)) { filterData = { idx: 0, sum: 10, }; $scope.gridOptions.columnDefs = $scope.options.templateOptions.columnDefs; } $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; // $scope.gridOptions.columnDefs = items.columnDefs(); $scope.interceptMydata = function (mydate, idx, sum) { return mydate.slice(idx * sum, (idx + 1) * sum); }; $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { $scope.memoryfilterDatagrid.idx = newPage - 1; $scope.memoryfilterDatagrid.sum = pageSize; $scope.myDatagrid = $scope.interceptMydata( $scope.myDatagridall, $scope.memoryfilterDatagrid.idx, 10 ); $scope.loadData({ idx: newPage - 1, sum: pageSize, }); } ); gridApi.core.on.filterChanged($scope, function () { }); gridApi.selection.on.rowSelectionChanged($scope, function (data) { $scope.selected.item = data.entity; //console.log(data); }); }; $scope.loadData = function (mydate, idx, sum) { angular.forEach($scope.myDatagrid, function (item, index) { $scope.myDatagrid[index].item = index; }); $scope.gridOptions.totalItems = mydate.length; $scope.myDatagrid = mydate.slice(idx * sum, (idx + 1) * sum); }; if ($scope.model.assets) { $scope.myDatagridall = $scope.model.assets; $scope.loadData($scope.model.assets, 0, 10); } $scope.saveData = function (itemin) { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/lingyonglist.html", controller: function ($scope, $modalInstance, SweetAlert) { // $scope.consumptive = {}; $scope.title = "填写领用设备信息"; // if (items.name) { // $scope.consumptive.name = items.name.name; // } $scope.placechange = angular.copy(itemin); $scope.ok = function (item) { if ( item.props && item.props.hwnw_area && item.props.hwnw_place && item.props.hwnw_room && item.props.hwnwswt_jiguihao && item.props.hwnwswt_Ushu && item.props.snnum ) { $modalInstance.close(item); } else { SweetAlert.swal({ title: "数据填写不完整!", text: "请检查数据然后提交!", type: "error", }); } }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, resolve: { SweetAlert: function () { return SweetAlert; }, }, }); modalInstance.result.then(function (selectedItem) { angular.forEach($scope.myDatagrid, function (item, index) { // $scope.myDatagrid[index].props.hw_state = "在线"; if (item.id == selectedItem.id) { // $scope.myDatagrid[index] = selectedItem; angular.extend($scope.myDatagrid[index], selectedItem); } }); // $scope.myData3.push(selectedItem); for (var i = 0; i < $scope.myDatagrid.length; i++) { $scope.myDatagrid[i]["item"] = i + 1 + $scope.memoryfilterDatagrid.idx * 10; } $scope.$parent.$parent.$parent.model.applicationForm.assets = $scope.myDatagridall; }); }; //gridtwo $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions2 = {}; $scope.gridOptions2.data = "myDatagridold"; $scope.gridOptions2.enableColumnResizing = true; $scope.gridOptions2.enableFiltering = true; $scope.gridOptions2.enableGridMenu = false; $scope.gridOptions2.enableRowSelection = true; $scope.gridOptions2.showGridFooter = true; $scope.gridOptions2.showColumnFooter = false; $scope.gridOptions2.fastWatch = true; $scope.gridOptions2.useExternalFiltering = false; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions2.paginationPageSizes = [10]; $scope.gridOptions2.paginationPageSize = 10; $scope.gridOptions2.multiSelect = false; $scope.myDatagridold = []; $scope.myDatagridoldall = []; $scope.selected = { item: {}, }; $scope.memoryfilterDatagridold = { idx: 0, sum: 10, }; if (angular.isFunction($scope.options.templateOptions.fetchItems)) { filterData = { idx: 0, sum: 10, }; $scope.gridOptions2.columnDefs = $scope.options.templateOptions.columnDefstwo; } $scope.gridOptions2.rowIdentity = function (row) { return row.id; }; $scope.gridOptions2.getRowIdentity = function (row) { return row.id; }; // $scope.gridOptions.columnDefs = items.columnDefs(); $scope.interceptMydata = function (mydate, idx, sum) { return mydate.slice(idx * sum, (idx + 1) * sum); }; if ($scope.model.oldAssets) { $scope.myDatagridallold = JSON.parse($scope.model.oldAssets); $scope.myDatagridold = $scope.interceptMydata( $scope.myDatagridallold, $scope.memoryfilterDatagridold.idx, 10 ); } $scope.gridOptions2.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { $scope.memoryfilterDatagridold.idx = newPage - 1; $scope.memoryfilterDatagridold.sum = pageSize; $scope.myDatagridold = $scope.interceptMydata( $scope.myDatagridallold, $scope.memoryfilterDatagridold.idx, 10 ); // $scope.loadData({ "idx": newPage - 1, "sum": pageSize }); } ); gridApi.core.on.filterChanged($scope, function () { }); gridApi.selection.on.rowSelectionChanged($scope, function (data) { $scope.selected.item = data.entity; //console.log(data); }); }; // $scope.loadData = function(mydate, idx, sum) { // angular.forEach($scope.myDatagridold, function(item, index) { // $scope.myDatagridold[index].item = index; // }) // $scope.myDatagridold = mydate.slice(idx * sum, (idx + 1) * sum) // } // if ($scope.model.assets) { // $scope.myDatagridallold = $scope.model.assets; // $scope.loadData($scope.model.assets, 0, 10) // } // $scope.addoldassets = function(itemin) { // event.preventDefault(); // var modalInstance = $modal.open({ // templateUrl: 'assets/views/customform/tpl/cmdb/lingyonglist.html', // controller: function($scope, $modalInstance, SweetAlert) { // // $scope.consumptive = {}; // $scope.title = "填写领用设备信息"; // // if (items.name) { // // $scope.consumptive.name = items.name.name; // // } // $scope.placechange = itemin; // $scope.ok = function(item) { // if (item.hwnw_area && item.hwnw_place && item.hwnw_room && item.hwnwswt_jiguihao && item.hwnwswt_Ushu && item.snnum) { // $modalInstance.close(item); // } else { // SweetAlert.swal({ // title: "数据填写不完整!", // text: "请检查数据然后提交!", // type: "error" // }); // } // }; // $scope.cancel = function() { // $modalInstance.dismiss('cancel'); // }; // }, // resolve: { // SweetAlert: function() { // return SweetAlert; // } // } // }); $scope.interceptMydata = function (mydate, idx, sum) { return mydate.slice(idx * sum, (idx + 1) * sum); }; $scope.addshebei = function () { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/add_shebei.html", controller: function ( $scope, i18nService, $modalInstance, items, title, Restangular, APIService, onDataCallback, parentScope, api_configure_data, api_configure_form, api_cmdb ) { $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myDatatwo"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = false; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = true; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; $scope.gridOptions.columnDefs = [ { name: "item", displayName: "序号", width: 80, enableFiltering: false, }, { name: "uuid", displayName: "内部编号", width: 150, }, { name: "props.hw_mingcheng", displayName: "资产名称", width: 100, }, { name: "props.hw_cifilterClassic", displayName: "资产类型", width: 120, enableFiltering: false, }, // { name: 'type', displayName: '资产型号', width: 100, enableFiltering: false }, { name: "props.hw_state", displayName: "资产状态", width: 150, enableFiltering: false, }, { name: "props.hwnw_area", displayName: "资产地点", width: 130, enableFiltering: false, }, { name: "createtime", displayName: "申请时间", enableFiltering: false, }, ]; // $scope.selectButtonClick var defaultFilterData = { // "assignee":2, // "applicationForm": { "hw_state": "在线" }, hw_state: "在线", idx: 0, sum: 10, }; $scope.memoryfilterData = { // "assignee":2, // "applicationForm": { "hw_state": "在线" }, hw_state: "在线", idx: 0, sum: 10, }; $scope.refreshData = function (style, filterData) { if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } $scope.myDatatwo = []; // $scope.gridOptions['sum']=filterData.sum; api_cmdb.query(filterData).then( function (data) { // $scope.callsPending--; var myDatatwo = Restangular.stripRestangular(data); $scope.gridOptions["totalItems"] = data.total; for (var i = 0; i < myDatatwo.data.node.length; i++) { myDatatwo.data.node[i].createtime = moment( myDatatwo.data.node[i].createtime ).format("YYYY-MM-DD"); } $scope.myDatatwo = myDatatwo.data.node; for (var i = 0; i < $scope.myDatatwo.length; i++) { $scope.myDatatwo[i]["item"] = i + 1 + filterData.idx * filterData.sum; } }, function () { } ); }; $scope.refreshData("expand-right", defaultFilterData); $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { var filtersData = $scope.memoryfilterData; filtersData.idx = newPage - 1; filtersData.sum = pageSize; // $scope.loadData(filtersData); $scope.refreshData("expand-right", filtersData); //console.log(pageSize); // $scope.loadData({"idx":newPage-1,"sum":pageSize}); } ); // gridApi.selection.on.rowSelectionChanged($scope, function(data) { // $scope.selected.items.push(data.entity); //console.log(data); gridApi.selection.on.rowSelectionChanged( $scope, function (scope, ect) { if (scope.isSelected) { scope.grid.appScope.selected.items.push(scope.entity); } else { for ( var i = 0; i <= scope.grid.appScope.selected.items.length; i++ ) { if ( scope.grid.appScope.selected.items[i].id == scope.entity.id ) { scope.grid.appScope.selected.items.splice(i, 1); break; } } } $scope.mySelectedRows = $scope.gridApi.selection.getSelectedRows(); } ); // }); gridApi.selection.on.rowSelectionChangedBatch( $scope, function (rows) { // $scope.selected.items = data.entity; //console.log(data); var selectitem = []; selectitem = angular.copy($scope.selected.items); for (var j = 0; j < rows.length; j++) { if (rows[j].isSelected == true) { selectitem.push(rows[j].entity); } else { delete selectitem[j]; // rows.splice(j, 1); } } $scope.selected.items = []; for (var i = 0; i < selectitem.length; i++) { if (selectitem[i]) { $scope.selected.items.push(selectitem[i]); } } } ); // gridApi.selection.on.selectAllRows = function(row) { //GridRow // // if (row.entity.age > 45) { // row.grid.api.selection.selectRow(row.entity); // 选中行 // // } // }; gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 10, user: { roledata: { rolecode: "roleset", }, selectType: "1", }, }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { // console.log("item.filters[0]=" + JSON.stringify(item.filters)); if ( angular.isDefined(item.filters[0].term) && item.filters[0].term != "" ) { if (angular.isUndefined(filtersData["user"])) { filtersData["user"] = {}; } filtersData["user"][item.field] = item.filters[0].term; } } }); $scope.memoryfilterData = filtersData; // $scope.loadData(filtersData); }); }; $scope.onDblClick = function (data, event) { // $scope.selected.items = data.entity; $scope.selectButtonClick(data, event); }; $scope.title = title; //树形图 var apple_selected, tree, treedata_avm, treedata_geography; $scope.my_tree_handler = function (branch) { //var _ref; var classify = ($scope.classify = branch.prefix.toLowerCase() + branch.sign); api_cmdb .query({ sign: classify, }) .then(function (data) { var myDatalingbei = Restangular.stripRestangular(data); // console.log(myData.data.node); if (myDatalingbei.data && myDatalingbei.status == 200) { var ret = myDatalingbei.data; redrawSvg(myDatalingbei); } }); }; $scope.my_data = []; function convertListToTree(data, treeMap) { var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = null; //Initially set our loop to null var parentNode = null; //loop over data for (var i = 0; i < data.length; i++) { var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent idToNodeMap[datum.id] = datum; //Does this node have a parent? if ( typeof datum.parent === "undefined" || datum.parent == null ) { //Doesn't look like it, so this node is the root of the tree root = datum; treeMap[datum.id] = root; } else { //This node has a parent, so let's look it up using the id parentNode = idToNodeMap[datum.parent.id]; //We don't need this property, so let's delete it. delete datum.parent; //Let's add the current node as a child of the parent node. parentNode.children.push(datum); } } return root; } function convertParentToChildList(data) { var treeMap = {}; var list = []; convertListToTree(data, treeMap); angular.forEach(treeMap, function (item) { list.push(item); }); return list; } $scope.my_tree = tree = {}; $scope.try_async_load = function () { $scope.my_data = []; $scope.select_treedata = []; $scope.doing_async = true; api_configure_data .fetchDataList("ciclassify", { idx: 0, sum: 100, }) .then(function (result) { //console.log(result['list']); $scope.select_treedata = $scope.my_data = convertParentToChildList(result["list"]); $scope.doing_async = false; // tree.expand_all(); //console.log(treelist); }); }; $scope.select_treedata = []; $scope.propTypeOptions = []; $scope.try_async_load(); $scope.onFilterremove = function (item) { console.log(item); }; $scope.searchdata = {}; $scope.clear = function () { $scope.searchdata = {}; $scope.cifilter_classic = {}; $scope.try_async_load(); var fildata = { idx: 0, sum: 10, hw_state: "在线", }; $scope.memoryfilterData = fildata; $scope.refreshData("expand-right", fildata); }; $scope.chiceIncident = function (item) { var fildata = $scope.memoryfilterData; // fildata.applicationForm = {}; // if (item.alltitle && item.alldata) { // fildata.applicationForm[item.alltitle.key] = item.alldata // } if (item && item.id) { var classify = item.prefix.toLowerCase() + item.sign; fildata.sign = classify; } $scope.gridOptions.paginationCurrentPage = 1; var transitiondata = angular.copy(item); $scope.refreshData("expand-right", fildata); }; $scope.applicadata = []; $scope.onFilterCallback = function (item) { var tempclassify = item.prefix.toLowerCase() + item.sign; api_configure_form .renderTabForm(tempclassify) .then(function (data) { var myData = Restangular.stripRestangular(data); $scope.applicadata = myData[0].form.fields; }); // } }; // $scope.loadData({ // idx: 0, // sum: 10, // "user": { "roledata": { "rolecode": "roleset" }, "selectType": "1" } // }); $scope.selected = { items: [], }; $scope.ok = function () { // if(onDataCallback&&angular.isFunction(onDataCallback)){ // onDataCallback($scope.selected.item, parentScope); // } $modalInstance.close($scope.selected.items); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "lg", resolve: { items: function () { return { fetchItems: function (filterData, APIService) { filterData = filterData || {}; if ( angular.isDefined(filterData.idx) && filterData.idx == null ) { filterData = { idx: 0, sum: 10, // "user": { "roledata": { "rolecode": "roleset" }, "selectType": "1" } }; } return $scope.options.templateOptions.fetchItems( filterData, APIService ); }, }; }, title: function () { return $scope.options.templateOptions.label; }, Restangular: function () { return $scope.options.templateOptions.Restangular; }, APIService: function () { return $scope.options.templateOptions.ApiService; }, onDataCallback: function () { return $scope.options.templateOptions.callback; }, parentScope: function () { return $scope.options.templateOptions.that; }, }, }); modalInstance.result.then(function (selectedItem) { $scope.myDatagridoldall = selectedItem; for (var i = 0; i < $scope.myDatagridoldall.length; i++) { $scope.myDatagridoldall[i]["item"] = i + 1 + $scope.memoryfilterDatagridold.idx * $scope.memoryfilterDatagridold.sum; } $scope.gridOptions2["totalItems"] = $scope.myDatagridoldall.length; $scope.myDatagridold = $scope.interceptMydata( $scope.myDatagridoldall, 0, 10 ); // $scope.model.oldAssets = $scope.myDatagridoldall; $scope.$parent.$parent.$parent.model.applicationForm.oldAssets = $scope.myDatagridoldall; $scope.options.initialValue = $scope.model.oldAssets; }); // } }; $scope.changestate = function (itemin) { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/changeoldstate.html", controller: function ($scope, scope, $modalInstance, api_bpm_data) { $scope.title = "旧设备状态修改"; $scope.stateshe = [ { id: 2, name: "在库", }, { id: 4, name: "报修", }, { id: 3, name: "报废", }, ]; $scope.hw_state = {}; $scope.ok = function (item) { $modalInstance.close(item.id); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, }, }); modalInstance.result.then(function (selectedItem) { if (selectedItem) { angular.forEach($scope.myDatagridallold, function (item, index) { if (item.id == itemin.id) { $scope.myDatagridallold[index].props.hw_state = selectedItem.name; } }); for (var i = 0; i < $scope.myDatagridallold.length; i++) { $scope.myDatagridallold[i]["item"] = i + 1 + $scope.memoryfilterDatagridold.idx * $scope.memoryfilterDatagridold.sum; } $scope.gridOptions2["totalItems"] = $scope.myDatagridallold.length; $scope.myDatagridold = $scope.interceptMydata( $scope.myDatagridallold, $scope.memoryfilterDatagridold.idx, $scope.memoryfilterDatagridold.sum ); // $scope.model.oldAssets = $scope.myDatagridallold; $scope.$parent.$parent.$parent.model.applicationForm.oldAssets = $scope.myDatagridallold; $scope.options.initialValue = $scope.model.oldAssets; } }); }; $scope.savedata = function (data) { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/changeoldshe.html", controller: function ($scope, scope, $modalInstance, api_bpm_data) { $scope.title = "设备编辑"; // $scope.connect = '删除的数据不可恢复,请确认继续操作!'; $scope.ok = function (item) { $modalInstance.close(item); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, }, }); modalInstance.result.then(function (selectedItem) { if (selectedItem) { angular.forEach($scope.myDatagridoldall, function (item, index) { if (item.id == data.id) { $scope.myDatagridoldall[index].olddecription = selectedItem.olddecription; } }); for (var i = 0; i < $scope.myDatagridoldall.length; i++) { $scope.myDatagridoldall[i]["item"] = i + 1 + $scope.memoryfilterDatagridold.idx * $scope.memoryfilterDatagridold.sum; } $scope.gridOptions2["totalItems"] = $scope.myDatagridoldall.length; $scope.myDatagridold = $scope.interceptMydata( $scope.myDatagridoldall, 0, 10 ); // $scope.model.oldAssets = $scope.myDatagridoldall; $scope.$parent.$parent.$parent.model.applicationForm.oldAssets = $scope.myDatagridoldall; $scope.options.initialValue = $scope.model.oldAssets; } }); }; $scope.removeold = function (data) { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/delete.html", controller: function ($scope, scope, $modalInstance, api_bpm_data) { $scope.title = "设备删除"; $scope.connect = "删除的数据不可恢复,请确认继续操作!"; $scope.ok = function () { $modalInstance.close(data); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, }, }); modalInstance.result.then(function (selectedItem) { if (selectedItem) { angular.forEach($scope.myDatagridoldall, function (item, index) { if (item.id == selectedItem.id) { $scope.myDatagridoldall.splice(index, 1); } }); for (var i = 0; i < $scope.myDatagridoldall.length; i++) { $scope.myDatagridoldall[i]["item"] = i + 1 + $scope.memoryfilterDatagridold.idx * $scope.memoryfilterDatagridold.sum; } $scope.gridOptions2["totalItems"] = $scope.myDatagridoldall.length; $scope.myDatagridold = $scope.interceptMydata( $scope.myDatagridoldall, 0, 10 ); // $scope.model.oldAssets = $scope.myDatagridoldall; $scope.$parent.$parent.$parent.model.applicationForm.oldAssets = $scope.myDatagridoldall; $scope.options.initialValue = $scope.model.oldAssets; } }); }; }, ], }); //ui-grid list formlyConfigProvider.setType({ name: "ui-gridlist", extends: "input", templateUrl: "assets/views/customform/tpl/cmdb/gridlist.html", defaultOptions: function (options, $scope) { return { templateOptions: {}, }; }, controller: [ "$scope", "$modal", "i18nService", "SweetAlert", function ($scope, $modal, i18nService, SweetAlert) { //gridone $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myDatagrid"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = true; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = false; // $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = false; $scope.myDatagrid = []; $scope.myDatagridall = []; $scope.selected = { item: {}, }; $scope.memoryfilterDatagrid = { idx: 0, sum: 10, }; if (angular.isFunction($scope.options.templateOptions.fetchItems)) { filterData = { idx: 0, sum: 10, }; $scope.gridOptions.columnDefs = $scope.options.templateOptions.columnDefs; } $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; // $scope.gridOptions.columnDefs = items.columnDefs(); $scope.interceptMydata = function (mydate, idx, sum) { return mydate.slice(idx * sum, (idx + 1) * sum); }; $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { $scope.memoryfilterDatagrid.idx = newPage - 1; $scope.memoryfilterDatagrid.sum = pageSize; $scope.myDatagrid = $scope.interceptMydata( $scope.myDatagridall, $scope.memoryfilterDatagrid.idx, 10 ); $scope.loadData({ idx: newPage - 1, sum: pageSize, }); } ); gridApi.core.on.filterChanged($scope, function () { }); gridApi.selection.on.rowSelectionChanged($scope, function (data) { $scope.selected.item = data.entity; //console.log(data); }); }; $scope.loadData = function (mydate, idx, sum) { angular.forEach($scope.myDatagrid, function (item, index) { $scope.myDatagrid[index].item = index; }); $scope.myDatagrid = mydate.slice(idx * sum, (idx + 1) * sum); }; if ($scope.model.assets) { $scope.myDatagridall = $scope.model.assets; $scope.loadData($scope.model.assets, 0, 10); } $scope.saveData = function (itemin) { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/lingyonglist.html", controller: function ($scope, $modalInstance, SweetAlert) { // $scope.consumptive = {}; $scope.title = "填写领用设备信息"; // if (items.name) { // $scope.consumptive.name = items.name.name; // } $scope.placechange = angular.copy(itemin); $scope.ok = function (item) { if ( item.props && item.props.hwnw_area && item.props.hwnw_place && item.props.hwnw_room && item.props.hwnwswt_jiguihao && item.props.hwnwswt_Ushu && item.props.snnum ) { $modalInstance.close(item); } else { SweetAlert.swal({ title: "数据填写不完整!", text: "请检查数据然后提交!", type: "error", }); } }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, resolve: { SweetAlert: function () { return SweetAlert; }, }, }); modalInstance.result.then(function (selectedItem) { angular.forEach($scope.myDatagrid, function (item, index) { if (item.id == selectedItem.id) { angular.extend($scope.myDatagrid[index], selectedItem); } }); // $scope.myData3.push(selectedItem); for (var i = 0; i < $scope.myDatagrid.length; i++) { $scope.myDatagrid[i]["item"] = i + 1 + $scope.memoryfilterDatagrid.idx * 10; } // $scope.model.assets = $scope.myDatagridall; $scope.$parent.$parent.$parent.model.applicationForm.assets = $scope.myDatagridall; }); }; }, ], }); //设备耗材list组件 formlyConfigProvider.setType({ name: "ui-shehaolist", // extends: 'radio', templateUrl: "assets/views/customform/tpl/cmdb/shehaolist.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$filter", "ngTableParams", function ($scope, $filter, ngTableParams) { // var data = { "haodata": [], "shedata": [] }; var haodata = []; var shedata = []; if ($scope.model.consumables) { if (angular.isArray($scope.model.consumables)) { haodata = $scope.model.consumables; } else { haodata = JSON.parse($scope.model.consumables); } $scope.model.consumables = haodata; angular.forEach(haodata, function (item, index) { haodata[index].item = index + 1; }); } if ($scope.model.assets) { if (angular.isArray($scope.model.assets)) { shedata = $scope.model.assets; } else { shedata = JSON.parse($scope.model.assets); } $scope.model.assets = shedata; angular.forEach(shedata, function (item, index) { shedata[index].item = index + 1; }); } $scope.tableParamshao = new ngTableParams( { page: 1, count: 5, }, { total: haodata.length, getData: function ($defer, params) { var orderedData = params.sorting() ? $filter("orderBy")(haodata, params.orderBy()) : haodata; $defer.resolve( orderedData.slice( (params.page() - 1) * params.count(), params.page() * params.count() ) ); }, } ); $scope.tableParamsshe = new ngTableParams( { page: 1, count: 5, }, { total: shedata.length, getData: function ($defer, params) { var orderedData = params.sorting() ? $filter("orderBy")(shedata, params.orderBy()) : shedata; $defer.resolve( orderedData.slice( (params.page() - 1) * params.count(), params.page() * params.count() ) ); }, } ); $scope.editId = -1; $scope.setEditId = function (pid) { $scope.editId = pid; }; if ( $scope.$parent.$parent.$parent.model.isAgree && $scope.$parent.$parent.$parent.model.isAgree == "2" ) { $scope.isAgree = "同意"; } else if ( $scope.$parent.$parent.$parent.model.isAgree && $scope.$parent.$parent.$parent.model.isAgree == "1" ) { $scope.isAgree = "同意"; } else if ( $scope.$parent.$parent.$parent.model.isAgree && $scope.$parent.$parent.$parent.model.isAgree == "3" ) { $scope.isAgree = "返回修改"; } }, ], }); //关联资产出库 formlyConfigProvider.setType({ name: "ui-meansmodelselect", extends: "input", templateUrl: "assets/views/customform/tpl/cmdb/inputguanlina.html", defaultOptions: function (options) { return { templateOptions: {}, }; }, controller: [ "$scope", "$modal", function ($scope, $modal) { $scope.openModal = function (size, options, modal) { var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/guanlian.html", controller: function ( $scope, $rootScope, $modalInstance, items, title, Restangular, APIService, api_user_data, i18nService, api_wechatfile ) { $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = false; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = false; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; // $scope.states = [{ // id: 0, // name: '待批准' // }, // { // id: 1, // name: '已驳回' // }, // { // id: 2, // name: '待出库' // }, // { // id: 3, // name: '信息更新' // }, // { // id: 4, // name: '信息确认' // }, // { // id: 5, // name: '已关闭' // } // ]; $scope.getStatesDictionary = function () { var data = { key: "applicationForm_status", type: "list", }; api_wechatfile.getDictionary(data).then(function (res) { $scope.states = res; }); }; $scope.getStatesDictionary(); $scope.type = [ { id: 1, name: "资产入库", }, { id: 2, name: "资产归还", }, { id: 3, name: "资产领用", }, { id: 4, name: "资产更换", }, ]; $scope.typedata = function (row) { if (row.type == 0) { return "资产入库"; } else if (row.type == 2) { return "资产归还"; } else if (row.type == 1) { return "资产领用"; } else if (row.type == 4) { return "资产更换"; } }; $scope.statedata = function (row) { if (row.status == 0) { return "待批准"; } else if (row.status == 1) { return "已驳回"; } else if (row.status == 2) { return "待出库"; } else if (row.status == 3) { return "信息更新"; } else if (row.status == 4) { return "信息确认"; } else if (row.status == 5) { return "已关闭"; } }; $scope.transferTime = function (time) { return moment(time).format("YYYY-MM-DD HH:mm"); }; $scope.application = [ { value: "serialNumbe", name: "申请单编号", }, // { value: "proposer", name: '申请人' }, { value: "purpose", name: "领用用途", }, // { value: "cmdbsign", name: '设备编号' } ]; $scope.parameters = null; $scope.open = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.opened = !$scope.opened; }; $scope.endOpen = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.startOpened = false; $scope.endOpened = !$scope.endOpened; }; $scope.startOpen = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.endOpened = false; $scope.startOpened = !$scope.startOpened; }; $scope.othcode = {}; $scope.searchkeys = {}; $scope.parameters = {}; $scope.memoryfilterData = { assignee: $rootScope.user.id, candidateGroups: $rootScope.user.group[0].id, searchType: "todo", idx: 0, sum: 10, }; $scope.clear = function () { $scope.searchkeys = {}; // $scope.othcode = {}; $scope.parameters = {}; var fildata = { assignee: $rootScope.user.id, candidateGroups: $rootScope.user.group[0].id, searchType: "todo", idx: 0, sum: 10, }; $scope.memoryfilterData = fildata; $scope.loadData(fildata); }; $scope.chiceIncident = function (parameters, item, stateid) { var fildata = { assignee: $rootScope.user.id, candidateGroups: 1, searchType: "todo", idx: 0, sum: 10, }; if (item) { fildata.applicationForm = {}; if (item.alltitle && item.alldata) { fildata.applicationForm[item.alltitle.value] = item.alldata; } if (item.linkProposer) { fildata.applicationForm.linkProposer = item.linkProposer; } if (item.proposer) { fildata.applicationForm.proposer = item.proposer; } if (item.status) { fildata.applicationForm["status"] = { id: item.status.id, }; } if (item.type) { fildata.applicationForm["type"] = { id: item.type.id, }; } } $scope.gridOptions.paginationCurrentPage = 1; if ( parameters && parameters.paramDateFrom && parameters.paramDateTo ) { angular.extend(fildata, { idx: 0, sum: $scope.gridOptions.paginationPageSize, }); angular.extend(fildata.applicationForm, { startDate: moment(parameters.paramDateFrom).format( "YYYY-MM-DD HH:mm:ss" ), endDate: moment(parameters.paramDateTo).format( "YYYY-MM-DD 23:59:59" ), }); } var transitiondata = angular.copy(item); // angular.extend(fildata.applicationForm, transitiondata) $scope.loadData(fildata); }; $scope.key = {}; api_user_data .fetchDataList("user", { idx: 0, sum: 1000, flag: -1, user: { engineer: 1, } }) .then(function (data) { $scope.handlingPersonnelUser = data.list; }); $scope.gridOptions.columnDefs = items.columnDefs(); $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { // console.log(newPage); // console.log(pageSize); $scope.loadData({ idx: newPage - 1, sum: pageSize, }); } ); gridApi.core.on.filterChanged($scope, function () { }); gridApi.selection.on.rowSelectionChanged( $scope, function (data) { $scope.selected.item = data.entity; //console.log(data); } ); }; $scope.loadData = function (filterData) { items.fetchItems(filterData, APIService).then(function (data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = myData.list; for (var i = 0; i < $scope.myData.length; i++) { $scope.myData[i]["item"] = i + 1 + filterData.idx * filterData.sum; } }); }; $scope.title = title; $scope.loadData({ idx: 0, sum: 10, assignee: $rootScope.user.id, candidateGroups: $rootScope.user.group[0].id, searchType: "todo", }); $scope.selected = { item: {}, }; $scope.ok = function () { //console.log($scope.selected.item); $modalInstance.close($scope.selected.item); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "lg", resolve: { items: function () { return { fetchItems: function (filterData, APIService) { filterData = filterData || {}; // if(!filterData.idx){ if ( angular.isDefined(filterData.idx) && filterData.idx == null ) { filterData = { idx: 0, sum: 10, }; } return options.templateOptions.fetchItems( filterData, APIService, options ); }, columnDefs: function () { return options.templateOptions.columnDefs; }, }; }, title: function () { return options.templateOptions.modalTitle; }, Restangular: function () { return options.templateOptions.Restangular; }, APIService: function () { return options.templateOptions.ApiService; }, }, }); modalInstance.result.then( function (selectedItem) { var selectitem = { title: selectedItem.title, description: selectedItem.description, }; if (options.key == "chuku") { if (selectedItem.assets) { $scope.$parent.$parent.$parent.model.applicationForm.assets = selectedItem.assets; } if (selectedItem.consumables) { $scope.$parent.$parent.$parent.model.applicationForm.consumables = selectedItem.consumables; } angular.extend( $scope.$parent.$parent.$parent.model, selectitem ); options.value(selectedItem); // options.model.consumables = JSON.parse(selectedItem.consumables); } else { angular.extend(options.model, selectitem); options.value(selectedItem); } }, function () { //console.log('Modal dismissed at: ' + new Date()); } ); }; }, ], }); //文本框 formlyConfigProvider.setType({ name: "ui-textcmdb", extends: "", templateUrl: "assets/views/customform/tpl/cmdb/ui-textcmdb.html", defaultOptions: function (options) { return { templateOptions: { transform: function (model, value) { return value; }, }, validation: { messages: { maxlength: function (viewValue, modelValue, scope) { if (viewValue != null) { if (viewValue.length > scope.to.maxlength) { return ( scope.to.label + " 字数(" + viewValue.length + ")超限(" + scope.to.maxlength + ")" ); } else { return ""; } } }, }, }, }; }, controller: [ "$scope", function ($scope) { var value = $scope.model[$scope.options.key]; if (angular.isFunction($scope.options.templateOptions.transform)) { $scope.model[$scope.options.key] = $scope.options.templateOptions.transform( $scope.originalModel, value ); } if (angular.isFunction($scope.options.templateOptions.felditem)) { $scope.options.templateOptions.felditem($scope); } }, ], }); //设备组件 formlyConfigProvider.setType({ name: "ui-applist", extends: "radio", templateUrl: "assets/views/customform/tpl/cmdb/applist.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$filter", "ngTableParams", function ($scope, $filter, ngTableParams) { var data = []; if ($scope.model.consumables && $scope.options.key == "consumables") { // data = JSON.parse($scope.model.consumables); if (angular.isArray($scope.model.consumables)) { data = $scope.model.consumables; } else { data = JSON.parse($scope.model.consumables); } $scope.model.consumables = data; angular.forEach(data, function (item, index) { data[index].item = index + 1; }); } if ($scope.model.assets && $scope.options.key == "assets") { if (angular.isArray($scope.model.assets)) { data = $scope.model.assets; } else { data = JSON.parse($scope.model.assets); } // data = JSON.parse($scope.model.assets); $scope.model.assets = data; angular.forEach(data, function (item, index) { data[index].item = index + 1; }); } $scope.tableParams = new ngTableParams( { page: 1, count: 5, }, { total: data.length, getData: function ($defer, params) { var orderedData = params.sorting() ? $filter("orderBy")(data, params.orderBy()) : data; $defer.resolve( orderedData.slice( (params.page() - 1) * params.count(), params.page() * params.count() ) ); }, } ); $scope.editId = -1; $scope.setEditId = function (pid) { $scope.editId = pid; }; }, ], }); //list组件 formlyConfigProvider.setType({ name: "ui-gudinglist", extends: "radio", templateUrl: "assets/views/customform/tpl/cmdb/gudinglist.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$filter", "ngTableParams", function ($scope, $filter, ngTableParams) { var data = []; if ($scope.model.consumables && $scope.options.key == "consumables") { // data = JSON.parse($scope.model.consumables); if (angular.isArray($scope.model.consumables)) { data = $scope.model.consumables; } else { data = JSON.parse($scope.model.consumables); } $scope.model.consumables = data; angular.forEach(data, function (item, index) { data[index].item = index + 1; }); } if ($scope.model.assets && $scope.options.key == "assets") { if (angular.isArray($scope.model.assets)) { data = $scope.model.assets; } else { data = JSON.parse($scope.model.assets); } // data = JSON.parse($scope.model.assets); $scope.model.assets = data; angular.forEach(data, function (item, index) { data[index].item = index + 1; }); } $scope.tableParams = new ngTableParams( { page: 1, count: 5, }, { total: data.length, getData: function ($defer, params) { var orderedData = params.sorting() ? $filter("orderBy")(data, params.orderBy()) : data; $defer.resolve( orderedData.slice( (params.page() - 1) * params.count(), params.page() * params.count() ) ); }, } ); $scope.editId = -1; $scope.setEditId = function (pid) { $scope.editId = pid; }; }, ], }); //other list tab组件 formlyConfigProvider.setType({ name: "ui-otherlisttab", extends: "", templateUrl: "assets/views/customform/tpl/cmdb/otherlisttab.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$filter", "ngTableParams", function ($scope, $filter, ngTableParams) { }, ], }); //审核查看组件 formlyConfigProvider.setType({ name: "ui-aprovelist", extends: "", templateUrl: "assets/views/customform/tpl/cmdb/aprovelist.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$filter", "ngTableParams", function ($scope, $filter, ngTableParams) { if ($scope.model.isAgree && $scope.model.isAgree == "2") { $scope.isAgree = "同意"; } else if ($scope.model.isAgree && $scope.model.isAgree == "1") { $scope.isAgree = "同意"; } else if ($scope.model.isAgree && $scope.model.isAgree == "3") { $scope.isAgree = "返回修改"; } }, ], }); //other list组件 formlyConfigProvider.setType({ name: "ui-otherlist", extends: "", templateUrl: "assets/views/customform/tpl/cmdb/otherlist.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, controller: [ "$rootScope", "$scope", "$parse", "$injector", "$http", "$q", "$state", "$stateParams", "$modal", "$timeout", "$interval", "i18nService", "SweetAlert", "FileUploader", "Restangular", "UserRestangular", "BpmRestangular", "api_configure_form", "api_configure_data", "api_bpm_domain", "api_bpm_data", "api_user_data", "api_cmdb", "api_sysinfo", function ( $rootScope, $scope, $parse, $injector, $http, $q, $state, $stateParams, $modal, $timeout, $interval, i18nService, SweetAlert, FileUploader, Restangular, UserRestangular, BpmRestangular, api_configure_form, api_configure_data, api_bpm_domain, api_bpm_data, api_user_data, api_cmdb, api_sysinfo ) { console.log("哈哈"); console.log($scope); $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); var vm = this; vm.options = {}; vm.exampleTitle = ["expressionProperties", "model property"]; vm.fields = []; vm.models = {}; // vm.models["loginUser"] = $rootScope.user; var that = $injector; var parse = $parse; var formKey = ""; var pdKey = ""; if ( angular.isDefined($state.current.pdKey) && $state.current.pdKey != "" ) { pdKey = $state.current.pdKey; //console.log("pdKey::"+$state.current.pdKey); } if ( angular.isDefined($stateParams.formKey) && $stateParams.formKey != "" ) { formKey = $stateParams.formKey; //console.log("formKey::"+$stateParams.formKey); } //用户测试数据,后续从header的auth中获取 var userId = 2; userId = $rootScope.user.id; //==============处理表单设计数据 开始==================== //处理组件加载后台数据选项的方法 function refreshSelectOptions(searchVal, field) { if (field.templateOptions.optionsUrl) { var process = BpmRestangular.all(""); if (field.templateOptions.ApiService) { process = UserRestangular.all(""); } process .customPOST( { idx: 0, sum: 1000, }, field.templateOptions.optionsUrl ) .then(function (result) { if (!field.templateOptions.options) { field.templateOptions.options = []; } if (field.templateOptions.optionsDataKey) { field.templateOptions.options = result[field.templateOptions.optionsDataKey]; } else { field.templateOptions.options = result; } }); } } function decodeVMTabForm(model, tabs) { var result = { model: {}, tabs: [], }; var mdata = angular.fromJson(model); angular.extend(result.model, mdata); angular.forEach(tabs, function (tab) { tab.form.model = vm.models; angular.forEach(tab.form.fields, function (field) { if (field.key == "") { delete field.key; } field.type = "ui-otherlisttab"; if (angular.isDefined(field.extjson) && field.extjson != "") { var extObj = angular.fromJson(field.extjson); angular.extend(field.templateOptions, extObj.templateOptions); delete extObj.templateOptions; for (var prop in extObj) { if (new RegExp("Expression").test(prop)) { //var obj = $scope.$eval(extObj[prop]); //extObj[prop] = $scope.$eval(extObj[prop]); if (extObj[prop] != null) { if (new RegExp("function").test(extObj[prop])) { var propValue = eval(extObj[prop]); extObj[prop] = propValue; } else { //console.log(extObj[prop]); var obj = $scope.$eval(extObj[prop]); extObj[prop] = obj; //console.log(obj); } } } else if (new RegExp("expressionProperties").test(prop)) { for (var p in extObj[prop]) { if (new RegExp("function").test(extObj[prop][p])) { var propValue = eval(extObj[prop][p]); extObj[prop][p] = propValue; } else { //if(p.indexOf("'")>=0){ // var obj = $scope.$eval(extObj[prop][p]); // extObj[prop][$scope.$eval(p)]=obj; //} } } } else if ("watcher" == prop) { if (angular.isArray(extObj[prop])) { angular.forEach(extObj[prop], function (item, index) { for (var p in item) { if (new RegExp("function").test(item[p])) { var propValue = eval(item[p]); extObj[prop][index][p] = propValue; } } }); } else if (angular.isObject(extObj[prop])) { for (var p in extObj[prop]) { if (new RegExp("function").test(extObj[prop][p])) { var propValue = eval(extObj[prop][p]); extObj[prop][p] = propValue; } } } } } angular.extend(field, extObj); delete field.extjson; } if (field.extjson == "") { delete field.extjson; } if (angular.isDefined(field.templateOptions)) { var templateOs = field.templateOptions; for (var property in templateOs) { //console.log(property); if ( angular.isString(templateOs[property]) && !new RegExp("[\u4e00-\u9fa5]").test(templateOs[property]) ) { if (new RegExp("function").test(templateOs[property])) { var propValue = eval(templateOs[property]); field.templateOptions[property] = propValue; } else { if (that.has(templateOs[property])) { field.templateOptions[property] = that.get( templateOs[property] ); } else { field.templateOptions[property] = templateOs[property]; } } } else if (templateOs[property] == null) { //delete field.templateOptions[property]; } else { } } } if ( angular.isDefined(field.templateOptions) && angular.isDefined(field.templateOptions.extjson) ) { var extObj = angular.fromJson(field.templateOptions.extjson); //JSON.parse(field.extjson); angular.extend(field.templateOptions, extObj); delete field.templateOptions.extjson; } //... if (field.templateOptions) { //处理远程获取数据控件方法调用 if (field.templateOptions.optionsUrl) { field.templateOptions.refresh = refreshSelectOptions; } //处理嵌套属性数据绑定/ if (field.templateOptions.pkey) { var pmodel, i = 0; angular.forEach( field.templateOptions.pkey.split("."), function (p) { if (i == 0) { if (result.model[p] == null) { result.model[p] = {}; } pmodel = result.model[p]; i++; } else { if (pmodel[p] == null) { pmodel[p] = {}; } pmodel = pmodel[p]; } } ); if (pmodel != null) { field.model = pmodel; if (pmodel[field.key] == null) { pmodel[field.key] = null; } } } else { if (result.model[field.key] == null) { result.model[field.key] = null; } } //处理弹出框组件初始化 if (field.type == "ui-input-selectmodal") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-userselect") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-multiuserselect") { field.templateOptions.modal = $modal; } else if (field.type == "ui-modelselect") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-cmdbuplode") { $scope.fileUploader = field.templateOptions.fileUploader = new FileUploader({ url: "/uploader", queueLimit: 1, //文件个数 autoUpload: true, }); // $scope.fileUploadermeans = field.templateOptions.fileUploadermeans; } else if (field.type == "ui-dropfile") { field.templateOptions.fileUploader = new FileUploader({ url: "/uploader", }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; //field.ApiService=api_bpm_domain; } else if (field.type == "ui-dropfiletable") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-repeatSection") { var repeatForm = { model: {}, fields: field.templateOptions.fields, }; repeatForm.model[field.key] = []; decodeVMTabForm(repeatForm); } } // console.log(field); //field //result.fields.push(field); }); }); vm.originalTabs = angular.copy(vm.form); } //======================处理表单设计数据 结束======================== $scope.ldloading = {}; function filter(obj) { angular.forEach(obj, function (key, value) { if (value === "" || value === null) { delete obj[key]; } else if ( Object.prototype.toString.call(value) === "[object Object]" ) { filter(value); } else if (angular.isArray(value)) { angular.forEach(value, function (item) { filter(item); }); } }); } function invokeOnAllFormOptions(fn) { angular.forEach(vm.tabs, function (tab) { if (tab.form.options && tab.form.options[fn]) { tab.form.options[fn](); } }); } function encodeCIData(data, ciId) { /* create/update state:未审核 create createtime:系统时间 create/update lastupdatetime : 系统时间 label:ci分类 */ if (ciId) { var baseprop = [ "uuid", "name", "type", "label", "status", "createtime", "lastupdatetime", "props", ]; //state|audittime//createtime//removeflag|removetime//configperson//lastupdateperson//manager//useradmin var extraprop = "props"; data[extraprop] = {}; for (var key in data) { console.log(data[key]); if (_.indexOf(baseprop, key) >= 0) { continue; } else { data[extraprop][key] = data[key]; delete data[key]; } } if ($rootScope.user) { data[extraprop]["lastupdateperson"] = $rootScope.user.name; data[extraprop]["configperson"] = $rootScope.user.name; var isCMAdminFlag = false; angular.forEach($rootScope.user.role, function (roleItem) { if (roleItem.rolecode == "cmdb charge") { isCMAdminFlag = true; } }); if (!isCMAdminFlag) { data[extraprop]["state"] = "1"; } } if (data.props.id) { } else { data.label = ciId; } return data; } return undefined; } function decodeCIModel(data) { var extraprop = "props"; if (data[extraprop]) { for (var key in data[extraprop]) { data[key] = data[extraprop][key]; } delete data[extraprop]; } data["iscmadmin"] = false; angular.forEach($rootScope.user.role, function (roleItem) { if (roleItem.rolecode == "cmdb charge") { data["iscmadmin"] = true; } }); return data; } function formValid() { angular.forEach(vm.tabs, function (item) { //item. }); } $scope.vm = vm; $scope.refreshcmdbform = function (item) { var tempclassify = item.prefix.toLowerCase() + item.sign; api_configure_form.renderTabForm(tempclassify).then(function (data) { var myData = Restangular.stripRestangular(data); $scope.propTypeOptions = myData; $scope.templateProps = myData; $scope.vm.tabs = myData; if ($scope.model.assets) { vm.models = JSON.parse($scope.model.assets); } if (angular.isDefined(vm.models.vtvmvtm_kaiji)) { if (vm.models.vtvmvtm_kaiji) { vm.models.vtvmvtm_kaiji = "是"; } else { vm.models.vtvmvtm_kaiji = "否"; } } decodeVMTabForm(vm.models, vm.tabs); }); // } }; var cifilterClassic = {}; // if ($scope.$parent.$parent.$parent.model.cifilterClassic && cifilterClassic.id != $scope.$parent.$parent.$parent.model.cifilterClassic.id) { // cifilterClassic = $scope.$parent.$parent.$parent.model.cifilterClassic; $scope.refreshcmdbform( $scope.$parent.$parent.$parent.model.cifilterClassic ); // } else {} }, ], }); //固定资产下载 formlyConfigProvider.setType({ name: "ui-dropupload", templateUrl: "assets/views/customform/tpl/cmdb/upload.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: { view: function (APIService, contentId) { return APIService.downloadAttachment(contentId); }, }, }; }, controller: [ "$scope", "$rootScope", "Restangular", function ($scope, $rootScope, Restangular) { if (angular.isUndefined($scope.form.dropState)) { $scope.form.dropState = false; } var to = $scope.options.templateOptions; var bindId = $scope.model[to.bindType].processInstanceId; //获取附件列表 $scope.listAttachmen = function () { to.ApiService.listAttachment( to.listAttachmentUrl, to.bindType, bindId ).then(function (result) { var myData = Restangular.stripRestangular(result); // $scope.listAttachmens = myData; $scope.attachments = myData.data; }); }; $scope.listAttachmen(); // if (to.bindType && $scope.model[to.bindType].processInstanceId) { // $scope.listAttachmen(); // } else if (to.bindType && $scope.model[to.bindType].id) { // $scope.listAttachmen(); // } //附件下载 $scope.download = function (token, filename) { var downUrl = to.ApiService.downloadAttachment( to.downUrl, token ).getRequestedUrl(); var a = document.createElement("a"); a.href = downUrl; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }; //附件预览 $scope.view = function (id, previewUrl) { if (previewUrl) { window.open(previewUrl); } }; }, ], }); formlyConfigProvider.setType({ name: "ui-form", templateUrl: "assets/views/customform/tpl/ui-cmdbform.html", defaultOptions: function (options) { return { templateOptions: { // link: function() {} }, }; }, controller: [ "$rootScope", "$scope", "$parse", "$injector", "$http", "$q", "$state", "$stateParams", "$modal", "$timeout", "$interval", "i18nService", "SweetAlert", "FileUploader", "Restangular", "UserRestangular", "BpmRestangular", "api_configure_form", "api_configure_data", "api_bpm_domain", "api_bpm_data", "api_user_data", "api_cmdb", "api_sysinfo", function ( $rootScope, $scope, $parse, $injector, $http, $q, $state, $stateParams, $modal, $timeout, $interval, i18nService, SweetAlert, FileUploader, Restangular, UserRestangular, BpmRestangular, api_configure_form, api_configure_data, api_bpm_domain, api_bpm_data, api_user_data, api_cmdb, api_sysinfo ) { $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); var vm = this; vm.options = {}; vm.exampleTitle = ["expressionProperties", "model property"]; vm.fields = []; vm.models = {}; // vm.models["loginUser"] = $rootScope.user; var that = $injector; var parse = $parse; var formKey = ""; var pdKey = ""; if ( angular.isDefined($state.current.pdKey) && $state.current.pdKey != "" ) { pdKey = $state.current.pdKey; //console.log("pdKey::"+$state.current.pdKey); } if ( angular.isDefined($stateParams.formKey) && $stateParams.formKey != "" ) { formKey = $stateParams.formKey; //console.log("formKey::"+$stateParams.formKey); } //用户测试数据,后续从header的auth中获取 var userId = 2; userId = $rootScope.user.id; //==============处理表单设计数据 开始==================== //处理组件加载后台数据选项的方法 function refreshSelectOptions(searchVal, field) { if (field.templateOptions.optionsUrl) { var process = BpmRestangular.all(""); if (field.templateOptions.ApiService) { process = UserRestangular.all(""); } process .customPOST( { idx: 0, sum: 1000, }, field.templateOptions.optionsUrl ) .then(function (result) { if (!field.templateOptions.options) { field.templateOptions.options = []; } if (field.templateOptions.optionsDataKey) { field.templateOptions.options = result[field.templateOptions.optionsDataKey]; } else { field.templateOptions.options = result; } }); } } function decodeVMTabForm(model, tabs) { var result = { model: {}, tabs: [], }; var mdata = angular.fromJson(model); angular.extend(result.model, mdata); angular.forEach(tabs, function (tab) { tab.form.model = vm.models; angular.forEach(tab.form.fields, function (field) { if (field.key == "") { delete field.key; } if (angular.isDefined(field.extjson) && field.extjson != "") { var extObj = angular.fromJson(field.extjson); angular.extend(field.templateOptions, extObj.templateOptions); delete extObj.templateOptions; for (var prop in extObj) { if (new RegExp("Expression").test(prop)) { //var obj = $scope.$eval(extObj[prop]); //extObj[prop] = $scope.$eval(extObj[prop]); if (extObj[prop] != null) { if (new RegExp("function").test(extObj[prop])) { var propValue = eval(extObj[prop]); extObj[prop] = propValue; } else { //console.log(extObj[prop]); var obj = $scope.$eval(extObj[prop]); extObj[prop] = obj; //console.log(obj); } } } else if (new RegExp("expressionProperties").test(prop)) { for (var p in extObj[prop]) { if (new RegExp("function").test(extObj[prop][p])) { var propValue = eval(extObj[prop][p]); extObj[prop][p] = propValue; } else { //if(p.indexOf("'")>=0){ // var obj = $scope.$eval(extObj[prop][p]); // extObj[prop][$scope.$eval(p)]=obj; //} } } } else if ("watcher" == prop) { if (angular.isArray(extObj[prop])) { angular.forEach(extObj[prop], function (item, index) { for (var p in item) { if (new RegExp("function").test(item[p])) { var propValue = eval(item[p]); extObj[prop][index][p] = propValue; } } }); } else if (angular.isObject(extObj[prop])) { for (var p in extObj[prop]) { if (new RegExp("function").test(extObj[prop][p])) { var propValue = eval(extObj[prop][p]); extObj[prop][p] = propValue; } } } } } angular.extend(field, extObj); delete field.extjson; } if (field.extjson == "") { delete field.extjson; } if (angular.isDefined(field.templateOptions)) { var templateOs = field.templateOptions; for (var property in templateOs) { //console.log(property); if ( angular.isString(templateOs[property]) && !new RegExp("[\u4e00-\u9fa5]").test(templateOs[property]) ) { if (new RegExp("function").test(templateOs[property])) { var propValue = eval(templateOs[property]); field.templateOptions[property] = propValue; } else { if (that.has(templateOs[property])) { field.templateOptions[property] = that.get( templateOs[property] ); } else { field.templateOptions[property] = templateOs[property]; } } } else if (templateOs[property] == null) { //delete field.templateOptions[property]; } else { } } } if ( angular.isDefined(field.templateOptions) && angular.isDefined(field.templateOptions.extjson) ) { var extObj = angular.fromJson(field.templateOptions.extjson); //JSON.parse(field.extjson); angular.extend(field.templateOptions, extObj); delete field.templateOptions.extjson; } //... if (field.templateOptions) { //处理远程获取数据控件方法调用 if (field.templateOptions.optionsUrl) { field.templateOptions.refresh = refreshSelectOptions; } //处理嵌套属性数据绑定/ if (field.templateOptions.pkey) { var pmodel, i = 0; angular.forEach( field.templateOptions.pkey.split("."), function (p) { if (i == 0) { if (result.model[p] == null) { result.model[p] = {}; } pmodel = result.model[p]; i++; } else { if (pmodel[p] == null) { pmodel[p] = {}; } pmodel = pmodel[p]; } } ); if (pmodel != null) { field.model = pmodel; if (pmodel[field.key] == null) { pmodel[field.key] = null; } } } else { if (result.model[field.key] == null) { result.model[field.key] = null; } } //处理弹出框组件初始化 if (field.type == "ui-input-selectmodal") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-userselect") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-multiuserselect") { field.templateOptions.modal = $modal; } else if (field.type == "ui-modelselect") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-dropfile") { field.templateOptions.fileUploader = new FileUploader({ url: "/uploader", }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; //field.ApiService=api_bpm_domain; // }else if (field.type == "ui-uploadFile") { // field.templateOptions.fileUploader = new FileUploader({ // url: '/uploader' // }); // field.templateOptions.taskId = $stateParams.taskId; // field.templateOptions.processInstanceId = $stateParams.processInstanceId; // field.templateOptions.userId = $rootScope.user.id; //field.ApiService=api_bpm_domain; } else if (field.type == "ui-dropfiletable") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-dropFiles") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-showImgs") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-repeatSection") { var repeatForm = { model: {}, fields: field.templateOptions.fields, }; repeatForm.model[field.key] = []; decodeVMTabForm(repeatForm); } } // console.log(field); //field //result.fields.push(field); }); }); vm.originalTabs = angular.copy(vm.form); } //解析自定义表单设计数据 function decodeVMForm(vmForm) { var result = { model: {}, tabs: [], }; //设置模型实体数据 begin // var mdata = vmForm.model; //解析数据实体 var mdata = angular.fromJson(vmForm.model); //JSON.parse(field.extjson); angular.extend(result.model, mdata); //设置模型实体数据 end //解析设计数据生成表单项 begin var fields = []; //处理修改设计数据中展示设置 angular.forEach(vmForm.tabs, function (field) { if (field.key == "") { delete field.key; } if (angular.isDefined(field.extjson)) { var extObj = angular.fromJson(field.extjson); //JSON.parse(field.extjson); angular.extend(field.templateOptions, extObj.templateOptions); delete extObj.templateOptions; for (var prop in extObj) { if (new RegExp("Expression").test(prop)) { //var obj = $scope.$eval(extObj[prop]); //extObj[prop] = $scope.$eval(extObj[prop]); if (extObj[prop] != null) { if (new RegExp("function").test(extObj[prop])) { var propValue = eval(extObj[prop]); extObj[prop] = propValue; } else { //console.log(extObj[prop]); var obj = $scope.$eval(extObj[prop]); extObj[prop] = obj; //console.log(obj); } } } else if (new RegExp("expressionProperties").test(prop)) { for (var p in extObj[prop]) { if (new RegExp("function").test(extObj[prop][p])) { var propValue = eval(extObj[prop][p]); extObj[prop][p] = propValue; } else { //if(p.indexOf("'")>=0){ // var obj = $scope.$eval(extObj[prop][p]); // extObj[prop][$scope.$eval(p)]=obj; //} } } } else if ("watcher" == prop) { if (angular.isArray(extObj[prop])) { angular.forEach(extObj[prop], function (item, index) { for (var p in item) { if (new RegExp("function").test(item[p])) { var propValue = eval(item[p]); extObj[prop][index][p] = propValue; } } }); } else if (angular.isObject(extObj[prop])) { for (var p in extObj[prop]) { if (new RegExp("function").test(extObj[prop][p])) { var propValue = eval(extObj[prop][p]); extObj[prop][p] = propValue; } } } } } angular.extend(field, extObj); delete field.extjson; } if (angular.isDefined(field.templateOptions)) { var templateOs = field.templateOptions; for (var property in templateOs) { //console.log(property); if ( angular.isString(templateOs[property]) && !new RegExp("[\u4e00-\u9fa5]").test(templateOs[property]) ) { if (new RegExp("function").test(templateOs[property])) { var propValue = eval(templateOs[property]); field.templateOptions[property] = propValue; } else { if (that.has(templateOs[property])) { field.templateOptions[property] = that.get( templateOs[property] ); } else { field.templateOptions[property] = templateOs[property]; } } } else if (templateOs[property] == null) { //delete field.templateOptions[property]; } else { } } } if ( angular.isDefined(field.templateOptions) && angular.isDefined(field.templateOptions.extjson) ) { var extObj = angular.fromJson(field.templateOptions.extjson); //JSON.parse(field.extjson); angular.extend(field.templateOptions, extObj); delete field.templateOptions.extjson; } //... if (field.templateOptions) { //处理远程获取数据控件方法调用 if (field.templateOptions.optionsUrl) { field.templateOptions.refresh = refreshSelectOptions; } //处理嵌套属性数据绑定/ if (field.templateOptions.pkey) { var pmodel, i = 0; angular.forEach( field.templateOptions.pkey.split("."), function (p) { if (i == 0) { if (result.model[p] == null) { result.model[p] = {}; } pmodel = result.model[p]; i++; } else { if (pmodel[p] == null) { pmodel[p] = {}; } pmodel = pmodel[p]; } } ); if (pmodel != null) { field.model = pmodel; if (pmodel[field.key] == null) { pmodel[field.key] = null; } } } else { if (result.model[field.key] == null) { result.model[field.key] = null; } } //处理弹出框组件初始化 if (field.type == "ui-input-selectmodal") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-userselect") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-multiuserselect") { field.templateOptions.modal = $modal; } else if (field.type == "ui-modelselect") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-dropfile") { field.templateOptions.fileUploader = new FileUploader({ url: "/uploader", }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; //field.ApiService=api_bpm_domain; } else if (field.type == "ui-dropfiletable") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-dropFiles") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-showImgs") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-repeatSection") { var repeatForm = { model: {}, fields: field.templateOptions.fields, }; repeatForm.model[field.key] = []; decodeVMForm(repeatForm); } } // console.log(field); result.fields.push(field); }); angular.extend($scope.vm.fields, result.fields); angular.extend($scope.vm.models, result.model); $scope.formData = vmForm; //console.log($scope.vm); //解析设计数据生成表单项 end return result; } //======================处理表单设计数据 结束======================== $scope.ldloading = {}; function filter(obj) { angular.forEach(obj, function (key, value) { if (value === "" || value === null) { delete obj[key]; } else if ( Object.prototype.toString.call(value) === "[object Object]" ) { filter(value); } else if (angular.isArray(value)) { angular.forEach(value, function (item) { filter(item); }); } }); } function invokeOnAllFormOptions(fn) { angular.forEach(vm.tabs, function (tab) { if (tab.form.options && tab.form.options[fn]) { tab.form.options[fn](); } }); } function encodeCIData(data, ciId) { /* create/update state:未审核 create createtime:系统时间 create/update lastupdatetime : 系统时间 label:ci分类 */ if (ciId) { var baseprop = [ "uuid", "name", "type", "label", "status", "createtime", "lastupdatetime", "props", ]; //state|audittime//createtime//removeflag|removetime//configperson//lastupdateperson//manager//useradmin var extraprop = "props"; data[extraprop] = {}; for (var key in data) { console.log(data[key]); if (_.indexOf(baseprop, key) >= 0) { continue; } else { data[extraprop][key] = data[key]; delete data[key]; } } if ($rootScope.user) { data[extraprop]["lastupdateperson"] = $rootScope.user.name; data[extraprop]["configperson"] = $rootScope.user.name; var isCMAdminFlag = false; angular.forEach($rootScope.user.role, function (roleItem) { if (roleItem.rolecode == "cmdb charge") { isCMAdminFlag = true; } }); if (!isCMAdminFlag) { data[extraprop]["state"] = "1"; } } if (data.props.id) { } else { data.label = ciId; } return data; } return undefined; } function decodeCIModel(data) { var extraprop = "props"; if (data[extraprop]) { for (var key in data[extraprop]) { data[key] = data[extraprop][key]; } delete data[extraprop]; } data["iscmadmin"] = false; angular.forEach($rootScope.user.role, function (roleItem) { if (roleItem.rolecode == "cmdb charge") { data["iscmadmin"] = true; } }); return data; } vm.remove = function (data, style) { $scope.ldloading[style.replace("-", "_")] = true; var modalInstance = $modal.open({ templateUrl: "assets/views/delete.html", controller: function ($scope, scope, $modalInstance, api_bpm_data) { var cidata = { label: data.label, id: data.id, uuid: data.uuid, name: data.name, props: {}, }; if (cidata.id) { cidata.props["removeflag"] = true; cidata.props["lastupdateperson"] = vm.models.loginUser; $scope.ok = function () { $modalInstance.close(cidata); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; } }, size: "sm", resolve: { scope: function () { return $scope; }, }, }); modalInstance.result.then(function (selectedItem) { if (selectedItem) { // if (selectedItem.length > 0) { api_cmdb .put(selectedItem, selectedItem.id) .then(function (response) { if (response) { var resData = Restangular.stripRestangular(response); SweetAlert.swal( { title: "删除成功!", confirmButtonColor: "#007AFF", }, function () { $state.go("app.means.list"); // $scope.refreshform(); // reinitTabForm($scope.classify); } ); } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55", }); } $scope.ldloading[style.replace("-", "_")] = false; }); } }); }; function formValid() { angular.forEach(vm.tabs, function (item) { //item. }); } $scope.closeModel = function () { console.log($stateParams); if ( angular.isDefined($stateParams.formKey) && $stateParams.formKey != "" ) { if ( $stateParams.formKey == "means_editor" || $stateParams.formKey == "means_edit" ) { $state.go("app.means.list", {}); } event.preventDefault(); } }; // setInterval(function() { // if ($scope.model.cifilter_classic && cifilter_classic.id != $scope.model.cifilter_classic.id) { // cifilter_classic = $scope.model.cifilter_classic; // $scope.refreshcmdbform(cifilter_classic); // } else {} // }, 100); vm.models = (function filter(obj) { var filtered = _.pick(obj, function (v) { return ( angular.isDefined(v) && v !== null && (angular.isArray(v) ? v.length > 0 : true) && (_.isPlainObject(v) ? !_.isEmpty(v) : true) ); }); return _.cloneDeep(filtered, function (v) { return v !== filtered && _.isPlainObject(v) ? filter(v) : undefined; }); })(vm.models); // setInterval(function() { // if ($scope.model.type == 0) { // $scope.model[$scope.options.key] = vm.models; // } // }, 100); setInterval(function () { if (vm.form && vm.form.$$parentForm.$valid) { if ( $scope.$parent && $scope.$parent.$parent && $scope.$parent.$parent.$parent && $scope.$parent.$parent.$parent.model ) { vm.models.hw_cifilterClassic = $scope.$parent.$parent.$parent.model.cifilterClassic.label; $scope.model[$scope.options.key] = vm.models; } // vm.models.hw_cifilterClassic = $scope.$parent.$parent.$parent.model.cifilterClassic.label; // $scope.model[$scope.options.key] = vm.models; } }, 100); vm.submit = function (data, ciId, templateitem, style) { // $scope.ldloading[style.replace('-', '_')] = true; console.log(vm.form.$$parentForm.$valid); if (vm.form.$$parentForm.$valid) { invokeOnAllFormOptions("updateInitialValue"); //alert(JSON.stringify(vm.model), null, 2); //vm.options.updateInitialValue(); //console.log(vm.model); var cidata = encodeCIData(vm.models, ciId); if (cidata) { //var cidata = ; if (cidata.props.id) { //修改 api_cmdb.put(cidata, ciId).then(function (response) { if (response) { var resData = Restangular.stripRestangular(response); SweetAlert.swal( { title: "保存成功!", confirmButtonColor: "#007AFF", }, function () { $scope.ldloading[style.replace("-", "_")] = false; // $scope.refreshform(); $state.go("app.means.list"); } ); } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55", }); } $scope.ldloading[style.replace("-", "_")] = false; }); } else { //新建 var type = 2; api_sysinfo .getSerialnumber(type, templateitem.id) .then(function (data) { if (data && data.status == 200) { cidata.uuid = data.uuid; api_cmdb.create(cidata).then(function (response) { if (response) { var resData = Restangular.stripRestangular(response); SweetAlert.swal( { title: "保存成功!", text: "内部编号:" + cidata.uuid, confirmButtonColor: "#007AFF", }, function () { $state.go("app.means.list"); } ); // if(resData.status){ // resData // } } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55", }); } $scope.ldloading[style.replace("-", "_")] = false; }); } else { SweetAlert.swal({ title: "系统错误", text: "内部编号生成出错!", type: "error", confirmButtonColor: "#DD6B55", }); } }); } } else { SweetAlert.swal({ title: "错误", text: "错误,请选择资产分类!", type: "error", confirmButtonColor: "#DD6B55", }); } //alert(JSON.stringify(cidata), null, 2); $scope.ldloading[style.replace("-", "_")] = true; return; var _ = window._; vm.models = (function filter(obj) { var filtered = _.pick(obj, function (v) { return ( angular.isDefined(v) && v !== null && (angular.isArray(v) ? v.length > 0 : true) && (_.isPlainObject(v) ? !_.isEmpty(v) : true) ); }); return _.cloneDeep(filtered, function (v) { return v !== filtered && _.isPlainObject(v) ? filter(v) : undefined; }); })(vm.models); } else { if (vm.form.$$parentForm.$error) { SweetAlert.swal({ title: "校验错误", text: "请填写必填项!", type: "error", confirmButtonColor: "#DD6B55", }); angular.forEach( vm.form.$$parentForm.$error.required, function (item) { angular.forEach(vm.tabs, function (tab) { angular.forEach(tab.form.fields, function (f) { if (f.name == item.$name) { f.validation.show = true; tab.active = true; } }); }); } ); $scope.ldloading[style.replace("-", "_")] = false; } } }; $scope.vm = vm; $scope.refreshcmdbform = function (item) { // if ($stateParams.model) { // var modeldata = JSON.parse($stateParams.model) var tempclassify = item.prefix.toLowerCase() + item.sign; api_configure_form.renderTabForm(tempclassify).then(function (data) { var myData = Restangular.stripRestangular(data); $scope.propTypeOptions = myData; $scope.templateProps = myData; $scope.vm.tabs = myData; if ($scope.model.asset && $scope.model.asset.length != "") { vm.models = JSON.parse($scope.model.asset); } decodeVMTabForm(vm.models, vm.tabs); }); // } }; var cifilterClassic = {}; setInterval(function () { if ( $scope.$parent.$parent && $scope.$parent.$parent.$parent && $scope.$parent.$parent.$parent.model && $scope.$parent.$parent.$parent.model.cifilterClassic && cifilterClassic.id != $scope.$parent.$parent.$parent.model.cifilterClassic.id ) { // $scope.$parent.$parent.$parent.model.cifilterClassic = $scope.model.cifilterClassic; cifilterClassic = $scope.$parent.$parent.$parent.model.cifilterClassic; $scope.refreshcmdbform(cifilterClassic); } else { } }, 100); }, ], }); //请求人信息 formlyConfigProvider.setType({ name: "ui-cmdbinformation", templateUrl: "assets/views/customform/tpl/cmdb/ui-cmdbinformation.html", wrapper: ["bootstrapHasError"], defaultOptions: function (options, $scope) { return { templateOptions: { // checkform: function(options) { // if (options.model.requester) { // options.value(options.model.requester); // } // }, }, }; }, controller: [ "$scope", "api_user_data", function ($scope, api_user_data) { if ($scope.options.templateOptions.loginUser) { if ( $scope.model[$scope.options.key] && $scope.model[$scope.options.key].id ) { } else { $scope.model[$scope.options.key] = $scope.options.templateOptions.loginUser; } $scope.options.initialValue = $scope.model[$scope.options.key]; } }, ], }); //资产属性 formlyConfigProvider.setType({ name: "ui-cmdbtype", templateUrl: "assets/views/customform/tpl/cmdb/ui-cmdbtype.html", wrapper: ["bootstrapHasError"], defaultOptions: function (options, $scope) { return { templateOptions: { // checkform: function(options) { // if (options.model.requester) { // options.value(options.model.requester); // } // }, }, }; }, controller: [ "$scope", "api_user_data", function ($scope, api_user_data) { // $scope.options.initialValue = $scope.model[$scope.options.key]; $scope.property = { hw_change: $scope.to.loginUser, hw_updata: moment(new Date()).format("YYYY-MM-DD hh:mm:ss"), hw_createtime: moment(new Date()).format("YYYY-MM-DD hh:mm:ss"), }; if ($scope.$parent.$parent.$parent.model.assets) { $scope.$parent.$parent.$parent.model.assets.extend($scope.property); } }, ], }); //申请单信息 formlyConfigProvider.setType({ name: "ui-cmdbformimform", templateUrl: "assets/views/customform/tpl/cmdb/ui-cmdbformimform.html", wrapper: ["bootstrapHasError"], defaultOptions: function (options, $scope) { return { templateOptions: { // checkform: function(options) { // if (options.model.requester) { // options.value(options.model.requester); // } // }, }, }; }, controller: [ "$scope", "api_user_data", function ($scope, api_user_data) { // $scope.options.initialValue = $scope.model[$scope.options.key]; $scope.getininform = { serialNumbe: $scope.$parent.$parent.$parent.model.applicationForm.serialNumbe, time: $scope.$parent.$parent.$parent.model.applicationForm.time, }; if ($scope.$parent.$parent.$parent.model.applicationForm.type == 0) { $scope.getininform.types = "新资产入库"; } else if ( $scope.$parent.$parent.$parent.model.applicationForm.type == 2 ) { $scope.getininform.types = "资产归还"; } }, ], }); //出库单信息 formlyConfigProvider.setType({ name: "ui-outinformation", templateUrl: "assets/views/customform/tpl/cmdb/outinformation.html", wrapper: ["bootstrapHasError"], defaultOptions: function (options, $scope) { return { templateOptions: { // checkform: function(options) { // if (options.model.requester) { // options.value(options.model.requester); // } // }, }, }; }, controller: [ "$scope", "api_user_data", function ($scope, api_user_data) { // $scope.options.initialValue = $scope.model[$scope.options.key]; $scope.getininform = { serialNumbe: $scope.$parent.$parent.$parent.model.applicationForm.serialNumbe, time: $scope.$parent.$parent.$parent.model.applicationForm.time, // source: $scope.$parent.$parent.$parent.model.applicationForm.source, sourceId: $scope.$parent.$parent.$parent.model.applicationForm.sourceId, describe: $scope.$parent.$parent.$parent.model.applicationForm.describe, }; if ($scope.$parent.$parent.$parent.model.type.value == "1") { $scope.getininform.types = "新设备领用出库"; } else if ($scope.$parent.$parent.$parent.model.type.value == "4") { $scope.getininform.types = "设备更换"; } $scope.getininform.source_id = $scope.$parent.$parent.$parent.model.source.value; if ($scope.$parent.$parent.$parent.model.source.value == "1") { $scope.getininform.source = "事件"; } else if ($scope.$parent.$parent.$parent.model.source.value == "2") { $scope.getininform.source = "变更"; // $scope.getininform.sourceId=$scope.$parent.$parent.$parent.model.source } else if ($scope.$parent.$parent.$parent.model.source.value == "3") { $scope.getininform.source = "其它"; } }, ], }); //资产附件上传 formlyConfigProvider.setType({ name: "ui-cmdbuplode", templateUrl: "assets/views/customform/tpl/cmdb/ui-cmdbuplode.html", wrapper: ["bootstrapHasError"], defaultOptions: function (options, $scope) { return { templateOptions: { // checkform: function(options) { // if (options.model.requester) { // options.value(options.model.requester); // } // }, }, }; }, controller: [ "$scope", "$rootScope", "$http", "SweetAlert", "FileUploader", "api_user_data", "i18nService", "$modal", "Restangular", "api_configure_data", "api_cmdb", "api_cmdb_new", "api_wechatfile", "api_sysinfo", function ( $scope, $rootScope, $http, SweetAlert, FileUploader, api_user_data, i18nService, $modal, Restangular, api_configure_data, api_cmdb, api_cmdb_new, api_wechatfile, api_sysinfo ) { $scope.state = 1; $scope.myData3all = []; $scope.myData3 = []; $scope.memoryfilterDatahao = { idx: 0, sum: 10, }; $scope.selected = { items: [], }; $scope.interceptMydata = function (mydate, idx, sum) { return mydate.slice(idx * sum, (idx + 1) * sum); }; // $scope.importnext = function() { // $scope.state = 2; // event.preventDefault(); // } $scope.workspaces = []; $scope.options.templateOptions.getpush = function (item) { $scope.workspaces = []; if (item.gu) { $scope.workspaces.push({ id: 1, name: "固定资产", active: true, contentUrl: "assets/views/customform/tpl/cmdb/gudingzichan.html", }); } if (item.hao) { $scope.workspaces.push({ id: 2, name: "耗材资产", active: true, contentUrl: "assets/views/customform/tpl/cmdb/haocai.html", }); } }; //获取附件列表 $scope.listAttachmen = function () { to.ApiService.listAttachment( to.listAttachmentUrl, to.bindType, bindId ).then(function (result) { var myData = Restangular.stripRestangular(result); // $scope.listAttachmens = myData; $scope.attachments = myData.data; }); }; //附件列表 if ($scope.options.templateOptions.bindType) { if (angular.isUndefined($scope.form.dropState)) { $scope.form.dropState = false; } var to = $scope.options.templateOptions; var bindId = $scope.model[to.bindType].processInstanceId; $scope.listAttachmen(); } // if (to.bindType && $scope.model[to.bindType].processInstanceId) { // $scope.listAttachmen(); // } else if (to.bindType && $scope.model[to.bindType].id) { // $scope.listAttachmen(); // } //附件下载 $scope.download = function (token, filename) { var downUrl = to.ApiService.downloadAttachment( to.downUrl, token ).getRequestedUrl(); // window.open(downUrl); var a = document.createElement("a"); a.href = downUrl; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }; //附件预览 $scope.view = function (id, previewUrl) { if (previewUrl) { window.open(previewUrl); } }; //下载资产模版 $scope.filenum = 0; $scope.openmeans = function () { var modalInstance = $modal.open({ templateUrl: "assets/views/means/tpl/meansdown.html", controller: function ($scope, scope, $modalInstance) { $scope.item = {}; $scope.title = "选择下载模版"; $scope.lable = "资产模版下载"; function foreachdata(my_datas) { // angular.forEach(my_datas, function(item, index) { // if (item.children && item.children.length > 0) { // foreachdata(item.children); // } else { // my_datas[index].checks = true; // } // }) for (var i = 0; i < my_datas.length; i++) { if (my_datas[i].children && my_datas[i].children.length > 0) { foreachdata(my_datas[i].children); console.log($scope); } else { my_datas[i].checks = true; } } } function foreachtree(data) { angular.forEach(data, function (item) { // if (item.checks != true) { item.checks = true; item.expanded = true; if (item.children && item.children.length > 0) { foreachtree(item.children); } else { $scope.getslowtree.push(item); } // } }); } $scope.getslowtree = []; $scope.slowtree = function (tree) { foreachtree(tree); return $scope.getslowtree; }; $scope.all = function (c, v) { //全选 if (c == true) { $scope.formdashboard($scope.slowtree(v)); } else { $scope.my_data_after = []; angular.forEach($scope.my_data, function (item, index) { $scope.my_data[index].checks = false; $scope.my_data[index].expanded = false; if (item.children && item.children.length > 0) { angular.forEach( item.children, function (itemone, indexone) { $scope.my_data[index].children[ indexone ].checks = false; $scope.my_data[index].children[ indexone ].expanded = false; if (itemone.children && itemone.children.length > 0) { angular.forEach( itemone.children, function (itemtwo, indextwo) { $scope.my_data[index].children[ indexone ].children[indextwo].checks = false; } ); } else { } } ); } else { } }); $scope.mydatacate = []; $scope.getslowtree = []; // } } }; // $scope.searchone = function(search) { // angular.forEach($scope.my_data, function(item) { // if (item.indexOf(search) > 0) { // } // }) // } $scope.checkall = function () { angular.forEach($scope.my_data, function (item, index) { scope.my_data[index].checks = true; }); }; $scope.selectitem = []; $scope.choiceitem = function (item) { // if (item.checkeds) { // item.checkeds = false; // // for (var i = 0; i < $scope.selectitem.length; i++) { // // if ($scope.selectitem[i].id == item.id) { // // $scope.selectitem.splice(i, 1) // // } // // } // for (var i = 0; i < $scope.my_data_after; i++) { // if ($scope.my_data_after[i].id == item.id) { // $scope.my_data_after[i].checkeds ? $scope.my_data_after[i].checkeds = false : $scope.my_data_after[i].checkeds = true; // // $scope.selectitem.splice(i, 1) // } // } // } else { // item.checkeds = true; // $scope.selectitem.push(item) // } for (var i = 0; i < $scope.my_data_after.length; i++) { if ($scope.my_data_after[i].id == item.id) { $scope.my_data_after[i].checkeds ? ($scope.my_data_after[i].checkeds = false) : ($scope.my_data_after[i].checkeds = true); } } }; $scope.remove = function (removeitem) { var realdat = angular.copy($scope.my_data_after); // angular.extend(realdat, $scope.selectitem); $scope.my_data_after = []; angular.forEach(realdat, function (item) { if (!item.checkeds) { $scope.my_data_after.push(item); } }); $scope.mydatacate = angular.copy($scope.my_data_after); }; $scope.try_async_loads = function (item, search) { var fildatas = { idx: 0, sum: 1000, }; $scope.my_data = []; // $scope.try_async_load = true; if (item) { angular.extend(fildatas, item); } api_configure_data .fetchDataList("ciclassify", fildatas) .then(function (response) { if (response.status == 200) { var data = response.list; var objects = []; for (var i = 0; i < data.length; i++) { var object = {}; object.id = data[i].id; if (search) { delete data[i].parent; } else { if (data[i].parent && data[i].parent.id != 0) { object.parent = data[i].parent.id; } } angular.extend(object, data[i]); objects.push(object); } $scope.my_data = convertParentToChildList(objects); $scope.tree_data = angular.copy($scope.my_data); if ($scope.my_data.length > 0) { $scope.try_async_load = false; } } else { SweetAlert.swal({ title: "系统错误!", text: "请刷新重试!", type: "error", }); } }); }; function convertListToTree(data, treeMap) { var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = null; //Initially set our loop to null //loop over data for (var i = 0; i < data.length; i++) { var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent idToNodeMap[datum.id] = datum; //Does this node have a parent? // console.log("datum="+JSON.stringify(datum)) if ( typeof datum.parent === "undefined" || datum.parent === null ) { //Doesn't look like it, so this node is the root of the tree root = datum; treeMap[datum.id] = root; } else { //This node has a parent, so let's look it up using the id parentNode = idToNodeMap[datum.parent.id]; //We don't need this property, so let's delete it. // delete datum.parent; //Let's add the current node as a child of the parent node. parentNode.children.push(datum); } } return root; } function convertParentToChildList(data) { var treeMap = {}; var list = []; convertListToTree(data, treeMap); angular.forEach(treeMap, function (item) { list.push(item); }); return list; } function convertParentToChild(datato) { var treeMapto = {}; var listto = []; convertListToTree(datato, treeMapto); angular.forEach(treeMapto, function (items) { listto.push(items); }); return listto; } $scope.try_async_loads(); $scope.searchdown = function (key) { if (key && key != "") { $scope.try_async_loads( { ciclassify: { label: key, }, }, "search" ); } else { $scope.try_async_loads(); } // var mydatacatedown = angular.copy($scope.my_data); // $scope.my_data = []; // var objects = []; // angular.forEach(mydatacatedown, function(item) { // if (item.label.match(key)) { // objects.push(item) // } else { // // $scope.my_data_after.push(item) // } // }) // $scope.my_data = convertParentToChildList(objects); // $scope.tree_data = angular.copy($scope.my_data); }; $scope.mydatacate = []; $scope.searchup = function (key) { // var mydatacate = angular.copy($scope.my_data_after); $scope.my_data_after = []; angular.forEach($scope.mydatacate, function (item) { if (item.label.match(key)) { $scope.my_data_after.push(item); } else { } }); }; //角色树 $scope.my_tree = []; $scope.tree_data_after = []; $scope.my_data = []; $scope.my_data_after = []; $scope.formdashboard = function (item) { $scope.my_data_after = []; angular.forEach(item, function (infox) { if (infox.children.length == 0) { $scope.my_data_after.push(infox); } }); $scope.mydatacate = angular.copy($scope.my_data_after); }; $scope.ok = function (item) { $modalInstance.close(item); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, // size: 'sm', resolve: { scope: function () { return $scope; }, }, }); modalInstance.result.then(function (selectedItem) { // $rootScope.isMask = true; if (selectedItem) { var type = 1; var fildat = { configure: selectedItem, }; // api_configure_data.downModeldata('cmdb', fildat).then(function(data) { // // if (data.errno == 0) { // var file = new Blob([data], { // // 'Accept': '*/*' // type: 'application/octet-stream' // // type: 'application/vnd.ms-excel' // }); // //trick to download store a file having its URL // var fileURL = URL.createObjectURL(file); // var a = document.createElement('a'); // a.href = fileURL; // a.target = '_blank'; // a.download = "资产导入模版.xlsx"; // document.body.appendChild(a); // a.click(); // // } // }) $http({ url: api_configure_data .downModels("export/cmdb", fildat) .getRequestedUrl(), method: "POST", data: JSON.stringify(fildat), headers: { // 'Content-type': 'application/xls', Accept: "*/*", }, responseType: "arraybuffer", }) .success(function (data, status, headers, config) { $rootScope.isMask = false; var file = new Blob([data], { type: "application/octet-stream", // type : 'application/vnd.ms-excel' }); //trick to download store a file having its URL var fileURL = URL.createObjectURL(file); var a = document.createElement("a"); a.href = fileURL; a.target = "_blank"; a.download = "资产导入模版.xlsx"; document.body.appendChild(a); a.click(); }) .error(function (data, status, headers, config) { // console.log(data); $rootScope.isMask = false; }); // break; // } // } // } // }) } else { SweetAlert.swal( { title: "未选择资产分类!", text: "请选择资产分类", type: "error", }, function () { $rootScope.isMask = false; } ); } // } }); }; $scope.wrongdata = []; var uploader = ($scope.uploader = $scope.options.templateOptions.fileUploader); var uploadermeans = ($scope.uploadermeans = $scope.options.templateOptions.fileUploadermeans); $scope.importopen = function () { //导入触发事件 if (angular.isUndefined($scope.form.dropState)) { $scope.form.dropState = false; } //附件上传数据 //$scope.options.templateOptions.uploader(); // FILTERS uploader.filters.push({ name: "customFilter", fn: function (item /*{File|FileLikeObject}*/, options) { return this.queue.length < 2; }, }); // CALLBACKS uploader.onWhenAddingFileFailed = function ( item /*{File|FileLikeObject}*/, filter, options ) { console.info("onWhenAddingFileFailed", item, filter, options); }; uploader.onAfterAddingFile = function (fileItem) { console.info("onAfterAddingFile", fileItem); }; uploader.onAfterAddingAll = function (addedFileItems) { console.info("onAfterAddingAll", addedFileItems); }; uploader.onBeforeUploadItem = function (item) { console.info("onBeforeUploadItem", item); }; uploader.onProgressItem = function (fileItem, progress) { console.info("onProgressItem", fileItem, progress); }; uploader.onProgressAll = function (progress) { console.info("onProgressAll", progress); }; // uploader.onSuccessItem = function(fileItem, response, status, headers) { // console.info('onSuccessItem', fileItem, response, status, headers); // }; uploader.onErrorItem = function ( fileItem, response, status, headers ) { console.info("onErrorItem", fileItem, response, status, headers); }; uploader.onCancelItem = function ( fileItem, response, status, headers ) { console.info("onCancelItem", fileItem, response, status, headers); }; uploader.onCompleteItem = function ( fileItem, response, status, headers ) { console.info("onCompleteItem", fileItem, response, status, headers); }; uploader.onCompleteAll = function () { console.info("onCompleteAll"); }; }; // $scope.importnext = function() { // $scope.state = 2; // event.preventDefault(); // } $scope.importnext = function () { event.preventDefault(); // $rootScope.isMask = true; $rootScope.loading = true; // $scope.loadingtext = "正在导入中,请暂时不要离开此界面..." uploader.onBeforeUploadItem = function (item) { angular.extend(item.headers, $rootScope.getSession()); item.url = api_cmdb_new.checkFile(1).getRequestedUrl(); // if (item.index > 1) { // item.formData = [{ 'filename': item.file.name + '_' + (item.index - 1) }]; // } // item.index = 1; item.formData = [ { filename: item.file.name, }, ]; console.info("onBeforeUploadItem", item); }; uploader.uploadAll(); uploader.onSuccessItem = function ( fileItem, response, status, headers ) { if (response.status == 200) { $scope.wrongdata = []; $rootScope.loading = false; if (response.abnormal) { $scope.state = 2; angular.forEach(response.msg, function (item) { $scope.wrongdata.push({ name: item.assetName, line: item.row, cmdbname: item.name, errotip: [ { label: item.msg, }, ], }); }); } else { $scope.state = 3; } } else { $rootScope.loading = false; $scope.state = 2; } }; }; $scope.clearItems = function () { //重新选择文件时,清空队列,达到覆盖文件的效果 uploader.clearQueue(); // uploader.remove(); // uploader.cancel(); // uploader.onChange(); }; uploader.onAfterAddingFile = function (fileItem) { $scope.fileItem = fileItem._file; // $scope.$apply(); // $scope.fileItem = filenum; // $scope.fileItem.name = fileItem._file.name.replace(".", "_" + filenum + "."); //添加文件之后,把文件信息赋给scope // $scope.fileItem.name = fileItem._file.name.replace(".", "_" + filenum + "."); $scope.filenum++; }; uploader.onSuccessItem = function ( fileItem, response, status, headers ) { $scope.uploadStatus = true; //上传成功则把状态改为true // alert(response.path); }; $scope.importnext = function () { event.preventDefault(); // uploader.onChange(); $rootScope.loading = true; // $scope.loadingtext = "正在导入中,请暂时不要离开此界面..." uploader.onBeforeUploadItem = function (item) { angular.extend(item.headers, $rootScope.getSession()); item.url = api_cmdb_new.checkFile(1).getRequestedUrl(); // if (item.index > 1) { // item.formData = [{ 'filename': item.file.name + '_' + (item.index - 1) }]; // } // item.index = 1; item.formData = [ { filename: item.file.name, }, ]; console.info("onBeforeUploadItem", item); }; uploader.uploadAll(); uploader.onSuccessItem = function ( fileItem, response, status, headers ) { if (response.status == 200) { $scope.wrongdata = []; // uploader.queue = []; $rootScope.loading = false; if (response.abnormal) { $scope.state = 2; uploader.clearQueue(); angular.forEach(response.msg, function (item) { $scope.wrongdata.push({ name: item.assetName, line: item.row, cmdbname: item.name, errotip: [ { label: item.msg, }, ], }); }); } else { $scope.state = 3; } } else { uploader.clearQueue(); $rootScope.loading = false; $scope.state = 2; } }; }; var setAllInactive = function () { angular.forEach($scope.workspaces, function (workspace) { workspace.active = false; }); }; //添加 var addNewWorkspace = function (name, contentUrl) { var id = $scope.workspaces.length + 1; $scope.workspaces.push({ id: id, name: name, active: true, contentUrl: "main/html/content.html", }); }; //关闭 $scope.closeopen = function (closedata) { event.preventDefault(); angular.forEach($scope.workspaces, function (item, index) { if (closedata.id == item.id) { if (closedata.id == 1) { $scope.$parent.$parent.$parent.model.uplodtype.gu = false; } else { $scope.$parent.$parent.$parent.model.uplodtype.hao = false; } $scope.workspaces.splice(index, 1); } }); }; // $scope.workspaces = [ // { id: 1, name: "固定资产", active: true, contentUrl: 'assets/views/customform/tpl/cmdb/gudingzichan.html' }, // { id: 2, name: "耗材资产", active: true, contentUrl: 'assets/views/customform/tpl/cmdb/haocai.html' } // ]; $scope.addWorkspace = function (contentUrl, name) { setAllInactive(); addNewWorkspace(name, contentUrl); }; // $rootScope.addWorkspace = $scope.addWorkspace; $scope.close = function (idNumber) { var index = 0; //记录当前元素下标 angular.forEach($scope.workspaces, function (workspace) { if (workspace.id === idNumber) { $scope.workspaces.splice(index, 1); //删除当前下标的选项卡元素 } index++; }); }; //grid2 $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions2 = {}; $scope.gridOptions2.data = "myData3"; $scope.gridOptions2.enableColumnResizing = true; $scope.gridOptions2.enableFiltering = false; $scope.gridOptions2.enableGridMenu = false; $scope.gridOptions2.showGridFooter = true; $scope.gridOptions2.showColumnFooter = false; $scope.gridOptions2.fastWatch = true; $scope.gridOptions2.useExternalFiltering = true; $scope.gridOptions2.useExternalPagination = true; $scope.gridOptions2.paginationPageSizes = [10]; $scope.gridOptions2.paginationPageSize = 10; $scope.gridOptions2.multiSelect = false; // $scope.gridOptions.rowTemplate = "
"; $scope.gridOptions2.columnDefs = [ { name: "item", displayName: "序号", width: 120, }, { name: "name", displayName: "耗材名称", width: 80, enableFiltering: false, }, { name: "model", displayName: "品牌/型号", width: 100, enableFiltering: false, }, { name: "Specifications", displayName: "规格", width: 150, enableFiltering: false, }, { name: "sum", displayName: "数量", enableFiltering: false, }, { name: "操作", cellTemplate: '
' + '修改数量' + "
", enableFiltering: false, }, ]; if ($scope.$parent.$parent.$parent.model.uplodtype) { if ($scope.$parent.$parent.$parent.model.uplodtype.hao == "true") { $scope.myData3all = JSON.parse( $scope.$parent.$parent.$parent.model.applicationForm.consumables ); for (var i = 0; i < $scope.myData3all.length; i++) { $scope.myData3all[i]["item"] = i + 1 + $scope.memoryfilterDatahao.idx * 10; } // $scope.model.consumables = $scope.myDataone; $scope.gridOptions2["totalItems"] = $scope.myData3all.length; $scope.myData3 = $scope.interceptMydata($scope.myData3all, 0, 10); $scope.model.applicationForm.consumables = $scope.myData3all; if ($scope.$parent.$parent.$parent.model.uplodtype.gu == "true") { $scope.options.templateOptions.getpush({ hao: true, gu: true, }); } else { $scope.options.templateOptions.getpush({ hao: true, }); } } else { if ($scope.$parent.$parent.$parent.model.uplodtype.gu == "true") { $scope.options.templateOptions.getpush({ gu: true, }); } } } $scope.options.templateOptions.workspaces = $scope.workspaces; $scope.changecai = function (item) { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/changehaocai.html", controller: function ($scope, $modalInstance) { $scope.title = "修改耗材数量"; $scope.consumptive = angular.copy(item); $scope.ok = function () { $modalInstance.close($scope.consumptive); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", }); modalInstance.result.then(function (selectedItem) { // angular.forEach($scope.myData3, function(items, index) { // if (items.id == selectedItem.id) { // $scope.myData3[index] = selectedItem; // } // }) // // $scope.myData3.push(selectedItem); // $scope.model.applicationForm.consumables = $scope.myData3; angular.forEach($scope.myData3all, function (items, index) { if ( items.modelid == selectedItem.modelid && items.nameid == selectedItem.nameid && items.Specificationsid == selectedItem.Specificationsid ) { // item.model.id == itemsdata.modelid && item.name.id == itemsdata.nameid && item.Specifications.id == itemsdata.Specificationsid angular.extend($scope.myData3all[index], selectedItem); } }); $scope.gridOptions2["totalItems"] = $scope.myData3all.length; $scope.myData3 = $scope.interceptMydata( $scope.myData3all, $scope.memoryfilterDatahao.idx, 10 ); $scope.model.applicationForm.consumables = $scope.myData3all; }); }; $scope.gridOptions2.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { // var filtersData = $scope.memoryfilterDatahao; // filtersData.idx = newPage - 1; // filtersData.sum = pageSize; // $scope.loadData(filtersData); $scope.memoryfilterDatahao.idx = newPage - 1; $scope.memoryfilterDatahao.sum = pageSize; $scope.myData3 = $scope.interceptMydata( $scope.myData3all, $scope.memoryfilterDatahao.idx, 10 ); } ); gridApi.selection.on.rowSelectionChanged($scope, function (data) { $scope.selected.items = data.entity; //console.log(data); }); gridApi.selection.on.rowSelectionChangedBatch( $scope, function (data) { $scope.selected.items = data.entity; //console.log(data); } ); gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 10, }; $scope.memoryfilterDatahao = filtersData; // $scope.loadData(filtersData); // $scope.memoryfilterDatahao.idx = newPage - 1; // $scope.memoryfilterDatahao.sum = pageSize; $scope.myData3 = $scope.interceptMydata( $scope.myData3all, $scope.memoryfilterDatahao.idx, 10 ); }); }; $scope.haocaiopen = function (items) { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/addhaocai.html", controller: function ($scope, $modalInstance, SweetAlert) { $scope.consumptive = {}; $scope.title = "新增耗材"; if (items.name) { $scope.consumptive.name = items.name.name; } $scope.clearNoNum = function (obj, attr) { //先把非数字的都替换掉,除了数字和. obj[attr] = obj[attr].replace(/[^\d.]/g, ""); //必须保证第一个为数字而不是. obj[attr] = obj[attr].replace(/^\./g, ""); //保证只有出现一个.而没有多个. obj[attr] = obj[attr].replace(/\.{2,}/g, ""); //保证.只出现一次,而不能出现两次以上 obj[attr] = obj[attr] .replace(".", "$#$") .replace(/\./g, "") .replace("$#$", "."); //小于最大值 // if ($scope.maxsum && parseInt(obj[attr]) > $scope.maxsum) { // alert('输入数据超过库存数量' + $scope.maxsum + ',请重新输入!'); // obj[attr] = ''; // } }; $scope.ok = function (item) { // if (item.name && item.model && item.Specifications && item.sum) { if ( item.name && item.model && JSON.stringify(item.model) != "{}" && item.Specifications && JSON.stringify(item.Specifications) != "{}" && item.sum ) { $modalInstance.close(item); } else { SweetAlert.swal({ title: "数据填写不完整!", text: "请检查数据然后提交!", type: "error", }); } }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { SweetAlert: function () { return SweetAlert; }, }, }); modalInstance.result.then(function (selectedItem) { api_sysinfo .addData("dictionaryTree", { // "type": "list", key: "haocaifenlei", name: selectedItem.name, parent: selectedItem.id, value: selectedItem.name, deleted: false, level: 1, }) .then(function (data) { // $scope.haocainame.name = data.list; api_sysinfo .addData("dictionaryTree", { // "type": "list", key: "pinpai", name: selectedItem.model, parent: data.id, value: selectedItem.model, deleted: false, level: 2, }) .then(function (data) { // $scope.haocainame = data.list; }); api_sysinfo .addData({ // "type": "list", key: "guige", name: selectedItem.Specifications, parent: data.id, value: selectedItem.Specifications, deleted: false, level: 2, }) .then(function (data) { // $scope.haocainame = data.list; }); }); // $scope.myData3.push(selectedItem); // for (var i = 0; i < $scope.myData3.length; i++) { // $scope.myData3[i]['item'] = i + 1 + $scope.memoryfilterData.idx * 10 // } // $scope.model.applicationForm.consumables = $scope.myData3; $scope.myData3all.push(selectedItem); for (var i = 0; i < $scope.myData3all.length; i++) { $scope.myData3all[i]["item"] = i + 1; } // $scope.model.consumables = $scope.myDataone; $scope.gridOptions2["totalItems"] = $scope.myData3all.length; $scope.myData3 = $scope.interceptMydata( $scope.myData3all, $scope.memoryfilterDatahao.idx, 10 ); $scope.model.applicationForm.consumables = $scope.myData3all; }); }; $scope.haocaiadd = function () { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/addchangehaocai.html", controller: function ( $scope, scope, $modalInstance, api_wechatfile, SweetAlert, api_cmdb3 ) { $scope.haocainame = []; $scope.pinpai = []; $scope.guige = []; $scope.consumptive = {}; $scope.consumpall = {}; $scope.title = "添加耗材"; api_wechatfile .getDictionary({ key: "haocaifenlei", type: "tree", }) .then(function (data) { $scope.haocainame = data; }); $scope.clearNoNum = function (obj, attr) { //先把非数字的都替换掉,除了数字和. obj[attr] = obj[attr].replace(/[^\d.]/g, ""); //必须保证第一个为数字而不是. obj[attr] = obj[attr].replace(/^\./g, ""); //保证只有出现一个.而没有多个. obj[attr] = obj[attr].replace(/\.{2,}/g, ""); //保证.只出现一次,而不能出现两次以上 obj[attr] = obj[attr] .replace(".", "$#$") .replace(/\./g, "") .replace("$#$", "."); //小于最大值 // if ($scope.maxsum && parseInt(obj[attr]) > $scope.maxsum) { // alert('输入数据超过库存数量' + $scope.maxsum + ',请重新输入!'); // obj[attr] = ''; // } }; $scope.onChange = function (parent) { $scope.consumptive.model = {}; $scope.consumptive.Specifications = {}; api_wechatfile .getDictionaryForList({ key: "pinpai", parent: parent.id, }) .then(function (data) { $scope.pinpai = data; }); api_wechatfile .getDictionaryForList({ key: "guige", parent: parent.id, }) .then(function (data) { $scope.guige = data; }); }; $scope.addhaocai = function () { $modalInstance.dismiss("cancel"); scope.haocaiopen($scope.consumptive); }; $scope.ok = function (item) { var items = {}; var submittrue = true; if ( item.name && item.model && JSON.stringify(item.model) != "{}" && item.Specifications && JSON.stringify(item.Specifications) != "{}" && item.sum ) { items = { modelid: item.model.id, nameid: item.name.id, Specificationsid: item.Specifications.id, name: item.name.name, model: item.model.name, Specifications: item.Specifications.name, sum: item.sum, }; angular.forEach(scope.myData3all, function (itemsdata) { if ( item.model.id == itemsdata.modelid && item.name.id == itemsdata.nameid && item.Specifications.id == itemsdata.Specificationsid ) { submittrue = false; } }); if (submittrue) { $modalInstance.close(items); } else { SweetAlert.swal({ title: "该耗材已有添加", text: "请检查数据然后提交!", type: "error", }); } } else { SweetAlert.swal({ title: "数据填写不完整!", text: "请检查数据然后提交!", type: "error", }); } // var isold = false; // if (item.name && item.model && item.Specifications && item.sum) { // for (var i = 0; i < scope.myData3all.length; i++) { // if (scope.myData3all[i].id == $scope.consumpall.id) { // isold = true; // } // } // if (isold) { // SweetAlert.swal({ // title: "该耗材已添加!", // text: "请不要重复添加耗材!", // type: "error" // }); // } else { // $scope.consumpall.model = $scope.consumpall.brandModel; // $scope.consumpall.Specifications = $scope.consumpall.specification; // $scope.consumpall.sum = item.sum; // delete $scope.consumpall.brandModel; // delete $scope.consumpall.specification; // $modalInstance.close($scope.consumpall); // } // } else { // SweetAlert.swal({ // title: "数据填写不完整!", // text: "请检查数据然后提交!", // type: "error" // }); // } }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, }, }); modalInstance.result.then(function (selectedItem) { $scope.myData3all.push(selectedItem); for (var i = 0; i < $scope.myData3all.length; i++) { $scope.myData3all[i]["item"] = i + 1; } // $scope.model.consumables = $scope.myDataone; $scope.gridOptions2["totalItems"] = $scope.myData3all.length; $scope.myData3 = $scope.interceptMydata( $scope.myData3all, $scope.memoryfilterDatahao.idx, 10 ); $scope.model.applicationForm.consumables = $scope.myData3all; }); }; $scope.onDblClick = function (data, event) { $scope.selectButtonClick(data, event); }; // $scope.memoryfilterDatahao = { // "idx": 0, // "sum": 10, // } // $scope.loadData = function(filterData) {}; // $scope.title = title; if (angular.isFunction($scope.options.templateOptions.transform)) { $scope.options.templateOptions.transform( $scope.options, $rootScope, $scope ); } }, ], }); //归还设备耗材tab formlyConfigProvider.setType({ name: "ui-cmdbreturntab", templateUrl: "assets/views/customform/tpl/cmdb/ui-cmdbreturntab.html", wrapper: ["bootstrapHasError"], defaultOptions: function (options, $scope) { return { templateOptions: { // checkform: function(options) { // if (options.model.requester) { // options.value(options.model.requester); // } // }, }, }; }, controller: [ "$scope", "$modal", "api_user_data", "i18nService", "api_wechatfile", "api_cmdb3", function ( $scope, $modal, api_user_data, i18nService, api_wechatfile, api_cmdb3 ) { var setAllInactive = function () { angular.forEach($scope.workspaces, function (workspace) { workspace.active = false; }); }; $scope.memoryfilterData = { idx: 0, sum: 10, }; //添加 var addNewWorkspace = function (name, contentUrl) { var id = $scope.workspaces.length + 1; $scope.workspaces.push({ id: id, name: name, active: true, contentUrl: "main/html/content.html", }); }; $scope.workspaces = [ { id: 1, name: "归还设备", active: true, contentUrl: "assets/views/customform/tpl/cmdb/shebei.html", }, { id: 2, name: "归还耗材", active: true, contentUrl: "assets/views/customform/tpl/cmdb/haocai.html", }, ]; $scope.addWorkspace = function (contentUrl, name) { setAllInactive(); addNewWorkspace(name, contentUrl); }; // $rootScope.addWorkspace = $scope.addWorkspace; $scope.close = function (idNumber) { var index = 0; //记录当前元素下标 angular.forEach($scope.workspaces, function (workspace) { if (workspace.id === idNumber) { $scope.workspaces.splice(index, 1); //删除当前下标的选项卡元素 } index++; }); }; $scope.memoryfilterDataguishe = { idx: 0, sum: 10, }; //grid1 $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions1 = {}; $scope.gridOptions1.data = "myData1"; $scope.gridOptions1.enableColumnResizing = true; $scope.gridOptions1.enableFiltering = false; $scope.gridOptions1.enableGridMenu = false; $scope.gridOptions1.showGridFooter = true; $scope.gridOptions1.showColumnFooter = false; $scope.gridOptions1.fastWatch = true; $scope.gridOptions1.useExternalFiltering = true; $scope.gridOptions1.useExternalPagination = true; $scope.gridOptions1.paginationPageSizes = [10]; $scope.gridOptions1.paginationPageSize = 10; $scope.gridOptions1.multiSelect = false; // $scope.gridOptions.rowTemplate = "
"; $scope.gridOptions1.columnDefs = [ { name: "item", displayName: "序号", width: 120, }, { name: "props.hw_cifilterClassic", displayName: "设备类型", width: 150, enableFiltering: false, }, { name: "props.hw_mingcheng", displayName: "设备名称", width: 180, enableFiltering: false, }, { name: "uuid", displayName: "设备编号", width: 180, enableFiltering: false, }, { name: "props.hw_state", width: 150, displayName: "状态", enableFiltering: false, }, { name: "操作", cellTemplate: '
' + '修改状态' + "
", enableFiltering: false, }, ]; // $scope.selectButtonClick $scope.gridOptions1.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { // var filtersData = $scope.memoryfilterData; // filtersData.idx = newPage - 1; // filtersData.sum = pageSize; // $scope.loadData(filtersData); $scope.memoryfilterDataguishe.idx = newPage - 1; $scope.memoryfilterDataguishe.sum = pageSize; $scope.myData1 = $scope.interceptMydata( $scope.myData2all, $scope.memoryfilterDataguishe.idx, 10 ); } ); gridApi.selection.on.rowSelectionChanged($scope, function (data) { $scope.selected.items = data.entity; //console.log(data); }); gridApi.selection.on.rowSelectionChangedBatch( $scope, function (data) { $scope.selected.items = data.entity; //console.log(data); } ); gridApi.core.on.filterChanged($scope, function () { // var grid = this.grid; // var filtersData = { // idx: 0, // sum: 20, // "user": { "roledata": { "rolecode": "roleset" }, "selectType": "1" } // }; // angular.forEach(grid.columns, function(item) { // if (item.enableFiltering) { // // console.log("item.filters[0]=" + JSON.stringify(item.filters)); // if (angular.isDefined(item.filters[0].term) && item.filters[0].term != '') { // if (angular.isUndefined(filtersData['user'])) { // filtersData['user'] = {}; // } // filtersData['user'][item.field] = item.filters[0].term; // } // } // }); // $scope.memoryfilterData = filtersData; // $scope.loadData(filtersData); }); }; $scope.changegu = function (item) { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/changestate.html", controller: function ($scope, $modalInstance) { $scope.title = "修改设备状态"; $scope.hw_state = {}; if (item.status) { $scope.hw_state.name = item.hw_state; } // $scope.consumptive = item; $scope.stateshe = [ { id: 2, name: "在库", }, { id: 4, name: "报修", }, { id: 3, name: "报废", }, ]; $scope.ok = function (item) { $modalInstance.close($scope.hw_state); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", }); modalInstance.result.then(function (selectedItem) { angular.forEach($scope.myData1, function (items, index) { if (items.id == item.id) { $scope.myData1[index].props.hw_state = selectedItem.id.name; } }); $scope.model.assets = $scope.myData1; $scope.$parent.$parent.$parent.model.applicationForm.assets = $scope.model.assets; }); }; $scope.onDblClick = function (data, event) { $scope.selectButtonClick(data, event); }; $scope.memoryfilterData = { idx: 0, sum: 10, // "user": { "roledata": { "rolecode": "roleset" }, "selectType": "1" } }; // $scope.myData = {}; $scope.loadData = function (filterData) { }; // $scope.title = title; $scope.loadData({ idx: 0, sum: 10, // "user": { "roledata": { "rolecode": "roleset" }, "selectType": "1" } }); $scope.selected = { items: [], }; $scope.myData2 = []; $scope.consumptive = {}; $scope.myDataguibeiall = []; $scope.haocaiopen = function (items) { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/addhaocai.html", controller: function ( $scope, $modalInstance, SweetAlert, api_wechatfile, api_sysinfo ) { $scope.consumptive = {}; $scope.title = "新增耗材"; if (items.name) { $scope.consumptive.name = items.name.name; } $scope.ok = function (item) { if ( item.name && item.model && JSON.stringify(item.model) != "{}" && item.Specifications && JSON.stringify(item.Specifications) != "{}" && item.sum ) { $modalInstance.close(item); } else { SweetAlert.swal({ title: "数据填写不完整!", text: "请检查数据然后提交!", type: "error", }); } }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", }); modalInstance.result.then(function (selectedItem) { api_sysinfo .addData({ type: "list", key: "haocaifenlei", name: selectedItem.name, parent: selectedItem.id, value: "1", }) .then(function (data) { // $scope.haocainame.name = data.list; api_wechatfile .addDictionary({ type: "list", key: "pinpai", name: selectedItem.model, parent: data.id, value: "1", }) .then(function (data) { // $scope.haocainame = data.list; }); api_wechatfile .addDictionary({ type: "list", key: "guige", name: selectedItem.Specifications, parent: data.id, value: "1", }) .then(function (data) { // $scope.haocainame = data.list; }); }); $scope.myData2.push(selectedItem); for (var i = 0; i < $scope.myData2.length; i++) { $scope.myData2[i]["item"] = i + 1 + $scope.memoryfilterData.idx * 10; } // $scope.model.applicationForm.consumables = $scope.myData2; angular.forEach($scope.myDataguibeiall, function (items, index) { if (items.id == selectedItem.id) { $scope.myDataguibeiall.splice(index, 1); } }); $scope.myData2 = $scope.interceptMydata($scope.myDataguibei, 0, 10); $scope.model.consumables = $scope.myDataguibeiall; $scope.$parent.$parent.$parent.model.applicationForm.consumables = $scope.model.consumables; $scope.gridOptions1["totalItems"] = $scope.myDataguibeiall.length; }); }; //grid2 $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions2 = {}; $scope.gridOptions2.data = "myData2"; $scope.gridOptions2.enableColumnResizing = true; $scope.gridOptions2.enableFiltering = false; $scope.gridOptions2.enableGridMenu = false; $scope.gridOptions2.showGridFooter = true; $scope.gridOptions2.showColumnFooter = false; $scope.gridOptions2.fastWatch = true; $scope.gridOptions2.useExternalFiltering = true; $scope.gridOptions2.useExternalPagination = true; $scope.gridOptions2.paginationPageSizes = [10]; $scope.gridOptions2.paginationPageSize = 10; $scope.gridOptions2.multiSelect = false; // $scope.gridOptions.rowTemplate = "
"; $scope.modelcons = {}; $scope.modelass = {}; $scope.myData2all = []; $scope.myData1all = []; $scope.memoryfilterDatagui = { idx: 0, sum: 10, }; setInterval(function () { if ($scope.model.assets) { if ( $scope.model.assets != $scope.modelass && typeof $scope.model.assets == "string" ) { $scope.modelass = $scope.model.assets; if (JSON.stringify($scope.model.assets) == "{}") { $scope.model.assets = []; } else { $scope.model.assets = JSON.parse($scope.model.assets); } // $scope.myData1 = $scope.model.assets; // for (var i = 0; i < $scope.myData1.length; i++) { // $scope.myData1[i]['item'] = i + 1 + $scope.memoryfilterData.idx * 10 // } $scope.myData1all = $scope.model.assets; for (var i = 0; i < $scope.myData1all.length; i++) { $scope.myData1all[i]["item"] = i + 1 + $scope.memoryfilterDatagui.idx * 10; } $scope.gridOptions1["totalItems"] = $scope.myData1all.length; $scope.myData1 = $scope.interceptMydata($scope.myData1all, 0, 10); } } if ($scope.model.consumables) { if ( $scope.model.consumables != $scope.modelcons && typeof $scope.model.consumables == "string" ) { $scope.modelass = $scope.model.consumables; if (JSON.stringify($scope.model.consumables) == "{}") { $scope.model.consumables = []; } else { $scope.model.consumables = JSON.parse($scope.model.consumables); } // $scope.myData2 = $scope.model.consumables; // for (var i = 0; i < $scope.myData2.length; i++) { // $scope.myData2[i]['item'] = i + 1 + $scope.memoryfilterData.idx * 10 // } $scope.myData2all = $scope.model.consumables; for (var i = 0; i < $scope.myData2all.length; i++) { $scope.myData2all[i]["item"] = i + 1 + $scope.memoryfilterDatagui.idx * 10; } $scope.gridOptions2["totalItems"] = $scope.myData2all.length; $scope.myData2 = $scope.interceptMydata($scope.myData2all, 0, 10); // $scope.model.consumables = $scope.myData2all; } } }, 100); $scope.gridOptions2.columnDefs = [ { name: "item", displayName: "序号", width: 120, }, { name: "name", displayName: "耗材名称", width: 180, enableFiltering: false, }, { name: "model", displayName: "品牌/型号", width: 180, enableFiltering: false, }, { name: "Specifications", displayName: "规格", width: 150, enableFiltering: false, }, { name: "sum", width: 150, displayName: "数量", enableFiltering: false, }, { name: "操作", cellTemplate: '
' + '修改数量' + "
", enableFiltering: false, }, ]; // $scope.selectButtonClick $scope.gridOptions2.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { // var filtersData = $scope.memoryfilterDatagui; // filtersData.idx = newPage - 1; // filtersData.sum = pageSize; $scope.memoryfilterDatagui.idx = newPage - 1; $scope.memoryfilterDatagui.sum = pageSize; $scope.myData2 = $scope.interceptMydata( $scope.myData2all, $scope.memoryfilterDatagui.idx, 10 ); } ); gridApi.selection.on.rowSelectionChanged($scope, function (data) { $scope.selected.items = data.entity; //console.log(data); }); gridApi.selection.on.rowSelectionChangedBatch( $scope, function (data) { $scope.selected.items = data.entity; //console.log(data); } ); gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 10, }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { // console.log("item.filters[0]=" + JSON.stringify(item.filters)); if ( angular.isDefined(item.filters[0].term) && item.filters[0].term != "" ) { if (angular.isUndefined(filtersData["user"])) { filtersData["user"] = {}; } filtersData["user"][item.field] = item.filters[0].term; } } }); $scope.memoryfilterData = filtersData; $scope.loadData(filtersData); }); }; $scope.changecai = function (item) { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/changehaocai.html", controller: function ($scope, $modalInstance) { $scope.title = "修改耗材数量"; $scope.consumptive = angular.copy(item); // $scope.consumptive = item; $scope.maxsum = item.inventoryNum; $scope.clearNoNum = function (obj, attr) { //先把非数字的都替换掉,除了数字和. obj[attr] = obj[attr].replace(/[^\d.]/g, ""); //必须保证第一个为数字而不是. obj[attr] = obj[attr].replace(/^\./g, ""); //保证只有出现一个.而没有多个. obj[attr] = obj[attr].replace(/\.{2,}/g, ""); //保证.只出现一次,而不能出现两次以上 obj[attr] = obj[attr] .replace(".", "$#$") .replace(/\./g, "") .replace("$#$", "."); //小于最大值 // if ($scope.maxsum && parseInt(obj[attr]) > $scope.maxsum) { // alert('输入数据超过库存数量' + $scope.maxsum + ',请重新输入!'); // obj[attr] = ''; // } }; $scope.ok = function () { $modalInstance.close($scope.consumptive); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", }); modalInstance.result.then(function (selectedItem) { angular.forEach($scope.myData2all, function (items, index) { // if (items.id == selectedItem.id) { if ( items.modelid == selectedItem.modelid && items.nameid == selectedItem.nameid && items.Specificationsid == selectedItem.Specificationsid ) { angular.extend($scope.myData2all[index], selectedItem); } }); // $scope.model.consumables = $scope.myData2; // $scope.myData2 = $scope.model.consumables; // $scope.myData2all.push(selectedItem); // for (var i = 0; i < $scope.myData2all.length; i++) { // $scope.myData2all[i]['item'] = i + 1 + $scope.memoryfilterDatagui.idx * 10 // } $scope.gridOptions2["totalItems"] = $scope.myData2all.length; $scope.myData2 = $scope.interceptMydata( $scope.myData2all, $scope.memoryfilterDatagui.idx, 10 ); $scope.model.consumables = $scope.myData2all; $scope.$parent.$parent.$parent.model.applicationForm.consumables = $scope.model.consumables; }); }; $scope.interceptMydata = function (mydate, idx, sum) { return mydate.slice(idx * sum, (idx + 1) * sum); }; $scope.haocaiadd = function () { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/add_haocai.html", controller: function ( $scope, scope, $modalInstance, api_wechatfile, SweetAlert ) { $scope.haocainame = []; $scope.pinpai = []; $scope.guige = []; $scope.consumptive = {}; $scope.consumptiveall = {}; $scope.title = "添加耗材"; api_wechatfile .getDictionaryForList({ key: "haocaifenlei", }) .then(function (data) { $scope.haocainame = data; }); $scope.clearNoNum = function (obj, attr) { //先把非数字的都替换掉,除了数字和. obj[attr] = obj[attr].replace(/[^\d.]/g, ""); //必须保证第一个为数字而不是. obj[attr] = obj[attr].replace(/^\./g, ""); //保证只有出现一个.而没有多个. obj[attr] = obj[attr].replace(/\.{2,}/g, ""); //保证.只出现一次,而不能出现两次以上 obj[attr] = obj[attr] .replace(".", "$#$") .replace(/\./g, "") .replace("$#$", "."); //小于最大值 if ($scope.maxsum && parseInt(obj[attr]) > $scope.maxsum) { alert( "输入数据超过库存数量" + $scope.maxsum + ",请重新输入!" ); obj[attr] = ""; } }; $scope.onChange = function (parent) { $scope.consumptive.model = {}; $scope.consumptive.Specifications = {}; api_wechatfile .getDictionaryForList({ key: "pinpai", parent: parent.id, }) .then(function (data) { $scope.pinpai = data; }); api_wechatfile .getDictionaryForList({ key: "guige", parent: parent.id, }) .then(function (data) { $scope.guige = data; }); }; // $scope.onChangesum = function(item) { // if (item.name && item.model && item.model.id && item.Specifications && item.Specifications.id) { // var data1 = { "idx": 0, "sum": 10, "consumable": { "name": item.name.name, "model": item.model.name, "Specifications": item.Specifications.name } } // $scope.consumptiveall = data1; // // api_cmdb3.fetchDataList('consumable', data1).then(function(data) { // // if (data.list && data.list.length != 0) { // // var myData = data.list; // // $scope.consumptiveall = myData[0]; // // $scope.maxsum = myData[0].inventoryNum; // // } else if (data.list && data.list.length == 0) { // // SweetAlert.swal({ // // title: "库存数据存在问题!", // // text: "请检查库存数据!", // // type: "error" // // }); // // } // // }); // } // } $scope.addhaocai = function () { $modalInstance.dismiss("cancel"); scope.haocaiopen($scope.consumptive); }; $scope.ok = function (item) { var submittrue = true; // var data = { "id": item.model.id, "name": item.name.name, "model": item.model.name, "Specifications": item.Specifications.name, "sum": item.sum } var data = { modelid: item.model.id, nameid: item.name.id, Specificationsid: item.Specifications.id, name: item.name.name, model: item.model.name, Specifications: item.Specifications.name, sum: item.sum, }; if ( item.name && item.model && JSON.stringify(item.model) != "{}" && item.Specifications && JSON.stringify(item.Specifications) != "{}" && item.sum ) { // $modalInstance.close(data); angular.forEach(scope.myData2all, function (itemsdata) { // if (item.model.id == itemsdata.id) { if ( item.model.id == itemsdata.modelid && item.name.id == itemsdata.nameid && item.Specifications.id == itemsdata.Specificationsid ) { submittrue = false; } }); if (submittrue) { $modalInstance.close(data); } else { SweetAlert.swal({ title: "该耗材已有添加", text: "请检查数据然后提交!", type: "error", }); } } else { SweetAlert.swal({ title: "数据填写不完整!", text: "请检查数据然后提交!", type: "error", }); } }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, }, }); modalInstance.result.then(function (selectedItem) { // $scope.myData2.push(selectedItem); // for (var i = 0; i < $scope.myData2.length; i++) { // $scope.myData2[i]['item'] = i + 1 + $scope.memoryfilterData.idx * 10 // } // $scope.model.consumables = $scope.myData2; $scope.myData2all.push(selectedItem); for (var i = 0; i < $scope.myData2all.length; i++) { // $scope.myData2all[i]['item'] = i + 1 + $scope.memoryfilterDatagui.idx * 10 $scope.myData2all[i]["item"] = i + 1; } $scope.gridOptions2["totalItems"] = $scope.myData2all.length; $scope.myData2 = $scope.interceptMydata( $scope.myData2all, $scope.memoryfilterDatagui.idx, 10 ); $scope.model.consumables = $scope.myData2all; $scope.$parent.$parent.$parent.model.applicationForm.consumables = $scope.model.consumables; }); }; $scope.onDblClick = function (data, event) { $scope.selectButtonClick(data, event); }; $scope.memoryfilterData = { idx: 0, sum: 20, user: { roledata: { rolecode: "roleset", }, selectType: "1", }, }; $scope.myData = {}; $scope.loadData = function (filterData) { }; // $scope.title = title; $scope.loadData({ idx: 0, sum: 20, user: { roledata: { rolecode: "roleset", }, selectType: "1", }, }); $scope.selected = { items: {}, }; }, ], }); //tab 列表 formlyConfigProvider.setType({ name: "ui-cmdbtab", templateUrl: "assets/views/customform/tpl/cmdb/ui-cmdbtab.html", wrapper: ["bootstrapHasError"], defaultOptions: function (options, $scope) { return { templateOptions: {}, }; }, controller: [ "$scope", "api_user_data", "i18nService", "$modal", "api_cmdb", function ($scope, api_user_data, i18nService, $modal, api_cmdb) { $scope.memoryfilterDatashe = { idx: 0, sum: 10, }; $scope.myDataoneall = []; var setAllInactive = function () { angular.forEach($scope.workspaces, function (workspace) { workspace.active = false; }); }; //添加 var addNewWorkspace = function (name, contentUrl) { var id = $scope.workspaces.length + 1; $scope.workspaces.push({ id: id, name: name, active: true, contentUrl: "main/html/content.html", }); }; //关闭 $scope.remove = function (closedata) { event.preventDefault(); angular.forEach($scope.workspaces, function (item, index) { if (closedata.id == item.id) { if (closedata.id == 1) { $scope.$parent.$parent.$parent.model.gettype.gu = false; } else { $scope.$parent.$parent.$parent.model.gettype.hao = false; } $scope.workspaces.splice(index, 1); } }); }; $scope.workspaces = []; $scope.options.templateOptions.getpush = function (item) { $scope.workspaces = []; if (item.gu) { $scope.workspaces.push({ id: 1, name: "领用设备", active: true, contentUrl: "assets/views/customform/tpl/cmdb/shebei.html", }); } if (item.hao) { $scope.workspaces.push({ id: 2, name: "领用耗材", active: true, contentUrl: "assets/views/customform/tpl/cmdb/haocai.html", }); } $scope.options.templateOptions.workspaces = $scope.workspaces; }; $scope.addWorkspace = function (contentUrl, name) { setAllInactive(); addNewWorkspace(name, contentUrl); }; // $rootScope.addWorkspace = $scope.addWorkspace; // $scope.remove = function(idNumber) { // var index = 0; //记录当前元素下标 // angular.forEach($scope.workspaces, function(workspace) { // if (workspace.id === idNumber.id) { // $scope.workspaces.splice(index, 1); //删除当前下标的选项卡元素 // } // index++; // }); // }; // setInterval(function() { // if ($scope.model.assets) { // if ($scope.model.assets != $scope.modelass && typeof($scope.model.assets) == 'string') { // $scope.modelass = $scope.model.assets; // if (JSON.stringify($scope.model.assets) == "{}") { // $scope.model.assets = [] // } else { // $scope.model.assets = JSON.parse($scope.model.assets); // } // $scope.myDatalingbeiall = $scope.model.assets; // for (var i = 0; i < $scope.myDatalingbeiall.length; i++) { // $scope.myDatalingbeiall[i]['item'] = i + 1 + $scope.memoryfilterDatagui.idx * 10 // } // $scope.gridOptions1['totalItems'] = $scope.myDatalingbeiall.length; // $scope.myDatalingbei = $scope.interceptMydata($scope.myDatalingbeiall, 0, 10) // } // } // if ($scope.model.consumables) { // if ($scope.model.consumables != $scope.modelcons && typeof($scope.model.consumables) == 'string') { // $scope.modelass = $scope.model.consumables; // if (JSON.stringify($scope.model.consumables) == "{}") { // $scope.model.consumables = []; // } else { // $scope.model.consumables = JSON.parse($scope.model.consumables); // } // $scope.myDatalingbeiall = $scope.model.consumables; // for (var i = 0; i < $scope.myDatalingbeiall.length; i++) { // $scope.myDatalingbeiall[i]['item'] = i + 1 + $scope.memoryfilterDatagui.idx * 10 // } // $scope.gridOptions2['totalItems'] = $scope.myDatalingbeiall.length; // $scope.myDatatwo = $scope.interceptMydata($scope.myDatalingbeiall, 0, 10) // // $scope.model.consumables = $scope.myData2all; // } // } // }, 100); //grid1 $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions1 = {}; $scope.gridOptions1.data = "myDatalingbei"; $scope.gridOptions1.enableColumnResizing = true; $scope.gridOptions1.enableFiltering = false; $scope.gridOptions1.enableGridMenu = false; $scope.gridOptions1.showGridFooter = true; $scope.gridOptions1.showColumnFooter = false; $scope.gridOptions1.fastWatch = true; $scope.gridOptions1.useExternalFiltering = true; $scope.gridOptions1.useExternalPagination = true; $scope.gridOptions1.paginationPageSizes = [10]; $scope.gridOptions1.paginationPageSize = 10; $scope.gridOptions1.multiSelect = false; // $scope.gridOptions.rowTemplate = "
"; $scope.gridOptions1.columnDefs = [ { name: "item", displayName: "序号", width: 120, }, { name: "props.hw_cifilterClassic", displayName: "设备类型", width: 150, enableFiltering: false, }, { name: "props.hw_mingcheng", displayName: "设备名称", width: 100, enableFiltering: false, }, { name: "uuid", displayName: "设备编号", enableFiltering: false, }, ]; $scope.myDatalingbeiall = []; $scope.gridOptions1.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { // var filtersData = $scope.memoryfilterData; // filtersData.idx = newPage - 1; // filtersData.sum = pageSize; // $scope.loadData(filtersData); $scope.memoryfilterDatashe.idx = newPage - 1; $scope.memoryfilterDatashe.sum = pageSize; $scope.myDatalingbei = $scope.interceptMydata( $scope.myDatalingbeiall, $scope.memoryfilterDatashe.idx, 10 ); } ); gridApi.selection.on.rowSelectionChanged($scope, function (data) { $scope.selected.items = data.entity; //console.log(data); }); gridApi.selection.on.rowSelectionChangedBatch( $scope, function (data) { $scope.selected.items = data.entity; //console.log(data); } ); gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 20, user: { roledata: { rolecode: "roleset", }, selectType: "1", }, }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { // console.log("item.filters[0]=" + JSON.stringify(item.filters)); if ( angular.isDefined(item.filters[0].term) && item.filters[0].term != "" ) { if (angular.isUndefined(filtersData["user"])) { filtersData["user"] = {}; } filtersData["user"][item.field] = item.filters[0].term; } } }); $scope.memoryfilterDatashe = filtersData; // $scope.loadData(filtersData); }); }; $scope.interceptMydata = function (mydate, idx, sum) { return mydate.slice(idx * sum, (idx + 1) * sum); }; $scope.removeshebei = function (item) { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/delete.html", controller: function ($scope, $modalInstance, scope) { $scope.title = "设备移除"; $scope.connect = "确定要移除此设备?"; $scope.consumptive = scope.selected.items; $scope.ok = function () { $modalInstance.close($scope.consumptive); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, }, }); modalInstance.result.then(function (selectedItem) { angular.forEach($scope.myDatalingbeiall, function (items, index) { if (items.id == selectedItem.id) { $scope.myDatalingbeiall.splice(index, 1); } }); // $scope.myData3.push(selectedItem); $scope.model.consumables = $scope.myDatalingbeiall; $scope.$parent.$parent.$parent.model.applicationForm.consumables = $scope.myDatalingbeiall; $scope.gridOptions1["totalItems"] = $scope.myDatalingbeiall.length; for (var i = 0; i < $scope.myDatalingbeiall.length; i++) { $scope.myDatalingbeiall[i]["item"] = i + 1 + $scope.memoryfilterDatashe.idx * $scope.memoryfilterDatashe.sum; } $scope.myDatalingbei = $scope.interceptMydata( $scope.myDatalingbeiall, 0, 10 ); }); }; $scope.addshebei = function () { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/add_shebei.html", controller: function ( $scope, i18nService, $modalInstance, items, title, Restangular, APIService, onDataCallback, parentScope, api_configure_data, api_configure_form ) { $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myDatatwo"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = false; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = true; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; // $scope.gridOptions.rowTemplate = "
"; $scope.gridOptions.columnDefs = [ { name: "item", displayName: "序号", width: 80, enableFiltering: false, }, { name: "uuid", displayName: "内部编号", width: 175, }, { name: "props.hw_mingcheng", displayName: "资产名称", width: 120, }, { name: "props.hw_cifilterClassic", displayName: "资产类型", width: 80, enableFiltering: false, }, // { name: 'type', displayName: '资产型号', width: 100, enableFiltering: false }, { name: "props.hw_state", displayName: "资产状态", width: 150, enableFiltering: false, }, { name: "props.hwnw_area", displayName: "资产地点", width: 130, enableFiltering: false, }, { name: "createtime", displayName: "申请时间", enableFiltering: false, }, ]; // $scope.selectButtonClick var defaultFilterData = { // "assignee":2, // "sign":"basehwitndl", // "applicationForm": { "hw_state": "在线" }, hw_state: "在库", idx: 0, sum: 10, }; $scope.memoryfilterData = { // "assignee":2, // "sign":"basehwitndl", // "applicationForm": { "hw_state": "在线" }, hw_state: "在库", idx: 0, sum: 10, }; $scope.refreshData = function (style, filterData) { if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } $scope.myDatatwo = []; // $scope.gridOptions['sum']=filterData.sum; api_cmdb.query(filterData).then( function (data) { // $scope.callsPending--; var filterData = $scope.memoryfilterData; var myDatatwo = Restangular.stripRestangular(data); $scope.gridOptions["totalItems"] = data.total; for (var i = 0; i < myDatatwo.data.node.length; i++) { myDatatwo.data.node[i].createtime = moment( myDatatwo.data.node[i].createtime ).format("YYYY-MM-DD"); } $scope.myDatatwo = myDatatwo.data.node; for (var i = 0; i < $scope.myDatatwo.length; i++) { $scope.myDatatwo[i]["item"] = i + 1 + filterData.idx * filterData.sum; } }, function () { } ); }; $scope.refreshData("expand-right", defaultFilterData); $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { var filtersData = $scope.memoryfilterData; filtersData.idx = newPage - 1; filtersData.sum = pageSize; // $scope.loadData(filtersData); $scope.refreshData("expand-right", filtersData); //console.log(pageSize); // $scope.loadData({"idx":newPage-1,"sum":pageSize}); } ); // gridApi.selection.on.rowSelectionChanged($scope, function(data) { // $scope.selected.items.push(data.entity); //console.log(data); gridApi.selection.on.rowSelectionChanged( $scope, function (scope, ect) { if (scope.isSelected) { scope.grid.appScope.selected.items.push(scope.entity); } else { for ( var i = 0; i <= scope.grid.appScope.selected.items.length; i++ ) { if ( scope.grid.appScope.selected.items[i].id == scope.entity.id ) { scope.grid.appScope.selected.items.splice(i, 1); break; } } } $scope.mySelectedRows = $scope.gridApi.selection.getSelectedRows(); } ); // }); gridApi.selection.on.rowSelectionChangedBatch( $scope, function (rows) { // $scope.selected.items = data.entity; //console.log(data); var selectitem = []; selectitem = angular.copy($scope.selected.items); for (var j = 0; j < rows.length; j++) { if (rows[j].isSelected == true) { selectitem.push(rows[j].entity); } else { delete selectitem[j]; // rows.splice(j, 1); } } $scope.selected.items = []; for (var i = 0; i < selectitem.length; i++) { if (selectitem[i]) { $scope.selected.items.push(selectitem[i]); } } } ); // gridApi.selection.on.selectAllRows = function(row) { //GridRow // // if (row.entity.age > 45) { // row.grid.api.selection.selectRow(row.entity); // 选中行 // // } // }; gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 10, user: { roledata: { rolecode: "roleset", }, selectType: "1", }, }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { // console.log("item.filters[0]=" + JSON.stringify(item.filters)); if ( angular.isDefined(item.filters[0].term) && item.filters[0].term != "" ) { if (angular.isUndefined(filtersData["user"])) { filtersData["user"] = {}; } filtersData["user"][item.field] = item.filters[0].term; } } }); $scope.memoryfilterData = filtersData; // $scope.loadData(filtersData); }); }; $scope.onDblClick = function (data, event) { // $scope.selected.items = data.entity; $scope.selectButtonClick(data, event); }; // $scope.loadData = function(filterData) { // // console.log("filtersData=111" + JSON.stringify(filterData)) // items.fetchItems(filterData, APIService).then(function(data) { // var myDatatwo = Restangular.stripRestangular(data); // $scope.gridOptions.totalItems = myDatatwo.totalNum; // $scope.myDatatwo = myDatatwo.list; // }); // }; $scope.title = title; //树形图 var apple_selected, tree, treedata_avm, treedata_geography; $scope.my_tree_handler = function (branch) { //var _ref; var classify = ($scope.classify = branch.prefix.toLowerCase() + branch.sign); api_cmdb .query({ sign: classify, }) .then(function (data) { var myDatalingbei = Restangular.stripRestangular(data); // console.log(myData.data.node); if (myDatalingbei.data && myDatalingbei.status == 200) { var ret = myDatalingbei.data; redrawSvg(myDatalingbei); } }); }; $scope.my_data = []; function convertListToTree(data, treeMap) { var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = null; //Initially set our loop to null var parentNode = null; //loop over data for (var i = 0; i < data.length; i++) { var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent idToNodeMap[datum.id] = datum; //Does this node have a parent? if ( typeof datum.parent === "undefined" || datum.parent == null ) { //Doesn't look like it, so this node is the root of the tree root = datum; treeMap[datum.id] = root; } else { //This node has a parent, so let's look it up using the id parentNode = idToNodeMap[datum.parent.id]; //We don't need this property, so let's delete it. delete datum.parent; //Let's add the current node as a child of the parent node. parentNode.children.push(datum); } } return root; } function convertParentToChildList(data) { var treeMap = {}; var list = []; convertListToTree(data, treeMap); angular.forEach(treeMap, function (item) { list.push(item); }); return list; } $scope.my_tree = tree = {}; $scope.try_async_load = function () { $scope.my_data = []; $scope.select_treedata = []; $scope.doing_async = true; api_configure_data .fetchDataList("ciclassify", { idx: 0, sum: 100, }) .then(function (result) { //console.log(result['list']); $scope.select_treedata = $scope.my_data = convertParentToChildList(result["list"]); $scope.doing_async = false; // tree.expand_all(); //console.log(treelist); }); }; $scope.select_treedata = []; $scope.propTypeOptions = []; $scope.try_async_load(); $scope.onFilterremove = function (item) { console.log(item); }; $scope.searchdata = {}; $scope.clear = function () { $scope.searchdata = {}; $scope.cifilter_classic = {}; $scope.try_async_load(); var fildata = { idx: 0, sum: 10, hw_state: "在库", }; $scope.memoryfilterData = fildata; $scope.refreshData("expand-right", fildata); }; $scope.cifilter_classic = {}; $scope.chiceIncident = function (item) { var fildata = defaultFilterData; // fildata.applicationForm = {}; // sign: basehwnwswt if (item && item.id) { var classify = item.prefix.toLowerCase() + item.sign; fildata.sign = classify; } else { delete fildata.sign; } $scope.gridOptions.paginationCurrentPage = 1; var transitiondata = angular.copy(item); $scope.refreshData("expand-right", fildata); }; $scope.applicadata = []; $scope.onFilterCallback = function (item) { var tempclassify = item.prefix.toLowerCase() + item.sign; api_configure_form .renderTabForm(tempclassify) .then(function (data) { var myData = Restangular.stripRestangular(data); $scope.applicadata = myData[0].form.fields; }); // } }; // $scope.loadData({ // idx: 0, // sum: 10, // "user": { "roledata": { "rolecode": "roleset" }, "selectType": "1" } // }); $scope.selected = { items: [], }; $scope.ok = function () { // if(onDataCallback&&angular.isFunction(onDataCallback)){ // onDataCallback($scope.selected.item, parentScope); // } $modalInstance.close($scope.selected.items); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "lg", resolve: { items: function () { return { fetchItems: function (filterData, APIService) { filterData = filterData || {}; if ( angular.isDefined(filterData.idx) && filterData.idx == null ) { filterData = { idx: 0, sum: 10, user: { roledata: { rolecode: "roleset", }, selectType: "1", }, }; } return $scope.options.templateOptions.fetchItems( filterData, APIService ); }, }; }, title: function () { return $scope.options.templateOptions.label; }, Restangular: function () { return $scope.options.templateOptions.Restangular; }, APIService: function () { return $scope.options.templateOptions.ApiService; }, onDataCallback: function () { return $scope.options.templateOptions.callback; }, parentScope: function () { return $scope.options.templateOptions.that; }, }, }); modalInstance.result.then( function (selectedItem) { // console.log(selectedItem); // options.value(selectedItem); var filterData = $scope.memoryfilterDatashe; $scope.myDatalingbeiall = selectedItem; $scope.gridOptions1["totalItems"] = $scope.myDatalingbeiall.length; for (var i = 0; i < $scope.myDatalingbeiall.length; i++) { $scope.myDatalingbeiall[i]["item"] = i + 1 + filterData.idx * filterData.sum; } $scope.myDatalingbei = $scope.interceptMydata( $scope.myDatalingbeiall, 0, 10 ); $scope.model.assets = $scope.myDatalingbeiall; $scope.$parent.$parent.$parent.model.applicationForm.assets = $scope.myDatalingbeiall; // if (options.templateOptions.callback && angular.isFunction(options.templateOptions.callback)) { // options.templateOptions.callback(selectedItem, options.templateOptions.that); // } // if (options.templateOptions.linkData && angular.isFunction(options.templateOptions.linkData)) { // options.templateOptions.linkData(selectedItem, options.templateOptions.that); // } }, function () { //console.log('Modal dismissed at: ' + new Date()); } ); }; $scope.onDblClick = function (data, event) { $scope.selectButtonClick(data, event); }; // $scope.loadData = function(filterData) {}; // $scope.title = title; // $scope.loadData({ // idx: 0, // sum: 20, // "user": { "roledata": { "rolecode": "roleset" }, "selectType": "1" } // }); $scope.selected = { items: [], }; //grid2 $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions2 = {}; $scope.gridOptions2.data = "myDataone"; $scope.gridOptions2.enableColumnResizing = true; $scope.gridOptions2.enableFiltering = false; $scope.gridOptions2.enableGridMenu = false; $scope.gridOptions2.showGridFooter = true; $scope.gridOptions2.showColumnFooter = false; $scope.gridOptions2.fastWatch = true; $scope.gridOptions2.useExternalFiltering = true; $scope.gridOptions2.useExternalPagination = true; $scope.gridOptions2.paginationPageSizes = [10]; $scope.gridOptions2.paginationPageSize = 10; $scope.gridOptions2.multiSelect = false; // $scope.gridOptions.rowTemplate = "
"; $scope.gridOptions2.columnDefs = [ { name: "item", displayName: "序号", width: 120, }, { name: "name", displayName: "耗材名称", width: 150, enableFiltering: false, }, { name: "model", displayName: "品牌/型号", width: 100, enableFiltering: false, }, { name: "Specifications", displayName: "规格", width: 150, enableFiltering: false, }, { name: "sum", displayName: "领用数量", enableFiltering: false, }, ]; // $scope.selectButtonClick $scope.gridOptions2.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { // var filtersData = $scope.memoryfilterData; // filtersData.idx = newPage - 1; // filtersData.sum = pageSize; // $scope.loadData(filtersData); $scope.memoryfilterDatahao.idx = newPage - 1; $scope.memoryfilterDatahao.sum = pageSize; $scope.myDataone = $scope.interceptMydata( $scope.myDataoneall, $scope.memoryfilterDatahao.idx, 10 ); } ); gridApi.selection.on.rowSelectionChanged($scope, function (data) { $scope.selected.items.push(data.entity); //console.log(data); }); gridApi.selection.on.rowSelectionChangedBatch( $scope, function (data) { $scope.selected.items.push(data.entity); //console.log(data); } ); gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 10, user: { roledata: { rolecode: "roleset", }, selectType: "1", }, }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { // console.log("item.filters[0]=" + JSON.stringify(item.filters)); if ( angular.isDefined(item.filters[0].term) && item.filters[0].term != "" ) { if (angular.isUndefined(filtersData["user"])) { filtersData["user"] = {}; } filtersData["user"][item.field] = item.filters[0].term; } } }); $scope.memoryfilterDatahao = filtersData; $scope.loadData(filtersData); }); }; $scope.removehaocai = function (item) { event.preventDefault(); // var modalInstance = $modal.open({ // templateUrl: 'assets/views/customform/tpl/cmdb/changehaocai.html', // controller: function($scope, $modalInstance) { // $scope.title = "修改耗材数量"; // $scope.consumptive = item; // $scope.ok = function() { // $modalInstance.close($scope.consumptive); // }; // $scope.cancel = function() { // $modalInstance.dismiss('cancel'); // }; // }, // size: 'sm' // }); var modalInstance = $modal.open({ templateUrl: "assets/views/delete.html", controller: function ($scope, $modalInstance, scope) { $scope.title = "耗材移除"; $scope.connect = "确定要移除此设备?"; $scope.consumptive = scope.selected.items[0]; $scope.ok = function () { $modalInstance.close($scope.consumptive); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, }, }); modalInstance.result.then(function (selectedItem) { // angular.forEach($scope.myData3, function(items, index) { // if (items.id == selectedItem.id) { // $scope.myData3[index] = selectedItem; // } // }) // $scope.model.applicationForm.consumables = $scope.myData3; angular.forEach($scope.myDataoneall, function (items, index) { if (items.id == selectedItem.id) { $scope.myDataoneall.splice(index, 1); } }); for (var i = 0; i < $scope.myDataoneall.length; i++) { $scope.myDataoneall[i]["item"] = i + 1 + $scope.memoryfilterDatahao.idx * 10; } $scope.myDataone = $scope.interceptMydata( $scope.myDataoneall, 0, 10 ); $scope.model.consumables = $scope.myDataoneall; $scope.$parent.$parent.$parent.model.applicationForm.consumables = $scope.myDataoneall; $scope.gridOptions2["totalItems"] = $scope.myDataoneall.length; $scope.selected = { items: [], }; }); }; $scope.haocaiadd = function () { event.preventDefault(); var modalInstance = $modal.open({ templateUrl: "assets/views/customform/tpl/cmdb/add_haocai.html", controller: function ( $scope, scope, $modalInstance, api_wechatfile, SweetAlert, api_cmdb3 ) { $scope.haocainame = []; $scope.pinpai = []; $scope.guige = []; $scope.consumptive = {}; $scope.consumpall = {}; $scope.title = "添加耗材"; api_wechatfile .getDictionaryForList({ key: "haocaifenlei", }) .then(function (data) { $scope.haocainame = data; }); $scope.clearNoNum = function (obj, attr) { //先把非数字的都替换掉,除了数字和. obj[attr] = obj[attr].replace(/[^\d.]/g, ""); //必须保证第一个为数字而不是. obj[attr] = obj[attr].replace(/^\./g, ""); //保证只有出现一个.而没有多个. obj[attr] = obj[attr].replace(/\.{2,}/g, ""); //保证.只出现一次,而不能出现两次以上 obj[attr] = obj[attr] .replace(".", "$#$") .replace(/\./g, "") .replace("$#$", "."); //小于最大值 if ($scope.maxsum && parseInt(obj[attr]) > $scope.maxsum) { alert( "输入数据超过库存数量" + $scope.maxsum + ",请重新输入!" ); obj[attr] = ""; } }; $scope.onChange = function (parent) { $scope.consumptive.model = {}; $scope.consumptive.Specifications = {}; api_wechatfile .getDictionaryForList({ key: "pinpai", parent: parent.id, }) .then(function (data) { $scope.pinpai = data; }); api_wechatfile .getDictionaryForList({ key: "guige", parent: parent.id, }) .then(function (data) { $scope.guige = data; }); }; $scope.onChangesum = function (item) { if (item.name && item.model.id && item.Specifications.id) { $scope.consumptive.sum = ""; var data1 = { idx: 0, sum: 10, consumable: { name: item.name.name, brandModel: item.model.name, specification: item.Specifications.name, }, }; api_cmdb3 .fetchDataList("consumable", data1) .then(function (data) { if (data.status == 200 && data.list.length > 0) { var myData = data.list; $scope.consumpall = myData[0]; $scope.maxsum = myData[0].inventoryNum; } else { SweetAlert.swal({ title: "不存在该耗材", text: "请检查库存后重新填写!", type: "error", }); } }); } }; $scope.addhaocai = function () { $modalInstance.dismiss("cancel"); scope.haocaiopen($scope.consumptive); }; $scope.ok = function (item) { var items = {}; // if (item.name && item.model && item.Specifications && item.sum) { // // items = { "name": item.name.name, "model": item.model.name, "Specifications": item.Specifications.name, "sum": item.sum } // $scope.consumpall.model = $scope.consumpall.brandModel; // $scope.consumpall.Specifications = $scope.consumpall.specification; // $scope.consumpall.sum = item.sum; // delete $scope.consumpall.brandModel; // delete $scope.consumpall.specification; // $modalInstance.close($scope.consumpall); // } else { // SweetAlert.swal({ // title: "数据填写不完整!", // text: "请检查数据然后提交!", // type: "error" // }); // } var isold = false; if ( item.name && item.model && JSON.stringify(item.model) != "{}" && item.Specifications && JSON.stringify(item.Specifications) != "{}" && item.sum ) { for (var i = 0; i < scope.myDataoneall.length; i++) { if (scope.myDataoneall[i].id == $scope.consumpall.id) { isold = true; } } if (isold) { SweetAlert.swal({ title: "该耗材已添加!", text: "请不要重复添加耗材!", type: "error", }); } else { $scope.consumpall.model = $scope.consumpall.brandModel; $scope.consumpall.Specifications = $scope.consumpall.specification; $scope.consumpall.sum = item.sum; delete $scope.consumpall.brandModel; delete $scope.consumpall.specification; $modalInstance.close($scope.consumpall); } } else { SweetAlert.swal({ title: "数据填写不完整!", text: "请检查数据然后提交!", type: "error", }); } // $modalInstance.close(item); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, }, }); modalInstance.result.then(function (selectedItem) { $scope.myDataoneall.push(selectedItem); for (var i = 0; i < $scope.myDataoneall.length; i++) { $scope.myDataoneall[i]["item"] = i + 1 + $scope.memoryfilterDatahao.idx * 10; } // $scope.model.consumables = $scope.myDataone; $scope.gridOptions2["totalItems"] = $scope.myDataoneall.length; $scope.myDataone = $scope.interceptMydata( $scope.myDataoneall, 0, 10 ); $scope.model.consumables = $scope.myDataoneall; $scope.$parent.$parent.$parent.model.applicationForm.consumables = $scope.myDataoneall; }); }; $scope.onDblClick = function (data, event) { $scope.selectButtonClick(data, event); }; $scope.memoryfilterDatahao = { idx: 0, sum: 10, // "user": { "roledata": { "rolecode": "roleset" }, "selectType": "1" } }; $scope.myDataone = []; $scope.loadData = function (filterData) { }; // $scope.title = title; $scope.ldloading = {}; $scope.selected = { items: [], }; if ($scope.$parent.$parent.$parent.model.gettype) { if ($scope.$parent.$parent.$parent.model.gettype.hao == "true") { if ($scope.model.assets) { if (JSON.stringify($scope.model.assets) == "{}") { $scope.model.assets = []; } else { $scope.model.assets = JSON.parse($scope.model.assets); } $scope.myDatalingbeiall = $scope.model.assets; for (var i = 0; i < $scope.myDatalingbeiall.length; i++) { $scope.myDatalingbeiall[i]["item"] = i + 1 + $scope.memoryfilterDatashe.idx * 10; } $scope.gridOptions1["totalItems"] = $scope.myDatalingbeiall.length; $scope.myDatalingbei = $scope.interceptMydata( $scope.myDatalingbeiall, 0, 10 ); } if ($scope.model.consumables) { if (JSON.stringify($scope.model.consumables) == "{}") { $scope.model.consumables = []; } else { $scope.model.consumables = JSON.parse($scope.model.consumables); } $scope.myDataoneall = $scope.model.consumables; for (var i = 0; i < $scope.myDataoneall.length; i++) { $scope.myDataoneall[i]["item"] = i + 1 + $scope.memoryfilterDatahao.idx * 10; } $scope.gridOptions2["totalItems"] = $scope.myDataoneall.length; $scope.myDataone = $scope.interceptMydata( $scope.myDataoneall, 0, 10 ); } if ($scope.$parent.$parent.$parent.model.gettype.gu == "true") { $scope.options.templateOptions.getpush({ hao: true, gu: true, }); } else { $scope.options.templateOptions.getpush({ hao: true, }); } } else { if ($scope.$parent.$parent.$parent.model.gettype.gu == "true") { $scope.options.templateOptions.getpush({ gu: true, }); } } } }, ], }); formlyConfigProvider.setType({ name: "ui-panel", templateUrl: "assets/views/customform/tpl/ui-panel.html", }); formlyConfigProvider.setType({ name: "ui-currentuser", extends: "input", templateUrl: "assets/views/customform/tpl/ui-username.html", defaultOptions: function (options) { return { templateOptions: { // link: function() {} }, }; }, controller: [ "$scope", function ($scope) { if ($scope.options.templateOptions.user) { if (angular.isFunction($scope.options.templateOptions.transform)) { // if ($scope.options.templateOptions.transform($scope.options, $scope.model, $scope.options.templateOptions.user)) { // $scope.$parent.$parent.$parent.model['start_code'] = $scope.options.templateOptions.transform($scope.options, $scope.model, $scope.options.templateOptions.user); // } $scope.$parent.$parent.$parent.model["directClose"] = false; $scope.$parent.$parent.$parent.model["directClose"] = false; $scope.$parent.$parent.$parent.model["isHandlerUser"] = false; } $scope.model[$scope.options.key] = $scope.options.templateOptions.user; $scope.options.initialValue = $scope.model[$scope.options.key]; } }, ], }); //仪表盘 //待处理变更列表 formlyConfigProvider.setType({ name: "ui-ngpchangetable", templateUrl: "assets/views/customform/tpl/ui-ngpchangetable.html", defaultOptions: function (options) { return { templateOptions: { // relationAction: function() { // options.hideExpression = true // } }, }; }, controller: [ "$scope", "$modal", "$timeout", "SweetAlert", "api_bpm_domain", "$rootScope", "ngTableParams", "$filter", "$state", function ( $scope, $modal, $timeout, SweetAlert, api_bpm_domain, $rootScope, ngTableParams, $filter, $state ) { // var filterData = { // "assignee": $rootScope.user.id, // "searchtype": "all", // "idx": "0", // "sum": "10" // }; var filterData = { idx: "0", sum: "10", assignee: 2, searchType: "todo", }; $scope.incidentprocess = function (item) { $state.go("app.wt_change.add", { taskId: item.taskId, processInstanceId: item.processInstanceId, }); }; $scope.more = function () { $state.go("app.wt_change.list", {}); }; api_bpm_domain .fetchtask("bpm_change", filterData) .then(function (data) { if (data.data) { $scope.myData = data.data; } else { SweetAlert.swal({ title: "操作异常!", text: "系统异常,请稍后重试,或者联系管理员!", type: "error", }); } }); $scope.removes = function () { var modalInstance = $modal.open({ templateUrl: "assets/views/delete.html", controller: function ($scope, $modalInstance) { $scope.ok = function () { $modalInstance.close(); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", }); modalInstance.result.then(function () { console.log($scope.$parent.$parent.$parent.$parent); for ( var i = 0; i < $scope.$parent.$parent.$parent.$parent.resonseform.fields.length; i++ ) { if ( $scope.fields.type == $scope.$parent.$parent.$parent.$parent.resonseform.fields[i] .type ) { // $scope.resonseform.fields.push($scope.responseData.fields[i]); $scope.$parent.$parent.$parent.$parent.resonseform.fields.splice( i, 1 ); break; } } var vmForm = $scope.$parent.$parent.$parent.$parent.resonseform; if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); $scope.$parent.$parent.$parent.$parent.decodeVMForm(vmForm); $scope.$parent.$parent.$parent.$parent.vm.fields = vmForm.fields; } }); }; }, ], }); //待处理问题列表 formlyConfigProvider.setType({ name: "ui-ngproblemtable", templateUrl: "assets/views/customform/tpl/ui-ngproblemtable.html", defaultOptions: function (options) { return { templateOptions: { // relationAction: function() { // options.hideExpression = true // } }, }; }, controller: [ "$scope", "$modal", "$timeout", "SweetAlert", "api_bpm_data", "$rootScope", "ngTableParams", "$filter", "$state", function ( $scope, $modal, $timeout, SweetAlert, api_bpm_data, $rootScope, ngTableParams, $filter, $state ) { var filterData = { assignee: $rootScope.user.id, candidateGroups: $rootScope.user.group[0].id, searchtype: "todo", idx: 0, sum: 10, }; $scope.incidentprocess = function (item) { $state.go("app.wt_change.add", { taskId: item.taskId, processInstanceId: item.processInstanceId, }); }; $scope.more = function () { $state.go("app.wt_change.list", {}); }; api_bpm_data .fetchDataList("changeclassify", filterData) .then(function (data) { if (data.data) { $scope.myData = data.data; } else { SweetAlert.swal({ title: "操作异常!", text: "系统异常,请稍后重试,或者联系管理员!", type: "error", }); } }); $scope.removes = function () { var modalInstance = $modal.open({ templateUrl: "assets/views/delete.html", controller: function ($scope, $modalInstance) { $scope.ok = function () { $modalInstance.close(); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", }); modalInstance.result.then(function () { console.log($scope.$parent.$parent.$parent.$parent); for ( var i = 0; i < $scope.$parent.$parent.$parent.$parent.resonseform.fields.length; i++ ) { if ( $scope.fields.type == $scope.$parent.$parent.$parent.$parent.resonseform.fields[i] .type ) { // $scope.resonseform.fields.push($scope.responseData.fields[i]); $scope.$parent.$parent.$parent.$parent.resonseform.fields.splice( i, 1 ); break; } } var vmForm = $scope.$parent.$parent.$parent.$parent.resonseform; if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); $scope.$parent.$parent.$parent.$parent.decodeVMForm(vmForm); $scope.$parent.$parent.$parent.$parent.vm.fields = vmForm.fields; } }); }; }, ], }); //待处理工单列表 formlyConfigProvider.setType({ name: "ui-ngtable", templateUrl: "assets/views/customform/tpl/ui-ngtable.html", defaultOptions: function (options) { return { templateOptions: { // relationAction: function() { // options.hideExpression = true // } }, }; }, controller: [ "$scope", "$modal", "$timeout", "SweetAlert", "api_bpm_domain", "$rootScope", "ngTableParams", "$filter", "$state", function ( $scope, $modal, $timeout, SweetAlert, api_bpm_domain, $rootScope, ngTableParams, $filter, $state ) { var filterData = { assignee: $rootScope.user.id, candidateGroups: $rootScope.user.group[0].id, searchtype: "done", idx: 0, sum: 10, }; $scope.incidentprocess = function (item) { $state.go("app.incident.editor", { taskId: item.taskId, processInstanceId: item.processInstanceId, }); }; $scope.more = function () { $state.go("app.incident.list", {}); }; api_bpm_domain .fetchtask("bpm_incident", filterData) .then(function (data) { if (data.data) { $scope.myData = data.data; } else { SweetAlert.swal({ title: "操作异常!", text: "系统异常,请稍后重试,或者联系管理员!", type: "error", }); } }); $scope.removes = function () { var modalInstance = $modal.open({ templateUrl: "assets/views/delete.html", controller: function ($scope, $modalInstance) { $scope.ok = function () { $modalInstance.close(); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", }); modalInstance.result.then(function () { console.log($scope.$parent.$parent.$parent.$parent); for ( var i = 0; i < $scope.$parent.$parent.$parent.$parent.resonseform.fields.length; i++ ) { if ( $scope.fields.type == $scope.$parent.$parent.$parent.$parent.resonseform.fields[i] .type ) { // $scope.resonseform.fields.push($scope.responseData.fields[i]); $scope.$parent.$parent.$parent.$parent.resonseform.fields.splice( i, 1 ); break; } } var vmForm = $scope.$parent.$parent.$parent.$parent.resonseform; if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); $scope.$parent.$parent.$parent.$parent.decodeVMForm(vmForm); $scope.$parent.$parent.$parent.$parent.vm.fields = vmForm.fields; } }); }; }, ], }); //知识库列表 formlyConfigProvider.setType({ name: "ui-knowledge", templateUrl: "assets/views/customform/tpl/ui-knowledgelist.html", defaultOptions: function (options) { return { templateOptions: { // relationAction: function() { // options.hideExpression = true // } }, }; }, controller: [ "$scope", "$modal", "$timeout", "api_solution", "$rootScope", "ngTableParams", "$filter", "$state", function ( $scope, $modal, $timeout, api_solution, $rootScope, ngTableParams, $filter, $state ) { var filterData = { key: "null", pageIndex: 0, pageSum: 6, status: 0, userId: $rootScope.user.id, }; $scope.model.removereport = false; $scope.removes = function () { $scope.model.removereport = true; }; $scope.more = function () { $state.go("app.knowledge.manager", {}); }; api_solution.findSolutionByKeys(filterData).then(function (data) { if (data.status == 200) { $scope.myData = data.list; } }); $scope.removes = function () { var modalInstance = $modal.open({ templateUrl: "assets/views/delete.html", controller: function ($scope, $modalInstance) { $scope.ok = function () { $modalInstance.close(); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", }); modalInstance.result.then(function () { for ( var i = 0; i < $scope.$parent.$parent.$parent.$parent.resonseform.fields.length; i++ ) { if ( $scope.fields.type == $scope.$parent.$parent.$parent.$parent.resonseform.fields[i] .type ) { // $scope.resonseform.fields.push($scope.responseData.fields[i]); $scope.$parent.$parent.$parent.$parent.resonseform.fields.splice( i, 1 ); break; } } var vmForm = $scope.$parent.$parent.$parent.$parent.resonseform; if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); $scope.$parent.$parent.$parent.$parent.decodeVMForm(vmForm); $scope.$parent.$parent.$parent.$parent.vm.fields = vmForm.fields; } }); }; }, ], }); //公告列表 formlyConfigProvider.setType({ name: "ui-ngnotice", templateUrl: "assets/views/customform/tpl/ui-ngnotice.html", defaultOptions: function (options) { return { templateOptions: { // relationAction: function() { // options.hideExpression = true // } }, }; }, controller: [ "$scope", "$modal", "$timeout", "SweetAlert", "api_user_data", "$rootScope", "ngTableParams", "$filter", "$state", function ( $scope, $modal, $timeout, SweetAlert, api_user_data, $rootScope, ngTableParams, $filter, $state ) { var filterData = { idx: 0, sum: 10, }; // $scope.$scope.model.className = "col-xs-12"; api_user_data.fetchDataList("notice", filterData).then(function (data) { if (data) { $scope.myData = data.data; } else { SweetAlert.swal({ title: "操作异常!", text: "系统异常,请稍后重试,或者联系管理员!", type: "error", }); } }); $scope.more = function () { $state.go("app.system.notice.list", {}); }; $scope.removes = function () { var modalInstance = $modal.open({ templateUrl: "assets/views/delete.html", controller: function ($scope, $modalInstance) { $scope.ok = function () { $modalInstance.close(); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", }); modalInstance.result.then(function () { for ( var i = 0; i < $scope.$parent.$parent.$parent.$parent.resonseform.fields.length; i++ ) { if ( $scope.fields.type == $scope.$parent.$parent.$parent.$parent.resonseform.fields[i] .type ) { // $scope.resonseform.fields.push($scope.responseData.fields[i]); $scope.$parent.$parent.$parent.$parent.resonseform.fields.splice( i, 1 ); break; } } var vmForm = $scope.$parent.$parent.$parent.$parent.resonseform; if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); $scope.$parent.$parent.$parent.$parent.decodeVMForm(vmForm); $scope.$parent.$parent.$parent.$parent.vm.fields = vmForm.fields; } }); }; }, ], }); //事件统计图 formlyConfigProvider.setType({ name: "ui-incidentreport", templateUrl: "assets/views/customform/tpl/ui-incidentreport.html", defaultOptions: function (options) { return { templateOptions: { // relationAction: function() { // options.hideExpression = true // } }, }; }, controller: [ "$scope", "$modal", "moment", "api_report", "$cookieStore", function ($scope, $modal, moment, api_report, $cookieStore) { api_report.getLicenseKey().then(function (response) { $cookieStore.put("Auth-Token", response.token); $scope.try_async_load(); }); $scope.try_async_load = function () { $scope.my_data = []; api_report.list().then(function (response) { var dataList = response; getRepoRoot(dataList, "/homes/home:admin/ITSM报表"); $scope.repoRoot.name = "事件报表"; convertRepoObject($scope.repoRoot); $scope.my_data.push($scope.repoRoot); }); }; var workspace = {}; $scope.repoRoot = null; function getRepoRoot(repo, path) { angular.forEach(repo, function (value, key) { if (value.path == path) { $scope.repoRoot = value; } else { if ( $scope.repoRoot == null && angular.isDefined(value.repoObjects) ) { getRepoRoot(value.repoObjects, path); } else { } } }); } function convertRepoObject(repo) { if (angular.isArray(repo)) { angular.forEach(repo, function (value, key) { convertRepoObject(value); }); } else { if (angular.isDefined(repo.name)) { if (repo.name.indexOf(".") >= 0) { repo.label = repo.name.substr(0, repo.name.lastIndexOf(".")); } else { repo.label = repo.name; } //delete repo.name; } if (angular.isDefined(repo.repoObjects)) { repo.children = []; repo.children = repo.repoObjects; delete repo.repoObjects; convertRepoObject(repo.children); } } } function parseDateParameter(parameters) { var result = undefined; if (angular.isArray(parameters)) { // angular.forEach(parmeters,function(param){ // param. // }) } else { result = {}; for (var k in parameters) { if (k.indexOf("Date") > 0) { if (angular.isString(parameters[k])) { result[k] = moment(parameters[k], "YYYYMMDD").format( "YYYY-MM-DD" ); //result[k] = ''+parameters[k]+'';//= moment(parameters[k], "YYYYMMDD").toDate(); } } } } return result; } function ConvertDateParameter(parameters) { var result = undefined; if (angular.isArray(parameters)) { // } else { result = {}; for (var k in parameters) { if (k.indexOf("Date") > 0) { if (angular.isDate(parameters[k])) { result[k] = moment(parameters[k]).format("YYYYMMDD"); } else if (angular.isString(parameters[k])) { result[k] = parameters[k]; } } } } return result; } var incidentchart = "/homes/home:admin/ITSM报表/事件报表/日统计报表.saiku"; var queryUUID; function genUUID() { var uuid = "xxxxxxxx-xxxx-xxxx-yxxx-xxxxxxxxxxxx" .replace(/[xy]/g, function (c) { var r = (Math.random() * 16) | 0, v = c == "x" ? r : (r & 0x3) | 0x8; return v.toString(16); }) .toUpperCase(); return uuid; } queryUUID = genUUID(); var pathincidenttimekey = []; var incidenttime = { starttimes: moment(new Date().getTime() - 86400000 * 14).format( "YYYYMMDD" ), endtimes: moment(new Date()).format("YYYYMMDD"), }; var thisday = moment(new Date().getTime() + 86400000).format( "YYYYMMDD" ); var thisdaymine = Date.parse( thisday.substr(4, 2) + "/" + thisday.substr(6, 2) + "/" + thisday.substr(0, 4) ); var averages = [ [thisdaymine - 86400000 * 14, 0], [thisdaymine - 86400000 * 13, 0], [thisdaymine - 86400000 * 12, 0], [thisdaymine - 86400000 * 11, 0], [thisdaymine - 86400000 * 10, 0], [thisdaymine - 86400000 * 9, 0], [thisdaymine - 86400000 * 8, 0], [thisdaymine - 86400000 * 7, 0], [thisdaymine - 86400000 * 6, 0], [thisdaymine - 86400000 * 5, 0], [thisdaymine - 86400000 * 4, 0], [thisdaymine - 86400000 * 3, 0], [thisdaymine - 86400000 * 2, 0], [thisdaymine - 86400000 * 1, 0], [thisdaymine, 0], ]; var getreportdata = function (incidenttime, path) { api_report.getMdx(path, queryUUID).then(function (response) { var mdxquery = response; workspace.query = mdxquery; workspace.query.parameters.paramDateFrom = incidenttime.starttimes; workspace.query.parameters.paramDateTo = incidenttime.endtimes; $scope.parameters = parseDateParameter(workspace.query.parameters); weekuser(mdxquery); }); }; getreportdata(incidenttime, incidentchart); var weekuser = function (mdxquery) { var key = []; api_report.execute(mdxquery).then(function (data) { $scope.rheaders = []; $scope.rRows = []; var reportData = data; if (reportData.cellset == null || reportData.cellset.length == 0) { $scope.shows = true; $scope.empty = "数据为空!"; } else { angular.forEach(reportData.cellset, function (item, i) { angular.forEach(averages, function (index, j) { // angular.forEach(averages, function(item, index) { if (item.length > 1 && i > 0 && item[1].value != "") { if ( index[0] == Date.parse( item[0].value.substr(4, 2) + "/" + item[0].value.substr(6, 2) + "/" + item[0].value.substr(0, 4) ) + 86400000 ) { index[1] = Number(item[1].value); } // key.push([Date.parse(item[0].value.substr(4, 2) + "/" + item[0].value.substr(6, 2) + "/" + item[0].value.substr(0, 4)), Number(item[1].value)]); } // }) }); }); incidentchartfun(averages); } }); }; var incidentchartfun = function (incidentchartkey) { // $scope.isMaskincident = false; Highcharts.chart("incidentchart", { title: { text: "事件近15天趋势图", }, xAxis: { type: "datetime", labels: { align: "left", step: 1, }, }, yAxis: { title: { text: null, }, }, tooltip: { crosshairs: true, shared: true, valueSuffix: "条", }, legend: {}, series: [ { name: "生成事件", data: incidentchartkey, zIndex: 1, marker: { fillColor: "white", lineWidth: 2, lineColor: Highcharts.getOptions().colors[0], }, }, ], }); }; $scope.data = { labels: [ "1号", "2号", "3号", "4号", "5号", "6号", "7号", "8号", "9号", "10号", "11号", "12号", "13号", "14号", "15号", ], datasets: [ { label: "新增事件数量", fillColor: "rgba(220,220,220,0.2)", strokeColor: "rgba(220,220,220,1)", pointColor: "rgba(220,220,220,1)", pointStrokeColor: "#fff", pointHighlightFill: "#fff", pointHighlightStroke: "rgba(220,220,220,1)", data: [ 65, 59, 80, 81, 56, 55, 40, 84, 64, 120, 132, 87, 78, 23, 34, ], }, { label: "已解决事件数量", fillColor: "rgba(151,187,205,0.2)", strokeColor: "rgba(151,187,205,1)", pointColor: "rgba(151,187,205,1)", pointStrokeColor: "#fff", pointHighlightFill: "#fff", pointHighlightStroke: "rgba(151,187,205,1)", data: [ 48, 48, 78, 80, 86, 27, 90, 60, 60, 120, 60, 80, 83, 44, 20, ], }, ], }; $scope.removes = function () { var modalInstance = $modal.open({ templateUrl: "assets/views/delete.html", controller: function ($scope, $modalInstance) { $scope.ok = function () { $modalInstance.close(); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", }); modalInstance.result.then(function () { for ( var i = 0; i < $scope.$parent.$parent.$parent.$parent.resonseform.fields.length; i++ ) { if ( $scope.fields.type == $scope.$parent.$parent.$parent.$parent.resonseform.fields[i] .type ) { // $scope.resonseform.fields.push($scope.responseData.fields[i]); $scope.$parent.$parent.$parent.$parent.resonseform.fields.splice( i, 1 ); break; } } var vmForm = $scope.$parent.$parent.$parent.$parent.resonseform; if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); $scope.$parent.$parent.$parent.$parent.decodeVMForm(vmForm); $scope.$parent.$parent.$parent.$parent.vm.fields = vmForm.fields; } }); }; var addDatas = 0; var resolve = 0; for (var i = 0; i < $scope.data.datasets[0].data.length; i++) { addDatas = addDatas + $scope.data.datasets[0].data[i]; } for (var i = 0; i < $scope.data.datasets[1].data.length; i++) { resolve = resolve + $scope.data.datasets[1].data[i]; } $scope.resolution = ((resolve / addDatas) * 100).toFixed(2); $scope.opt = { maintainAspectRatio: false, // Sets the chart to be responsive responsive: true, ///Boolean - Whether grid lines are shown across the chart scaleShowGridLines: true, //String - Colour of the grid lines scaleGridLineColor: "rgba(0,0,0,.05)", //Number - Width of the grid lines scaleGridLineWidth: 1, //Boolean - Whether the line is curved between points bezierCurve: false, //Number - Tension of the bezier curve between points bezierCurveTension: 0.4, //Boolean - Whether to show a dot for each point pointDot: true, //Number - Radius of each point dot in pixels pointDotRadius: 4, //Number - Pixel width of point dot stroke pointDotStrokeWidth: 1, //Number - amount extra to add to the radius to cater for hit detection outside the drawn point pointHitDetectionRadius: 20, //Boolean - Whether to show a stroke for datasets datasetStroke: true, //Number - Pixel width of dataset stroke datasetStrokeWidth: 2, //Boolean - Whether to fill the dataset with a colour datasetFill: true, // Function - on animation progress onAnimationProgress: function () { }, // Function - on animation complete onAnimationComplete: function () { }, //String - A legend template legendTemplate: '', }; angular.extend($scope.options, $scope.opt); $scope.datamonth = { labels: ["一月", "二月", "三月", "四月", "五月", "六月"], datasets: [ { label: "新增事件数量", fillColor: "rgba(220,220,220,0.5)", strokeColor: "rgba(220,220,220,0.8)", highlightFill: "rgba(220,220,220,0.75)", highlightStroke: "rgba(220,220,220,1)", data: [65, 59, 80, 81, 56, 55], }, { label: "已解决事件数量", fillColor: "rgba(151,187,205,0.5)", strokeColor: "rgba(151,187,205,0.8)", highlightFill: "rgba(151,187,205,0.75)", highlightStroke: "rgba(151,187,205,1)", data: [28, 48, 40, 19, 86, 27], }, ], }; // Chart.js Options $scope.taption = { maintainAspectRatio: false, // Sets the chart to be responsive responsive: true, //Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value scaleBeginAtZero: true, //Boolean - Whether grid lines are shown across the chart scaleShowGridLines: true, //String - Colour of the grid lines scaleGridLineColor: "rgba(0,0,0,.05)", //Number - Width of the grid lines scaleGridLineWidth: 1, //Boolean - If there is a stroke on each bar barShowStroke: true, //Number - Pixel width of the bar stroke barStrokeWidth: 2, //Number - Spacing between each of the X value sets barValueSpacing: 5, //Number - Spacing between data sets within X values barDatasetSpacing: 1, //String - A legend template legendTemplate: '', }; }, ], }); //排版日历 formlyConfigProvider.setType({ name: "ui-dashcalendar", templateUrl: "assets/views/customform/tpl/ui-dashcalendar.html", defaultOptions: function (options) { return { templateOptions: { // relationAction: function() { // options.hideExpression = true // } }, }; }, controller: [ "$rootScope", "$scope", "$modal", "$aside", "calendarConfig", "moment", "SweetAlert", "Restangular", "api_bpm_schedule", "api_user_data", "$state", function ( $rootScope, $scope, $modal, $aside, calendarConfig, moment, SweetAlert, Restangular, api_bpm_schedule, api_user_data, $state ) { var loginUser = $rootScope.user; calendarConfig.dateFormatter = "moment"; calendarConfig.i18nStrings.eventsLabel = "排班描述"; calendarConfig.i18nStrings.timeLabel = "时间"; calendarConfig.i18nStrings.weekNumber = "{week}周"; calendarConfig.allDateFormats = { angular: { date: { hour: "ha", day: "d MMM", month: "MMMM", weekDay: "EEEE", time: "HH:mm", datetime: "MMM d, h:mm a", }, title: { day: "yyyy MMMM EEEE d", week: "{year}年第{week}周", month: "yyyy MMMM", year: "yyyy", }, }, moment: { date: { hour: "ha", day: "MMMDD日", month: "MMMM", weekDay: "dddd", time: "HH:mm", datetime: "MMM D, h:mm a", }, title: { day: "YYYY年MMMMDD日, dddd ", week: "{year}年第{week}周", month: "YYYY年MMMM", year: "YYYY", }, }, }; moment.locale("zh_cn", { months: "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split( "_" ), monthsShort: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), weekdays: "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split( "_" ), weekdaysShort: "周日_周一_周二_周三_周四_周五_周六".split("_"), weekdaysMin: "日_一_二_三_四_五_六".split("_"), longDateFormat: { LT: "Ah点mm分", LTS: "Ah点m分s秒", L: "YYYY-MM-DD", LL: "YYYY年MMMD日", LLL: "YYYY年MMMD日Ah点mm分", LLLL: "YYYY年MMMD日ddddAh点mm分", l: "YYYY-MM-DD", ll: "YYYY年MMMD日", lll: "YYYY年MMMD日Ah点mm分", llll: "YYYY年MMMD日ddddAh点mm分", }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if ( meridiem === "凌晨" || meridiem === "早上" || meridiem === "上午" ) { return hour; } else if (meridiem === "下午" || meridiem === "晚上") { return hour + 12; } else { // '中午' return hour >= 11 ? hour : hour + 12; } }, meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return "凌晨"; } else if (hm < 900) { return "早上"; } else if (hm < 1130) { return "上午"; } else if (hm < 1230) { return "中午"; } else if (hm < 1800) { return "下午"; } else { return "晚上"; } }, calendar: { sameDay: function () { return this.minutes() === 0 ? "[今天]Ah[点整]" : "[今天]LT"; }, nextDay: function () { return this.minutes() === 0 ? "[明天]Ah[点整]" : "[明天]LT"; }, lastDay: function () { return this.minutes() === 0 ? "[昨天]Ah[点整]" : "[昨天]LT"; }, nextWeek: function () { var startOfWeek, prefix; startOfWeek = moment().startOf("week"); prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? "[下]" : "[本]"; return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm"; }, lastWeek: function () { var startOfWeek, prefix; startOfWeek = moment().startOf("week"); prefix = this.unix() < startOfWeek.unix() ? "[上]" : "[本]"; return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm"; }, sameElse: "LL", }, ordinalParse: /\d{1,2}(日|月|周)/, ordinal: function (number, period) { switch (period) { case "d": case "D": case "DDD": return number + "日"; case "M": return number + "月"; case "w": case "W": return number + "周"; default: return number; } }, relativeTime: { future: "%s内", past: "%s前", s: "几秒", m: "1 分钟", mm: "%d 分钟", h: "1 小时", hh: "%d 小时", d: "1 天", dd: "%d 天", M: "1 个月", MM: "%d 个月", y: "1 年", yy: "%d 年", }, week: { // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); var date = new Date(); var d = date.getDate(); var m = date.getMonth(); var y = date.getFullYear(); var filterData = { userId: loginUser.id, startTime: moment(new Date(y, m, 1, 0, 0)).format( "YYYY-MM-DD HH:mm:ss" ), endTime: moment(new Date(y, m + 1, 1, 0, 0)).format( "YYYY-MM-DD HH:mm:ss" ), }; var load = ($scope.load = function (filterData) { api_bpm_schedule .fetchSchedule( filterData.userId, filterData.startTime, filterData.endTime ) .then(function (response) { if (response.status == 200) { $scope.events = []; var myData = response.list; angular.forEach(myData, function (item) { var eventTemp = {}; eventTemp.title = item.description; eventTemp.type = item.scheduleClass.code; eventTemp.startsAt = moment( item["scheduleOrderDTO"].startTime ).toDate(); eventTemp.endsAtTime = moment( item["scheduleOrderDTO"].endTime ).toDate(); eventTemp.startTime = item["scheduleOrderDTO"].startTime; eventTemp.endTime = item["scheduleOrderDTO"].endTime; //eventTemp.ends_at = moment(item.endTime).toDate(); eventTemp.id = item.id; eventTemp.deletable = false; eventTemp.user = item.user; $scope.events.push(eventTemp); }); } }); }); // var load = $scope.load = function(filterData){ // api_bpm_schedule.fetchSchedule(filterData.userId, filterData.startTime, filterData.endTime).then(function(response){ // console.log("response="+JSON.stringify(response)); // if(response.status==200){ // $scope.events = []; // console.log(response.list); // var myData = response.list; // angular.forEach(myData,function(item){ // var eventTemp = {}; // eventTemp.title = item.description; // eventTemp.type = item.scheduleClass.code; // eventTemp.startsAt = moment(item.startTime).toDate(); // eventTemp.endsAtTime = moment(item.endTime).toDate(); // eventTemp.startTime = item.startTime; // eventTemp.endTime = item.endTime; // //eventTemp.ends_at = moment(item.endTime).toDate(); // eventTemp.id = item.id; // eventTemp.deletable = false; // eventTemp.users = item.users; // $scope.events.push(eventTemp); // // console.log("eventTemp="+JSON.stringify(eventTemp)); // }) // } // }); // } $scope.scheduleClass = {}; var convertEvent = function (scheduleorder) { var eventTemp = {}; eventTemp.title = scheduleorder.description; eventTemp.type = scheduleorder.scheduleClass.code; eventTemp.startsAt = moment(scheduleorder.startTime).toDate(); //eventTemp.ends_at = moment(scheduleorder.endTime).toDate(); eventTemp.id = scheduleorder.id; eventTemp.user = scheduleorder.user; eventTemp.deletable = false; return eventTemp; }; // var convertEvent = function(scheduleorder){ // var eventTemp = {}; // eventTemp.title = scheduleorder.description; // eventTemp.type = scheduleorder.scheduleClass.code; // eventTemp.starts_at = moment(scheduleorder.scheduleClass.startTime).toDate(); // eventTemp.ends_at = moment(scheduleorder.scheduleClass.endTime).toDate(); // eventTemp.id = scheduleorder.id; // eventTemp.users = scheduleorder.users; // eventTemp.deletable = false; // return eventTemp; // } api_bpm_schedule.getScheduleClass().then(function (response) { if (response.status == 200) { var scheduleClassList = response.list; angular.forEach(scheduleClassList, function (item) { item.startsAt = moment(item.startTime).format("HH:mm:ss"); item.endsAt = moment(item.endTime).format("HH:mm:ss"); // console.log("item.startsAt="+JSON.stringify(item.startsAt)) // console.log("item.endsAt="+JSON.stringify(item.endsAt)) $scope.scheduleClass[item["code"]] = item; }); } }); $scope.events = []; $scope.calendarView = "month"; //$scope.calendarDay = new Date(); $scope.calendarDate = moment().startOf("month").toDate(); $scope.timeLabel = "时间"; $scope.eventLabel = "描述"; function showModal(action, event) { // console.log("action="+JSON.stringify(action)) var modalInstance = $aside.open({ templateUrl: "scheduleEvent.html", placement: "right", size: "sm", backdrop: true, controller: function ( $scope, $modalInstance, scheduleClass, APIService, MementFormat ) { $scope.$modalInstance = $modalInstance; $scope.action = action; $scope.event = event; $scope.scheduleClassic = scheduleClass; $scope.$watch("event.type", function (newvalue, oldvalue) { // if(oldvalue == newvalue) return; // if(scheduleClass[newvalue]){ var sm = MementFormat(scheduleClass[newvalue].startTime); var em = MementFormat(scheduleClass[newvalue].endTime); console.log("sm=" + JSON.stringify(sm)); event.starts_at = MementFormat(event.startTime) .startOf("day") .add(sm.hour(), "hour") .add(sm.minute(), "minute") .add(sm.second(), "second") .toDate(); console.log( "event.starts_at=" + JSON.stringify(event.starts_at) ); if (sm.hour() > em.hour()) { event.ends_at = MementFormat(event.startTime) .startOf("day") .add(1, "day") .add(em.hour(), "hour") .add(em.minute(), "minute") .add(em.second(), "second") .toDate(); console.log( "event.ends_at=" + JSON.stringify(event.starts_at) ); } else { event.ends_at = MementFormat(event.startTime) .startOf("day") .add(em.hour(), "hour") .add(em.minute(), "minute") .add(em.second(), "second") .toDate(); console.log("event.ends_at=" + JSON.stringify(event.ends_at)); } // } }); // $scope.ok = function (event) { // console.log("event="+JSON.stringify(event)) // event.action = action; // $modalInstance.close(event); // }; $scope.cancel = function (event) { $modalInstance.dismiss(); }; var acUserSelect = ($scope.refreshUser = function (key) { //for test // $scope.users=[{"id":1,"phone":"13971293737","orgId":1,"name":"李静","role":[{"id":1,"rolecode":"admin","role":"主行管理员","flag":0}],"gender":"女","dept":{"id":3,"dept":"运行监控科"},"flag":0,"email":"","account":"005292","nickname":"lijing","group":[{"id":3,"groupName":"运行监控科"}]},{"id":2,"phone":"15807199490","orgId":1,"name":"李进","role":[{"id":1,"rolecode":"admin","role":"主行管理员","flag":0},{"id":7,"rolecode":"change manager","role":"变更流程经理","flag":1},{"id":8,"rolecode":"change coordinator","role":"协调员","flag":0},{"id":9,"rolecode":"configure manager","role":"配置管理员","flag":0},{"id":10,"rolecode":"release manager","role":"发布经理","flag":0}],"gender":"男","dept":{"id":3,"dept":"运行监控科"},"flag":0,"email":"","account":"005298","nickname":"lijin","group":[{"id":3,"groupName":"运行监控科"}]},{"id":3,"phone":"13507195958","orgId":1,"name":"杨代华","role":[{"id":2,"rolecode":"user","role":"主行员工","flag":1}],"gender":"男","dept":{"id":9,"dept":"管理层"},"flag":0,"email":"","account":"005241","group":[{"id":9,"groupName":"管理层"}]},{"id":4,"phone":"18717107255","orgId":1,"name":"朱红艳","role":[{"id":2,"rolecode":"user","role":"主行员工","flag":1}],"gender":"女","dept":{"id":9,"dept":"管理层"},"flag":0,"email":"","account":"005242","group":[{"id":9,"groupName":"管理层"}]},{"id":5,"phone":"13667282828","orgId":1,"name":"李喆","role":[{"id":2,"rolecode":"user","role":"主行员工","flag":1}],"gender":"男","dept":{"id":9,"dept":"管理层"},"flag":0,"email":"","account":"005243","group":[{"id":9,"groupName":"管理层"}]}]; // return; var data = { idx: "0", sum: "5", user: { engineer: 1, } }; if (key) { data.user.name = key; } APIService.fetchDataList("user", data).then(function ( response ) { if (response) { if ((response.status = 200)) { $scope.users = response.list; console.log($scope.users); } } }); }); if (angular.isDefined(event.users) && event.users.length > 0) { } $scope.users = [event.user]; acUserSelect(); }, resolve: { scheduleClass: function () { return $scope.scheduleClass; }, APIService: function () { return api_user_data; }, MementFormat: function () { return moment; }, }, }); modalInstance.result.then(function (selectedEvent) { if (selectedEvent.action == "Clicked") { // var data = { // "scheduleorder":{ // "id":selectedEvent.id, // "description":selectedEvent.title, // "startTime":moment(selectedEvent.starts_at).format('YYYY-MM-DD HH:mm:ss'), // "endTime":moment(selectedEvent.ends_at).format('YYYY-MM-DD HH:mm:ss'), // "users":selectedEvent.users, // "scheduleClass":{"id":$scope.scheduleClass[selectedEvent.type].id} // } // }; // api_bpm_schedule.update(data).then(function(response){ // if(response.status==200){ // SweetAlert.swal({ // title: "操作成功!", // text: "排班更新成功!", // type: "succes" // }); // angular.forEach($scope.events,function(item){ // if(item.id==selectedEvent.id){ // item = selectedEvent; // } // }) // }else{ // SweetAlert.swal({ // title: "操作失败", // text: "排班更新失败,请稍后重试!", // type: "error" // }) // } // }) } else { // } }); } $scope.moment = function (string) { return moment(string); }; $scope.eventClicked = function (event) { // console.log("event="+JSON.stringify(event)) showModal("Clicked", event); }; $scope.eventEdited = function (event) { showModal("Edited", event); }; var updateView = function (newvalue, oldvalue) { if (oldvalue == newvalue) return; var timeStart, timeEnd, timeStartSpan, timeEndSpan; if ($scope.calendarView == "year") { } else if ($scope.calendarView == "month") { timeStart = moment(newvalue).startOf("month"); timeEnd = moment(newvalue).endOf("month"); } else if ($scope.calendarView == "week") { timeStart = moment(newvalue).startOf("week"); timeEnd = moment(newvalue).endOf("week"); } else if ($scope.calendarView == "Day") { timeStart = moment(newvalue).startOf("day"); timeEnd = moment(newvalue).endOf("day"); } timeStartSpan = timeStart.format("YYYY-MM-DD HH:mm:ss"); timeEndSpan = timeEnd.format("YYYY-MM-DD HH:mm:ss"); filterData["startTime"] = timeStartSpan; filterData["endTime"] = timeEndSpan; load(filterData); }; $scope.$watch("calendarDate", updateView); $scope.next = function () { $scope.calendarControl.next(); }; $scope.prev = function () { $scope.calendarControl.prev(); }; $scope.setCalendarToToday = function () { $scope.calendarDay = new Date(); }; $scope.toggle = function ($event, field, event) { $event.preventDefault(); $event.stopPropagation(); event[field] = !event[field]; }; $scope.load(filterData); $scope.more = function () { $state.go("app.scheduling.myscheduling", {}); }; $scope.removes = function () { var modalInstance = $modal.open({ templateUrl: "assets/views/delete.html", controller: function ($scope, $modalInstance) { $scope.ok = function () { $modalInstance.close(); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", }); modalInstance.result.then(function () { for ( var i = 0; i < $scope.$parent.$parent.$parent.$parent.resonseform.fields.length; i++ ) { if ( $scope.fields.type == $scope.$parent.$parent.$parent.$parent.resonseform.fields[i] .type ) { // $scope.resonseform.fields.push($scope.responseData.fields[i]); $scope.$parent.$parent.$parent.$parent.resonseform.fields.splice( i, 1 ); break; } } var vmForm = $scope.$parent.$parent.$parent.$parent.resonseform; if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); $scope.$parent.$parent.$parent.$parent.decodeVMForm(vmForm); $scope.$parent.$parent.$parent.$parent.vm.fields = vmForm.fields; } }); }; }, ], }); //空格组件 formlyConfigProvider.setType({ name: "ui-black", /*extends: 'input',*/ template: '
', }); //请求人最近事件 formlyConfigProvider.setType({ name: "ui-recentIncident", templateUrl: "assets/views/customform/tpl/ui-recentincident.html", controller: [ "$scope", "$modal", "api_solution", function ($scope, $modal, api_solution) { var filterData = { incident: { requester: { id: "", }, }, idx: 0, sum: 3, }; setInterval(function () { if ( filterData.incident.requester.id == "" || filterData.incident.requester.id != $scope.model.requester.id ) { var requester = $scope.model.requester; if (requester != null && angular.isDefined(requester.id)) { filterData.incident.requester.id = $scope.model.requester.id; $scope.options.templateOptions .getWorkernumber( $scope.options.templateOptions.ApiService, filterData ) .then(function (result) { var modelData = $scope.options.templateOptions.Restangular.stripRestangular( result ); if (modelData.status == 200) { $scope.lastrequst = modelData.list; } }); requester = null; } else { } } else { } }, 1000); $scope.detail = function (data) { var modalInstance = $modal.open({ templateUrl: "assets/views/incident/tpl/detailincident.html", controller: function ($scope, $modalInstance) { $scope.entity = {}; $scope.entity = data; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "lg", }); }; }, ], }); //参数列表 formlyConfigProvider.setType({ name: "ui-listinput", templateUrl: "assets/views/customform/tpl/ui-listinput.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: {}, }; }, controller: ["$scope", function ($scope) { }], }); //时间段控件(分) formlyConfigProvider.setType({ name: "ui-timeslot", extends: "input", templateUrl: "assets/views/customform/tpl/ui-responsetime.html", controller: ["$scope", function ($scope) { }], }); //优先级级联-逾期时间 formlyConfigProvider.setType({ name: "ui-overtime", extends: "input", templateUrl: "assets/views/customform/tpl/ui-overtime.html", controller: [ "$scope", "api_bpm_domain", function ($scope, api_bpm_domain) { var filteData = {}; var datas = {}; setInterval(function () { if ( $scope.model.priority && $scope.model.priority.id != null && filteData && datas != $scope.model.priority.id ) { filteData = "L" + $scope.model.priority.id; datas = $scope.model.priority.id; // console.log($scope.options.templateOptions) api_bpm_domain.expectedTime(filteData).then(function (requester) { // var overtime=requester.date; if (requester.state == 200) { // if($scope.options.key=="date"){ $scope.model[$scope.options.key] = requester.date; // } } }); } }, 1000); }, ], }); formlyConfigProvider.setType({ name: "ui-responsetime", extends: "input", templateUrl: "assets/views/customform/tpl/ui-responsetime.html", controller: [ "$scope", "api_bpm_domain", function ($scope, api_bpm_domain) { var filteData = {}; var datas = {}; setInterval(function () { if ( $scope.model.priority && $scope.model.priority.id != null && filteData && datas != $scope.model.priority.id ) { filteData = "L" + $scope.model.priority.id; datas = $scope.model.priority.id; // console.log($scope.options.templateOptions) api_bpm_domain.expectedTime(filteData).then(function (requester) { // var overtime=requester.date; if (requester.state == 200) { var keyName = {}; // $scope.model.overdueTime = requester.date; if ($scope.options.key == "expectIntroTime") { keyName = "resolveTime"; } else if ($scope.options.key == "expectResponseTime") { keyName = "responseTime"; } $scope.model[$scope.options.key] = requester.serviceLevelAgreement[keyName]; // } console.log($scope.$parent.$parent.$parent.model); } if (requester.date1) { $scope.$parent.$parent.$parent.model.incident.overdueTime = requester.date; $scope.$parent.$parent.$parent.model.incident.overdueResponseDate = requester.date1; $scope.$parent.$parent.$parent.model.incident.expectIntroTime = requester.serviceLevelAgreement.resolveTime; $scope.$parent.$parent.$parent.model.incident.expectResponseTime = requester.serviceLevelAgreement.responseTime; } }); } }, 1000); }, ], }); //知识库按钮组件 formlyConfigProvider.setType({ name: "ui-discasecade", extends: "input", templateUrl: "assets/views/customform/tpl/ui-discasecade.html", defaultOptions: function (options) { return { templateOptions: { relationAction: function (fields, modelscope, item) { }, }, validators: { required: { expression: function (viewValue, modelValue) { var value = modelValue || viewValue; // return value = "true"; }, }, }, }; }, controller: [ "$scope", "$rootScope", "$modal", "SweetAlert", "api_bpm_data", "api_solution", "$aside", "api_zsk", "api_bpm_domain", function ( $scope, $rootScope, $modal, SweetAlert, api_bpm_data, api_solution, $aside, api_zsk, api_bpm_domain ) { // $scope.options.initialValue = $scope.model[$scope.options.key]; $scope.searchField = $scope.options.model[$scope.options.key]; $scope.searchData = ""; $scope.onChangeadd = function (searchData) { $scope.searchKey = searchData.account; // $scope.searchDataadd = searchData; var requesdata = angular.copy(searchData); $scope.requester = requesdata; }; $scope.refreshUseradd = function (searchKey) { //主题搜索 $scope.searchData = searchKey; reashdata($scope.searchData); }; $scope.getMydata = function (x) { $scope.model[$scope.options.key] = JSON.parse(x).title; $scope.searchField = $scope.model[$scope.options.key]; }; $scope.getMydataone = function (x) { $scope.model[$scope.options.key] = x; $scope.searchField = $scope.model[$scope.options.key]; }; $scope.fildata = { idx: 0, sum: 10, // 'incident': { 'tilte': item } }; function reashdata(item) { if (item && item != "") { angular.extend($scope.fildata, { incident: { title: item, }, }); } else { delete $scope.fildata.incident; } api_bpm_data .fetchDataList("incident", $scope.fildata) .then(function (response) { if (response) { if ((response.status = 200)) { var myData = response; $scope.myData = myData.list; } } }); } function delHtmlTag(str) { return str.replace(/<[^>]+>/g, ""); } // reashdata(); var changedata = {}; setInterval(function () { if ( $scope.model.category != null && $scope.model.category.id != changedata.id && $scope.model.titles != $scope.model.category ) { $scope.searchData = {}; changedata = angular.copy($scope.model.category); if ($scope.options.key == "title") { var filterData = { idx: 0, sum: 1000, }; api_bpm_data .fetchDataList("incidentcategory", filterData) .then(function (data) { var datalist = data.list; angular.forEach(datalist, function (item) { if (item.id == $scope.model.category.id) { $scope.model[$scope.options.key] = item.category; $scope.searchField = $scope.options.model[$scope.options.key]; $scope.titles = item.category; titles = $scope.model.category; } }); }); } } }, 1000); $scope.open = function (key, options, fildata, $event, model) { if (key && key.length > 1) { api_zsk .solutionData( { solution: { searchWord: key, }, idx: "0", sum: "1000", }, "solution" ) .then(function (response) { if (response && response.list.length > 0) { $scope.dlideboxslide = true; angular.forEach(response, function (item) { console.log(response); // api_solution.fetchDataList('solutionQuote', { "solutionQuote": { "solutionId": item.id }, "idx": "0", "sum": "1000" }).then(function (data) { // if (response.status == 200) { // var quote = { 'totalNum': response.totalNum } // item = angular.extend(item, quote) // } // }) $scope.searchData = response.list; console.log($scope.searchData); }); $scope.changes = false; // $('#navigation .pages').stop().animate({ 'marginLeft': '-500px' }, 1000); // $scope.closepages = function(e) { // $('#navigation .pages').stop().animate({ 'marginLeft': '500px' }, 1000); // event.preventDefault(); // }; $scope.shows = false; $scope.tempData = {}; $scope.showpage = function (item) { item.content = delHtmlTag(item.content); $scope.shows = true; $scope.tempData = item; if (item.content != null) { $scope.tempData.content = $scope.tempData.content .replace("

", "") .replace("

", ""); } $scope.knowledgedata = item; $scope.pageid = item.id; $scope.changes = !$scope.changes; api_bpm_domain .listAttachments(item.id) // api_solution.fetchDataList('file', { // "file": { // "solutionId": item.id // }, // "idx": "0", // "sum": "1000" // }) .then(function (data) { if (data) { $scope.attachments = data.list; $scope.view = function (attachmentId) { for ( var i = 0; i < $scope.attachments.length; i++ ) { if ($scope.attachments[i].id == attachmentId) { window.open($scope.attachments[i].previewUrl); } } }; $scope.download = function (contentId, filename) { api_solution .getSolutionDowpath(contentId) .then(function (response) { var file = new Blob([response], { type: "application/octet-stream", }); // var filename = filename; var fileURL = URL.createObjectURL(file); var a = document.createElement("a"); a.href = fileURL; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }); }; } }); }; $scope.related = function (item) { if (item.content != null) { item.content = item.content .replace("

", "") .replace("

", ""); } // fildata.$parent.$parent.$parent.model.directClose = 0; options.model.handleDescription = item.content; var data = { solutionQuote: { solutionId: item.id, incidentsign: options.model.incidentsign, }, }; api_zsk.solutionQuote(item.id).then(function (response) { if (response.status == 200) { SweetAlert.swal("引用成功", "知识库已引用", "success"); fildata.$parent.$parent.$parent.$parent.model.start_code = "close"; fildata.$parent.$parent.$parent.$parent.model.directClose = 0; } else { SweetAlert.swal("引用失败", "知识库未引用", "error"); } }); }; $scope.close = function () { $scope.changes = !$scope.changes; event.preventDefault(); }; } }); } }; }, ], }); //侧滑选择重复事件 formlyConfigProvider.setType({ name: "ui-repeatIncidentbtn", templateUrl: "assets/views/customform/tpl/ui-repeatIncidentbtn.html", defaultOptions: function (options) { return { templateOptions: { relationAction: function (fields, modelscope, item) { }, }, validators: { required: { expression: function (viewValue, modelValue) { // var value = modelValue || viewValue; }, }, }, }; }, controller: [ "$scope", "$rootScope", "$modal", "SweetAlert", "api_bpm_data", "api_solution", "$aside", "api_zsk", "api_bpm_domain", "api_webservice1", function ( $scope, $rootScope, $modal, SweetAlert, api_bpm_data, api_solution, $aside, api_zsk, api_bpm_domain, api_webservice1 ) { console.log($scope); $scope.selection = { id: "", }; //认证计费数据获取 $scope.sumInfo = {}; function getSumInfo() { $scope.isHk = $rootScope.isHk; if($rootScope.isHk){ //用户信息 api_webservice1.fetchDataList("queryUser", { "userId": $scope.model.incident.account }).then(function(response) { // if (response.status == 200) { if (response && response.data) { angular.extend($scope.sumInfo, response.data[0]); // $scope.sumInfo = response.data[0]; $scope.sumInfo.autologicDestroyTime = moment(response.data[0].autologicDestroyTime).format('YYYY-MM-DD'); $scope.sumInfo.periodStartTime = moment(response.data[0].periodStartTime).format('YYYY-MM-DD'); $scope.sumInfo.nextBillingTime = moment(response.data[0].nextBillingTime).format('YYYY-MM-DD'); } else if (response.err) { SweetAlert.swal("系统错误!", "用户信息未取到,请刷新重试", "error"); } // } }) //上网明细 api_webservice1.fetchDataList("queryOnlineDetail", { "userId": $scope.model.incident.account, "limit": "10", "fromLoginTime": moment(new Date().getTime() - 86400000 * 6).format('YYYY-MM-DD HH:mm:ss'), "toLogoutTime": moment(new Date().getTime()).format('YYYY-MM-DD HH:mm:ss') }).then(function(response) { // if (response.status == 200) { if (response && response.data) { angular.forEach(response.data, function(item, index) { if (item.logoutTime) { response.data[index].logoutTime = moment(item.logoutTime).format('YYYY-MM-DD HH:mm:ss'); } if (item.loginTime) { response.data[index].loginTime = moment(item.loginTime).format('YYYY-MM-DD HH:mm:ss'); } }) $scope.logininform_sumInfo = response.data; } else if (response.err) { SweetAlert.swal("上网明细未取到", "该用户暂无上网明细", "error"); } }) //黑名单 // $scope.sumInfo.blacklist = "否" api_webservice1.fetchDataList("queryInhibit", { "userId": $scope.model.incident.account }).then(function(response) { // if (response.status == 200) { // $scope.loginsumInfo = response.data; if (response) { if (response.data || response.data != null) { $scope.sumInfo.blacklist = "是" } else { if (response.err) { // SweetAlert.swal("系统错误!", "黑名单未取到,请刷新重试", "error"); } else { $scope.sumInfo.blacklist = "否" } } } // } }) }else{ // api_bpm_data // .sumInfo($scope.model.incident.account) // .then(function (data) { // console.log(data); // if (data) { // $scope.sumInfo = data.data || {}; // } // }); // 取消sum $scope.sumInfo = {}; } } getSumInfo(); // 收起重复事件侧滑框 function reashdata(item) { var fildata = { idx: 0, incident: { department: { id: $scope.model.incident.department.id, }, }, sum: 3, }; api_bpm_data.fetchDataList("incident", fildata).then(function (data) { console.log(data); if (data) { $scope.repeatData = data.list; } }); } reashdata(); // 确认选中的重复事件 $scope.repeatIncidentOk = function () { if ($scope.selection.id) { $scope.model.incident.repeat = $scope.selection; $scope.model.isRepeat = true; //隐藏处理信息 console.log($scope.model); } angular.element("#repeatIncident").removeClass("active"); }; // 取消选中的重复事件 $scope.repeatIncidentCancle = function () { angular.element("#repeatIncident").removeClass("active"); return; }; }, ], }); //侧滑选择知识库查询 formlyConfigProvider.setType({ name: "ui-knowledgebtn", templateUrl: "assets/views/customform/tpl/ui-knowledgebtn.html", defaultOptions: function (options) { return { templateOptions: { relationAction: function (fields, modelscope, item) { }, }, validators: { required: { expression: function (viewValue, modelValue) { // var value = modelValue || viewValue; }, }, }, }; }, controller: [ "$scope", "$rootScope", "$modal", "SweetAlert", "api_bpm_data", "api_solution", "$aside", "api_zsk", "api_bpm_domain", "api_wechatfile", "up_down_file", function ( $scope, $rootScope, $modal, SweetAlert, api_bpm_data, api_solution, $aside, api_zsk, api_bpm_domain, api_wechatfile, up_down_file ) { $scope.keypressModel = function (e, key) { if (e.keyCode === 13) { $scope.openModel(key); } }; // 引用知识库点击 $scope.searchKeyWord = ""; $scope.openModel = function (key) { // alert(1)//重点 $scope.searchKeyWord = key; if (key) { api_zsk .solutionData( { solution: { threeSearch: key, status: { id: 72 }, //已发布 selectType: "keySearch", }, idx: "0", sum: "1000", }, "solution" ) .then(function (response) { $scope.searchData = response.list; }); } }; $scope.openModel($scope.model.incident.description); // 展开/收起 $scope.showId = ""; $scope.ifshow = false; $scope.showAll = function (id) { $scope.attachments = []; if ($scope.showId == id) { $scope.ifshow = !$scope.ifshow; } else { $scope.ifshow = true; } $scope.showId = id; // 获取附件 api_wechatfile .listAttachments("knowledge", $scope.showId) .then(function (data) { $scope.attachments = data.data; $scope.download = function (token, filename) { var downUrl = up_down_file .downloadAttachment("common/common/downloadAttachment", token) .getRequestedUrl(); // window.open(downUrl); var a = document.createElement("a"); a.href = downUrl; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }; }); }; // 引用 $scope.related = function (item) { console.log(item, "引用名"); if (item.content) { item.content = item.content .replace(/

/g, "") .replace(/<\/p>/g, "") .replace(/ /g, ""); } $scope.model.incident.handleDescription = item.content; $scope.model.incident.title = $scope.model.incident.description = item.title; $scope.model.incident.category = item.category; if (item.category) { $scope.model.incident.priority.id = item.category.priority.id; item.category.label = item.category.category; } var categoryId = item.category ? item.category.id : ""; // 引用知识库故障现象后,修改故障现象选中状态,故障现象列表重载 function getres(nodes) { if (!nodes || nodes.length == 0) { return; } nodes.forEach((e) => { e.selected = false; if (e.id == categoryId) { e.selected = true; return false; } getres(e.children); }); } var categorys = []; $scope.fields.forEach((e, i) => { if (e.key == "category") { categorys = e.templateOptions.options; if (categorys.length) { getres(categorys); $scope.fields[i].templateOptions.options = categorys; $scope.$root.refreshSelectedItems(); } return false; } }); // field.$parent.$parent.$parent.model.candidateGroups=item.category.group $scope.model.candidateGroups = item.category ? item.category.group : {}; // 携带关联优先级,事件工单信息的时间 if ( $scope.model && $scope.model.incident && item.category && item.category.priority && item.category.priority.id ) { api_bpm_domain .expectedTime("L" + (item.category.priority.id - 1559)) .then(function (res) { $scope.model.incident.expectResponseTime = $scope.$parent.$parent.$parent.model.incident.expectResponseTime = res.serviceLevelAgreement.responseTime; $scope.model.incident.expectIntroTime = $scope.$parent.$parent.$parent.model.incident.expectIntroTime = res.serviceLevelAgreement.resolveTime; $scope.model.incident.overdueTime = $scope.$parent.$parent.$parent.model.incident.overdueTime = res.date; }); } api_zsk.solutionQuote(item.id).then(function (response) { if (response.status == 200) { $("#seachknowledge").removeClass("active"); SweetAlert.swal("引用成功", "知识库已引用", "success"); $scope.$parent.$parent.$parent.model.start_code = "close"; $scope.$parent.$parent.$parent.model.directClose = 0; console.log($scope.model); } else { SweetAlert.swal("引用失败", "知识库未引用", "error"); } }); }; }, ], }); //下拉输入组件 formlyConfigProvider.setType({ name: "ui-selectinput", extends: "input", templateUrl: "assets/views/customform/tpl/selectinput.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, linkage: function (modelName, data) { }, }, }; }, controller: [ "$scope", "$rootScope", "$modal", "SweetAlert", "api_bpm_data", "api_solution", "$aside", function ( $scope, $rootScope, $modal, SweetAlert, api_bpm_data, api_solution, $aside ) { $scope.searchData = ""; $scope.onChangeadd = function (searchData) { // $scope.searchKey = searchData.account; // var requesdata = angular.copy(searchData) // $scope.requester = requesdata; }; $scope.refreshUseradd = function (searchKey) { //主题搜索 // $scope.searchData = searchKey; // reashdata($scope.searchData); }; $scope.getMydata = function (x) { $scope.model[$scope.options.key] = JSON.parse(x)[$scope.options.templateOptions.labelProp]; $scope.searchField = $scope.model[$scope.options.key]; }; $scope.getMydataone = function (x) { $scope.model[$scope.options.key] = x; $scope.searchField = $scope.model[$scope.options.key]; if ( $scope.model[$scope.options.key] && $scope.model[$scope.options.key] != "" ) { $scope.hidden = false; } else { $scope.hidden = true; } }; function reashdata(item) { $scope.myData = $scope.options.templateOptions.mydata; } reashdata(); if (angular.isFunction($scope.options.templateOptions.fetchItems)) { $scope.options.templateOptions.fetchItems($scope); } }, ], }); //重构组件模板 //获取当前人 formlyConfigProvider.setType({ name: "ui-users", extends: "input", templateUrl: "assets/views/customform/tpl/ui-label.html", defaultOptions: function (options) { return { templateOptions: { translate: "", refreshDelay: 0, }, }; }, controller: [ "$scope", function ($scope) { // $scope.model[$scope.options.key]=$scope.$root.user.name; $scope.options.templateOptions.translate = $scope.$root.user.name; }, ], }); //只读控件 formlyConfigProvider.setType({ name: "ui-label", extends: "input", templateUrl: "assets/views/customform/tpl/ui-label.html", defaultOptions: function (options) { return { templateOptions: { translate: "", refreshDelay: 0, }, }; }, controller: [ "$scope", "$rootScope", function ($scope, $rootScope) { // console.log($scope.options.templateOptions) // console.log($scope.options,'options1122'); $scope.isSolutionLabel = false; $scope.solutionLabelStr = ""; // console.log($scope.options.templateOptions.solotinLabel); if ($scope.options.templateOptions.solotinLabel) { $scope.isSolutionLabel = true; if ($scope.model[$scope.options.key]) { var solutionArr = $scope.model[$scope.options.key].split("/"); $scope.solutionLabelStr = solutionArr.join(" "); } } var value = $scope.model[$scope.options.key]; // ---------------- // ---------------- // console.log(value, 'pppp') function treeDesc(children, key, label) { if (label == "") { label = children[key]; } else { label = children[key] + "-" + label; } if (angular.isDefined(children.parent)) { treeDesc(children.parent, key, label); } else { return label; } } if (angular.isArray(value)) { var tempValue = ""; angular.forEach(value, function (item) { if (tempValue != "") { tempValue = tempValue + ","; } tempValue = tempValue + item[$scope.options.templateOptions.labelProp] || item; }); $scope.options.templateOptions.translate = tempValue; } else if (angular.isObject(value)) { if ( angular.isDefined(value.children) || angular.isDefined(value.parent) ) { //tree // console.log("value.parent="+JSON.stringify(value.parent)) var nameLabel = value[$scope.options.templateOptions.labelProp]; nameLabel = treeDesc( value.parent, $scope.options.templateOptions.labelProp, nameLabel ); $scope.options.templateOptions.translate = nameLabel; } else { $scope.options.templateOptions.translate = value; } } else if ( angular.isString(value) && value.indexOf("yyyy-MM-ddTHH:mm:sssZ") > 0 ) { // console.log("value=" + value); $scope.options.templateOptions.translate = value; // }else if(angular.isString(value)&&value.indexOf('yyyy-MM-ddTHH:mm:sssZ')>0){ // console.log("value="+value); // $scope.options.templateOptions.translate = value; } else { // var datasdf = JSON.parse(value); // console.log("$scope.options.templateOptions.translate="+JSON.stringify($scope.options.templateOptions.translate)) $scope.options.templateOptions.translate = value; } if (angular.isFunction($scope.options.templateOptions.transform)) { // console.log("$scope.options.templateOptions.transform22="+JSON.stringify($scope.options.templateOptions.transform)) $scope.options.templateOptions.translate = $scope.options.templateOptions.transform( $scope.originalModel, value, $rootScope, $scope ); } // console.log($scope.options.templateOptions.translate,99999); }, ], }); //小标题组件 formlyConfigProvider.setType({ name: "ui-header", template: '

{{ options.templateOptions.label }}
', }); //标题组件 formlyConfigProvider.setType({ name: "ui-title", template: '

{{options.templateOptions.label}}

', }); //标栏是否展示 formlyConfigProvider.setType({ name: "ui-orshow", template: '

{{options.templateOptions.label}}

隐藏展示
', controller: [ "$scope", function ($scope) { $scope.clickshow = function (key) { // $scope.model[$scope.options.key] != key; if (key == false) { $scope.model[$scope.options.key] = true; } else { $scope.model[$scope.options.key] = false; } }; }, ], }); //按钮组 formlyConfigProvider.setType({ name: "ui-button", templateUrl: "assets/views/customform/tpl/ui-button.html", defaultOptions: function (options) { return { noFormControl: true, }; }, }); //3d组link formlyConfigProvider.setType({ name: "ui-link", templateUrl: "assets/views/customform/tpl/ui-link.html", defaultOptions: function (options) { return { noFormControl: true, }; }, }); //隐藏域组件 formlyConfigProvider.setType({ name: "ui-hidden", extends: "input", template: '', defaultOptions: function (options) { return { // noFormControl: true }; }, }); //文本框组件 formlyConfigProvider.setType({ name: "ui-input", extends: "input", templateUrl: "assets/views/customform/tpl/ui-input.html", defaultOptions: function (options) { return { templateOptions: { transform: function (value) { }, }, }; }, controller: [ "$scope", "$timeout", function ($scope, $timeout) { // console.log($scope.model[$scope.options.key]); // console.log($scope.options) if (angular.isFunction($scope.options.templateOptions.linkData)) { $scope.model[$scope.options.key] = $scope.options.templateOptions.linkData($scope.model); } }, ], }); //搜索下拉框-故障地点seimin formlyConfigProvider.setType({ name: "ui-select-search", extends: "input", templateUrl: "assets/views/customform/tpl/ui-select-search.html", defaultOptions: function (options) { return { templateOptions: { transform: function (value) { }, }, }; }, controller: [ "$scope", "$rootScope", "api_search_area", function ($scope, $rootScope, api_search_area) { // console.log($scope.options, $scope.model) // ----------------分割线 start----------------- // 故障地点下拉 $scope.address_arr = []; //故障地点所有数据 $scope.addressFlag = false; //默认下拉框列表隐藏 //点击文本框 $scope.AddressClickHandle = function () { $scope.getDepartmentList(); angular.element("#bx_address_ul").scrollTop(0); }; //修改文字,实时监听 $scope.ksChangeHandle = _.debounce(function () { $scope.model[$scope.options.key] = $scope.model[$scope.options.key] === undefined ? "" : $scope.model[$scope.options.key]; $scope.getDepartmentList(); angular.element("#bx_address_ul").scrollTop(0); }, 500); //获取故障地点seimin $scope.getDepartmentList = function () { $scope.model[$scope.options.key] = $scope.model[$scope.options.key] === null ? "" : $scope.model[$scope.options.key]; api_search_area .getAreaList({ searchKey: $scope.model[$scope.options.key] }) .then((res) => { if (res.state == 200) { $scope.address_arr = res.result; $scope.addressFlag = true; //显示 } }) .catch((err) => { console.log(err); }); }; // $scope.getDepartmentList(); // console.log($scope.model[$scope.options.key]) //下拉框列表选中 $scope.addressItemClick = function (obj) { $scope.addressFlag = false; //隐藏 $scope.model[$scope.options.key] = obj.place ? obj.area.area + obj.place : obj.area; //选择故障地点后带入区域地点2020年4月23日15:20:44 $scope.model.selecthouseNumber = obj; console.log($scope, 77777); $scope.$root.selecthouseNumber = obj; }; //点击空白处隐藏 angular.element(document).on("click", function (e) { if (e.target !== angular.element("#bx_address").get(0)) { $scope.addressFlag = false; //隐藏 //模拟placeholder // if ($('#bx_address').val() == '') { // $('#bx_address').val('请选择报修科室'); // } } }); // -----------------分割线 end---------------- }, ], }); //知识库关键字组件 formlyConfigProvider.setType({ name: "ui-knowledgeKeywords", extends: "input", templateUrl: "assets/views/customform/tpl/ui-knowledgeKeywords.html", defaultOptions: function (options) { return { templateOptions: { transform: function (value) { }, }, }; }, controller: [ "$scope", "$timeout", "SweetAlert", function ($scope, $timeout, SweetAlert) { $scope.valueLength = [ { value: "", }, ]; $scope.valueAll = []; if ($scope.model[$scope.options.key]) { var valueArr = $scope.model[$scope.options.key].split("/"); $scope.valueLength = []; for (var i = 0; i < valueArr.length; i++) { $scope.valueLength.push({ value: valueArr[i], }); } } $scope.addIpt = function () { if ($scope.valueLength.length < 5) { $scope.valueLength.push({ value: "", }); } else { SweetAlert.swal({ title: "添加失败", text: "关键字不能超过5个!", type: "error", confirmButtonColor: "#DD6B55", }); } }; $scope.closeIpt = function (data) { $scope.valueLength.splice(data, 1); }; $scope.toOption = function () { $scope.valueAll = []; for (var i = 0; i < $scope.valueLength.length; i++) { if ($scope.valueLength[i].value != "") { $scope.valueAll.push($scope.valueLength[i].value); } } $scope.model.label = $scope.valueAll.join("/"); }; }, ], }); //文本框组件 formlyConfigProvider.setType({ name: "ui-num", extends: "input", templateUrl: "assets/views/customform/tpl/ui-num.html", defaultOptions: function (options) { return { templateOptions: { transform: function (value) { }, }, }; }, controller: [ "$scope", "$timeout", function ($scope, $timeout) { if (angular.isFunction($scope.options.templateOptions.linkData)) { $scope.model[$scope.options.key] = $scope.options.templateOptions.linkData($scope.model); } $scope.clearNoNum = function (obj, attr) { //先把非数字的都替换掉,除了数字和. obj[attr] = obj[attr].replace(/[^\d.]/g, ""); //必须保证第一个为数字而不是. obj[attr] = obj[attr].replace(/^\./g, ""); //保证只有出现一个.而没有多个. obj[attr] = obj[attr].replace(/\.{2,}/g, ""); //保证.只出现一次,而不能出现两次以上 obj[attr] = obj[attr] .replace(".", "$#$") .replace(/\./g, "") .replace("$#$", "."); //小于最大值 // if ($scope.maxsum && parseInt(obj[attr]) > $scope.maxsum) { // alert('输入数据超过库存数量' + $scope.maxsum + ',请重新输入!'); // obj[attr] = ''; // } }; }, ], }); // //关联请求人文本框组件 // formlyConfigProvider.setType({ // name: 'ui-requestinput', // extends: 'input', // templateUrl: 'assets/views/customform/tpl/ui-input.html', // defaultOptions: function(options) { // return { // templateOptions: { // transform: function(value) {}, // linkData: function(options) {} // } // }; // } // }); //只读文本 formlyConfigProvider.setType({ name: "ui-disableinput", extends: "input", templateUrl: "assets/views/customform/tpl/ui-disableinput.html", defaultOptions: function (options) { return { templateOptions: { transform: function (value) { var ret = ""; if (value) { ret = "已删除"; } else { ret = "正常"; } return ret; }, }, }; }, }); formlyConfigProvider.setType({ name: "ui-disinput", extends: "input", templateUrl: "assets/views/customform/tpl/ui-disinput.html", defaultOptions: function (options) { return { templateOptions: {}, }; }, }); //数字组件 formlyConfigProvider.setType({ name: "ui-number", extends: "input", templateUrl: "assets/views/customform/tpl/ui-number.html", defaultOptions: function (options) { return { templateOptions: {}, }; }, controller: ["$scope", function ($scope) { }], }); //含有周的日期 formlyConfigProvider.setType({ name: "ui-datepickerweek", templateUrl: "assets/views/customform/tpl/ui-datepicker.html", extends: "input", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: { ngModelAttrs: getNgModelAttr(datepicker_attr, datepicker_bindings), templateOptions: { datepickerPopup: "yyyy-MM-dd HH:mm:ss", }, }, controller: [ "$scope", "$filter", function ($scope, $filter) { $scope.mindata = new Date( $scope.options.templateOptions.transform($scope.model).getTime() + 5 * 60 * 1000 ); if ($scope.model[$scope.options.key]) { } else { $scope.model[$scope.options.key] = $filter("date")( new Date(new Date().getTime()), $scope.options.templateOptions.datepickerPopup ); } $scope.options.initialValue = $scope.model[$scope.options.key]; $scope.endOpen = true; $scope.datepicker = {}; $scope.datepicker.opened = false; $scope.datepicker.open = function ($event) { $scope.datepicker.opened = true; }; }, ], }); //lmm //分配任务列表 formlyConfigProvider.setType({ name: "jry_taskDistributionList", templateUrl: "assets/views/customform/tpl/jry_taskDistributionList.html", wrapper: ["bootstrapHasError"], defaultOptions: function (options, $scope) { return { templateOptions: {}, }; }, controller: function ( $rootScope, $scope, api_user_data, $modal, api_doc_data, i18nService, SweetAlert, api_wechatfile ) { // 获取状态 $scope.stateListData = {}; $scope.getStateData = function () { //lyl var data = { key: "task_sub_state", type: "list", }; api_wechatfile.getDictionary(data).then(function (res) { angular.forEach(res, function (v, i) { $scope.stateListData[v.value] = v.id; }); }); }; $scope.getStateData(); var loginUser = $rootScope.user; $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = true; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; // console.log($scope.model);//lmmmm $scope.gridOptions.columnDefs = [ { name: "item", displayName: "序号", width: "10%", cellTemplate: "
" + '
{{row.entity.item}}
' + "
", }, { name: "taskDescribe", displayName: "任务说明", width: "25%", enableFiltering: false, cellTemplate: "
" + '
{{row.entity.taskDescribe}}
' + "
", }, { name: "assign.name", displayName: "指派人", width: "5%", enableFiltering: false, cellTemplate: "
" + '
{{row.entity.assign.name}}
' + "
", }, { name: "startTime", displayName: "开始时间", width: "13%", enableFiltering: false, cellTemplate: "
" + '
{{row.entity.startTime}}
' + "
", }, { name: "endTime", displayName: "结束时间", width: "13%", enableFiltering: false, cellTemplate: "
" + '
{{row.entity.endTime}}
' + "
", }, { name: "priority.name", displayName: "优先级", width: "5%", enableFiltering: false, cellTemplate: "
" + '
{{row.entity.priority.name}}
' + "
", }, { name: "state.name", displayName: "状态", width: "5%", enableFiltering: false, cellTemplate: "
" + '
{{row.entity.state.name}}
' + "
", }, { name: "操作", //lmmm cellTemplate: '
' + '删除' + '编辑' + '发布' + '查看' + "
", enableFiltering: false, }, ]; // 查看 $scope.see = function (data) { $scope.seeData = data; var modalInstance = $modal.open({ backdrop: false, templateUrl: "assets/views/customform/tpl/newTaskDistribution.html", controller: function ( $scope, scope, $modalInstance, api_doc_data, SweetAlert, api_user_data, api_wechatfile ) { $scope.personData = {}; //指派人 $scope.priorityData = {}; //优先级 $scope.personListData = {}; //指派人下拉数据 $scope.priorityListData = {}; //优先级下拉数据 $scope.startTime = ""; //开始时间 $scope.releaseShow = "no"; $scope.subShow = "no"; $scope.onlySee = "ok"; $scope.endTime = ""; //结束时间 $scope.taskDescribe = ""; //任务描述 $scope.taskDescribe = scope.seeData.taskDescribe; $scope.personData.data = scope.seeData.assign; $scope.priorityData.data = scope.seeData.priority; $scope.startTime = scope.seeData.startTime; $scope.endTime = scope.seeData.endTime; $scope.done = scope.seeData.done; $scope.feedback = scope.seeData.feedback; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, }, backdrop: true, }); }; // 编辑 $scope.edit = function (data) { $scope.editData = data; var modalInstance = $modal.open({ backdrop: false, templateUrl: "assets/views/customform/tpl/newTaskDistribution.html", controller: function ( $scope, scope, $modalInstance, api_doc_data, SweetAlert, api_user_data, api_wechatfile ) { console.log(scope.editData); $scope.personData = {}; //指派人 $scope.priorityData = {}; //优先级 $scope.personListData = {}; //指派人下拉数据 $scope.priorityListData = {}; //优先级下拉数据 $scope.startTime = ""; //开始时间 $scope.releaseShow = "no"; $scope.endTime = ""; //结束时间 $scope.taskDescribe = ""; //任务描述 $scope.taskDescribe = scope.editData.taskDescribe; $scope.personData.data = scope.editData.assign; $scope.priorityData.data = scope.editData.priority; $scope.startTime = scope.editData.startTime; $scope.endTime = scope.editData.endTime; // 指派人下拉框数据 $scope.getPersonData = function () { var data = { idx: 0, sum: 1000, user: { engineer: 1, } }; api_user_data.fetchDataList("user", data).then(function (res) { $scope.personListData = res.list; }); }; $scope.getPersonData(); //优先级下拉数据 $scope.getPriorityData = function () { var data = { key: "change_rick_level", type: "list", }; api_wechatfile.getDictionary(data).then(function (res) { $scope.priorityListData = res; }); }; $scope.getPriorityData(); // 获取状态-lmm $scope.stateListData = {}; $scope.getStateData = function () { //lyl var data = { key: "task_sub_state", type: "list", }; api_wechatfile.getDictionary(data).then(function (res) { angular.forEach(res, function (v, i) { $scope.stateListData[v.value] = v.id; }); }); }; $scope.getStateData(); //时间控件 $scope.open = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.opened = !$scope.opened; }; $scope.endOpen = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.startOpened = false; $scope.endOpened = !$scope.endOpened; }; $scope.startOpen = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.endOpened = false; $scope.startOpened = !$scope.startOpened; }; // 确定 $scope.ok = function (item) { if ( $scope.taskDescribe && $scope.personData.data && $scope.priorityData.data && $scope.startTime && $scope.endTime ) { $scope.startTime = moment( new Date($scope.startTime).getTime() ).format("YYYY-MM-DD HH:mm:ss"); $scope.endTime = moment( new Date($scope.endTime).getTime() ).format("YYYY-MM-DD HH:mm:ss"); $scope.addData = { taskSub: { taskDescribe: $scope.taskDescribe, assign: $scope.personData.data, priority: $scope.priorityData.data, startTime: $scope.startTime, endTime: $scope.endTime, taskMonth: { id: scope.model.taskMonth.id, }, id: scope.editData.id, }, }; $scope.addData.taskSub["state"] = { id: $scope.stateListData[1], }; api_user_data .updData("taskSub", $scope.addData) .then(function (res) { if (res.status == 200) { SweetAlert.swal({ title: "修改成功!", type: "success", confirmButtonColor: "#007AFF", }); scope.refreshData(scope.jry_filterdata); $modalInstance.dismiss("cancel"); } else { SweetAlert.swal({ title: "修改失败", text: "系统错误,请重试!", type: "error", }); $modalInstance.dismiss("cancel"); } }); } else { SweetAlert.swal({ title: "修改失败", text: "必填项不能为空!", type: "error", }); } }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, }, backdrop: true, }); }; // 发布 $scope.release = function (data) { SweetAlert.swal( { title: "确认发布?", text: "请确定发布操作!", type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "确定", cancelButtonText: "取消", closeOnConfirm: false, closeOnCancel: false, }, function (isConfirm) { if (isConfirm) { data.state.id = $scope.stateListData[2]; delete data.item; api_user_data .updData("taskSub", { taskSub: data, }) .then(function (res) { if (res.status == 200) { SweetAlert.swal({ title: "发布成功!", type: "success", confirmButtonColor: "#007AFF", }); $scope.refreshData($scope.jry_filterdata); } else { SweetAlert.swal({ title: "删除失败", text: "系统错误,请重试!", type: "error", }); } }); } else { SweetAlert.swal("操作取消", "发布取消", "error"); } } ); }; // 删除 $scope.remove = function (data) { SweetAlert.swal( { title: "确认删除?", text: "删除的数据不可恢复,请确认继续操作!", type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "继续删除", cancelButtonText: "取消操作", closeOnConfirm: false, closeOnCancel: false, }, function (isConfirm) { if (isConfirm) { api_user_data.rmvData("taskSub", [data.id]).then(function (res) { if (res.status == 200) { SweetAlert.swal({ title: "删除成功!", type: "success", confirmButtonColor: "#007AFF", }); $scope.refreshData($scope.jry_filterdata); } else { SweetAlert.swal({ title: "删除失败", text: "系统错误,请重试!", type: "error", }); } }); } else { SweetAlert.swal("操作取消", "数据安全", "error"); } } ); }; $scope.refreshData = function (filterData) { // $scope.ldloading[style.replace('-', '_')] = true; if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } $scope.myData = []; $scope.memoryfilterData = filterData; api_doc_data.fetchDataList("taskSub", filterData).then( function (data) { var myData = data; $scope.gridOptions.totalItems = myData.totalNum; $scope.removeFileNum = myData.totalNum; if (angular.isArray(myData.list)) { $scope.myData = myData.list; for (var i = 0; i < $scope.myData.length; i++) { //添加序号 $scope.myData[i]["item"] = i + 1 + filterData.idx * filterData.sum; $scope.myData[i].startTime = moment( $scope.myData[i].startTime ).format("YYYY-MM-DD HH:mm:ss"); $scope.myData[i].endTime = moment( $scope.myData[i].endTime ).format("YYYY-MM-DD HH:mm:ss"); } } }, function () { // $scope.ldloading[style.replace('-', '_')] = false; } ); }; //分页控制 $scope.gridOptions.onRegisterApi = function (gridApi) { gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { $scope.jry_filterdata.idx = newPage - 1; $scope.fenye = newPage - 1; $scope.jry_filterdata.sum = pageSize; $scope.refreshData($scope.jry_filterdata); } ); }; $scope.fenye = 0; if ($scope.model.label == "分配任务") { $scope.jry_filterdata = { idx: $scope.fenye, sum: 10, taskSub: { taskMonth: { id: $scope.model.taskMonth.id, }, userid: loginUser.id, role: loginUser.role, }, }; } else { $scope.jry_filterdata = { idx: $scope.fenye, sum: 10, taskSub: { taskMonth: { id: $scope.model.taskMonth.id, }, userid: loginUser.id, role: loginUser.role, type: 1, }, }; } $scope.refreshData($scope.jry_filterdata); //新增模态框 $scope.newDistribution = function () { var modalInstance = $modal.open({ backdrop: false, templateUrl: "assets/views/customform/tpl/newTaskDistribution.html", controller: function ( $scope, scope, $modalInstance, api_doc_data, SweetAlert, api_user_data, api_wechatfile ) { $scope.personData = {}; //指派人 $scope.priorityData = {}; //优先级 $scope.personListData = {}; //指派人下拉数据 $scope.priorityListData = {}; //优先级下拉数据 $scope.startTime = ""; //开始时间 $scope.endTime = ""; //结束时间 $scope.taskDescribe = ""; //任务描述 $scope.motaikuang = ""; $scope.shijian = "哈哈"; // 指派人下拉框数据 $scope.getPersonData = function () { var data = { idx: 0, sum: 1000, user: { engineer: 1, } }; api_user_data.fetchDataList("user", data).then(function (res) { $scope.personListData = res.list; }); }; $scope.getPersonData(); //优先级下拉数据 $scope.getPriorityData = function () { var data = { key: "change_rick_level", type: "list", }; api_wechatfile.getDictionary(data).then(function (res) { $scope.priorityListData = res; }); }; // 控制结束时间的最大时间 $scope.jryEndMaxTime = scope.model.taskMonth.endTime; // 控制结束时间的最小时间 $scope.jryEndMinTime = scope.model.taskMonth.startTime; $scope.$watch("startTime", function (n, o) { if (n) { if (n > scope.model.taskMonth.startTime) { $scope.jryEndMinTime = n; } } }); // 控制开始时间的最小时间 $scope.jryStartMinTime = scope.model.taskMonth.startTime; // 控制开始时间的最大时间 $scope.jryStartMaxTime = scope.model.taskMonth.endTime; $scope.$watch("endTime", function (n, o) { if (n) { if (n < scope.model.taskMonth.endTime) { $scope.jryStartMaxTime = n; } } }); $scope.getPriorityData(); //时间控件 $scope.open = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.opened = !$scope.opened; }; $scope.endOpen = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.startOpened = false; $scope.endOpened = !$scope.endOpened; }; $scope.startOpen = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.endOpened = false; $scope.startOpened = !$scope.startOpened; }; $scope.datepickerPopup = "yyyy-MM-dd HH:mm:ss"; // 获取状态-lmm $scope.stateListData = {}; $scope.getStateData = function () { //lyl var data = { key: "task_sub_state", type: "list", }; api_wechatfile.getDictionary(data).then(function (res) { angular.forEach(res, function (v, i) { $scope.stateListData[v.value] = v.id; }); }); }; $scope.getStateData(); // 草稿保存 $scope.ok = function (item) { if ( $scope.taskDescribe && $scope.personData.data && $scope.priorityData.data && $scope.startTime && $scope.endTime ) { $scope.startTime = moment( new Date($scope.startTime).getTime() ).format("YYYY-MM-DD HH:mm:ss"); $scope.endTime = moment( new Date($scope.endTime).getTime() ).format("YYYY-MM-DD HH:mm:ss"); $scope.addData = { taskSub: { taskDescribe: $scope.taskDescribe, assign: $scope.personData.data, priority: $scope.priorityData.data, startTime: $scope.startTime, endTime: $scope.endTime, taskMonth: { id: scope.model.taskMonth.id, }, }, }; $scope.addData.taskSub["state"] = { id: $scope.stateListData[1], }; api_user_data .addData("taskSub", $scope.addData) .then(function (res) { if (res.status == 200) { SweetAlert.swal({ title: "保存成功!", type: "success", confirmButtonColor: "#007AFF", }); scope.refreshData(scope.jry_filterdata); $modalInstance.dismiss("cancel"); } else { SweetAlert.swal({ title: "保存失败", text: "系统错误,请重试!", type: "error", }); $modalInstance.dismiss("cancel"); } }); } else { SweetAlert.swal({ title: "保存失败", text: "必填项不能为空!", type: "error", }); } }; // 发布 $scope.release = function () { if ( $scope.taskDescribe && $scope.personData.data && $scope.priorityData.data && $scope.startTime && $scope.endTime ) { $scope.startTime = moment( new Date($scope.startTime).getTime() ).format("YYYY-MM-DD HH:mm:ss"); $scope.endTime = moment( new Date($scope.endTime).getTime() ).format("YYYY-MM-DD HH:mm:ss"); $scope.addData = { taskSub: { taskDescribe: $scope.taskDescribe, assign: $scope.personData.data, priority: $scope.priorityData.data, startTime: $scope.startTime, endTime: $scope.endTime, taskMonth: { id: scope.model.taskMonth.id, }, }, }; $scope.addData.taskSub["state"] = { id: $scope.stateListData[1], }; api_user_data .addData("taskSub", $scope.addData) .then(function (res) { if (res.status == 200) { SweetAlert.swal({ title: "保存成功!", type: "success", confirmButtonColor: "#007AFF", }); scope.refreshData(scope.jry_filterdata); $modalInstance.dismiss("cancel"); } else { SweetAlert.swal({ title: "保存失败", text: "系统错误,请重试!", type: "error", }); $modalInstance.dismiss("cancel"); } }); } else { SweetAlert.swal({ title: "保存失败", text: "必填项不能为空!", type: "error", }); } }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, }, backdrop: true, }); }; }, }); // 多次反馈文本域组件--jry formlyConfigProvider.setType({ name: "ui-feedbacktTextarea", extends: "textarea", templateUrl: "assets/views/customform/tpl/ui-feedbacktTextarea.html", defaultOptions: function (options) { return { templateOptions: { transform: function (model, value) { return value; }, }, validation: { messages: { maxlength: function (viewValue, modelValue, scope) { if (viewValue != null) { if (viewValue.length > scope.to.maxlength) { return ( scope.to.label + " 字数(" + viewValue.length + ")超限(" + scope.to.maxlength + ")" ); } else { return ""; } } }, }, }, }; }, controller: [ "$scope", "moment", function ($scope, moment) { // console.log($scope); var timeKey = $scope.options.templateOptions.time; $scope.time = moment($scope.model[timeKey]).format( "YYYY-MM-DD HH:mm:ss" ); var value = $scope.model[$scope.options.key]; if (angular.isFunction($scope.options.templateOptions.transform)) { $scope.model[$scope.options.key] = $scope.options.templateOptions.transform( $scope.originalModel, value ); } if (angular.isFunction($scope.options.templateOptions.felditem)) { $scope.options.templateOptions.felditem($scope); } }, ], }); //任务管理开始时间--jry formlyConfigProvider.setType({ name: "ui-jryStartdatepicker", templateUrl: "assets/views/customform/tpl/ui-jryStartdatepicker.html", extends: "input", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: { ngModelAttrs: getNgModelAttr(datepicker_attr, datepicker_bindings), templateOptions: { datepickerPopup: "yyyy-MM-dd HH:mm:ss", }, }, controller: [ "$scope", "$filter", function ($scope, $filter) { // console.log($scope.model[$scope.options.key],'lmm'); $scope.mindata = new Date( $scope.options.templateOptions.transform($scope.model).getTime() + 5 * 60 * 1000 ); if ($scope.model[$scope.options.key]) { $scope.model[$scope.options.key] = $filter("date")( $scope.model[$scope.options.key], $scope.options.templateOptions.datepickerPopup ); } // console.log($scope.model[$scope.options.key],'lmm'); // console.log($scope.model,'lmm',$scope.options.key); $scope.options.initialValue = $scope.model[$scope.options.key]; $scope.endOpen = true; $scope.datepicker = {}; $scope.datepicker.opened = false; $scope.datepicker.open = function ($event) { $scope.datepicker.opened = true; }; }, ], }); //任务管理结束时间--jry formlyConfigProvider.setType({ name: "ui-jryEnddatepicker", templateUrl: "assets/views/customform/tpl/ui-jryEnddatepicker.html", extends: "input", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: { ngModelAttrs: getNgModelAttr(datepicker_attr, datepicker_bindings), templateOptions: { datepickerPopup: "yyyy-MM-dd HH:mm:ss", }, }, controller: [ "$scope", "$filter", function ($scope, $filter) { $scope.mindata = new Date( $scope.options.templateOptions.transform($scope.model).getTime() + 5 * 60 * 1000 ); if ($scope.model[$scope.options.key]) { $scope.model[$scope.options.key] = $filter("date")( $scope.model[$scope.options.key], $scope.options.templateOptions.datepickerPopup ); } $scope.options.initialValue = $scope.model[$scope.options.key]; $scope.endOpen = true; $scope.datepicker = {}; $scope.datepicker.opened = false; $scope.datepicker.open = function ($event) { $scope.datepicker.opened = true; }; }, ], }); //下拉多选框灵活组件--jry formlyConfigProvider.setType({ name: "ui-jry_multiselectplus", extends: "multiCheckbox", templateUrl: "assets/views/customform/tpl/ui-multiselectplus.html", defaultOptions: function (options) { return { templateOptions: { refreshData: function (search, options, model, that) { // var process = options.templateOptions.ApiService.all(""); if (search) { } else { } var postData = options.templateOptions.optionsPostData; if (angular.isFunction(options.templateOptions.optionsPostData)) { postData = options.templateOptions.optionsPostData( options, model, that ); } options.templateOptions.ApiService.fetchDataList( options.templateOptions.optionsUrl, options.templateOptions.optionsPostData ).then(function (result) { // if (!options.templateOptions.options) { // options.templateOptions.options = []; // } if (options.templateOptions.optionsDataKey) { options.templateOptions.options = result[options.templateOptions.optionsDataKey]; } else { options.templateOptions.options = result; } if (options.templateOptions.optionsChecked) { // return options.value = null; options.value(options.model[options.key]); } }); }, refreshDelay: 0, // }, validators: { required: { expression: function (viewValue, modelValue) { var value = modelValue || viewValue; return value != null; // return value.length>=1; // if (modelValue && viewValue) { // return value != null; // } else { // var value = modelValue || viewValue; // return value.length > 0; // } }, }, }, }, }; }, controller: [ "$scope", function ($scope) { console.log($scope.to); if (angular.isArray($scope.model[$scope.options.key])) { } else { $scope.model[$scope.options.key] = []; } }, ], }); //下拉框组件 formlyConfigProvider.setType({ name: "ui-select", extends: "select", templateUrl: "assets/views/customform/tpl/ui-select.html", defaultOptions: function (options, scope) { return { templateOptions: { // refresh: function() {}, getScope: function () { return scope; }, refreshDelay: 0, linkage: function (modelName, data, model, modelKey, key, timekey) { //POST console.log(model, "model"); angular.extend(data, { idx: 0, sum: 1000, }); options.templateOptions.APIService.fetchDataList( modelName, data ).then(function (response) { var myData = options.templateOptions.Restangular.stripRestangular(response); var list = myData.list; console.log(myData); // api_bpm_domain.expectedTime("L" + item).then(function(res){ // console.log('balabalabala'); // console.log(res); // }) if (list.length == 1) { if (options.templateOptions.APIport) { options.templateOptions.APIport.expectedTime( "L" + list[0][key].id ).then(function (response) { if (response.state == "200") { // if (model.$parent.model && model.$parent.model.incident) { // } else { // model.$parent.model = { 'incident': {} }; // } var myDatas = response.serviceLevelAgreement; //逾期 scope.$parent.$parent.$parent.model.incident.overdueTime = response.date; //解决 scope.$parent.$parent.$parent.model.incident.expectIntroTime = myDatas.resolveTime; //响应 scope.$parent.$parent.$parent.model.incident.expectResponseTime = myDatas.responseTime; } else { } }); } angular.forEach(model.fields, function (item) { angular.forEach(model.fields, function (item) { if (item.templateOptions.pkey == modelKey + "." + key) { item.model.id = ""; if (key == "place") { item.templateOptions.options = list; } else if (key == "placeDTO") { item.templateOptions.options = list; } else if (key == "requester") { } else { item.value(list[0][key][item.key]); } } }); }); } else { if (model.fields) { angular.forEach(model.fields, function (item) { angular.forEach(model.fields, function (item) { if (item.templateOptions.pkey == modelKey + "." + key) { item.model.id = ""; if (key == "place") { item.templateOptions.isnosearch = true; item.templateOptions.options = list; } if (key == "placeDTO") { item.templateOptions.options = list; } if (key == "requester") { } if (key == "room") { item.templateOptions.options = list; } } }); }); } else { angular.forEach( scope.$parent.$parent.$parent.fields, function (item) { angular.forEach( scope.$parent.$parent.$parent.fields, function (item) { if ( item.templateOptions.pkey == modelKey + "." + key ) { if (key == "place") { item.templateOptions.isnosearch = true; item.templateOptions.options = list; scope.$parent.$parent.$parent.model.incident.place = model.incident.place; } if (key == "placeDTO") { item.templateOptions.options = list; } if (key == "requester") { } } } ); } ); } } console.log(key); //报修科室 if (key == "dept") { // 报修科室单选 scope.$parent.$parent.$parent.model.incident.department = response.list[0]; scope.$parent.$parent.$parent.model.incident.contactsInformation = response.list[0].phone; // scope.$parent.$parent.$parent.model.incident.houseNumber = response.list[0].place.area.area + response.list[0].place.place; // 选择重复事件侧滑框 scope.$parent.$parent.$parent.model[ "repeatIncidentShow" ] = false; setTimeout(() => { scope.$parent.$parent.$parent.model[ "repeatIncidentShow" ] = true; }, 500); } // 报修人 if (key == "requester") { // 报修人单选 scope.$parent.$parent.$parent.model.incident.requester = response.list[0]; console.log(scope.$parent.$parent.$parent.model); scope.$parent.$parent.$parent.model.incident.account = response.list[0].account; var selectedItem = response.list[0]; var data = { requester: selectedItem, }; scope.$parent.$parent.$parent.model["requestershow"] = selectedItem; console.log(selectedItem, "----------------------"); // if (selectedItem.dept.place.place) { // scope.$parent.$parent.$parent.model.incident.houseNumber = selectedItem.dept.place.area.area + selectedItem.dept.place.place // } scope.$parent.$parent.$parent.model.incident.houseNumber = selectedItem.houseNumber ? selectedItem.houseNumber : ""; scope.$parent.$parent.$parent.model.incident.area.id = selectedItem.place ? selectedItem.place.area.id : null; scope.$parent.$parent.$parent.model.incident.place.id = selectedItem.place ? selectedItem.place.id : null; if(scope.$parent.$parent.$parent.model.incident.area.id){ options.templateOptions.APIService.fetchDataList( 'place', {"place":{"areaId":scope.$parent.$parent.$parent.model.incident.area.id},"idx":0,"sum":1000} ).then(function (response1) { for (var i = 0; i < scope.fields.length; i++) { if(scope.fields[i].templateOptions.onlyKey == 'place_start'){ scope.fields[i].templateOptions.options = response1.status == 200?response1.list:[]; } } }) } console.log(scope, 89898998); // console.log(scope.formData,'接单页面'); //1,选择报修人后带入区域地点2020年4月23日19:34:17 scope.model.selecthouseNumber = selectedItem.place ? selectedItem.place : {}; scope.$root.selecthouseNumber = selectedItem.place ? selectedItem.place : {}; // options.templateOptions.ApiService.addData( // "requester", // data // ).then(function (response) { // if (response.status == 200) { if (scope.$parent.$parent.$parent) { if (scope.$parent.$parent.$parent.place) { scope.$parent.$parent.$parent.place.id = ""; } if (scope.$parent.$parent.$parent.area) { scope.$parent.$parent.$parent.area.id = ""; } scope.$parent.$parent.$parent.model.incident.contacts = selectedItem.name; if ( selectedItem.phone && selectedItem.phone != null && selectedItem.phone != "" ) { scope.$parent.$parent.$parent.model.incident.contactsInformation = selectedItem.phone; } else { scope.$parent.$parent.$parent.model.incident.contactsInformation = selectedItem.telephone; } if ( selectedItem.requesterTypeDTO && selectedItem.requesterTypeDTO.id == 2 ) { scope.$parent.$parent.$parent.model.incident.priority.id = 2; } } // if (!response.data.id) { // response.data.id = selectedItem.id; // } console.log(scope); // if (scope.$parent.$parent.$parent.model.saveAgain) { // if (selectedItem.place && selectedItem.place.id) { // scope.$parent.$parent.$parent.model.incident.place.id = selectedItem.place.id // scope.$parent.$parent.$parent.model.incident.place.area.id = selectedItem.place.area.id // }; // } else { // if (selectedItem.place && selectedItem.place.id) { // scope.$parent.$parent.$parent.model.incident.place.id = selectedItem.place.id // scope.$parent.$parent.$parent.model.incident.area.id = selectedItem.place.area.id // }; // } // if(scope.$parent.$parent.$parent.model.incident.area){ // scope.$parent.$parent.$parent.model.incident.area.id = 1;//teshu // } if (selectedItem.id) { scope.$parent.$parent.$parent.model.incident.account = selectedItem.account; } // 选择重复事件侧滑框 // if (scope.$parent.$parent.$parent.model.incident.category && scope.$parent.$parent.$parent.model.incident.category.id) { scope.$parent.$parent.$parent.model[ "repeatIncidentShow" ] = false; setTimeout(() => { scope.$parent.$parent.$parent.model[ "repeatIncidentShow" ] = true; }, 500); // } // } // }); } //新建事件,选择派单,选择工作组查找处理人baba if (key == "handlerUser") { model.fields.forEach(function (v) { if (v.templateOptions.pkey == "incident.handlerUser") { v.templateOptions.options = list; if (model.model.incident.handlerUser) { if (model.model.incident.handlerUser.id) { var flag = list.some(function (v) { return v.id == model.model.incident.handlerUser.id; }); if (flag) { v.model.id = model.model.incident.handlerUser.id; } } } } }); } }); }, validators: { required: { expression: function (viewValue, modelValue) { var value = modelValue || viewValue; return value != null; // return value.length>=1; // if (modelValue && viewValue) { // return value != null; // } else { // var value = modelValue || viewValue; // return value.length > 0; // } }, }, }, }, controller: [ "$scope", "$rootScope", "api_bpm_domain", "$stateParams", function ($scope, $rootScope, api_bpm_domain, $stateParams) { // $scope.myFilter = function(item) { // return !$scope.search || $select.selected[to.labelProp || 'name'] == $scope.search; // } console.log($scope, "风浪"); if($scope.to.onlyKey === 'inspection.dictionary'){ //巡检列表-新增-巡检类型baba console.log(location) var loc = location.href.split('api_bpm_data')[1] || ''; if(loc.length <= 2){ // 新增轮询计划的时候 $scope.model.id = 1715;//默认系统默认 } } //工作组添加全部选项 // if($scope.options.templateOptions.label == '工作组'){ // $scope.options.templateOptions.options.unshift({id:0,groupName:'全部'}); // $scope.model._group = 0; // } if ( $scope.options.templateOptions.pkey && $scope.options.templateOptions.pkey == "incident.place" ) { if ( $scope.$parent && $scope.$parent.$parent.$parent.model && $scope.$parent.$parent.$parent.model.incident.area && $scope.$parent.$parent.$parent.model.incident.area.id ) { $scope.options.templateOptions.linkage( "place", { place: { areaId: $scope.$parent.$parent.$parent.model.incident.area.id, // area:{ // id:$scope.$parent.$parent.$parent.model.incident.area.id // } }, }, $scope.$parent.$parent.$parent.model, "incident", "place" ); } } $scope.myFilter = $scope; // console.log($scope.options.templateOptions) console.log($scope, 77777); if (angular.isDefined($stateParams.model) && $stateParams.model != "") { var paramsModel = JSON.parse($stateParams.model) if ($scope.options.templateOptions.onlyKey == "c_account" && paramsModel.model.incident.requester.account) { $scope.$parent.$parent.$parent.model.repeatIncidentShow = true; $scope.$parent.$parent.$parent.model.incident.account = paramsModel.model.incident.requester.account; } } //处理人根据故障现象自动带入baba if ($scope.options.templateOptions.onlyKey == "c_handlerUser") { console.log($scope.options.templateOptions.pkey); if ($scope.$parent.$parent.$parent.model.incident.handlerUser) { if ( $scope.$parent.$parent.$parent.model.incident.handlerUser.id ) { $scope.$parent.$parent.$parent.model.assignee = $scope.$parent.$parent.$parent.model.incident.handlerUser.id; $scope.options.model.id = $scope.$parent.$parent.$parent.model.incident.handlerUser.id; } } } // 关闭事件页面满意度评价下拉框处理 if ($scope.options.templateOptions.onlyKey == "close_degree") { $scope.model.id = $scope.$parent.$parent.$parent.$parent.$parent.$parent.formData.model.incident.wxdegree.id; } if ($scope.options.templateOptions.initData == 1) { $scope.options.templateOptions.onChange( $scope.model.id, $scope.options, $scope ); } if ($scope.options.templateOptions.transform) { $scope.options.templateOptions.onChange( $scope.model.id, $scope.options, $scope ); } if (angular.isFunction($scope.options.templateOptions.translate)) { $scope.model[$scope.options.key] = $scope.options.templateOptions.translate( $scope.options, $rootScope, $scope ); } if ( angular.isFunction($scope.options.templateOptions.translatefunc) ) { $scope.model[$scope.options.key] = $scope.options.templateOptions.translatefunc( $scope.options, $rootScope, $scope ); } if ( angular.isFunction($scope.options.templateOptions.onlyfunction) ) { $scope.options.templateOptions.onlyfunction( $scope.options, $rootScope, $scope ); } }, ], }; }, }); //下拉框组件(巡检计划-查看) formlyConfigProvider.setType({ name: "ui-select-xj", extends: "select", templateUrl: "assets/views/customform/tpl/ui-select-xj.html", defaultOptions: function (options, scope) { return { templateOptions: { getScope: function () { return scope; }, refreshDelay: 0, validators: { required: { expression: function (viewValue, modelValue) { var value = modelValue || viewValue; return value != null; }, }, }, }, controller: [ "$scope", "$rootScope", "api_bpm_domain", "$stateParams", function ($scope, $rootScope, api_bpm_domain, $stateParams) { $scope.model[$scope.options.key] = '0';//默认全部 var arr = []; if($scope.model.inspection.batchNos){ arr = $scope.model.inspection.batchNos.map(v=>({value:v,name:v})); } arr.unshift({value:'0',name:'全部'}); $scope.options.templateOptions.options = arr; console.log($scope) // ts.$parent.fields.forEach(v=>{ // if(v.templateOptions.onlyKey === "batchNos"){ // //巡检计划-批次号 // var batchNos = $scope.model.batchNos === "0"?"":$scope.model.batchNos; // v.templateOptions.getScope().refreshData(batchNos) // } // }) // ts.$parent.fields.forEach(v=>{if(v.templateOptions.onlyKey === "batchNos"){var batchNos = item == "0"?"":item;v.templateOptions.getScope().refreshData(batchNos);}}) // console.log($scope.options) // console.log($scope.model) }, ], }; }, }); //下拉多选框组件 formlyConfigProvider.setType({ name: "ui-multiselect", extends: "select", templateUrl: "assets/views/customform/tpl/ui-multiselect.html", defaultOptions: function (options, $scope) { return { templateOptions: { getLoginUser: function () { return $scope.$root.user; }, refresh: function () { }, refreshDelay: 1000, }, }; }, controller: [ "$scope", function ($scope) { $scope.model[$scope.options.key] = []; }, ], }); //下拉多选全选组件 formlyConfigProvider.setType({ name: "ui-isteven", extends: "select", templateUrl: "assets/views/customform/tpl/ui-isteven.html", defaultOptions: function (options,$scope) { return { templateOptions: { refresh: function () { console.log(options) options.templateOptions .refreshData(options.templateOptions.APIService) .then(function (result) { if(result.status == 200){ console.log(result.list) //树形结构转换 function formatDataTree2(json){ var _json = JSON.parse(JSON.stringify(json)); return _json.filter(p=>{ var _arr = _json.filter(c=>(c.parent?c.parent.id === p.id:false)); _arr.length && (p.children = _arr); return !p.parent; }) } console.log(result.list) var list = formatDataTree2(result.list); console.log(list) // $scope.treeList = angular.copy(list); var resultList = []; //转换数据 function trasData(list,obj){ if(obj){ //有父级 list.forEach(v=>{ var type = ""+ v.parent.type +"";//父级type var i = resultList.findIndex(c=>c.type == type); if(v.children){ resultList.splice(i+1,0,{ type: ""+ v.type +"", msId: v.id, msGroup: true, },{msGroup: false}) trasData(v.children,v); }else{ resultList.splice(i+1,0,{...v,...{ticked:false}}); } }) }else{ //顶级 list.forEach(v=>{ if(v.children){ resultList.push({ type: ""+ v.type +"", msId: v.id, msGroup: true, },{msGroup: false}) trasData(v.children,v); }else{ resultList.push(...v,...{ticked:false}); } }) } return resultList; } var __arr = trasData(list,null); // console.log(__arr,options.model.typeIds.split(',')) if(options.model.typeIds){ //有巡检类型,则需要回显 __arr.forEach(w=>{ w.ticked = options.model.typeIds.split(',').includes(w.id+''); }) } $scope.webBrowsersGrouped = __arr; console.log($scope.webBrowsersGrouped); } }) }, refreshDelay: 1000, }, }; }, controller: [ "$scope", function ($scope) { console.log($scope) $scope.to.refresh();//获取列表数据 // $scope.model[$scope.options.key] = []; //单项点击或菜单 $scope.fClick = function(data){ console.log($scope.outputBrowsers) $scope.$parent.$parent.$parent.model.inspection.typeIds = $scope.outputBrowsers.map(v=>v.id).join(); console.log($scope.$parent.$parent.$parent.model.inspection.typeIds) // if(data.id){ // //单项点击 // if($scope.$parent.$parent.$parent.model.inspection.typeIds){ // //有巡检类型 // var arr = $scope.$parent.$parent.$parent.model.inspection.typeIds.split(','); // if(data.ticked){ // arr.push(data.id); // }else{ // arr = arr.filter(v=>v != data.id); // } // $scope.$parent.$parent.$parent.model.inspection.typeIds = arr.join(); // }else{ // //无巡检类型 // $scope.$parent.$parent.$parent.model.inspection.typeIds = 1; // if(data.ticked){ // $scope.$parent.$parent.$parent.model.inspection.typeIds = data.id + ''; // }else{ // $scope.$parent.$parent.$parent.model.inspection.typeIds = ''; // } // } // }else{ // // 菜单点击 // console.log($scope.webBrowsersGrouped,data.msId); // var treeResultArr = $scope.webBrowsersGrouped.filter(v=>{ // return v.parent?v.parent.id == data.msId:false; // }) // if(treeResultArr.every(v=>v.ticked)){ // //全部都是true的情况下,需要移除,否则增加 // } // console.log(treeResultArr) // // -------------------------------------- // // var treeArr = []; // // function findParent(treeList){ // // treeList.forEach(v=>{ // // if(v.id == data.msId){ // // treeArr = v.children; // // }else{ // // if(v.children){ // // findParent(v.children); // // } // // } // // }) // // return treeArr; // // } // // var treeResultArr = findParent($scope.treeList); // // console.log(treeResultArr) // // ----------------------------------- // } } // 全选 $scope.fSelectAll = function(){ // console.log($scope.webBrowsersGrouped) var arr = $scope.webBrowsersGrouped.filter(v=>v.id).map(v=>v.id); // console.log(arr); $scope.$parent.$parent.$parent.model.inspection.typeIds = arr.join(); console.log($scope.$parent.$parent.$parent.model.inspection.typeIds) } // 全不选 $scope.fSelectNone = function(){ $scope.$parent.$parent.$parent.model.inspection.typeIds = ''; console.log($scope.$parent.$parent.$parent.model.inspection.typeIds) } // 配置信息 $scope.outputBrowsers = []; $scope.localLang = { selectAll: "全选", selectNone: "全不选", nothingSelected: "请选择" } }, ], }); //下拉多选框灵活组件 formlyConfigProvider.setType({ name: "ui-multiselectplus", extends: "multiCheckbox", templateUrl: "assets/views/customform/tpl/ui-multiselectplus.html", defaultOptions: function (options, $scope) { return { templateOptions: { getLoginUser: function () { return $scope.$root.user; }, refreshData: function (search, options, model, that) { console.log(search, options, model, that) var process = options.templateOptions.ApiService.all(""); if (search) { } else { } var postData = options.templateOptions.optionsPostData; if (angular.isFunction(options.templateOptions.optionsPostData)) { postData = options.templateOptions.optionsPostData( options, model, that ); } if (options.templateOptions.modelreasondata) { postData = options.templateOptions.modelreasondata; } if (options.templateOptions.isnosearch) { return; } process .customPOST(postData, options.templateOptions.optionsUrl) .then(function (result) { // if (!options.templateOptions.options) { // options.templateOptions.options = []; // } // 过滤下拉列表已选择的值 var modelVal = $scope.model[$scope.options.key]; var ides = []; var rList = result.list || result; if ($scope.options.key == "serviceTypeIds") { modelVal = modelVal.map(function (v) { if (typeof v !== 'object') { return { id: v }; } else { return v; } }) } for (var i = 0; i < modelVal.length; i++) { for (var j = 0; j < rList.length; j++) { if (rList[j].id == modelVal[i].id) { ides.push(rList[j].id); } } } ides.forEach(function (v1) { rList.forEach(function (v2) { if (v1 == v2.id) { rList = rList.filter(v => v.id != v2.id); } }) }) options.templateOptions.options = rList; // if (options.templateOptions.optionsDataKey) { // options.templateOptions.options = // result[options.templateOptions.optionsDataKey]; // } else { // options.templateOptions.options = result; // } if (options.templateOptions.optionsChecked) { // return options.value = null; options.value(options.model[options.key]); } }); }, refreshDelay: 0, // }, // validators: { // required: { // expression: function(viewValue, modelValue) { // var value = modelValue || viewValue; // // return value.length>=1; // // if (modelValue && viewValue) { // // return value != null; // // } else { // // var value = modelValue || viewValue; // // return value.length > 0; // // } // } // } }, }; }, controller: [ "$scope", function ($scope) { if (angular.isArray($scope.model[$scope.options.key])) { } else { $scope.model[$scope.options.key] = []; } }, ], }); //下拉树形多选组件 formlyConfigProvider.setType({ name: "ui-multiselect-tree", extends: "multiCheckbox", templateUrl: "assets/views/customform/tpl/ui-multi-select-tree.html", defaultOptions: function (options) { return { templateOptions: { linkage: function (modelName, data, model, modelKey, key) { angular.extend(data, { idx: 0, sum: 10, }); options.templateOptions.APIService.fetchDataList( modelName, data ).then(function (response) { var myData = options.templateOptions.Restangular.stripRestangular(response); var list = myData.list; if (list.length == 1) { angular.forEach(model.fields, function (item) { angular.forEach(model.fields, function (item) { if (item.templateOptions.pkey == modelKey + "." + key) { item.model.id = ""; if (key == "place") { item.templateOptions.options = list; } else { item.value(list[0][key][item.key]); } } }); }); } }); }, // my_tree_handler : function(items) { // }, // onFilterCallback : function(items) { // }, // onFilterCallback : function(items) { // }, refresh: function (items) { var treedata = []; function convertListToTree(data, treeMap) { treedata = data; for (var i = 0; i < data.length; i++) { for (var j = 0; j < data.length; j++) { if (data[i].pid && data[i].id && data[i].pid != 0) { if (data[i].pid == data[j].id) { data[i].parent = data[j]; } } } } var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = null; //Initially set our loop to null //loop over data for (var i = 0; i < data.length; i++) { var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent idToNodeMap[datum.id] = datum; //Does this node have a parent? if ( typeof datum.parent === "undefined" || datum.parent === null ) { //Doesn't look like it, so this node is the root of the tree root = datum; treeMap[datum.id] = root; } else { //This node has a parent, so let's look it up using the id parentNode = idToNodeMap[datum.parent.id]; //We don't need this property, so let's delete it. delete datum.parent; //Let's add the current node as a child of the parent node. parentNode.children.push(datum); } } return root; } function convertParentToChildList(data) { // console.log("data="+JSON.stringify(data)) var treeMap = {}; var list = []; convertListToTree(data, treeMap); angular.forEach(treeMap, function (item) { list.push(item); }); return list; } function selectItem(pmodel, childrens) { if (angular.isArray(pmodel)) { angular.forEach(pmodel, function (index) { if (index && index.id) { angular.forEach(childrens, function (item) { if (item.id == index.id) { item.selected = true; } if (item && item.children) { selectItem(pmodel, item.children); } }); } }); } else { if (pmodel && pmodel.id) { angular.forEach(childrens, function (item) { if (item.id == pmodel.id) { item.selected = true; } if (item && item.children) { selectItem(pmodel, item.children); } }); } } } // if(angular.isUndefined(options.model[options.key])||options.model[options.key]==null){ options.templateOptions .refreshData(options.templateOptions.APIService) .then(function (result) { if (result.status == 200) { if (!options.templateOptions.options) { options.templateOptions.options = []; } if (options.templateOptions.optionsDataKey) { options.templateOptions.options = convertParentToChildList( result[options.templateOptions.optionsDataKey] ); } else { options.templateOptions.options = convertParentToChildList(result); } //set default value var pmodel, i = 0; if (options.templateOptions.pkey) { if (options.templateOptions.pkey.indexOf(".") > 0) { angular.forEach( options.templateOptions.pkey.split("."), function (p) { if (i == 0) { if (options.model[p] == null) { options.model[p] = {}; } pmodel = options.model[p]; i++; } else { if (pmodel[p] == null) { pmodel[p] = {}; } pmodel = pmodel[p]; } } ); } else { pmodel = options.model; } } if (pmodel) { pmodel = pmodel[options.key]; } else if (options.model) { pmodel = options.model[options.key]; } else { pmodel = options.templateOptions.options; } if (angular.isArray(pmodel)) { if (pmodel) { // if(options.templateOptions.isMultiSelect==true){ // options.templateOptions.refreshData(options.templateOptions.APIService).then(function(rep){ // selectParent(pmodel,rep[options.templateOptions.optionsDataKey]); // }) // }else{ selectItem(pmodel, options.templateOptions.options); // } } } else { if (pmodel && pmodel.id) { selectItem(pmodel, options.templateOptions.options); } } items.inputModel = options.templateOptions.options; } }); }, }, validators: { required: { expression: function (viewValue, modelValue) { var value = modelValue || viewValue; if (angular.isArray(value)) { for (var i = 0; i < value.length; i++) { value[i] = { id: value[i].id, }; } return value.length > 0; } else { // console.log(options) // return value = "true"; return value != null; } }, }, }, }; }, controller: [ "$scope", "api_configure_form", function ($scope, api_configure_form) { if ($scope.options.templateOptions.isMultiSelect) { // console.log($scope); } else { if ($scope.model[$scope.options.key]) { } } }, ], }); //多选下拉框组件 formlyConfigProvider.setType({ name: "ui-multi-select-tree", extends: "input", templateUrl: "assets/views/customform/tpl/ui-multi-select-tree.html", defaultOptions: function (options,scope) { return { templateOptions: { linkage: function (modelName, data, model, modelKey, key) { angular.extend(data, { idx: 0, sum: 10, }); options.templateOptions.APIService.fetchDataList( modelName, data ).then(function (response) { var myData = options.templateOptions.Restangular.stripRestangular(response); var list = myData.list; if (list.length == 1) { angular.forEach(model.fields, function (item) { angular.forEach(model.fields, function (item) { if (item.templateOptions.pkey == modelKey + "." + key) { item.model.id = ""; if (key == "place") { item.templateOptions.options = list; } else { item.value(list[0][key][item.key]); } } }); }); } }); }, getparentdata: function (items) { // console.log(items) }, refresh: function (items, search, fn) { console.log(items, options); var treedata = []; function convertListToTree(data, treeMap) { console.log(data, treeMap) treedata = data; for (var i = 0; i < data.length; i++) { for (var j = 0; j < data.length; j++) { if (data[i].pid && data[i].id && data[i].pid != 0) { if (data[i].pid == data[j].id) { data[i].parent = data[j]; } } // if (data[i].id) { // if (data[i].id== data[j].id) { // data[i].parent = data[j]; // } // } } } var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = []; //Initially set our loop to null if (search == "search" && items.filterKeyword) { function transform(nodes) { var treeConverter = { result: null, //转化后的结果,是根节点,所有节点都是从根节点长出来的 attributeName: "id", //节点唯一标识符 needFind: true, //是否查询节点在result中已经存在,为了优化效率 transform: function (node) { //转化递归函数,参数:一个待插入节点 if (node.parent != null) { //该节点有父节点 var newNode = this.transform(node.parent); //递归进入,返回值为一个节点,用作父节点,该父节点必然存在于result中,这点由下面的算法可以控制 if (this.needFind) { for (var i = 0; i < newNode.children.length; i++) { //查找要插入的node子节点是否在newNode这个父节点中存在 if ( newNode.children[i][this.attributeName] === node[this.attributeName] ) { return newNode.children[i]; //存在的话直接返回newNode父节点内的该子节点,该子节点必然存在于result中,作为返回值它将被用作上级递归的newNode,因此newNode必然存在于result中 } } } this.needFind = false; //不存在的话,关闭之后递归的循环判断,因为待插入node节点不存在于result中,故而它的子节点一定不存在于result中,不用再循环判断 // delete node.parent; //删除该节点的parent属性,如果有的话 node.children = []; //因为确定是要新插入的节点,没有children:[]属性,故给该节点增加children:[]属性 newNode.children.push(node); //将该node节点push进newNode的子节点数组中 return node; //return该新插入节点,作为递归返回值给上层,用作newNode父节点,node存在于result中故newNode存在于result中 } else if (node.parent == null) { //该叶节点没有父节点,即为根节点 // delete node.parent; //删除该节点的parent属性,如果有的话 if (this.result == null) { //根节点不存在 node.children = []; //给该节点增加children:[]属性 return (this.result = node); //该节点赋给result,并return根节点,作为返回值它将被用作上级递归的newNode,因此newNode必然存在于result中 } else { node.children = []; // 顶级去重 for ( var i = 0; i < this.result.children.length; i++ ) { if ( this.result.children[i][this.attributeName] === node[this.attributeName] ) { return this.result.children[i]; } } this.result.children.push(node); return node; // 直接return根节点,作为返回值它将被用作上级递归的newNode,因此newNode必然存在于result中 } } }, getWhole: function (nodes, attributeName) { //传入整个叶子节点数组,attributeName作为节点唯一标识符属性,返回整个转化结果 var _node = {}; _node.children = []; this.result = _node; //重置根节点 this.attributeName = attributeName == null ? "id" : attributeName; //唯一标识符默认为“id” nodes = JSON.parse(JSON.stringify(nodes)); //复制出一个新的节点对象作为参数,保证不改变原有数据 nodes.forEach((item) => { //循环调用转化方法 this.needFind = true; //重置开启节点是否已存在判断,保证不插入重复节点 this.transform(item); }); return this.result; //返回根节点 }, }; var result = treeConverter.getWhole(nodes); //调用 return result; } var li = transform(data).children; // li=[...new Set(li)] console.log(li); treeMap = li; fn(li); return li; } else { //loop over data for (var i = 0; i < data.length; i++) { var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent idToNodeMap[datum.id] = datum; //Does this node have a parent? if ( typeof datum.parent === "undefined" || datum.parent === null ) { //Doesn't look like it, so this node is the root of the tree root = datum; treeMap[datum.id] = root; } else { //This node has a parent, so let's look it up using the id parentNode = idToNodeMap[datum.parent.id]; //We don't need this property, so let's delete it. // delete datum.parent; //Let's add the current node as a child of the parent node. parentNode.children.push(datum); } } } console.log(root); return root; } function convertParentToChildList(data) { var treeMap = {}; var list = []; if (search == "search" && items.filterKeyword) { var lis = convertListToTree(data, treeMap); return lis; } else { if (data[0] && data[0].orders) { list = data; } else { convertListToTree(data, treeMap); angular.forEach(treeMap, function (item) { // console.log("item="+JSON.stringify(item)) list.push(item); }); } console.log(list); return list; } } function selectItem(pmodel, childrens) { if (angular.isArray(pmodel)) { angular.forEach(pmodel, function (index) { if (index && index.id) { angular.forEach(childrens, function (item) { if (item.id == index.id) { item.selected = true; } if (item && item.children) { selectItem(pmodel, item.children); } }); // angular.forEach(treedata,function(parentdata){ // if(parentdata.id == index.id){ // if(parentdata.parent&&parentdata.parent.id){ // parentdata.parent.$ // } // item.selected = true; // } // if (item && item.children) { // selectItem(pmodel ,item.children); // } // }); } }); } else { if (pmodel && pmodel.id) { angular.forEach(childrens, function (item, index) { if (item.id == pmodel.id) { item.selected = true; // delete item.children; } if (item && item.children) { selectItem(pmodel, item.children); } }); } } } function selectItemchild(pmodel, childrens) { if (angular.isArray(pmodel)) { angular.forEach(pmodel, function (index) { if (index && index.id) { angular.forEach(childrens, function (item) { if (item.id == index.id) { item.selected = true; } if (item && item.children) { selectItem(pmodel, item.children); } }); } }); } else { if (pmodel && pmodel.id) { angular.forEach(childrens, function (item, index) { if (item.id == pmodel.id) { item.selected = true; childrens[index].selected = true; } if (item && item.children) { selectItem(pmodel, item.children); } }); } } } // if(angular.isUndefined(options.model[options.key])||options.model[options.key]==null){ if (search === "search" && items.filterKeyword) { // bala:树形模糊搜索 options.templateOptions .bala(options.templateOptions.APIService, items.filterKeyword) .then(function (result) { result.list = [...new Set(result.list)]; //去重 if (!options.templateOptions.options) { options.templateOptions.options = []; } if (options.templateOptions.optionsDataKey) { options.templateOptions.options = convertParentToChildList( result[options.templateOptions.optionsDataKey] ); } else { options.templateOptions.options = convertParentToChildList(result); } //set default value var pmodel, i = 0; if ( options.templateOptions.pkey || options.templateOptions.pkey != "" ) { if (options.templateOptions.pkey.indexOf(".") > 0) { angular.forEach( options.templateOptions.pkey.split("."), function (p) { if (i == 0) { if (options.model[p] == null) { options.model[p] = {}; } pmodel = options.model[p]; i++; } else { if (pmodel[p] == null) { pmodel[p] = {}; } pmodel = pmodel[p]; } } ); } else { pmodel = options.model; } } var topdata = angular.copy(options.templateOptions.options); if (pmodel) { pmodel = pmodel[options.key]; } else if (options.model) { pmodel = options.model[options.key]; } if (angular.isArray(pmodel)) { if (pmodel) { items.inputModel = angular.copy( options.templateOptions.options ); selectItem(pmodel, options.templateOptions.options); } } else { if (pmodel && pmodel.id) { items.inputModel = angular.copy( options.templateOptions.options ); selectItem(pmodel, options.templateOptions.options); } else { // items.inputModel = options.templateOptions.options; } } // items.inputModel = options.templateOptions.options; items.selectModel = options.templateOptions.options; // 可在此展开 if (!items.inputModel) { items.inputModel = items.selectModel; } else { selectItemchild(pmodel, items.inputModel); // for (var i = 0; i < items.inputModel.length; i++) { // items.inputModel[i]. // for (var j = 0; j < items.selectModel.length; j++) { // if (items.selectModel[j].id == items.inputModel[i].id) { // items.inputModel[i].selected = true; // } // } // } } return items.inputModel; // options.templateOptions.options = angular.copy(topdata); // console.log(model); // console.log(options); }); } else { options.templateOptions .refreshData(options.templateOptions.APIService,scope.$root.user) .then(function (result) { //回显故障现象,带出绑定的人或组start caocao if (options.templateOptions.onlyKey == 'cate_start' && items.$parent.originalModel.incident && items.$parent.originalModel.incident.category) { console.log(result[options.templateOptions.optionsDataKey], items.$parent.model.category.id) var item = result[options.templateOptions.optionsDataKey].find(function (v) { return v.id == items.$parent.originalModel.incident.category.id; }) console.log(item)//11615 if (item) { items.$parent.originalModel.incident.branchType = item.branchType; if(item.branchType == 0){ if (item.userOrGroupType === 1) { items.$parent.originalModel.start_code = 'assignment'; items.$parent.originalModel.incident.handlerUser = { id: item.handleUser ? item.handleUser.id : undefined }; items.$parent.originalModel.directClose = true; items.$parent.originalModel.isHandlerUser = false; setTimeout(function () { items.$parent.originalModel.isHandlerUser = true; }, 0) } else if (item.userOrGroupType === 2) { items.$parent.originalModel.start_code = 'assignment'; items.$parent.originalModel.candidateGroups = item.group; items.$parent.originalModel.directClose = true; items.$parent.originalModel.isHandlerUser = false; } else { items.$parent.originalModel.start_code = 'close'; items.$parent.originalModel.directClose = false; items.$parent.originalModel.isHandlerUser = false; delete items.$parent.originalModel.candidateGroups; delete items.$parent.originalModel.incident.handlerUser } }else if(item.branchType == 1){ items.$parent.originalModel.incident.branchUserGroups = item.branchUserGroups; // items.$parent.originalModel.incident.area.id options.templateOptions.APIService.fetchData('area',items.$parent.originalModel.incident.area.id).then(res=>{ console.log(res) if(res.status == 200){ items.$parent.originalModel.incident.branchId = res.data.branch; // res.data.branch var branchUserGroup=item.branchUserGroups.find(v=>v.branchId==res.data.branch)||{}; if(branchUserGroup.branchUserOrGroupType==1){ items.$parent.originalModel.start_code='assignment'; items.$parent.originalModel.incident.handlerUser={id:branchUserGroup.userId?branchUserGroup.userId:undefined}; items.$parent.originalModel.directClose=true; items.$parent.originalModel.isHandlerUser=false; setTimeout(function(){items.$parent.originalModel.isHandlerUser=true;},0) }else if(branchUserGroup.branchUserOrGroupType===2){ items.$parent.originalModel.start_code='assignment'; items.$parent.originalModel.candidateGroups=branchUserGroup.groupId?branchUserGroup.groupId:undefined; items.$parent.originalModel.directClose=true; items.$parent.originalModel.isHandlerUser=false; }else{ items.$parent.originalModel.start_code='close'; items.$parent.originalModel.directClose=false; items.$parent.originalModel.isHandlerUser=false; delete items.$parent.originalModel.candidateGroups; delete items.$parent.originalModel.incident.handlerUser } } }) } } } //回显故障现象,带出绑定的人或组end if (!options.templateOptions.options) { options.templateOptions.options = []; } if(options.templateOptions.uuKey == 'knowledge_leve.dutyDepartment'){ let data = result[options.templateOptions.optionsDataKey]; for (var i = 0; i < data.length; i++) { data[i].parent = {id: -data[i].branch, name: data[i].branchName}; data[i].name = data[i].dept; } var parentList = [] var idToNodeMap = {} for (var i = 0; i < data.length; i++) { idToNodeMap[data[i].parent.id] = []; parentList.push(data[i].parent); } let map = new Map(); for (let item of parentList) { if (!map.has(item.id)) { map.set(item.id, item); }; }; parentList = [...map.values()]; // console.log(parentList); console.log(data); //loop over data for (var i = 0; i < data.length; i++) { var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent if(idToNodeMap[datum.parent.id]){ idToNodeMap[datum.parent.id].push(JSON.parse(JSON.stringify(datum))); } //Does this node have a parent? } for (let key in idToNodeMap) { let index = parentList.findIndex(v => v.id == key); if (index > -1) { parentList[index].children = idToNodeMap[key]; }; }; console.log(parentList) options.templateOptions.options = parentList; }else{ if (options.templateOptions.optionsDataKey) { options.templateOptions.options = convertParentToChildList( result[options.templateOptions.optionsDataKey] ); } else { options.templateOptions.options = convertParentToChildList(result); } } //set default value var pmodel, i = 0; if ( options.templateOptions.pkey || options.templateOptions.pkey != "" ) { if (options.templateOptions.pkey.indexOf(".") > 0) { angular.forEach( options.templateOptions.pkey.split("."), function (p) { if (i == 0) { if (options.model[p] == null) { options.model[p] = {}; } pmodel = options.model[p]; i++; } else { if (pmodel[p] == null) { pmodel[p] = {}; } pmodel = pmodel[p]; } } ); } else { pmodel = options.model; } } var topdata = angular.copy(options.templateOptions.options); if (pmodel) { pmodel = pmodel[options.key]; } else if (options.model) { pmodel = options.model[options.key]; } if (angular.isArray(pmodel)) { if (pmodel) { items.inputModel = angular.copy( options.templateOptions.options ); selectItem(pmodel, options.templateOptions.options); } } else { if (pmodel && pmodel.id) { items.inputModel = angular.copy( options.templateOptions.options ); selectItem(pmodel, options.templateOptions.options);//baba } else { // items.inputModel = options.templateOptions.options; } } // items.inputModel = options.templateOptions.options; items.selectModel = options.templateOptions.options; if (!items.inputModel) { items.inputModel = items.selectModel; } else { selectItemchild(pmodel, items.inputModel); // for (var i = 0; i < items.inputModel.length; i++) { // for (var j = 0; j < items.selectModel.length; j++) { // if (items.selectModel[j].id == items.inputModel[i].id) { // items.inputModel[i].selected = true; // } // } // } } // options.templateOptions.options = angular.copy(topdata); // console.log(model); // console.log(options); }); } }, }, validators: { required: { expression: function (viewValue, modelValue) { var value = modelValue || viewValue; if (angular.isArray(value)) { return value.length > 0; } else { // console.log(options) if (options.templateOptions.required && !value) { // return value != null; } else { return value; } // return value = "true"; } }, }, }, }; }, controller: [ "$scope", "$rootScope", "api_configure_form", "api_bpm_domain", "api_category", function ($scope, $rootScope, api_configure_form, api_bpm_domain, api_category) { // // 知识库-责任科室 // if ($scope.to.uuKey === 'knowledge_leve.dutyDepartment') { // //处理远程获取数据控件方法调用 // $scope.to.refresh = function(searchVal){ // api_category.getOwnDuty({}).then(function(res){ // if (!$scope.to.options) { // $scope.to.options = res.data || []; // } // }) // }; // } $rootScope.checkClicked = function (item) { angular.forEach($scope.to.options, function (itemone) { if (!item.parent) { if (item.id == itemone.id) { // itemone.isExpanded = true; } else { itemone.isExpanded = false; } } else { if (item.parent.id == itemone.id) { angular.forEach(itemone.children, function (itemtwo) { if (item.id == itemtwo.id) { } else { itemtwo.isExpanded = false; } }); } } }); // 故障现象带出优先级对应的事件工单信息(预计响应时间,解决时间,逾期时间) console.log($scope, "gsm"); if ( $scope.originalModel && $scope.originalModel.incident && item.category && (!item.children || !item.children.length) && item.priority && item.priority.id ) { api_bpm_domain .expectedTime("L" + (item.priority.id - 1559)) .then(function (res) { $scope.originalModel.incident.expectResponseTime = res.serviceLevelAgreement.responseTime; $scope.originalModel.incident.expectIntroTime = res.serviceLevelAgreement.resolveTime; $scope.originalModel.incident.overdueTime = res.date; }); // $scope.$parent.$parent.$parent.model['knowledgeShow'] = false; // setTimeout(() => { // $scope.$parent.$parent.$parent.model['knowledgeShow'] = true; // }, 500); // console.log($scope.$parent.$parent.$parent) } }; if ($scope.options.templateOptions.isMultiSelect) { // console.log($scope); } else { if ($scope.model[$scope.options.key]) { } } // $scope.options.templateOptions.onDataCallback=function(item,selectItems,options, field, model){ // console.log(item) // // if(){ // // } // // $scope.model[$scope.options.key]=item.id; // api_configure_form.renderTabForm(item.prefix).then(function(data){ // $scope.propTypeOptions = data; // }); // } // $scope.model[$scope.options.key]=[]; // $scope.fn $rootScope.bala1 = function (items, fn) { // $scope.fn = fn; console.log(items); // console.log($scope.options.templateOptions.refresh(items, 'search', fn)) $scope.options.templateOptions.refresh(items, "search", fn); // $scope.options.templateOptions.bala($scope.options.templateOptions.APIService,items.filterKeyword).then(function(res){ // // return res.list; // console.log(666) // fn(res.list) // }) }; }, ], }); //勾选组件 formlyConfigProvider.setType({ name: "ui-checkbox", extends: "checkbox", templateUrl: "assets/views/customform/tpl/ui-checkbox.html", controller: [ "$scope", function ($scope) { console.log($scope) if($scope.options.templateOptions.isTrue){ //是否默认打开 $scope.model[$scope.options.key] = true; } // 巡检生成事件,默认派单 if ($scope.model.isInspection) { $scope.model[$scope.options.key] = true; } if ($scope.model[$scope.options.key] == "true") { $scope.model[$scope.options.key] = true; } if ($scope.model[$scope.options.key] == "false") { $scope.model[$scope.options.key] = false; } }, ], }); //勾选组件(禁用)--yeye formlyConfigProvider.setType({ name: "ui-checkbox-disabled", extends: "checkbox", templateUrl: "assets/views/customform/tpl/ui-checkbox-disabled.html", controller: [ "$scope", function ($scope) { // 巡检生成事件,默认派单 // if ($scope.model.isInspection) { // $scope.model[$scope.options.key] = true; // } // if ($scope.model[$scope.options.key] == "true") { // $scope.model[$scope.options.key] = true; // } // if ($scope.model[$scope.options.key] == "false") { // $scope.model[$scope.options.key] = false; // } }, ], }); //换行组件 formlyConfigProvider.setType({ name: "ui-nextLine", /*extends: 'input',*/ template: "
", }); //多选框组件 formlyConfigProvider.setType({ name: "ui-checklist", extends: "multiCheckbox", templateUrl: "assets/views/customform/tpl/ui-checklist.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 0, }, }; }, }); //单选框组件 formlyConfigProvider.setType({ name: "ui-radio", extends: "radio", templateUrl: "assets/views/customform/tpl/ui-radio.html", defaultOptions: function (options) { return { templateOptions: { refresh: function () {}, refreshDelay: 0, }, }; }, controller: [ "$scope", "api_wechatfile", function ($scope,api_wechatfile) { // 新增巡检计划-巡检方式baba if($scope.to.onlyKey === 'onlineType'){ api_wechatfile.getDictionary($scope.to.modelreasondata).then(function (result) { $scope.to.options = result; if(!$scope.model[$scope.options.key]){ $scope.model[$scope.options.key] = result[0]?result[0].id:null; } }); } // 巡检生成事件,默认派单 if ($scope.model.isInspection) { $scope.model[$scope.options.key] = true; // $scope.model.isHandlerUser=true; $scope.model.start_code = "assignment"; console.log($scope.model); } //多次暂存配置 // console.log($scope); if ($scope.model.saveAgain) { if ( $scope.model.directClose == "1" || $scope.model.directClose == true ) { $scope.model[$scope.options.key] = true; // if($scope.model.incident.handlingPersonnelUser){ // delete $scope.model.incident.handlingPersonnelUser; // }; if ($scope.model.incident.handleDescription) { delete $scope.model.incident.handleDescription; } if ($scope.model.incident.closecode) { delete $scope.model.incident.closecode; } if ($scope.model.incident.degree) { delete $scope.model.incident.degree; } } else { $scope.model.incident.handlingPersonnelUser = $scope.model.incident.acceptUser; $scope.model[$scope.options.key] = false; } } }, ], }); //文本域组件 formlyConfigProvider.setWrapper({ name: "validation", types: ["ui-textarea"], template: '
{{message(fc.$viewValue, fc.$modelValue, this)}}
', }); formlyConfigProvider.setType({ name: "ui-textarea", extends: "textarea", templateUrl: "assets/views/customform/tpl/ui-textarea.html", defaultOptions: function (options) { return { templateOptions: { transform: function (model, value) { return value; }, }, validation: { messages: { maxlength: function (viewValue, modelValue, scope) { if (viewValue != null) { if (viewValue.length > scope.to.maxlength) { return ( scope.to.label + " 字数(" + viewValue.length + ")超限(" + scope.to.maxlength + ")" ); } else { return ""; } } }, }, }, }; }, controller: [ "$scope", function ($scope) { var value = $scope.model[$scope.options.key]; if (angular.isFunction($scope.options.templateOptions.transform)) { $scope.model[$scope.options.key] = $scope.options.templateOptions.transform( $scope.originalModel, value ); } if (angular.isFunction($scope.options.templateOptions.felditem)) { $scope.options.templateOptions.felditem($scope); } }, ], }); // div版的textarea(展示富文本框内容用) formlyConfigProvider.setType({ name: "ui-divTextarea", extends: "textarea", templateUrl: "assets/views/customform/tpl/ui-divTextarea.html", defaultOptions: function (options) { return { templateOptions: { transform: function (model, value) { return value; }, }, validation: { messages: { // maxlength: function (viewValue, modelValue, scope) { // if (viewValue != null) { // if (viewValue.length > scope.to.maxlength) { // return scope.to.label + ' 字数(' + viewValue.length + ')超限(' + scope.to.maxlength + ')' // } else { // return ""; // } // } // }, }, }, }; }, controller: [ "$scope", function ($scope) { var value = $scope.model[$scope.options.key]; if (angular.isFunction($scope.options.templateOptions.transform)) { $scope.model[$scope.options.key] = $scope.options.templateOptions.transform( $scope.originalModel, value ); } if (angular.isFunction($scope.options.templateOptions.felditem)) { $scope.options.templateOptions.felditem($scope); } }, ], }); // 带有知识库引用的textarea formlyConfigProvider.setType({ name: "ui-textAreaKnowledge", // extends: 'textarea', templateUrl: "assets/views/customform/tpl/ui-textAreaKnowledge.html", defaultOptions: function (options) { return { templateOptions: { transform: function (model, value) { return value; }, }, validation: { messages: { maxlength: function (viewValue, modelValue, scope) { if (viewValue != null) { if (viewValue.length > scope.to.maxlength) { return ( scope.to.label + " 字数(" + viewValue.length + ")超限(" + scope.to.maxlength + ")" ); } else { return ""; } } }, }, }, }; }, controller: [ "$scope", "$rootScope", "$modal", "SweetAlert", "api_bpm_data", "api_bpm_domain", "api_solution", "$aside", "api_zsk", "up_down_file", "api_wechatfile", function ( $scope, $rootScope, $modal, SweetAlert, api_bpm_data, api_bpm_domain, api_solution, $aside, api_zsk, up_down_file, api_wechatfile ) { // console.log($scope); var value = $scope.model[$scope.options.key]; if (angular.isFunction($scope.options.templateOptions.transform)) { $scope.model[$scope.options.key] = $scope.options.templateOptions.transform( $scope.originalModel, value ); } if (angular.isFunction($scope.options.templateOptions.felditem)) { $scope.options.templateOptions.felditem($scope); } // 引用知识库点击 $scope.openSolution = function () { $scope.$parent.$parent.$parent.model["knowledgeShow"] = false; setTimeout(() => { $scope.$parent.$parent.$parent.model["knowledgeShow"] = true; }, 100); }; }, ], }); //常用语句选择textarea formlyConfigProvider.setType({ name: "ui-textselect", extends: "textarea", templateUrl: "assets/views/customform/tpl/ui-textselect.html", defaultOptions: function (options) { return { templateOptions: { transform: function (model, value) { return value; }, }, validation: { messages: { maxlength: function (viewValue, modelValue, scope) { if (viewValue != null) { if (viewValue.length > scope.to.maxlength) { return ( scope.to.label + " 字数(" + viewValue.length + ")超限(" + scope.to.maxlength + ")" ); } else { return ""; } } }, }, }, }; }, controller: [ "$scope", function ($scope) { var value = $scope.model[$scope.options.key]; if (angular.isFunction($scope.options.templateOptions.transform)) { $scope.model[$scope.options.key] = $scope.options.templateOptions.transform( $scope.originalModel, value ); } }, ], }); //改动的组件 ckeditor封装后的组件 formlyConfigProvider.setType({ name: "ui-text-check", extends: "textarea", templateUrl: "assets/views/customform/tpl/ui-text-check.html", defaultOptions: function (options) { return { templateOptions: { extraPlugins: "uploadimage", uploadimageConfig: { backend: "basic", settings: { uploadUrl: options.templateOptions.APIService.upload().getRequestedUrl(), headers: "", downloadUrl: options.templateOptions.APIService.uploadResponseUri().getRequestedUrl(), }, }, refresh: function (APIService, contentId, data) { return APIService.fetchDataList(contentId, data); }, downloadUri: function (APIService, contentId) { return APIService.downloadAttachment(contentId).getRequestedUrl(); }, upload: function (APIService, contentId) { return APIService.getSolutionDowpath(contentId); }, view: function (attachmentId) { // return APIService.attachmentsPreviewUrl(contentId); }, refreshDelay: 0, transform: function (model, value) { return value; }, }, validation: { messages: { maxlength: function (viewValue, modelValue, scope) { if (viewValue != null) { if (viewValue.length > scope.to.maxlength) { return ( scope.to.label + " 字数(" + viewValue.length + ")超限(" + scope.to.maxlength + ")" ); } else { return ""; } } }, }, }, }; }, controller: [ "$scope", "$rootScope", function ($scope, $rootScope) { var value = $scope.model[$scope.options.key]; if (angular.isFunction($scope.options.templateOptions.transform)) { $scope.model[$scope.options.key] = $scope.options.templateOptions.transform( $scope.originalModel, value ); } $scope.options.templateOptions.uploadimageConfig.settings.headers = $rootScope.getSession(); //var expiry={'expiry':14804244006}; //angular.extend($scope.options.templateOptions.uploadimageConfig.settings.headers,expiry) //$scope.options.templateOptions.uploadimageConfig.settings.headers $scope.upload = function (contentId, filename) { var filename = filename; $scope.options.templateOptions .upload($scope.options.templateOptions.ApiService, contentId) .then(function (response) { var file = new Blob([response], { type: "application/octet-stream", }); // var filename = filename; var fileURL = URL.createObjectURL(file); var a = document.createElement("a"); a.href = fileURL; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }); }; }, ], }); //改动的组件 ckeditor封装后的附文本组件 formlyConfigProvider.setType({ name: "ui-fuwenben", extends: "textarea", templateUrl: "assets/views/customform/tpl/ui-fuwenben.html", defaultOptions: function (options) { return { templateOptions: { allowedContent: "img[!src]", //允许展示源码的标签,否则会被富文本框强制删除 extraPlugins: "uploadimage", uploadimageConfig: { backend: "basic", settings: { uploadUrl: options.templateOptions.APIService.upload( -110 ).getRequestedUrl(), headers: "", downloadUrl: options.templateOptions.APIService.uploadResponseUri(), }, }, refresh: function (APIService, contentId, data) { return APIService.fetchDataList(-110, data); }, downloadUri: function (APIService, contentId) { return APIService.downloadAttachment(-110).getRequestedUrl(); }, upload: function (APIService, contentId) { return APIService.getSolutionDowpath(-110); }, view: function (attachmentId) { // return APIService.attachmentsPreviewUrl(contentId); }, refreshDelay: 0, transform: function (model, value) { return value; }, }, validation: { messages: { maxlength: function (viewValue, modelValue, scope) { if (viewValue != null) { if (viewValue.length > scope.to.maxlength) { return ( scope.to.label + " 字数(" + viewValue.length + ")超限(" + scope.to.maxlength + ")" ); } else { return ""; } } }, }, }, }; }, controller: [ "$scope", "$rootScope", function ($scope, $rootScope) { var value = $scope.model[$scope.options.key]; if (angular.isFunction($scope.options.templateOptions.transform)) { $scope.model[$scope.options.key] = $scope.options.templateOptions.transform( $scope.originalModel, value ); } $scope.options.templateOptions.uploadimageConfig.settings.headers = $rootScope.getSession(); //var expiry={'expiry':14804244006}; //angular.extend($scope.options.templateOptions.uploadimageConfig.settings.headers,expiry) //$scope.options.templateOptions.uploadimageConfig.settings.headers $scope.upload = function (contentId, filename) { var filename = filename; $scope.options.templateOptions .upload($scope.options.templateOptions.ApiService, -110) .then(function (response) { var file = new Blob([response], { type: "application/octet-stream", }); // var filename = filename; var fileURL = URL.createObjectURL(file); var a = document.createElement("a"); a.href = fileURL; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }); }; }, ], }); //ui-grid展示控件 formlyConfigProvider.setType({ name: "ui-grid-show", extends: "multiCheckbox", templateUrl: "assets/views/customform/tpl/ui-grid-show.html", defaultOptions: function (options,scope) { return { templateOptions: { linkage: function () { }, getScope: function () { return scope; }, }, }; }, controller: function ( $scope, $rootScope, i18nService, Restangular, api_bpm_data ) { var loginUser = $rootScope.user; $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; // $scope.gridOptions.enableFiltering = true; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = true; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; //{"id":1,"phone":"15071189091","name":"管理员","gender":"男","flag":1,"email":"asda@qq.com","account":"000001","group":[{"id":3,"groupName":"运行监控科"}]} $scope.gridOptions.columnDefs = [ // { name:'id', width:80, enableFiltering:false}, // { name: 'item', displayName: '序号', width: 50, enableFiltering: false }, // { name: 'inspectionDTO.title', displayName: '计划主题', width: 150, enableFiltering: false }, // { name: 'startDate', displayName: '巡检执行时间', width: 200, enableFiltering: false }, // { name: 'inspectionDTO.executeUser.name', displayName: '计划执行人', width: 100, enableFiltering: false }, // { name: 'inspectionDTO.createTime', displayName: '巡检创建时间', width: 200, enableFiltering: false }, { name: "inspection.title", displayName: "计划主题", width: 120, enableFiltering: false, }, { name: "sign", displayName: "单号", width: 140, enableFiltering: false, }, { name: "inspectionType.type", displayName: "巡检分类", width: 200, enableFiltering: false, cellTemplate: '
' + '
{{row.entity.online?"线上巡检-":(row.entity.online===false?"线下巡检-":"")}}{{row.entity.inspectionType.type}}
' + '
' }, { name: "stateName", displayName: "状态", width: 80, enableFiltering: false, }, { name: "processUser.name", displayName: "处理人/组", width: 120, enableFiltering: false, cellTemplate: '
' + '
{{row.entity.processUser.name}}
' + '
{{row.entity.group.groupName}}
' + '
' }, { name: "startDate", displayName: "开始时间", width: 160, enableFiltering: false, }, { name: "endTime", displayName: "结束时间", width: 160, enableFiltering: false, cellTemplate: '
' + '
{{row.entity.endTime?grid.appScope.transferTime(row.entity.endTime):""}}
' + '
' }, // { // name: "batchNo", // displayName: "批次号", // width: 160, // enableFiltering: false, // }, ]; var defaultFilterData = { idx: 0, sum: 10, }; $scope.transferTime = function (time) { return moment(time).format("YYYY-MM-DD HH:mm"); }; //分页控制 $scope.gridOptions.onRegisterApi = function (gridApi) { gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { var filtersData = $scope.memoryfilterData; filtersData.idx = newPage - 1; filtersData.sum = pageSize; $scope.refreshData("expand-right", filtersData); } ); gridApi.selection.on.rowSelectionChanged($scope, function (data) { data.grid.appScope.selected.items = data.entity; }); }; //页面获取数据 $scope.refreshData = function (style, filterData) { // $scope.ldloading[style.replace('-', '_')] = true; console.log(angular.isUndefined(filterData)) if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } $scope.myData = []; console.log(filterData) if(filterData.inspectionProcessActual && filterData.inspectionProcessActual.batchNo){ filterData.inspectionProcessActual = { inspectionid: $scope.model.id, batchNo:filterData.inspectionProcessActual.batchNo } }else{ filterData.inspectionProcessActual = { inspectionid: $scope.model.id } } // angular.extend(filterData, { // inspectionProcessActual: { // inspectionid: $scope.model.id, // }, // }); console.log(filterData) api_bpm_data.fetchDataList("inspectionProcessActual", filterData).then( function (data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = myData.list; for (var i = 0; i < $scope.myData.length; i++) { //添加序号 $scope.myData[i]["item"] = i + 1 + filterData.idx * filterData.sum; } // $scope.ldloading[style.replace('-', '_')] = false; }, function () { // $scope.ldloading[style.replace('-', '_')] = false; } ); }; $scope.refreshData("expand-right", defaultFilterData); }, }); //文本框自定义选择面板组件 formlyConfigProvider.setType({ name: "ui-input-selectmodal", extends: "input", templateUrl: "assets/views/customform/tpl/ui-input-selectmodal.html", defaultOptions: function (options) { return { templateOptions: { openModal: function (size, options, modal) { var modalInstance = modal.open({ templateUrl: "assets/views/customform/tpl/modal-content.html", controller: "ModalInstanceCtrl", //'CustomformCtrl',// size: size, resolve: options.templateOptions.modalParam, }); modalInstance.result.then( function (selectedItem) { options.value(selectedItem); }, function () { //console.log('Modal dismissed at: ' + new Date()); } ); }, }, }; }, }); //日期控件 var datepicker_attr = [ "date-disabled", "custom-class", "show-weeks", "starting-day", "init-date", "min-mode", "max-mode", "format-day", "format-month", "format-year", "format-day-header", "format-day-title", "format-month-title", "year-range", "shortcut-propagation", "datepicker-popup", "show-button-bar", "current-text", "clear-text", "close-text", "close-on-date-selection", "datepicker-append-to-body", ]; var datepicker_bindings = ["datepicker-mode", "min-date", "max-date"]; formlyConfigProvider.setType({ name: "ui-datetime", templateUrl: "assets/views/customform/tpl/ui-datetime.html", extends: "input", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: { ngModelAttrs: getNgModelAttr(datepicker_attr, datepicker_bindings), templateOptions: { datepickerPopup: "yyyy-MM-dd HH:mm:ss", }, }, controller: [ "$scope", "$filter", function ($scope, $filter) { $scope.model[$scope.options.key] = $filter("date")( new Date(), $scope.options.templateOptions.datepickerPopup ); $scope.options.initialValue = $scope.model[$scope.options.key]; }, ], }); //日期控件 formlyConfigProvider.setType({ name: "ui-datepicker", templateUrl: "assets/views/customform/tpl/ui-datepicker.html", extends: "input", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: { ngModelAttrs: getNgModelAttr(datepicker_attr, datepicker_bindings), templateOptions: { datepickerPopup: "yyyy-MM-dd HH:mm:ss", }, }, controller: [ "$scope", "$filter", function ($scope, $filter) { // $scope.mindata=new Date(new Date().getTime() + 24*60*60*1000); if ($scope.model[$scope.options.key]) { } else { $scope.model[$scope.options.key] = $filter("date")( new Date(), $scope.options.templateOptions.datepickerPopup ); } $scope.options.initialValue = $scope.model[$scope.options.key]; $scope.endOpen = true; $scope.datepicker = {}; $scope.datepicker.opened = false; $scope.datepicker.open = function ($event) { $scope.datepicker.opened = true; }; }, ], }); //时分控件 formlyConfigProvider.setType({ name: "ui-datehourtime", extends: "input", templateUrl: "assets/views/customform/tpl/ui-datehourtime.html", defaultOptions: function (options) { return { noFormControl: true, // validators:{ // required:{ // expression:function(viewValue, modelValue){ // console.log(options) // var value = modelValue.getHours().toString()+":"+modelValue.getMinutes().toString()+":"+"59"||viewValue.getHours().toString()+":"+viewValue.getMinutes().toString()+":"+"59" // // var value = modelValue.getHours() || viewValue.getHours(); // return value.length>=1; // } // } // } }; }, controller: [ "$scope", "$log", function ($scope, $log) { $scope.hstep = new Date( Date.parse($scope.model[$scope.options.key]) ).getHours(); $scope.minutes = new Date( Date.parse($scope.model[$scope.options.key]) ).getMinutes(); $scope.model[$scope.options.key] = new Date( Date.parse($scope.model[$scope.options.key]) ); }, ], }); //状态追踪 formlyConfigProvider.setType({ name: "ui-followStatus", templateUrl: "assets/views/customform/tpl/ui-followStatus.html", controller: [ "$scope", "api_bpm_data", "Restangular", function ($scope, api_bpm_data, Restangular) { setTimeout(function () { var pkey = $scope.options.templateOptions.pkey; var dataId = $scope.model.id; if (dataId) { api_bpm_data.fetchData(pkey, dataId).then(function (response) { if (response) { var myData = Restangular.stripRestangular(response); var processInstanceId = myData.data.processInstanceId; $scope.options.templateOptions .getData( $scope.model, $scope.options.templateOptions.ApiService, processInstanceId ) .then(function (result) { if (result.status == 200) { var newData = Restangular.stripRestangular(result); $scope.followData = newData.data; } }); } }); } }, 10); }, ], }); //状态追踪2-事件id formlyConfigProvider.setType({ name: "ui-followStatus2", templateUrl: "assets/views/customform/tpl/ui-followStatus2.html", controller: [ "$scope", "api_bpm_data", "Restangular", function ($scope, api_bpm_data, Restangular) { setTimeout(function () { var pkey = $scope.options.templateOptions.pkey; var dataId = $scope.model.id; if (dataId) { api_bpm_data.fetchData(pkey, dataId).then(function (response) { if (response) { var myData = Restangular.stripRestangular(response); var incidentId = myData.data.id; $scope.options.templateOptions .getData( $scope.model, $scope.options.templateOptions.ApiService, incidentId ) .then(function (result) { if (result.status == 200) { var newData = Restangular.stripRestangular(result); $scope.followData = newData.list || []; } }); } }); } }, 10); }, ], }); //维修记录 formlyConfigProvider.setType({ name: "ui-handlerLog", templateUrl: "assets/views/customform/tpl/ui-handlerLog.html", controller: [ "$scope", "api_bpm_data", "Restangular", function ($scope, api_bpm_data, Restangular) { console.log($scope, 'ui-handlerLog') }, ], }); //资产 formlyConfigProvider.setType({ name: "ui-zc", templateUrl: "assets/views/customform/tpl/ui-zc.html", controller: [ "$scope", "api_bpm_data", "Restangular", function ($scope, api_bpm_data, Restangular) { console.log($scope, 'ui-zc'); $scope.wxIncidentWithCmdb = JSON.parse(sessionStorage.getItem("wxIncidentWithCmdb"));//资产 }, ], }); //绑定的耗材 formlyConfigProvider.setType({ name: "ui-hc", templateUrl: "assets/views/customform/tpl/ui-hc.html", controller: [ "$scope", "api_cmdb2", "Restangular", function ($scope, api_cmdb2, Restangular) { console.log($scope, 'ui-hc') $scope.incidentWithConsumable = JSON.parse(sessionStorage.getItem("incidentWithConsumable"));//耗材 $scope.list = []; var sjId = $scope.model.incident.id; api_cmdb2.getHc(sjId).then(function (response) { console.log(response) if (response.status == 200) { $scope.list = response.data; } }) }, ], }); //历史记录 formlyConfigProvider.setType({ name: "ui-history", templateUrl: "assets/views/customform/tpl/ui-history.html", controller: [ "$scope", "api_bpm_data", "Restangular", function ($scope, api_bpm_data, Restangular) { setTimeout(function () { var pkey = $scope.options.templateOptions.pkey; var dataId = $scope.model.id; api_bpm_data.fetchData(pkey, dataId).then(function (response) { if (response) { var myData = Restangular.stripRestangular(response); var processInstanceId = myData.data.processInstanceId; $scope.options.templateOptions .getData( $scope.model, $scope.options.templateOptions.ApiService, processInstanceId ) .then(function (result) { if (result.status == 200) { var newData = Restangular.stripRestangular(result); var long = newData.data.length - 1; $scope.followData = newData.data[long]; } }); } }); }, 10); }, ], }); // //请求人信息显示 // formlyConfigProvider.setType({ // name: "ui-disrequester", // templateUrl: 'assets/views/customform/tpl/ui-disrequester.html', // wrapper: ['bootstrapLabel', 'bootstrapHasError'], // defaultOptions: function(options) { // return { // templateOptions: {} // }; // }, // controller: ['$scope', function($scope) { // $scope.options.templateOptions.that = $scope; // }] // }); //退回人信息显示 formlyConfigProvider.setType({ name: "ui-returnperson", templateUrl: "assets/views/customform/tpl/ui-returnperson.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: {}, }; }, controller: [ "$scope", function ($scope) { $scope.group = ""; $scope.role = ""; if ( angular.isDefined($scope.model.handlingPersonnelUser.group) && $scope.model.handlingPersonnelUser.group.length == 1 ) { $scope.group = $scope.model.handlingPersonnelUser.group[0].groupName; } else { for ( var i = 0; i < $scope.model.handlingPersonnelUser.group.length; i++ ) { $scope.group += $scope.model.handlingPersonnelUser.group[i].groupName + ","; } } if ( angular.isDefined($scope.model.handlingPersonnelUser.role) && $scope.model.handlingPersonnelUser.role.length == 1 ) { $scope.role = $scope.model.handlingPersonnelUser.role[0].role; } else { for ( var i = 0; i < $scope.model.handlingPersonnelUser.role.length; i++ ) { $scope.role += $scope.model.handlingPersonnelUser.role[i].role + ","; } } $scope.options.templateOptions.that = $scope; $scope.options.templateOptions.that = $scope; }, ], }); //退回人信息显示(去掉工作组&角色) formlyConfigProvider.setType({ name: "ui-returnpersonNoGroup", templateUrl: "assets/views/customform/tpl/ui-returnpersonNoGroup.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: {}, }; }, controller: [ "$scope", function ($scope) { $scope.group = ""; $scope.role = ""; if ( angular.isDefined($scope.model.handlingPersonnelUser.group) && $scope.model.handlingPersonnelUser.group.length == 1 ) { $scope.group = $scope.model.handlingPersonnelUser.group[0].groupName; } else { for ( var i = 0; i < $scope.model.handlingPersonnelUser.group.length; i++ ) { $scope.group += $scope.model.handlingPersonnelUser.group[i].groupName + ","; } } if ( angular.isDefined($scope.model.handlingPersonnelUser.role) && $scope.model.handlingPersonnelUser.role.length == 1 ) { $scope.role = $scope.model.handlingPersonnelUser.role[0].role; } else { for ( var i = 0; i < $scope.model.handlingPersonnelUser.role.length; i++ ) { $scope.role += $scope.model.handlingPersonnelUser.role[i].role + ","; } } $scope.options.templateOptions.that = $scope; $scope.options.templateOptions.that = $scope; }, ], }); //指派技术人员 formlyConfigProvider.setType({ name: "ui-apiontperson", templateUrl: "assets/views/customform/tpl/ui-apiontperson.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: { transtlara: function (value, $scope) { }, }, }; }, controller: [ "$scope", "api_user_data", "Restangular", function ($scope, api_user_data, Restangular) { var filterData = { idx: 0, sum: 1000, }; api_user_data .fetchDataList("group", filterData) .then(function (response) { if (response.status == 200) { $scope.select = {}; $scope.multipleDemo = {}; $scope.userdata = {}; var data = response.list; var item = []; $scope.multipleDemo = data; $scope.multipleDemo; } }); $scope.options.templateOptions.onChange = function ( id, options, groupdata, $event, model ) { if (groupdata.option) { $scope.model[$scope.options.key] = {}; var fildate = { idx: 0, sum: 1000, user: { roledata: { rolecode: model.currentRole, }, selectType: "1", groupdata: { id: groupdata.option.id, }, engineer: 1, }, }; api_user_data .fetchDataList("user", fildate) .then(function (response) { if (response.status == 200) { $scope.userdata = {}; $scope.userdata = response.list; } }); } else { $scope.model[$scope.options.key] = { id: groupdata.id.id, }; $scope.options.templateOptions.transtlara( $scope.model[$scope.options.key], $scope ); } }; // } }, ], }); //请求科室信息(小蓝框) lmm formlyConfigProvider.setType({ name: "ui-deptinformation", templateUrl: "assets/views/customform/tpl/ui-deptinformation.html", defaultOptions: function (options, $scope, $rootScope, api_statistic) { return { templateOptions: { checkform: function (options) { }, }, }; }, controller: [ "$scope", "api_statistic", function ($scope, api_statistic) { // console.log($scope) }, ], }); //请求人信息 formlyConfigProvider.setType({ name: "ui-requesterinformation", templateUrl: "assets/views/customform/tpl/ui-requesterinformation.html", defaultOptions: function (options, $scope, $rootScope, api_statistic) { return { templateOptions: { checkform: function (options) { if (options.model.requester) { options.value(options.model.requester); } }, addRequeter: function (size, options, modal, e) { if (e) { if (e.clientX === 0) { return; } e.preventDefault(); } var modalInstance = modal.open({ templateUrl: "assets/views/customform/tpl/modal-add-callrequester.html", controller: function ( $scope, sco, $rootScope, $modalInstance, items, SweetAlert, title, Restangular, APIService, UserService, api_user_data, api_statistic, api_wechatfile, $stateParams ) { $modalInstance.SweetAlert = SweetAlert; $scope.title = "新增报修人"; $scope.requester = {}; $scope.searchData = {}; $scope.isRoom = sessionStorage.getItem('ifRoom') == 1; if (angular.isDefined($stateParams.model) && $stateParams.model != "") { var paramsModel = JSON.parse($stateParams.model) //来电-添加报修人-回显电话 if (paramsModel.model.incident.requester.hjzxPhone) { $scope.requester.phone = paramsModel.model.incident.requester.hjzxPhone; } } $scope.onChangeadd = function (searchData) { $scope.searchKey = searchData.account; // $scope.searchDataadd = searchData; var requesdata = angular.copy(searchData); if (requesdata.phone) { delete requesdata.phone; } $scope.requester = requesdata; console.log($scope.requester); }; $scope.refreshUseradd = function (searchKey) { //请求人搜索 $scope.requester.account = searchKey; $scope.searchData = searchKey; serchdataadd(searchKey); }; $scope.getMydata = function (x) { $scope.searchField = JSON.parse(x[0]).account; $scope.requester = JSON.parse(x[0]); console.log($scope.requester); }; $scope.getMydataone = function (x) { $scope.searchField = x; $scope.requester.account = x; }; serchdataadd(); api_wechatfile .getDictionary({ type: "list", key: "male", }) .then(function (data) { if (data.status == 200) { requester.gender = data.list; } }); function serchdataadd(searchKey) { if (searchKey) { var filterData = { user: { name: searchKey, selectType: "pinyin_all", engineer: 0, }, idx: 0, sum: 10, }; } else { var filterData = { idx: 0, sum: 10, user: { engineer: 0, }, }; } api_user_data .fetchDataList("user", filterData) .then(function (response) { var myData = response; $scope.myData = myData.list; }); } api_user_data .fetchDataList("area", { idx: 0, sum: 1000, }) .then(function (response) { if (response.status == 200) { $scope.areas = response.list; } }); api_wechatfile .getDictionary( { key: "requester_type", type: "list", }, { idx: 0, sum: 100, } ) .then(function (response) { if (response) { $scope.networktypes = response; } }); $scope.requesterAreaid = ""; $scope.onChange = function (item) { $scope.requesterAreaid = item.id; api_user_data .fetchDataList("place", { place: { area: { id: item.id, }, }, idx: 0, sum: 1000, }) .then(function (response) { if (response.status == 200) { $scope.places = response.list; delete $scope.requester.placeDTO; } }); }; // 修改地点 $scope.requesterPlaceid = ""; $scope.onChangePlace = function (item) { $scope.requesterPlaceid = item.id; api_user_data .fetchDataList("room", { room: { place: { id: item.id, }, }, idx: 0, sum: 1000, }) .then(function (response) { if (response.status == 200) { $scope.rooms = response.list; } }); }; $scope.refresh = function (searchVal) { var faildata = {}; if ($scope.requesterAreaid) { faildata = { idx: 0, sum: 1000, place: { areaId: $scope.requesterAreaid, place: searchVal, selectType: "pinyin_qs", }, }; } else { faildata = { idx: 0, sum: 1000, place: { place: searchVal, selectType: "pinyin_qs", }, }; } api_user_data .fetchDataList("place", faildata) .then(function (response) { $scope.places = response.list; delete $scope.requester.placeDTO; }); }; // 初始化房间号 $scope.refreshPlace = function () { var faildata = {}; if ($scope.requesterPlaceid) { faildata = { idx: 0, sum: 1000, room: { place: {id:$scope.requesterPlaceid}, }, }; } else { faildata = { idx: 0, sum: 1000, room: { place: {id:$scope.requesterPlaceid}, }, }; } api_user_data .fetchDataList("room", faildata) .then(function (response) { $scope.rooms = response.list; }); }; $scope.refreshDepts = function (key) { var filterData = { idx: 0, sum: 5, dept: { name: key, }, }; UserService.fetchDataList("department", filterData).then( function (response) { if (response.status == 200) { $scope.depts = response.list; } } ); }; $scope.ok = function () { if ( angular.isUndefined($scope.requester.account) || $scope.requester.account == null || $scope.requester.account == "" ) { SweetAlert.swal( "报修人员编号未填!", "请填写报修人员编号", "error" ); } else if ( angular.isUndefined($scope.requester.name) || $scope.requester.name == null || $scope.requester.name == "" ) { SweetAlert.swal( "报修人姓名未填!", "请填写报修人姓名", "error" ); } else if ( angular.isUndefined($scope.requester.requesterType) || $scope.requester.requesterType == null || $scope.requester.requesterTypeDTO == "" ) { SweetAlert.swal("人员类型未填!", "请填写人员类型", "error"); } else if ( angular.isUndefined($scope.requester.phone) || $scope.requester.phone == null || $scope.requester.phone == "" ) { SweetAlert.swal( "报修人联系电话未填!", "请填写报修人联系电话", "error" ); } else { $scope.requesterId = $scope.requester.id; var data = { incident: { requester: { id: $scope.requesterId, }, }, idx: 0, sum: 3, }; api_statistic .tableData(data, "incident") .then(function (data) { sco.$parent.$parent.$parent.model.incident.tableList = data.list; }); $scope.$watch( sco.$parent.$parent.$parent.model.incident.tableList, function (oldObj, newObj) { if (newObj != oldObj) { sco.$parent.$parent.$parent.model.incident.tableList = newObj; } } ); console.log($scope.requester); $modalInstance.close($scope.requester); } }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, resolve: { items: function () { return { fetchItems: function (filterData, APIService) { filterData = filterData || {}; if (!filterData.idx) { filterData = { idx: 0, sum: 10, }; } return options.templateOptions.fetchItems( filterData, APIService ); }, }; }, title: function () { return options.templateOptions.modalTitle; }, Restangular: function () { return options.templateOptions.Restangular; }, APIService: function () { return options.templateOptions.ApiService; }, UserService: function () { return options.templateOptions.UserService; }, sco: function () { return $scope; }, }, }); modalInstance.result.then( function (selectedItem) { console.log(selectedItem); if (selectedItem) { var data = { requester: selectedItem, }; $scope.searchKey = selectedItem.account; // $scope.$parent.$parent.$parent.model['requestershow'] = selectedItem; // if (selectedItem.place && selectedItem.place.place) { // $scope.$parent.$parent.$parent.model.incident.houseNumber = selectedItem.place.area.area + selectedItem.place.place // } options.templateOptions.UserService.addData( "requester", data ).then(function (response) { if (response.status == 200) { if (options.model) { options.model.requester = response.data; $scope.$parent.$parent.$parent.model.incident.requester = response.data; $scope.$parent.$parent.$parent.model.requestershow = response.data; if (options.model.place) { options.model.place.id = ""; } if (options.model.area) { options.model.area.id = ""; } options.model.contacts = selectedItem.name; if ( selectedItem.phone && selectedItem.phone != null && selectedItem.phone != "" ) { options.model.contactsInformation = selectedItem.phone; } else { options.model.contactsInformation = selectedItem.telephone; } if ( selectedItem.requesterTypeDTO && selectedItem.requesterTypeDTO.id == 2 ) { $scope.$parent.$parent.$parent.model.incident.priority.id = 2; // $scope.$parent.$parent.$parent.model.incident.emergency.id = 2; // $scope.$parent.$parent.$parent.model.incident.influence.id = 1 } } if (!response.data.id) { response.data.id = selectedItem.id; } options.value(response.data); options.value(response.data); console.log($scope, "0000000"); //新增报修人带入区域地点2020年4月23日19:48:15 $scope.model.selecthouseNumber = selectedItem.place ? selectedItem.place : {}; $scope.$root.selecthouseNumber = selectedItem.place ? selectedItem.place : {}; if ($scope.$parent.$parent.$parent.model.saveAgain) { if (selectedItem.place && selectedItem.place.id) { options.model.place.id = selectedItem.place.id; options.model.place.area.id = selectedItem.place.area.id; } } else { if (selectedItem.place && selectedItem.place.id) { options.model.place.id = selectedItem.place.id; options.model.area.id = selectedItem.place.area.id; } } // if (selectedItem.areaDTO && selectedItem.place.area.id) { // options.model.area.id = selectedItem.place.area.id // } if (selectedItem.houseNumber) { options.model.houseNumber = selectedItem.houseNumber; } if (selectedItem.room) { options.model.room.id = selectedItem.room.id; } // if (selectedItem.id) { options.model.account = selectedItem.account; // 找到表单报修人组件,并使用组件内部方法重新获取增加报修人后的报修人下拉选项 var baoxiuFields = $scope.$parent.$parent.$parent.$parent.$parent.vm .fields[1].fields; var baoxiurenTo; baoxiuFields.forEach((e, i) => { if (e.key == "account") { baoxiurenTo = e.templateOptions; baoxiurenTo.APIService.fetchDataList("user", { idx: 0, sum: 20, user: { name: selectedItem.account, selectType: "pinyin_all", engineer: 0, }, }).then((res) => { baoxiurenTo.options = res.list; options.model.account = selectedItem.account; }); } }); // } // $scope.$parent.$parent.$parent.model.incident.requester = selectedItem // 选择重复事件侧滑框 // if ($scope.$parent.$parent.$parent.model.incident.category && $scope.$parent.$parent.$parent.model.incident.category.id) { $scope.$parent.$parent.$parent.model[ "repeatIncidentShow" ] = false; setTimeout(() => { $scope.$parent.$parent.$parent.model[ "repeatIncidentShow" ] = true; }, 500); // } } else { modalInstance.SweetAlert.swal({ title: "系统错误", text: "账号重复!", type: "error", }); } }); } }, function () { } ); }, changeRequeter: function ( size, options, modal, modeldata, $rootScope ) { var modalInstance = modal.open({ templateUrl: "assets/views/customform/tpl/modal-change-requester.html", controller: function ( $scope, $modalInstance, items, SweetAlert, title, Restangular, APIService, UserService, api_user_data, $rootScope ) { $scope.title = "修改报修人"; $scope.requester = { id: modeldata.requester.id, account: modeldata.requester.account, name: modeldata.requester.name, gender: modeldata.requester.gender, email: modeldata.requester.email, deptName: modeldata.requester.deptName, phone: modeldata.requester.phone, telephone: modeldata.requester.telephone, studentNo: modeldata.requester.studentNo, areaDTO: modeldata.requester.areaDTO, placeDTO: modeldata.requester.placeDTO, requesterTypeDTO: modeldata.requester.requesterTypeDTO, }; $scope.onChangeadd = function (searchData) { console.log(searchData); $scope.searchKey = searchData.account; var requesdata = angular.copy(searchData); if (requesdata.phone) { delete requesdata.phone; } $scope.requester = requesdata; }; $scope.refreshUseradd = function (searchKey) { //请求人搜索 $scope.requester.account = searchKey; $scope.searchData = searchKey; serchdataadd(searchKey); }; $scope.getMydata = function (x) { $scope.searchField = JSON.parse(x[0]).account; $scope.requester = JSON.parse(x[0]); }; $scope.getMydataone = function (x) { $scope.searchField = x; $scope.requester.account = x; }; serchdataadd(); function serchdataadd(searchKey) { if (searchKey) { var filterData = { user: { name: searchKey, selectType: "pinyin_all", engineer: 0, }, idx: 0, sum: 10, }; } else { var filterData = { idx: 0, sum: 10, user:{ engineer: 0, } }; } api_user_data .fetchDataList("user", filterData) .then(function (response) { var myData = response; $scope.myData = myData.list; }); } api_user_data .fetchDataList("area", { idx: 0, sum: 1000, }) .then(function (response) { if (response.status == 200) { $scope.areas = response.list; } }); api_user_data .fetchDataList("requesterType", { idx: 0, sum: 100, }) .then(function (response) { if (response.status == 200) { $scope.networktypes = response.list; } }); if ( $scope.requester.areaDTO && $scope.requester.areaDTO.id && $scope.requester.areaDTO.id != "" ) { api_user_data .fetchDataList("place", { place: { areaId: $scope.requester.areaDTO.id, }, idx: 0, sum: 1000, }) .then(function (response) { if (response.status == 200) { $scope.places = response.list; } }); } $scope.onChange = function (item) { $scope.requester.placeDTO = {}; api_user_data .fetchDataList("place", { place: { areaId: item.id, }, idx: 0, sum: 1000, }) .then(function (response) { if (response.status == 200) { $scope.places = response.list; } }); }; $scope.refreshDepts = function (key) { var filterData = { idx: 0, sum: 5, dept: { name: key, }, }; UserService.fetchDataList("department", filterData).then( function (response) { if (response.status == 200) { $scope.depts = response.list; } } ); }; $scope.ok = function () { if ( $scope.requester.account == "" || $scope.requester.name == "" ) { SweetAlert.swal( "报修人姓名或人员编号号未填!", "请补全报修人信息", "error" ); } else { $modalInstance.close($scope.requester); } }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, resolve: { items: function () { return { fetchItems: function (filterData, APIService) { filterData = filterData || {}; if (!filterData.idx) { filterData = { idx: 0, sum: 10, }; } return options.templateOptions.fetchItems( filterData, APIService ); }, }; }, title: function () { return options.templateOptions.modalTitle; }, Restangular: function () { return options.templateOptions.Restangular; }, APIService: function () { return options.templateOptions.ApiService; }, UserService: function () { return options.templateOptions.UserService; }, }, }); modalInstance.result.then( function (selectedItem) { console.log(selectedItem); if (selectedItem) { if (options.model) { if (options.model.place) { options.model.place.id = ""; } if (options.model.area) { options.model.area.id = ""; } options.model.contacts = selectedItem.name; if ( selectedItem.phone && selectedItem.phone != null && selectedItem.phone != "" ) { options.model.contactsInformation = selectedItem.phone; } else { options.model.contactsInformation = selectedItem.telephone; } if (selectedItem.placeDTO && selectedItem.placeDTO.id) { options.model.place.id = selectedItem.placeDTO.id; } if (selectedItem.areaDTO && selectedItem.areaDTO.id) { options.model.area.id = selectedItem.areaDTO.id; } if ( selectedItem.requesterTypeDTO && selectedItem.requesterTypeDTO.id == 2 ) { $scope.$parent.$parent.$parent.model.incident.priority.id = 2; $scope.$parent.$parent.$parent.model.incident.emergency.id = 2; $scope.$parent.$parent.$parent.model.incident.influence.id = 1; } } var data = { requester: selectedItem, }; options.templateOptions.UserService.addData( "requester", data ).then(function (response) { if (response.status == 200) { $scope.$parent.$parent.$parent.model["requestershow"] = selectedItem; options.value(response.data); } else { } }); } }, function () { } ); event.preventDefault(); }, }, }; }, controller: [ "$scope", "api_user_data", "api_statistic", "$stateParams", "api_bpm_data", function ($scope, api_user_data, api_statistic, $stateParams,api_bpm_data) { console.log($stateParams) // 一键复制 $scope.quickCopy = function(model){ // 姓名,工号,来电电话,地点,详细地址,故障描述 liaomingming console.log(model); var text = ''; if(model.place.id){ api_bpm_data.fetchData("place", model.place.id) .then(function (response) { if (response.status == 200) { text = `姓名:${model.requester?model.requester.name:''}\r\n工号:${model.requester?model.requester.account:''}\r\n来电电话:${model.contactsInformation||''}\r\n地点:${response.data.place||''}\r\n详细地址:${model.houseNumber||''}\r\n故障描述:${model.description||''}`; var textarea = document.createElement('textarea'); document.body.appendChild(textarea); // 隐藏此输入框 textarea.style.position = 'fixed'; textarea.style.clip = 'rect(0 0 0 0)'; textarea.style.top = '10px'; // 赋值 textarea.value = text; // 选中 textarea.select(); // 复制 document.execCommand('copy', true); // 移除输入框 document.body.removeChild(textarea); } }); }else{ text = `姓名:${model.contacts||''}\r\n工号:${model.account||''}\r\n来电电话:${model.contactsInformation||''}\r\n地点:${''}\r\n详细地址:${model.houseNumber||''}\r\n故障描述:${model.description||''}`; var textarea = document.createElement('textarea'); document.body.appendChild(textarea); // 隐藏此输入框 textarea.style.position = 'fixed'; textarea.style.clip = 'rect(0 0 0 0)'; textarea.style.top = '10px'; // 赋值 textarea.value = text; // 选中 textarea.select(); // 复制 document.execCommand('copy', true); // 移除输入框 document.body.removeChild(textarea); } event.preventDefault(); //提示 alert('复制成功'); } if (angular.isDefined($stateParams.model) && $stateParams.model != "") { var paramsModel = JSON.parse($stateParams.model) //来电-添加报修人 if (paramsModel.model.incident.requester.hjzxPhone) { $scope.options.templateOptions['addRequeter']('lg', $scope.options, $scope.to.modal); } } $scope.options.initialValue = $scope.model[$scope.options.key]; $scope.saveReqPlace = false; $scope.model.saveReqPlace = false; $scope.selectGradeBox = function () { $scope.saveReqPlace = !$scope.saveReqPlace; console.log($scope); $scope.model.saveReqPlace = $scope.saveReqPlace; }; if ( $scope.model.requester && $scope.model.requester.requesterTypeDTO && $scope.model.requester.requesterTypeDTO.id == 2 ) { $scope.$parent.$parent.$parent.model.incident.priority.id = 2; $scope.$parent.$parent.$parent.model.incident.emergency.id = 2; $scope.$parent.$parent.$parent.model.incident.influence.id = 1; } }, ], }); // 请求人选控件 formlyConfigProvider.setType({ name: "ui-requesterselect", templateUrl: "assets/views/customform/tpl/ui-requester.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options, $scope) { return { templateOptions: { // checkform: function(options) { // if (options.model.requestershow) { // options.value(options.model.requestershow); // } // }, validators: { required: { expression: function (viewValue, modelValue) { var value = modelValue || viewValue; return value.length >= 1; }, }, }, openModal: function (size, options, modal) { //查找弹出框 var modelObject = options.value(); var searchModal = function (filterSearchData) { var modalInstance = modal.open({ templateUrl: "assets/views/customform/tpl/checktable-modal-content.html", controller: function ( $scope, scope, i18nService, $modalInstance, items, title, Restangular, APIService, language, searchDatas, api_bpm_data ) { $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = true; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = false; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; $scope.gridOptions.columnDefs = [ { name: "account", displayName: "人员编号", width: 140, }, { name: "name", displayName: "姓名", width: 100, }, { name: "gender.name", displayName: "性别", width: 80, enableFiltering: false, }, { name: "phone", displayName: "电话", width: 100, enableFiltering: false, }, { name: "email", displayName: "邮件", width: 100, }, { name: "areaDTO.area", displayName: "区域", width: 100, enableFiltering: false, }, { name: "placeDTO.place", displayName: "地点", enableFiltering: false, }, ]; $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; // var filtersData = $scope.memoryfilterData; // filtersData.idx = newPage - 1; // filtersData.sum = pageSize; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { var filtersData = $scope.memoryfilterData; filtersData.idx = newPage - 1; filtersData.sum = pageSize; $scope.loadData(filtersData); } ); gridApi.selection.on.rowSelectionChanged( $scope, function (data) { // if(angular.isDefined(data.entity.account)&&data.entity.account.length==6){ $scope.selected.item = data.entity; // }else{alert ("工号格式不对,账号应为6位数,请重新填写!")} } ); gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 10, // 'requester': { 'userType': 1 } }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { if ( angular.isDefined(item.filters[0].term) && item.filters[0].term != "" ) { if (angular.isUndefined(filtersData["requester"])) { filtersData["requester"] = {}; } filtersData["requester"][item.field] = item.filters[0].term; } } }); $scope.memoryfilterData = filtersData; $scope.loadData(filtersData); }); }; $scope.memoryfilterData = defaultFilterData = { idx: 0, sum: 10, }; $scope.loadData = function (filterData) { if (!filterData.requester) { filterData.requester = {}; } if (scope.roleidcode) { angular.extend(filterData["requester"], { userType: 1, }); } items .fetchItems(filterData, APIService) .then(function (data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = myData.list; }); }; // $scope.title = title; if (searchDatas) { $scope.loadData(searchDatas); } else { $scope.loadData({ idx: 0, sum: 10, }); } $scope.selected = { item: {}, }; $scope.ok = function () { $modalInstance.close($scope.selected.item); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: size, resolve: { items: function () { return { fetchItems: function (filterData, APIService) { filterData = filterData || {}; if ( angular.isUndefined(filterData.idx) || filterData.idx == null ) { filterData = { idx: 0, sum: 10, }; } return options.templateOptions.fetchItems( filterData, APIService ); }, }; }, title: function () { return options.templateOptions.modalTitle; }, Restangular: function () { return options.templateOptions.Restangular; }, APIService: function () { return options.templateOptions.ApiService; }, language: function () { return options.templateOptions.language; }, searchDatas: function () { return filterSearchData; }, scope: function () { return $scope; }, }, }); modalInstance.result.then( function (selectedItem) { if ($scope.$parent.$parent.$parent.model.incident.callID) { selectedItem.telephone = $scope.model.incident.contactsInformation; } $scope.$parent.$parent.$parent.model.incident["requester"] = selectedItem; // $scope.$parent.$parent.$parent.model.incident['requester'] = angular.copy(selectedItem) // delete $scope.$parent.$parent.$parent.model.incident.requester.telephone; if ($scope.model) { if ($scope.model.incident.place) { $scope.model.incident.place.id = ""; } if ($scope.model.area) { $scope.model.incident.area.id = ""; } $scope.model.incident.contacts = selectedItem.name; if ( selectedItem.phone && selectedItem.phone != null && selectedItem.phone != "" ) { $scope.model.incident.contactsInformation = selectedItem.phone; } else { $scope.model.incident.contactsInformation = selectedItem.telephone; } $scope.model.incident.houseNumber = ""; if ( selectedItem.requesterTypeDTO && selectedItem.requesterTypeDTO.id == 2 ) { $scope.$parent.$parent.$parent.model.incident.priority.id = 2; $scope.$parent.$parent.$parent.model.incident.emergency.id = 2; $scope.$parent.$parent.$parent.model.incident.influence.id = 1; } } $scope.options.value(selectedItem); $scope.searchData = selectedItem.account; if (selectedItem.placeDTO && selectedItem.placeDTO.id) { $scope.model.incident.place.id = selectedItem.placeDTO.id; } if (selectedItem.areaDTO && selectedItem.areaDTO.id) { $scope.model.incident.area.id = selectedItem.areaDTO.id; } if (selectedItem.houseNumber) { $scope.model.incident.houseNumber = selectedItem.houseNumber; } if ( selectedItem.requesterTypeDTO && selectedItem.requesterTypeDTO.id == 2 ) { $scope.$parent.$parent.$parent.model.incident.priority.id = 2; $scope.$parent.$parent.$parent.model.incident.emergency.id = 2; $scope.$parent.$parent.$parent.model.incident.influence.id = 1; } if ( options.templateOptions.callback && angular.isFunction(options.templateOptions.callback) ) { options.templateOptions.callback(selectedItem, options); } if (!$scope.roleidcode) { $scope.charging(selectedItem, modal); } $scope.recentlyincident(selectedItem); }, function () { //console.log('Modal dismissed at: ' + new Date()); } ); }; searchModal(); // } }, }, }; }, controller: [ "$rootScope", "$scope", "ngTableParams", "$filter", "SweetAlert", "moment", function ( $rootScope, $scope, ngTableParams, $filter, SweetAlert, moment ) { $scope.isHk = $rootScope.isHk; $scope.roleidcode = true; // $scope.options.initialValue = undefined; if ($rootScope.user && $rootScope.user.role) { angular.forEach($rootScope.user.role, function (item) { if (item.rolecode == "call center") { $scope.roleidcode = false; } }); } $scope.recently = false; $scope.recentlyincident = function (key, model) { //关联事件 $scope.options.templateOptions.ApiRecently.fetchDataList("incident", { idx: 0, sum: 4, incident: { requester: { id: key.id, }, }, }).then(function (response) { if (response.status == 200) { $scope.recently = true; $scope.recentincident = response.list; } else { $scope.recently = false; } }); $scope.bodyHeight = window.innerHeight - 100; $(window).resize(function () { $scope.bodyHeight = window.innerHeight - 100; }); // $scope.shows = false; $scope.tempData = {}; $scope.close = function () { $scope.changes = !$scope.changes; event.preventDefault(); }; }; $scope.charging = function (key, model) { //计费弹出框 //用户信息 $scope.information = {}; $scope.options.templateOptions.ApiSer.fetchDataList("queryUser", { userId: key.account, }).then(function (response) { // if (response.status == 200) { if (response && response.data) { angular.extend($scope.information, response.data[0]); // $scope.information = response.data[0]; $scope.information.autologicDestroyTime = moment( response.data[0].autologicDestroyTime ).format("YYYY-MM-DD"); $scope.information.periodStartTime = moment( response.data[0].periodStartTime ).format("YYYY-MM-DD"); $scope.information.nextBillingTime = moment( response.data[0].nextBillingTime ).format("YYYY-MM-DD"); } else if (response.err) { SweetAlert.swal( "系统错误!", "用户信息未取到,请刷新重试", "error" ); } // } }); //上网明细 $scope.options.templateOptions.ApiSer.fetchDataList( "queryOnlineDetail", { userId: key.account, limit: "10", fromLoginTime: moment(new Date().getTime() - 86400000 * 6).format( "YYYY-MM-DD HH:mm:ss" ), toLogoutTime: moment(new Date().getTime()).format( "YYYY-MM-DD HH:mm:ss" ), } ).then(function (response) { // if (response.status == 200) { if (response && response.data) { angular.forEach(response.data, function (item, index) { if (item.logoutTime) { response.data[index].logoutTime = moment( item.logoutTime ).format("YYYY-MM-DD HH:mm:ss"); } if (item.loginTime) { response.data[index].loginTime = moment( item.loginTime ).format("YYYY-MM-DD HH:mm:ss"); } }); $scope.logininform = response.data; } else if (response.err) { SweetAlert.swal( "系统错误!", "上网明细未取到,请刷新重试", "error" ); } }); //黑名单 // $scope.information.blacklist = "否" $scope.options.templateOptions.ApiSer.fetchDataList("queryInhibit", { userId: key.account, }).then(function (response) { // if (response.status == 200) { // $scope.logininformation = response.data; if (response) { if (response.data || response.data != null) { $scope.information.blacklist = "是"; } else { if (response.err) { // SweetAlert.swal("系统错误!", "黑名单未取到,请刷新重试", "error"); } else { $scope.information.blacklist = "否"; } } } // } }); $scope.bodyHeight = window.innerHeight - 100; $(window).resize(function () { $scope.bodyHeight = window.innerHeight - 100; }); // $('#navigationcharging .pages').stop().animate({ 'marginLeft': '-500px' }, 1000); // $scope.closepages = function(e) { // $('#navigationcharging .pages').stop().animate({ 'marginLeft': '500px' }, 1000); // event.preventDefault(); // }; // $scope.shows = false; $scope.tempData = {}; $scope.close = function () { $scope.changes = !$scope.changes; event.preventDefault(); }; }; $scope.options.templateOptions.ApiService.fetchDataList( "requesterType", { idx: 0, sum: 100, } ).then(function (response) { if (response.status == 200) { $scope.networktypes = response.list; } else { SweetAlert.swal("系统错误!", "请刷新重试", "error"); } }); function serchdata(searchKey) { if (searchKey) { var filterData = { requester: { searchKey: searchKey, // 'userType': 1 }, idx: 0, sum: 10, }; } else { var filterData = { idx: 0, requester: {}, sum: 10, }; } if ( $scope.model.requester && $scope.model.requester.requesterTypeDTO ) { angular.extend(filterData.requester, { requesterTypeDTO: $scope.model.requester.requesterTypeDTO, }); if (!$scope.options.model.contactsInformation) { $scope.options.model.contactsInformation = $scope.model.requester.phone; } } if ($scope.roleidcode) { angular.extend(filterData["requester"], { userType: 1, }); } $scope.options.templateOptions.ApiService.fetchDataList( "requester", filterData ).then(function (response) { var myData = response; $scope.myData = myData.list; }); } $scope.searchData = {}; $scope.refreshUser = function (searchKey) { //请求人搜索 if (searchKey && searchKey != "") { serchdata(searchKey); } }; if ( $scope.$parent.$parent.$parent.model.incident.callID || $scope.$parent.$parent.$parent.model.requestershow ) { if (!$scope.roleidcode) { $scope.charging( $scope.$parent.$parent.$parent.model.incident.requester ); } $scope.recentlyincident( $scope.$parent.$parent.$parent.model.incident.requester ); } $scope.onChange = function (searchData) { if ($scope.$parent.$parent.$parent.model.incident.callID) { searchData.telephone = $scope.model.incident.contactsInformation; } $scope.$parent.$parent.$parent.model.incident["requester"] = searchData; if (!$scope.roleidcode) { $scope.charging(searchData); } $scope.recentlyincident(searchData); $scope.accountshow = false; if ($scope.model.incident) { if ($scope.model.incident.place) { $scope.model.incident.place.id = ""; } if ($scope.model.incident.area) { $scope.model.incident.area.id = ""; } $scope.model.incident.contacts = searchData.name; if ( searchData.phone && searchData.phone != null && searchData.phone != "" ) { $scope.model.incident.contactsInformation = searchData.phone; } else { $scope.model.incident.contactsInformation = searchData.telephone; } $scope.model.incident.houseNumber = ""; if ( searchData.requesterTypeDTO && searchData.requesterTypeDTO.id == 2 ) { $scope.$parent.$parent.$parent.model.incident.priority.id = 2; $scope.$parent.$parent.$parent.model.incident.emergency.id = 2; $scope.$parent.$parent.$parent.model.incident.influence.id = 1; } } $scope.options.value(searchData); $scope.searchKey = searchData.account; if (searchData.placeDTO && searchData.placeDTO.id) { $scope.model.incident.place.id = searchData.placeDTO.id; } if (searchData.areaDTO && searchData.areaDTO.id) { $scope.model.incident.area.id = searchData.areaDTO.id; } if (searchData.houseNumber) { $scope.model.incident.houseNumber = searchData.houseNumber; } if ( searchData.requesterTypeDTO && searchData.requesterTypeDTO.id == 2 ) { $scope.$parent.$parent.$parent.model.incident.priority.id = 2; $scope.$parent.$parent.$parent.model.incident.emergency.id = 2; $scope.$parent.$parent.$parent.model.incident.influence.id = 1; } }; }, ], }); //ui-grid-table展示控件 formlyConfigProvider.setType({ name: "ui-grid-table", // extends: 'multiCheckbox',//去掉冒号 templateUrl: "assets/views/customform/tpl/ui-grid-show-nofooter.html", defaultOptions: function (options) { return { templateOptions: { linkage: function () { }, }, }; }, controller: function ( $scope, $rootScope, i18nService, Restangular, api_bpm_data, api_statistic, $rootScope ) { var loginUser = $rootScope.user; $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = false; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = false; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 3; $scope.gridOptions.multiSelect = false; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; $scope.gridOptions.columnDefs = [ { name: "item", displayName: "序号", width: 80, enableFiltering: false, }, { name: "incidentsign", displayName: "单号", width: 80, enableFiltering: false, }, { name: "description", displayName: "主题", width: 80, enableFiltering: false, }, { name: "state.name", displayName: "状态", width: 110, enableFiltering: false, }, { name: "acceptDate", displayName: "创建时间", width: 160, enableFiltering: false, }, { name: "requester.name", displayName: "请求人", width: 80, enableFiltering: false, }, { name: "handlingPersonnelUser.name", displayName: "处理人", width: 160, enableFiltering: false, }, { name: "place.place", displayName: "区域地点", width: 160, enableFiltering: false, }, ]; // var defaultFilterData = { // "idx": 0, // "sum": 3 // }; // // //分页控制 $scope.gridOptions.onRegisterApi = function (gridApi) { gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { var filtersData = $scope.memoryfilterData; filtersData.idx = newPage - 1; filtersData.sum = pageSize; $scope.refreshData("expand-right", filtersData); } ); // 表格单选事件 gridApi.selection.on.rowSelectionChanged($scope, function (data) { var addstr = data.grid.appScope.$parent.$parent.$parent.model.addstr; data.grid.appScope.$parent.$parent.$parent.model.incident.table = data.entity; data.grid.appScope.$parent.$parent.$parent.model.associationType = data.entity.id; var str = data.grid.appScope.$parent.$parent.$parent.model.incident .description || ""; str = str.split("").reverse().join(""); var del = addstr.split("").reverse().join(""); // console.log(del); var reg = new RegExp(del); str = str.replace(reg, ""); str = str.split("").reverse().join(""); if ( data.grid.appScope.$parent.$parent.$parent.model.incident .associationType == "事件补充" ) { data.grid.appScope.$parent.$parent.$parent.model.relationType = null; str += data.entity.description; data.grid.appScope.$parent.$parent.$parent.model.addstr = addstr = data.entity.description; } else if ( data.grid.appScope.$parent.$parent.$parent.model.incident .associationType == "事件已解决" ) { data.grid.appScope.$parent.$parent.$parent.model.incident.relationType = "close"; data.grid.appScope.$parent.$parent.$parent.model.addstr = addstr = ""; } data.grid.appScope.$parent.$parent.$parent.model.incident.description = str; data.grid.appScope.$parent.$parent.$parent.model.incident.relationIncidentId = data.entity.id; }); }; // 刷新表格 setInterval(function () { // console.log($scope.myData); $scope.myData = $scope.$parent.$parent.$parent.model.incident.tableList; // console.log($scope.myData); if ($scope.myData != null) { for (var i = 0; i < $scope.myData.length; i++) { //添加序号 $scope.myData[i]["item"] = i + 1; } } }, 1000); }, }); //处理人信息 formlyConfigProvider.setType({ name: "ui-userinformation", templateUrl: "assets/views/customform/tpl/ui-userinformation.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: {}, }; }, controller: [ "$scope", function ($scope) { $scope.group = ""; $scope.role = ""; if ( angular.isDefined($scope.model.handlingPersonnelUser) && angular.isDefined($scope.model.handlingPersonnelUser.group) && $scope.model.handlingPersonnelUser.group.length == 1 ) { $scope.group = $scope.model.handlingPersonnelUser.group[0].groupName; } else { for ( var i = 0; i < $scope.model.handlingPersonnelUser.group.length; i++ ) { $scope.group += $scope.model.handlingPersonnelUser.group[i].groupName + ","; } } if ( angular.isDefined($scope.model.handlingPersonnelUser.role) && $scope.model.handlingPersonnelUser.role.length == 1 ) { $scope.role = $scope.model.handlingPersonnelUser.role[0].role; } else { for ( var i = 0; i < $scope.model.handlingPersonnelUser.role.length; i++ ) { $scope.role += $scope.model.handlingPersonnelUser.role[i].role + ","; } } $scope.options.templateOptions.that = $scope; }, ], }); //处理界面处理人信息 formlyConfigProvider.setType({ name: "ui-handler", templateUrl: "assets/views/customform/tpl/ui-handler.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: {}, }; }, controller: [ "$scope", function ($scope) { $scope.group = ""; // $scope.role=""; if ( angular.isDefined($scope.model.handlingPersonnelUser.group) && $scope.model.handlingPersonnelUser.group.length == 1 ) { $scope.group = $scope.model.handlingPersonnelUser.group[0].groupName; } else { for ( var i = 0; i < $scope.model.handlingPersonnelUser.group.length; i++ ) { $scope.group += $scope.model.handlingPersonnelUser.group[i].groupName + ","; } } // if(angular.isDefined($scope.model.handlingPersonnelUser.role) &&$scope.model.handlingPersonnelUser.role.length==1){ // $scope.role=$scope.model.handlingPersonnelUser.role[0].role; // }else{ // for(var i=0;i<$scope.model.handlingPersonnelUser.role.length;i++){ // $scope.role += $scope.model.handlingPersonnelUser.role[i].role +","; // } // } $scope.options.templateOptions.that = $scope; }, ], }); //微信事件流程 formlyConfigProvider.setType({ name: "ui-wxIncidentProcess", templateUrl: "assets/views/customform/tpl/wxIncidentProcess.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: {}, }; }, controller: [ "$scope", function ($scope) { console.log($scope.model); $scope.pingjia = false; $scope.jiejue = false; if ($scope.model.incidentState.value == "3") { $scope.pingjia = true; } else if ($scope.model.incidentState.value == "4") { $scope.jiejue = true; } }, ], }); //打电话 formlyConfigProvider.setType({ name: "ui-inputcall", extends: "input", templateUrl: "assets/views/customform/tpl/inputcall.html", defaultOptions: function (options) { return { templateOptions: { transform: function (value) { }, }, }; }, controller: [ "$scope", "$rootScope", "api_text", "SweetAlert", function ($scope, $rootScope, api_text, SweetAlert) { $scope.dialout = function (teleno) { // var gid = "@0"; // var telephone = "9" + teleno; $rootScope.callout = 2; // var agcount = tlwsa.tlaGetagentcount(); // var agcountFlag = false; // console.log(teleno) // // 查询当前话机是否签入 // for (var i = 0; i < agcount; i++) { // if (tlwsa.tlaGetagentwid(i) == $rootScope.phoneNumber) { // agcountFlag = true; // } // } if (localStorage.getItem('fenjiNumber')) { // var caller = localStorage.getItem('phoneNumber');//呼叫人 // console.log(sessionStorage.getItem('phones')) // var phones = JSON.parse(sessionStorage.getItem('phones')); // var isHuajihao = phones.length?phones.some(v=>v == teleno):false; // console.log(isHuajihao) // if(isHuajihao){ // tlwsa.tlaCallagc(teleno); // }else{ // tlwsa.tlaCallout(teleno, caller, 0); // } // var caller = localStorage.getItem('fenjiNumber');//呼叫人 $rootScope.toggle('off-sidebar'); // tlwsa.tlaCallout(teleno, caller, 0); }else if(localStorage.getItem('hk_phone')){ var gid = "@0" var telephone = '9' + teleno $rootScope.callout = 2; if ($rootScope.takes) { api_text.dialout($rootScope.takes, gid, telephone).then(function (data) { if (data.errno == 0) { $rootScope.status = 6; } }) } else { SweetAlert.swal({ title: "呼叫失败", text: "请先签入呼叫中心!", type: "error", confirmButtonColor: "#DD6B55" }); } } else { SweetAlert.swal({ title: "呼叫失败", text: "请先签入呼叫中心!", type: "error", confirmButtonColor: "#DD6B55", }); } }; $scope.options.templateOptions.that = $scope; }, ], }); //关闭界面处理人信息 formlyConfigProvider.setType({ name: "ui-closehandler", templateUrl: "assets/views/customform/tpl/ui-closehandler.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: {}, }; }, controller: [ "$scope", "$rootScope", "api_text", function ($scope, $rootScope, api_text) { $scope.dialout = function (teleno) { var gid = "@0"; var telephone = "9" + teleno; api_text .dialout($rootScope.takes, gid, telephone) .then(function (data) { if (data.errno == 0) { $rootScope.status = 6; } }); }; $scope.options.templateOptions.that = $scope; }, ], }); //用户单选控件 formlyConfigProvider.setType({ name: "ui-userselect", templateUrl: "assets/views/customform/tpl/ui-userselect.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: { openModal: function (size, options, modal) { var modalInstance = modal.open({ templateUrl: "assets/views/customform/tpl/checktable-modal-content.html", controller: function ( $scope, $rootScope, i18nService, $modalInstance, items, title, Restangular, APIService, onDataCallback, parentScope, api_category, api_user_data ) { $scope.isAssign = options.templateOptions.departmentDispatchesOrders; $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = true; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = false; $scope.searchModel = { type:1,//默认科室内转派 } $scope.hospitalList = []; $scope.dutyDeptList = []; // 修改转派模式 $scope.changeType = function(type){ console.log($scope.searchModel.type) $scope.gridOptions.totalItems = 0; $scope.myData = []; $scope.searchModel.department = undefined; $scope.searchModel.branch = undefined; $scope.dutyDeptList = []; if($scope.searchModel.type == 2){ //跨科室转派 api_user_data.fetchDataList('branch', { "idx": 0, "sum": 100 }).then(function (data) { if(data.status == 200){ $scope.hospitalList = data.list; if($rootScope.user.duty){ // 当前的所属责任科室 $scope.searchModel.branch = $scope.hospitalList.find(v=>v.id == $rootScope.user.duty.branch); // $scope.changeBranch(); }else if($rootScope.user.branch){ // 当前的所属院区 $scope.searchModel.branch = $scope.hospitalList.find(v=>v.id == $rootScope.user.branch.id); // $scope.changeBranch(); } }else{ SweetAlert.swal({ title: "系统错误!", text: "请刷新重试!", type: "error" }); } }) }else if($scope.searchModel.type == 1){ //科室内转派 var postData = { idx: 0, sum: 10, user: { roledata: { rolecode: "first-line support", }, selectType: "1", }, } // 判断当前是责任科室还是院区 if ($rootScope.user.duty) { // 当前的所属责任科室 postData.user.currentDuty = $rootScope.user.duty.id; } else if ($rootScope.user.branch) { // 当前的所属院区 $scope.myData = []; return; } $scope.loadData(postData); } } // 修改院区 $scope.changeBranch = function(keyword=''){ if(!$scope.searchModel.branch){ return; } $scope.searchModel.department = undefined; $scope.dutyDeptList = []; api_user_data.fetchDataList('dutyDepartment', { "idx": 0, "sum": 100, "dutyDepartment":{ branch:$scope.searchModel.branch.id, dept:keyword, selectType: "pinyin_qs" } }).then(function (data) { if(data.status == 200){ $scope.dutyDeptList = data.list; }else{ SweetAlert.swal({ title: "系统错误!", text: "请刷新重试!", type: "error" }); } }) } // 修改责任科室 $scope.changeDutyDept = function(){ $scope.loadData({ idx: 0, sum: 10, user: { duty:$scope.searchModel.department, roledata: { rolecode: "first-line support", }, selectType: "1", }, }); } $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; $scope.gridOptions.rowTemplate = '
'; $scope.gridOptions.columnDefs = [ { name: "account", displayName: "人员编号", width: 120, }, { name: "name", displayName: "姓名", width: 100, cellTemplate: "
" + '
{{row.entity.name}}
' + "
", }, // { // name: 'gender.name', // displayName: '性别', // width: 80, // enableFiltering: false // }, { name: "phone", displayName: "电话", width: 230, enableFiltering: false, }, { name: "email", displayName: "邮箱", width: 180, enableFiltering: false, }, { name: "dept.dept", displayName: "科室", width: 130, enableFiltering: false, }, // { // name: "taskCount", // displayName: "处理中事件数", // enableFiltering: false, // }, ]; // $scope.selectButtonClick $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { var postData = { idx: newPage - 1, sum: pageSize, user: { roledata: { rolecode: "first-line support", }, selectType: "1", }, } if($scope.isAssign){ if($scope.searchModel.type == 1){ // 判断当前是责任科室还是院区 if ($rootScope.user.duty) { // 当前的所属责任科室 postData.user.currentDuty = $rootScope.user.duty.id; } else if ($rootScope.user.branch) { // 当前的所属院区 $scope.myData = []; return; } }else if($scope.searchModel.type == 2){ // 跨科室转派 postData.user.duty = $scope.searchModel.department; } } $scope.loadData(postData); } ); gridApi.selection.on.rowSelectionChanged( $scope, function (data) { $scope.selected.items = data.entity; //console.log(data); } ); gridApi.selection.on.rowSelectionChangedBatch( $scope, function (data) { $scope.selected.items = data.entity; //console.log(data); } ); // gridApi.selection.on.selectAllRows = function(row) { //GridRow // // if (row.entity.age > 45) { // row.grid.api.selection.selectRow(row.entity); // 选中行 // // } // }; gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 10, user: { roledata: { rolecode: "roleset", }, selectType: "1", }, }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { // console.log("item.filters[0]=" + JSON.stringify(item.filters)); if ( angular.isDefined(item.filters[0].term) && item.filters[0].term != "" ) { if (angular.isUndefined(filtersData["user"])) { filtersData["user"] = {}; } filtersData["user"][item.field] = item.filters[0].term; } } }); if($scope.isAssign){ if($scope.searchModel.type == 1){ // 判断当前是责任科室还是院区 if ($rootScope.user.duty) { // 当前的所属责任科室 filtersData.user.currentDuty = $rootScope.user.duty.id; } else if ($rootScope.user.branch) { // 当前的所属院区 $scope.myData = []; return; } }else if($scope.searchModel.type == 2){ // 跨科室转派 filtersData.user.duty = $scope.searchModel.department; } } // $scope.memoryfilterData = filtersData; $scope.loadData(filtersData); }); }; // $scope.gridOptions.isRowSelectable = function(row) { //GridRow // if (row.entity.age > 45) { // row.grid.api.selection.selectRow(row.entity); // 选中行 // } // }, $scope.onDblClick = function (data, event) { // $scope.selected.items = data.entity; $scope.selectButtonClick(data, event); }; // $scope.gridApi.selection.on.rowSelectionChanged($scope, function(data) { // $scope.selected.items = data.entity; // }) // }; $scope.memoryfilterData = { idx: 0, sum: 10, user: { roledata: { rolecode: "roleset", }, selectType: "1", }, }; $scope.loadData = function (filterData) { // console.log("filtersData=111" + JSON.stringify(filterData)) items .fetchItems(filterData, APIService) .then(function (data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = myData.list; }); }; $scope.title = title; $scope.selected = { items: {}, }; $scope.ok = function () { // if(onDataCallback&&angular.isFunction(onDataCallback)){ // onDataCallback($scope.selected.item, parentScope); // } $modalInstance.close($scope.selected.items); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; // 初始化 var postData = { idx: 0, sum: 10, user: { roledata: { rolecode: "first-line support", }, selectType: "1", }, } if($scope.isAssign){ if($scope.searchModel.type == 1){ // 判断当前是责任科室还是院区 if ($rootScope.user.duty) { // 当前的所属责任科室 postData.user.currentDuty = $rootScope.user.duty.id; } else if ($rootScope.user.branch) { // 当前的所属院区 $scope.myData = []; return; } }else if($scope.searchModel.type == 2){ // 跨科室转派 postData.user.duty = $scope.searchModel.department; } } $scope.loadData(postData); }, size: size, resolve: { items: function () { return { fetchItems: function (filterData, APIService) { filterData = filterData || {}; if ( angular.isDefined(filterData.idx) && filterData.idx == null ) { filterData = { idx: 0, sum: 10, user: { roledata: { rolecode: "roleset", }, selectType: "1", }, }; } return options.templateOptions.fetchItems( filterData, APIService ); }, }; }, title: function () { return options.templateOptions.label; }, Restangular: function () { return options.templateOptions.Restangular; }, APIService: function () { return options.templateOptions.ApiService; }, onDataCallback: function () { return options.templateOptions.callback; }, parentScope: function () { return options.templateOptions.that; }, }, }); modalInstance.result.then( function (selectedItem) { // console.log(selectedItem); options.value(selectedItem); if ( options.templateOptions.callback && angular.isFunction(options.templateOptions.callback) ) { options.templateOptions.callback( selectedItem, options.templateOptions.that ); } if ( options.templateOptions.linkData && angular.isFunction(options.templateOptions.linkData) ) { options.templateOptions.linkData( selectedItem, options.templateOptions.that ); } }, function () { //console.log('Modal dismissed at: ' + new Date()); } ); }, }, }; }, controller: [ "$scope", function ($scope) { $scope.options.templateOptions.that = $scope; // $scope.options.model[$scope.options.key] = {} }, ], }); //用户单选控件(dd 单选input带搜索)liaomingming formlyConfigProvider.setType({ name: "ui-userselectSearch", templateUrl: "assets/views/customform/tpl/ui-userselectSearch.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: { openModal: function (size, options, modal) { var modalInstance = modal.open({ templateUrl: "assets/views/customform/tpl/checktable-modal-content.html", controller: function ( $scope, $rootScope, i18nService, $modalInstance, items, title, Restangular, APIService, onDataCallback, parentScope, api_category, api_user_data ) { $scope.isAssign = options.templateOptions.departmentDispatchesOrders; $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = true; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = false; $scope.searchModel = { type:1,//默认科室内转派 } $scope.hospitalList = []; $scope.dutyDeptList = []; // 修改转派模式 $scope.changeType = function(type){ console.log($scope.searchModel.type) $scope.gridOptions.totalItems = 0; $scope.myData = []; $scope.searchModel.department = undefined; $scope.searchModel.branch = undefined; $scope.dutyDeptList = []; if($scope.searchModel.type == 2){ //跨科室转派 api_user_data.fetchDataList('branch', { "idx": 0, "sum": 100 }).then(function (data) { if(data.status == 200){ $scope.hospitalList = data.list; if($rootScope.user.duty){ // 当前的所属责任科室 $scope.searchModel.branch = $scope.hospitalList.find(v=>v.id == $rootScope.user.duty.branch); // $scope.changeBranch(); }else if($rootScope.user.branch){ // 当前的所属院区 $scope.searchModel.branch = $scope.hospitalList.find(v=>v.id == $rootScope.user.branch.id); // $scope.changeBranch(); } }else{ SweetAlert.swal({ title: "系统错误!", text: "请刷新重试!", type: "error" }); } }) }else if($scope.searchModel.type == 1){ //科室内转派 var postData = { idx: 0, sum: 10, user: { roledata: { rolecode: "first-line support", }, selectType: "1", }, } // 判断当前是责任科室还是院区 if ($rootScope.user.duty) { // 当前的所属责任科室 postData.user.currentDuty = $rootScope.user.duty.id; } else if ($rootScope.user.branch) { // 当前的所属院区 $scope.myData = []; return; } $scope.loadData(postData); } } // 修改院区 $scope.changeBranch = function(keyword=''){ if(!$scope.searchModel.branch){ return; } $scope.searchModel.department = undefined; $scope.dutyDeptList = []; api_user_data.fetchDataList('dutyDepartment', { "idx": 0, "sum": 100, "dutyDepartment":{ branch:$scope.searchModel.branch.id, dept:keyword, selectType: "pinyin_qs" } }).then(function (data) { if(data.status == 200){ $scope.dutyDeptList = data.list; }else{ SweetAlert.swal({ title: "系统错误!", text: "请刷新重试!", type: "error" }); } }) } // 修改责任科室 $scope.changeDutyDept = function(){ $scope.loadData({ idx: 0, sum: 10, user: { duty:$scope.searchModel.department, roledata: { rolecode: "first-line support", }, selectType: "1", }, }); } $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; $scope.gridOptions.rowTemplate = '
'; $scope.gridOptions.columnDefs = [ { name: "account", displayName: "人员编号", width: 120, }, { name: "name", displayName: "姓名", width: 100, cellTemplate: "
" + '
{{row.entity.name}}
' + "
", }, // { // name: 'gender.name', // displayName: '性别', // width: 80, // enableFiltering: false // }, { name: "phone", displayName: "电话", width: 230, enableFiltering: false, }, { name: "email", displayName: "邮箱", width: 180, enableFiltering: false, }, { name: "dept.dept", displayName: "科室", width: 130, enableFiltering: false, }, // { // name: "taskCount", // displayName: "处理中事件数", // enableFiltering: false, // }, ]; // $scope.selectButtonClick $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { var postData = { idx: newPage - 1, sum: pageSize, user: { roledata: { rolecode: "first-line support", }, selectType: "1", }, } if($scope.isAssign){ if($scope.searchModel.type == 1){ // 判断当前是责任科室还是院区 if ($rootScope.user.duty) { // 当前的所属责任科室 postData.user.currentDuty = $rootScope.user.duty.id; } else if ($rootScope.user.branch) { // 当前的所属院区 $scope.myData = []; return; } }else if($scope.searchModel.type == 2){ // 跨科室转派 postData.user.duty = $scope.searchModel.department; } } $scope.loadData(postData); } ); gridApi.selection.on.rowSelectionChanged( $scope, function (data) { $scope.selected.items = data.entity; //console.log(data); } ); gridApi.selection.on.rowSelectionChangedBatch( $scope, function (data) { $scope.selected.items = data.entity; //console.log(data); } ); // gridApi.selection.on.selectAllRows = function(row) { //GridRow // // if (row.entity.age > 45) { // row.grid.api.selection.selectRow(row.entity); // 选中行 // // } // }; gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 10, user: { roledata: { rolecode: "first-line support", }, selectType: "1", }, }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { // console.log("item.filters[0]=" + JSON.stringify(item.filters)); if ( angular.isDefined(item.filters[0].term) && item.filters[0].term != "" ) { if (angular.isUndefined(filtersData["user"])) { filtersData["user"] = {}; } filtersData["user"][item.field] = item.filters[0].term; } } }); if($scope.isAssign){ if($scope.searchModel.type == 1){ // 判断当前是责任科室还是院区 if ($rootScope.user.duty) { // 当前的所属责任科室 filtersData.user.currentDuty = $rootScope.user.duty.id; } else if ($rootScope.user.branch) { // 当前的所属院区 $scope.myData = []; return; } }else if($scope.searchModel.type == 2){ // 跨科室转派 filtersData.user.duty = $scope.searchModel.department; } } // $scope.memoryfilterData = filtersData; $scope.loadData(filtersData); }); }; // $scope.gridOptions.isRowSelectable = function(row) { //GridRow // if (row.entity.age > 45) { // row.grid.api.selection.selectRow(row.entity); // 选中行 // } // }, $scope.onDblClick = function (data, event) { // $scope.selected.items = data.entity; $scope.selectButtonClick(data, event); }; // $scope.gridApi.selection.on.rowSelectionChanged($scope, function(data) { // $scope.selected.items = data.entity; // }) // }; $scope.memoryfilterData = { idx: 0, sum: 10, user: { roledata: { rolecode: "first-line support", }, selectType: "1", }, }; $scope.loadData = function (filterData) { // console.log("filtersData=111" + JSON.stringify(filterData)) items .fetchItems(filterData, APIService) .then(function (data) { if(($scope.searchModel.type == 1 && filterData.user.duty) || ($scope.searchModel.type == 2 && !filterData.user.duty)){ $scope.gridOptions.totalItems = 0; $scope.myData = []; }else{ var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = myData.list; } }); }; $scope.title = title; $scope.selected = { items: {}, }; $scope.ok = function () { // if(onDataCallback&&angular.isFunction(onDataCallback)){ // onDataCallback($scope.selected.item, parentScope); // } $modalInstance.close($scope.selected.items); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; // 初始化 var postData = { idx: 0, sum: 10, user: { roledata: { rolecode: "first-line support", }, selectType: "1", }, } if($scope.isAssign){ if($scope.searchModel.type == 1){ // 判断当前是责任科室还是院区 if ($rootScope.user.duty) { // 当前的所属责任科室 postData.user.currentDuty = $rootScope.user.duty.id; } else if ($rootScope.user.branch) { // 当前的所属院区 $scope.myData = []; return; } }else if($scope.searchModel.type == 2){ // 跨科室转派 postData.user.duty = $scope.searchModel.department; } } $scope.loadData(postData); }, size: size, resolve: { items: function () { return { fetchItems: function (filterData, APIService) { filterData = filterData || {}; if ( angular.isDefined(filterData.idx) && filterData.idx == null ) { filterData = { idx: 0, sum: 10, user: { roledata: { rolecode: "first-line support", }, selectType: "1", }, }; } return options.templateOptions.fetchItems( filterData, APIService ); }, }; }, title: function () { return options.templateOptions.label; }, Restangular: function () { return options.templateOptions.Restangular; }, APIService: function () { return options.templateOptions.ApiService; }, onDataCallback: function () { return options.templateOptions.callback; }, parentScope: function () { return options.templateOptions.that; } }, }); modalInstance.result.then( function (selectedItem) { // console.log(selectedItem); options.value(selectedItem); if ( options.templateOptions.callback && angular.isFunction(options.templateOptions.callback) ) { options.templateOptions.callback( selectedItem, options.templateOptions.that ); } if ( options.templateOptions.linkData && angular.isFunction(options.templateOptions.linkData) ) { options.templateOptions.linkData( selectedItem, options.templateOptions.that ); } }, function () { //console.log('Modal dismissed at: ' + new Date()); } ); }, }, }; }, controller: [ "$scope", function ($scope) { $scope.options.templateOptions.that = $scope; }, ], }); //用户多选控件 formlyConfigProvider.setType({ name: "ui-multiuserselect", templateUrl: "assets/views/customform/tpl/ui-multiuserselect.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: { openModal: function (size, options, modal, model) { var modalInstance = modal.open({ templateUrl: "assets/views/customform/tpl/checktable-modal-content.html", controller: function ( $scope, $modalInstance, i18nService, $timeout, items, title, Restangular, APIService, selectItems ) { $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = true; $scope.gridOptions.enableGridMenu = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = true; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = true; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; //{"id":1,"phone":"15071189091","name":"管理员","gender":"男","flag":1,"email":"asda@qq.com","account":"000001","group":[{"id":3,"groupName":"运行监控科"}]} $scope.gridOptions.columnDefs = [ // { name:'id', width:80, enableFiltering:false}, { name: "account", displayName: "账号", width: 140, }, { name: "name", displayName: "名称", width: 100, }, { name: "gender.name", displayName: "性别", width: 140, enableFiltering: false, }, { name: "phone", displayName: "电话", width: 100, enableFiltering: false, }, { name: "email", displayName: "邮件", width: 100, enableFiltering: false, }, { name: "dept.dept", displayName: "科室", width: 100, enableFiltering: false, }, { name: "group[0].groupName", displayName: "职位", width: 100, enableFiltering: false, }, ]; $scope.selected = { items: selectItems, }; $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { var filtersData = $scope.memoryfilterData; filtersData.idx = newPage - 1; filtersData.sum = pageSize; $scope.loadData(filtersData); // $scope.loadData({"idx":newPage-1,"sum":pageSize}); } ); gridApi.selection.on.rowSelectionChanged( $scope, function (scope) { var j = 0; for ( var i = 0; i <= scope.grid.appScope.selected.items.length; i++ ) { if ( scope.grid.appScope.selected.items[i] == scope.entity ) { j++; break; } } if (j == 1) { scope.grid.appScope.selected.items.splice(i, 1); } else { scope.grid.appScope.selected.items.push(scope.entity); for ( var i = 0; i < scope.grid.appScope.selected.items.length; i++ ) { for ( var z = 0; z < scope.grid.appScope.selected.items.length; z++ ) { // console.log("$scope.selected.items="+JSON.stringify($scope.selected.items)); // console.log("scope.grid.appScope.selected.items="+JSON.stringify(scope.grid.appScope.selected.items)) if ( angular.isDefined( scope.grid.appScope.selected.items ) && scope.grid.appScope.selected.items[i].id == scope.grid.appScope.selected.items[z].id && i != z ) { scope.grid.appScope.selected.items.splice(i, 1); } } } } } ); // gridApi.selection.on.rowSelectionChanged($scope, function($scope, rows){ // $scope.grid.appScope.selected.items.push($scope.entity); // }); gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 10, user: { roledata: { rolecode: options.model.currentRole, }, selectType: "1", }, }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { //console.log("filtersData="+JSON.stringify(filtersData)) if ( angular.isDefined(item.filters[0].term) && item.filters[0].term != "" ) { if (angular.isUndefined(filtersData["user"])) { filtersData["user"] = {}; } filtersData["user"][item.field] = item.filters[0].term; } } }); $scope.memoryfilterData = filtersData; $scope.loadData(filtersData); }); }; if (!options.model) { var mouse = { model: { currentRole: "", }, }; angular.extend(options, mouse); } $scope.memoryfilterData = { idx: 0, sum: 10, user: { roledata: { rolecode: options.model.currentRole, }, selectType: "1", }, }; $scope.loadData = function (filterData) { // console.log(" filtersData['user'][item.field]=111"+JSON.stringify(filterData)); items .fetchItems(filterData, APIService) .then(function (data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = myData.list; //console.log($scope.gridOptions.pagination.getTotalPages()); // if($scope.selected.items){ // angular.forEach($scope.selected.items,function(selectItem){ // $scope.gridApi.selection.selectRow(selectItem); // }); // } }); }; // $scope.title = title; $scope.loadData({ idx: 0, sum: 10, user: { roledata: { rolecode: options.model.currentRole, }, selectType: "1", }, }); // $timeout(function(){ // if($scope.selected.items){ // angular.forEach($scope.selected.items,function(selectItem){ // $scope.gridApi.selection.selectRow(selectItem); // }); // } // },2000) $scope.ok = function () { // $scope.selected.items = $scope.gridApi.selection.getSelectedRows(); $modalInstance.close($scope.selected.items); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: size, resolve: { items: function () { return { fetchItems: function (filterData, APIService) { filterData = filterData || {}; if ( angular.isDefined(filterData.idx) && filterData.idx == null ) { filterData = { idx: 0, sum: 10, user: { roledata: { rolecode: options.model.incident.currentRole, }, selectType: "1", }, }; } return options.templateOptions.fetchItems( filterData, APIService ); }, }; }, title: function () { return options.templateOptions.modalTitle; }, Restangular: function () { return options.templateOptions.Restangular; }, APIService: function () { return options.templateOptions.ApiService; }, selectItems: function () { return model || []; }, }, }); modalInstance.result.then( function (selectedItem) { options.value(selectedItem); options.formControl.$validate(); }, function () { //console.log('Modal dismissed at: ' + new Date()); } ); }, }, validators: { required: { expression: function (viewValue, modelValue) { var value = modelValue || viewValue; return value.length >= 1; }, }, }, }; }, controller: [ "$scope", function ($scope) { $scope.model[$scope.options.key] = []; $scope.remove = function (itemId) { angular.forEach( $scope.model[$scope.options.key], function (entry, index) { if (entry.id == itemId) { $scope.model[$scope.options.key].splice(index, 1); // console.log($scope.options.formControl) $scope.options.formControl.$validate(); } else { } } ); }; }, ], }); //用户多选控件-字符串展示 formlyConfigProvider.setType({ name: "ui-stringuserselect", extends: "input", templateUrl: "assets/views/customform/tpl/ui-stringuserselect.html", defaultOptions: function (options) { return { templateOptions: { translate: "", refreshDelay: 0, }, }; }, controller: [ "$scope", function ($scope) { var keydata = ""; if (angular.isArray($scope.model)) { angular.forEach($scope.model, function (item) { keydata = keydata + "," + item.name; }); } // $scope.model[$scope.options.key] = []; }, ], }); //重复事件 formlyConfigProvider.setType({ name: "ui-incidentmodelselect", extends: "input", templateUrl: "assets/views/customform/tpl/ui-modelselect.html", defaultOptions: function (options) { return { templateOptions: { openModal: function (size, options, modal) { var modalInstance = modal.open({ templateUrl: "assets/views/customform/tpl/checktable-modal-content.html", controller: function ( $scope, $rootScope, $modalInstance, items, title, Restangular, APIService, i18nService, api_configure_data, api_user_data, api_bpm_data ) { $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = true; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = false; var mun = $scope.gridOptions.paginationPageSize; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; $scope.gridOptions.columnDefs = items.columnDefs(); $scope.transferTime = function (time) { return moment(time).format("YYYY-MM-DD HH:mm"); }; $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { // console.log(newPage); // console.log(pageSize); $scope.loadData({ idx: newPage - 1, sum: pageSize, }); } ); gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 100, }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { if ( angular.isDefined(item.filters[0].term) && item.filters[0].term != "" ) { // console.log("filtersData="+JSON.stringify(filtersData)) if (angular.isUndefined(filtersData["incident"])) { filtersData["incident"] = {}; } filtersData["incident"][item.field] = item.filters[0].term; if (angular.isUndefined(filtersData["problem"])) { filtersData["problem"] = {}; } filtersData["problem"][item.field] = item.filters[0].term; if (angular.isUndefined(filtersData["change"])) { filtersData["change"] = {}; } filtersData["change"][item.field] = item.filters[0].term; if (angular.isUndefined(filtersData["release"])) { filtersData["release"] = {}; } filtersData["release"][item.field] = item.filters[0].term; } } }); $scope.loadData(filtersData); }); gridApi.selection.on.rowSelectionChanged( $scope, function (data) { $scope.selected.item = data.entity; //console.log(data); } ); }; //资产 $scope.cmdb = {}; //资产状态 $scope.state_data = [ { name: "全部状态", value: "", }, { name: "在库", value: "1", }, { name: "在线", value: "2", }, { name: "借出", value: "3", }, { name: "报修", value: "4", }, { name: "报废", value: "5", }, { name: "备用", value: "6", }, ]; //资产类型 $scope.wt_zcfl = function () { api_configure_data .fetchDataList("ciclassify", { idx: 0, sum: 100, }) .then(function (data) { console.log(data); // $scope.wt_zclx = data.list; console.log(data); $scope.wtData = []; if (data.status == 200) { var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = null; //Initially set our loop to null var parentNode = null; //loop over data // $scope.wtData=data.list; data = data.list; //知识库分类数据三级处理 for (var i = 0; i < data.length; i++) { // console.log(data[i]) var datum = data[i]; //each node will have children, so let's give it a "children" poperty // console.log(datum); datum.children = []; if (!datum.parent) { $scope.wtData.push(datum); // console.log($scope.wtData) } else { if ($scope.wtData[0]) { if ($scope.wtData[0].id == datum.parent.id) { $scope.wtData[0].children.push(datum); } for ( var j = 0; j < $scope.wtData[0].children.length; j++ ) { if ( $scope.wtData[0].children[j].id == datum.parent.id ) { $scope.wtData[0].children[j].children.push( datum ); } } } if ($scope.wtData[1]) { if ($scope.wtData[1].id == datum.parent.id) { $scope.wtData[1].children.push(datum); } for ( var j = 0; j < $scope.wtData[1].children.length; j++ ) { if ( $scope.wtData[1].children[j].id == datum.parent.id ) { $scope.wtData[1].children[j].children.push( datum ); } } } if ($scope.wtData[2]) { if ($scope.wtData[2].id == datum.parent.id) { $scope.wtData[2].children.push(datum); } for ( var j = 0; j < $scope.wtData[2].children.length; j++ ) { if ( $scope.wtData[2].children[j].id == datum.parent.id ) { $scope.wtData[2].children[j].children.push( datum ); } } } } // console.log($scope.wtData) idToNodeMap[datum.id] = datum; root = datum; // treeMap[datum.id] = root; } } }); }; $scope.wt_zcfl(); //事件 //受理人,处理人 $scope.searchkeys = {}; var fieldata = { idx: 0, sum: 100, flag: -1, user: { engineer: 1, } }; getUser(fieldata, 3); function getUser(fieldatas, it) { api_user_data .fetchDataList("user", fieldatas) .then(function (data) { if (it == 1) { $scope.acceptUser = data.list; } else if (it == 2) { $scope.handlingPersonnelUser = data.list; } else if (it == 3) { $scope.acceptUser = data.list; $scope.handlingPersonnelUser = data.list; } }); } //状态 $scope.othcode = {}; api_bpm_data .fetchDataList("incidentstatus", { idx: 0, sum: 100, }) .then(function (response) { if (response) { if ((response.status = 200)) { $scope.state = response.list; } } }); var defaultFilterData = { assignee: $rootScope.user.id, searchType: "todo", idx: 0, sum: mun, }; var defaultFilterData1 = { // "searchType": "todo", idx: 0, sum: mun, }; //搜索 $scope.chiceIncident = function (parameters, item, stateid) { console.log(item, stateid); console.log($scope); if ($scope.title == "关联资产编号") { // alert('222222222222'); var fildata = defaultFilterData1; $scope.gridOptions.paginationCurrentPage = 1; var transitiondata = angular.copy(item); angular.extend(fildata, transitiondata); if (fildata.hw_state) { fildata.hw_state = fildata.hw_state.name; } if (fildata.sign) { fildata.sign = fildata.sign.prefix + fildata.sign.sign; fildata.sign = fildata.sign.split(";"); fildata.sign = fildata.sign.join(""); fildata.sign = fildata.sign.toLowerCase(); } if (fildata.keys) { fildata["searchCriteria"] = "uuid"; } console.log(fildata); $scope.loadData(fildata); } if ($scope.title == "关联事件工单") { // alert('3333333333333333') if (stateid && stateid.code) { item.statusId = stateid.code; } var fildata = defaultFilterData; // $scope.memoryfilterData = fildata; if (!fildata.incident) { fildata["incident"] = {}; } $scope.gridOptions.paginationCurrentPage = 1; var transitiondata = angular.copy(item); angular.extend(fildata.incident, transitiondata); console.log(fildata); // $scope.loadData(fildata); api_bpm_data .fetchDataList("incident", fildata) .then(function (data) { console.log(data); if (data) { $scope.myData = data.list; $scope.gridOptions.totalItems = data.totalNum; } }); } }; //重置 $scope.replacement = function ( parameters, searchkeys, othcode ) { // console.log(parameters, searchkeys, othcode); delete defaultFilterData.incident; console.log(defaultFilterData); $scope.parameters = null; $scope.searchkeys = {}; $scope.othcode = {}; $scope.wt_zcfl(); }; $scope.loadData = function (filterData) { items .fetchItems(filterData, APIService, $rootScope) .then(function (data) { var myData = Restangular.stripRestangular(data); if (myData.data && myData.data.node) { $scope.gridOptions.totalItems = myData.total; $scope.myData = myData.data.node; } else { if (myData.resultCount) { $scope.gridOptions["totalItems"] = myData.resultCount; } else { $scope.gridOptions.totalItems = myData.totalNum; } if (myData.list) { $scope.myData = myData.list; } else { $scope.myData = myData.data; } } }); }; $scope.title = title; $scope.loadData({ idx: 0, sum: 10, }); $scope.selected = { item: {}, }; $scope.ok = function () { //console.log($scope.selected.item); $modalInstance.close($scope.selected.item); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: size, resolve: { items: function () { return { fetchItems: function (filterData, APIService, $rootScope) { filterData = filterData || {}; // if(!filterData.idx){ if ( angular.isDefined(filterData.idx) && filterData.idx == null ) { filterData = { idx: 0, sum: 10, }; } return options.templateOptions.fetchItems( filterData, APIService, $rootScope ); }, columnDefs: function () { return options.templateOptions.columnDefs; }, }; }, title: function () { return options.templateOptions.modalTitle; }, Restangular: function () { return options.templateOptions.Restangular; }, APIService: function () { return options.templateOptions.ApiService; }, }, }); modalInstance.result.then( function (selectedItem) { var selectitem = { title: selectedItem.title, description: selectedItem.description, }; if (options.key == "chuku") { if (selectedItem.assets) { $scope.$parent.$parent.$parent.model.applicationForm.assets = selectedItem.assets; } if (selectedItem.consumables) { $scope.$parent.$parent.$parent.model.applicationForm.consumables = selectedItem.consumables; } angular.extend( $scope.$parent.$parent.$parent.model, selectitem ); options.value(selectedItem); // options.model.consumables = JSON.parse(consumables); } else if (options.templateOptions.pkey == "change") { console.log(options); angular.extend(options.model); options.value(selectedItem); } else if (options.key == "cmdbCode") { var zc_selectitem = selectedItem.uuid; // angular.extend(options.model,zc_selectitem); options.model.cmdbCode = zc_selectitem; // angular.extend(options.model,zc_selectitem); // options.templateOptions.displayName=zc_selectitem; options.value(selectedItem); console.log(options.model); } else { angular.extend(options.model, selectitem); options.value(selectedItem); } }, function () { //console.log('Modal dismissed at: ' + new Date()); } ); }, }, }; }, }); //选项选择控件 formlyConfigProvider.setType({ name: "ui-modelselect", extends: "input", templateUrl: "assets/views/customform/tpl/ui-modelselect.html", defaultOptions: function (options) { return { templateOptions: { openModal: function (size, options, modal) { var modalInstance = modal.open({ templateUrl: "assets/views/customform/tpl/checktable-modal-content.html", controller: function ( $scope, $modalInstance, items, title, Restangular, APIService, i18nService ) { $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = true; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = true; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = false; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; $scope.gridOptions.columnDefs = items.columnDefs(); $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { // console.log(newPage); // console.log(pageSize); $scope.loadData({ idx: newPage - 1, sum: pageSize, }); } ); gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 10, }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { if ( angular.isDefined(item.filters[0].term) && item.filters[0].term != "" ) { // console.log("filtersData="+JSON.stringify(filtersData)) if (angular.isUndefined(filtersData["incident"])) { filtersData["incident"] = {}; } filtersData["incident"][item.field] = item.filters[0].term; if (angular.isUndefined(filtersData["problem"])) { filtersData["problem"] = {}; } filtersData["problem"][item.field] = item.filters[0].term; if (angular.isUndefined(filtersData["change"])) { filtersData["change"] = {}; } filtersData["change"][item.field] = item.filters[0].term; if (angular.isUndefined(filtersData["release"])) { filtersData["release"] = {}; } filtersData["release"][item.field] = item.filters[0].term; } } }); $scope.loadData(filtersData); }); gridApi.selection.on.rowSelectionChanged( $scope, function (data) { $scope.selected.item = data.entity; //console.log(data); } ); }; $scope.loadData = function (filterData) { items .fetchItems(filterData, APIService) .then(function (data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = myData.list; }); }; $scope.title = title; $scope.loadData({ idx: 0, sum: 10, }); $scope.selected = { item: {}, }; $scope.ok = function () { if ($scope.selected.item.scheduleOrder) { $scope.selected.item.descriptionData = "日期:" + $scope.selected.item.watchTime + ";" + "班次:" + $scope.selected.item.scheduleOrder.description + ";" + "值班人:" + $scope.selected.item.scheduleOrder.users[0].name; } //console.log($scope.selected.item); $modalInstance.close($scope.selected.item); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: size, resolve: { items: function () { return { fetchItems: function (filterData, APIService) { filterData = filterData || {}; // if(!filterData.idx){ if ( angular.isDefined(filterData.idx) && filterData.idx == null ) { filterData = { idx: 0, sum: 10, }; } return options.templateOptions.fetchItems( filterData, APIService, options ); }, columnDefs: function () { return options.templateOptions.columnDefs; }, }; }, title: function () { return options.templateOptions.modalTitle; }, Restangular: function () { return options.templateOptions.Restangular; }, APIService: function () { return options.templateOptions.ApiService; }, }, }); modalInstance.result.then( function (selectedItem) { options.value(selectedItem); }, function () { //console.log('Modal dismissed at: ' + new Date()); } ); }, }, }; }, }); formlyConfigProvider.setType({ name: "ui-requestform", extends: "input", templateUrl: "assets/views/customform/tpl/ui-requestform.html", controller: [ "$scope", function ($scope) { setTimeout(function () { var filterData = { idx: 0, sum: 5, incident: { requester: { id: "", }, }, }; $scope.options.templateOptions .getWorkernumber( $scope.options.templateOptions.ApiService, filterData ) .then(function (result) { var modelData = $scope.options.templateOptions.Restangular.stripRestangular( result ); }); }, 1000); }, ], }); //报修图片展示 formlyConfigProvider.setType({ name: "ui-repair-photos", // extends: 'label', templateUrl: "assets/views/customform/tpl/ui-repair-photos.html", controller: [ "$scope", "$rootScope", "$modal", "api_wechatfile", "$stateParams", function ($scope, $rootScope, $modal, api_wechatfile, $stateParams) { console.log($scope); $scope.imgs = []; $scope.attachmentAddressSplicing = $rootScope.attachmentAddressSplicing; if ($scope.model.wxFile) { api_wechatfile .listAttachment("wechatRequesterIncident", $scope.model.incident.id) .then(function (res) { $scope.imgs = res.data; }); } console.log($stateParams); if ( $stateParams && $stateParams.model && JSON.parse($stateParams.model) && JSON.parse($stateParams.model).model && JSON.parse($stateParams.model).model.flow ) { api_wechatfile .listAttachment( "wechatRequesterIncident", JSON.parse($stateParams.model).model.flow ) .then(function (res) { $scope.imgs = res.data; }); } if ($scope.model.incident && $scope.model.incident.wxIncidentId) { api_wechatfile .listAttachment( "wechatRequesterIncident", $scope.model.incident.wxIncidentId ) .then(function (res) { $scope.imgs = res.data; }); } // if ($scope.model.flow) { // api_wechatfile // .listAttachment("wechatRequesterIncident", $scope.model.flow) // .then(function (res) { // $scope.imgs = res.data; // }); // } // 加载事件图片 // if($scope.model.incident){ // api_wechatfile // .listAttachment("incident", $scope.model.incident.processInstanceId) // .then(function (res) { // $scope.imgs = res.data; // }); // } // if (angular.isUndefined($scope.model[$scope.options.key]) || $scope.model[$scope.options.key] == null) { // // setTimeout(function () { // // $scope.options.templateOptions.getWorkernumber($scope.options.templateOptions.ApiService).then(function (result) { // // var modelData = $scope.options.templateOptions.Restangular.stripRestangular(result); // // if (modelData.status == 200) { // // $scope.model[$scope.options.key] = modelData.data; // // $scope.options.initialValue = $scope.model[$scope.options.key]; // // } // // }); // // }, 1000); // } $scope.preview = function (url, idx) { var title = $scope.imgs[idx].title; $modal.open({ backdrop: false, templateUrl: "assets/views/customform/tpl/ui-showimage.html", controller: function ($scope, $rootScope, scope, $modalInstance) { $scope.title = title; $scope.imageurl = $rootScope.attachmentAddressSplicing(url); $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, resolve: { scope: function () { return $scope; }, }, }); }; }, ], }); //图片展示 formlyConfigProvider.setType({ name: "ui-showImgs", templateUrl: "assets/views/customform/tpl/ui-showImgs.html", defaultOptions: function (options) { return { templateOptions: { refresh: function (APIService, processInstanceId, data) { return APIService.listAttachments(processInstanceId); }, downloadUri: function (APIService, contentId) { return APIService.downloadAttachment(contentId).getRequestedUrl(); }, view: function (APIService, contentId) { return APIService.attachmentsPreviewUrl(contentId); }, download: function (APIService, contentId, item) { var item = { url: APIService.download(contentId), headers: headers, }; return item; }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$timeout", "$modal", "$rootScope", "$http", "up_down_file", function ($scope, $timeout, $modal, $rootScope, $http, up_down_file) { $scope.attachmentAddressSplicing = $rootScope.attachmentAddressSplicing; var _refreshDelayPromise; /** * refresh */ $scope._refresh = function (refreshAttr) { $scope.attachments = []; if (refreshAttr !== undefined) { if (_refreshDelayPromise) { $timeout.cancel(_refreshDelayPromise); } _refreshDelayPromise = $timeout(function () { // 暂存附件 if ($scope.$parent.$parent.$parent.model.save_fileId) { $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.options.templateOptions.processInstanceId, { idx: 0, sum: 1000, } ) .then(function (response) { var myData = $scope.options.templateOptions.Restangular.stripRestangular( response ); if (myData) { for (var i = 0; i < myData.data.length; i++) { $scope.attachments.push(myData.data[i]); } } $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.$parent.$parent.$parent.model.save_fileId, { idx: 0, sum: 1000, } ) .then(function (response2) { var myData2 = $scope.options.templateOptions.Restangular.stripRestangular( response2 ); if (myData2) { for (var i = 0; i < myData2.data.length; i++) { $scope.attachments.push(myData2.data[i]); } } console.log($scope.attachments); }); }); // 正常附件 } else { $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.options.templateOptions.processInstanceId, { idx: 0, sum: 1000, } ) .then(function (response) { var myData = $scope.options.templateOptions.Restangular.stripRestangular( response ); if (myData) { $scope.attachments = []; $scope.imgs = []; myData.data.forEach((e) => { // if ( // e.suffix == "jpeg" || // e.suffix == "jpg" || // e.suffix == "svg" || // e.suffix == "png" || // e.suffix == "bmp" || // e.suffix == "gif" || // e.suffix == "tif" // ) { // $scope.imgs.push(e); // } $scope.imgs.push(e); }); $scope.imgs = $scope.imgs; console.log($scope.imgs); } }); } }, $scope.options.templateOptions.refreshDelay); } }; $scope._refresh({}); // $scope.attachments = $scope.model[$scope.options.key] // 预览 $scope.preview = function (url, idx) { var title = $scope.imgs[idx].title; $modal.open({ backdrop: false, templateUrl: "assets/views/customform/tpl/ui-showimage.html", controller: function ($scope, $rootScope, scope, $modalInstance) { $scope.title = title; $scope.imageurl = $rootScope.attachmentAddressSplicing(url); $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, resolve: { scope: function () { return $scope; }, }, }); }; }, ], }); //工单/受理人控件 formlyConfigProvider.setType({ name: "ui-workernumbersign", // extends: 'label', templateUrl: "assets/views/customform/tpl/ui-workernumbersign.html", controller: [ "$scope", function ($scope) { // 2020年4月24日13:20:40 console.log($scope, "docu"); // 左侧事件工单区域地点填充 $scope.model.selecthouseNumber = $scope.model.place; if ( angular.isUndefined($scope.model[$scope.options.key]) || $scope.model[$scope.options.key] == null ) { setTimeout(function () { $scope.options.templateOptions .getWorkernumber($scope.options.templateOptions.ApiService) .then(function (result) { var modelData = $scope.options.templateOptions.Restangular.stripRestangular( result ); if (modelData.status == 200) { $scope.model[$scope.options.key] = modelData.data; $scope.options.initialValue = $scope.model[$scope.options.key]; } }); }, 1000); } if ( $scope.options.templateOptions.user && (angular.isUndefined($scope.model.acceptUser) || $scope.model.acceptUser == null) ) { if (angular.isFunction($scope.options.templateOptions.transform)) { // if ($scope.options.templateOptions.transform($scope.options, $scope.model, $scope.options.templateOptions.user)) { // $scope.$parent.$parent.$parent.model['start_code'] = $scope.options.templateOptions.transform($scope.options, $scope.model, $scope.options.templateOptions.user); // } $scope.$parent.$parent.$parent.model["directClose"] = false; $scope.$parent.$parent.$parent.model["directClose"] = false; $scope.$parent.$parent.$parent.model["isHandlerUser"] = false; } $scope.model.acceptUser = $scope.options.templateOptions.user; // $scope.options.initialValue = $scope.model.acceptUser; } }, ], }); //工单控件-only number formlyConfigProvider.setType({ name: "ui-workernumber", extends: "input", templateUrl: "assets/views/customform/tpl/ui-workernumber.html", controller: [ "$scope", function ($scope) { if ( angular.isUndefined($scope.model[$scope.options.key]) || $scope.model[$scope.options.key] == null ) { setTimeout(function () { $scope.options.templateOptions .getWorkernumber($scope.options.templateOptions.ApiService) .then(function (result) { var modelData = $scope.options.templateOptions.Restangular.stripRestangular( result ); if (modelData.status == 200) { $scope.model[$scope.options.key] = modelData.data; $scope.options.initialValue = $scope.model[$scope.options.key]; } }); }, 1000); } }, ], }); //cmdb工单 formlyConfigProvider.setType({ name: "ui-cmdbworkernumber", extends: "input", templateUrl: "assets/views/customform/tpl/ui-workernumber.html", controller: [ "$scope", function ($scope) { if ( angular.isUndefined($scope.model[$scope.options.key]) || $scope.model[$scope.options.key] == null ) { setTimeout(function () { $scope.options.templateOptions .getWorkernumber( $scope.options.templateOptions.ApiService, $scope.$parent.$parent.$parent.$parent.$parent.$parent.$parent .cifilter_classics.id ) .then(function (result) { var modelData = $scope.options.templateOptions.Restangular.stripRestangular( result ); // if(modelData.status==200){ $scope.model[$scope.options.key] = modelData[$scope.options.key]; $scope.options.initialValue = $scope.model[$scope.options.key]; // } }); }, 1000); } }, ], }); //简易上传图片组件 formlyConfigProvider.setType({ name: "ui-uploadImgs", templateUrl: "assets/views/customform/tpl/ui-uploadImgs.html", wrapper: ["bootstrapHasError"], controller: [ "$scope", "fileReader", "$parse", "$modal", function ($scope, fileReader, $parse, $modal) { $scope.imgshows = []; $scope.uploadimgs = []; var model = $parse("upload_img"); var modelSetter = model.assign; var uploader = ($scope.uploader = $scope.options.templateOptions.fileUploader); uploader.filters.push({ name: "customFilter", fn: function (item /*{File|FileLikeObject}*/, options) { return this.queue.length < 10; }, }); // 添加 $scope.change = function (event) { var element = $(".upinp"); modelSetter($scope, element[0].files[0]); //附件预览 $scope.imgupload = event.files[0]; getFile($scope.imgupload, $scope); //获得预览图地址并且把file对象放入上传合集内 function getFile(imgupload, $scope) { if (!imgupload) { return; } fileReader.readAsDataUrl(imgupload, $scope).then(function (result) { $scope.imgshows.push(result); var file = document.querySelector("input[type=file]").files[0]; $scope.uploadimgs.push(file); //这里是放着传给后台的数据file,下面controller的时候会有 console.log($scope.imgshows, $scope.uploadimgs); if ($scope.imgshows.length < 3) { $("#upup").show(); } else { $("#upup").hide(); } }); } }; // 删除 $scope.uploadimg_del = function (index, imgs) { console.log(index, imgs); $scope.imgshows.splice(index, 1); $scope.uploadimgs.splice(index, 1); if ($scope.imgshows.length < 3) { $("#upup").show(); } else { $("#upup").hide(); } }; // 预览 $scope.preview = function (url, idx) { var name = $scope.uploadimgs[idx].name; $modal.open({ backdrop: false, templateUrl: "assets/views/customform/tpl/ui-showimage.html", controller: function ($scope, scope, $modalInstance) { $scope.title = name; $scope.imageurl = url; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, resolve: { scope: function () { return $scope; }, }, }); }; if (uploader) { uploader.onWhenAddingFileFailed = function ( item /*{File|FileLikeObject}*/, filter, options ) { console.info("onWhenAddingFileFailed", item, filter, options); }; uploader.onAfterAddingFile = function (fileItem) { console.info("onAfterAddingFile", fileItem); }; uploader.onAfterAddingAll = function (addedFileItems) { console.info("onAfterAddingAll", addedFileItems); }; uploader.onBeforeUploadItem = function (item) { console.info("onBeforeUploadItem", item); }; uploader.onProgressItem = function (fileItem, progress) { console.info("onProgressItem", fileItem, progress); }; uploader.onProgressAll = function (progress) { console.info("onProgressAll", progress); }; uploader.onSuccessItem = function ( fileItem, response, status, headers ) { console.info("onSuccessItem", fileItem, response, status, headers); }; uploader.onErrorItem = function ( fileItem, response, status, headers ) { console.info("onErrorItem", fileItem, response, status, headers); }; uploader.onCancelItem = function ( fileItem, response, status, headers ) { console.info("onCancelItem", fileItem, response, status, headers); }; uploader.onCompleteItem = function ( fileItem, response, status, headers ) { console.info("onCompleteItem", fileItem, response, status, headers); }; uploader.onCompleteAll = function () { console.info("onCompleteAll"); }; } // console.log(modelSetter) }, ], }); //jry-上传下载一体 formlyConfigProvider.setType({ name: "ui-upDropFile", templateUrl: "assets/views/customform/tpl/ui-upDropFile.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: { view: function (APIService, contentId) { return APIService.downloadAttachment(contentId); }, // ApiService: 'api_wechatfile', // refresh: "(function(APIService,model,data){return APIService.listAttachments(model, data)})", // upUrl: 'common/common/uploadAttachment', // listAttachmentUrl: 'common/common/listAttachment', // downUrl: 'common/common/downloadAttachment', // bindType: 'incident', // bindId: 2323 }, // validators: { // required: { // expression: function(viewValue, modelValue) { // var value = modelValue || viewValue; // return value.length >= 1; // } // } // } }; }, controller: [ "$scope", "$rootScope", "Restangular", "up_down_file", "$http", "api_bpm", function ($scope, $rootScope, Restangular, up_down_file, $http, api_bpm) { console.log($scope); $scope.showFileUp = true; if ($scope.model.isKnowledge_detail) { $scope.showFileUp = false; } if (angular.isUndefined($scope.form.dropState)) { $scope.form.dropState = false; } if ($scope.model.incident) { if ($scope.model.incident.alarm) { console.log($scope); if ($scope.model.incident.alarm) { if ($scope.model.incident.alarm.alarmExtension) { $scope.model.incident.alarm.alarmExtension = $scope.model.incident.alarm.alarmExtension.replace("{", ""); $scope.model.incident.alarm.alarmExtension = $scope.model.incident.alarm.alarmExtension.replace("}", ""); $scope.model.incident.description = $scope.model.incident.alarm.alarmExtension; console.log($scope.model.incident.description); $scope.model.incident.description = '"' + "告警名称" + '":' + '"' + $scope.model.incident.alarm.alarmSystem + '",' + '"' + "告警状态" + '":' + '"' + $scope.model.incident.alarm.alarmStatus + '",' + '"' + "告警内容" + '":' + '"' + $scope.model.incident.alarm.alarmContent + '",' + $scope.model.incident.description; } else { $scope.model.incident.description = '"' + "告警名称" + '":' + '"' + $scope.model.incident.alarm.alarmSystem + '",' + '"' + "告警状态" + '":' + '"' + $scope.model.incident.alarm.alarmStatus + '",' + '"' + "告警内容" + '":' + '"' + $scope.model.incident.alarm.alarmContent + '",'; } $scope.model.incident.description = $scope.model.incident.description.replace(/,/g, "\n"); console.log($scope.model.incident.description); } } api_bpm .tellCategory($scope.model.incident.category.id) .then(function (wt_data) { console.log(wt_data); if (wt_data) { $rootScope.wt_category = wt_data.data; $rootScope.wt_categoryId = $scope.model.incident.category.id; $rootScope.wt_child = wt_data.child; } }); if ($scope.model.titleName == "接单") { $scope.model.receive_code = "handler"; if ( $scope.model.incident.groupLeader && !$scope.model.incident.repeat ) { $scope.model.isHandlerUser = true; } } if ($scope.model.titleName == "事件处理") { console.log($scope.model.cmdbCode); if ($scope.model.cmdbCode) { $scope.model.incident.cmdbCode = $scope.model.cmdbCode; } } } else { $rootScope.wt_category = ""; } //附件上传数据 if ($scope.options.templateOptions.fileUploader) { var uploader = ($scope.uploader = $scope.options.templateOptions.fileUploader); //$scope.options.templateOptions.uploader(); console.log(uploader); // FILTERS uploader.filters.push({ name: "customFilter", fn: function (item /*{File|FileLikeObject}*/, options) { return this.queue.length < 10; }, }); } var to = $scope.options.templateOptions; // var bindType = $scope.model.bindType; if (to.bindType == "incident") { var bindId = $scope.model[to.bindType].processInstanceId; } else if (to.bindType == "change") { var bindId = $scope.model[to.bindType].processInstanceId; } else { var bindId = $scope.model[to.bindType].id; } //获取附件列表 $scope.listAttachmen = function () { to.ApiService.listAttachment( to.listAttachmentUrl, to.bindType, bindId ).then(function (result) { var myData = Restangular.stripRestangular(result); // $scope.listAttachmens = myData; $scope.attachments = myData.data; }); }; if (to.bindType && $scope.model[to.bindType].processInstanceId) { $scope.listAttachmen(); } else if (to.bindType && $scope.model[to.bindType].id) { $scope.listAttachmen(); } //附件上传 $scope.isUpfload = to.isUpfload; $scope.dropfile = function ( APIService, processInstanceId, taskId, userId ) { uploader.onBeforeUploadItem = function (item) { angular.extend(item.headers, $rootScope.getSession()); item.url = to.ApiService.saveAttachments( to.uploadUrl, to.bindType, bindId ).getRequestedUrl(); item.formData.push({ filename: item.file.name, }); }; uploader.uploadAll(); }; //附件下载 $scope.download = function (token, filename) { var downUrl = to.ApiService.downloadAttachment( to.downUrl, token ).getRequestedUrl(); // window.open(downUrl); var a = document.createElement("a"); a.href = downUrl; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }; //附件预览 $scope.view = function (id, previewUrl) { if (previewUrl) { window.open(previewUrl); } // $scope.options.templateOptions.view($scope.options.templateOptions.ApiService, bindId).then(function(response) { // if (response.state == 200) { // window.open(response.previewUrl); // } // }) }; // CALLBACKS if (uploader) { uploader.onWhenAddingFileFailed = function ( item /*{File|FileLikeObject}*/, filter, options ) { console.info("onWhenAddingFileFailed", item, filter, options); }; uploader.onAfterAddingFile = function (fileItem) { console.info("onAfterAddingFile", fileItem); }; uploader.onAfterAddingAll = function (addedFileItems) { console.info("onAfterAddingAll", addedFileItems); }; uploader.onBeforeUploadItem = function (item) { // if($scope.uploader.getNotUploadedItems().length>0&&response.data.processInstanceId){ // // $scope.uploader.options.url(); // $scope.uploader.onBeforeUploadItem = function(item) { // item.url = api_bpm_domain.saveAttachments($stateParams.processInstanceId,$stateParams.taskId,$scope.user.id).getRequestedUrl(); // console.info('onBeforeUploadItem', item); // }; // $scope.uploader.uploadAll(); // } console.info("onBeforeUploadItem", item); }; uploader.onProgressItem = function (fileItem, progress) { console.info("onProgressItem", fileItem, progress); }; uploader.onProgressAll = function (progress) { console.info("onProgressAll", progress); }; uploader.onSuccessItem = function ( fileItem, response, status, headers ) { console.info("onSuccessItem", fileItem, response, status, headers); if (response.status == 200) { $scope.listAttachmen(); } }; uploader.onErrorItem = function ( fileItem, response, status, headers ) { console.info("onErrorItem", fileItem, response, status, headers); }; uploader.onCancelItem = function ( fileItem, response, status, headers ) { console.info("onCancelItem", fileItem, response, status, headers); }; uploader.onCompleteItem = function ( fileItem, response, status, headers ) { console.info("onCompleteItem", fileItem, response, status, headers); }; uploader.onCompleteAll = function () { console.info("onCompleteAll"); }; } }, ], }); //简易上传下载附件组件 formlyConfigProvider.setType({ name: "ui-upDownFiles", templateUrl: "assets/views/customform/tpl/ui-upDownFiles.html", wrapper: ["bootstrapHasError"], defaultOptions: function (options) { return { templateOptions: { refresh: function (APIService, processInstanceId, data) { return APIService.listAttachments(processInstanceId); }, downloadUri: function (APIService, contentId) { return APIService.downloadAttachment(contentId).getRequestedUrl(); }, view: function (APIService, contentId) { return APIService.attachmentsPreviewUrl(contentId); }, download: function (APIService, contentId, item) { var item = { url: APIService.download(contentId), headers: headers, }; return item; }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$timeout", "$modal", "$rootScope", "$http", "up_down_file", function ($scope, $timeout, $modal, $rootScope, $http, up_down_file) { if (angular.isUndefined($scope.form.dropState)) { $scope.form.dropState = false; } //附件上传数据 var uploader = ($scope.uploader = $scope.options.templateOptions.fileUploader); //$scope.options.templateOptions.uploader(); // FILTERS uploader.filters.push({ name: "customFilter", fn: function (item /*{File|FileLikeObject}*/, options) { return this.queue.length < 10; }, }); // $scope.dropfile = function (APIService, processInstanceId, taskId, userId) { // uploader.onBeforeUploadItem = function (item) { // angular.extend(item.headers, $rootScope.getSession()); // item.url = APIService.saveAttachments(processInstanceId, taskId, userId).getRequestedUrl(); // item.formData.push({ // 'fileName': item.file.name // }); // console.info('onBeforeUploadItem', item); // }; // } // CALLBACKS uploader.onWhenAddingFileFailed = function ( item /*{File|FileLikeObject}*/, filter, options ) { console.info("onWhenAddingFileFailed", item, filter, options); }; uploader.onAfterAddingFile = function (fileItem) { console.info("onAfterAddingFile", fileItem); if (fileItem.file.size >= 1024 * 1024 * 10) { alert("文件过大"); fileItem.uploader.queue.pop(); console.log($scope); } }; uploader.onAfterAddingAll = function (addedFileItems) { // console.info('onAfterAddingAll', addedFileItems); // console.log($scope.options.templateOptions.APIService.saveAttachments(processInstanceId, taskId, userId).getRequestedUrl()) // console.log(APIService.saveAttachments(processInstanceId, taskId, userId).getRequestedUrl()) // console.log(api_bpm_domain.saveAttachments($stateParams.processInstanceId,$stateParams.taskId,$scope.user.id).getRequestedUrl()) // console.log(123) }; uploader.onBeforeUploadItem = function (item) { // if($scope.uploader.getNotUploadedItems().length>0&&response.data.processInstanceId){ // // $scope.uploader.options.url(); // $scope.uploader.onBeforeUploadItem = function(item) { // item.url = api_bpm_domain.saveAttachments($stateParams.processInstanceId,$stateParams.taskId,$scope.user.id).getRequestedUrl(); // console.info('onBeforeUploadItem', item); // }; // $scope.uploader.uploadAll(); // } console.info("onBeforeUploadItem", item); }; uploader.onProgressItem = function (fileItem, progress) { console.info("onProgressItem", fileItem, progress); }; uploader.onProgressAll = function (progress) { console.info("onProgressAll", progress); }; uploader.onSuccessItem = function ( fileItem, response, status, headers ) { console.info("onSuccessItem", fileItem, response, status, headers); }; uploader.onErrorItem = function (fileItem, response, status, headers) { console.info("onErrorItem", fileItem, response, status, headers); }; uploader.onCancelItem = function (fileItem, response, status, headers) { console.info("onCancelItem", fileItem, response, status, headers); }; uploader.onCompleteItem = function ( fileItem, response, status, headers ) { console.info("onCompleteItem", fileItem, response, status, headers); }; uploader.onCompleteAll = function () { console.info("onCompleteAll"); }; var _refreshDelayPromise; // 下载 $scope.download = function (contentId, filename, token) { // console.log(contentId, filename, token) //附件下载 var downUrl = up_down_file .downloadAttachment("common/common/downloadAttachment", token) .getRequestedUrl(); // downUrl = downUrl.substring(0, downUrl.lastIndexOf("/")); // console.log(downUrl) var a = document.createElement("a"); a.href = downUrl; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }; $scope._refresh = function (refreshAttr) { $scope.attachments = []; if (refreshAttr !== undefined) { if (_refreshDelayPromise) { $timeout.cancel(_refreshDelayPromise); } _refreshDelayPromise = $timeout(function () { // 暂存附件 if ($scope.$parent.$parent.$parent.model.save_fileId) { $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.options.templateOptions.processInstanceId, { idx: 0, sum: 1000, } ) .then(function (response) { var myData = $scope.options.templateOptions.Restangular.stripRestangular( response ); if (myData) { for (var i = 0; i < myData.data.length; i++) { $scope.attachments.push(myData.data[i]); } } $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.$parent.$parent.$parent.model.save_fileId, { idx: 0, sum: 1000, } ) .then(function (response2) { var myData2 = $scope.options.templateOptions.Restangular.stripRestangular( response2 ); if (myData2) { for (var i = 0; i < myData2.data.length; i++) { $scope.attachments.push(myData2.data[i]); } // 只展示除图片以外的附件 var a = []; $scope.attachments.forEach((e) => { if ( e.suffix == "jpeg" || e.suffix == "jpg" || e.suffix == "svg" || e.suffix == "png" || e.suffix == "bmp" || e.suffix == "gif" || e.suffix == "tif" ) { // $scope.imgs.push(e) } else { a.push(e); } }); $scope.attachments = a; } console.log($scope.attachments); }); }); // 正常附件 } else { $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.options.templateOptions.processInstanceId, { idx: 0, sum: 1000, } ) .then(function (response) { var myData = $scope.options.templateOptions.Restangular.stripRestangular( response ); if (myData) { $scope.attachments = myData.data; // 只展示除图片以外的附件 var a = []; $scope.attachments.forEach((e) => { if ( e.suffix == "jpeg" || e.suffix == "jpg" || e.suffix == "svg" || e.suffix == "png" || e.suffix == "bmp" || e.suffix == "gif" || e.suffix == "tif" ) { // $scope.imgs.push(e) } else { a.push(e); } }); $scope.attachments = a; } }); } }, $scope.options.templateOptions.refreshDelay); } }; $scope._refresh({}); }, ], }); //简易上传附件组件 formlyConfigProvider.setType({ name: "ui-uploadFiles", templateUrl: "assets/views/customform/tpl/ui-uploadFiles.html", wrapper: ["bootstrapHasError"], controller: [ "$scope", function ($scope) { if (angular.isUndefined($scope.form.dropState)) { $scope.form.dropState = false; } //附件上传数据 var uploader = ($scope.uploader = $scope.options.templateOptions.fileUploader); //$scope.options.templateOptions.uploader(); // FILTERS uploader.filters.push({ name: "customFilter", fn: function (item /*{File|FileLikeObject}*/, options) { return this.queue.length < 10; }, }); $scope.dropfile = function ( APIService, processInstanceId, taskId, userId ) { uploader.onBeforeUploadItem = function (item) { angular.extend(item.headers, $rootScope.getSession()); item.url = APIService.saveAttachments( processInstanceId, taskId, userId ).getRequestedUrl(); item.formData.push({ fileName: item.file.name, }); console.info("onBeforeUploadItem", item); }; }; // CALLBACKS uploader.onWhenAddingFileFailed = function ( item /*{File|FileLikeObject}*/, filter, options ) { console.info("onWhenAddingFileFailed", item, filter, options); }; uploader.onAfterAddingFile = function (fileItem) { console.info("onAfterAddingFile", fileItem); if (fileItem.file.size >= 1024 * 1024 * 10) { alert("文件过大"); fileItem.uploader.queue.pop(); console.log($scope); } }; uploader.onAfterAddingAll = function (addedFileItems) { // console.info('onAfterAddingAll', addedFileItems); // console.log($scope.options.templateOptions.APIService.saveAttachments(processInstanceId, taskId, userId).getRequestedUrl()) // console.log(APIService.saveAttachments(processInstanceId, taskId, userId).getRequestedUrl()) // console.log(api_bpm_domain.saveAttachments($stateParams.processInstanceId,$stateParams.taskId,$scope.user.id).getRequestedUrl()) // console.log(123) }; uploader.onBeforeUploadItem = function (item) { // if($scope.uploader.getNotUploadedItems().length>0&&response.data.processInstanceId){ // // $scope.uploader.options.url(); // $scope.uploader.onBeforeUploadItem = function(item) { // item.url = api_bpm_domain.saveAttachments($stateParams.processInstanceId,$stateParams.taskId,$scope.user.id).getRequestedUrl(); // console.info('onBeforeUploadItem', item); // }; // $scope.uploader.uploadAll(); // } console.info("onBeforeUploadItem", item); }; uploader.onProgressItem = function (fileItem, progress) { console.info("onProgressItem", fileItem, progress); }; uploader.onProgressAll = function (progress) { console.info("onProgressAll", progress); }; uploader.onSuccessItem = function ( fileItem, response, status, headers ) { console.info("onSuccessItem", fileItem, response, status, headers); }; uploader.onErrorItem = function (fileItem, response, status, headers) { console.info("onErrorItem", fileItem, response, status, headers); }; uploader.onCancelItem = function (fileItem, response, status, headers) { console.info("onCancelItem", fileItem, response, status, headers); }; uploader.onCompleteItem = function ( fileItem, response, status, headers ) { console.info("onCompleteItem", fileItem, response, status, headers); }; uploader.onCompleteAll = function () { console.info("onCompleteAll"); }; }, ], }); //无上传按钮附件上传组件 formlyConfigProvider.setType({ name: "ui-dropfilenotup", templateUrl: "assets/views/customform/tpl/ui-dropfilenotup.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], controller: [ "$scope", function ($scope) { if (angular.isUndefined($scope.form.dropState)) { $scope.form.dropState = false; } //附件上传数据 var uploader = ($scope.uploader = $scope.options.templateOptions.fileUploader); //$scope.options.templateOptions.uploader(); // FILTERS uploader.filters.push({ name: "customFilter", fn: function (item /*{File|FileLikeObject}*/, options) { return this.queue.length < 10; }, }); $scope.dropfile = function ( APIService, processInstanceId, taskId, userId ) { uploader.onBeforeUploadItem = function (item) { angular.extend(item.headers, $rootScope.getSession()); item.url = APIService.saveAttachments( processInstanceId, taskId, userId ).getRequestedUrl(); item.formData.push({ fileName: item.file.name, }); console.info("onBeforeUploadItem", item); }; uploader.uploadAll(); }; // CALLBACKS uploader.onWhenAddingFileFailed = function ( item /*{File|FileLikeObject}*/, filter, options ) { console.info("onWhenAddingFileFailed", item, filter, options); }; uploader.onAfterAddingFile = function (fileItem) { console.info("onAfterAddingFile", fileItem); }; uploader.onAfterAddingAll = function (addedFileItems) { console.info("onAfterAddingAll", addedFileItems); }; uploader.onBeforeUploadItem = function (item) { // if($scope.uploader.getNotUploadedItems().length>0&&response.data.processInstanceId){ // // $scope.uploader.options.url(); // $scope.uploader.onBeforeUploadItem = function(item) { // item.url = api_bpm_domain.saveAttachments($stateParams.processInstanceId,$stateParams.taskId,$scope.user.id).getRequestedUrl(); // console.info('onBeforeUploadItem', item); // }; // $scope.uploader.uploadAll(); // } console.info("onBeforeUploadItem", item); }; uploader.onProgressItem = function (fileItem, progress) { console.info("onProgressItem", fileItem, progress); }; uploader.onProgressAll = function (progress) { console.info("onProgressAll", progress); }; uploader.onSuccessItem = function ( fileItem, response, status, headers ) { console.info("onSuccessItem", fileItem, response, status, headers); }; uploader.onErrorItem = function (fileItem, response, status, headers) { console.info("onErrorItem", fileItem, response, status, headers); }; uploader.onCancelItem = function (fileItem, response, status, headers) { console.info("onCancelItem", fileItem, response, status, headers); }; uploader.onCompleteItem = function ( fileItem, response, status, headers ) { console.info("onCompleteItem", fileItem, response, status, headers); }; uploader.onCompleteAll = function () { console.info("onCompleteAll"); }; }, ], }); //无按钮知识库上传 formlyConfigProvider.setType({ name: "ui-dropfielkn", templateUrl: "assets/views/customform/tpl/ui-dropfilenotup.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], controller: [ "$scope", function ($scope) { if (angular.isUndefined($scope.form.dropState)) { $scope.form.dropState = false; } //附件上传数据 var uploader = ($scope.uploader = $scope.options.templateOptions.fileUploader); //$scope.options.templateOptions.uploader(); // FILTERS uploader.filters.push({ name: "customFilter", fn: function (item /*{File|FileLikeObject}*/, options) { return this.queue.length < 10; }, }); $scope.dropfile = function ( APIService, processInstanceId, taskId, userId ) { uploader.onBeforeUploadItem = function (item) { angular.extend(item.headers, $rootScope.getSession()); item.url = APIService.addFile( processInstanceId, taskId, userId ).getRequestedUrl(); item.formData.push({ fileName: item.file.name, }); console.info("onBeforeUploadItem", item); }; uploader.uploadAll(); }; // CALLBACKS uploader.onWhenAddingFileFailed = function ( item /*{File|FileLikeObject}*/, filter, options ) { console.info("onWhenAddingFileFailed", item, filter, options); }; uploader.onAfterAddingFile = function (fileItem) { console.info("onAfterAddingFile", fileItem); }; uploader.onAfterAddingAll = function (addedFileItems) { console.info("onAfterAddingAll", addedFileItems); }; uploader.onBeforeUploadItem = function (item) { // if($scope.uploader.getNotUploadedItems().length>0&&response.data.processInstanceId){ // // $scope.uploader.options.url(); // $scope.uploader.onBeforeUploadItem = function(item) { // item.url = api_bpm_domain.saveAttachments($stateParams.processInstanceId,$stateParams.taskId,$scope.user.id).getRequestedUrl(); // console.info('onBeforeUploadItem', item); // }; // $scope.uploader.uploadAll(); // } console.info("onBeforeUploadItem", item); }; uploader.onProgressItem = function (fileItem, progress) { console.info("onProgressItem", fileItem, progress); }; uploader.onProgressAll = function (progress) { console.info("onProgressAll", progress); }; uploader.onSuccessItem = function ( fileItem, response, status, headers ) { console.info("onSuccessItem", fileItem, response, status, headers); }; uploader.onErrorItem = function (fileItem, response, status, headers) { console.info("onErrorItem", fileItem, response, status, headers); }; uploader.onCancelItem = function (fileItem, response, status, headers) { console.info("onCancelItem", fileItem, response, status, headers); }; uploader.onCompleteItem = function ( fileItem, response, status, headers ) { console.info("onCompleteItem", fileItem, response, status, headers); }; uploader.onCompleteAll = function () { console.info("onCompleteAll"); }; }, ], }); //附件上传列表组件 formlyConfigProvider.setType({ name: "ui-dropfile", templateUrl: "assets/views/customform/tpl/ui-dropfile.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], controller: [ "$scope", "$rootScope", function ($scope, $rootScope) { if (angular.isUndefined($scope.form.dropState)) { $scope.form.dropState = false; } //附件上传数据 var uploader = ($scope.uploader = $scope.options.templateOptions.fileUploader); //$scope.options.templateOptions.uploader(); // FILTERS uploader.filters.push({ name: "customFilter", fn: function (item /*{File|FileLikeObject}*/, options) { return this.queue.length < 10; }, }); $scope.dropfile = function ( APIService, processInstanceId, taskId, userId ) { uploader.onBeforeUploadItem = function (item) { angular.extend(item.headers, $rootScope.getSession()); if ( $scope.options.templateOptions.upservice && $scope.options.templateOptions.formname ) { // if ($scope.options.templateOptions.formket) { // item.url = APIService[$scope.options.templateOptions.upservice]($scope.model[$scope.options.templateOptions.formname][$scope.options.templateOptions.formket].id, taskId, userId).getRequestedUrl(); // } else { item.url = APIService[$scope.options.templateOptions.upservice]( $scope.model[$scope.options.templateOptions.formname].id, taskId, userId ).getRequestedUrl(); // } } else { item.url = APIService.saveAttachments( processInstanceId, taskId, userId ).getRequestedUrl(); } item.formData.push({ filename: item.file.name, }); console.info("onBeforeUploadItem", item); }; uploader.uploadAll(); }; // CALLBACKS uploader.onWhenAddingFileFailed = function ( item /*{File|FileLikeObject}*/, filter, options ) { console.info("onWhenAddingFileFailed", item, filter, options); }; uploader.onAfterAddingFile = function (fileItem) { console.info("onAfterAddingFile", fileItem); }; uploader.onAfterAddingAll = function (addedFileItems) { console.info("onAfterAddingAll", addedFileItems); }; uploader.onBeforeUploadItem = function (item) { // if($scope.uploader.getNotUploadedItems().length>0&&response.data.processInstanceId){ // // $scope.uploader.options.url(); // $scope.uploader.onBeforeUploadItem = function(item) { // item.url = api_bpm_domain.saveAttachments($stateParams.processInstanceId,$stateParams.taskId,$scope.user.id).getRequestedUrl(); // console.info('onBeforeUploadItem', item); // }; // $scope.uploader.uploadAll(); // } console.info("onBeforeUploadItem", item); }; uploader.onProgressItem = function (fileItem, progress) { console.info("onProgressItem", fileItem, progress); }; uploader.onProgressAll = function (progress) { console.info("onProgressAll", progress); }; uploader.onSuccessItem = function ( fileItem, response, status, headers ) { console.info("onSuccessItem", fileItem, response, status, headers); }; uploader.onErrorItem = function (fileItem, response, status, headers) { console.info("onErrorItem", fileItem, response, status, headers); }; uploader.onCancelItem = function (fileItem, response, status, headers) { console.info("onCancelItem", fileItem, response, status, headers); }; uploader.onCompleteItem = function ( fileItem, response, status, headers ) { console.info("onCompleteItem", fileItem, response, status, headers); }; uploader.onCompleteAll = function () { console.info("onCompleteAll"); }; }, ], }); //简易附件展示下载列表组件 formlyConfigProvider.setType({ name: "ui-dropFiles", templateUrl: "assets/views/customform/tpl/ui-dropFiles.html", defaultOptions: function (options) { return { templateOptions: { refresh: function (APIService, processInstanceId, data) { return APIService.listAttachments(processInstanceId); }, downloadUri: function (APIService, contentId) { return APIService.downloadAttachment(contentId).getRequestedUrl(); }, view: function (APIService, contentId) { return APIService.attachmentsPreviewUrl(contentId); }, download: function (APIService, contentId, item) { var item = { url: APIService.download(contentId), headers: headers, }; return item; }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$timeout", "$modal", "$rootScope", "$http", "up_down_file", function ($scope, $timeout, $modal, $rootScope, $http, up_down_file) { var _refreshDelayPromise; // $scope.downloadUrl = function(contentId){ // return $scope.options.templateOptions.downloadUri($scope.options.templateOptions.ApiService,contentId)||'#'; // }; $scope.download = function (contentId, filename, token) { // console.log(contentId, filename, token) //附件下载 var downUrl = up_down_file .downloadAttachment("common/common/downloadAttachment", token) .getRequestedUrl(); // downUrl = downUrl.substring(0, downUrl.lastIndexOf("/")); // console.log(downUrl) var a = document.createElement("a"); a.href = downUrl; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }; $scope.view = function (contentId, token, filename, type) { $scope.options.templateOptions .view($scope.options.templateOptions.ApiService, contentId) .then(function (response) { if (response.state == 200) { window.open(response.previewUrl); } }); }; /** * refresh */ $scope._refresh = function (refreshAttr) { $scope.attachments = []; if (refreshAttr !== undefined) { if (_refreshDelayPromise) { $timeout.cancel(_refreshDelayPromise); } _refreshDelayPromise = $timeout(function () { // 暂存附件 if ($scope.$parent.$parent.$parent.model.save_fileId) { $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.options.templateOptions.processInstanceId, { idx: 0, sum: 1000, } ) .then(function (response) { var myData = $scope.options.templateOptions.Restangular.stripRestangular( response ); if (myData) { for (var i = 0; i < myData.data.length; i++) { $scope.attachments.push(myData.data[i]); } } $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.$parent.$parent.$parent.model.save_fileId, { idx: 0, sum: 1000, } ) .then(function (response2) { var myData2 = $scope.options.templateOptions.Restangular.stripRestangular( response2 ); if (myData2) { for (var i = 0; i < myData2.data.length; i++) { $scope.attachments.push(myData2.data[i]); } // 只展示除图片以外的附件 var a = []; $scope.attachments.forEach((e) => { if ( e.suffix == "jpeg" || e.suffix == "jpg" || e.suffix == "svg" || e.suffix == "png" || e.suffix == "bmp" || e.suffix == "gif" || e.suffix == "tif" ) { // $scope.imgs.push(e) } else { a.push(e); } }); $scope.attachments = a; } console.log($scope.attachments); }); }); // 正常附件 } else { $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.options.templateOptions.processInstanceId, { idx: 0, sum: 1000, } ) .then(function (response) { var myData = $scope.options.templateOptions.Restangular.stripRestangular( response ); if (myData) { $scope.attachments = myData.data; // 只展示除图片以外的附件 var a = []; $scope.attachments.forEach((e) => { if ( e.suffix == "jpeg" || e.suffix == "jpg" || e.suffix == "svg" || e.suffix == "png" || e.suffix == "bmp" || e.suffix == "gif" || e.suffix == "tif" ) { // $scope.imgs.push(e) } else { a.push(e); } }); $scope.attachments = a; console.log($scope.attachments); } }); } }, $scope.options.templateOptions.refreshDelay); } }; $scope._refresh({}); // $scope.attachments = $scope.model[$scope.options.key] }, ], }); //知识库附件上传 formlyConfigProvider.setType({ name: "ui-dropfielknow", templateUrl: "assets/views/customform/tpl/ui-dropfile.html", wrapper: ["bootstrapLabel", "bootstrapHasError"], controller: [ "$scope", "$rootScope", function ($scope, $rootScope) { if (angular.isUndefined($scope.form.dropState)) { $scope.form.dropState = false; } //附件上传数据 var uploader = ($scope.uploader = $scope.options.templateOptions.fileUploader); //$scope.options.templateOptions.uploader(); // FILTERS uploader.filters.push({ name: "customFilter", fn: function (item /*{File|FileLikeObject}*/, options) { return this.queue.length < 10; }, }); $scope.dropfile = function ( APIService, processInstanceId, taskId, userId ) { uploader.onBeforeUploadItem = function (item) { angular.extend(item.headers, $rootScope.getSession()); item.url = APIService.upload( processInstanceId, taskId, userId ).getRequestedUrl(); item.formData.push({ fileName: item.file.name, type: "solution", solutionId: $scope.model.knowledge.id, }); console.info("onBeforeUploadItem", item); }; uploader.uploadAll(); }; // CALLBACKS uploader.onWhenAddingFileFailed = function ( item /*{File|FileLikeObject}*/, filter, options ) { console.info("onWhenAddingFileFailed", item, filter, options); }; uploader.onAfterAddingFile = function (fileItem) { console.info("onAfterAddingFile", fileItem); }; uploader.onAfterAddingAll = function (addedFileItems) { console.info("onAfterAddingAll", addedFileItems); }; uploader.onBeforeUploadItem = function (item) { // if($scope.uploader.getNotUploadedItems().length>0&&response.data.processInstanceId){ // // $scope.uploader.options.url(); // $scope.uploader.onBeforeUploadItem = function(item) { // item.url = api_bpm_domain.saveAttachments($stateParams.processInstanceId,$stateParams.taskId,$scope.user.id).getRequestedUrl(); // console.info('onBeforeUploadItem', item); // }; // $scope.uploader.uploadAll(); // } console.info("onBeforeUploadItem", item); }; uploader.onProgressItem = function (fileItem, progress) { console.info("onProgressItem", fileItem, progress); }; uploader.onProgressAll = function (progress) { console.info("onProgressAll", progress); }; uploader.onSuccessItem = function ( fileItem, response, status, headers ) { console.info("onSuccessItem", fileItem, response, status, headers); }; uploader.onErrorItem = function (fileItem, response, status, headers) { console.info("onErrorItem", fileItem, response, status, headers); }; uploader.onCancelItem = function (fileItem, response, status, headers) { console.info("onCancelItem", fileItem, response, status, headers); }; uploader.onCompleteItem = function ( fileItem, response, status, headers ) { console.info("onCompleteItem", fileItem, response, status, headers); }; uploader.onCompleteAll = function () { console.info("onCompleteAll"); }; }, ], }); //知识库附件下载列表 formlyConfigProvider.setType({ name: "ui-dropfileknowledge", templateUrl: "assets/views/customform/tpl/ui-dropfileknowledge.html", defaultOptions: function (options) { return { templateOptions: { refresh: function (APIService, contentId, data) { return APIService.fetchDataList(contentId, data); }, downloadUri: function (APIService, contentId) { return APIService.downloadAttachment(contentId).getRequestedUrl(); }, download: function (APIService, contentId) { return APIService.getSolutionDowpath(contentId); }, view: function (attachmentId) { // return APIService.attachmentsPreviewUrl(contentId); }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$timeout", "$modal", "$rootScope", "api_solution", "$http", function ($scope, $timeout, $modal, $rootScope, api_solution, $http) { var _refreshDelayPromise; $scope.attachments = []; $scope.downloadUrl = function (contentId) { return ( $scope.options.templateOptions.downloadUri( $scope.options.templateOptions.ApiService, contentId ) || "#" ); }; $scope.download = function (contentId, filename) { $http({ url: $scope.options.templateOptions.ApiService.getSolutionDowpath( contentId ).getRequestedUrl(), method: "GET", headers: { //'Content-type' : 'application/xls', Accept: "*/*", }, responseType: "arraybuffer", }) .success(function (data, status, headers, config) { var file = new Blob([data], { type: "application/octet-stream", }); //trick to download store a file having its URL var fileURL = URL.createObjectURL(file); var a = document.createElement("a"); a.href = fileURL; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }) .error(function (data, status, headers, config) { // console.log(data); }); }; $scope.view = function (contentId, filename, attachment) { var index = filename.indexOf("."); var type = filename.substring(index + 1); // if (type == 'jpg' || type == 'png' || type == 'jpeg' || type == 'bmp' || type == 'gif') { // $scope.imageurl = $scope.options.templateOptions.ApiService.getSolutionDowpath(contentId).getRequestedUrl(); // var modalInstance = $modal.open({ // backdrop: false, // templateUrl: 'assets/views/customform/tpl/ui-showimage.html', // controller: function($scope, scope, $modalInstance, filename) { // $scope.title = filename; // $scope.imageurl = scope.imageurl; // $scope.cancel = function() { // $modalInstance.dismiss('cancel'); // } // }, // resolve: { // scope: function() { // return $scope; // }, // filename: function() { // return filename; // } // } // }); // event.preventDefault(); // } else { // for (var i = 0; i < $scope.attachments.length; i++) { // if ($scope.attachments[i].id == attachmentId) { window.open(attachment.previewUrl); // } // } // } }; $scope._refresh = function (refreshAttr) { if (refreshAttr !== undefined) { if (_refreshDelayPromise) { $timeout.cancel(_refreshDelayPromise); } _refreshDelayPromise = $timeout(function () { $scope.options.templateOptions .refresh($scope.options.templateOptions.ApiService, "file", { file: { solutionId: $scope.model.knowledge.id, }, idx: "0", sum: "1000", }) .then(function (response) { var myData = $scope.options.templateOptions.Restangular.stripRestangular( response ); if (myData) { $scope.attachments = myData.list; // $scope.view = function(attachmentId) { // for (var i = 0; i < $scope.attachments.length; i++) { // if ($scope.attachments[i].id == attachmentId) { // window.open($scope.attachments[i].previewUrl); // // var modalInstance = $modal.open({ // // templateUrl: 'assets/views/knowledge/tpl/detailknowledge.html', // // controller: function($scope, $http,$modalInstance, APIService, uploader,tree_data, currentUser){ // // } // // }); // } // } // }; } }); }, $scope.options.templateOptions.refreshDelay); } }; $scope._refresh({}); // $scope.attachments = $scope.model[$scope.options.key] }, ], }); //附件图片下载 formlyConfigProvider.setType({ name: "ui-downimage", templateUrl: "assets/views/customform/tpl/ui-downimage.html", defaultOptions: function (options) { return { templateOptions: { refresh: function (APIService, processInstanceId, data) { return APIService.listAttachments(processInstanceId, data); }, downloadUri: function (APIService, contentId) { return APIService.downloadAttachment(contentId).getRequestedUrl(); }, view: function (APIService, contentId) { return APIService.attachmentsPreviewUrl(contentId); }, download: function (APIService, contentId, item) { var item = { url: APIService.download(contentId), headers: headers, }; return item; }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$timeout", "$rootScope", "$http", function ($scope, $timeout, $rootScope, $http) { var _refreshDelayPromise; // $scope.downloadUrl = function(contentId){ // return $scope.options.templateOptions.downloadUri($scope.options.templateOptions.ApiService,contentId)||'#'; // }; $scope.download = function (contentId, filename) { // var headers= $http({ url: $scope.options.templateOptions.ApiService.download( contentId ).getRequestedUrl(), method: "GET", headers: { //'Content-type' : 'application/xls', Accept: "*/*", }, responseType: "arraybuffer", }) .success(function (data, status, headers, config) { var file = new Blob([data], { type: "application/octet-stream", }); //trick to download store a file having its URL var fileURL = URL.createObjectURL(file); var a = document.createElement("a"); a.href = fileURL; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }) .error(function (data, status, headers, config) { // console.log(data); }); }; $scope.view = function (contentId) { $scope.imageurl = $scope.options.templateOptions.ApiService.download( contentId ).getRequestedUrl(); // $scope.options.templateOptions.view($scope.options.templateOptions.ApiService, contentId).then(function(response) { // if (response.state == 200) { // window.open(response.previewUrl); // } // }) }; /** * refresh */ $scope._refresh = function (refreshAttr) { if (refreshAttr !== undefined) { if (_refreshDelayPromise) { $timeout.cancel(_refreshDelayPromise); } _refreshDelayPromise = $timeout(function () { $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.options.templateOptions.processInstanceId, { idx: 0, sum: 1000, } ) .then(function (response) { var myData = $scope.options.templateOptions.Restangular.stripRestangular( response ); if (myData) { $scope.attachments = myData.data; } }); }, $scope.options.templateOptions.refreshDelay); } }; $scope._refresh({}); // $scope.attachments = $scope.model[$scope.options.key] }, ], }); //附件下载列表组件 formlyConfigProvider.setType({ name: "ui-dropfiletable", templateUrl: "assets/views/customform/tpl/ui-dropfiletable.html", defaultOptions: function (options) { return { templateOptions: { refresh: function (APIService, processInstanceId, data) { return APIService.listAttachments(processInstanceId, data); }, downloadUri: function (APIService, contentId) { return APIService.downloadAttachment(contentId).getRequestedUrl(); }, view: function (APIService, contentId) { return APIService.attachmentsPreviewUrl(contentId); }, download: function (APIService, contentId, item) { var item = { url: APIService.download(contentId), headers: headers, }; return item; }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$timeout", "$modal", "$rootScope", "$http", function ($scope, $timeout, $modal, $rootScope, $http) { var _refreshDelayPromise; // $scope.downloadUrl = function(contentId){ // return $scope.options.templateOptions.downloadUri($scope.options.templateOptions.ApiService,contentId)||'#'; // }; $scope.download = function (contentId, filename) { // var headers= $http({ url: $scope.options.templateOptions.ApiService.download( contentId ).getRequestedUrl(), method: "GET", headers: { //'Content-type' : 'application/xls', Accept: "*/*", }, responseType: "arraybuffer", }) .success(function (data, status, headers, config) { var file = new Blob([data], { type: "application/octet-stream", }); //trick to download store a file having its URL var fileURL = URL.createObjectURL(file); var a = document.createElement("a"); a.href = fileURL; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }) .error(function (data, status, headers, config) { // console.log(data); }); // $scope.options.templateOptions.ApiService.download(contentId).then(function(response){ // // $scope.options.templateOptions.download($scope.options.templateOptions.ApiService,contentId).then(function(response){ // var file = new Blob([response], { // type : 'application/octet-stream' // }); // // var filename = filename; // //var file = new Blob([response], {type: 'application/pdf'}); // var fileURL = URL.createObjectURL(file); // var a = document.createElement('a'); // a.href = fileURL; // a.target = '_blank'; // a.download = filename ; // document.body.appendChild(a); // a.click(); // }) }; $scope.view = function (contentId, token, filename, type) { // if (type == 'jpg' || type == 'png' || type == 'jpeg' || type == 'bmp' || type == 'gif') { // $scope.imageurl = $scope.options.templateOptions.ApiService.download(contentId).getRequestedUrl(); // var modalInstance = $modal.open({ // backdrop: false, // templateUrl: 'assets/views/customform/tpl/ui-showimage.html', // controller: function($scope, scope, $modalInstance, filename) { // $scope.title = filename; // $scope.imageurl = scope.imageurl; // $scope.cancel = function() { // $modalInstance.dismiss('cancel'); // } // }, // resolve: { // scope: function() { // return $scope; // }, // filename: function() { // return filename; // } // } // }); // event.preventDefault(); // } else { $scope.options.templateOptions .view($scope.options.templateOptions.ApiService, contentId) .then(function (response) { if (response.state == 200) { window.open(response.previewUrl); } }); // } }; /** * refresh */ $scope._refresh = function (refreshAttr) { if (refreshAttr !== undefined) { if (_refreshDelayPromise) { $timeout.cancel(_refreshDelayPromise); } _refreshDelayPromise = $timeout(function () { $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.options.templateOptions.processInstanceId, { idx: 0, sum: 1000, } ) .then(function (response) { var myData = $scope.options.templateOptions.Restangular.stripRestangular( response ); if (myData) { $scope.attachments = myData.data; } }); }, $scope.options.templateOptions.refreshDelay); } }; $scope._refresh({}); // $scope.attachments = $scope.model[$scope.options.key] }, ], }); //微信附件下载列表组件 formlyConfigProvider.setType({ name: "ui-dropfilewechat", templateUrl: "assets/views/customform/tpl/ui-dropfilewechat.html", defaultOptions: function (options) { return { templateOptions: { // refresh: function(APIService, processInstanceId, data) { // return APIService.listAttachments(processInstanceId, data); // }, // downloadUri: function(APIService, contentId) { // return APIService.downloadAttachment(contentId).getRequestedUrl(); // }, view: function (APIService, contentId) { // return APIService.attachmentsPreviewUrl(contentId); return APIService.attachmentsPreviewUrl(contentId); }, download: function (APIService, contentId, item) { var item = { url: APIService.download(contentId), headers: headers, }; return item; }, // download: function(APIService, contentId, item) { // var item = { 'url': APIService.downloadAttachment(contentId), 'headers': headers }; // return item; // }, refreshDelay: 0, }, }; }, controller: [ "$scope", "$timeout", "$modal", "$stateParams", "$rootScope", "$http", "api_wechatfile", function ( $scope, $timeout, $modal, $stateParams, $rootScope, $http, api_wechatfile ) { var _refreshDelayPromise; // $scope.downloadUrl = function(contentId){ // return $scope.options.templateOptions.downloadUri($scope.options.templateOptions.ApiService,contentId)||'#'; // }; $scope.attachments = {}; $scope.previewUrl = ""; $scope.download = function (token, filename) { // var headers= console.log($scope); $http({ url: $scope.options.templateOptions.ApiService.jry_download( token ).getRequestedUrl(), method: "GET", headers: { //'Content-type' : 'application/xls', Accept: "*/*", }, responseType: "arraybuffer", }) .success(function (data, status, headers, config) { var file = new Blob([data], { type: "application/octet-stream", }); //trick to download store a file having its URL var fileURL = URL.createObjectURL(file); var a = document.createElement("a"); a.href = fileURL; a.target = "_blank"; a.download = filename; document.body.appendChild(a); a.click(); }) .error(function (data, status, headers, config) { // console.log(data); }); }; $scope.view = function (contentId, token, filename, type, previewUrl) { // if (type) { // $scope.imageurl = $scope.options.templateOptions.ApiService.downloadAttachment(token).getRequestedUrl(); // var modalInstance = $modal.open({ // backdrop: false, // templateUrl: 'assets/views/customform/tpl/ui-showimage.html', // controller: function($scope, scope, $modalInstance, filename) { // $scope.title = filename; // $scope.imageurl = scope.imageurl; // $scope.cancel = function() { // $modalInstance.dismiss('cancel'); // } // }, // resolve: { // scope: function() { // return $scope; // }, // filename: function() { // return filename; // } // } // }); // event.preventDefault(); // } else { // $scope.options.templateOptions.view($scope.options.templateOptions.apiService, contentId).then(function(response) { // if (response.state == 200) { // window.open(response.previewUrl); // } // }) window.open(previewUrl); // } }; /** * refresh */ $scope._refresh = function (refreshAttr) { if (refreshAttr !== undefined) { if (_refreshDelayPromise) { $timeout.cancel(_refreshDelayPromise); } _refreshDelayPromise = $timeout(function () { // console.log(JSON.parse($stateParams.model)) var incidentChart = {}; if ($stateParams.model) { incidentChart = JSON.parse($stateParams.model).model; } $scope.options.templateOptions .refresh( $scope.options.templateOptions.ApiService, $scope.model ) .then(function (response) { // $scope.options.templateOptions.refresh($scope.options.templateOptions.ApiService, // incidentChart.incident.type, incidentChart.flow).then(function(response) { var myData = $scope.options.templateOptions.Restangular.stripRestangular( response ); if (myData) { $scope.attachments = myData.data; } }); }, $scope.options.templateOptions.refreshDelay); } }; $scope._refresh({}); // $scope.attachments = $scope.model[$scope.options.key] }, ], }); formlyConfigProvider.setType({ name: "ui-paralleltask", templateUrl: "assets/views/customform/tpl/ui-paralleltask.html", defaultOptions: function (options) { return { templateOptions: { refresh: function (APIService, processInstanceId, data) { //return APIService.listAttachments(processInstanceId, data); }, refreshDelay: 0, }, }; }, controller: ["$scope", "$timeout", function ($scope, $timeout) { }], }); //repeatSection // formlyConfigProvider.setType({ name: "ui-repeatSection", templateUrl: "assets/views/customform/tpl/ui-repeatSection.html", defaultOptions: function (options) { return { templateOptions: { unique: 1, initDisplay: false, }, }; }, controller: function ($scope) { //$scope.options.templateOptions.unique; $scope.formOptions = { formState: $scope.formState, }; $scope.addNew = addNew; $scope.copyFields = copyFields; function copyFields(fields) { fields = angular.copy(fields); addRandomIds(fields); return fields; } function addNew() { $scope.model[$scope.options.key] = $scope.model[$scope.options.key] || []; var repeatsection = $scope.model[$scope.options.key]; var lastSection = repeatsection[repeatsection.length - 1]; var newsection = {}; repeatsection.push(newsection); } function addRandomIds(fields) { $scope.options.templateOptions.unique++; angular.forEach(fields, function (field, index) { if (field.fieldGroup) { addRandomIds(field.fieldGroup); return; // fieldGroups don't need an ID } if (field.templateOptions && field.templateOptions.fields) { addRandomIds(field.templateOptions.fields); } field.id = field.id || field.key + "_" + index + "_" + $scope.options.templateOptions.unique + getRandomInt(0, 9999); }); } function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min)) + min; } if ($scope.options.templateOptions.initDisplay) { addNew(); } }, }); //时间轴任务列表组件 //cmdb控件 formlyConfigProvider.setType({ name: "ui-cmdb", extends: "input", templateUrl: "assets/views/customform/tpl/ui-cmdb.html", defaultOptions: function (options) { return { templateOptions: { onClick: function (size, options, modal, event, model) { var modalInstance = modal.open({ templateUrl: "assets/views/customform/tpl/cmdb-modal-content.html", controller: function ( $scope, $modalInstance, title, Restangular, APIService, ConfigDataService, ConfigFormService, SweetAlert, Toaster, api_wechatfile ) { var width = ($scope.width = 600); var height = ($scope.height = 400); var tree; var d3 = window.d3; $scope.my_tree_handler = function (branch) { //var _ref; var classify = ($scope.classify = branch.prefix.toLowerCase() + branch.sign); APIService.query({ sign: classify, }).then(function (data) { var myData = Restangular.stripRestangular(data); // console.log(myData.data.node); if (myData.data && myData.status == 200) { var ret = myData.data; redrawSvg(myData); } }); }; $scope.my_data = []; function convertListToTree(data, treeMap) { var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = null; //Initially set our loop to null var parentNode = null; //loop over data for (var i = 0; i < data.length; i++) { var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent idToNodeMap[datum.id] = datum; //Does this node have a parent? if ( typeof datum.parent === "undefined" || datum.parent == null ) { //Doesn't look like it, so this node is the root of the tree root = datum; treeMap[datum.id] = root; } else { //This node has a parent, so let's look it up using the id parentNode = idToNodeMap[datum.parent.id]; //We don't need this property, so let's delete it. delete datum.parent; //Let's add the current node as a child of the parent node. parentNode.children.push(datum); } } return root; } function convertParentToChildList(data) { var treeMap = {}; var list = []; convertListToTree(data, treeMap); angular.forEach(treeMap, function (item) { list.push(item); }); return list; } $scope.my_tree = tree = {}; $scope.try_async_load = function () { $scope.my_data = []; $scope.select_treedata = []; $scope.doing_async = true; ConfigDataService.fetchDataList("ciclassify", { idx: 0, sum: 100, }).then(function (result) { $scope.select_treedata = $scope.my_data = convertParentToChildList(result["list"]); $scope.doing_async = false; }); // api_wechatfile.getDictionary({ 'key': 'cmdb_status', 'type': 'list' }).then(function(result) { // $scope.select_treedata = $scope.my_data = convertParentToChildList(result['list']); // $scope.doing_async = false; // }); }; $scope.select_treedata = []; $scope.propTypeOptions = []; $scope.try_async_load(); $scope.onFilterCallback = function (item) { //console.log(item); if ( angular.isDefined(item.children) && item.children.length >= 1 ) { //not valid } else { var tempclassify = item.prefix.toLowerCase() + item.sign; $scope.cifilter_classic = tempclassify; ConfigFormService.renderTabForm(tempclassify).then( function (data) { var myData = Restangular.stripRestangular(data); $scope.propTypeOptions = myData; } ); } }; $scope.onPropTypeChange = function (form) { $scope.propOptions = form.fields; }; $scope.onPropChange = function (prop) { $scope.cifilter_prop = prop; }; $scope.searchCI = function (searchKey, propObj, ciclassify) { //if(searchKey!=null&&searchKey.length>1){ var searchData = {}; if (angular.isUndefined(propObj)) { propObj = $scope.cifilter_prop; } if (angular.isUndefined(ciclassify)) { ciclassify = $scope.cifilter_classic; } searchData["sign"] = ciclassify; if (angular.isDefined(propObj)) { searchData[propObj.key] = searchKey; } APIService.query(searchData).then(function (response) { var data = Restangular.stripRestangular(response); //此处不清空nodes var node = data.data.node; var tempNode = []; //nodes 或者links 要去重 for (var i = 0; i < node.length; i++) { var tmp = 0; for (var j = 0; j < nodes.length; j++) { if (node[i].uuid == nodes[j].uuid) { tmp++; break; } } if (tmp == 0) { tempNode.push(node[i]); } } for (var i = 0; i < tempNode.length; i++) { //nodes 不清空 nodes.push(tempNode[i]); } restart(); }); }; $scope.refresh = function () { nodes.length = 0; links.length = 0; restart(); }; $scope.traversal = function () { if ($scope.selected_node == null) { SweetAlert.swal({ title: "错误的操作!", text: "没有配置项被选中!", type: "error", }); } else { var uuid = $scope.selected_node.uuid; APIService.traversal(uuid).then(function (response) { var d = response.data; var node = d.node; var link = d.edge; var tempNode = []; var tempLink = []; //nodes 或者links 要去重 for (var i = 0; i < node.length; i++) { var tmp = 0; for (var j = 0; j < nodes.length; j++) { if (node[i].id == nodes[j].id) { tmp++; break; } } if (tmp == 0) { tempNode.push(node[i]); } } for (var i = 0; i < link.length; i++) { var tmp = 0; for (var j = 0; j < links.length; j++) { if (link[i].id == links[j].id) { tmp++; break; } } if (tmp == 0) { tempLink.push(link[i]); } } //数据写入页面 for (var i = 0; i < tempNode.length; i++) { //nodes 不清空 nodes.push(tempNode[i]); } for (var i = 0; i < tempLink.length; i++) { //link 不清空 links.push(tempLink[i]); } //links转换 for (var i = 0; i < links.length; i++) { for (var j = 0; j < nodes.length; j++) { if (links[i].source == nodes[j].id) { links[i].source = nodes[j]; } if (links[i].target == nodes[j].id) { links[i].target = nodes[j]; } } } restart(); }); } }; var svg; var force; var drag_line, path, circle; //var svg = d3.select(angular.element('div#cmdbSVG')).append('svg').attr('width', width).attr('height', height); //var svg = angular.element('div#cmdbSVG').append('svg').attr('width', width).attr('height', height); //var svg = d3.select('#cmdbSVG').append('svg').attr('width', width).attr('height', height); var nodes = [], links = []; var treeNodes = []; //读取labels (node) var labels = []; function redrawSvg(json) { nodes.length = 0; //先清空 links.length = 0; var data = json.data; for (var i = 0; i < data.node.length; i++) { nodes.push(data.node[i]); } restart(); } //读取status (节点 连线) var statuses = []; // ConfigDataService.fetchDataList('cistatus', { 'idx': 0, 'sum': 100 }).then(function(result) { // if (result && result.status == 200) { // d3.select('#nodeStatus').selectAll('option') // .data(statuses).enter() // .append('option') // .attr('value', function(d) { return d.code; }) // .html(function(d) { return d.desc; }); // } else { // SweetAlert.swal({ // title: "提示!", // text: "服务器请求异常!", // type: "error" // }); // } // }); api_wechatfile .getDictionary({ key: "cmdb_status", type: "list", }) .then(function (result) { if (result) { d3.select("#nodeStatus") .selectAll("option") .data(statuses) .enter() .append("option") .attr("value", function (d) { return d.code; }) .html(function (d) { return d.desc; }); } else { SweetAlert.swal({ title: "提示!", text: "服务器请求异常!", type: "error", }); } }); //查询relationship_type表 name 为表里的type,label为显示值 var linkType = []; function fetchEdgeTypes() { ConfigDataService.fetchDataList("ciedgetype", { idx: 0, sum: 100, }).then(function (response) { if (response) { if (response["list"]) { linkType = response["list"]; // d3.select('#linkName').selectAll('option') // .data(linkType).enter() // .append('option') // .attr('value',function(d){return d.type;}) // .html(function(d){ return d.label;}); } else { SweetAlert.swal({ title: "提示!", text: "服务器请求异常!", type: "error", }); } } else { SweetAlert.swal({ title: "提示!", text: "服务器请求异常!", type: "error", }); } }); } // fetchEdgeTypes(); /* // init D3 force layout var force = d3.layout.force() .nodes(nodes) .links(links) .size([width, height]) .gravity(.05) .linkDistance(150) .linkStrength(2) .charge(-500) .on('tick', tick); // define arrow markers for graph links svg.append('svg:defs').append('svg:marker') .attr('id', 'end-arrow') .attr('viewBox', '0 -5 10 10') .attr('refX', 6) .attr('markerWidth', 3) .attr('markerHeight', 3) .attr('orient', 'auto') .append('svg:path') .attr('d', 'M0,-5L10,0L0,5') .attr('fill', '#000'); svg.append('svg:defs').append('svg:marker') .attr('id', 'start-arrow') .attr('viewBox', '0 -5 10 10') .attr('refX', 4) .attr('markerWidth', 3) .attr('markerHeight', 3) .attr('orient', 'auto') .append('svg:path') .attr('d', 'M10,-5L0,0L10,5') .attr('fill', '#000'); // line displayed when dragging new nodes var drag_line = svg.append('svg:path') .attr('class', 'link dragline hidden') .attr('d', 'M0,0L0,0'); // handles to link and node element groups //(1)var path = svg.append('svg:g').selectAll('g') var path = svg.append('svg:g').selectAll('g'), circle = svg.append('svg:g').selectAll('g'); */ // mouse event vars var selected_node = null, selected_link = null, mousedown_link = null, mousedown_node = null, mouseup_node = null; function resetMouseVars() { mousedown_node = null; mouseup_node = null; mousedown_link = null; } // update force layout (called automatically each iteration) function tick() { // draw directed edges with proper padding from node centers path.selectAll("path").attr("d", function (d) { var deltaX = d.target.x - d.source.x, deltaY = d.target.y - d.source.y, dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY), normX = deltaX / dist, normY = deltaY / dist, sourcePadding = d.left ? 27 : 22, targetPadding = d.right ? 27 : 22, sourceX = d.source.x + sourcePadding * normX, sourceY = d.source.y + sourcePadding * normY, targetX = d.target.x - targetPadding * normX, targetY = d.target.y - targetPadding * normY; return ( "M" + sourceX + "," + sourceY + "L" + targetX + "," + targetY ); }); circle.attr("transform", function (d) { return "translate(" + d.x + "," + d.y + ")"; }); } // update graph (called when needed) function restart() { //绑定link 数据 path.datum(links); // path (link) group path = path.data(links, function (d) { return d.id; }); var p = path.enter().append("svg:g"); //update existing links path .selectAll("path") .classed("selected", function (d) { return d === selected_link; }) .style("marker-start", function (d) { return d.left ? "url(#start-arrow)" : ""; }) .style("marker-end", function (d) { return d.right ? "url(#end-arrow)" : ""; }); // add new links p.append("svg:path") .attr("class", "link") .attr("id", function (d) { return "path_" + d.id; }) // .attr('startOffset', '0%') .classed("selected", function (d) { return d === selected_link; }) .style("marker-start", function (d) { return d.left ? "url(#start-arrow)" : ""; }) .style("marker-end", function (d) { return d.right ? "url(#end-arrow)" : ""; }) .on("mousedown", function (d) { if (d3.event.ctrlKey) return; //去除没有提交的连线 for (var i = 0; i < links.length; i++) { if (links[i].id == -1 && d.id != -1) { links.splice(i, 1); } } // select link mousedown_link = d; if (mousedown_link === selected_link) { selected_link = $scope.selected_link = null; selected_node = $scope.selected_node = null; // d3.select("#linkDetail").attr('style','display:none'); //hideLinkForm(true);//return ; } else { selected_link = $scope.selected_link = mousedown_link; selected_node = $scope.selected_node = null; } selected_node = $scope.selected_node = null; restart(); }); p.append("svg:text") .attr("x", 30) .attr("y", 20) .attr("class", "fontM") .append("textPath") .attr("xlink:xlink:href", function (d, i) { return "#path_" + d.id; }) .html(function (d) { for (var i = 0; i < linkType.length; i++) { if (linkType[i].type == d.name) { return linkType[i].label; } } }); // remove old links path.exit().remove(); // circle (node) group // NB: the function arg is crucial here! nodes are known by id, not by index! circle.datum(nodes); circle = circle.data(nodes, function (d) { return d.id; }); // update existing nodes (reflexive & selected visual states) circle .selectAll("circle") .style("fill", function (d) { return d === selected_node ? d3.rgb(colors(d.label)).brighter().toString() : colors(d.label); }) .style("fill-opacity", 0.75) // add by xi .classed("reflexive", function (d) { return d.reflexive; }); // add new nodes var g = circle.enter().append("svg:g"); //g.append('svg:circle').attr('r',22).style('fill','rgb(255,255,255)').style('stroke','rgb(255,255,255)').style('stroke-width','2'); //g.append('svg:circle').attr('r',24).style('fill','rgb(255,255,255)').style('stroke', function(d) { return d3.rgb(colors(d.label)).darker().toString(); }).style('stroke-width','2'); g.append("svg:circle") .attr("r", 24) .style("fill", function (d) { return d === selected_node ? "rgb(153,153,153)" : "rgb(255,255,255)"; }) .style("stroke", function (d) { return d3.rgb(colors(d.label)).darker().toString(); }) .style("stroke-width", "2"); g.append("svg:circle") .attr("class", "node") .attr("r", 18) .style("fill", function (d) { return d === selected_node ? d3.rgb(colors(d.label)).brighter().toString() : colors(d.label); }) .style("stroke", function (d) { return d3.rgb(colors(d.label)).darker().toString(); }) .style("fill-opacity", 0.25) //add by xj .style("stroke-opacity", 0.5) //add by xj .classed("reflexive", function (d) { return d.reflexive; }); g.on("mouseover", function (d) { //if(!mousedown_node || d === mousedown_node) return; // enlarge target node //d3.select(this).attr('transform', 'scale(1.1)'); }) .on("mouseout", function (d) { //if(!mousedown_node || d === mousedown_node) return; // unenlarge target node //d3.select(this).attr('transform', ''); }) .on("mousedown", function (d) { if (d3.event.ctrlKey) return; //hideLinkForm(true); //去除没有提交的连线 for (var i = 0; i < links.length; i++) { if (links[i].id == -1) { links.splice(i, 1); } } // select node mousedown_node = d; if (mousedown_node === selected_node) { selected_node = $scope.selected_node = null; } else { selected_node = $scope.selected_node = mousedown_node; selected_link = $scope.selected_link = null; // 点击节点 查询关系及节点 /traversal/{id}/{relation} APIService.findRefById(selected_node.id).then(function ( result ) { var d = result.data; var node = d.node; var link = d.edge; var tempNode = []; var tempLink = []; //nodes 或者links 要去重 for (var i = 0; i < node.length; i++) { var tmp = 0; for (var j = 0; j < nodes.length; j++) { if (node[i].id == nodes[j].id) { tmp++; break; } } if (tmp == 0) { tempNode.push(node[i]); } } for (var i = 0; i < link.length; i++) { var tmp = 0; for (var j = 0; j < links.length; j++) { if (link[i].id == links[j].id) { tmp++; break; } } if (tmp == 0) { tempLink.push(link[i]); } } //数据写入页面 for (var i = 0; i < tempNode.length; i++) { //nodes 不清空 nodes.push(tempNode[i]); } for (var i = 0; i < tempLink.length; i++) { //link 不清空 links.push(tempLink[i]); } //links转换 for (var i = 0; i < links.length; i++) { for (var j = 0; j < nodes.length; j++) { if (links[i].source == nodes[j].id) { links[i].source = nodes[j]; } if (links[i].target == nodes[j].id) { links[i].target = nodes[j]; } } } restart(); }); } // reposition drag line drag_line .style("marker-end", "url(#end-arrow)") .classed("hidden", false) .attr( "d", "M" + mousedown_node.x + "," + mousedown_node.y + "L" + mousedown_node.x + "," + mousedown_node.y ); restart(); }) .on("mouseup", function (d) { if (!mousedown_node) return; }); // show node name g.append("svg:text") .attr("x", 0) .attr("y", 34) .attr("class", "id") .text(function (d) { return d.name; }); //TODO 改为 d.name //设置图片 g.append("svg:foreignObject") .attr("width", 32) .attr("height", 32) .attr("x", "-16px") .attr("y", "-11px") .html(function (d) { for (var i = 0; i < labels.length; i++) { if (d.label == labels[i].sign) { return ( '' + labels[i].iconname + "" ); } } }); // remove old nodes circle.exit().remove(); // set the graph in motion force.start(); } function mousedown() { // prevent I-bar on drag //d3.event.preventDefault(); // because :active only works in WebKit? svg.classed("active", true); if (mousedown_node) { viewNode(mousedown_node); } if (d3.event.ctrlKey || mousedown_node || mousedown_link) return; restart(); } function mousemove() { if (!mousedown_node) return; // update drag line //drag_line.attr('d', 'M' + mousedown_node.x + ',' + mousedown_node.y + 'L' + d3.mouse(this)[0] + ',' + d3.mouse(this)[1]); //restart(); } function mouseup() { if (mousedown_node) { // hide drag line drag_line.classed("hidden", true).style("marker-end", ""); } // because :active only works in WebKit? svg.classed("active", false); // clear mouse event vars resetMouseVars(); } function spliceLinksForNode(node) { var toSplice = links.filter(function (l) { return l.source === node || l.target === node; }); toSplice.map(function (l) { links.splice(links.indexOf(l), 1); }); } // only respond once per keydown var lastKeyDown = -1; function keydown() { //d3.event.preventDefault(); if (lastKeyDown !== -1) return; lastKeyDown = d3.event.keyCode; // ctrl if (d3.event.keyCode === 17) { circle.call(force.drag); svg.classed("ctrl", true); } if (!selected_node && !selected_link) return; switch (d3.event.keyCode) { case 8: // backspace case 66: // B if (selected_link) { // set link direction to both left and right selected_link.left = true; selected_link.right = true; } restart(); break; case 76: // L if (selected_link) { // set link direction to left only selected_link.left = true; selected_link.right = false; } restart(); break; case 82: // R if (selected_node) { // toggle node reflexivity selected_node.reflexive = !selected_node.reflexive; } else if (selected_link) { // set link direction to right only selected_link.left = false; selected_link.right = true; } restart(); break; } } function keyup() { lastKeyDown = -1; // ctrl if (d3.event.keyCode === 17) { circle .on("mousedown.drag", null) .on("touchstart.drag", null); svg.classed("ctrl", false); } } function viewNode(node) { // console.log(svg.attr('left')); //var el = angular.element('div.modal-dialog')[0]; var title = $scope.selected_node.name + "-[" + $scope.selected_node.uuid + "]"; if (!$scope.selected_node.props.state) { $scope.selected_node.props.state = "空"; } else if ($scope.selected_node.props.state) { if ($scope.selected_node.props.state == "1") { $scope.selected_node.props.state = "未审核"; } else if ($scope.selected_node.props.state == "2") { $scope.selected_node.props.state = "已审核"; } else if ($scope.selected_node.props.state == "3") { $scope.selected_node.props.state = "不匹配"; } else if ($scope.selected_node.props.state == "4") { $scope.selected_node.props.state = "丢失"; } } if (!$scope.selected_node.name) { $scope.selected_node.name = "空"; } if (!$scope.selected_node.status) { $scope.selected_node.statu = "空"; } if (!$scope.selected_node.props.useradmin) { $scope.selected_node.props.useradmin = "空"; } Toaster.pop({ // type: 'info', // title: title, body: "

搜索代码:" + $scope.selected_node.uuid + "

" + "

配置标题:" + $scope.selected_node.name + "

" + "

状态:" + $scope.selected_node.status + "

" + "

审核状态:" + $scope.selected_node.props.state + "

" + "

维护人员:" + $scope.selected_node.props.useradmin + "

", bodyOutputType: "trustedHtml", timeout: 3000, }); } //GT 颜色与数值对照表 function colors(sign) { //num=num>20?num%20:parseInt(num); for (var i = 0; i < labels.length; i++) { var entity = labels[i]; if (sign == entity.sign) { return entity.color; } if (i == labels.length - 1 && sign != entity.sign) { return "#ffeeee"; } } } $scope.init = function () { svg = d3 .select("#cmdbSVG") .append("svg") .attr("width", width) .attr("height", height); // init D3 force layout force = d3.layout .force() .nodes(nodes) .links(links) .size([width, height]) .gravity(0.05) .linkDistance(150) .linkStrength(2) .charge(-500) .on("tick", tick); // define arrow markers for graph links svg .append("svg:defs") .append("svg:marker") .attr("id", "end-arrow") .attr("viewBox", "0 -5 10 10") .attr("refX", 6) .attr("markerWidth", 3) .attr("markerHeight", 3) .attr("orient", "auto") .append("svg:path") .attr("d", "M0,-5L10,0L0,5") .attr("fill", "#000"); svg .append("svg:defs") .append("svg:marker") .attr("id", "start-arrow") .attr("viewBox", "0 -5 10 10") .attr("refX", 4) .attr("markerWidth", 3) .attr("markerHeight", 3) .attr("orient", "auto") .append("svg:path") .attr("d", "M10,-5L0,0L10,5") .attr("fill", "#000"); // line displayed when dragging new nodes drag_line = svg .append("svg:path") .attr("class", "link dragline hidden") .attr("d", "M0,0L0,0"); // handles to link and node element groups //(1)var path = svg.append('svg:g').selectAll('g') path = svg.append("svg:g").selectAll("g"); circle = svg.append("svg:g").selectAll("g"); svg .on("mousedown", mousedown) .on("mousemove", mousemove) .on("mouseup", mouseup); d3.select(window).on("keydown", keydown).on("keyup", keyup); }; var CI = {}; window.CI = CI; $scope.ok = function () { $modalInstance.close($scope.selected_node); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: size, resolve: { title: function () { return options.templateOptions.title; }, Restangular: function () { return options.templateOptions.Restangular; }, APIService: function () { return options.templateOptions.ApiService; }, ConfigDataService: function () { return options.templateOptions.ConfigDataService; }, ConfigFormService: function () { return options.templateOptions.ConfigFormService; }, SweetAlert: function () { return options.templateOptions.Alert; }, Toaster: function () { return options.templateOptions.toaster; }, }, }); modalInstance.result.then( function (selectedItem) { options.value(selectedItem.name + "-" + selectedItem.uuid); }, function () { //console.log('Modal dismissed at: ' + new Date()); } ); }, }, }; }, controller: [ "$scope", function ($scope) { // setTimeout(function(){ // $scope.options.templateOptions.getWorkernumber($scope.options.templateOptions.ApiService).then(function(result){ // var modelData = $scope.options.templateOptions.Restangular.stripRestangular(result); // if(modelData.status==200){ // $scope.model[$scope.options.key] = modelData.data; // $scope.options.initialValue = $scope.model[$scope.options.key]; // } // }); // },1000); }, ], }); }); appFormly.run(function (formlyConfig, $parse) { //formlyConfig.extras.fieldTransform=formlyConfig.extras.fieldTransform||[]; var removeOnHideTransformer = function (fields, model) { return fields.map(function (field) { if ( field.hideExpression && (!field.data || !field.data.dontRemoveOnHidden) ) { addFieldRemoveOnHideWatcher(field); } if (field.type == "ui-title") { addFieldRemoveOnHideWatcher(field); } return field; }); }; formlyConfig.extras.fieldTransform = removeOnHideTransformer; function addFieldRemoveOnHideWatcher(field) { var watcher = getWatcher(); if (field.watcher) { if (!angular.isArray(field.watcher)) { field.watcher = [field.watcher]; } field.watcher.push(watcher); } else { field.watcher = watcher; } } function getWatcher() { return { expression: function (field) { return field.hide; }, listener: function (field, newHide, oldHide, scope) { if (field.hide) { if (field.templateOptions.pkey) { if (field.key == "transferuser") { $parse(field.templateOptions.pkey + "." + field.key).assign( scope.model, undefined ); } } else if(typeof field.key =='string') { $parse(field.key).assign(scope.model, undefined); } } if (field.type == "ui-title") { $parse(field.key).assign(scope.model, undefined); } }, }; } }); appFormly.controller("CustomformCtrl", [ "$rootScope", "$scope", "$parse", "$injector", "$http", "$q", "$state", "$stateParams", "$modal", "$timeout", "$interval", "SweetAlert", "FileUploader", "i18nService", "Restangular", "UserRestangular", "BpmRestangular", "SimpleRestangular", "WechatRestangular", "api_configure_form", "api_bpm_domain", "api_bpm_domain1", "api_simple", "api_bpm", "api_bpm_data", "api_user_data", "api_statistic", "up_down_file", "fileReader", "api_wechatfile", "api_category", function ( $rootScope, $scope, $parse, $injector, $http, $q, $state, $stateParams, $modal, $timeout, $interval, SweetAlert, FileUploader, i18nService, Restangular, UserRestangular, BpmRestangular, SimpleRestangular, WechatRestangular, api_configure_form, api_bpm_domain, api_bpm_domain1, api_simple, api_bpm, api_bpm_data, api_user_data, api_statistic, up_down_file, fileReader, api_wechatfile, api_category ) { //console.log($parse('Restangular')($scope)); //console.log($injector.get('Restangular')); //console.log($stateParams); //保存报修主体 $scope.repairMain = JSON.parse(sessionStorage.getItem("repair_main")); $scope.imgUrlList = []; $scope.uploadimg_del = function () { console.log(123); }; var vm = this; vm.options = {}; vm.exampleTitle = ["expressionProperties", "model property"]; vm.fields = []; vm.model = {}; $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); //alert($rootScope.user.id,null,2); vm.model["loginUser"] = $rootScope.user; var loginUser = $rootScope.user; // console.log(vm); var that = $injector; var parse = $parse; var formKey = ""; var pdKey = ""; var modelWatch = ""; // 房间号是否显示 vm.model.isRoom = sessionStorage.getItem('ifRoom') == 1; if (angular.isDefined($stateParams.model) && $stateParams.model != "") { modelWatch = JSON.parse($stateParams.model); // console.log("modelWatch:"+ JSON.stringify(modelWatch)); // 进入页面时判断有无携带区域地点2020年4月24日10:30:41 console.log(modelWatch, $rootScope); // if(modelWatch.model.incident){ // if(modelWatch.model.incident.place){ // $rootScope.selecthouseNumber = modelWatch.modle.incident.place; // }else{ // $rootScope.selecthouseNumber = undefined; // } // } // 初始化的时候判断是否是简单处理 if(modelWatch.model && modelWatch.model.incident && modelWatch.model.incident.category){ if (modelWatch.model.incident.category.hasSimple == 1) { vm.model.isHasSimple = true; }else{ vm.model.isHasSimple = false; } } } if (angular.isDefined($state.current.pdKey) && $state.current.pdKey != "") { pdKey = $state.current.pdKey; } else if ($stateParams.pdKey) { pdKey = $stateParams.pdKey; } // console.log("pdKey::" + JSON.stringify($state.current.title)); if (angular.isDefined($stateParams.formKey) && $stateParams.formKey != "") { formKey = $stateParams.formKey; // console.log("formKey::"+JSON.stringify($stateParams.formKey)); } if (angular.isDefined($stateParams.model)) { var formModel = $stateParams.model; } //用户测试数据,后续从header的auth中获取 var userId = 2; userId = $rootScope.user.id; //==============处理表单设计数据 开始==================== //处理组件加载后台数据选项的方法 function refreshSelectOptions(searchVal, field) { if ( field.templateOptions.optionsUrl && !field.templateOptions.isnosearch ) { var process = BpmRestangular.all(""); if (field.templateOptions.ApiService) { process = UserRestangular.all(""); } if (field.templateOptions.Apicommon) { process = WechatRestangular.all(""); } var datakey = { idx: 0, sum: 1000, }; if (field.templateOptions.modelreasondata) { datakey = field.templateOptions.modelreasondata; } process .customPOST(datakey, field.templateOptions.optionsUrl) .then(function (result) { if (!field.templateOptions.options) { field.templateOptions.options = []; } if (field.templateOptions.optionsDataKey) { field.templateOptions.options = result[field.templateOptions.optionsDataKey]; } else { field.templateOptions.options = result; } }); } } //获取表单后数据处理 function formfield(field, result) { // angular.forEach(fields.fields, function(field) { if (field.key == "") { delete field.key; } if (angular.isDefined(field.extjson)) { var extObj = angular.fromJson(field.extjson); //JSON.parse(field.extjson); angular.extend(field.templateOptions, extObj.templateOptions); delete extObj.templateOptions; for (var prop in extObj) { if (new RegExp("Expression").test(prop)) { //var obj = $scope.$eval(extObj[prop]); //extObj[prop] = $scope.$eval(extObj[prop]); if (extObj[prop] != null) { if (new RegExp("function").test(extObj[prop])) { var propValue = eval(extObj[prop]); extObj[prop] = propValue; } else { //console.log(extObj[prop]); var obj = $scope.$eval(extObj[prop]); extObj[prop] = obj; //console.log(obj); } } } else if (new RegExp("expressionProperties").test(prop)) { for (var p in extObj[prop]) { if (new RegExp("function").test(extObj[prop][p])) { var propValue = eval(extObj[prop][p]); extObj[prop][p] = propValue; } else { //if(p.indexOf("'")>=0){ // var obj = $scope.$eval(extObj[prop][p]); // extObj[prop][$scope.$eval(p)]=obj; //} } } } else if ("watcher" == prop) { if (angular.isArray(extObj[prop])) { angular.forEach(extObj[prop], function (item, index) { for (var p in item) { if (new RegExp("function").test(item[p])) { var propValue = eval(item[p]); extObj[prop][index][p] = propValue; } } }); } else if (angular.isObject(extObj[prop])) { for (var p in extObj[prop]) { if (new RegExp("function").test(extObj[prop][p])) { var propValue = eval(extObj[prop][p]); extObj[prop][p] = propValue; } } } } } angular.extend(field, extObj); delete field.extjson; } if (angular.isDefined(field.templateOptions)) { var templateOs = field.templateOptions; // console.log(templateOs,'come') for (var property in templateOs) { //console.log(angular.isString(templateOs[property]) +" "+property + " " + (!(new RegExp("[\u4e00-\u9fa5]").test(templateOs[property])))); if (angular.isString(templateOs[property])) { //&& !(new RegExp("[\u4e00-\u9fa5]").test(templateOs[property])) if (new RegExp("function").test(templateOs[property])) { var propValue = eval(templateOs[property]); field.templateOptions[property] = propValue; } else { if (that.has(templateOs[property])) { field.templateOptions[property] = that.get( templateOs[property] ); } else { field.templateOptions[property] = templateOs[property]; } } } else if (templateOs[property] == null) { //delete field.templateOptions[property]; } else { } } } if ( angular.isDefined(field.templateOptions) && angular.isDefined(field.templateOptions.extjson) ) { var extObj = angular.fromJson(field.templateOptions.extjson); //JSON.parse(field.extjson); angular.extend(field.templateOptions, extObj); delete field.templateOptions.extjson; } // ... if (field.templateOptions) { //处理远程获取数据控件方法调用 if ( field.templateOptions.optionsUrl && !field.templateOptions.refresh ) { // if (!field.templateOptions.isnoreash) { field.templateOptions.refresh = refreshSelectOptions; // } } //处理嵌套属性数据绑定/ if (field.templateOptions.pkey) { var pmodel, i = 0; angular.forEach(field.templateOptions.pkey.split("."), function (p) { if (i == 0) { if (result.model[p] == null) { result.model[p] = {}; } pmodel = result.model[p]; i++; } else { if (pmodel[p] == null) { pmodel[p] = {}; } pmodel = pmodel[p]; } }); if (pmodel != null) { field.model = pmodel; if (pmodel[field.key] == null) { pmodel[field.key] = null; } } } else { if (result.model[field.key] == null) { result.model[field.key] = null; } } //处理弹出框组件初始化 if (field.type == "ui-input-selectmodal") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-requesterselect") { //field.templateOptions.language = $scope.lang; field.templateOptions.modal = $modal; field.templateOptions.UserService = api_user_data; } else if (field.type == "ui-deptinformation") { field.templateOptions.modal = $modal; field.templateOptions.UserService = api_user_data; } else if (field.type == "ui-requesterinformation") { field.templateOptions.modal = $modal; field.templateOptions.UserService = api_user_data; } else if (field.type == "ui-userselect") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-userselectSearch") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-multiuserselect") { field.templateOptions.modal = $modal; } else if (field.type == "ui-stringuserselect") { field.templateOptions.modal = $modal; } else if (field.type == "ui-search") { field.templateOptions.modal = $modal; } else if (field.type == "ui-modelselect") { field.templateOptions.modal = $modal; //console.log("$rootScope.user:" + JSON.stringify($rootScope.user)); field.templateOptions.loginUser = $rootScope.user; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-incidentmodelselect") { field.templateOptions.modal = $modal; //console.log("$rootScope.user:" + JSON.stringify($rootScope.user)); field.templateOptions.loginUser = $rootScope.user; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-dropfile") { $scope.fileUploader = field.templateOptions.fileUploader = new FileUploader({ url: "/uploader", }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; } else if (field.type == "ui-dropfielknow") { $scope.fileUploader = field.templateOptions.fileUploader = new FileUploader({ url: "/uploader", }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; } else if (field.type == "ui-upDropFile") { $scope.fileUploader = field.templateOptions.fileUploader = new FileUploader({ url: "/uploader", }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; } else if (field.type == "ui-dropfilenotup") { $scope.fileUploader = field.templateOptions.fileUploader = new FileUploader({ url: "/uploader", }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; //field.ApiService=api_bpm_domain; } else if (field.type == "ui-uploadFiles") { $scope.fileUploader = field.templateOptions.fileUploader = new FileUploader({ url: "/uploader", }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; //field.ApiService=api_bpm_domain; } else if (field.type == "ui-upDownFiles") { $scope.fileUploader = field.templateOptions.fileUploader = new FileUploader({ url: "/uploader", }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; //field.ApiService=api_bpm_domain; } else if (field.type == "ui-uploadImgs") { $scope.fileUploader = field.templateOptions.fileUploader = new FileUploader({ url: "/uploader", }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; //field.ApiService=api_bpm_domain; } else if (field.type == "ui-dropfiletable") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-dropFiles") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-showImgs") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-repeatSection") { var repeatForm = { model: {}, fields: field.templateOptions.fields, }; repeatForm.model[field.key] = []; decodeVMForm(repeatForm); } else if (field.type == "ui-currentuser") { field.templateOptions.user = vm.model["loginUser"]; } else if (field.type == "ui-workernumbersign") { field.templateOptions.user = vm.model["loginUser"]; } else if (field.type == "ui-repair-photos") { field.templateOptions.user = vm.model["loginUser"]; } } } //解析自定义表单设计数据 $scope.oldfromtype = true; function decodeVMForm(vmForm) { if (vmForm.formType == "1") { $scope.oldfromtype = false; } else { $scope.oldfromtype = true; } var result = { model: {}, fields: [], }; //设置模型实体数据 begin // var mdata = vmForm.model; //解析数据实体 var mdata = angular.fromJson(vmForm.model); //JSON.parse(field.extjson); angular.extend(result.model, mdata); if (modelWatch != null && modelWatch != "") { //angular.extend(result.model.incident,modelWatch.incident); //result.model.alarmType = modelWatch.alarmType; // vmForm.cancelUrl = modelWatch.cancelUrl; // console.log(modelWatch.cancelUrl) for (var index in modelWatch.model) { //console.log(JSON.stringify(index+" " +JSON.stringify( modelWatch.model[index]))); if (result.model[index] != null) { angular.extend(result.model[index], modelWatch.model[index]); } else { result.model[index] = modelWatch.model[index]; } } } //设置模型实体数据 end //解析设计数据生成表单项 begin var fields = []; //处理修改设计数据中展示设置 angular.forEach(vmForm.fields, function (fields) { if (vmForm.formType == "1") { angular.forEach(fields.fields, function (field) { formfield(field, result); }); } else { formfield(fields, result); } // console.log(field); result.fields.push(fields); }); angular.extend($scope.vm.fields, result.fields); angular.extend($scope.vm.model, result.model); vm.model["loginUser"] = $rootScope.user; //增加识别报修主体seimin vm.model.repairType = $scope.repairMain.valueconfig; if (vm.model.incident) { vm.model.incident.repairType = $scope.repairMain.valueconfig; } console.log(vm, "repairType"); //lmm if ( modelWatch != null && modelWatch != "" && modelWatch.cancelUrl != null && modelWatch.cancelUrl != "" ) { vmForm.cancelUrl = modelWatch.cancelUrl; } $scope.formData = vmForm; console.log($scope.formData, 4444444); // console.log($scope.formData.url); // console.log("$scope.formData="+JSON.stringify($scope.formData.url)); if ($scope.formData.url == "start") { $scope.Reset = true; $scope.close = true; $rootScope.isMask = false; } else if ($scope.formData.url == "complete") { $scope.Reset = false; $scope.close = true; } //解析设计数据生成表单项 end return result; } //======================处理表单设计数据 结束======================== $scope.ldloading = {}; function filter(obj) { angular.forEach(obj, function (key, value) { if (value === "" || value === null) { delete obj[key]; } else if ( Object.prototype.toString.call(value) === "[object Object]" ) { filter(value); } else if (angular.isArray(value)) { angular.forEach(value, function (item) { filter(item); }); } }); } $scope.closeModel = function () { // console.log($stateParams); $state.go($scope.formData.cancelUrl, {}); event.preventDefault(); }; // console.log(vm); // 暂存 $scope.save = function (data) { console.log(vm); if (vm.model.startSave) { vm.model["initUser"] = $rootScope.user.id; vm.model.start_code = "temporary"; //处理请求数据0327 var data0327 = JSON.parse(JSON.stringify(vm.model)); delete data0327.repairType; // console.log($scope.$parent.$parent.$parent.$parent.$parent.$parent.selecthouseNumber,'2020年4月24日20:24:10'); if ( $scope.$parent.$parent.$parent.$parent.$parent.$parent .selecthouseNumber ) { data0327.incident.place = { id: $scope.$parent.$parent.$parent.$parent.$parent.$parent .selecthouseNumber.id, }; } api_bpm_domain.start(pdKey, data0327).then(function (response) { if (response) { var resData = Restangular.stripRestangular(response); if (resData) { if ( $scope.fileUploader != null && $scope.fileUploader.getNotUploadedItems().length > 0 && resData.id ) { $scope.fileUploader.onBeforeUploadItem = function (item) { angular.extend(item.headers, $rootScope.getSession()); item.url = api_bpm_domain .uploadAttachment(resData.id, "00000", $rootScope.user.id) .getRequestedUrl(); item.formData.push({ fileName: item.file.name, }); //console.log(); }; $scope.fileUploader.uploadAll(); } } SweetAlert.swal( { title: "提交成功!", type: "success", confirmButtonColor: "#007AFF", }, function () { $state.go($scope.formData.cancelUrl); } ); } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55", }); } $scope.ldloading[style.replace("-", "_")] = false; }); event.preventDefault(); } else if (vm.model.saveAgain) { var toData = { incident: vm.model.incident, }; api_user_data.updData("incident", toData).then(function (response) { if (response) { var resData = Restangular.stripRestangular(response); SweetAlert.swal( { title: "提交成功!", type: "success", confirmButtonColor: "#007AFF", }, function () { $state.go($scope.formData.cancelUrl); } ); } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55", }); } $scope.ldloading[style.replace("-", "_")] = false; }); event.preventDefault(); } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55", }); } }; // 巡检生成事件 $scope.inspectionToIncident = function () { var userData = { idx: 0, sum: 10, user: { name: loginUser.name, engineer: 0, }, }; api_user_data.fetchDataList("user", userData).then(function (res) { console.log(res); var toUser = {}; if (res.list.length > 0) { toUser = res.list[0]; } else { toUser = loginUser; } console.log(vm); var incidentDescription = ""; console.log($stateParams.formUiEdit); if ($stateParams.formUiEdit == "inspection_LinHu_confirm") { var fields = vm.fields .filter((v) => { v.key = (v.key || "").toString(); return v.key.indexOf("sdCheckEnable") > -1; }) .map((v) => ({ key: v.key, name: v.templateOptions.label, value: vm.model[v.key], })); fields.forEach(v=>{ if (vm.model[v.key]) { incidentDescription = incidentDescription.concat(v.name); } }) if (vm.model.descriptionTextarea) { incidentDescription = incidentDescription.concat( " " + "整改意见:" + vm.model.descriptionTextarea ); } } // console.log(incidentDescription) var bxr = JSON.parse(localStorage.getItem("login_requester")); var formdata = { model: { // 'isInspection': true, // 'start_code':'assignment', // 'isHandlerUser':false, incident: { requester: bxr, area: bxr.place.area, place: bxr.place, houseNumber: bxr.houseNumber, contacts: bxr.name, contactsInformation: bxr.phone, // 'category': data.wxIncidentClassifyDTO.category, description: incidentDescription, source: { id: 1552, }, // 'handlingPersonnelUser': loginUser,//2020年4月27日22:29:02 // 'sourceType': data.incident.sourceType, // 'fileUrl': data.incident.fileUrl }, // 'requestershow': toUser,//2020年4月27日22:29:15 // 'flow': data.incident.id // 'assignee': loginUser.id//2020年4月27日22:29:25 }, }; // console.log(formdata,toUser,'1111'); console.log(formdata, "1111"); // return; $state.go("app.incident.chart", { model: JSON.stringify(formdata), }); }); // var formdata = { // model:$rootScope.login_requester // }; // console.log(formdata,'00000') // return; // $state.go("app.incident.chart", { // 'model': JSON.stringify(formdata) // }); event.preventDefault(); }; // console.log(vm); // 创建事件seimin vm.submit = function (data, style) { console.log(vm, 22222); // return; if (vm.model.handler_code == undefined) { vm.model.handler_code = "resolve"; } if ( vm.model.change && vm.model.change.requestingPerson && vm.model.change.requestingPerson.menu ) { delete vm.model.change.requestingPerson.menu; } // var pdKey = $stateParams.pdKey; if (vm.form.$valid) { if (data.incident && data.incident.synergetic) { console.log(data.incident.synergetic); var synergetic = []; for (var i = 0; i < data.incident.synergetic.length; i++) { synergetic.push({ id: data.incident.synergetic[i], }); } data.incident.synergetic = synergetic; vm.model.incident.synergetic = synergetic; } $scope.ldloading[style.replace("-", "_")] = true; var startsub = true; if (pdKey == "bpm_incident") { angular.forEach(vm.fields, function (item) { angular.forEach(item.fields, function (index) { if (index.templateOptions.required && !index.hide) { if (index.model) { if(Object.prototype.toString.call(index.model[index.key]).slice(8, -1).toLowerCase() === 'object' && !index.model[index.key].id){ startsub = false; $scope.ldloading.expand_right = false; console.log(vm); SweetAlert.swal({ title: index.templateOptions.label + "未填", text: "请填写此项!", type: "error", confirmButtonColor: "#DD6B55", }); }else if ( angular.isDefined(index.model[index.key]) && index.model[index.key] != null ) { if ( index.model[index.key].id && index.model[index.key].id == "" ) { startsub = false; $scope.ldloading.expand_right = false; SweetAlert.swal({ title: index.templateOptions.label + "未填", text: "请填写此项!", type: "error", confirmButtonColor: "#DD6B55", }); } else { } } else { startsub = false; $scope.ldloading.expand_right = false; console.log(vm); SweetAlert.swal({ title: index.templateOptions.label + "未填", text: "请填写此项!", type: "error", confirmButtonColor: "#DD6B55", }); } } else { if ( data[index.key] && data[index.key] != "" && data[index.key] != null ) { } else { startsub = false; $scope.ldloading.expand_right = false; SweetAlert.swal({ title: index.templateOptions.label + "未填", text: "请填写此项!", type: "error", confirmButtonColor: "#DD6B55", }); } } } }); }); // if (vm.model.requestershow && vm.model.requestershow != null && vm.model.requestershow != '') {} else { // startsub = false; // $scope.ldloading.expand_right = false; // SweetAlert.swal({ // title: '保修人未填', // text: "请填写此项!", // type: "error", // confirmButtonColor: "#DD6B55" // }); // } // if (vm.model.incident.category && vm.model.incident.category != null && vm.model.incident.category != '') { // } else { // startsub = false; // $scope.ldloading.expand_right = false; // SweetAlert.swal({ // title: '故障现象未填', // text: "请填写此项!", // type: "error", // confirmButtonColor: "#DD6B55" // }); // } } if (startsub) { $scope.ldloading[style.replace("-", "_")] = true; // if($scope.ldloading[style.replace('-', '_')] == true){$scope.lng=true} // console.log("vm.options:"+ JSON.stringify(vm.options)); vm.options.updateInitialValue(); // console.log("dfjkasdhfkhskjf ") var _ = window._; vm.model = (function filter(obj) { var dateTransKeys = []; var filtered = _.pick(obj, function (v, k, obj) { if (_.isDate(v)) { dateTransKeys.push(k); } return ( angular.isDefined(v) && v !== null && (angular.isArray(v) ? v.length > 0 : true) && (_.isPlainObject(v) ? !_.isEmpty(v) : true) ); }); return _.cloneDeep(filtered, function (v, index, object) { if (angular.isArray(dateTransKeys) && dateTransKeys.length > 0) { angular.forEach(dateTransKeys, function (item) { v[item] = moment(v[item]).format("YYYY-MM-DD HH:mm:ss"); }); dateTransKey = []; return v; } return !_.isEmpty(filtered) && v !== filtered && _.isPlainObject(v) ? filter(v) : undefined; }); })(vm.model); if (pdKey != "") { if ($scope.oprcode == "save") { //保存 api_bpm_domain.save(taskId, vm.model).then(function (response) { if (response) { var resData = Restangular.stripRestangular(response); SweetAlert.swal( { title: "保存成功!", confirmButtonColor: "#007AFF", }, function () { $state.go($scope.formData.cancelUri); } ); // if(resData.status){ // resData // } } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55", }); } $scope.ldloading[style.replace("-", "_")] = false; }); } else { console.log($scope.formData.url, "zzzz"); var integralMechanism = sessionStorage.getItem('integralMechanism'); switch ($scope.formData.url) { case "start": vm.model["initUser"] = $rootScope.user.id; if (vm.model["assignee"] || vm.model["candidateGroups"]) { } else { vm.model["assignee"] = $rootScope.user.id; } if ( vm.model["candidateGroups"] && vm.model.candidateGroups.id ) { vm.model.candidateGroups = vm.model.candidateGroups.id; } if (pdKey == "bpm_service_request") { delete vm.model.serviceCatalogueProcessActual.houseNumber; angular.extend(vm.model.serviceCatalogueProcessActual, { category: { id: $stateParams.userId, }, }); } if (vm.model.schedule && vm.model.schedule.initUser) { delete vm.model.schedule.initUser.menu; } if ( vm.model.isHandlerUser == "true" || vm.model.isHandlerUser == true ) { delete vm.model.candidateGroups; } if (vm.model.start_code == "close") { // 直接处理 vm.model.incident.handlingPersonnelUser = vm.model.incident.acceptUser; delete vm.model.incident.handlerUser; delete vm.model.candidateGroups; } else if (vm.model.start_code == "assignment") { // 派单 delete vm.model.incident.handlingPersonnelUser; } if ($stateParams.processInstanceId && vm.model.isZanCun) { $scope.jry_processInstanceId = $stateParams.processInstanceId; } if ($scope.jry_processInstanceId) { vm.model["save_fileId"] = $scope.jry_processInstanceId; } //事件暂存判断 if (vm.model.saveAgain) { if ( vm.model.directClose == "1" || vm.model.directClose == true ) { vm.model.start_code = "assignment"; vm.model.temporary_code = "assignment"; } else { vm.model.start_code = "close"; vm.model.temporary_code = "close"; } if ( vm.model.isHandlerUser == "true" || vm.model.isHandlerUser == true ) { delete vm.model.candidateGroups; } } //处理请求数据0327 var data0327 = JSON.parse(JSON.stringify(vm.model)); delete data0327.repairType; if (data0327.start_code == "close") { data0327.incident.directProcess = 1; } console.log(vm); if (angular.isDefined($stateParams.model) && $stateParams.model != "") { var paramsModel = JSON.parse($stateParams.model) //来电-传话机id if (paramsModel.model.incident.sockid) { data0327.incident.callID = paramsModel.model.incident.sockid; } } // --------------------------- start---------------------------------------- // 积分机制,直接处理 if(vm.model.start_code == "close"&&(integralMechanism == 1 || (integralMechanism == 2 && $rootScope.user.userType.value == 2))){ $modal.open({ templateUrl: 'assets/views/incident/tpl/toIntegralMechanism.tpl.html', controller: function ($scope, $modalInstance, api_bpm_domain, incidentData, currentUserId, Alert, api_user_data,api_wechatfile,scope,api_bpm_data) { console.log(incidentData,currentUserId); $scope.flag = false; $scope.complexityConfirm = {complexity:null,updateReason:''}; $scope.complexityFn = function(category){ if(category.complexity){ return category.complexity.value; }else if(category.parent){ return $scope.complexityFn(category.parent); }else{ return $scope.list[0]?$scope.list[0].value:1; } } $scope.list = []; api_wechatfile.getDictionary({"key":"incident_complexity","type":"list"}).then(function(res){ $scope.list = res; if(incidentData.category && incidentData.category.id){ api_bpm_data.fetchData("incidentCategory",incidentData.category.id).then(function(result){ if(result.status == 200){ $scope.complexity = $scope.complexityFn(result.data); $scope.complexityConfirm.complexity = $scope.list.find(v=>v.value == $scope.complexity); } }) } }) $scope.onChangeComplexity = function(item){ } $scope.ok = function () { if (!$scope.complexityConfirm.complexity){ Alert.swal({ title: "操作失败", text: "请选择工时!", type: "error" }); return; } if ($scope.complexityConfirm.complexity.value != $scope.complexity&&!$scope.complexityConfirm.updateReason.trim()){ Alert.swal({ title: "操作失败", text: "请填写升级原因!", type: "error" }); return; } $modalInstance.close('success'); handlerStart(); scope.complexity = $scope.complexity; scope.complexityConfirm = $scope.complexityConfirm; // 暂存--后面直接处理后调用积分接口 } $scope.cancel = function () { scope.ldloading.expand_right = false; $modalInstance.dismiss('cancel'); } }, size: 'sm', resolve: { scope: function () { return $scope; }, api_bpm: function () { return api_bpm; }, incidentData: function () { return data0327.incident; }, currentUserId: function () { return loginUser.id; }, Alert: function () { return SweetAlert; }, api_user_data: function () { return api_user_data; }, api_wechatfile: function () { return api_wechatfile; } } }); }else{ handlerStart(); } // -------------------------------end------------------------------------ function handlerStart(){ api_bpm_domain .start(pdKey, data0327) .then(function (response) { if (response) { var resData = Restangular.stripRestangular(response); if (resData) { if (resData) { if ( $scope.fileUploader != null && $scope.fileUploader.getNotUploadedItems().length > 0 && resData.id ) { $scope.fileUploader.onBeforeUploadItem = function (item) { angular.extend( item.headers, $rootScope.getSession() ); item.url = api_bpm_domain .uploadAttachment( resData.id, "00000", $rootScope.user.id ) .getRequestedUrl(); item.formData.push({ fileName: item.file.name, }); //console.log(); }; $scope.fileUploader.uploadAll(); } } } if(vm.model.start_code == "close"&&(integralMechanism == 1 || (integralMechanism == 2 && $rootScope.user.userType.value == 2))){ api_wechatfile.getDictionary({"key":"incident_integral_state","type":"list"}).then(function(res){ var auditState = res.find(v=>v.value == 0); var postData = { incidentIntegral: { incidentId:resData.bussId, auditState:auditState, handlerUser:$rootScope.user.id, handlerUserName:$rootScope.user.name, sourceScore:$scope.complexity, currentScore:$scope.complexityConfirm.complexity.value, updateReason:$scope.complexityConfirm.updateReason.trim() || undefined, } } console.log(postData) api_bpm_data.addData('incidentIntegral', postData).then(function (response) { console.log(response) if (response.status == 200) { SweetAlert.swal( { title: "提交成功!", type: "success", confirmButtonColor: "#007AFF", }, function () { if ( vm.model.incident && vm.model.incident.callID && vm.model.incident.callID != "" ) { $rootScope.app.layout.isSidebarClosed = false; if ($scope.login && !$rootScope.busy) { $rootScope.setidle(); } } $state.go($scope.formData.cancelUrl); } ); } else { Alert.swal({ title: "操作失败", text: "操作失败, 请稍后再试!", type: "error" }); } }); }) }else{ SweetAlert.swal( { title: "提交成功!", type: "success", confirmButtonColor: "#007AFF", }, function () { if ( vm.model.incident && vm.model.incident.callID && vm.model.incident.callID != "" ) { $rootScope.app.layout.isSidebarClosed = false; if ($scope.login && !$rootScope.busy) { $rootScope.setidle(); } } $state.go($scope.formData.cancelUrl); } ); } } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55", }); } $scope.ldloading[style.replace("-", "_")] = false; }); } break; case "complete": //api_bpm_domain.complete(pdKey, userId, vm.model).then(function(response){ //console.log("complete taskId::"+$stateParams.taskId); if ( $scope.formData.name == "transferform" && vm.model.ishandlers && !vm.model.incident.handlerUser ) { SweetAlert.swal({ title: "处理人未填", text: "请填写此项!", type: "error", confirmButtonColor: "#DD6B55", }); return; } console.log(vm); // 积分机制,事件状态是“处理中” if($scope.formData.name === 'handlerform'&&(integralMechanism == 1 || (integralMechanism == 2 && $rootScope.user.userType.value == 2))){ $modal.open({ templateUrl: 'assets/views/incident/tpl/toIntegralMechanism.tpl.html', controller: function ($scope, $modalInstance, api_bpm_domain, incidentData, currentUserId, Alert, api_user_data,api_wechatfile,scope,api_bpm_data) { console.log(incidentData,currentUserId); $scope.flag = true; $scope.complexityConfirm = {complexity:null,updateReason:''}; $scope.complexityFn = function(category){ if(category.complexity){ return category.complexity.value; }else if(category.parent){ return $scope.complexityFn(category.parent); }else{ return $scope.list[0]?$scope.list[0].value:1; } } $scope.list = []; api_wechatfile.getDictionary({"key":"incident_complexity","type":"list"}).then(function(res){ $scope.list = res; if(incidentData.category && incidentData.category.id){ api_bpm_data.fetchData("incidentCategory",incidentData.category.id).then(function(result){ if(result.status == 200){ $scope.complexity = $scope.complexityFn(result.data); $scope.complexityConfirm.complexity = $scope.list.find(v=>v.value == $scope.complexity); } }) } }) $scope.onChangeComplexity = function(item){ if($scope.complexityConfirm.complexity.value == $scope.complexity){ $scope.complexityConfirm.updateReason = ''; } } $scope.ok = function () { if (!$scope.complexityConfirm.complexity){ Alert.swal({ title: "操作失败", text: "请选择工时!", type: "error" }); return; } if ($scope.complexityConfirm.complexity.value != $scope.complexity&&!$scope.complexityConfirm.updateReason.trim()){ Alert.swal({ title: "操作失败", text: "请填写升级原因!", type: "error" }); return; } api_wechatfile.getDictionary({"key":"incident_integral_state","type":"list"}).then(function(res){ // var auditState = $scope.complexityConfirm.complexity.value == $scope.complexity?res.find(v=>v.value == 1):res.find(v=>v.value == 0); var auditState = res.find(v=>v.value == 0); var postData = { incidentIntegral: { incidentId:incidentData.id, auditState:auditState, handlerUser:$rootScope.user.id, handlerUserName:$rootScope.user.name, sourceScore:$scope.complexity, currentScore:$scope.complexityConfirm.complexity.value, updateReason:$scope.complexityConfirm.updateReason.trim() || undefined, } } console.log(postData) api_bpm_data.addData('incidentIntegral', postData).then(function (response) { console.log(response) if (response.status == 200) { $modalInstance.close('success'); handlerLogFn(); } else { Alert.swal({ title: "操作失败", text: "操作失败, 请稍后再试!", type: "error" }); } }); }) } $scope.cancel = function () { scope.ldloading.expand_right = false; $modalInstance.dismiss('cancel'); } }, size: 'sm', resolve: { scope: function () { return $scope; }, api_bpm: function () { return api_bpm; }, incidentData: function () { return $scope.formData.model.incident; }, currentUserId: function () { return loginUser.id; }, Alert: function () { return SweetAlert; }, api_user_data: function () { return api_user_data; }, api_wechatfile: function () { return api_wechatfile; } } }); }else{ handlerLogFn(); } function handlerLogFn(){ //维修记录 // 维修记录不为空并且事件是处理中状态 if (vm.model.handlerLog && vm.model.handlerLog.trim() && vm.model.incident.state.value == 'handler') { api_bpm_data.addData('operationLog', { operationLog: { opType: 'handlerLog', opValue: vm.model.handlerLog, extra1: vm.model.incident.id } }).then(function (result1) { baseHandler(); }) } else { if($stateParams.formUiEdit === 'inspection_LinHu_confirm'){ //巡检计划 if(vm.model.inspectionProcessActual.group&&vm.model.inspectionProcessActual.group.id){ api_bpm.assign({ids:$stateParams.dataId.toString(),userId:$rootScope.user.id}).then(function (response) { if (response.status == 200) { baseHandler(); } else { Alert.swal({ title: "操作失败", text: "操作失败, 请稍后再试!", type: "error" }); } }); }else{ baseHandler(); } }else{ baseHandler(); } } } // return; function baseHandler() { api_bpm_domain .complete($stateParams.taskId, userId, vm.model) .then(function (response) { if (response) { var resData = Restangular.stripRestangular(response); SweetAlert.swal( { title: "提交成功!", type: "success", confirmButtonColor: "#007AFF", }, function () { if ( $scope.fileUploader != null && $scope.fileUploader.getNotUploadedItems().length > 0 ) { console.log(vm); if (vm.model.incident) { // $scope.fileUploader.onBeforeUploadItem = function (item) { // angular.extend(item.headers, $rootScope.getSession()); // item.url = api_bpm_domain.uploadAttachmentJryModel("incident", vm.model.problem.id, '00000', $rootScope.user.id).getRequestedUrl(); // item.formData.push({ // 'fileName': item.file.name // }); // }; // $scope.fileUploader.uploadAll(); $scope.fileUploader.onBeforeUploadItem = function (item) { angular.extend( item.headers, $rootScope.getSession() ); item.url = api_bpm_domain .uploadAttachment( vm.model.incident.processInstanceId, "00000", $rootScope.user.id ) .getRequestedUrl(); item.formData.push({ fileName: item.file.name, }); //console.log(); }; $scope.fileUploader.uploadAll(); } else if (vm.model.problem) { $scope.fileUploader.onBeforeUploadItem = function (item) { angular.extend( item.headers, $rootScope.getSession() ); item.url = api_bpm_domain .uploadAttachmentJryModel( "problem", vm.model.problem.id, "00000", $rootScope.user.id ) .getRequestedUrl(); item.formData.push({ fileName: item.file.name, }); }; $scope.fileUploader.uploadAll(); } else if (vm.model.change) { }else if(vm.model.inspectionProcessActual){ //巡检图片上传yeye $scope.fileUploader.onBeforeUploadItem = function (item) { angular.extend( item.headers, $rootScope.getSession() ); item.url = api_bpm_domain1 .uploadAttachment(vm.model.inspectionProcessActual.processInstanceId) .getRequestedUrl(); item.formData.push({ fileName: item.file.name, }); //console.log(); }; $scope.fileUploader.uploadAll(); } } $state.go($scope.formData.cancelUrl); } ); } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55", }); } $scope.ldloading[style.replace("-", "_")] = false; }); } break; case "back": $state.go($scope.formData.cancelUrl); break; default: $scope.ldloading[style.replace("-", "_")] = false; break; } } // var submitFunc = api_bpm_domain[$scope.formData.url] // if(anuglar.isFunction(submitFunc)){ // submitFunc.apply(null, pdKey) // } } } } else { // console.log(data) // angular.forEach(vm.form.$error.required, function(item){ // var i=(item.$name).substring(item.$name.length-2) var i = Number(vm.form.$error.required[0].$name.split("_")[4]); // for(var i=0;i>>");//console.log(responseData); var vmForm = Restangular.stripRestangular(responseData); if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); decodeVMForm(vmForm); } } }); } else if ( angular.isDefined($stateParams.pdKey) && $stateParams.pdKey == "bpm_service_request" ) { api_configure_form .renderForm($stateParams.formUiEdit, userId, processInstanceId) .then(function (responseData) { if (responseData) { //console.log("responseData>>>");//console.log(responseData); var vmForm = Restangular.stripRestangular(responseData); if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); decodeVMForm(vmForm); } } }); } else { api_bpm_domain .taskformkey($stateParams.taskId) .then(function (response) { if (response) { var myData = Restangular.stripRestangular(response); //console.log("myData>>>");console.log(myData); api_configure_form .renderForm(myData.data, userId, processInstanceId, itemId) .then(function (responseData) { if (responseData) { //console.log("responseData>>>");//console.log(responseData); var vmForm = Restangular.stripRestangular(responseData); if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); decodeVMForm(vmForm); console.log(vmForm, 111111); // $scope.model.selecthouseNumber = vmForm.model.incident.place; console.log($scope, "今天"); //2020年4月24日11:40:55 } } }); } }); } } else { // create process instance if (pdKey != "") { //for process if (pdKey == "bpm_service_request") { api_configure_form .renderForm($stateParams.formUiStart, userId) .then(function (responseData) { if (responseData) { var vmForm = Restangular.stripRestangular(responseData); if (vmForm) { decodeVMForm(vmForm); } } }); } else { api_bpm_domain.startformkey(pdKey).then(function (response) { if (response) { var myData = Restangular.stripRestangular(response); //myData.data = "arrangeform"; api_configure_form .renderForm(myData.data, userId) .then(function (responseData) { if (responseData) { var vmForm = Restangular.stripRestangular(responseData); if (vmForm) { decodeVMForm(vmForm); } } }); } }); } } else { //for form //TODO //测试数据 开始 var testJson = { fields: [ { fields: [ { className: "col-xs-12", noFormControl: true, key: "formtitle", templateOptions: { readOnly: false, placeholder: "新建事件单", hidden: false, label: "事件工单", required: false, }, type: "ui-title", }, ], }, { fields: [ { key: "selectUser", type: "ui-deptinformation", className: "col-xs-12", templateOptions: { label: "请求人信息", modalTitle: "请求人列表", fetchItems: function (filterData, APIService) { return APIService.fetchDataList("requester", filterData); }, Restangular: Restangular, ApiService: api_user_data, // onClick:function(val, options, field, event , model){ // console.log(options); // } }, }, ], }, { fields: [ { key: "first", type: "ui-workernumber", className: "col-xs-12", templateOptions: { type: "input", label: "事件单号", pkey: "name", }, }, ], }, { fields: [ { type: "ui-header", key: "title", className: "col-xs-12", templateOptions: { label: "报修人", pkey: "change", }, }, { type: "ui-input", key: "title", className: "col-xs-4", templateOptions: { label: "报修人", pkey: "change", }, }, { type: "ui-input", key: "title", className: "col-xs-4", templateOptions: { label: "联系人", pkey: "change", }, }, { type: "ui-input", key: "title", className: "col-xs-4", templateOptions: { label: "联系电话", pkey: "change", }, }, ], }, { fields: [ { type: "ui-header", key: "title1", className: "col-xs-12", templateOptions: { label: "报修人", pkey: "change", }, }, { type: "ui-input", key: "title2", className: "col-xs-4", templateOptions: { label: "报修人", pkey: "change", }, }, { type: "ui-input", key: "title3", className: "col-xs-4", templateOptions: { label: "联系人", pkey: "change", }, }, { type: "ui-input", key: "title4", className: "col-xs-4", templateOptions: { label: "联系电话", pkey: "change", }, }, ], }, ], model: [ { username: "robin lau", password: "123456", chkme: false, start_code: 0, formtitle: "Hey!I am title value!", name: { first: "robin", last: "lau", }, multiselectItem: [], //date:"2015-09-15 00:00:00" }, ], // } }; setTimeout(function () { decodeVMForm(testJson); $scope.$apply(); }, 500); //测试数据结束 } } //console.log("end decode"); }, ]);