123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379 |
- angular.module('app')
- .directive('devCondition', ['$rootScope', '$http', 'toaster', function ($rootScope, $http, toaster) {
- return {
- restrict: 'AC',
- templateUrl: 'js/directives/tpl/devCondition.html',
- // 当前scope=false 为共享作用域
- link: function (scope, el, attrs) {
- var $scope = scope;
- //代理商 数据初始化
- $http.get('/agent/getAgentsDetailList', {}).then(function (data) {
- $scope.conditionFun.agentList = data.data.payload.dataList;
- });
- //根据经销商列表获取分组列表
- function getDealerList(agentIds, callback) {
- $http.post('/dealer/getDealerListByAgent', {
- agentIds: agentIds, pageSize: 100000
- }).then(function (data) {
- var dealerList = data.data.payload.dataList;
- if (callback) {
- callback(dealerList);
- }
- });
- }
- //根据经销商列表获取分组列表
- function getGroupList(dealerIds, callback) {
- $http.post('/device/getGroupListByDealer', {
- dealerIds: dealerIds, pageSize: 100000
- }).then(function (data) {
- var groupList = data.data.payload.dataList;
- if (callback) {
- callback(groupList);
- }
- });
- }
- //获取当前行的选中代理商id列表
- function getSelectAgentIdList(devConditionItem) {
- var list = [];
- for (var i in devConditionItem.selectAgents) {
- var item = devConditionItem.selectAgents[i];
- list.push(item.id);//代理商接口过来的是id
- }
- return list
- }
- //编辑广告时候,根据选中的经销商获取经销商id
- function getSelectDealerIdList(devConditionItem) {
- var list = [];
- for (var i in devConditionItem.selectDealers) {
- var item = devConditionItem.selectDealers[i];
- list.push(item.dealerId);
- }
- return list
- }
- // 获取当前组合条件的选中组id列表
- function getSelectGroupIdList(devConditionItem) {
- var list = [];
- for (var i in devConditionItem.selectGroups) {
- var item = devConditionItem.selectGroups[i];
- list.push(item.groupId);
- }
- return list
- }
- $scope.conditionFun = {
- agentList: [],
- //是否清楚下拉框标记
- noClearSelect: false,
- //如果用户能点击了,则判定编辑窗口已经加载完成,释放编辑窗口标记、onchange事件防重复加载标记
- editPanelLoaded: function () {
- this.noClearSelect = false;
- var devConditionList = $scope.dialogData.devCondition;
- for (var index in devConditionList) {
- var item = devConditionList[index];
- item.initDealerEnd = false
- item.initGroupEnd = false
- }
- },
- /**
- * 暂定为只去重代理商,经销商按正常操作不会有重复
- * */
- // 初始化该组合条件的可选代理商列表,如果传了devConditionIndex,则跳过该index组合条件的对比
- initAgent: function (devConditionItem) {
- console.log('正在初始化可选代理商列表')
- var devConditionList = $scope.dialogData.devCondition;
- var agentList = devConditionItem.agentList = [];
- //遍历全量的代理商,如果被其他组合条件选中的代理商,则不在初始化这部分代理商
- for (var agentIndex in this.agentList) {
- var hasCheckedFlag = false;
- var agent = this.agentList[agentIndex];
- agentLabel:
- for (var conIndex in devConditionList) {
- var conItem = devConditionList[conIndex];
- var selectAgents = conItem.selectAgents;
- for (var selectIndex in selectAgents) {
- var selectItem = selectAgents[selectIndex];
- if (agent.id == selectItem.id) {
- //如果发现代理商被选中,则直接跳到最外层循环内,开始对比下个代理商;只有全量对比后没发现选中,才将该代理商加入列表
- hasCheckedFlag = true;
- break agentLabel
- }
- }
- }
- if (!hasCheckedFlag) {
- //克隆代理商,避免其他组合条件相互污染
- var tempAgent = $.extend(true, {}, agent)
- agentList.push(tempAgent);
- }
- }
- return agentList;
- },
- //代理商change事件
- changeAgent: function (devConditionItem) {
- if (devConditionItem.initDealerEnd) {
- //由于编辑时,dealer的数据变动,导致angular会自动多次触发onchange,需要标记控制,然后手动点击时释放
- return;
- } else {
- devConditionItem.initDealerEnd = true;
- }
- console.log('触发changeAgent')
- //因为angular会自动触发change事件,如果是编辑且是首次change,不清空下拉框
- if (this.noClearSelect) {
- } else {
- devConditionItem.dealerList = [];//清空经销商列表
- devConditionItem.groupList = [];//清空分组列表
- devConditionItem.selectDealers = [];//清空已选中的经销商
- devConditionItem.selectGroups = [];//清空已选中的分组
- }
- this.initDealer(devConditionItem)
- },
- //根据代理商初始化经销商列表
- initDealer: function (devConditionItem) {
- console.log('正在初始化经销商列表')
- var idList = getSelectAgentIdList(devConditionItem)
- if (idList.length > 0) {
- getDealerList(idList, function (dealerList) {
- devConditionItem.dealerList = dealerList
- // 由于ui-select 是对比引用地址,需要选中的对象和列表对象完全相等,才不会出现重复选项
- if (devConditionItem.selectDealers && devConditionItem.selectDealers.length > 0) {
- var temSel = [];
- for (var index in devConditionItem.selectDealers) {
- var item = devConditionItem.selectDealers[index]
- for (var dealerIndex in dealerList) {
- var dealer = dealerList[dealerIndex]
- if (item.dealerId == dealer.dealerId) {
- temSel.push(dealer);
- }
- }
- }
- devConditionItem.selectDealers = temSel
- }
- });
- }
- },
- // 经销商change事件:根据经销商列表获取设备列表
- changeDealer: function (devConditionItem) {
- if (devConditionItem.initGroupEnd) {
- return;
- } else {
- devConditionItem.initGroupEnd = true;
- }
- console.log('触发changeDealer')
- if (this.noClearSelect) {
- } else {
- devConditionItem.groupList = [];//清空分组列表
- devConditionItem.selectGroups = [];//清空已选中的分组
- }
- this.initGroup(devConditionItem);
- },
- //根据经销商初始化分组
- initGroup: function (devConditionItem) {
- console.log('正在初始化分组列表')
- var idList = getSelectDealerIdList(devConditionItem)
- if (idList.length > 0) {
- getGroupList(idList, function (groupList) {
- devConditionItem.groupList = groupList
- // 由于ui-select 是对比引用地址,需要选中的对象和列表对象完全相等,才不会出现重复选项
- if (devConditionItem.selectGroups && devConditionItem.selectGroups.length > 0) {
- var temSel = [];
- for (var index in devConditionItem.selectGroups) {
- var item = devConditionItem.selectGroups[index]
- for (var groupIndex in groupList) {
- var group = groupList[groupIndex]
- if (item.groupId == group.groupId) {
- temSel.push(group);
- }
- }
- }
- devConditionItem.selectGroups = temSel
- }
- });
- }
- },
- // 改变设备地址后,加载设备
- changeGroup: function () {
- // console.log('触发changeGroup')
- },
- //全选|全不选代理商
- selectAllAgent: function (devConditionItem) {
- if (devConditionItem.selectAgentAll) {
- // 如果是全选,则必须再次刷新可选代理商列表
- this.initAgent(devConditionItem);
- devConditionItem.selectAgents = devConditionItem.agentList;
- } else {
- devConditionItem.selectAgents = [];
- }
- },
- selectAllDealer: function (devConditionItem) {
- if (devConditionItem.selectDealerAll) {
- devConditionItem.selectDealers = devConditionItem.dealerList;
- } else {
- devConditionItem.selectDealers = [];
- }
- },
- selectAllGroup: function (devConditionItem) {
- if (devConditionItem.selectGroupAll) {
- devConditionItem.selectGroups = devConditionItem.groupList;
- } else {
- devConditionItem.selectGroups = [];
- }
- },
- // 添加一行空的设备查询添加
- addDevCondition: function () {
- var devCondition = $scope.dialogData.devCondition;
- if (devCondition.length >= 5) {
- toaster.pop("warning", "最多5个组合条件,不能再添加");
- return
- }
- //如果有空的组合条件,则不允许添加,避免出现bug
- for (var index in devCondition) {
- var devConItem = devCondition[index];
- if (!devConItem.selectAgents || devConItem.selectAgents.length == 0) {
- toaster.pop("warning", "还有空的组合条件没填,请先填写");
- return
- }
- }
- var item = {
- selectAgents: [],
- selectDealers: [],
- selectGroups: []
- };
- //初始化该组合条件的代理商列表
- var agentList = this.initAgent(item);
- if (agentList.length == 0) {
- toaster.pop("warning", "代理商已经选完了,不能再添加组合条件!");
- } else {
- devCondition.push(item);
- }
- },
- // 删除一行查询条件
- deleteDevCondition: function (index) {
- var devCondition = $scope.dialogData.devCondition;
- if (devCondition.length == 1) {
- toaster.pop("warning", "至少需要一个条件,不能删除");
- return
- }
- if (devCondition[index]) {
- devCondition.splice(index, 1);
- }
- },
- //下拉框分组方法
- groupByAgent: function (item) {
- return "代理商-" + item.agentName
- },
- groupByDealer: function (item) {
- return "经销商-" + item.dealerName
- },
- // 获取初始化条件渲染
- getRenderingCondition: function (devConditionSrc) {
- // 数据适配
- var devCondition = [];
- //避免空条件时界面不渲染条件框
- if (devConditionSrc.length == 0) {
- devConditionSrc = [{
- selectAgents: [],
- selectDealers: [],
- selectGroups: []
- }]
- }
- for (var index in devConditionSrc) {
- var conSrc = devConditionSrc[index];
- var selectAgents = conSrc.selectAgents
- var selectDealers = conSrc.selectDealers;
- var selectGroups = conSrc.selectGroups;
- devCondition.push({
- selectAgents: selectAgents,
- selectDealers: selectDealers,
- selectGroups: selectGroups,
- agentList: selectAgents,
- dealerList: selectDealers,
- groupList: selectGroups,
- });
- }
- return devCondition
- },
- // 获得条件的 精简数据
- getCondition: function (dialogData) {
- var devConditionTemp = []
- for (var index2 in dialogData.devCondition) {
- var item2 = dialogData.devCondition[index2];
- var conTemp = {
- selectAgents: [],
- selectDealers: [],
- selectGroups: [],
- };
- for (var index3 in item2.selectAgents) {
- var item3 = item2.selectAgents[index3]
- conTemp.selectAgents.push({
- id: item3.id,
- nickname: item3.nickname,
- })
- }
- for (var index3 in item2.selectDealers) {
- var item3 = item2.selectDealers[index3]
- conTemp.selectDealers.push({
- dealerId: item3.dealerId,
- dealerName: item3.dealerName,
- })
- }
- for (var index3 in item2.selectGroups) {
- var item3 = item2.selectGroups[index3]
- conTemp.selectGroups.push({
- groupId: item3.groupId,
- groupName: item3.groupName,
- })
- }
- devConditionTemp.push(conTemp)
- }
- return devConditionTemp;
- },
- };
- /**end***/
- }
- };
- }]);
|