@jecloud/func
Version:
JECloud 功能库
1 lines • 4.33 kB
JavaScript
import{createTextVNode as e,createVNode as t}from"vue";import{defineComponent as l,watch as n,ref as a,onMounted as u,nextTick as i,h as o}from"vue";import{Panel as r,Button as c,Grid as s,Input as f}from"@jecloud/ui";import{isNotEmpty as d,encode as v,decode as p,getFileUrlByKey as m}from"@jecloud/utils";import h from"sortablejs";export default l({name:"JeFuncSelectUserResult",inheritAttrs:!1,props:{selectData:Object},emits:["uncheckUser","getSelectData"],setup:function(l,w){w.slots,w.attrs;var b=w.emit,g=(w.expose,a("menu")),k=a(),x=a(l.selectData.value),y=a(""),C=a(l.selectData.value),D=a(),A=0;n((function(){return l.selectData.value}),(function(e){if(e){var t=e;0==A&&(C.value=t),x.value=t,A++}}),{deep:!0});var E=function(e){if("all"==e)b("uncheckUser",x.value,[]),x.value=[],C.value=[];else{var t=p(v(C.value)),l=t.splice(e,1);C.value=t,b("getSelectData",{checked:!1,data:l})}},j=function(){if(d(y.value)){var e=[];x.value.forEach((function(t){-1!=t.text.indexOf(y.value)&&e.push(t)})),C.value=e}else C.value=x.value},S=function(e){var t=e.$table,l=e.row,n=e.type,a=e.placeNum,u=[];"menu"==n?(u=C.value.filter((function(e){return e.id!=l.id}))).splice(a,0,l):u=t.getTableData().fullData,C.value=u;var i={},o="top";if(u.forEach((function(e,t){e.id==l.id&&(0==t?(i=u[t+1],o="bottom"):i=u[t-1])})),d(i)){var r=x.value.filter((function(e){return e.id!=l.id})),c=0;r.forEach((function(e,t){e.id==i.id&&(c=t)})),0==c&&"top"!=o?r.unshift(l):c==r.length-1&&"bottom"!=o?r.push(l):"top"==o?r.splice(c+1,0,l):r.splice(c,0,l),x.value=r,b("getSelectData",{checked:"drop",data:r})}};u((function(){i((function(){setTimeout((function(){var e={animation:300,delay:0,sort:!0,forceFallback:!0,fallbackClas:!0,onEnd:function(e){if(e.oldIndex!=e.newIndex){var t=e.item.getAttribute("data-rowid"),l=C.value.filter((function(e){return e.id==t}));S({type:"menu",row:l[0],placeNum:e.newIndex})}}};h.create(D.value,e)}),100)}))}));var I=function(e){var t="";if(d(e.bean.USER_AVATAR)){var l=p(e.bean.USER_AVATAR).fileKey,n=m(l);t=o("img",{src:n,class:"userphoto-img"})}else t=e.text&&o("span",{textContent:e.text.slice(-2),class:"userphoto-span"});return t};return function(){return t(r,{class:"je-func-select-user-result"},{default:function(){return[t(r.Item,{region:"top",size:"40"},{default:function(){return[t("div",{class:"top-panel"},[t(f.Search,{value:y.value,"onUpdate:value":function(e){return y.value=e},"allow-clear":!0,style:"width:100%",placeholder:"请输入关键字...",class:"default-search",onSearch:j},{prefix:function(){return t("i",{class:"fal fa-search"},null)}}),t("div",{class:"div-icon"},[t("i",{class:["icon fas fa-list-ul default","list"==g.value?"select":""],onClick:function(){g.value="list"}},null),t("i",{class:["icon jeicon jeicon-work1","menu"==g.value?"select":""],onClick:function(){g.value="menu"}},null)])])]}}),t(r.Item,null,{default:function(){return[t("div",{class:"context-panel",ref:D,style:[{display:"menu"==g.value?"block":"none"},"width:100%","height:100%"]},[C.value.map((function(e,l){return t("div",{class:"user-item","data-rowid":e.id,key:e.id},[t("span",null,[e.text]),t("i",{class:"icon fal fa-times",onClick:function(){return E(l)}},null)])}))]),t(s,{style:{display:"list"==g.value?"block":"none"},ref:k,"auto-resize":!0,"show-overflow":"ellipsis",class:"context-grid","keep-source":!0,"show-header-overflow":!0,resizable:!0,size:"medium",height:"100%",data:C.value,border:"0",align:"center",draggable:!0,onDrop:S},{default:function(){return[t(s.Column,{field:"photo",title:"",width:"80"},{default:function(e){var l=e.row;return t("span",{class:"je-user-photo"},[I(l)])}}),t(s.Column,{field:"text",title:"名称",width:"80"},null),t(s.Column,{field:"code",title:"账号","min-width":"120"},null),t(s.Column,{field:"deptName",title:"部门","min-width":"120"},{default:function(e){var l=e.row;return t("span",null,[l.bean.DEPARTMENT_NAME])}}),t(s.Column,{title:"操作",width:"74"},{default:function(l){var n=l.rowIndex;return t("span",{onClick:function(){return E(n)},class:"delete-span"},[e("删除")])}})]}})]}}),t(r.Item,{region:"bottom",size:"32"},{default:function(){return[t("div",{class:"bottom-panel"},[t("span",null,[e("已选"),C.value.length]),t(c,{type:"link",style:"float:right",onClick:function(){return E("all")}},{default:function(){return[e("清空")]}})])]}})]}})}}});