From f2a13e01e8843302dfb2e80fe18edec3a4ba137f Mon Sep 17 00:00:00 2001 From: YM <479443481@qq.com> Date: 星期一, 10 三月 2025 00:58:19 +0800 Subject: [PATCH] 考勤组的增加已经表单逻辑 --- public/static/assets/gougu/module/oaPicker.js | 1226 ++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 718 insertions(+), 508 deletions(-) diff --git a/public/static/assets/gougu/module/oaPicker.js b/public/static/assets/gougu/module/oaPicker.js index fe167d1..4baf9eb 100644 --- a/public/static/assets/gougu/module/oaPicker.js +++ b/public/static/assets/gougu/module/oaPicker.js @@ -1,514 +1,724 @@ -layui.define(['tool'], function (exports) { - const layer = layui.layer, tool = layui.tool,form=layui.form, table=layui.table,tree = layui.tree; - - const dataPicker ={ - 'department':{ - title:'閫夋嫨閮ㄩ棬', - url:'/api/index/get_department', - area: ['400px', '524px'], - searchbar:'', - page:false, - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'閮ㄩ棬鍚嶇О'}] - }, - 'position':{ - title:'閫夋嫨宀椾綅', - url:'/api/index/get_position', - area: ['400px', '524px'], - searchbar:'', - page:false, - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'宀椾綅鍚嶇О'}] - }, - 'services':{ - title:'閫夋嫨鏈嶅姟绫诲瀷', - url:'/api/index/get_services', - area: ['400px', '524px'], - searchbar:'', - page:false, - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'鏈嶅姟鍚嶇О'},{field:'price',title:'鏈嶅姟鍗曚环'}] - }, - 'template':{ - title:'閫夋嫨娑堟伅妯℃澘', - url:'/api/index/get_template', - area: ['600px', '568px'], - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'娑堟伅妯℃澘鍚嶇О'}] - }, - 'workcate':{ - title:'閫夋嫨宸ヤ綔绫诲瀷', - url:'/api/index/get_work_cate', - area: ['400px', '524px'], - searchbar:'', - page:false, - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'宸ヤ綔绫诲瀷鍚嶇О'}] - }, - 'property':{ - title:'閫夋嫨鍥哄畾璧勪骇', - url:'/adm/api/get_property', - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'璧勪骇鍚嶇О'}] - }, - 'car':{ - title:'閫夋嫨杞﹁締淇℃伅', - url:'/adm/api/get_car', - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'杞﹁締鍚嶇О'},{field:'name',width:100,title:'杞︾墝鍙风爜',align:'center'}] - }, - 'room':{ - title:'閫夋嫨浼氳瀹�', - url:'/adm/api/get_meeting_room', - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'浼氳瀹ゅ悕绉�'},{field:'num',width:100,title:'鍙绾充汉鏁�',align:'center'}] - }, - 'customer':{ - title:'閫夋嫨瀹㈡埛', - url:'/customer/api/get_customer', - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'name',title:'瀹㈡埛鍚嶇О'}] - }, - 'supplier':{ - title:'閫夋嫨渚涘簲鍟�', - url:'/contract/api/get_supplier', - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'渚涘簲鍟嗗悕绉�'}] - }, - 'contract':{ - title:'閫夋嫨閿�鍞悎鍚�', - url:'/contract/api/get_contract', - area: ['800px', '568px'], - cols:[{ field: 'code',width:160,title:'鍚堝悓缂栧彿',align:'center'},{field:'name',title:'鍚堝悓鍚嶇О'},{ field:'customer',title:'鍏宠仈瀹㈡埛',width: 240}] - }, - 'product':{ - title:'閫夋嫨浜у搧', - url:'/contract/api/get_product', - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'浜у搧鍚嶇О'},{field:'sale_price',title:'閿�鍞崟浠�',width: 120,align:'center'}] - }, - 'purchase':{ - title:'閫夋嫨閲囪喘鍚堝悓', - url:'/contract/api/get_purchase', - area: ['800px', '568px'], - cols:[{ field: 'code',width:160,title:'鍚堝悓缂栧彿',align:'center'},{field:'name',title:'鍚堝悓鍚嶇О'},{ field:'supplier',title:'鍏宠仈渚涘簲鍟�',width: 240}] - }, - 'purchased':{ - title:'閫夋嫨閲囪喘鐗╁搧', - url:'/contract/api/get_purchased', - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'閲囪喘鐗╁搧鍚嶇О'},{field:'purchase_price',title:'閲囪喘鍗曚环',width: 120,align:'center'}] - }, - 'project':{ - title:'閫夋嫨椤圭洰', - url:'/project/api/get_project', - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{field:'title',title:'椤圭洰鍚嶇О'}] - }, - 'task':{ - title:'閫夋嫨浠诲姟', - url:'/project/api/get_task', - area: ['800px', '568px'], - cols:[{field:'id',width:90,title:'搴忓彿',align:'center'},{ field:'title',title:'浠诲姟涓婚'},{field:'project',width:240,title:'鍏宠仈椤圭洰'}] - } - } +layui.define(["tool"], function (exports) { + const layer = layui.layer, + tool = layui.tool, + form = layui.form, + table = layui.table, + tree = layui.tree; - let select_ids=[];select_names=[];select_array=[]; - const obj = { - employeeRender:function(){ - var me=this,letterTem=''; - for(var i=0;i<26;i++){ - letterTem+='<span class="layui-letter-span" data-code="'+String.fromCharCode(97+i)+'">'+String.fromCharCode(65+i)+'</span>'; - } - var tpl='<div style="width:210px; height:388px; border-right:1px solid #eee; overflow-x: hidden; overflow-y: auto; float:left;">\ + const dataPicker = { + department: { + title: "閫夋嫨閮ㄩ棬", + url: "/api/index/get_department", + area: ["400px", "524px"], + searchbar: "", + page: false, + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "閮ㄩ棬鍚嶇О" } + ] + }, + position: { + title: "閫夋嫨宀椾綅", + url: "/api/index/get_position", + area: ["400px", "524px"], + searchbar: "", + page: false, + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "宀椾綅鍚嶇О" } + ] + }, + services: { + title: "閫夋嫨鏈嶅姟绫诲瀷", + url: "/api/index/get_services", + area: ["400px", "524px"], + searchbar: "", + page: false, + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "鏈嶅姟鍚嶇О" }, + { field: "price", title: "鏈嶅姟鍗曚环" } + ] + }, + template: { + title: "閫夋嫨娑堟伅妯℃澘", + url: "/api/index/get_template", + area: ["600px", "568px"], + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "娑堟伅妯℃澘鍚嶇О" } + ] + }, + workcate: { + title: "閫夋嫨宸ヤ綔绫诲瀷", + url: "/api/index/get_work_cate", + area: ["400px", "524px"], + searchbar: "", + page: false, + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "宸ヤ綔绫诲瀷鍚嶇О" } + ] + }, + property: { + title: "閫夋嫨鍥哄畾璧勪骇", + url: "/adm/api/get_property", + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "璧勪骇鍚嶇О" } + ] + }, + car: { + title: "閫夋嫨杞﹁締淇℃伅", + url: "/adm/api/get_car", + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "杞﹁締鍚嶇О" }, + { field: "name", width: 100, title: "杞︾墝鍙风爜", align: "center" } + ] + }, + room: { + title: "閫夋嫨浼氳瀹�", + url: "/adm/api/get_meeting_room", + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "浼氳瀹ゅ悕绉�" }, + { field: "num", width: 100, title: "鍙绾充汉鏁�", align: "center" } + ] + }, + customer: { + title: "閫夋嫨瀹㈡埛", + url: "/customer/api/get_customer", + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "name", title: "瀹㈡埛鍚嶇О" } + ] + }, + supplier: { + title: "閫夋嫨渚涘簲鍟�", + url: "/contract/api/get_supplier", + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "渚涘簲鍟嗗悕绉�" } + ] + }, + contract: { + title: "閫夋嫨閿�鍞悎鍚�", + url: "/contract/api/get_contract", + area: ["800px", "568px"], + cols: [ + { field: "code", width: 160, title: "鍚堝悓缂栧彿", align: "center" }, + { field: "name", title: "鍚堝悓鍚嶇О" }, + { field: "customer", title: "鍏宠仈瀹㈡埛", width: 240 } + ] + }, + product: { + title: "閫夋嫨浜у搧", + url: "/contract/api/get_product", + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "浜у搧鍚嶇О" }, + { field: "sale_price", title: "閿�鍞崟浠�", width: 120, align: "center" } + ] + }, + purchase: { + title: "閫夋嫨閲囪喘鍚堝悓", + url: "/contract/api/get_purchase", + area: ["800px", "568px"], + cols: [ + { field: "code", width: 160, title: "鍚堝悓缂栧彿", align: "center" }, + { field: "name", title: "鍚堝悓鍚嶇О" }, + { field: "supplier", title: "鍏宠仈渚涘簲鍟�", width: 240 } + ] + }, + purchased: { + title: "閫夋嫨閲囪喘鐗╁搧", + url: "/contract/api/get_purchased", + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "閲囪喘鐗╁搧鍚嶇О" }, + { + field: "purchase_price", + title: "閲囪喘鍗曚环", + width: 120, + align: "center" + } + ] + }, + project: { + title: "閫夋嫨椤圭洰", + url: "/project/api/get_project", + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "椤圭洰鍚嶇О" } + ] + }, + task: { + title: "閫夋嫨浠诲姟", + url: "/project/api/get_task", + area: ["800px", "568px"], + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "title", title: "浠诲姟涓婚" }, + { field: "project", width: 240, title: "鍏宠仈椤圭洰" } + ] + }, + workPlan: { + title: "閫夋嫨鐝", + url: "/user/api/get_work_plan", + cols: [ + { field: "id", width: 90, title: "搴忓彿", align: "center" }, + { field: "name", title: "鐝鍚嶇О" }, + { + field: "time", + width: 240, + title: "鑰冨嫟鏃堕棿" + } + ] + } + }; + + let select_ids = []; + select_names = []; + select_array = []; + const obj = { + employeeRender: function () { + var me = this, + letterTem = ""; + for (var i = 0; i < 26; i++) { + letterTem += + '<span class="layui-letter-span" data-code="' + + String.fromCharCode(97 + i) + + '">' + + String.fromCharCode(65 + i) + + "</span>"; + } + var tpl = + '<div style="width:210px; height:388px; border-right:1px solid #eee; overflow-x: hidden; overflow-y: auto; float:left;">\ <div id="employeeDepament" style="padding:6px 0;"></div>\ </div>\ <div style="width:588px; height:388px; user-select:none; overflow-x: hidden; overflow-y: auto; float:left;">\ - <div style="padding:12px 10px 0;"><div style="color:#999; text-align:center;">鈬� 鐐瑰嚮宸﹁竟閮ㄩ棬绛涢�夊憳宸ワ紝鎴栬�呯偣鍑讳笅闈㈠瓧姣嶇瓫閫�</div><div id="letterBar" style="color:#999; text-align:center;">'+letterTem+'</div></div>\ + <div style="padding:12px 10px 0;"><div style="color:#999; text-align:center;">鈬� 鐐瑰嚮宸﹁竟閮ㄩ棬绛涢�夊憳宸ワ紝鎴栬�呯偣鍑讳笅闈㈠瓧姣嶇瓫閫�</div><div id="letterBar" style="color:#999; text-align:center;">' + + letterTem + + '</div></div>\ <div id="employee" style="padding:6px 12px"></div>\ <div style="padding:10px 15px; border-top:1px solid #eee;;"><strong>宸查�夋嫨</strong><span class="layui-tags-all">鍏ㄩ��</span></div>\ - <div id="selectTags" style="padding:10px 15px;">'+me.employeeSelect(0)+'</div>\ - </div>'; - return tpl; - }, - employeeSelect:function(t){ - var me=this,select_tags=''; - if(me.settings.type == 0){ - select_tags+='<span style="color:#1E9FFF">'+me.settings.names+'</span>'; - } - else{ - select_ids=[]; - select_names=[]; - for(var a=0;a<select_array.length;a++){ - if(me.settings.fixedid==select_array[a].id && me.settings.fixedid!=0){ - select_tags+='<span class="layui-tags-span">'+select_array[a].name+'</span>'; - } - else{ - select_tags+='<span class="layui-tags-span">'+select_array[a].name+'<i data-id="'+select_array[a].id+'" class="layui-icon layui-tags-close">醼�</i></span>'; - } - if(t==1){ - $('#employee').find('[data-id="'+select_array[a].id+'"]').addClass('on'); - } - select_ids.push(parseInt(select_array[a].id)); - select_names.push(select_array[a].name); - } - } - //console.log(select_array); - return select_tags; - }, - employeeInit: function (options) { - const opts={ - "title":"閫夋嫨鍛樺伐", - "department_url": "/api/index/get_department_tree", - "employee_url": "/api/index/get_employee", - "type":1,//1鍗曚汉,2澶氫汉 - "fixedid":0, - "ids":"", - "names":"", - "ajax_data":[], - "callback": function(){} - }; - this.settings = $.extend({}, opts, options); - var me=this; - select_ids=[]; - select_names=[]; - select_array=[]; - if(me.settings.ids!='' && me.settings.names!=''){ - select_ids=me.settings.ids.split(','); - select_names=me.settings.names.split(','); - select_ids.sort((a, b) => a - b); - for(var m=0;m<select_ids.length;m++){ - select_array.push({id:select_ids[m],name:select_names[m]}); - } - } - $(parent.$('.express-close')).addClass('parent-colse'); - layer.open({ - type:1, - title:me.settings.title, - area:['800px','500px'], - resize:false, - content:me.employeeRender(), - end: function(){ - $(parent.$('.express-close')).removeClass('parent-colse'); - }, - success:function(obj,idx){ - var dataList=[],letterBar=$('#letterBar'),employee = $('#employee'),selectTags = $('#selectTags'); - $.ajax({ - url:me.settings.department_url, - type:'get', - success:function(res){ - //浠呰妭鐐瑰乏渚у浘鏍囨帶鍒舵敹缂� - tree.render({ - elem: '#employeeDepament', - data: res.trees, - onlyIconControl: true, //鏄惁浠呭厑璁歌妭鐐瑰乏渚у浘鏍囨帶鍒跺睍寮�鏀剁缉 - click: function(obj){ - var tagsItem='<div style="color:#999; text-align:center;">鏆傛棤鍛樺伐</div>'; - $("#employeeDepament").find('.layui-tree-main').removeClass('on'); - $(obj.elem).find('.layui-tree-main').eq(0).addClass('on'); - letterBar.find('span').removeClass('on'); - $.ajax({ - url:me.settings.employee_url, - type:'get', - data:{did:obj.data.id}, - success:function(res){ - me.ajax_data = res.data; - dataList=me.ajax_data; - if(dataList.length>1 && me.settings.type == 2){ - $('.layui-tags-all').show(); - } - else{ - $('.layui-tags-all').hide(); - } - if(dataList.length>0){ - tagsItem=''; - for(var i=0; i<dataList.length; i++){ - if(select_ids.indexOf(dataList[i].id) == -1){ - tagsItem+='<span class="layui-tags-span" data-idx="'+i+'" data-id="'+dataList[i].id+'">'+dataList[i].name+'</span>'; - } - else{ - tagsItem+='<span class="layui-tags-span on" data-idx="'+i+'" data-id="'+dataList[i].id+'">'+dataList[i].name+'</span>'; - } - } - } - employee.html(tagsItem); - } - }) - } - }); - - letterBar.on("click" ,'span',function(){ - var code=$(this).data('code'); - $(this).addClass('on').siblings().removeClass('on'); - $.ajax({ - url:me.settings.employee_url, - type:'get', - data:{id:1}, - success:function(res){ - me.ajax_data = res.data; - var letterData=[],tagsItem='<div style="color:#999; text-align:center;">鏆傛棤鍛樺伐</div>';; - if(me.ajax_data.length>0){ - var tagsItemCode=''; - for(var i=0; i<me.ajax_data.length; i++){ - if(me.ajax_data[i].username.slice(0,1)==code){ - if(select_ids.indexOf(me.ajax_data[i].id) == -1){ - tagsItemCode+='<span class="layui-tags-span" data-idx="'+i+'" data-id="'+me.ajax_data[i].id+'">'+me.ajax_data[i].name+'</span>'; - } - else{ - tagsItemCode+='<span class="layui-tags-span on" data-idx="'+i+'" data-id="'+me.ajax_data[i].id+'">'+me.ajax_data[i].name+'</span>'; - } - letterData.push(me.ajax_data[i]); - } - } - dataList=letterData; - if(dataList.length>2 && me.settings.type == 2){ - $('.layui-tags-all').show(); - } - else{ - $('.layui-tags-all').hide(); - } - if(tagsItemCode!=''){ - tagsItem = tagsItemCode; - } - } - employee.html(tagsItem); - } - }) - }); - } - }) - - if(me.settings.type == 2){ - $('.layui-tags-all').on('click',function(){ - for(var a=0; a<dataList.length;a++){ - if(select_ids.indexOf(dataList[a]['id']) == -1){ - select_array.push(dataList[a]);; - } - } - selectTags.html(me.employeeSelect(1)); - }); - } - - employee.on('click','.layui-tags-span',function(){ - let item_idx=$(this).data('idx'); - let select_item = me.ajax_data[item_idx]; - if(me.settings.type == 1){ - me.settings.callback([select_item]); - layer.close(idx); - } - else{ - if(select_ids.indexOf(select_item['id']) == -1){ - select_array.push(select_item); - selectTags.html(me.employeeSelect(1)); - } - } - }); - - selectTags.on('click','.layui-tags-close',function(){ - let id=$(this).data('id'); - let new_slected=[]; - $('#employee').find('[data-id="'+id+'"]').removeClass('on'); - for(var i=0;i<select_array.length;i++){ - if(select_array[i].id!=id){ - new_slected.push(select_array[i]); - } - } - select_array=new_slected; - selectTags.html(me.employeeSelect(1)); - }); - if(me.settings.type == 1){ - $('#layui-layer'+idx).find('.layui-layer-btn0').hide(); - } - }, - btn: ['纭畾娣诲姞', '娓呯┖宸查��'], - btnAlign:'c', - btn1: function(idx){ - me.settings.callback(select_array); - layer.close(idx); - }, - btn2: function(idx){ - let canceldata= {department:"",did:0,id:0,mobile:0,name:"",nickname:"",position_id:0,sex:0,status:0,thumb:"",username:""}; - me.settings.callback([canceldata]); - layer.close(idx); - } - }) - }, - picker:function(types,type,callback,map){ - let pickerIndex = new Date().getTime(); - let pickerTable,options; - const opts={ - "title":"閫夋嫨", - "url": "", - "ids":"", - "titles":"", - "where":map, - "area": ['600px', '568px'], - "cols":[{field: 'id',width: 80,title:'搴忓彿',align:'center'},{field:'title',title:'鍚嶇О'}], - "searchbar":'<form class="layui-form pb-2"><div class="layui-input-inline" style="width:420px; margin-right:5px;"><input type="text" name="keywords" placeholder="璇疯緭鍏ュ叧閿瓧" class="layui-input" autocomplete="off" /></div><button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="picker">鎻愪氦鎼滅储</button><button type="reset" class="layui-btn layui-btn-reset" lay-filter="picker-reset">娓呯┖</button></form>', - "page":true, - "type":type,//1鍗曢�夋嫨,2澶氶�� - "btnno":true, - "add": "",//鏂板url - "callback": callback - }; - if(Object.prototype.toString.call(types) === '[object Object]'){ - options = types; - } - else{ - options = dataPicker[types]; - } - let settings = $.extend({},opts,options); - //console.log(settings); - let btn = ['纭畾閫夋嫨']; - if(settings.btnno==true){ - btn = ['纭畾閫夋嫨','娓呯┖宸查��']; - } - if(settings.add!=''){ - btn = ['纭畾閫夋嫨','娓呯┖宸查��','鏂板']; - } - $(parent.$('.express-close')).addClass('parent-colse'); - layer.open({ - title: settings.title, - area: settings.area, - type: 1, - skin: 'gougu-picker', - content: '<div class="picker-table" id="pickerBox'+pickerIndex+'">'+settings.searchbar+'<div id="pickerTable'+pickerIndex+'"></div></div>', - end: function(){ - $(parent.$('.express-close')).removeClass('parent-colse'); - }, - success: function () { - let cols=JSON.parse(JSON.stringify(settings.cols)); - if(settings.type==1){ - cols.splice(0, 0, {type: 'radio', title: '閫夋嫨'}); - } - if(settings.type==2){ - cols.splice(0, 0, {type: 'checkbox', title: '閫夋嫨'}); - } - pickerTable = table.render({ - elem: '#pickerTable'+pickerIndex, - url: settings.url, - where:settings.where, - page: settings.page, //寮�鍚垎椤� - limit: 10, - height: '407', - cols: [cols] - }); - //鎼滅储鎻愪氦 - form.on('submit(picker)', function (data) { - let maps = $.extend({}, settings.where, data.field); - pickerTable.reload({where:maps,page:{curr: 1}}); - return false; - }); - //閲嶇疆鎼滅储鎻愪氦 - $('#pickerBox'+pickerIndex).on('click', '[lay-filter="picker-reset"]', function () { - let prev = $(this).prev(); - if (typeof(prev) != "undefined" ) { - setTimeout(function () { - prev.click(); - }, 10) - } - }); - }, - btn: btn, - btnAlign: 'c', - btn1: function (idx) { - var checkStatus = table.checkStatus(pickerTable.config.id); - var data = checkStatus.data; - if (data.length > 0) { - callback(data); - layer.close(idx); - } - else { - layer.msg('璇峰厛閫夋嫨鍐呭'); - return false; - } - }, - btn2: function (idx) { - callback([{'id':0,'title':'','name':''}]); - layer.close(idx); - }, - btn3: function (idx) { - tool.side(settings.add); - layer.close(idx); - } - }) - } - } - - //閫夋嫨鍛樺伐寮圭獥 - $('body').on('click','.picker-admin',function () { - let that = $(this); - let type = that.data('type'); - if (typeof(type) == "undefined" || type == '') { - type = 1; - } - let ids=that.next().val()+'',names = that.val()+''; - obj.employeeInit({ - ids:ids, - names:names, - type:type, - callback:function(data){ - let select_id=[],select_name=[]; - for(var a=0; a<data.length;a++){ - select_id.push(data[a].id); - select_name.push(data[a].name); - } - console.log(select_name); - that.val(select_name.join(',')); - that.next().val(select_id.join(',')); - } - }); - }); - - //閫夋嫨涓嬪睘鍛樺伐寮圭獥 - $('body').on('click','.picker-sub',function () { - let that = $(this); - let type = that.data('type'); - if (typeof(type) == "undefined" || type == '') { - type = 1; - } - let ids=that.next().val()+'',names = that.val()+''; - obj.employeeInit({ - title:"閫夋嫨涓嬪睘", - department_url: "/api/index/get_department_tree_sub", - employee_url: "/api/index/get_employee_sub", - ids:ids, - names:names, - type:type, - callback:function(data){ - let select_id=[],select_name=[]; - for(var a=0; a<data.length;a++){ - select_id.push(data[a].id); - select_name.push(data[a].name); - } - console.log(select_name); - that.val(select_name.join(',')); - that.next().val(select_id.join(',')); - } - }); - }); - - //閫夋嫨OA鏁版嵁寮瑰眰 - $('body').on('click','.picker-oa',function () { - let that = $(this),ids = [],titles=[],map = {}; - let types = that.data('types'); - let type = that.data('type'); - let where = that.data('where'); - if (typeof(types) == "undefined" || types == '') { - layer.msg('璇疯缃�恜icker銆戠殑绫诲瀷'); - return false; - } - if (typeof(type) == "undefined" || type == '') { - type = 1; - } - if (typeof(where) == "undefined" || where == '') { - map = {}; - } - else{ - map = JSON.parse(where); - } - let callback = function(data){ - for ( var i = 0; i <data.length; i++){ - ids.push(data[i].id); - if(!data[i].title){ - titles.push(data[i].name); - }else{ - titles.push(data[i].title); - } - } - that.val(titles.join(',')); - that.next().val(ids.join(',')); - } - obj.picker(types,type,callback,map); - }); - - //杈撳嚭鎺ュ彛 - exports('oaPicker', obj); -}); \ No newline at end of file + <div id="selectTags" style="padding:10px 15px;">' + + me.employeeSelect(0) + + "</div>\ + </div>"; + return tpl; + }, + employeeSelect: function (t) { + var me = this, + select_tags = ""; + if (me.settings.type == 0) { + select_tags += + '<span style="color:#1E9FFF">' + me.settings.names + "</span>"; + } else { + select_ids = []; + select_names = []; + for (var a = 0; a < select_array.length; a++) { + if ( + me.settings.fixedid == select_array[a].id && + me.settings.fixedid != 0 + ) { + select_tags += + '<span class="layui-tags-span">' + + select_array[a].name + + "</span>"; + } else { + select_tags += + '<span class="layui-tags-span">' + + select_array[a].name + + '<i data-id="' + + select_array[a].id + + '" class="layui-icon layui-tags-close">醼�</i></span>'; + } + if (t == 1) { + $("#employee") + .find('[data-id="' + select_array[a].id + '"]') + .addClass("on"); + } + select_ids.push(parseInt(select_array[a].id)); + select_names.push(select_array[a].name); + } + } + //console.log(select_array); + return select_tags; + }, + employeeInit: function (options) { + const opts = { + title: "閫夋嫨鍛樺伐", + department_url: "/api/index/get_department_tree", + employee_url: "/api/index/get_employee", + type: 1, //1鍗曚汉,2澶氫汉 + fixedid: 0, + ids: "", + names: "", + ajax_data: [], + callback: function () {} + }; + this.settings = $.extend({}, opts, options); + var me = this; + select_ids = []; + select_names = []; + select_array = []; + if (me.settings.ids != "" && me.settings.names != "") { + select_ids = me.settings.ids.split(","); + select_names = me.settings.names.split(","); + select_ids.sort((a, b) => a - b); + for (var m = 0; m < select_ids.length; m++) { + select_array.push({ id: select_ids[m], name: select_names[m] }); + } + } + $(parent.$(".express-close")).addClass("parent-colse"); + layer.open({ + type: 1, + title: me.settings.title, + area: ["800px", "500px"], + resize: false, + content: me.employeeRender(), + end: function () { + $(parent.$(".express-close")).removeClass("parent-colse"); + }, + success: function (obj, idx) { + var dataList = [], + letterBar = $("#letterBar"), + employee = $("#employee"), + selectTags = $("#selectTags"); + $.ajax({ + url: me.settings.department_url, + type: "get", + success: function (res) { + //浠呰妭鐐瑰乏渚у浘鏍囨帶鍒舵敹缂� + tree.render({ + elem: "#employeeDepament", + data: res.trees, + onlyIconControl: true, //鏄惁浠呭厑璁歌妭鐐瑰乏渚у浘鏍囨帶鍒跺睍寮�鏀剁缉 + click: function (obj) { + var tagsItem = + '<div style="color:#999; text-align:center;">鏆傛棤鍛樺伐</div>'; + $("#employeeDepament") + .find(".layui-tree-main") + .removeClass("on"); + $(obj.elem).find(".layui-tree-main").eq(0).addClass("on"); + letterBar.find("span").removeClass("on"); + $.ajax({ + url: me.settings.employee_url, + type: "get", + data: { did: obj.data.id }, + success: function (res) { + me.ajax_data = res.data; + dataList = me.ajax_data; + if (dataList.length > 1 && me.settings.type == 2) { + $(".layui-tags-all").show(); + } else { + $(".layui-tags-all").hide(); + } + if (dataList.length > 0) { + tagsItem = ""; + for (var i = 0; i < dataList.length; i++) { + if (select_ids.indexOf(dataList[i].id) == -1) { + tagsItem += + '<span class="layui-tags-span" data-idx="' + + i + + '" data-id="' + + dataList[i].id + + '">' + + dataList[i].name + + "</span>"; + } else { + tagsItem += + '<span class="layui-tags-span on" data-idx="' + + i + + '" data-id="' + + dataList[i].id + + '">' + + dataList[i].name + + "</span>"; + } + } + } + employee.html(tagsItem); + } + }); + } + }); + + letterBar.on("click", "span", function () { + var code = $(this).data("code"); + $(this).addClass("on").siblings().removeClass("on"); + $.ajax({ + url: me.settings.employee_url, + type: "get", + data: { id: 1 }, + success: function (res) { + me.ajax_data = res.data; + var letterData = [], + tagsItem = + '<div style="color:#999; text-align:center;">鏆傛棤鍛樺伐</div>'; + if (me.ajax_data.length > 0) { + var tagsItemCode = ""; + for (var i = 0; i < me.ajax_data.length; i++) { + if (me.ajax_data[i].username.slice(0, 1) == code) { + if (select_ids.indexOf(me.ajax_data[i].id) == -1) { + tagsItemCode += + '<span class="layui-tags-span" data-idx="' + + i + + '" data-id="' + + me.ajax_data[i].id + + '">' + + me.ajax_data[i].name + + "</span>"; + } else { + tagsItemCode += + '<span class="layui-tags-span on" data-idx="' + + i + + '" data-id="' + + me.ajax_data[i].id + + '">' + + me.ajax_data[i].name + + "</span>"; + } + letterData.push(me.ajax_data[i]); + } + } + dataList = letterData; + if (dataList.length > 2 && me.settings.type == 2) { + $(".layui-tags-all").show(); + } else { + $(".layui-tags-all").hide(); + } + if (tagsItemCode != "") { + tagsItem = tagsItemCode; + } + } + employee.html(tagsItem); + } + }); + }); + } + }); + + if (me.settings.type == 2) { + $(".layui-tags-all").on("click", function () { + for (var a = 0; a < dataList.length; a++) { + if (select_ids.indexOf(dataList[a]["id"]) == -1) { + select_array.push(dataList[a]); + } + } + selectTags.html(me.employeeSelect(1)); + }); + } + + employee.on("click", ".layui-tags-span", function () { + let item_idx = $(this).data("idx"); + let select_item = me.ajax_data[item_idx]; + if (me.settings.type == 1) { + me.settings.callback([select_item]); + layer.close(idx); + } else { + if (select_ids.indexOf(select_item["id"]) == -1) { + select_array.push(select_item); + selectTags.html(me.employeeSelect(1)); + } + } + }); + + selectTags.on("click", ".layui-tags-close", function () { + let id = $(this).data("id"); + let new_slected = []; + $("#employee") + .find('[data-id="' + id + '"]') + .removeClass("on"); + for (var i = 0; i < select_array.length; i++) { + if (select_array[i].id != id) { + new_slected.push(select_array[i]); + } + } + select_array = new_slected; + selectTags.html(me.employeeSelect(1)); + }); + if (me.settings.type == 1) { + $("#layui-layer" + idx) + .find(".layui-layer-btn0") + .hide(); + } + }, + btn: ["纭畾娣诲姞", "娓呯┖宸查��"], + btnAlign: "c", + btn1: function (idx) { + me.settings.callback(select_array); + layer.close(idx); + }, + btn2: function (idx) { + let canceldata = { + department: "", + did: 0, + id: 0, + mobile: 0, + name: "", + nickname: "", + position_id: 0, + sex: 0, + status: 0, + thumb: "", + username: "" + }; + me.settings.callback([canceldata]); + layer.close(idx); + } + }); + }, + picker: function (types, type, callback, map) { + let pickerIndex = new Date().getTime(); + let pickerTable, options; + const opts = { + title: "閫夋嫨", + url: "", + ids: "", + titles: "", + where: map, + area: ["600px", "568px"], + cols: [ + { field: "id", width: 80, title: "搴忓彿", align: "center" }, + { field: "title", title: "鍚嶇О" } + ], + searchbar: + '<form class="layui-form pb-2"><div class="layui-input-inline" style="width:420px; margin-right:5px;"><input type="text" name="keywords" placeholder="璇疯緭鍏ュ叧閿瓧" class="layui-input" autocomplete="off" /></div><button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="picker">鎻愪氦鎼滅储</button><button type="reset" class="layui-btn layui-btn-reset" lay-filter="picker-reset">娓呯┖</button></form>', + page: true, + type: type, //1鍗曢�夋嫨,2澶氶�� + btnno: true, + add: "", //鏂板url + callback: callback + }; + if (Object.prototype.toString.call(types) === "[object Object]") { + options = types; + } else { + options = dataPicker[types]; + } + let settings = $.extend({}, opts, options); + //console.log(settings); + let btn = ["纭畾閫夋嫨"]; + if (settings.btnno == true) { + btn = ["纭畾閫夋嫨", "娓呯┖宸查��"]; + } + if (settings.add != "") { + btn = ["纭畾閫夋嫨", "娓呯┖宸查��", "鏂板"]; + } + $(parent.$(".express-close")).addClass("parent-colse"); + layer.open({ + title: settings.title, + area: settings.area, + type: 1, + skin: "gougu-picker", + content: + '<div class="picker-table" id="pickerBox' + + pickerIndex + + '">' + + settings.searchbar + + '<div id="pickerTable' + + pickerIndex + + '"></div></div>', + end: function () { + $(parent.$(".express-close")).removeClass("parent-colse"); + }, + success: function () { + let cols = JSON.parse(JSON.stringify(settings.cols)); + if (settings.type == 1) { + cols.splice(0, 0, { type: "radio", title: "閫夋嫨" }); + } + if (settings.type == 2) { + cols.splice(0, 0, { type: "checkbox", title: "閫夋嫨" }); + } + // 鍗曠嫭澶勭悊 + // 鐝鐨勫垪鏍煎紡鍖栨樉绀� + if (types == "workPlan") { + cols[cols.length - 1].templet = function (d) { + var html = ""; + if (d.times && d.times.length) { + for (var i = 0; i < d.times.length; i++) { + html += + "<span style='margin-right: 30px'>" + + d.times[i].begin_time + + " - " + + d.times[i].end_time + + "</span>"; + } + } else { + html = "-"; + } + return html; + }; + } + pickerTable = table.render({ + elem: "#pickerTable" + pickerIndex, + url: settings.url, + where: settings.where, + page: settings.page, //寮�鍚垎椤� + limit: 10, + height: "407", + cols: [cols] + }); + //鎼滅储鎻愪氦 + form.on("submit(picker)", function (data) { + let maps = $.extend({}, settings.where, data.field); + pickerTable.reload({ where: maps, page: { curr: 1 } }); + return false; + }); + //閲嶇疆鎼滅储鎻愪氦 + $("#pickerBox" + pickerIndex).on( + "click", + '[lay-filter="picker-reset"]', + function () { + let prev = $(this).prev(); + if (typeof prev != "undefined") { + setTimeout(function () { + prev.click(); + }, 10); + } + } + ); + }, + btn: btn, + btnAlign: "c", + btn1: function (idx) { + var checkStatus = table.checkStatus(pickerTable.config.id); + var data = checkStatus.data; + if (data.length > 0) { + callback(data); + layer.close(idx); + } else { + layer.msg("璇峰厛閫夋嫨鍐呭"); + return false; + } + }, + btn2: function (idx) { + callback([{ id: 0, title: "", name: "" }]); + layer.close(idx); + }, + btn3: function (idx) { + tool.side(settings.add); + layer.close(idx); + } + }); + } + }; + + //閫夋嫨鍛樺伐寮圭獥 + $("body").on("click", ".picker-admin", function () { + let that = $(this); + let type = that.data("type"); + if (typeof type == "undefined" || type == "") { + type = 1; + } + let ids = that.next().val() + "", + names = that.val() + ""; + obj.employeeInit({ + ids: ids, + names: names, + type: type, + callback: function (data) { + let select_id = [], + select_name = []; + for (var a = 0; a < data.length; a++) { + select_id.push(data[a].id); + select_name.push(data[a].name); + } + console.log(select_name); + that.val(select_name.join(",")); + that.next().val(select_id.join(",")); + } + }); + }); + + //閫夋嫨涓嬪睘鍛樺伐寮圭獥 + $("body").on("click", ".picker-sub", function () { + let that = $(this); + let type = that.data("type"); + if (typeof type == "undefined" || type == "") { + type = 1; + } + let ids = that.next().val() + "", + names = that.val() + ""; + obj.employeeInit({ + title: "閫夋嫨涓嬪睘", + department_url: "/api/index/get_department_tree_sub", + employee_url: "/api/index/get_employee_sub", + ids: ids, + names: names, + type: type, + callback: function (data) { + let select_id = [], + select_name = []; + for (var a = 0; a < data.length; a++) { + select_id.push(data[a].id); + select_name.push(data[a].name); + } + console.log(select_name); + that.val(select_name.join(",")); + that.next().val(select_id.join(",")); + } + }); + }); + + //閫夋嫨OA鏁版嵁寮瑰眰 + $("body").on("click", ".picker-oa", function () { + let that = $(this), + ids = [], + titles = [], + map = {}; + let types = that.data("types"); + let type = that.data("type"); + let where = that.data("where"); + if (typeof types == "undefined" || types == "") { + layer.msg("璇疯缃�恜icker銆戠殑绫诲瀷"); + return false; + } + if (typeof type == "undefined" || type == "") { + type = 1; + } + if (typeof where == "undefined" || where == "") { + map = {}; + } else { + map = JSON.parse(where); + } + let callback = function (data) { + for (var i = 0; i < data.length; i++) { + ids.push(data[i].id); + if (!data[i].title) { + titles.push(data[i].name); + } else { + titles.push(data[i].title); + } + } + that.val(titles.join(",")); + that.next().val(ids.join(",")); + // 鍗曠嫭澶勭悊鐝鎸夐挳鐨勫鐞嗙粨鏋� + if (types == "workPlan") { + var selectName = data[0].name; + var html = ""; + if (selectName) { + html += selectName + "锛�"; + } + if (data[0].times && data[0].times.length) { + for (var i = 0; i < data[0].times.length; i++) { + var timeItem = data[0].times[i]; + html += + "<span style='margin-right: 30px'>" + + timeItem.begin_time + + " - " + + timeItem.end_time + + "</span>"; + } + } + that.parent().prev().html(html); + } + }; + obj.picker(types, type, callback, map); + }); + + //杈撳嚭鎺ュ彛 + exports("oaPicker", obj); +}); -- Gitblit v1.9.1