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({ 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]; $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]; $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]; $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]; $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.searchstate = JSON.parse(sessionStorage.getItem("searchincident")).searchType; // $scope.othcode = {}; $scope.parameters = {}; var fildata = { "assignee": $rootScope.user.id, "candidateGroups": $rootScope.user.group[0].id, "searchType": "todo", idx: 0, sum: 10 } // sessionStorage.removeItem("searchincident"); $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 }).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]; $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" }; 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', function ($scope, $rootScope, $modal, SweetAlert, api_bpm_data, api_solution, $aside, api_zsk, api_bpm_domain) { console.log($scope) $scope.selection = { id: '' }; //认证计费数据获取 $scope.sumInfo = {}; function getSumInfo() { api_bpm_data.sumInfo($scope.model.incident.account).then(function (data) { console.log(data) if (data) { $scope.sumInfo = data.data||{}; } }) } 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]; $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 } 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 } 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() {}, 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") { } } }) }) } 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; 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.mphone && selectedItem.mphone != null && selectedItem.mphone != "") { scope.$parent.$parent.$parent.model.incident.contactsInformation = selectedItem.mphone; } 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); // } } }) } }); }, 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', function ($scope, $rootScope, api_bpm_domain) { // $scope.myFilter = function(item) { // return !$scope.search || $select.selected[to.labelProp || 'name'] == $scope.search; // } // console.log($scope,'风浪') 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($scope.options.templateOptions.pkey == "incident.handlerUser"){ if($scope.$parent.$parent.$parent.model.incident.handlerUser){ if($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-multiselect', extends: 'select', templateUrl: 'assets/views/customform/tpl/ui-multiselect.html', defaultOptions: function (options) { return { templateOptions: { refresh: function () { }, refreshDelay: 1000 } }; }, controller: ['$scope', function ($scope) { $scope.model[$scope.options.key] = []; }] }); //下拉多选框灵活组件 formlyConfigProvider.setType({ name: 'ui-multiselectplus', extends: 'multiCheckbox', templateUrl: 'assets/views/customform/tpl/ui-multiselectplus.html', defaultOptions: function (options, $scope) { 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); } if (options.templateOptions.modelreasondata) { postData = options.templateOptions.modelreasondata } process.customPOST(postData, options.templateOptions.optionsUrl).then(function (result) { // if (!options.templateOptions.options) { // options.templateOptions.options = []; // } // 过滤下拉列表已选择的值 var modelVal = $scope.model[$scope.options.key]; for (var i = 0; i < result.list.length; i++) { for (var j = 0; j < modelVal.length; j++) { if (result.list[i].id == modelVal[j].id) { result.list.splice(i, 1) } } } 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) { 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); var treedata = []; function convertListToTree(data, treeMap) { // console.log(data) 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); } } } 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); }); } 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).then(function (result) { 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++) { // 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', function ($scope, $rootScope, api_configure_form, api_bpm_domain) { $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) { // 巡检生成事件,默认派单 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', function ($scope) { // 巡检生成事件,默认派单 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) { return { templateOptions: { linkage: function () { }, }, }; }, 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: 'stateName', displayName: '状态', width: 80, enableFiltering: false }, { name: 'processUser.name', displayName: '处理人', width: 80, enableFiltering: false }, { name: 'startDate', displayName: '开始时间', width: 160, enableFiltering: false }, { name: 'overdueTime', displayName: '逾期时间', width: 160, enableFiltering: false }, ]; var defaultFilterData = { "idx": 0, "sum": 10 }; //分页控制 $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; if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } $scope.myData = []; angular.extend(filterData, { inspectionProcessActual: { "inspectionid": $scope.model.id } }) 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); }] }); //历史记录 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 } } } 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.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) { $scope.title = "新增报修人"; $scope.requester = {}; $scope.searchData = {}; $scope.onChangeadd = function (searchData) { $scope.searchKey = searchData.account; // $scope.searchDataadd = searchData; var requesdata = angular.copy(searchData) if (requesdata.mphone) { delete requesdata.mphone; } $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 = { 'requester': { 'searchKey': searchKey, }, idx: 0, sum: 10 }; } else { var filterData = { idx: 0, sum: 10 }; } api_user_data.fetchDataList('requester', 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.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.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.mphone) || $scope.requester.mphone == null || $scope.requester.mphone == "") { 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; } })//lmm 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.mphone && selectedItem.mphone != null && selectedItem.mphone != "") { options.model.contactsInformation = selectedItem.mphone; } 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.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('requester', { "idx": 0, "sum": 20, requester: { searchKey: selectedItem.account } }).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); // } } }) } }, 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, mphone: modeldata.requester.mphone, 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.mphone) { delete requesdata.mphone; } $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 = { 'requester': { 'searchKey': searchKey, }, idx: 0, sum: 10 }; } else { var filterData = { idx: 0, sum: 10 }; } api_user_data.fetchDataList('requester', 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.mphone && selectedItem.mphone != null && selectedItem.mphone != "") { options.model.contactsInformation = selectedItem.mphone; } 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', function ($scope, api_user_data, api_statistic) { $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]; $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: 'mphone', 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.mphone && selectedItem.mphone != null && selectedItem.mphone != "") { $scope.model.incident.contactsInformation = selectedItem.mphone; } 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.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.mphone; } } 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.mphone && searchData.mphone != null && searchData.mphone != "") { $scope.model.incident.contactsInformation = searchData.mphone; } 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]; $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; 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" }); } } $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, i18nService, $modalInstance, items, title, Restangular, APIService, onDataCallback, parentScope) { $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]; $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.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 filtersData = $scope.memoryfilterData; filtersData.idx = newPage - 1; filtersData.sum = pageSize; $scope.loadData(filtersData); //console.log(pageSize); // $scope.loadData({"idx":newPage-1,"sum":pageSize}); }); 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; } } }); $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.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: 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带搜索) 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, i18nService, $modalInstance, items, title, Restangular, APIService, onDataCallback, parentScope) { $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]; $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.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 filtersData = $scope.memoryfilterData; filtersData.idx = newPage - 1; filtersData.sum = pageSize; $scope.loadData(filtersData); //console.log(pageSize); // $scope.loadData({"idx":newPage-1,"sum":pageSize}); }); 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; } } }); $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) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = myData.list; }); }; $scope.title = title; $scope.loadData({ idx: 0, sum: 10, user: { roledata: { rolecode: "first-line support" }, 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: 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]; $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]; $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 }; 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]; $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', 'api_wechatfile', '$stateParams', function ($scope, api_wechatfile, $stateParams) { console.log($scope); $scope.fileUrls = []; if ($scope.model.wxFile) { api_wechatfile.listAttachment('wechatRequesterIncident', $scope.model.incident.id).then(function (res) { $scope.fileUrls = 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.fileUrls = res.data }) } if ($scope.model.flow) { api_wechatfile.listAttachment('wechatRequesterIncident', $scope.model.flow).then(function (res) { $scope.fileUrls = 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.showBigImg = false; $scope.showBigImgCli = function (data) { $scope.showBigImg = true; $scope.bigImgUrl = data } $scope.closeBigImg = function () { $scope.showBigImg = false } }] }); //图片展示 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) { 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 = $scope.imgs.splice(0, 3); 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, scope, $modalInstance) { $scope.title = title; $scope.imageurl = 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(.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 { $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', 'WechatRestangular', 'api_configure_form', 'api_bpm_domain', 'api_bpm_data', 'api_user_data', 'api_statistic', 'up_down_file', 'fileReader', function ($rootScope, $scope, $parse, $injector, $http, $q, $state, $stateParams, $modal, $timeout, $interval, SweetAlert, FileUploader, i18nService, Restangular, UserRestangular, BpmRestangular, WechatRestangular, api_configure_form, api_bpm_domain, api_bpm_data, api_user_data, api_statistic, up_down_file, fileReader) { //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 = ""; 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 (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, "requester": { "name": loginUser.name } } api_user_data.fetchDataList("requester", 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_confirm") { if (vm.model.wnCheckEnable) { incidentDescription = incidentDescription.concat(" 机房温度检查异常") } if (vm.model.sdCheckEnable) { incidentDescription = incidentDescription.concat(" 机房湿度检查异常") } if (vm.model.xfjCheckEnable) { incidentDescription = incidentDescription.concat(" 新风机检查异常") } if (vm.model.lsCheckEnable) { incidentDescription = incidentDescription.concat(" 漏水检查异常") } if (vm.model.xfCheckEnable) { incidentDescription = incidentDescription.concat(" 消防检查异常") } if (vm.model.upsCheckEnable) { incidentDescription = incidentDescription.concat(" UPS供电检查异常") } if (vm.model.dcCheckEnable) { incidentDescription = incidentDescription.concat(" 电池连接检查异常") } if (vm.model.plCheckEnable) { incidentDescription = incidentDescription.concat(" 旁路供电检查异常") } if (vm.model.wjtdCheckEnable) { incidentDescription = incidentDescription.concat(" 外机通道检查异常") } if (vm.model.descriptionTextarea) { incidentDescription = incidentDescription.concat(" " + "备注:" + vm.model.descriptionTextarea) } } // console.log(incidentDescription) var bxr = JSON.parse(localStorage.getItem("login_requester"));//bababa 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.mphone, // '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 (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 + '未填2', 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') 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; // 增加地点的请求参数2020年4月24日10:44:36 // 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 // } // } console.log(vm); api_bpm_domain.start(pdKey, data0327).then(function (response) { // console.log("response="+JSON.stringify(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(); } } } 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; } 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) { } } $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"); } ]);