| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 | 'use strict';/** * * * @author Zhong * @date 2018/5/29 * @version */const billsGuidanceMain = (function () {    const updateType = {create: 'create', update: 'update', delete: 'delete'};    const typeString = {1: '清单指引', 2: '清单精灵'};    let guidanceLibs = [];    let curLib = null;    //上一个选择的库(三次确认删除同一库时用)    let preLib = null;    let deleteCount = 0;    //获取编办及编办下清单库    //@return {void}    function getComBillsLibInfo(){        CommonAjax.post('/billsGuidance/api/getComBillsLibInfo', {}, function (rstData) {            const comSels = $('#comSels');            const billsLibSels = $('#billsLibSels');            //设置编办及清单规则库选择            comSels.empty();            function setBillsLib(libs){                billsLibSels.empty();                for(let lib of libs){                    let libOpt = `<option value="${lib.billsLibId}">${lib.billsLibName}</option>`;                    billsLibSels.append(libOpt);                }            }            setBillsLib(rstData.billsLibs);            for(let i = 0; i < rstData.compilationList.length; i++){                let compilation = rstData.compilationList[i];                let comOpt = `<option value = "${compilation._id}">${compilation.name}</option>`;                comSels.append(comOpt);            }        });    }    //html新增库    //@param {Object}tbody {Object}lib @return {void}    function addLibToView(tbody, lib){        let type = lib.type && typeString[lib.type] ? typeString[lib.type] : ''        let tr = `<tr id="${lib.ID}">            <td><a href="/billsGuidance/guidance/?libID=${lib.ID}&locked=true">${lib.name}</a>            <td>${lib.compilationName}</td>            <td>${lib.billsLibName}</td>            <td>${type}</td>            <td>${lib.createDate.split(' ')[0]}</td>            <td style="text-align: center;">            ${ isTemporary !== 'true' ? `            <a class="lock-btn-control disabled" href="javascript:void(0);" data-toggle="modal" data-target="#edit" title="编辑"><i class="fa fa-pencil-square-o"></i></a>            <a class="lock-btn-control disabled text-danger" href="javascript:void(0);" data-toggle="modal" data-target="#del" title="删除"><i class="fa fa-remove"></i></a>            ` : '' }            ${ lockOperate !== 'true' ? `            <a class="lock" data-locked="true" href="javascript:void(0);" title="解锁"><i class="fa fa-unlock-alt"></i></a>            ` : '' }            </td>            ${ isTemporary !== 'true' ? `            <td style="text-align: center;">            <a class="btn btn-secondary btn-sm generate-class lock-btn-control disabled" href="javascript:void(0);" data-id="${lib.ID}" title="生成清单分类"><i class="fa fa-sign-in fa-rotate-90"></i>生成</a>            </td>            ` : '' }            ${ isTemporary !== 'true' ? `            <td style="text-align: center;">            <a class="btn btn-success btn-sm export lock-btn-control disabled" href="/billsGuidance/api/exportClassExcel?libID=${lib.ID}" download="清单类别库.xlsx" title="导出清单分类excel"><i class="fa fa-sign-out fa-rotate-270"></i>导出</a>            </td>            ` : '' }            </tr>`;        tbody.append(tr);    }    //获取清单指引库    //@return {void}    function getLibs(){        CommonAjax.post('/billsGuidance/api/getBillsGuideLibs', {}, function (rstData) {            guidanceLibs = rstData;            const tbody = $('.main').find('tbody');            tbody.empty();            for(let lib of rstData){                addLibToView(tbody, lib);            }        });    }    //是否已存在此库    //@param {Object}findSet {Array}libs @return {Object}    function existLib(findSet, libs) {        for(let lib of libs){            if(lib[findSet.k] === findSet.v){                return lib;            }        }        return null;    }    //监听事件    //@return {void}    function eventListener(){        //新建库确认按钮事件        $('#addY').click(function () {            try{                let cName = $('#createName').val();                if(!cName || cName.trim() === ''){                    throw '请输入名称!';                }                if(existLib({k: 'name', v: cName}, guidanceLibs)){                    throw '已存在此库!';                }                let compilationId = $('#comSels').select().val();                let compilationName = $('#comSels').select().children('option:selected').text();                if(!compilationId){                    throw '请选择编办!';                }                let billsLibId = $('#billsLibSels').select().val();                let billsLibName = $('#billsLibSels').select().children('option:selected').text();                if(!billsLibId){                    throw '请选择清单规则库';                }                //库类型                let addType = $('#add').find('input:checked');                if(!addType){                    throw '请选择库类型';                }                //新建                $.bootstrapLoading.start();                $('#addY').addClass('disabled');                let createData = {                    type: parseInt(addType.val()),                    ID: uuid.v1(),                    name: cName,                    compilationId: compilationId,                    compilationName: compilationName,                    billsLibId: parseInt(billsLibId),                    billsLibName:billsLibName                };                let updateData = {updateType: updateType.create, updateData: createData};                CommonAjax.post('/billsGuidance/api/updateBillsGuideLib', updateData, function (rstData) {                    guidanceLibs.push(rstData);                    addLibToView($('.main').find('tbody'), rstData);                    $('#add').modal('hide');                    $('#addY').removeClass('disabled');                    $.bootstrapLoading.end();                }, function () {                    $('#addY').removeClass('disabled');                    $.bootstrapLoading.end();                });            }            catch(err){                alert(err);                $('#createName').focus();            }        });        //新建模态框        $('#add').on('hidden.bs.modal', function () {           $('#createName').val('');        });        $('#add').on('shown.bs.modal', function () {            $('#createName').focus();        });        // 生成清单分类        $('.main').find('tbody').on('click', '.generate-class', function () {            let tr = $(this).parent().parent();            let selLib = existLib({k: 'ID', v: tr.attr('id')}, guidanceLibs);            curLib = selLib;            $('#generate-class-modal').modal('show');            $('#generate-class-info').html(`            <p>确认根据库“${curLib.name}”生成清单分类?</p>            <p style="color: #d9534f">注意,原有分类数据将被清空</p>            `)            console.log(curLib);        });        $('#generate-class-confirm').click(async () => {            if (!curLib || !curLib.ID) {                return;            }            $.bootstrapLoading.start();            try {                await ajaxPost('/billsGuidance/api/generateClassData', { libID: curLib.ID }, 1000 * 60 * 10);                $('#generate-class-modal').modal('hide');            } catch (error) {                console.log(error);            } finally {                $.bootstrapLoading.end();            }        });        //所有编辑按钮        $('.main').find('tbody').on('click', '[data-target="#edit"]', function () {            let tr = $(this).parent().parent();            let selLib = existLib({k: 'ID', v: tr.attr('id')}, guidanceLibs);            curLib = selLib;            $('#edName').val(curLib.name);            $('#edComSels').select().children('option:selected').text(curLib.compilationName);            $('#edBillsLibSels').select().children('option:selected').text(curLib.billsLibName);        });        //编辑确认        $('#editY').click(function(){            try{                let newName = $('#edName').val();                if(newName.trim() === curLib.name){                    $('#edit').modal('hide');                    return;                }                if(!newName || newName.trim() === ''){                    throw '名称不能为空!';                }                if(existLib({k: 'name', v: newName}, guidanceLibs)){                    throw '该库已存在!';                }                let updateData = {updateType: updateType.update, findData: {ID: curLib.ID}, updateData: {name: newName}};                CommonAjax.post('/billsGuidance/api/updateBillsGuideLib', updateData, function (rstData) {                    curLib.name = newName;                    $(`#${curLib.ID} td:first a`).text(newName);                    $('#edit').modal('hide');                });            }            catch(err){                alert(err);                $('#edName').focus();            }        });        //编辑模态框        $('#edit').on('shown.bs.modal', function () {            $('#edName').focus();        });        //所有删除按钮        $('.main').find('tbody').on('click', '[data-target="#del"]', function () {            let tr = $(this).parent().parent();            curLib = existLib({k: 'ID', v: tr.attr('id')}, guidanceLibs);            console.log(curLib);        });        //删除确认        $('#delY').click(function () {            try{                if(!curLib){                    throw '不存在该库!';                }                if(preLib && preLib.ID !== curLib.ID){                    deleteCount = 0;                }                deleteCount++;                preLib = curLib;                if(deleteCount === 3){                    $('#del').modal('hide');                    $.bootstrapLoading.start();                    let updateData = {updateType: updateType.delete, findData: {ID: curLib.ID}, updateData: {deleted: true}};                    CommonAjax.post('/billsGuidance/api/updateBillsGuideLib', updateData, function (rstData) {                        $(`#${curLib.ID}`).remove();                        curLib = null;                        _.remove(guidanceLibs, function (lib) {                            return lib.ID === updateData.findData.ID;                        });                        $.bootstrapLoading.end();                    }, function () {                        $.bootstrapLoading.end();                    });                }            }            catch(err){                alert(err);            }        });        //删除确认窗口关闭,重新计数        $('#del').on('hidden.bs.modal', function () {            deleteCount = 0;        });        // 锁定、解锁        $('.main').find('tbody').on('click', '.lock', function () {            lockUtil.handleLockClick($(this));        });    }    return {getComBillsLibInfo, getLibs, eventListener};})();$(document).ready(function () {    billsGuidanceMain.getComBillsLibInfo();    billsGuidanceMain.getLibs();    billsGuidanceMain.eventListener();});
 |