app.controller('devConfigCtrl', ['$scope', '$http', '$timeout', 'toaster', 'FileUploader', function ($scope, $http, $timeout, toaster, FileUploader) {
$scope.devTypeGridOptions = {
data: 'myData',
showGridFooter: true, //是否显示grid footer
//-------- 分页属性 ----------------
paginationPageSizes: [10, 20, 50, 100], //每页显示个数可选项
paginationCurrentPage: 1, //当前页码
paginationPageSize: 10, //每页显示个数
totalItems: 0,// 总数量
columnDefs: [],
//---------------api---------------------
onRegisterApi: function (gridApi) {
$scope.gridApi = gridApi;
gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
if ($scope.setPagingData) {
$scope.getPagedDataAsync(newPage, pageSize);
}
});
}
};
function setColumnDefs() {
$scope.devTypeGridOptions.columnDefs = [
{field: 'name', displayName: '设备名称',width: 120,},
{field: 'code', displayName: '类型编码'},
{field: 'majorDeviceType', displayName: '设备类型'},
{field: 'instructions', displayName: '使用说明',width: 180,},
{
field: 'unit', displayName: '计费单位', width: 80,
},
{
field: '___', displayName: '特性', width: 160,
cellTemplate: '
' +
'库存; ' +
'追加投币; ' +
'脉冲设备; ' +
'服务费模式; ' +
'
'
},
{
field: 'package', displayName: '默认套餐', minWidth: 380,
enableFiltering: false,
enableSorting: false,
enableHiding: false,//禁止在列选择器中隐藏
enableColumnMenu: false,// 是否显示列头部菜单按钮
cellTemplate: ''
}
];
var fields = $scope.devTypeGridOptions.columnDefs;
for (var index in fields) {
var item = fields[index];
if (item && item['minWidth'] == null) {
item['minWidth'] = 80;
}
}
}
$scope.setPagingData = function (data, curPage, pageSize) {
var pagedData = data.data.dataList;
$scope.myData = pagedData;
$scope.devTypeGridOptions.totalItems = data.data.total;
};
//刷新设备类型表格数据
$scope.getPagedDataAsync = function (curPage, pageSize) {
var params = {
pageSize: pageSize,
pageIndex: curPage
};
$http.get('/device/getDevTypeList', {
params: params
}).then(function (data) {
$scope.setPagingData(data.data, curPage, pageSize);
}).catch(function (data) {
toaster.pop("error", "提示", "获取列表失败");
});
};
function initDataGrid() {
//首次加载表格
$scope.getPagedDataAsync($scope.devTypeGridOptions.paginationCurrentPage, $scope.devTypeGridOptions.paginationPageSize);
}
setColumnDefs();
initDataGrid();
//编辑弹窗需要的数据
$scope.dialogName = "编辑设备类型";
$scope.dialogData = {};
//事件
$scope.ngEvent = {
};
//默认充值优惠信息
$scope.config = {
unitMap: ["分钟", "秒", "小时", "天", "次", "币", "度", "杯", "包", "升", "毫升", "斤", "公斤",],
//单路接口类型
ConnectorTypeList: [
{value: 1, name: "家用插座(模式2)",},
{value: 2, name: "交流接口插座(模式3,连接方式B)",},
{value: 3, name: "交流接口插头(带枪线,模式3,连接方式C)",},
{value: 4, name: "直流接口枪头(带枪线,模式4)",},
{value: 5, name: "无线充电座",},
{value: 6, name: "其他国家标准",},
],
};
//编辑设备类型
$scope.editDevType = function () {
//重置表单状态
$scope.devTypeForm.$setPristine();
$scope.devTypeForm.$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];
$scope.dialogData = $.extend(true, {
features: {
extraInfo: {},
billAsService: {
support: false,//是否有此特性
on: false,//开关
elecCharge: 0,
serviceCharge: 0
}
}
}, item);//需要深度克隆,因为套餐是数组
//选中数据后,初始化对应的图片上传控件
initUploader();
$("#devTypePanel").modal();
};
$scope.deletePackage = function (index) {
var packageItem = $scope.dialogData.package;
if (packageItem[index]) {
packageItem.splice(index, 1);
}
};
$scope.addPackage = function () {
var packageList = $scope.dialogData.package;
if (!$.isArray(packageList)) {
packageList = $scope.dialogData.package = [];
}
var length = packageList.length;
var packageItem = {
name: "套餐" + (length + 1),
description: "",
coins: length + 1,
price: length + 1,
imgList: [],
time: (length + 1) * 15
};
packageList.push(packageItem);
// 初始化对应的图片上传控件
createUploader(packageItem);
};
//创建上传组件
function createUploader(packageItem) {
//文件提交控件
var uploader = new FileUploader({
url: '/common/upload?type=packageImg',
queueLimit: 1, //文件个数
removeAfterUpload: true //上传后删除文件
});
//注册上传事件
uploader.onCompleteItem = function (fileItem, response) {
if (response.payload) {
//适配数据
response.data = response.payload;
}
if (response.result) {
toaster.pop("success", "提示", "上传成功!");
// 如果没有图片存放位置,怎新建一个imgList
if (!$.isArray(packageItem.imgList)) {
packageItem.imgList = [];
}
packageItem.imgList[0] = response.data;
} else {
toaster.pop("error", "失败", response.description);
}
};
uploader.onErrorItem = function (fileItem, response, status, headers) {
toaster.pop("error", "提示", "上传失败,请重试");
};
packageItem.uploader = uploader;
}
// 编辑时,初始化套餐的图片上传控件
function initUploader() {
var packageList = $scope.dialogData.package;
for (var index in packageList) {
var item = packageList[index];
createUploader(item)
}
}
/*关闭上传框窗口后恢复上传框初始状态*/
function closeUploader() {
$(".fileUpload").val("");
var packageList = $scope.dialogData.package;
for (var index in packageList) {
var item = packageList[index];
if (item.uploader) {
item.uploader.clearQueue();
item.uploader.cancelAll();
}
}
}
//提交表单保存
$scope.saveDevTypeData = function () {
if ($scope.devTypeForm.$invalid) {
return
}
var url = "";
url = "/device/editDevType";
// 删除多余的数据,否则无法保存
var packageList = $scope.dialogData.package;
for (var index in packageList) {
var item = packageList[index];
delete item.uploader
}
$http({
method: 'POST',
url: url,
data: $scope.dialogData
}).then(function (response) {
//保存成功 弹窗消失
$('#devTypePanel').modal('hide');
$scope.getPagedDataAsync($scope.devTypeGridOptions.paginationCurrentPage, $scope.devTypeGridOptions.paginationPageSize);
}, function (response) {
toaster.pop("error", "提示", "保存失败!");
});
};
}]);