app.controller('faqCtrl', ['$scope', '$http', '$timeout', 'uiGridConstants', 'i18nService', 'toaster', 'FileUploader', function ($scope, $http, $timeout, uiGridConstants, i18nService, toaster, FileUploader) { i18nService.setCurrentLang("zh-cn"); $scope.gridOptions = { data: 'myData', showGridFooter: true, //是否显示grid footer //-------- 分页属性 ---------------- paginationPageSizes: [10, 20, 50, 100], //每页显示个数可选项 paginationCurrentPage: 1, //当前页码 paginationPageSize: 10, //每页显示个数 totalItems: 0,// 总数量 useExternalPagination: true,//是否使用分页按钮 //过滤 enableFiltering: true, columnDefs: [], //---------------api--------------------- onRegisterApi: function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) { if ($scope.setPagingData) { $scope.getPagedDataAsync(newPage, pageSize); } }); } }; //查询条件 var condition = $scope.condition = { searchKey: "" }; function setColumnDefs() { $scope.gridOptions.columnDefs = [ {field: 'question', displayName: '问题'}, {field: 'answer', displayName: '答案'}, {field: 'devType', displayName: '设备类型'}, ]; var fields = $scope.gridOptions.columnDefs; for (var index in fields) { var item = fields[index]; if (item && item['minWidth'] == null) { item['minWidth'] = 100; } } } function initDataGrid() { //首次加载表格 $scope.getPagedDataAsync($scope.gridOptions.paginationCurrentPage, $scope.gridOptions.paginationPageSize); } $scope.setPagingData = function (data, curPage, pageSize) { var pagedData = data.data.dataList; $scope.myData = pagedData; $scope.gridOptions.totalItems = data.data.total; }; $scope.getPagedDataAsync = function (curPage, pageSize) { var params = { pageSize: pageSize, pageIndex: curPage }; if (condition.searchKey != "") { params.searchKey = condition.searchKey } $http.get('/manager/getFAQDetailList', { params: params }).then(function (data) { $scope.setPagingData(data.data, curPage, pageSize); }).catch(function (data) { toaster.pop("error", "提示", "获取数据失败"); }); }; setColumnDefs(); initDataGrid(); /***********************初始化设备类型*********************************/ $scope.devTypeList = []; $http.get('/device/getDevTypeList', { params: {pageSize: 1000, pageIndex: 1} }).then(function (data) { data = data.data $scope.devTypeList = data.data.dataList; }).catch(function (data) { toaster.pop("error", "提示", "获取设备类型失败"); }); //问题类型:全部、经销商、用户、代理商 $scope.targetList = [ {text: "终端用户", value: "myuser"}, {text: "经销商", value: "dealer"}, {text: "代理商", value: "agent"}, ]; //事件 $scope.event = { search: function () { $scope.getPagedDataAsync(1, $scope.gridOptions.paginationPageSize); } }; //编辑弹窗需要的数据 $scope.dialogName = ""; $scope.dialogData = { images: [], videos: [], }; //添加 $scope.add = function () { //重置表单状态 $scope.dataForm.$setPristine(); $scope.dataForm.$setUntouched(); //重置上传控件 closeUploader(); $scope.dialogName = "添加问答"; $scope.dialogData = { question: "", answer: "", images: [], videos: [], }; $("#dataPanel").modal(); }; //编辑 $scope.edit = function () { //重置表单状态 $scope.dataForm.$setPristine(); $scope.dataForm.$setUntouched(); //重置上传控件 closeUploader(); $scope.dialogName = "编辑公告"; var rows = $scope.gridApi.selection.getSelectedRows(); if (rows.length == 0) { toaster.pop("info", "提示", "请选择数据!"); return; } if (rows.length > 1) { toaster.pop("info", "提示", "只能选中编辑一条数据"); return; } var item = rows[0]; var dialogData = $scope.dialogData = $.extend(true, {}, item);//深度克隆 if (dialogData.images == null) { dialogData.images = []; } if (dialogData.videos == null) { dialogData.videos = []; } $("#dataPanel").modal(); }; //删除 $scope.deleteData = function () { var rows = $scope.gridApi.selection.getSelectedRows(); if (rows.length == 0) { toaster.pop("info", "提示", "请选择数据!"); return; } var ids = []; for (var i = 0; i < rows.length; i++) { ids.push(rows[i].id); } $.confirm({ content: '确定删除?', buttons: { ok: { btnClass: 'btn-red', action: function () { $http({ method: 'POST', url: '/manager/deleteFAQ', data: {ids: ids} }).then(function (response) { initDataGrid(); }, function (response) { toaster.pop("error", "提示", "删除失败!"); }); } }, } }); }; //提交表单保存 $scope.saveData = function () { //表单未校验通过不能提交 if ($scope.dataForm.$invalid) { return; } var url = ""; if ($scope.dialogData.id == null) { url = "/manager/addFAQ"; } else { url = "/manager/editFAQ"; } $http({ method: 'POST', url: url, data: $scope.dialogData }).then(function (response) { $('#dataPanel').modal('hide');//弹窗消失 $scope.getPagedDataAsync($scope.gridOptions.paginationCurrentPage, $scope.gridOptions.paginationPageSize); }, function (response) { toaster.pop("error", "提示", "保存失败!"); }); }; //事件绑定 $timeout(function () { $("#fileUpload").on("change", function () { var objUrl = getObjectURL(this.files[0]); if (objUrl) { $("#previewImg").attr("src", objUrl); } }); $("#fileUploadValue").on("focus", function () { $(this).blur(); }); $("#fileUpload2").on("change", function () { var objUrl = getObjectURL(this.files[0]); if (objUrl) { $("#previewVideo").attr("src", objUrl); } }); $("#fileUploadValue2").on("focus", function () { $(this).blur(); }) }); $scope.removeImgPreview = function () { $("#fileUpload").val(""); $("#previewImg").attr("src", ""); imageUploader.clearQueue() }; $scope.removeVideoPreview = function () { $("#fileUpload2").val(""); $("#previewVideo").attr("src", ""); videoUploader.clearQueue(); }; //建立一個可存取到該file的url function getObjectURL(file) { var url = null; if (window.createObjectURL != undefined) { // basic url = window.createObjectURL(file); } else if (window.URL != undefined) { // mozilla(firefox) url = window.URL.createObjectURL(file); } else if (window.webkitURL != undefined) { // webkit or chrome url = window.webkitURL.createObjectURL(file); } return url; } //图片提交控件 var imageUploader = $scope.imageUploader = new FileUploader({ url: '/common/upload?type=faqImg', queueLimit: 1, //文件个数 removeAfterUpload: true //上传后删除文件 }); //注册上传事件 imageUploader.onCompleteItem = function (fileItem, response, status, headers) { if (response.result) { toaster.pop("success", "提示", "上传成功!"); $scope.dialogData.images.unshift(response.payload); $scope.dialogData.answer = $scope.dialogData.answer + '
'; } else { toaster.pop("error", "失败", response.description); } }; imageUploader.onErrorItem = function (fileItem, response, status, headers) { toaster.pop("error", "提示", "上传失败,请重试"); }; //视频提交控件 var videoUploader = $scope.videoUploader = new FileUploader({ url: '/common/upload?type=faqVideo', queueLimit: 1, //文件个数 removeAfterUpload: true //上传后删除文件 }); //注册上传事件 videoUploader.onCompleteItem = function (fileItem, response, status, headers) { if (response.result) { toaster.pop("success", "提示", "上传成功!"); $scope.dialogData.videos.unshift(response.payload); $scope.dialogData.answer = $scope.dialogData.answer + '
播放视频'; } else { toaster.pop("error", "失败", response.description); } }; videoUploader.onErrorItem = function (fileItem, response, status, headers) { toaster.pop("error", "提示", "上传失败,请重试"); }; /*关闭上传框窗口后恢复上传框初始状态*/ function closeUploader() { $("#fileUpload").val(""); $("#fileUpload2").val(""); $("#previewImg").attr("src", ""); $("#previewVideo").attr("src", ""); imageUploader.clearQueue(); imageUploader.cancelAll(); videoUploader.clearQueue(); videoUploader.cancelAll(); } /*图片移除*/ $scope.removeImg = function (index) { var dialogData = $scope.dialogData; if (dialogData.images && dialogData.images.length > 0) { dialogData.images.splice(index, 1); } }; /*视频移除*/ $scope.removeVideo = function (index) { var dialogData = $scope.dialogData; if (dialogData.videos && dialogData.videos.length > 0) { dialogData.videos.splice(index, 1); } } }]);