From 33aaa548c166db2bec8a733df0b591b198ee124f Mon Sep 17 00:00:00 2001 From: zhal <15900249928@163.com> Date: Thu, 8 Sep 2022 16:57:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E9=98=85=E8=A7=88=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E7=AB=AF=E5=88=9D=E7=89=88=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/com.actionsoft.apps.coe.pal.jar | Bin 1727219 -> 1729012 bytes .../PALRepositoryQueryAPIManager.java | 89 + .../designer/web/CoeDesignerWeb.java | 452 ++ .../repository/util/CoeProcessLevelUtil.java | 6 +- .../repository/web/CoeProcessLevelWeb.java | 2 + ...al.pl.repository.designer.view.portal.html | 1 - ...epository.designer.view.portal.mobile.html | 1242 +++++ ...designer.extend.link.view.portal.mobile.js | 2264 ++++++++ .../extend/js/designer.extend.ui.mobile.js | 489 ++ .../scripts/diagraming/designer.ui.mobile.js | 4586 +++++++++++++++++ 10 files changed, 9127 insertions(+), 4 deletions(-) create mode 100644 com.actionsoft.apps.coe.pal/template/page/pal.pl.repository.designer.view.portal.mobile.html create mode 100644 com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/extend/js/designer.extend.link.view.portal.mobile.js create mode 100644 com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/extend/js/designer.extend.ui.mobile.js create mode 100644 com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.ui.mobile.js diff --git a/com.actionsoft.apps.coe.pal/lib/com.actionsoft.apps.coe.pal.jar b/com.actionsoft.apps.coe.pal/lib/com.actionsoft.apps.coe.pal.jar index 92c58616dd6b46bc1c05b19704e933c1b39fdc04..8067cc509eda398e10e5bfe2f53da5ecbb9d6a4a 100644 GIT binary patch delta 141646 zcmZU)cOaYLyFZKw5i4p2wW&R7@4fe?s8ySyMeUfiSB(_4cWcB9wKr8;?b=$aXp0)f zn{vMAoZorCw>~8N?*;x7M8=isfsS1-g#HryA5vclQUKg75lK^U)zjgj zlil5|uA>C$@PMg#4B&bz2298u`tXc|E7eL3zrNscp5Xszc{nB;-re2AqipbYjO^Us zm7>etUHmhK^e98G=exVD+{fU8%Y382gc~oQ6Wl@8^??6^Ru|Aga11#RB^>dYlgbR@NR9C zGZg*+S+s#3hyPC&$#;z2cTZ6Y4r-NmkAf5_#)^@9Z|NU5@Q_y+5F`Z$MyvC^^)b@_ z!iY041n$U0s^wr5-(USK#)!GQg4cRra>2W#cCI}H?LC3jc%%vwR9Byf!b5(@Z4 zE-Fpb?F0B21WF7Kzz2}R4{!kocd7oX75JSc5`2LD|I+`5!L1%Zv5+Vdp58Cqk$AVj zOAN(@qcTRZBZu028d;Q!|18iT`yl|py#|WOJM;MPKfg$b@2N!Cf$oIyk%kWdH1~4< z2?HhKLIy^55d)0x7Lb&rfQ$R0`&ae!;_eFe9|rFtLq+Pw0ARW&%}DBB z`3L|ok^Q`Y#Cy_EnD~9prRZGn2}1xb{Ie9`t})^NdgC7Ag`y0RO9RU8dJT!%8Z(tU zerewVtnPdCzlAf3P!2k>0r}*2c2UvD-(B1lFUkQXoRAI*Lax;VOz+dY+qeHL;3NGT z0WpMk8Ynk>_rlWs0Ok9H|KkP|9>@U2MfMK^e%$xLefzBfaNzr&|0{kJO{k7UK}haV z0O7s^I-h|(wiKl-s)WZZBaTTCd@RR%MV`<|X$ z{5zY3@O&;*8U33fNGW$rkNX`*71>(To!p)7gd~&_x%>#Y&v1vKR%PJ4a;QCmr~_?9 z@38wsQL!VdBY>Esci4aO0mA9dfY|WEOd!txBYTHq!3h+h*htYVpu|08s6FP(I0a%O z5xGEVqB{laF;Z?M9Rlci&;7rRx|8@^2mDTVC-EO8c-I_C^K=?We4plj!ul^)5G|A| zH4LnX`yqZ8;4wee|0VoR>mQEPBF2&i{&x&;I%+I1a)<(}_r8?ws^d;>fD-GH;!f_a ziev<^2#^>8SYWE$0kJjJ7b65vw2tOD2xogFh&lAuRTK*#<2yI5t-|SO&9;qT4Oh8=sta5NbF1kPs0N?tNpW*1vI239osLK?mnm zMEOQxhO#p;!aE266!(@V0-#X%xB{3k>Z2kE`B4!Ecy&h!Z!#G-@>mAUc^_D) z8EWX~OM!@ymI`39d+eXvjCW9IS*J4i4oU9@Nx*f~!8re?BWiiD`QUV>U=sL`98^cm zWRRl{SpX1qviuiDhn!XiN8Qh*e~#f+)?gZBg%Mcf$z3pA3aDA(Q44+uM;(n|q(m*) z|DItKeTvANCU6Gxo!s5gqGjg|8IxyTvcXxLZ`7Kapw*3N9A1G7i`C9!K9L`G>Q>)wFOa;Q2?mVj1zc*vN?t z+{OFBdPk*4CzKKX7=)@inR#rUjCRzy3+aO5!81Fdcu21j+`fAz|7G{j2{PsbuJQjw z0-r$QKKwt7+?hq;jPUs}RI%jq;EKQ@Gq`N=s3_L`VQs5olx30B6ND>ZV!h<5s8SsSeXVRTq$Y&@GJWmu42uD4QfZ;dOK*+yb zW#PG^c*O9FaVR0uo*(Za<^Of5gNKQn*Tnm9KfCXE_izAHAV)Cqdo%BZQT3@0i1cMm zt$xgvQHak0m(Ih-fh|3smVroS7klr2WO5qGkqec1$>y!k{xkW#UU~yVe|xlCvhR|J z`rfCXN=?(TNo(4^>!JIAjZ90~4Pr=rwV^C7yGlmm*un5YX6EL?#pUL-1Dd)CW#sE@ zF(nTdJo)CTq7ZS)!#&J#XI5ucCsuyEr~oY;6DwcGg*t~9;xMmb@*(nq;j8Peh7#VZ z<%A5L%f}vayPX2!3?3hIk4NPvh4%FXHm><6tBJnXZHlggdy8!Jic84kOS#3v=v_o} z=P6GXdtg0F-1Nj54J}I>9Ytq+Z*?R2C^VB;_qYi$WS0^m9k7G#iFiW!d{HaY z143*y@(ZMV_=Kmb9y4v3$w*A`N4ep>))#9_HeYomc`vS%vyBTXLT4qGO2VJM(vJwJ zD=M(DBKU*1L&0xlwGt8o#5V-QHIM6P(}@D~MYNHe6=yKpp`5e~>pkto$CZzW)2u&o z^gKK~Jf9+ywTc0(H$~7w+{2@a4+d&9>!>c7JbzdwPdP=?TNuEfmL+?}gPeIea}CF= zA$GL10ctOjpZv5)=;l(jeLwFg!6V2g&*+Ic(`?o9ZV#O@-{}d~0FI>cELiUZ&A;Ur zS><1v3gHHrI=%Xl^)J~osu#~JMSjWAq{=*F6H+1!`uo-;yR_D3+*pcXl$X4npElVq zDC}2&g6PYwK#j~YI`S{K&ny@?(#@EEjqqInei_|tZhs=j8=drzT2Jj$ZlNR^_SJaT zoj$bBUaiC-x!_U`;uU1#v|Fr&|y?q)0=wkW%Rhh6pf`$<$<@%bLk)BKy`YHzb zBOG8Xq4z*3h@!WdFs~;fqF3tNI(-AwVIJG+ndH07u`UJu17`>+dO&krKt0GLvC~Uw z6857xg7`7buXPSz6FTirzQrU`66~9N(6VO|+?zO1OVR*kV6PL@GWBOMD zI`qxf%iYfPZ;Ha8s}S*3k{x%P&%Yl$O+J43+7M86-71EK)hdqV^QVbWY0>{mi~_>~ zyHS_xne(g;>&D`1!G?6%-TfoC{b&U&M!>@$y#7PPx`FWHgTpCeMtaRx2@%^&8_!kL zS#pwd*9wa5{bAXUh!fXY4q|lT#Rro6e@sv$yX(&Az6{aio|XxACAn!vEcvX)I>jP`mDeszM$CF{JVYYH|H(?GR2KW zjZse#w^N=}&oA}t3cgXz;@aD#S&l^o_%s^%upin+czk*1C2{JjKuP$O+<46Q0bvv_ujG9kbOpfqc)D z`>7YSdbb|3(5`2wXQYktw~TlwI2w&lDn(>2kW>tfXTxF^5=JkcA~_{`Bj5fot4Zbw z@Cb9CV`f1HGKk8(k=}5=q~G`{@pG{kFf+jv2p7wYsGn&r*Ht~I=}jFmdN*RItobyP zJYG0fnYcH1oA~ou9Ftztm}0d~=jTWBtc4X;98X9Bv8>T^Y|GUbadO1R1{`1XIaiNY z`Re6GZra0aG-zjCjl0Q~HTX0|3pqri_I4$mcb3DI1vpAFX&hhXP!&n2+w?yUc}}G| z2Pk5T`k1|WQuY~-h`D@0jfg^UIYuaK_xS4Zr+wvS@psYNt_8wLKSewTUtsc8QxWuQ zb#pbF_WU9Ji^ju#P9NMi(S&Enx;_Yg+M`X<7H>=etG?PfloKsqD?5kU6@(dkK9!{; zXSMyUXK~{8Ufz0(Dg9T8UyT*GhR?iHLD;~9NZJ9!vu(?;&7%KY$*%_cNPE6^$&pQr zzO2KF;K_<6QU zHeg8sta?rOoXgvt*7n7SiHND_H>Tbu+rCSrp`cLH>dgGivVmZf>vvBsyN|!mnsBS7 zmI4%)aZ-&FBb5bTni;yl9)10dBs7TZ%T1l}ie+$f_Jl7ng%rPLD?4v`|4p+#4lBFP z-7G!h1u;}=Z?}O|*mcltNJrRS$W{BhuShOp8K&kRAa;8(HB9(aI_Hb8h=c0Omju)K z;uk|YMmntf5x(xmya}tiCC<3+kAa=o3Bo`njc(fGj4Y@;R{bz_VX9npN?=xF#)q0oZ*xZfZ|Mg0)w{hC zov^GW%vjmd1!mmC_X{4(qkmpJ?r)Qkg9_Pyr(-0F_4T%+CL<>qm5VEswvKM&9gov3 zePf&gTxnd@)YPTgU`V2PPoDFcES@0P8MM5@mjV@0H5n}tV7RH{3uq!0{9Up&_Kr!l zH*0#c5mT&QyjrlrTw zk1w%7_-WUXlg`3b;2jHHvsX00MsgUUP)Ns@MzJw;<9G7Yf*cIjvhQje;d_M&nzDw< zo*e5WZ)D${b1q6q{@58(;d-k?N%5S}yz7&Pb*}&i z`?B5)FED)|W5env$tQ}jwN;Fdv6B--Aoa!?Ij~x&p}vWQ%-dfA?BHDGpDmfNKioF> z!!2T*bHHs?%Aukpn{IZxtz~$^*4+bV^N)O*=4P(0 zOQT#N7W(*<*XV;X!l<2Ues zslK{FnA3YjzGgvqM<2?Lc}_h8%cZ(wzf5ZwYS+Fvg*F*U_OgF*Sis+V30qO638$sq za6ahc4wI50-d23nCsRutfFPG@)Asuk`8+Lb`t5?e*WsVW?u#P?|%ZN>2&E9v+>5 z<@y{ky%&jf&>>XqA!iEI?SbV-@Tg9_jbJ^tj9}W~7eT*exN2ag|8^}9#un~!8(s)~ z(Yo`%`8`ypq^~}GO3O$eKfk%@5M$oljwFsf|5LM|OMBO|YZk|7=S05=Uc8!F0{?eW zL&9`26D)yLRVUwQux|+eJrQ|cI{lqSeX`v~{Qo=if=mzrctYxE8wz%G2xT{c0TEfjj3h59yLL~O3c4uCCh}9mxZP&0Cp5dE;1k}R zNGbf;9x<%_b&V<;@^^}+Lac}s>vabX4+7i++#hI1QyA{D(p{}k1?v#t)9|+#o@lsM z$=whR=U5WK^KOH_4JZ4BYf}t#n3ls{cj@Ls(E;giR)#Agf#Jl_`+pt$g z)`E_M+4lf=V^I&mfsi%%nHpR)?&9(|G;aG)`LzdF@E$ufxIUk;qX)COBA+pTGnSOZ zBS^@;;JL`M%-43^&}KsX{e@yKB zOB?zZFIcOahvb~O>lV?qeasH5(e1F*Jr-kLR@H80oySK+byFR?gse^+xuXXwcXnd? zrUu{2@Lwq7-(bQ@w_u^XS~r&K?vP7B*J_2+Em}#q|Alr4Z1TtqvKKNzjCNaEbBkV* z)V*|U`MC;928J(puAt_Pt?y7l3K7GVqoQjdl5+@u5<@!!DYw2flmT8E%G#x^8|n!9 zf6w1LaS3srawnAm>N|XR`Buz0r>y+9=^CjwdPHtv(iL6)`>Tz%_gC~2AFkwg0Qod% zd!hL>n0wv%G#CYC^e4O#hiHwIa^tc))H;N~Ml88;dDsq6hp@G(B32Q~N17JJ6>(quHQjXJItT+@cx{*a7h4%gvYAa8Nt#s%#TQ~$GVB65 zNt~JOd?C3Vz0ztOV?B?@=?$HQxfpvDkV}CGDS2<<&_z6FTz#`ILW*wK-lXLpOc5A- zG6=Z@9he8DzP7Qrfp@~9>h+JXi7ya;yqV`Z<7kc8Gf&NlooRtCo~9M2Ck@i&`!W_u z$(6aP-KP1^(YzVU9prcF^EXV|aA$%+K?HJngNpebRB|;s9jp;rrK{*5+ToeEl*R_Q z#^qu|VagTq4Ms3o?cRJA)+Ls`8GA)d=We?_5X?>^G^-Sj#|pzfHFx&RsA$RpY-d9* z3kwtL*3_t-z2iQnhq*PceeqZPIu*Bc#3tZq~nfpYOmv7pp6Xkr_y&f_Iz`MdCE;W z*@{CP1dxMaoYMH;VwV32^QYZleE%mke}!-lfch|RPd;A?Z;ugjNglC+ajL6B8$Pj_ zzj3RL8r>jl(o59VU4THX=o~8X> z*_ZKPVX5D#)h$eNn$77; zI7`u{d`)&*9A2?%)G6Qniu5#q^E~7-NbwpSS1JNza7};nUK-zqJIM8pmFWm5a-M1@1l9`4e)9Ro;npDx7~qHnSRf8KAR@c}kdn zLu5eRB^`cAu5%0CTa{5PzrZfP#XPml-*CL9nz;?R6e_<}EJo)9xsoBkR_R@GT|HeS zR%m#-U_dGQW|x;07B8_0DPjTE^$jf>*Odlw(M5)~ggxKUbp~jXMgT${f)41cumR$j zCV~k0&@X7>c=PLBiD*7dh$mLwU1S*I;Q7feGITS%N*WUYg1IXL!wlFMAo<9Qq;rC&8Da_BTC7b^73!Q9r4p zG*PfF)1BEpNi6rpHUm@=_n0V>+kQR314*K-6M*sv)&(I0JQfhC@TpU@eM1vkL}S-1 zUsG-l&H?8o0)1Y|Uz&=ITpWA8b*F?j&FJ#{xs|T-XEZ%JGJTVGSq{3N>9V~AU5w`; z*^QK{Un;-2z9qY|kANv=gdC59!Vc|1fqUO$o>_#UFDYohnwYi+zcJ_mVI31kmV}g4 z*h1f*np>G#2}O)!WdMZ0c%ljHO{AfDZnm!C;)FO<0fdM@56(Z3KsZ9YBHEKW+Gyvo zLvjdRu@QtAR}ciQV@MvrhaM3ZVu5$?zzQzcOgnGa#f|L)gdsRW>0?C_=&ycaw!R+t z(@PQ<5tgLq!G%cT^Lf}xGe5X{jTQM7big9CZ?j`CKk7Pb*X(O=@%ec{5^{>-Ybj#M zsp~L*O)K(i|NPej8lip01LElT`F4_JITLIhrcId)(>*a$Xc^`A38eE{2Zvq2yLpk6m3$_n^L33@Sql5D# zI=GjFl?2U^{rWLGM%1mKrabEx5l1mcEJqec!~9V!Hv-3(vf0>+ffHmQO@xkDVXrl` zBAcWgu|s_59I-=vcpalcj1o*_#7P<`CkOzrA088lXg^dYoMk@%+~^&ZLwy9eMcs&i zah}Z${u7jRZBz}+^Tuv$jw3sNC_vIOor7UM)YmkGi#R6%433XNo6ILEP5asAuVVEZ zNJ%P-*Pa=QD~hK(X+Eic-{@F%GE?gOW0BqeNtH9v#i;;Tt1Le}OpwG&Z$eQP`97xr zb~>S7^ZwMyW!LE;a6i+h)FGI)oKm+bq54={)2Kq`pX5#s{SaEn?{GOgqdS29;jj(@_>(3tzaNe(qcHAKk;ZpiG8Nj78%VG)GIokNx~0z;67R zX3w6x?w8d<)mx!{`Z`gn9#GM0$@!7&xp?eZkkL=|y=9(8T2@N1{(d8EZS35Pt%~bS zWZ^Z1C7Sa0M@+Je+I~2W(sqmE4SD*Tuu$!^9r%;}Y=QRM@R&wp*?@##7!0_$pN}_9 z{VJp>)p;JMmMFCzwkV$y46qKDx}j`X)sdW!pYv$6ja}6{7WWTQn+(?Gao0P>2H&W3 z=dqsi17QVgH3olIlPMfwWns774KU|hy#}Prm9P|p>BNnE{fUs{Es&-QXG8W)n0V+o z##3}^#cFmM3>vIzH0(7PyT@zB5kYGEvC#druKcb(ieg#{3t*tovFMP+@0PCb=y^5A zK&I9v+mM;o7dXn@`$2)0{)yiiJ#;#3~NmtjqHKID}W_9 z5PEDILW}!XWNi>2jeZ`}rH!$T+XV->V|HMitF1la_)B60Em2aqsOZY3aR0{DWwwh< z`03LDK6f5q{3}4Mhlv*~w)rp+-y^Nb=a_r#Ykr&Zx&z`9X9M5}eI+ibEr}9ow7ze$ zE!05+*rGVk>>BTZDU%qUW5uqj^acn4zw3;z0^4ZMTT_0o>r!r_ukpnu6{+-dfmJ?l z$dlkrXLW#mG0s^it41lc85CY`kiZB_D7s~?4&KQm=iy4kQA8|ty_~7kT{8=D&mn%R zn5R;=@f{sTxOudFWc&B}FF;`KJ4Yb)hc+rxfxjA{I2h<02JGU&3?}j*DOfQ$XBJq1 z>x~XQZ5!YL1dASXBs2WtkiB@s3M;BMk9@(8S#5R#B%(6@B+Wf9W$8tI6HJTEFLtN(wPwKt~{2uivCw??G<__)wyJsH2UAC zpiKq3gXOYgn0DPK+T$xIEJQk5By?4+TV7@EqPL5-z%(E&Y%oNc;4hBzd6~+%2f3tV z3`weVznpU2D_d$<)&r^D^ZLJ{{yj>aGCVvs?vQS)Ft|sus+t(sm@n~S_I z+at7F?&Bl$TPd6dGf#V+iEU}L8~HWq9^o5X%KbdFTei`;@sL~UHIPm)!C&%bmUEua zTf)tnUvm_4(3(YtFT|>Ypo$iSRGN|;M||W=QX4^RAgdlW@wLeZl5!QuB&=r zD?sEP%utHPeNRXERM);uPg|Rjv$K<_>m06vP^ZrYP|+wQ;ddGQ2*G zDeAX)Pi~cObAPwu)tQv0#KqbZv)N5~?Z_GBcW`1=ZB55-BW$H>R_WUNR&k9w4!W$nuiKnPLAcb8Uu_&Jm zkcKHn88hj{EDv{gP1+$H)<0V1*D*gthN0IprqqckD`Qo;7Z zr=+*6V6)R#i8BXzjm|bXAh(GM;TwWjy z*Mt?nrX){H0%OTB&YwNwMIaobrWXpZQe;m2@FlHtKc$u1YSsQ?|Iz1n&PCBJ{Ws@G zU7k0!;1?fMhv*@WcvMn&(QvWrY4E0+D~%@8rje0=m$(uTpiJVne}tjWNM>|pmB=)m)H1Bf7*hw@&wRhf}`~ zpX*|XhO^hA0ZY?8l{K0rbHb3OD}d|$%QIH)U!{l7FLMz%LAFg1Ullnfy1zGj31I@< z^t&zUtiNhLlzjSbsWf(3g@r=IAR_~&fv137h##&ijvO8!$eCUGvWu_mfy>=Ek04!o zM>BfL^!hc9r>l1|FBwUkdq1B#$e^@XU$w8#$C}(TM(FaB3FG8S1+kVkXY4T5GUp-W zNP?M?RT-#1w$`n1(1?3sU*-51PT`4N)@xjxPc~^lB2I(n zx;!$aC@N5(g^wxc@@!q;?4}w5n<`~1TkD}MlhWhATnu0ql&7&I3ehjZu-Bl3sSqL|;-;wLEdIX7J2&7sVz&Z^o|Qb-U;~WlB0W&za}p8Xe=5 zKjWvc_uU{p;wuTQYB46{8CMp2ly5}s+ft1}khIgFurN~$TVK`#{2@%3ptmw5klq#A z_;QyhRK0e=aK6M*EiJ~&k(ZAIkD9J%ae9FQJmrb10`^ISF!H)y??KiG=7iYNxC86TI(@=`#neV0=!Nefp$ zvB9L*ut_}e#pFT+7VbIx!QTtd$nye~_Zt^ll-kFi#n{m#1MVP+puld3e7cWzV zqb(&xNyX6S9$3w>Fln=D=n-3BXwOEhnB_W5XN@}YR(Bnycb-RjL#}91dfdtG5m(4U zN~$|%o|aT?+xGlbfon{h`+FJCn{CVmr9yh^zLsbeh;@8Cht>~8$JlR5 z^>4TPK04vk3t9;^dBYmhKW|O#K3i&fM`r@I>HGYVRcf@iW~ixoIgp{Tg(o)6`dTD% zsv*B<$k#x0h(a-URP#;p*iXe%Gtmz);=+-jK_vzYmFGxR($kJtg`WBpy7GypF9pb{ z$cji8pW!|R0!Y4O^|2~SKSEvhPYCHmJknofNx}6R(OEelHXMoYtTBLc=xpm z-12wn;;!y9Z3ae>a_kX-$tuyUN2;zV59>CF{2A$WGQRNwLXs!oLz6`t$7!*P)yJJ| zd*8P>#Yh4WP8?dW8CAOkm14)EL>kN@K4^FbCPzZh}gD-pv^G9i@^?JRDV0E!;YfA+a6XUlW&?8+0ddBzSJd;US&8 zV(<%^Zsta03oD9dpm$MwFXet5NF|~tagexG(hz&n#S(eTPtkmR%VNmw{@XS&fqyId zA~6}&kH*PQ-4dx#@i7btNV+}h`ue&0WMOQ>)7svRi9%%mq3jTq(1Z<8T*x&c z`nrR+)&kad&Oa6VXP_sWyV9G} zNogp#EnfeAv3J2#HQCT}s5iqH9=c~T+cTciK=sY>Q|lnz)Uk@!lGvUMBE3oE%@FaQ zl&9}tZ!w~N=ReG`%C~)z92Q1Ex~?V;3Qk1yDiuOq;SD(DDq9h*@DjJpWuHYx?d+Rhzb9dWBk6pDBBC`p4=9!3=$!dBaKd$HXdVGZK$1-b` zU?g*zpU0nI*c+3dNKu%qb>$f7_+mZjmifK4i0MA+L(WyCo3-_az!5xT7=ay*KBDGTJ3=$ z8@=L;mh`8|$wGBk>4?Ho*?T`t>W0R>c?N^7dzsUD#o!1=*$hV(Z~yegZZvaoT_Pvmm zkZe?>iM+mPi|UY#?3=-%A)*WHNHGqZ@!X%+)z7KbwR4!+qzq4cn@#8JVE@(JgUiCQ{|ydPi6XgRIz39WCeP515Qj{ful| z%iCBTVvqzk8adzS)Lr5i%+KQKO8f(d0Fw8QAf#+GnJbDrKS^? zfLW=drn@Hd^klP&pN%Q*hvth7R#IM=gGg5FBQDf~X@pYRr(@=p#n^$Ey!ZQb*=vqU zCIfa;F|VzcXh_H?>Zm>h1T2~HO6t0Ndi0rqlVdJ*g%WQjBLzzQAUuz1n9jdDl!A;j z?tq%nPQ0&d&3QjwRpkoykJqyqZBVKD zCcCMHcgx;b5vST+@Qysf7i4;(q-py)2K%meQU> zwU{%Fz5eUL*1MDi_1MgF4P}&?~K`{7`~tTa0!Q3|tq<{$sF=uZ0b^ zp#|cCTZ&&YR=}=LR?QIjDinI}sU7eMz#NaXPmCHqkVu9k#EXNbts96Q@LA7Ns=9k# zOq&)_kWvmMF7_&Z9v}F9X!BGR;pzxYw14@bZt}ASgZ+r6qAFeAa~H+1&lv`$a6~eg zc_XYm>OnExRINE#!*5kwKD0$mAE8q0vKON2 zUm|N+(r~12qpR$LU2NE{S5eR(QT48VR|sE!7lWN=bXg&0<*+a(sXhh-i(%nYX5=Dq zN1cWRCJhf?Lw1Uum9xJw`n2?e)vJR=k+6N3i?z4y9VLLgZ;G5z zlghRwuq4VeppZXZrz610fJJJ_i&U!VE35l6jkj#P8DT=UQp`ZyU49$oX()*Blxc`< z@tJxBx8;0n`(dT~4&e3PH)V9~Vz@9=wDus2THL!VmoEToyL-4Vfdz5iQFsl(jxrhj z``v2oFI3+{Billt7I5=z%K25cF?}C10vK63NXK0fR6)#T;WnRi2qSP(*_R7Q9{LdB zJN2uqva0TrB+^8$)X;T?pKU-Pdsf+D$FUwy5ZWSMk}_lUgmOB52;;24ZDx{_YayeD zk-Kr5?}U|?lY-LtHLS9%MgaB0g|esb1I;?MY`@c&G!`}qvOF1Xj@XpRqh5(hE9F>< z6@3?NwRYkZ=Ixn6;5rU5T?C)uu-JVZ6sK-^n-Qd2KQrq{>9<1Jvb}-qd9HY-fMF<- zn1pdX6%LTVPkqrt}WXbm~rL+j+v&~yoK2C>z{fBU$4hy^S<1`bgM;L&Xg zs})V_V&Xq#=xhF-_=GjLb#*zsu@r)W6Xf&nil+hB5de$VX#;KVZpX5HK_+yj+q!BFjiA_r`g0pIT zbaiKkbUV}BO+cP!dO;H|`gOD8!iEy)mx0zk3k^l6G-^y}UnssW;lN>t=_zd&((pmd z!<0M^*!cZ8`83WA-;lHv!>6D^eqG%q1X&VGYZRTMY<;ky2VT9VE;=;9`86|7f0ib0 zrOJ#^dZJm#Hi?Ha%D)FuJJ-4@J|tM>WmoFiwlug{R2%%7Rm!&$VKj^SX~mZJ^B32M zbnjQ_lJ<%OO@nfN&4aHNG0LjHj@XdA>qe+%Q404lH~k$C8WfD()V%!jskDO$jgg~& zT<2U&QIYQ$#-eytQfQ0`zy^I-N0&=dAPVkdw?-?$#xAb%{iNOPGkXoM98A+z zqyv#w;}N1*!Xy<3YWX&nxtsD+@b&Amw;4zcewtBOsPi!7*#P<0r5US%mF8}no>R1` za;dG~umDAK{xTNHkFj{cPdpgY!Apkzd+k<5nNhIBethQma6JSypy8c+RPhr z%b$wqdYH?qeV!FW3%${41zdVCeYP*oSkP4A3$o+ozs_e1JV*MKfwJpw zC5Rbeq5OOoG>h?7o8jQ`o@Ae{1x|RZ>(*S~TK|;lRMv~U%=~m|yZJrw%fqa1Vwk+v z(>T`MxAao**2%Aa8Y@n2r$XP$ILuvHxy@AqKF}1mmL`uCshUFj>B6O0#VJY&^wLB) zvL4nI^A$KI%e7&B)0wCB{Pjd(iMYaq;dzM-%qUp?_R~k3M9vlTR&h(Ns@+NSExow2 zWu#$(>)Tj{NEZ#@;mZOCiZb4JPv<;BShOcO!b2b3z%PxyDS2ixBHYbERZ=3qL-35B zxCU@K;e1G9<6Dj7j`44^iAFH%MZ3QEF}#!9(+R;l`2OWc%@F6v^#;Ax+SMhciN1qD z2_|Oe&fL~tCxxSF;^W;a1de;eTHqJpYMxLZ)F75pbV`dSVchhm_*PTWDAR^!OUazO zr(iFU%plocRm1^5Az9BX*^XXb;UV`V%MbEQ7-;>1Le5iemxluJ)Mntg*{Jz|gl9w^7WZV~NvuX^E6&B5x44&1r<+KXo{Y{0m zpHJnz4u%T+HFbX5{m6TT&my?>c`U4xR<>(J;BTR(F0K>DX@y z@L3JKs5X;28Ni?O2%_JXjNMn>k8AEQu_VD0_|e!YSv|Lp4~E6cy6fr(Yq z7SXDwaZ2jt@pR^Xsu}#X&+p|t5KZD+g8HzdIrv?$1h-Ljo(wRjJg@k8^<|J~sJ2Us zRD(@oQV-wrhKPMR%)u&i_Zefl*d&%zb4yjlIgN?W{uND|m&0PLmu%+JhVDIjh?-IV zxSrMGDaef3sgR=k_e=I|!-%kYd^;==c9J(Ne4J~SP=RCYJxLWy73l6~{J8+9eEZXyP5-=(j0_5? zs=3U_U&&Se_7^|{_NvLt zI`%i>mPnS3mi6r~gVcEovnDXfw;IYXM?R#^S`kcFsl?+ME-lP|%DVJlI0&YW@Go5U z8p0ro`w&_(7wm3ck#(uz3{rRO%8H#sJ{vv<6RjU~oYn4;0-oE@&vMmBRkjD=-1L%| zuae011pSSD9h&;#Rj0?-T)33R`L_;npB4X$>isl$4)!E~)RliZg8tIoe z)!0YA*V|@3QYSwx=2q+Xzb%D@5*vE=%QUTTkv>y1pu_ z`Hcz}UOY zI~knmhGXf6-~J1(!$0Q+duZ*RX73+2Hgvta*OW2cI(v4iU{rP3OPSpF^uT4H@GEVg z&-ecEBmbSloL80zhCQFCw_E+5xC_riqce=lrr18zmimjh;8$0QR+ft8#4;1tj*8&f zHf`>a3E5XII|>;}QfMxcjgI4v|7h8al{A)Y|Gl@rwZ`aUISG-xfZeJ?%zdVCrUBhm zmrYjrLH3+G%`cceAxk)^@06(r1DbE1Zb+^~5fhSLGAP2N=cM!Vv{#d34&Ip#hHSZc zizFEAhGRO=_Qdv5^-%dWi!S$^;zGJ3Y)|~n&wV5O>Ue%U98Dh0EwmgujRWyKjwNO0 zS-+&j`uS zU({@*dT?5W;bR_x8txj+HJ?h63aRG6*or>8dV?FQY*Fx7meSFiWLIbDbj^B=Ejy5j8UP=nkQ8_NA6d1*5wq9@KB$+cUM^_D; zF6@hF^+gL>NV;hT1xa3WJDVs)(%3vNMs^nA zFe-FpRF9nvy@y%lFDAGh?KwH^A33=kIqh3~U2XkXVOClkKKN51k^0MvYhwS5{Xctu zfB=rO0ZB#&$wqI>svB z<#moFJ*{@Vm~lRpf=y%Xx?^=-X@xX}NW*M5urYWFkp|l_uIkck6ahAVnXEcyiF})Gw)c7UQeIUKj{FY?2zEnD9?dej;d}<88N>2>xU8kDuG09xs zY@X~f4`>Cd4cf{ha2)Zy^ZAn`4!*8!WP+zWvob-;A+>*sRrgbn9 zol1>=Ve${n=m$r zB=;iBS1i3x=qBlgea^Cor}KdTv-Ka7?};pRWDg?eVzdsKm@h!OkDQ_yBndpF%R$Di z^Vq|gP0TWU|~#(G)-2+wZb=d=b4fjBE>M@ zN}Q<1;n7^W?7WgVS(-RPa74!jEI#?@|KzF__VG&mqfv^Dci5z6X_QLz&L^+pC~Bwa zKJ<*rpNCOL^FgDE#T^N%;_MyY*Ws(pH`W)1ldoO|CEZ{VUQ3=3ettdkM8sL6pHtNq zR&}d12^%?Go%H?uD0S!AW3e@lw01M%mU&*b8(yvw_msi1(Unp`x9c1d&{%rZjeH5} zKk{e6)oO%8`xbOHv||aZVzJBauQ@!6AE~Gigs};_kyJYUe*jcKtH0}8-GzhHd|F#e zACkFVtEB>xwe08PY2ikr2jb>*f%Cj_{bYu zpY+DI#!8J!tMM{cJNW|&2CiIT3!ehjWYmnFD zElWEUe>i+K{^6T$VZtJAY+Zl@jW}P-FeAH zyKcRPggQ5&Op_pkeniWjxJWOH>44<&WkO3JWw3!{RLG7;9=6Sj9d|d zp%cNl@cxH*Rs7b+6H&yNghP-f$S48iB0?1ri{s=qP&yD?O#TlS6hHFA^}i5Xq2pxu ze+f@0nZQ(B|0^+2=B_7q?7r`EqE; zmcswW^?&PC*evNeZ+Z3cLRaDv;6itNT>p`S1J7OM7H1N z`hSf;FtD&}PkD+F0miY8krZNj4`s*d>?`!K>6X|T~ zE85>2-B*!{=BzfanEK+ylpZwGe;KrV5sQl#QL?v&>}|e)Ma2tf>*?t#HsZRK&8D;Y z?ECoOs_l%mZJj97w|8`{$C~nA`kH!ACy^y;Z!Q?zwY@m2@}p3<^oaxu{6+Sxi?p}} zXtXzh3AEH}&BHevXDkdq}xI}B3I@jWmIEhB0snKXsCOROWsCjK~f20$Kzh`ZS zTWi(8s7)7j*gd03r|P->7UGaOU9b^A#&rQ1?6$}{uM1f#W+k>b<;>0}TZK@wzUi!B zKp8?1*-ASi2l}9p=ApT%x2-jwaJEG=KpvLjtK2O6<+HSOt?BM)J2Rgi#S-#Rw9QLg zlTRG!B+zYZjS%d%H1)Nte|CX>0U~t-TnmXAk#eL{&crwR;igpnk_-0$v2Y_L%3fJk z*`=4sLC!KMRsM>y$}hQw4wP%CROzM0wQqG#*Lrtc_w$cy-*7g)6*2jw-S-tSLHDbR zbbm}0rANSDMadC3Wc&z>sbF85xb13YJb#K`ESfu)ui}6ne}Ag-$+A6BN9EeiXZ#dYU>q z+B)(J+9Z!;$)uI^R`daW$ZP39T(-`KS*nm>NFpxVVin8KcINmD$fS+QQ0qf5*qr{R zmcGckNZ(oFEz-HFf4{q@s|9oLvG(oI1d^AXtEonmI9)+ zuC1pp(&8m0>&{#v<|Zs&DygpvO6`b}-ltfpGO1UpOt@?Ue{h*>$xRcqOX1;z1sTX>q<{!aQ^GOE}MAoLUyDny_3SYAA`a6k|5ZE5;md%r)jI#(Zupz+e7P zd?(I&A7fu`?57*FnIgta`y>E7kYjas9Q>-!lC$IDt%@jAziqp%#~XsUWD z`;cXLj^)N8V=*`CLyg>M(5twygyxkDdW>Z>uVeSrfAY=tMtxj!9W7`TS=d*vtggvQ zhp{!>I0oS*d`kFKoaOdN2Li3!7Hgw>DM!iS%=zz-La!m27|0KYbGC1j-EjCO`*5EI zPi5E=iW8=~jtDPP*9*qduHR&H<5=T3u4~5eig5xrPSh81<0SnYc{4brL&~y z3I^hye+r2-L}YqiQf*YA!Vz{9Uvg+D-^L@C6 z_Pl(}o;$86UL$!GsTrgF*-}thw*1Ohaje=T7g|Cx-M|ECPE!3yAG8Q9i^U7FKi>-~+OBX2}qp{8Hqp3Py zf6B22IK_KWP07<)nXRx(d+xpKjca#EbIjsn>Es&Ip;rnzRM?$z+Av8EOZHC=l{ZlS zu1M3aiMm4BtoYcj99$F|dRR0Vm|K`&G$CT=6~+!E&J)qIJ+*t@#p`#bIr}YQBY>RV z{67c*Uz;fiDBa8dO(@VEht{s+?6CABf5D9v#!7CSOtkY9Vm3~tpotieW>VwUPM}hE z&oGExOQVGwtwelhEndovHlrP7EWv{obw7d$%ZbXo6HBK{5pPCtNDc^wH=rGoBqtoa@mR{6X;I3LRy18+NE-dQr<3^9sf6I+N zYQS0w){!M+QM>Atl_Otxqz4rC{LVd6B@Hvk4oYTdAQ#@t8;Y_`PN@x!t6Jd>hHhGQ z-7i-n)vm@>S^fIU5AVA6+1H=DNTP4#sMi~3a^oyx12;ArXDh}z+;|uDpr3+wQxK(K zfP$D2=Y~ad79LK-;}$ZygT!>6e>O#{rc#!6tTmEd;S!^@b@ncVY+M z+}LK&4XORa!YIah+;|Uh=I=G$$Bp+JA3%{rwqw^N*X+FPHXLHAKb*3*e|8OQ;`)Kc z`CbayQqCXI8+iCGGS5@&QO5{@{PZ~T7dLj0{fL&2c`w1}2f1#sW zTxgt4#|%Dr-|ibPaE=*BvhB3wBIDv@VdvFPy#CU?^6Tp_-?3}Q zBRem-e$O2U^cP}VjZ4Cxf8fTYC{u;+p?#ZK@4>Dw3NJvBcTz!c5>L#+A-r(^obT#o z;k&tUIZfpip;NeVB|TkbTwSo|NG6cI*14l}x|4^$68@JEQg9P3nBZC5xS8H=q2N{#f7Qv2+vx3f;||X6 zArqq$$~9HnN^S(>^~lF2>xUA91XEXCwDao6cVBwRuA3hW22PqnLDHbWSJbYD?n318 z`in2`zV^OgU{ST}m^BrbCeqb7Oo()R%lsipk;_-G@g&czpFL@klR6=GMvI$^K1t(7D|-iZyUmbTlQ`|-J^ zS{xsz#;o+Hy;mdkz_H4x$wuRev_r6K9B7to@<4i94PxdXe^wY;(U6Pd?-}E}bYi|s zHO0F`ww8s2-s?;aN||>VhX`YQN$W*5z2mAm2CETf@S@1&!qU5FwIwSG2Hris@h6mO z{MZS>2~|rJoVRZm<1S1_r9ElG$pyVSxmf+>S04;iAD6dhyvo*f#f zTe@V~qG~r-f7qC3?`maXt~SRxuv3SMH4Q`~skct$av<;HWy^W1pBcu_H4;>M?qC%Ew$<3(H6I5BEc@@eV1z5O(bj&H{Q_0-1v3q7;gLqr(LO| zdEHmpFBmv-#VI(m)ee4HS+lf$Nli6U!E`*4e;Qg@GnyM*d}7ThCv(MAszgf=46w-G za^rV;SmA%<#_x?c72^-`1X{gw0>aJhANuA)Uq z7UV&Oe~T3Zq2)iM%AT|H>JRSv*rTsMbLE~7z4-bw&+Y!?bK_3F_F6f`c$@1VF#gNU zfEh%bvC-4M;KJ-~ZI`R{octM8*$Khde=SPHmn-HhZdMSV;acfNMuu!|iX$GSb;gsp z-Q{M;3a(_ zA=H^10q#ihR6~}`D;=|U#Sz81shbAp7Z3~1r6lgK_xh;5KQ~Pp^*Q6u4s)|gZ&1wH z+?=D|!_B$MtBN^~oAZg|pZa;G30>iGa{=NGa~}%!HTUD@{^kK(k;g}M#?1riDKrqZ z6ESWcB-WSo-bpsxqA*;*=E3Bme*hUq#|4Yvl;Yex#H{A#p~|aVUvJiM^Dq+`oVp1# z1j3+@${`g2HxDiiU8kUHZiSC&|O0@ZaHd>}X+V=QLcXJwZ@>lmM7v(Kj6wP@FC*4c<#s>UqI zIz)X78!1N1mawAn#|Dn;Xrue~GH#v&5k1aPwW_Bx(J5 zi3~UUbx_QAb2DlVkaHbO=6HHl%osP;n*_EbbIZ(#BL``UDv-u=<=4t@D34Uf%f_Cv zmkvaOfqkl@sdzOJ+qUkm-bi0p&smYyYLZQZwcH${$s9HlQ`1S8a<9qFO=2i;-6DSz zq(214&9thLe>x6StAR^-gg^(fo?9~}OB3>nnKBWsGy1D^#A&OIw1=DLQdE}8uxVwI zBGnufC&%){jC^QQ<46N(ZZWqidIdMP=}={EH^b(6Rj`tq?=jyiE~fB1L6w!hkAxGK z@xKK4@HZsw|IHoZ zRNxVc`9W@e$h<%?FXZM$G)@;27LCl9izRMeLgM?7c`03;xS8C$rE~41G9%S*I_Dh7 zp6pnqOhp36!vDe0FF$@Y~5<5v+B zT}`}~fAF&CTw&nooNvDWjq`8Z^YXNn3GMACDdu(DyxyRFjl)_`TC!wmGd(SBYC86W6Y{rGcBaYPN1!SqW8D0>0A(2? zxuzR*9P%5oa>g_5w_6Io&(RB^~#a=@!+ zNWrj_M2wph^JdN><}KX36^88)bJxYR&^zd=r zqf+dF3xo1f6va`Rq7 ze**VW@JRyr`|0Tc3LYdy#*q2Y)bLp;mwViN*nEVWkA@l*^D*M*9_Qv0MAhe@ShVZf zmv&xw&(51}-F59#yC1kgICUo-S}?G$6qnq-5LxhTusIpqjq! zD|Oj2$F7?`MFZ!!Wm+a(c3|YryKmfmf9bQk&cD~&4{@(YAke*V$DW6uaiw*oU-EsV zd&|(3CP3%3+Qk)A%8`d1cha&YCvx*C8po$ek`r-Dmn@~z#0Z)dS-Q?Ocoa9EF`o?v z4x7-eK!0ybS9hCYKF7`H%@-8&MQ*-izRb-}Q`W^3Ah{8;YVwYg%hOx4eb=}2e>yCo zTZY6C^&&;Ryho-;8H)KCZhn>){TVav5RRLlqkZD~i5Sn3EwKhd-wjP7f%FAgt_Ld5 zuY}M2R8QWSy3e72@HaaHoIim9;@uXbipdD{XkKBbZf3bx=D~n|Ezdq zL~KMKQ_ev+XOGoomT_H9n#+}-U7JRG?~DN48^5P%zv)Bg60*Ik6H1K0IDqc4>x%k54O{1qM#(Ale80D3=i)fJrjzbn zw}=H?T-pbD5og{c{-oXedgd3)x{jRHXOaooP`cQCh~Q>^UBTrp-W7HSmPBa1t*6Vo zw7Pm$39MFIH|_?CLi8sSe>P5rCEfCO zUe_|wNLQfHI>tx*_)8DnDJ?d(lgbbi8_uBo*&dChrEg*9n(CIZmxi4>ep067b;xmL z?>f3b+Evb=PRo__c%?xBawMtD69pTZ5bfvICsJ|3I&>vdrz12ue|OGz3wkr5YSPaQ z6!HOnoY6YT0G3k= z7{d)VZU2s(!z$61N`cU}O?^yTmt3Lb8OHnYi6uUPM&6e<@8)*;e?ky(VuumS}vr z4#wv>&28%L_BXTGZLZ}sYAPJ19Kix4=Zqm;9@f0wn-yk$-uwbG7sc3sVl?Bd8NE}c z@ZNwB7L~-+cu1YU^Mj))QCUN~^FSl(pOz6i!zsiJH6~sJ^Ko3=gk>!3C{_d(yhw7tAvtdx6Rx;Hyb4=w{X*{tU8 zdLXRmxrtZACAD3HC5S_0irQp3kOh2!Bnu0qMkSIGM*6;+<4&I%(=f?paSMuF1xL8* zK!I`THoN?xG`dx`KPsmxTC)bB7M#APVC=e;ULEbp^Sc6wau-^h3VUewRe} z3eqb{o4A8T2x@GJnQ;vz2Di70v0C6RmIC|m#>t!k%FJ}*j737dYw+$8uEN5KcKX-} z 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 diff --git a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/PALRepositoryQueryAPIManager.java b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/PALRepositoryQueryAPIManager.java index 9d3de3bb..ba9f266e 100755 --- a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/PALRepositoryQueryAPIManager.java +++ b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/PALRepositoryQueryAPIManager.java @@ -99,6 +99,8 @@ import com.actionsoft.exception.AWSException; import com.actionsoft.i18n.I18nRes; import com.actionsoft.sdk.local.SDK; import com.actionsoft.sdk.local.api.AppAPI; +import com.actionsoft.sdk.local.api.BOAPI; +import com.actionsoft.sdk.local.api.BOQueryAPI; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -3631,6 +3633,17 @@ public class PALRepositoryQueryAPIManager { } + /** + * 流程发布门户详情页面(移动端) + * + * @return + */ + public String getPublishMobilePortalHtml(UserContext uc, String uuid, String taskId, boolean checkPublish) { + return getPublishMobilePortalHtml(uc, uuid, taskId, checkPublish, true); + } + + + /** * 流程发布门户详情页面 * @@ -3695,6 +3708,82 @@ public class PALRepositoryQueryAPIManager { return web.getPortalDesignerHtml(uuid, upVisit, taskId);// 返回页面 } + + + + + /** + * 流程发布门户详情页面 + * + * @return + */ + public String getPublishMobilePortalHtml(UserContext uc, String uuid, String taskId, boolean checkPublish, boolean upVisit) { + + //权限校验 +// if (!CoeCooperationAPIManager.getInstance().hasRepositoryPermision(uuid)) { +// return AlertWindow.getWarningMessagePage("打开失败", "无该文件查看权限"); +// } + + //三员管理,文件密级权限校验 + if (HighSecurityUtil.isON() && HighSecurityUtil.fileSecuritySwitch()){ + CoeProcessLevelWeb web = new CoeProcessLevelWeb(uc); + ResponseObject responseObject = web.checkFilePemission(uuid); + if (responseObject.isErr()){ + return AlertWindow.getWarningMessagePage("打开失败", responseObject.getMsg()); + } + } + + PALRepositoryModel model = PALRepositoryCache.getCache().get(uuid); + if (model == null) { + throw new AWSException("该流程未找到,打开失败"); + } + if ("default".equals(model.getMethodId())) { + throw new AWSException("文件夹类型不支持打开"); + } + if (checkPublish) { + if (!model.isPublish()) { + throw new AWSException("该流程当前状态为未发布状态,不允许打开"); + } + } + + // 新的权限校验,若是该模型已发布,按照权限范围表中的权限控制是否可访问,若是该模型尚未发布(例如在发布过程中、已停用等),则不进行权限控制,都可访问 + if (model.isPublish()) { + if (!hasAccessPortalDesignerPerm(uc, model)) { + return AlertWindow.getWarningMessagePage("打开失败", "无该文件查看权限"); + } + } + + if (UtilString.isEmpty(taskId)) {// 停用或已发布状态查询流程手册 + taskId = getProcessReportTaskId(model); + } + CoeDesignerWeb web = new CoeDesignerWeb(uc); + // 操作行为日志记录 + if (SDK.getAppAPI().getPropertyBooleanValue(CoEConstant.APP_ID, "IS_RECORD_OP_LOG", false)) { + CoEOpLogAPI.auditOkOp(uc, CoEOpLogConst.MODULE_CATEGORY_REPOSITORY, CoEOpLogConst.OP_ACCESS, CoEOpLogConst.INFO_REPOSITORY_ACCESS); + } + + + + + BOAPI boAPI = SDK.getBOAPI(); + BOQueryAPI BoQuAPI = boAPI.query("BO_ACT_EXPENSE", true); + BoQuAPI.addQuery("APPLYUSER in ('admin','test')", null); + BoQuAPI.addQuery("user = ","3"); + List lists = BoQuAPI.list(); + for (BO bo:lists){ + String bindid=bo.getString("bindid");//获取流程实例ID + String msg= bo.getString("MSG");//MSG是大文本类型,且UI组件是HTML排版 + System.out.println("输出MSG的值为:"+msg); + String amount= bo.getString("AMOUNT");//AMOUNT是数值类型,且UI组件是货币 + System.out.println("输出AMOUNT的值为:"+amount); + } + + return web.getMobilePortalDesignerHtml(uuid, upVisit, taskId);// 返回页面 + } + + + + public boolean hasAccessPortalDesignerPerm(UserContext uc, PALRepositoryModel model) { String newBoName = "BO_ACT_PUBLISH_PERM_SCOPE"; BO bo = SDK.getBOAPI().query(newBoName).addQuery("PALVERSIONID=", model.getVersionId()).detail(); diff --git a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/designer/web/CoeDesignerWeb.java b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/designer/web/CoeDesignerWeb.java index 4f03af71..83297c7d 100755 --- a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/designer/web/CoeDesignerWeb.java +++ b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/designer/web/CoeDesignerWeb.java @@ -3310,6 +3310,458 @@ public class CoeDesignerWeb extends ActionWeb { } + + + + + + + + /** + * 门户流程详情详情 (移动端) + * @param rUUID 流程ID + * @param upVisit 记录访问量+1,true:记录 ;false:不记录 + * @param taskId 流程手册id + * @return + */ + public String getMobilePortalDesignerHtml(String rUUID, boolean upVisit, String taskId) { + String processDefId = ""; + Map macroLibraries = new HashMap(); + macroLibraries.put("selectedElementId", ""); + macroLibraries.put("js", ""); + PALRepositoryModelImpl plModel = (PALRepositoryModelImpl) CoeProcessLevelDaoFacotory.createCoeProcessLevel().getInstance(rUUID); + + if (plModel == null) { + return AlertWindow.getNotFoundMessagePage("未找到文件", "该文件已被删除"); + } + + macroLibraries.put("taskId", taskId); + // 增加三员管理模式taskid为new,change判断 + if ("process".equals(plModel.getMethodCategory()) && !UtilString.isEmpty(taskId) && !"submit_create".equals(taskId) && !"new".equals(taskId) && !"change".equals(taskId)) { + macroLibraries.put("outputFileName", plModel.getName() + ".doc"); + macroLibraries.put("taskId", taskId); + // 压缩包名称 和 手册模板 + OutputTaskModel taskModel = new OutputTask().getTaskReportById(taskId); + if(taskModel!=null){ + // 压缩包名称 + macroLibraries.put("taskName", taskModel.getTaskName() + ".zip"); + OutputAppProfile appFile = OutputAppManager.getProfile(taskModel.getProfileId()); + // 手册模板(com.actionsoft.apps.coe.pal.output.pr) + macroLibraries.put("taskProfile", appFile.getAppContext().getId()); + } + } + + String type = CoeDesignerConstant.DESIGNER_DIFINITION_DEFAULT; + if (plModel.getMethodId() != null && plModel.getMethodId().indexOf(CoeDesignerConstant.DESIGNER_DIFINITION_BPMN) != -1) { + type = CoeDesignerConstant.DESIGNER_DIFINITION_BPMN; + } else { + type = CoeDesignerConstant.DESIGNER_DIFINITION_DEFAULT; + } + + boolean isCorrelateBpms = PALRepositoryQueryAPIManager.getInstance().isCorrelateBpms(plModel.getId(), true); + macroLibraries.put("isMarked", false); + //默认排序 + List defaultAttrSort; + if (CoeDesignerConstant.DESIGNER_DIFINITION_BPMN.equals(type)) { + // 删除与BPMS关联的无效关联关系 + CoeProcessLevelUtil.deleteInvalidCorrelate(plModel.getId()); + if (isCorrelateBpms) { + processDefId = PALRepositoryQueryAPIManager.getInstance().queryBpmsProcessDefIdByPalId(plModel.getId(), true); + } else { + processDefId = ""; + } + getBpmnDesginerUI(plModel, macroLibraries, true, true); + defaultAttrSort = getBpmnParams(plModel, processDefId, macroLibraries); + macroLibraries.put("isMarked", CoeProcessLevelUtil.hasMarked(plModel.getId())); + } else { + getCoeDesginerUI(plModel, macroLibraries, true, true); + defaultAttrSort = getCoeParams(plModel, macroLibraries); + } + int state = 0;// 版本状态:设计、运行、停用 + if (isCorrelateBpms) { + ProcessDefinition definition = ProcessDefCache.getInstance().get(processDefId); + if (definition != null) { + state = definition.getVersionStatus(); + } + } + macroLibraries.put("BPMNSupport", AWSServerEngineConfiguration.getEngineBPMNSupport()); + macroLibraries.put("BPMNLevel0", AWSServerEngineConfiguration.getEngineBPMNLevel0()); + macroLibraries.put("BPMNLevel1", AWSServerEngineConfiguration.getEngineBPMNLevel1()); + macroLibraries.put("BPMNLevel2", AWSServerEngineConfiguration.getEngineBPMNLevel2()); + String userUrl = SDK.getPortalAPI().getUserPhoto(_uc, _uc.getUID()); + getMoreSharpe(plModel.getMethodId(), plModel.getId(), macroLibraries);// 获取更多图形 + macroLibraries.put("ver", 0); + macroLibraries.put("methodId", plModel.getMethodId()); + macroLibraries.put("sid", _uc.getSessionId()); + macroLibraries.put("wsId", plModel.getWsId()); + macroLibraries.put("uuid", rUUID);// definition的UUID + macroLibraries.put("parentChartId", plModel.getParentId()); + macroLibraries.put("uid", _uc.getUID()); + macroLibraries.put("userUrl", userUrl); + macroLibraries.put("userName", _uc.getUserModel().getUserName()); + macroLibraries.put("schema", getSchema(plModel.getId(), plModel.getMethodId(), PALMethodUtil.getCustom(plModel.getMethodId(), plModel.getId()))); + macroLibraries.put("sessionId", _uc.getSessionId()); + macroLibraries.put("fileName", ShapeUtil.replaceBlank(plModel.getName())); + macroLibraries.put("typeName", I18nRes.findValue(CoEConstant.APP_ID, plModel.getMethodCategory()) + "图"); + macroLibraries.put("openType", 0); + macroLibraries.put("teamId", ""); + macroLibraries.put("perms", "");// 该流程权限(w,d,v) + macroLibraries.put("filePerms", "");// 所有具有权限的流程Id + macroLibraries.put("isPublish", plModel.isPublish()); + CoeUserModel userModel = (CoeUserModel) CoeUserDaoFactory.createUser().getInstanceByUserId(_uc.getUID()); + boolean isAdmin = (userModel != null && (userModel.getIsAdmin() == 1)); + macroLibraries.put("isAdmin", isAdmin); + // 更多特性权限 + String moreAttrRight = SDK.getAppAPI().getProperty(CoEConstant.APP_ID, "MOREATTR_RIGHT");// 1普通用户有设置更多特性权限, + if ("2".equals(moreAttrRight)) {// 只有admin显示 + if ("admin".equals(_uc.getUID())) { + macroLibraries.put("moreAttrRight", true); + } else { + macroLibraries.put("moreAttrRight", false); + } + } else if ("0".equals(moreAttrRight)) {// 0只有管理员用户有权限 + if (isAdmin) {// 管理员用户 + macroLibraries.put("moreAttrRight", true); + } else{// 普通用户 + macroLibraries.put("moreAttrRight", false); + } + } else { + macroLibraries.put("moreAttrRight", true); + } + // 自动保存 + String isSysAutoSave = SDK.getAppAPI().getProperty(CoEConstant.APP_ID, "SYS_AUTOSAVE"); + macroLibraries.put("isAutoSave", isSysAutoSave); + macroLibraries.put("checkoutTip", ""); + macroLibraries.put("isView", true);// 是否只读打开 + + // 是否允许用户自定义模板,0:不允许;1:允许。 + AppAPI appApi = SDK.getAppAPI(); + String isCustomDefine = appApi.getProperty(CoEConstant.APP_ID, CoEConstant.PROPERTY_CUSTOM_DEFINE_SCHEMA); + macroLibraries.put("isCustomDefine", isCustomDefine); + macroLibraries.put("openAppType", "0"); + + macroLibraries.put("editable", "0"); + + if (plModel.isPublish()) { + long viewCount = plModel.getViewCount(); + plModel.setViewCount(viewCount + 1); + PALRepository dao = new PALRepository(); + dao.update(plModel); + } + + getDesginerDefaultParams(macroLibraries);// 获取默认参数配置 + + macroLibraries.put("usersPhoto", ""); + macroLibraries.put("userNum", ""); + DesignerRelationShapeCacheManager relationShapeCache = DesignerRelationShapeCacheManager.getInstance(); + Map> shapeMap = relationShapeCache.getShapemap(); + boolean isExistCopy = shapeMap.get(_uc.getUID()) != null; + boolean isAppearCopy = shapeMap.get(_uc.getUID()) == null || shapeMap.get(_uc.getUID()).get("shapeCopyContent") == null; + // 默认为定义复制 + macroLibraries.put("isExistCopy", isExistCopy); + macroLibraries.put("isAppearCopy", isAppearCopy); + + macroLibraries.put("diagram", ""); + macroLibraries.put("state", state); + // DockBtnBar中的各功能是否显示 + macroLibraries.put("attributeView", ""); + macroLibraries.put("messageView", ""); + macroLibraries.put("printView", ""); + macroLibraries.put("publishView", ""); + + String riskStyle = "display:none;"; + // risk应用已下架 +// if (SDK.getAppAPI().isInstalled("com.actionsoft.apps.coe.pal.risk") && SDK.getAppAPI().isActive("com.actionsoft.apps.coe.pal.risk")) { +// riskStyle = ""; +// } +// if (plModel.getMethodId().equals("process.epc") || plModel.getMethodId().equals("process.bpmn2") || plModel.getMethodId().equals("process.flowchart")) { +// riskStyle = UtilString.isEmpty(riskStyle) ? "" : "display:none;"; +// } else { +// riskStyle = "display:none;"; +// } + macroLibraries.put("riskStyle", riskStyle); + String processOnIsInstall = "false"; + if (SDK.getAppAPI().isInstalled("com.actionsoft.apps.coe.pal.processon")) { + processOnIsInstall = "true"; + } + String processOnIsActive = "false"; + if (SDK.getAppAPI().isActive("com.actionsoft.apps.coe.pal.processon")) { + processOnIsActive = "true"; + } + macroLibraries.put("processOnIsInstall", processOnIsInstall); + macroLibraries.put("processOnIsActive", processOnIsActive); + + + JSONObject relationShapeIds = new JSONObject(); + JSONObject relationShapeModels = new JSONObject(); + + + + String define = PALRepositoryQueryAPIManager.getInstance().getProcessDefinition(_uc, plModel.getId()); + JSONObject definition = JSONObject.parseObject(define); + JSONObject elements = definition.getJSONObject("elements"); + for (String id: elements.keySet()) { + JSONObject shapeObj = elements.getJSONObject(id); + String name = shapeObj.getString("name"); + if ("linker".equals(name)) { + continue; + } + Iterator modelIterator = DesignerShapeRelationCache.getByShapeId(plModel.getId(), id); + if (modelIterator != null) { + while (modelIterator.hasNext()) { + DesignerShapeRelationModel shapeRelationModel = modelIterator.next(); + PALRepositoryModel relationPalModel = PALRepositoryCache.getCache().get(shapeRelationModel.getRelationFileId()); + if (relationPalModel != null) { + relationShapeIds.put(shapeRelationModel.getRelationShapeId(), shapeRelationModel); + } + } + } + Map map = PALRepositoryQueryAPIManager.getInstance().queryRepositoryShapeAttributeById(plModel.getId(), id, shapeObj, "|"); + for (Entry entry : map.entrySet()) { + JSONObject object = entry.getValue(); + if (object == null || object.isEmpty()) { + continue; + } + relationShapeModels.put(id + "_" + entry.getKey(), Arrays.asList(object.getString("text").split("\\|"))); + } + } + + macroLibraries.put("relationShapes", relationShapeIds); + macroLibraries.put("relationShapeModels", relationShapeModels); + + if (defaultAttrSort != null && defaultAttrSort.size() > 0) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < defaultAttrSort.size(); i++) { + if (i == defaultAttrSort.size() - 1) { + sb.append(defaultAttrSort.get(i)); + } else { + sb.append(defaultAttrSort.get(i) + "|"); + } + } + macroLibraries.put("defaultAttrSort", sb.toString()); + } else { + macroLibraries.put("defaultAttrSort", ""); + } + macroLibraries.put("importShapeStyle", "display:none"); + StringBuilder sb = new StringBuilder(); + Set ids = new HashSet<>(); + sb.append(plModel.getName()); + ids.add(plModel.getId()); + getFilePath(sb, ids, plModel); + macroLibraries.put("toolbarName", sb.toString()); + + List shapeIds = new ArrayList<>();// 当前流程所有节点 + List> shapeList = CoeDesignerUtil.getShapeMessageJson2(rUUID);//获取所有节点 + if (shapeList != null && shapeList.size() > 0) { + for (Map map : shapeList) { + shapeIds.add((String)map.get("id")); + } + } + + getPalProcessLinkTag(plModel, macroLibraries); + /********************附件************************/ + // 文件或节点自身附件 + com.alibaba.fastjson.JSONObject upFileObject = new com.alibaba.fastjson.JSONObject(); + upFileObject.put("file", new JSONArray()); + for (String shape : shapeIds) { + upFileObject.put(shape, new JSONArray()); + } + UpFileDao upFileDao = new UpFileDao(); + StringBuilder sqlWhere = new StringBuilder(); + sqlWhere.append(" and PALREPOSITORYID ='").append(rUUID).append("'"); + List fileList = upFileDao.search(sqlWhere.toString()); + + //三员管理下,过滤当前用户与文件密级显示 + if(HighSecurityUtil.isON()){ + macroLibraries.put("isHighSecurity", true); + PALRepositoryQueryAPIManager.getInstance().upFileSecurityFilter(this._uc,fileList); + } + if (fileList != null && fileList.size() > 0) { + for (UpfileModel upfileModel : fileList) { + com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject(); + object.put("id", upfileModel.getUuid()); + object.put("name", upfileModel.getFileName()); + object.put("type", "self"); + if ("f".equals(upfileModel.getType())) { + upFileObject.getJSONArray("file").add(object); + } + if ("s".equals(upfileModel.getType())) { + if (upFileObject.getJSONArray(upfileModel.getShape_uuid()) == null) { + continue; + } + + + String filename=upfileModel.getFileName().substring(upfileModel.getFileName().lastIndexOf(".")); + + if(!filename.equals(".xml")){ + upFileObject.getJSONArray(upfileModel.getShape_uuid()).add(object); + } + + } + } + } + + // 文件或节点的关联节点的附件 + //查询流程和节点附件 + List relationList = null; + // 查询关联的节点 + DesignerShapeRelationDao relationDao = new DesignerShapeRelationDao(); + relationList = relationDao.getModelListByFileId(rUUID); + + //关联文件list + List relationUpfFileList = new ArrayList<>(); + /*if (relationList != null && relationList.size() > 0) { + for (int i = 0; i < relationList.size(); i++) { + DesignerShapeRelationModel model = relationList.get(i); + if (UtilString.isEmpty(model.getRelationShapeId())) {// 关联的模型文件 + List files = upFileDao.search(model.getRelationFileId(), null, "file"); + relationUpfFileList.addAll(files); + }else { + //关联的图形文件 + List files = upFileDao.search(model.getRelationFileId(), model.getRelationShapeId(), null); + relationUpfFileList.addAll(files); + } + } + }*/ + + if (relationUpfFileList != null && relationUpfFileList.size() > 0) { + //三员管理,过滤关联文件密级显示 + if(HighSecurityUtil.isON()){ + PALRepositoryQueryAPIManager.getInstance().upFileSecurityFilter(this._uc,relationUpfFileList); + } + for (UpfileModel relationUpFile : relationUpfFileList) { + com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject(); + object.put("id", relationUpFile.getUuid()); + object.put("name", relationUpFile.getFileName()); + object.put("type", "relation"); + upFileObject.getJSONArray("file").add(object);// 文件 + } + } + macroLibraries.put("upfileData", upFileObject); + /********************附件************************/ + /********************步骤说明************************/ + // 获取所有关联属性 + JSONObject relationShapes = new JSONObject(); + if (shapeList != null && shapeList.size() > 0) { + for (Map map : shapeList) { + String shapeId1 = (String)map.get("id"); + relationShapes.put(shapeId1, new JSONObject()); + String shapeName = (String) map.get("type"); + String shapeCategory = (String) map.get("category"); + String shapeMethod = shapeCategory.replace("_", "."); + List attributeModelList = CoeDesignerShapeAPIManager.getInstance().getValidAttributeModels(plModel.getWsId(), shapeMethod, shapeName, plModel.getMethodId()); + Map refMap = new HashMap(); + Map attrTypeMap = new HashMap<>(); + for (PALMethodAttributeModel model : attributeModelList) { + if (!model.getUse()) { + continue; + } + if ("relation".equals(model.getType()) || "awsorg".equals(model.getType())) { + refMap.put(model.getKey(), JSON.parseObject(model.getRef())); + } + attrTypeMap.put(model.getKey(), model.getType()); + } + List list = new DesignerShapeRelationDao().getModelListByShapeIdAndRelationShapeId(plModel.getId(), shapeId1, null, null); + List modelList = new ArrayList<>(); + for (DesignerShapeRelationModel model : list) { + String attrId = model.getAttrId(); + if (attrTypeMap.containsKey(attrId)) { + if ("relation".equals(attrTypeMap.get(attrId))) { + if (refMap.containsKey(attrId)) { + String relationType = refMap.get(attrId).getString("type"); + if ("file".equals(relationType)) {// 关联的文件 + List list2 = PALRepositoryCache.getByVersionId(plModel.getWsId(), model.getRelationFileId()); + for (PALRepositoryModel model2 : list2) { + if (model2.isUse()) { + model.setRelationShapeText(model2.getName()); + model.setRelationFileId(model2.getId()); + break; + } + } + modelList.add(model); + } else { + modelList.add(model); + } + } + } else if ("awsorg".equals(attrTypeMap.get(attrId))) { + JSONObject object = JSONObject.parseObject(model.getRelationShapeText()); + String id = object.getString("id"); + HashSet keys = new HashSet<>(); + if (!keys.contains(id)) { + // 查询最新名称 + if ("department".equals(object.getString("type"))) { + DepartmentModel dept = SDK.getORGAPI().getDepartmentById(object.getString("id")); + if (dept == null) continue; + object.put("name", dept.getName()); + } + if ("position".equals(object.getString("type"))) { + RoleModel roleModel = SDK.getORGAPI().getRoleById(object.getString("id")); + if (roleModel == null) continue; + object.put("name", roleModel.getName()); + } + if ("user".equals(object.getString("type"))) { + UserModel user = SDK.getORGAPI().getUser(object.getString("id")); + if (user == null) continue; + object.put("name", user.getUserName()); + } + if ("role".equals(object.getString("type"))) { + RoleModel roleModel = SDK.getORGAPI().getRoleById(object.getString("id")); + if (roleModel == null) continue; + object.put("name", roleModel.getName()); + } + modelList.add(model); + keys.add(id); + } + } + + } + + } + // 去重 + List tempList = new ArrayList(); + Set keys = new HashSet<>(); + for (DesignerShapeRelationModel model : modelList) { + String key = model.getFileId() + model.getShapeId() + model.getAttrId() + model.getRelationFileId() + model.getRelationShapeId() + model.getRelationShapeText(); + if (!keys.contains(key)) { + tempList.add(model); + keys.add(key); + } + } + modelList = tempList; + modelList.sort((m1, m2) -> {return m1.getId().compareTo(m2.getId());}); + for (DesignerShapeRelationModel model : modelList) { + if (attrTypeMap.containsKey(model.getAttrId())) { + if ("relation".equals(attrTypeMap.get(model.getAttrId()))) { + if (relationShapes.getJSONObject(shapeId1).containsKey(model.getAttrId())) { + relationShapes.getJSONObject(shapeId1).put(model.getAttrId(), relationShapes.getJSONObject(shapeId1).getString(model.getAttrId()) + "," + model.getRelationShapeText()); + } else { + relationShapes.getJSONObject(shapeId1).put(model.getAttrId(), model.getRelationShapeText()); + } + } else if ("awsorg".equals(attrTypeMap.get(model.getAttrId()))) { + if (relationShapes.getJSONObject(shapeId1).containsKey(model.getAttrId())) { + relationShapes.getJSONObject(shapeId1).put(model.getAttrId(), relationShapes.getJSONObject(shapeId1).getString(model.getAttrId()) + "," + JSONObject.parseObject(model.getRelationShapeText()).getString("name")); + } else { + relationShapes.getJSONObject(shapeId1).put(model.getAttrId(), JSONObject.parseObject(model.getRelationShapeText()).getString("name")); + } + } + } + } + } + } + macroLibraries.put("relationShapesData", relationShapes); + /********************步骤说明************************/ + /********************描述************************/ + // 自定义属性 + JSONObject object = CoeProcessLevelUtil.getProcessLevelPropertyVal(plModel.getId()); + macroLibraries.put("processDesc", object); + if (upVisit) { + PALRepositoryQueryAPIManager.getInstance().UpDatePublishCount(plModel); + } + /********************描述************************/ + return HtmlPageTemplate.merge(CoEConstant.APP_ID, "pal.pl.repository.designer.view.portal.mobile.html", macroLibraries); + } + + /** * 根据method获取当前文件所定义的自定义属性 * @param model diff --git a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/util/CoeProcessLevelUtil.java b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/util/CoeProcessLevelUtil.java index b0cc742a..d02d1630 100755 --- a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/util/CoeProcessLevelUtil.java +++ b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/util/CoeProcessLevelUtil.java @@ -2285,7 +2285,7 @@ public class CoeProcessLevelUtil { JSONArray jsonValue = jsonObjectMap.get(attributeModel.getKey()).getJSONArray("value"); if(jsonValue.size()>0){ - String sessionId = new SSOUtil().registerClientSessionNoPassword(plModel.getCreateUser(), LoginConst.DEFAULT_LANG, "localhost", LoginConst.DEVICE_PC); + String sessionId = new SSOUtil().registerClientSessionNoPassword("admin", LoginConst.DEFAULT_LANG, "localhost", LoginConst.DEVICE_PC); for(int i=0;i() { @Override public String mapRow(ResultSet rs, int arg1) throws SQLException { diff --git a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/web/CoeProcessLevelWeb.java b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/web/CoeProcessLevelWeb.java index da1404fb..4d742198 100755 --- a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/web/CoeProcessLevelWeb.java +++ b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/web/CoeProcessLevelWeb.java @@ -9062,6 +9062,7 @@ public class CoeProcessLevelWeb extends ActionWeb { } } } + if (!methodAttributeModelMap.containsKey(shapeName + "-" + attrId)) { continue;// 没有配置到形状的属性,不处理 } @@ -9077,6 +9078,7 @@ public class CoeProcessLevelWeb extends ActionWeb { flag2 = UtilString.isNotEmpty(value); }*/ if (!flag2) { + sb2.append("【"+o.get("text")+"】"+"''"+attrModel.getNewTitle()+"''").append(","); } diff --git a/com.actionsoft.apps.coe.pal/template/page/pal.pl.repository.designer.view.portal.html b/com.actionsoft.apps.coe.pal/template/page/pal.pl.repository.designer.view.portal.html index e3042039..a7f13ebb 100755 --- a/com.actionsoft.apps.coe.pal/template/page/pal.pl.repository.designer.view.portal.html +++ b/com.actionsoft.apps.coe.pal/template/page/pal.pl.repository.designer.view.portal.html @@ -907,7 +907,6 @@ color: #999999!important; background-color: #ffffff!important; } - diff --git a/com.actionsoft.apps.coe.pal/template/page/pal.pl.repository.designer.view.portal.mobile.html b/com.actionsoft.apps.coe.pal/template/page/pal.pl.repository.designer.view.portal.mobile.html new file mode 100644 index 00000000..b464532a --- /dev/null +++ b/com.actionsoft.apps.coe.pal/template/page/pal.pl.repository.designer.view.portal.mobile.html @@ -0,0 +1,1242 @@ + + + + + <#fileName>(<#versionNum>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <#js> + + + + + + + + + + + <#processlink_ete_js> + + + + + + + + +
+
+ + +
+ <#toolbarName> +
+
+
评论
+
+
+
+ +
+ +
+ +
+
+ + +
+ +
+
+
+ +
+
+
+
+
+
+ 您的浏览器不支持HTML5,请使用IE9及以上版本,或Chrome、Firefox等浏览器 +
+
+
+
+
+ +
+ +
+ + + + + + + + + + + +
+ +
+
+
+
+
+
+
+
+
+ + + + + + +
+
+ +
+ +
+ +
活动属性 x
+ + +
+
+
+
+ + + + + + + +
+
+ + + +
+
+ +
+ + + + + + + + + + + + +
+ + + + + + + +
+ + + + diff --git a/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/extend/js/designer.extend.link.view.portal.mobile.js b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/extend/js/designer.extend.link.view.portal.mobile.js new file mode 100644 index 00000000..bb5fa30f --- /dev/null +++ b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/extend/js/designer.extend.link.view.portal.mobile.js @@ -0,0 +1,2264 @@ +/** + * @author wangyh 与插入链接,属性,关系相关的js内容 + */ +var selectedShapes = []; +var linkType; // 链接类型:custom:自定义链接;file:文件链接 +$(document).ready(function() { + showPainting(); + + setTimeout(function() { + Designer.hotkey.init();// 解决快捷健绑定不成功 + DesignerCopyPaste.changeTitleListen(); + if (selectedElementId && selectedElementId != "") { + Utils.selectShape(selectedElementId); + }// 复制粘贴形状内容同步的监听 + }, 1000); + //initShapeAttribute('0'); + //changeArributeByShape('portalAttrShow') +}); + +/** + * 兼容1024*768画布显示 + * + * @param {} + * + */ + +function showPainting() { + var width = screen.width; + if (width == 1024) { + $("#toolbar_wfversion_info").addClass("showPainting"); + if (parent.getWidthToolbar() > 750) { + $(".toolbar").removeClass("heightCssToolbar") + .addClass("toolbarExtend"); + $("#bar_back").removeClass("cssToolbar"); + + } else { + $(".toolbar").addClass("heightCssToolbar") + .removeClass("toolbarExtend"); + $("#bar_back").addClass("cssToolbar"); + } + } +} + +/** + * 重写单击图形时的触发的事件 + * + * @param {} + * + * @returns {} + */ +Designer.op.shapeSelectable = function(a) { + console.log(000) + var b = $("#designer_canvas"); + b.bind("mousedown.select", function(d) { + Designer.op.changeState("seelcting_shapes"); + var e = a.id; + var c = []; + if (d.ctrlKey) { + var c = Utils.getSelectedIds(); + if (Utils.isSelected(e)) { + Utils.removeFromArray(c, e); + } else { + c.push(e); + } + + Utils.unselect(); + if (c.length > 0) { + Utils.selectShape(c); + } + } else { + if (Utils.selectIds.indexOf(e) < 0) { + + Utils.unselect(); + Utils.selectShape(e); + } + } + console.log(111) + $(document).bind("mouseup.select", function() { + Designer.op.resetState(); + b.unbind("mousedown.select"); + $(document).unbind("mouseup.select"); + console.log(222) + }); + // selectedShapes + DesignerCopyPaste.selectedShapeId = Utils.getSelected()[0].id; + if ($("div.dock_view_attribute").is(":visible")) { + showShapeRelationTab(null); + attributeShowTabContent(null); + shapeCopyAndPasteCount(null); + showRelevanceShapesContent(); + console.log(333) + } + + }); +}; +var myshapeLink = ""; +var linkIndex = 0; +var selectShape = Utils.getSelected()[0]; +/** + * 功能:去除字符串中所有空格 传参:需要处理的字符串 返回值:去除空格后的字符串 + */ +function trimSpaces(Str) { + var ResultStr = ""; + Temp = Str.split(/\s/); + for (i = 0; i < Temp.length; i++) { + ResultStr += Temp[i]; + } + return ResultStr; +} + +//风险控制 +UI.showRiskDlg = function(){ + var shape = Utils.getSelected()[0]; + var number; + if (shape.dataAttributes != undefined) { + for (var i = 0; i < shape.dataAttributes.length; i++) { + if (shape.dataAttributes[i].privateAttributeContent != null) { + var privateAttributeContent = shape.dataAttributes[i].privateAttributeContent; + if (typeof(privateAttributeContent) == "string") { + privateAttributeContent = eval("(" + privateAttributeContent + ")"); + } + number = privateAttributeContent.number; + } + } + } + if (number == undefined || number == "") { + $.simpleAlert("请先维护该节点编号"); + return; + } + var riskDlg = FrmDialog.open({ + width:800, + height:700, + url:"./w?sid=" + $("#sid").val() + "&cmd=com.actionsoft.apps.coe.pal.risk_pal_designer_risk", + data:{"plId":ruuid, "taskId": shape.id, "taskNum": number} + }); +} + +//流程节点的风险控制不为空,重新渲染shape +function renderShapeRisks(risk, control) { + var shape = Utils.getSelected()[0]; + if (shape.dataAttributes != undefined) { + var riskFlag = false; + var controlFlag = false; + for (var i = 0; i < shape.dataAttributes.length; i++) { + if (shape.dataAttributes[i].risk != undefined) { + shape.dataAttributes[i].risk = risk; + riskFlag = true; + } + if (shape.dataAttributes[i].control != undefined) { + shape.dataAttributes[i].control = control; + controlFlag = true; + } + } + if (!riskFlag) { + var index = shape.dataAttributes.length -1; + shape.dataAttributes[index].risk = risk; + } + if (!controlFlag) { + var index = shape.dataAttributes.length -1; + shape.dataAttributes[index].control = control; + } + } + Designer.painter.renderShape(shape); +} + +// 判断给定的对象是不是数组 +function isArray(o) { + return Object.prototype.toString.call(o) === '[object Array]'; +} + + +// 出现复制图形的统计 + +function shapeCopyAndPasteCount(shape) { + if (!$("#tagContent2").is(":visible")) { + return; + } + if (shape == null) + shape = Utils.getSelected()[0]; + $("#tagContentTableTitleContent2").empty(); + var shapeGroupId = ""; + var isCopy = ""; + var shapeId = shape.id; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.shapeGroupId) { + shapeGroupId = attr.shapeGroupId; + isCopy = attr.isCopy; + break; + } + } + var data = "shapeGroupId=" + shapeGroupId + "&shapeId=" + shapeId + + "&isCopy=" + isCopy; +} + +function showRelevanceShapesContent() { + if (!$("#tagContent3").is(":visible")) { + return; + } + $.ajax({ + type : "POST", + url : "./jd?sid=" + + CLB.sid + + "&cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_relation_shape_relevance_show", + data : { + shapeId : Utils.getSelected()[0].id, + fileId: ruuid + }, + success : function(msg) { + $("#tagContentTableTitleContent3").empty(); + if (msg.data.result == "ok") { + var shapesObj = msg.data.list; + var mouseover = "onmouseout=\"hideRemoveTrAttribute(this);\""; + var mouseout = "onmouseover=\"showRemoveTrAttribute(this);\""; + if (role == "viewer") { + mouseover = ""; + mouseout = ""; + } + for (var i = 0; i < shapesObj.length; i++) { + var style = ""; + var onclick = ""; + if (editable || filePerms == "-" || filePerms.indexOf(shapesObj[i].fileVersionId) > -1) { + style = "cursor:pointer;color:blue;"; + if (parent.openDesginerFromAttr) { + onclick = 'parent.openDesginerFromAttr(\'' + + shapesObj[i].fileId + + '\',0,\'' + + shapesObj[i].fileName + + '\',\'\',\'\',false,\'' + + shapesObj[i].shapeId + + '\')'; + } else if (window.opener.openDesginer) { + var obj = { + id: shapesObj[i].fileId, + processDefId: '' + } + onclick = 'window.opener.openDesginer({id:\'' + shapesObj[i].fileId + '\', processDefId:\'\'})'; + } + + } + var content = '' + + '
' + + shapesObj[i].fileName + + '(V ' + shapesObj[i].fileVersion + '.0)' + + '
' + + '
' + + shapesObj[i].shapeText + + '
'; + + $("#tagContentTableTitleContent3").append(content); + } + } + } + }); + +} + +function getPrivateAttributeHtml(attributesJsonArray, tbodyId, shape) { + + // 属性排序 + var defaultMoreAttr = $('#defaultMoreAttrSort').val(); + if(defaultMoreAttr.length > 0) { + var arr = defaultMoreAttr.split('|'); + var tempAttrArray = []; + for(var i = 0; i < arr.length; i++) { + for(var j = 0; j < attributesJsonArray.length; j++) { + if(attributesJsonArray[j] == undefined || attributesJsonArray[j] == null) { + continue; + } + if(arr[i] == attributesJsonArray[j].id) { + tempAttrArray.push(attributesJsonArray[j]); + } + } + } + //取新添加的属性 + if (tempAttrArray.length > 0) { + var newAttrArray = []; + newAttrArray = tempAttrArray.concat(attributesJsonArray).filter(function(v, i, arr) { + return arr.indexOf(v) === arr.lastIndexOf(v); + });; + attributesJsonArray = tempAttrArray.concat(newAttrArray); + } + } + var flag = false; + var objIds = []; + var selectFlag = false; + var selectValues = []; + var mouseover = "onmouseout=\"hideRemoveTrAttribute(this);\""; + var mouseout = "onmouseover=\"showRemoveTrAttribute(this);\""; + if (role == "viewer") { + mouseover = ""; + mouseout = ""; + } + var userAddress = false; + var deptAddress = false; + var userObjIds = new Array(); + var deptObjIds = new Array(); + var deptIds = ""; + for (var index = 0; index < attributesJsonArray.length; index++) { + var obj = attributesJsonArray[index]; + if (obj != null && obj != undefined && obj.value != undefined) { + if(obj.name=="活动序号"){ + continue; + } + var constr = ''; + /*constr += '' + obj.name + '';*/ + constr += '' + obj.name + ': ' +obj.value+ ''; + constr += ''; + if ((!obj.readonly && obj.type == "string") + || (!obj.readonly && obj.type == "list")) { + // 目前支持到文本的输入 ,需求定下了再改 + constr = ''; + /*constr += '' + obj.name + '';*/ + constr += '' + '【' + obj.name + '】'+' '+ obj.value + ''; + constr += ''; + } else if (!obj.readonly && obj.type == "link") { + constr = ''; + /*constr += '' + obj.name + '';*/ + // constr += '' + obj.value + ''; + constr += '' + '【' + obj.name + '】'+' ' + '
' + obj.value + '' + ''; + constr += ''; + } else if (!obj.readonly && obj.type == "number") { + constr = ''; + /*constr += '' + obj.name + '';*/ + constr += '' + '【' + obj.name + '】'+' '+ obj.value + ''; + constr += ''; + } else if (!obj.readonly && obj.type == "boolean") { + constr = ''; + /*constr += '' + obj.name + '';*/ + constr += '' + '【' + obj.name + '】'+' '+''; + constr += ''; + } else if (!obj.readonly && obj.type == "textarea") { + constr = ''; + /*constr += '' + obj.name + '';*/ + if (obj.value == undefined) { + obj.value = ''; + } + constr += '' + '【' + obj.name + '】'+' '+ obj.value.replace(/\n/g, '
') +''; + constr += ''; + } else if (obj.readonly && obj.type == "relation") { + var relationValue = ""; + if (relationShapesData[shape.id] !== null && relationShapesData[shape.id][obj.id] != null) { + relationValue = relationShapesData[shape.id][obj.id]; + } + constr = ''; + /*constr += '' + obj.name + '';*/ + constr += '' + '【' + obj.name + '】'+' '+ relationValue +''; + constr += ''; + } else if (obj.type == "select" || obj.type == "select_m") { + constr = ''; + /*constr += '' + obj.name + '';*/ + constr += '' + '【' + obj.name + '】'+ ' '+ obj.value +''; + constr += ''; + + selectFlag = true; + var selectValue = { + "objId": obj.id, + "objValue": obj.value, + "objType": obj.type + }; + selectValues.push(selectValue); + } else if (obj.readonly && obj.type == "userAddress") { + userAddress = true; + userObjIds.push(obj.id); + var relationValue = ""; + if (relationShapesData[shape.id] !== null && relationShapesData[shape.id][obj.id] != null) { + relationValue = relationShapesData[shape.id][obj.id]; + } + constr = ''; + /*constr += '' + obj.name + '';*/ + constr += '' + '【' + obj.name +'】'+ ' '+ relationValue +''; + constr += ''; + } else if (obj.readonly && obj.type == "deptAddress") { + deptAddress = true; + deptObjIds.push(obj.id); + deptIds += "," + obj.value; + var relationValue = ""; + if (relationShapesData[shape.id] !== null && relationShapesData[shape.id][obj.id] != null) { + relationValue = relationShapesData[shape.id][obj.id]; + } + constr = ''; + /*constr += '' + obj.name + '';*/ + constr += '' + '【' + obj.name +'】'+ ' '+ relationValue +''; + constr += ''; + } else if (obj.readonly && obj.type == "awsorg") { + var relationValue = ""; + if (relationShapesData[shape.id] !== null && relationShapesData[shape.id][obj.id] != null) { + relationValue = relationShapesData[shape.id][obj.id]; + } + constr = ''; + /*constr += '' + obj.name + '';*/ + constr += '' + '【' + obj.name +'】'+ ' '+ relationValue +''; + constr += ''; + } else if (obj.readonly && obj.type == "hidden") { + constr = '' + + ' ' + obj.name + '' + + ' ' + + ' ' + //+ '
' + + ''; + } else if (obj.type == "table") { + let tableInput = '请输入' + if (obj.value.table.length > 1) { + tableInput = '请查看' + } + constr = ''; + /*constr += '' + obj.name + '';*/ + constr += '' + '【' + obj.name +'】'+ ' ' + tableInput + '' +''; + constr += ''; + } + $('#' + tbodyId + ' table[name=' + shape.id + ']').append(constr); + } + + } + if (selectFlag) { + getSelectOptions(shape.category, selectValues); //处理select类型 + } +} + +// table表格 +function openDialog(obj) { + let tableName = obj.name + let dialogTable = obj.table + $("#attribute-table-content2").empty() + let thead = + '' + + '' + dialogTable[0].name + '' + + '' + dialogTable[0].desc + '' + +'' + $('#attribute-table-content2').append(thead) + for ( let i = 1; i < dialogTable.length; i++) { + let str = + '' + + '' + dialogTable[i].name + '' + + '' + dialogTable[i].desc + '' + +'' + $('#attribute-table-content2').append(str) + } + + $("#attribute-table-window2").dialog({ + title: tableName, + draggable: true, + buttons : [{ + text : '确定', + cls : "blue", + handler : function() { + $("#attribute-table-window2").dialog('close'); + } + }, { + text : '取消', + handler : function() { + $("#attribute-table-window2").dialog('close'); + } + }] + }) +} + +Array.prototype.unique = function(){ + var res = []; + var json = {}; + for(var i = 0; i < this.length; i++){ + if(!json[this[i]]){ + res.push(this[i]); + json[this[i]] = 1; + } + } + return res; +} + + +// 得到不同属性值关联的形状 +function getAttributeByAttrId(shape, objId, relationShapes) { + //objId 属性的key值 + var exitAttributesJsonArray = []; + var attrArr = []; //修改后的属性值 + + for (var i = 0; i < relationShapes.length; i++) { + var shapeObjT = relationShapes[i]; + attrArr.push(shapeObjT.relationShapeId); + } + attrArr = attrArr.unique(); //属性值去重 + if (attrArr.length > 0) { + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + exitAttributesJsonArray = attr.attributesJsonArray; + break; + } + } + for (var c = 0; c < exitAttributesJsonArray.length; c++) { + var el = exitAttributesJsonArray[c]; + if(el == null) continue; + if (el.id == objId) { + el.value = attrArr.join(","); + break; + } + } + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + attr.attributesJsonArray = exitAttributesJsonArray; + break; + } + } + for (var j = 0, len = attrArr.length; j < len; j++) { + var attrShapeId = attrArr[j]; + relationShapesObject[attrShapeId] = {"relationShapeId" : attrShapeId}; + } + $("input[objid_shapeId='" + objId + "']").val(attrArr.join(",")); + } else { + $("input[objid_shapeId='" + objId + "']").val(""); + } + + return shape; +} +Array.prototype.notDistinct = function() { + var newArr = [], obj = {}; + for (var i = 0, len = this.length; i < len; i++) { + if (!obj[this[i]]) { + newArr.push(this[i]); + obj[this[i]] = 'new'; + } + } + return newArr; +} + +// 删除掉关联形状 +function removeTrRelevanceShapes(obj) { + var options = { + title : "提示", + content : "确定删除吗?", + model : false, + onConfirm : function() { + // 确定删除 + var shape = Utils.getSelected()[0]; + var tempArray = new Array(); + var count = 0; + if (shape) { + var relevanceShapes = []; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.relevanceShapes) { + relevanceShapes = attr.relevanceShapes; + break; + } + } + for (var index = 0; index < relevanceShapes.length; index++) { + var tempObj = relevanceShapes[index]; + if (tempObj.id == $(obj).attr("objid")) { + continue; + } + tempArray[count++] = tempObj; + } + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.relevanceShapes) { + attr.relevanceShapes = tempArray; + break; + } + } + Model.update(shape); + } + $(obj).hide(); + $(obj).parent().parent().remove(); + $.ajax({ + type : "POST", + url : "./jd?sid=" + + CLB.sid + + "&cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_relation_shape_relevance_remove", + data : { + uuid : $(obj).attr("objid"), + }, + success : function(msg) { + } + }); + } + }; + window.top.$.confirm(options); +} + +// 过虑 掉重复的图形 +function filterRepeatShapes(arr1, shape) { + var arr2 = []; + var arr = []; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.relevanceShapes) { + arr2 = attr.relevanceShapes; + break; + } + } + var flag = false; + for (var a = 0; a < arr1.length; a++) { + var arrEle1 = arr1[a]; + for (var b = 0; b < arr2.length; b++) { + var arrEle2 = arr2[b]; + if (arrEle1.id == arrEle2.id) { + flag = true; + break; + } + } + if (flag) { + flag = false; + continue; + } + arr2.push(arrEle1); + } + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.relevanceShapes) { + attr.relevanceShapes = arr2; + break; + } + } + + return shape; +} + +function updateModelElementsAttribute(selectedShape, nodes) { + var shapes = Model.define.elements; + for (var shapeId in shapes) { + var obj = nodes; + var shape = shapes[shapeId]; + if(shape.name != "linker" && shape.id != selectedShape.id && shape.name == selectedShape.name){ + var exitAttributesJsonArray = []; + var attrIndex = 0; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + exitAttributesJsonArray = attr.attributesJsonArray; + attrIndex = i; + break; + } + } + var arrJsontemp = []; + for (var t = 0; t < exitAttributesJsonArray.length; t++) { + if(exitAttributesJsonArray[t] == null) { + continue; + } + arrJsontemp.push(exitAttributesJsonArray[t]); + } + obj = filterRepeatAttribute(obj, exitAttributesJsonArray, shape.dataAttributes[attrIndex].attributesJsonArray); + for (var a = 0; a < obj.length; a++) { + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + attr.attributesJsonArray.push(obj[a]); + break; + } + } + } + if (arrJsontemp.length != 0) { + var tempArr = removeShepeAttributeAndReturnDifferent(arrJsontemp, filterNotCheckedAttribute(nodes, arrJsontemp)); + var tempArray = new Array(); + for (var e = 0; e < tempArr.length; e++) { + if (tempArr[e] != 0 && tempArr[e] != "0") { + removeNotCheckedAttribute(shape, tempArr[e]); + } + } + if (tempArray.length != 0) { + shape.attributesJsonArray = tempArray; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + attr.attributesJsonArray = tempArray; + break; + } + } + } + } + Model.update(shape); + //修改属性时,后台查询是否有关联属性,如果删除的属性有关联属性,需要删除关联表中的数据 + var attrIds = ","; + if (nodes != undefined) { + for (var i = 0; i < nodes.length; i++) { + if (nodes[i].type) { + attrIds += nodes[i].id + ","; + } + } + awsui.ajax.request({ + url : "./jd", + method : "POST", + data : { + sid:sid, + cmd:"com.actionsoft.apps.coe.pal_pl_repository_designer_relation_shape_relevance_check", + fileId: ruuid, + shapeId: shape.id, + attrIds: attrIds + }, + ok : function(r) { + }, + err:function(r){ + } + }); + } + } + } +} + +// 过虑出当在节点上不选中时的属性 + +function filterNotCheckedAttribute(checkedObj, exitObj) { + var result1 = []; + if (checkedObj.length == 0) { + return []; + } else { + var flag = false; + for (var b = 0; b < checkedObj.length; b++) { + var checkedArr1 = checkedObj[b]; + for (var a = 0; a < exitObj.length; a++) { + var exitArr1 = exitObj[a]; + if (exitArr1.id == checkedArr1.id) { + result1.push(checkedArr1); + break; + } + } + } + return result1; + } +} + +// 移除图形属性中部分已存在的元素并返回不同元素 + +function removeShepeAttributeAndReturnDifferent(exitObj, newObj1) { + var result1 = []; + for (var a = 0; a < newObj1.length; a++) { + var obj1 = newObj1[a]; + for (var i = 0, n = 0; i < exitObj.length; i++) { + if (exitObj[i].id == obj1.id) { + result1.push(i); + break; + } + } + } + for (var i = 0; i < result1.length; i++) { + exitObj[result1[i]] = 0; + } + return exitObj; +} +// 删除没有选中的元素 + +function removeNotCheckedAttribute(shape, obj1) { + var tempArray = new Array(); + var attributesJsonArray1 = []; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + attributesJsonArray1 = attr.attributesJsonArray; + break; + } + } + for (var index = 0; index < attributesJsonArray1.length; index++) { + if(attributesJsonArray1[index] == null) { + continue; + } + var tempObj1 = attributesJsonArray1[index]; + if (tempObj1.id == obj1.id) { + continue; + } + tempArray.push(tempObj1); + } + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + attr.attributesJsonArray = tempArray; + break; + } + } + // shape.attributesJsonArray = tempArray; + // Model.update(shape); + $("#" + shape.id + " name=[tagContentTable0] tr[objid='" + obj1.id + "']").remove(); +} +// 过滤掉重复的属性生成新的数组 + +function filterRepeatAttribute(arr1, arr2, shape) { + var result = []; + var flag = false; + for (var a = 0; a < arr1.length; a++) { + var arrEle1 = arr1[a]; + for (var b = 0; b < arr2.length; b++) { + var arrEle2 = arr2[b]; + if(arrEle2 == null) { + continue; + } + if (arrEle1.id == arrEle2.id) { + shape[b].name = arrEle1.name; + flag = true; + break; + } + } + if (flag) { + flag = false; + continue; + } + result.push(arrEle1); + } + + return result; +} + +// 当属性为可编辑时,编辑时自动保存 + +function showEditButton(obj) { + $(obj).siblings("span::contains('...')").show(); +} + +function saveInputContent(obj) { + // 按钮 + // $(obj).siblings("span::contains('...')").hide(); + var objValue = $(obj).val(); + if ($(obj).attr("inputType") == "number") { + var val = $(obj).val(); + if (/\D/.test(val)) { + $.simpleAlert("此处只能输入数字", "info", 2000); + $("#simplealert>.msg").css("top", "15px"); + return; + } + } + updateAttributeById($(obj).attr("objid"), objValue); +} + +function saveSelectContent(objAttr,objValue){ + updateAttributeById(objAttr, objValue); +} + +// 显示select下拉框 + +function showSelectOption(obj) { + var str = $(obj).attr("ty"); + if (str == "td") { + $(obj).children("select").show(); + $(obj).children("span").hide(); + } else { + updateAttributeById($(obj).attr("objid"), $(obj) + .find("option:selected").text()); + $(obj).hide(); + $(obj).siblings("span").text($(obj).find("option:selected").text()) + .show(); + } +} + +// 属性编辑打开窗口 + +function showAttributedEditWindow(obj) { + var objId = $(obj).attr("objid"); + var shape = Utils.getSelected()[0]; + if (shape) { + if (objId == "desc") { + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.shapeDesc != undefined) { + $("#attribute-edit-title").text("描述/定义"); + $("#attribute-edit-content").html(attr.shapeDesc == undefined ? "" : attr.shapeDesc.replace(/\n/g,'
')); + break; + } + } + } else { + var attributesJsonArray = []; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + attributesJsonArray = attr.attributesJsonArray; + break; + } + } + for (var index = 0; index < attributesJsonArray.length; index++) { + var tempObj = attributesJsonArray[index]; + if (tempObj.id == objId) { + $("#attribute-edit-title").text(tempObj.name); + $("#attribute-edit-content").val(tempObj.value); + break; + } + } + } + } + $("#attribute-edit-window").dialog({ + draggable: false, + buttons : [{ + text : '确定', + cls : "blue", + handler : function() { + var str = $("#attribute-edit-content").val(); + if (objId == "desc") { + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.shapeDesc != undefined) { + shape.dataAttributes[i].shapeDesc = str; + break; + } + } + Model.update(shape); + } else { + updateAttributeById($(obj).attr("objid"), str); + } + $(obj).val(str); + $("#attribute-edit-window").dialog('close'); + } + }, { + text : '关闭', + handler : function() { + $("#attribute-edit-window").dialog('close'); + } + }] + }); +} + +// 对单个属性的更新操作 + +function updateAttributeById(objId, va) { + // var shape = Utils.getSelected()[0]; + var shape = selectShape; + var tempArray = new Array(); + var count = 0; + if (shape) { + /* + * for (var i = 0; i < shape.dataAttributes.length; i++) { var attr = + * shape.dataAttributes[i]; if (attr.attributesContent) { + * attr.attributesContent = $("#" + shape.id + " tbody[name=tagContentTable0]").html(); break; } } + */ + var attributesJsonArray = shape.attributesJsonArray; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + attributesJsonArray = attr.attributesJsonArray; + break; + } + } + for (var index = 0; index < attributesJsonArray.length; index++) { + var tempObj = attributesJsonArray[index]; + if(tempObj == null) { + continue; + } + if (tempObj.id == objId) { + tempObj.value = va; + tempArray[count++] = tempObj; + continue; + } + tempArray[count++] = tempObj; + } + if (tempArray.length > 0) { + shape.attributesJsonArray = tempArray; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + attr.attributesJsonArray = tempArray; + break; + } + } + if ("isAutoSave" == 1) { + CLB.cmdList = [{ + "type" : "message", + "cmd" : "com.actionsoft.apps.coe.pal_pl_repository_designer_message" + }]; + } + Model.update(shape); + } + } +} + +// 删除行上的属性 +function removeTrAttribute(obj) { + var options = { + title : "提示", + content : "确定删除吗?", + model : false, + onConfirm : function() { + // 确定删除 + var shape = Utils.getSelected()[0]; + var tempArray = new Array(); + var count = 0; + if (shape) { + // shape.attributesContent = $("#" + shape.id + " tbody[name=tagContentTable0]").html(); + var attributesJsonArray = []; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + attributesJsonArray = attr.attributesJsonArray; + break; + } + } + for (var index = 0; index < attributesJsonArray.length; index++) { + var tempObj = attributesJsonArray[index]; + if (tempObj.id == $(obj).attr("objid")) { + continue; + } + tempArray[count++] = tempObj; + } + // if (tempArray.length >= 0) { + shape.attributesJsonArray = tempArray; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + attr.attributesJsonArray = tempArray; + break; + } + } + Model.update(shape); + // } + } + $(obj).hide(); + $(obj).parent().parent().remove(); + $.ajax({ + type : "POST", + url : "./jd?sid=" + + CLB.sid + + "&cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_relation_shape_relevance_remove", + data : { + uuid : $(obj).attr("objid"), + shapeId : Utils.getSelected()[0].id, + fileId : ruuid + }, + success : function(msg) { + } + }); + } + }; + window.top.$.confirm(options); +} +// 显示删除按钮 + +function showRemoveTrAttribute(obj) { + $(obj).addClass("attr_bg_color_tr"); + $("input[name=attribute_name_input_" + $(obj).attr("objid") + "]") + .addClass("attr_bg_color_tr"); + $("input[name=attribute_name_input_" + $(obj).attr("objid") + "]").parent() + .addClass("attr_bg_color_tr"); + $(obj).children("td").children(".ico_attribute_delete").show(); + if ($(obj).attr("ty") == "sel") { + $(obj).children("td").children("select").show(); + $(obj).children("td").children("span").hide(); + } +} +// 隐藏删除按钮 + +function hideRemoveTrAttribute(obj) { + $(obj).removeClass("attr_bg_color_tr"); + $("input[name=attribute_name_input_" + $(obj).attr("objid") + "]") + .removeClass("attr_bg_color_tr"); + $("input[name=attribute_name_input_" + $(obj).attr("objid") + "]").parent() + .removeClass("attr_bg_color_tr"); + $(obj).children("td").children(".ico_attribute_delete").hide(); + if ($(obj).attr("ty") == "sel") { + $(obj).children("td").children("select").hide(); + $(obj).children("td").children("span").show(); + } +} +// 经常用的是通过遍历,重构数组. +Array.prototype.remove = function(dx) { + if (isNaN(dx) || dx > this.length) { + return false; + } + for (var i = 0, n = 0; i < this.length; i++) { + if (this[i] != this[dx]) { + this[n++] = this[i]; + } + } + this.length -= 1; +}; +function removeElementFromArr(dx, obj) { + if (isNaN(dx) || dx > obj.length) { + return false; + } + for (var i = 0, n = 0; i < obj.length; i++) { + if (obj[i] != obj[dx]) { + obj[n++] = obj[i]; + } + } + obj.length -= 1; + return obj; +} + +// 在数组中获取指定值的元素索引 +Array.prototype.getIndexByValue = function(value) { + var index = -1; + for (var i = 0; i < this.length; i++) { + if (this[i].url == value) { + index = i; + break; + } + } + return index; +}; +Array.prototype.getIndexByValueById = function(value) { + var index = -1; + for (var i = 0; i < this.length; i++) { + if (this[i] == value) { + index = i; + break; + } + } + return index; +}; +// 重写链接创建后的事件 +Designer.events.addEventListener("linkerCreated", function(linker) { + /** + * var toId = linker.to.id; //当前选中的图形 var fromShape = + * Utils.getSelected()[0]; //目标图形 var toShape = + * Model.getShapeById(toId); var toShapeTemp = []; for (var index = + * 0; index < linkerRelationship.length; index++) { var shapes = + * linkerRelationship[index]; var fromShapeId = shapes.fromShapeId; + * var toShapeIds = shapes.toShapeId; if (fromShape.name == + * fromShapeId) { if (toShapeIds != "*") { //判断是针对哪些图形有效 if + * (toShapeIds.indexOf(",") > 0) { toShapeTemp = + * toShapeIds.split(","); } else { toShapeTemp.push(toShapeIds); } } } } + * if (toShapeTemp.length != 0) { for (var index = 0; index < + * toShapeTemp.length; index++) { var tempShapeId = + * toShapeTemp[index]; //删除这条线 if (toShape.name != tempShapeId) { + * $.simpleAlert("不支持所选对象与目标对象的这种关系", "error", 2500); //待续未完 + * deleteLinkerSelected(linker); } } } // if (toShape.name == "xxx") { // + * linker.to.id = null; //} //获取选中的链接线 var outlinkers = + * Utils.getOutlinkers(fromShape); var l = linker; // + * consloe.log(l); + */ + // 判断是不是支持这种关系类型 + // isObjectRelationshipModel(linker, true); + // showShapeRelationTab(null); + // attributeShowTabContent(null); + // showRelevanceShapesContent(); + // shapeCopyAndPasteCount(null); +}); + +/** + * 图形创建后重写 + */ +Designer.events.addEventListener("created", function(shape) { + + if (Designer.status == "demo" && !demoCreatedTiped) { + UI.showStartStep("created", $("#" + shape.id)); + demoCreatedTiped = true; + } + /*************************************************************************** + * var selectedShape = Utils.getSelected()[0]; var linkerIds = + * Model.getShapeLinkers(selectedShape.id); + * if(linkerIds&&linkerIds.length>0){ var linker = + * Model.getShapeById(linkerIds[0]); isObjectRelationshipModel(linker, + * true); } + **************************************************************************/ + showShapeRelationTab(shape); + if(shape.category == "control_risk") { + initPrivateAttribute(shape, "control_risk"); // 创建节点后编号提供默认值 + } + if(shape.category == "process_flowchart" || shape.category == "process_bpmn2") {// 流程flowchar编号初始化编号 + if (!IsGroupChild(shape)) {// 不在组内部或者新建立的节点为组节点 + // 获取最大编号 + initPrivateAttribute(shape, shape.category); + } + if(shape.name == "group") {// 组置于最底层 + // Designer.layerShapes("back"); + var start = Model.orderList[0].zindex; //取到最小的zindex + start -= 1; + shape.props.zindex = start; + } + } + attributeShowTabContent(shape); + // shapeCopyAndPasteCount(shape); +}); + +// 设置编号属性默认值 +function initPrivateAttribute(newShape, type) { + if (type == "control_risk") { + var shapes = Model.define.elements; + var max = 0; + for (var shapeId in shapes) { + var shape = shapes[shapeId]; + if(shape.category == "control_risk") { // 过滤其他模型图形 + var dataAttr = shape.dataAttributes[0]; + var number = typeof dataAttr.privateAttributeContent == "string" ? JSON.parse(dataAttr.privateAttributeContent.replace(/'/g,'"')).number : dataAttr.privateAttributeContent.number; + if(typeof number == 'string') number = number.replace(/^\s+|\s+$/g,""); + if(!isNaN(number)) if(number > max) max = number; + } + } + max = Math.floor(max) + 1; + newShape.dataAttributes[0].privateAttributeContent = {'number': max }; + } else { + var shapes = Model.define.elements; + var max = 0; + for (var shapeId in shapes) { + var shape = shapes[shapeId]; + if (shape.dataAttributes != undefined) { + for (var i = 0; i < shape.dataAttributes.length; i++) { + if (shape.dataAttributes[i].privateAttributeContent != null) { + var privateAttributeContent = shape.dataAttributes[i].privateAttributeContent; + if (typeof(privateAttributeContent) == "string") { + privateAttributeContent = eval("(" + privateAttributeContent + ")"); + } + var number = privateAttributeContent.number; + if(number != undefined && number != null && number != "") { + if(typeof number == 'string') number = number.replace(/^\s+|\s+$/g,""); + if(!isNaN(number)) if(parseInt(number) > parseInt(max)) max = number; + } + } + } + } + } + // 设置最大编号为max+1 + + var json = "{'number':'编号'}"; + // var json2 = "{'number':'" + (parseInt(max)+1) + "'}"; + String.prototype.padLeft = Number.prototype.padLeft = function(total, pad) { + return (Array(total).join(pad || 0) + this).slice(-total); + } + var no = ((parseInt(parseInt(max)/10) + 1)*10); + if(no < 1000) { + no = no.padLeft(3); + } + var json2 = "{'number':'" + no + "'}"; + var shapeName = newShape.name; + if (shapeName.indexOf("_custom") > -1) { + shapeName = shapeName.substring(0, shapeName.indexOf("_")); + } + if (shapeName == "control" || shapeName == "risk" || shapeName == "item" + || shapeName == "regulation" || shapeName == "procedure" + || shapeName == "method" || shapeName == "manualOperation" + || shapeName == "predefinedProcess" + || shapeName == "callActivityCallingProcess" + || shapeName == "businessRuleTask" || shapeName == "scriptTask" + || shapeName == "sendTask" || shapeName == "userTask" + || shapeName == "serviceTask" || shapeName == "manualTask" + || shapeName == "receiveTask" || shapeName == "process" + || shapeName == "decision" || shapeName == "group") { + for (var i = 0; i < newShape.dataAttributes.length; i++) { + var attr = newShape.dataAttributes[i]; + if (attr.privateAttribute) { + attr.privateAttribute = json; + } + if(attr.privateAttributeContent) { + attr.privateAttributeContent = json2; + } + } + } + } +} + +//判断新建立的节点是否在shapeName为group的组内部 +function IsGroupChild(newShape) { + var result = false; + var newObj = newShape.props; + var x2 = parseInt(newObj.x); + var y2 = parseInt(newObj.y); + var w2 = parseInt(newObj.w); + var h2 = parseInt(newObj.h); + if (newShape.name == "group") { + return false; + } else { // 是否在组内部 + var shapes = Model.define.elements; + for (var shapeId in shapes) { + if (newShape.id == shapeId) continue; + var shape = shapes[shapeId]; + if (shape.name == "group") {// 存在组节点 + var obj = shape.props; + var x1 = parseInt(obj.x); + var y1 = parseInt(obj.y); + var w1 = parseInt(obj.w); + var h1 = parseInt(obj.h); + if (x1y2+h2 && x1+w1>x2+w2 && x1+w1>x2+w2 && y1+h1>y2+h2) { // 新建立节点在组内部 + result = true; + break; + } + } + } + } + return result; +} + +// 当不符合配置的关系时删除链接线 + +function deleteLinkerSelected(linker) { + // moveShape移除图片 moveLinker移除链线 shapeMultiSelectable图形选中事件 designer.core.js + var d = linker; + if (d.length > 0) { + Utils.unselect(); + var e = Utils.getAttachedShapes(d); + d = d.concat(e); + var c = []; + for (var b = 0; b < d.length; b++) { + var a = Utils.getChildrenShapes(d[b]); + c = c.concat(a) + } + d = d.concat(c); + Model.remove(d) + } +} +// 显示图形关系特性 + +function showShapeRelationTab(currentShape) { + + if (!$("#tagContent0").is(":visible")) { + return; + } + // 拿到所选的图形 + var selectedShape = Utils.getSelected()[0]; + if (!selectedShape) + return; + if (currentShape) { + selectedShape = currentShape + } + var linkers = Model.getShapeLinkers(selectedShape.id); + var outlinkers = Utils.getOutlinkers(Utils.getSelected()); + var l = linkers; + $("#tagContentTable1").empty(); + if (linkers != undefined) { + for (var a = 0; a < linkers.length; a++) { + // 根据连线的id拿到连线图形这个对象,再根据这个对象来找到他所关联的图形 + var element = linkers[a]; + var linkerObjs = Model.getShapeById(element); + // 来自哪个图形 的id + var fromId = linkerObjs.from.id; + var toId = linkerObjs.to.id; + var fromShape = Model.getShapeById(fromId); + var toShape = Model.getShapeById(toId); + if (fromShape != undefined && toShape != undefined) { + // 此处判断的是从本图形出去的连线 + if (fromShape.id == selectedShape.id) { + for (var b = 0; b < linkerRelationship.length; b++) { + var shapes = linkerRelationship[b]; + var fromShapeId = shapes.fromShapeId; + var toShapeIds = shapes.toShapeId; + if (fromShape.name == fromShapeId) { + if (toShapeIds != "*") { + // 判断是针对哪些图形有效 + if (toShapeIds.indexOf(",") > 0) { + var toShapeTemp = toShapeIds.split(","); + for (var c = 0; c < toShapeTemp.length; c++) { + var josnShapeId = toShapeTemp[c]; + if (josnShapeId == toShape.name) { + addtagContentTableContent( + fromShape, + shapes.outcomingName, + toShape); + } + } + } else { + if (toShapeIds == toShape.name) { + addtagContentTableContent(fromShape, + shapes.outcomingName, toShape); + } + } + } else { + // 当没有限制的时候 + addtagContentTableContent(fromShape, + shapes.outcomingName, toShape); + } + } + } + } else if (toShape.id == selectedShape.id) { + // 此处需要完善当不扶持 对像关系类型时下面的代码 不执行 + // 判断进来的链线开始 + for (var b = 0; b < linkerRelationship.length; b++) { + var shapes = linkerRelationship[b]; + var fromShapeId = shapes.fromShapeId; + var toShapeIds = shapes.toShapeId; + // if (toShape.name == fromShapeId) { + // 判断这两种图形中是否有这种关系 + // if (isObjectRelationshipModel(linkerObjs, false)) + // addtagContentTableContent(fromShape, + // shapes.incomingName); + // } + if (fromShape.name == fromShapeId) { + if (toShapeIds != "*") { + // 判断是针对哪些图形有效 + if (toShapeIds.indexOf(",") > 0) { + var toShapeTemp = toShapeIds.split(","); + for (var c = 0; c < toShapeTemp.length; c++) { + var josnShapeId = toShapeTemp[c]; + if (josnShapeId == selectedShape.name) { + addtagContentTableContent(toShape, + shapes.incomingName, + fromShape); + } + } + } else { + if (toShapeIds == selectedShape.name) { + addtagContentTableContent(toShape, + shapes.incomingName, fromShape); + } + } + } else { + // 当没有限制的时候 + addtagContentTableContent(toShape, + shapes.incomingName, fromShape); + } + + } + + } + // 判断进来的线结束 + } + } + var e = element; + } + } +} +// 给关系类型增加内容 + +function addtagContentTableContent(shape1, str, obj) { + if (obj.text == "") { + obj.text = obj.title; + } + var constr = '' + // + shape1.text + + str + + '
' + + obj.text + + '
'; + $("#tagContentTable1").append(constr); +} +// 判断是不是支持对象的关系类型 + +function isObjectRelationshipModel(linker, isAlert) { + var flag = false; + var toId = linker.to.id; + if (toId == null) + return false; + // 当前选中的图形 + var fromShape = Utils.getSelected()[0]; + // 目标图形 + var toShape = Model.getShapeById(toId); + var toShapeTemp = []; + for (var index = 0; index < linkerRelationship.length; index++) { + var shapes = linkerRelationship[index]; + var fromShapeId = shapes.fromShapeId; + var toShapeIds = shapes.toShapeId; + if (fromShape) { + if (fromShape.name == fromShapeId) { + if (toShapeIds != "*") { + // 判断是针对哪些图形有效 + if (toShapeIds.indexOf(",") > 0) { + toShapeTemp = toShapeIds.split(","); + } else { + toShapeTemp.push(toShapeIds); + } + } + } + } + } + if (toShapeTemp.length != 0) { + for (var index = 0; index < toShapeTemp.length; index++) { + var tempShapeId = toShapeTemp[index]; + // 删除这条线 + if (toShape && toShape.name == tempShapeId) { + // 画线时的操作 + // 显示关系类型里的操作 + flag = true; + break; + // 待续未完 + } + } + } else { + flag = true; + } + if (!flag) { + if (isAlert) { + // $.simpleAlert("不支持所选对象与目标对象的这种关系", "error", 2000); + // deleteLinkerSelected(linker); + } + } + return flag; +} + + +// 文件属性的处理 +function initProcessDesc() { + var length = Object.keys(processDesc).length; + var t = ''; + var b=''; + for(var i = 1; i <= length; i++) { + var obj = processDesc[i]; + //判断如果为相关文件/支持文件显示在右侧区域 + if(obj.name=="相关文件" || obj.name=="支持文件"){ + b += ''; + b += ''; + b += ''; + b += ''; + b += '
' + "【"+obj.name +"】"+ '
'; + var fileArry=obj.value.split(","); + for(var k=0;k'; + b += ''; + b += ''; + } + + }else{ + t += ''; + t += '' + "【"+obj.name +"】"+ ''; + + var value = obj.value; + if (value == undefined) { + value = ''; + t += ''+ value + ''; + t += ''; + } else if(obj.type == 'table') { + if(value == '') { + t += '' + value + ''; + t += ''; + } else { + let tableValue = JSON.parse(value.replace(/"/g,'\"')) + let tableFlag = '请输入' + if (tableValue.table.length > 1) { + tableFlag = '请查看' + } + t += '' +''+tableFlag+''+''; + t += ''; + } + } else { + value = value.replace(/\n/g,'
') + t += '' + value + ''; + t += ''; + } + } + + // t += '' + value + ''; + // t += ''; + } + + if(b.length>0){ + $('#relevantDocument').append(b); + } + + $('#portalDescDock').find('table').append(t); + // $('#portalDescDock').append('
 
'); +} + +function autoClickAttr() { + // 属性自动切换 + if ($('#openTab').is(':hidden')) { + var name = ''; + if (Utils.getSelected()[0] == null) { + name = 'processDesc'; + } else { + name = 'processAttr'; + } + $('#tab').find('div').removeClass('selected'); + $('#' + name).addClass('selected'); + $('.newadd_portalAttr').hide(); + if(name == "processDesc") { + dockShowView('portalDescShow'); + } + /*if(name == "processAttr") { + dockShowView('portalAttrShow'); + }*/ + if(name == "processFile") { + dockShowView('portalFileShow'); + } + if(name == 'fileheaderTab'){ + dockShowView('portalwjFileShow'); + } + + } +} + +function dockShowView(name) { + if ($("#dock_btn_" + name).button("isDisabled")) { + return; + } + $(".dock_view").hide(); + $(".dock_view_" + name).show(); + $(".dock_buttons").children().removeClass("selected"); + $("#dock_btn_" + name).addClass("selected"); + if (Dock.currentView == "history" && name != "history") { + Dock.closeHistory(); + } + Dock.currentView = name; +} + +// 点击页面时变更显示内容 +function changeArributeByShape(name) { + /*if(!name){ + $('.newadd_wen').show() + }*/ + if(!isClickTab) { + autoClickAttr(); + } + isClickTab = false; + var lastTable = '
 
'; + //节点属性和附件的处理,文件属性见initProcessDesc() + if(Utils.getSelected()[0] == undefined){ + console.log(111) + } + if (Utils.getSelected()[0] == null) { + initShapeAttribute('0'); + initUpfileData('0'); + ProcessManual('0'); + $('table[name=lastTable]').remove(); + if($('#portalAttrDock').children('table').length > 0) { + $('#portalAttrDock').append(lastTable); + } + if($('#portalFileDock').children('table').length > 0) { + // $('#portalFileDock').append(lastTable); + } + } else { + selectShape = Utils.getSelected()[0]; + initShapeAttribute(Utils.getSelected()[0].id); + initUpfileData(Utils.getSelected()[0].id); + ProcessManual(Utils.getSelected()[0].id); + $('table[name=lastTable]').remove(); + if ($('#portalAttrDock table[name=' + Utils.getSelected()[0].id + ']').length > 0) { + // $('#portalAttrDock').append(lastTable); + } + if ($('#portalFileDock table[name=' + Utils.getSelected()[0].id + ']').length > 0) { + // $('#portalFileDock').append(lastTable); + } + } +} + + +function ProcessManual(obj) { + var manualName; + if(methodId=="data.form"){ + manualName="表单手册 :"; + }else if (methodId=="process.epc"){ + manualName="EPC手册 :"; + }else if (methodId=="process.bpmn2"){ + manualName="BPMN手册 :"; + }else if (methodId=="process.flowchart"){ + manualName="泳道手册 :"; + }else if (methodId=="process.evc"){ + manualName="架构手册 :"; + }else if (methodId=="org.normal"){ + manualName="组织手册 :"; + }else if (methodId=="itsystem.normal"){ + manualName="IT系统手册 :"; + }else if (methodId=="control.policy"){ + manualName="制度手册 :"; + }else if (methodId=="control.risk"){ + manualName="风险控制手册 :"; + }else if(methodId=="control.kpi"){ + manualName="流程绩效手册 :"; + } + $('#processFileDock').empty(); + var t = ''; + /*t += ''; + t += ''; + t += '
'; + t += '
'+manualName+'
'; + t += '
'+ fileName +''; + t +=''; + t +='
'; + t += '
';*/ + + + t += '
'; + t +=''+manualName+''; + t += ''; + t +=''; + t += ''; + t += ''; + t += ''; + t +=''; + t += '
'; + t += '
'+ fileName +''; + t +=''; + + t +='
'; + + t += '
'; + t +='
'; + + $('#processFileDock').append(t); + + //相关文件/相关附件 + initUpfileData(obj); + +} + + + + +function openOutputFile(taskId) { + // 打开流程手册 + $.simpleAlert('正在打开', 'loading'); + $.ajax({ + type : "POST", + url : "./jd?sid=" + sid + + "&cmd=com.actionsoft.apps.coe.pal_outputreport_output_process_preview", + data : { + taskId : taskId + }, + success : function(msg) { + if (msg.result == "ok") { + $.simpleAlert("close"); + if (msg['data']) { + var url = msg['data']['url']; + window.open(url); + } + } else { + $.simpleAlert("close"); + $.simpleAlert(msg['msg'], 'info'); + } + } + }); +} + + +function downloadProcessFile(taskId) { + $.ajax({ + type : "POST", + url : "./jd?sid=" + sid + + "&cmd=com.actionsoft.apps.coe.pal_outputreport_output_process_download", + data : { + taskId : taskId + }, + success : function(msg) { + if (msg.result == "ok") { + window.location.href = msg.data.url; + }else{ + $.simpleAlert("请确认是否已生成流程手册", 'info'); + } + } + }); +} + + +/** + * 相关文件/制度文件下载 + * @param uuid + */ +function downloadZipFile(splitId,toolbarname) { + $.ajax({ + type : "POST", + url : "./jd?sid=" + sid + + "&cmd=com.actionsoft.apps.coe.pal_outputreport_output_downloadZipfile", + data : { + splitId : splitId, + toolbarname:toolbarname, + taskIdParams:taskId, + methodId:methodId + }, + success : function(msg) { + if (msg.result == "ok") { + window.location.href = msg.data.url; + } + } + }); +} + +// 初始化上传附件 +function initUpfileData(obj) { + $('#alertMessage').remove(); + if (obj == undefined || obj == '0') { + $('#portalFileDock').empty(); + var t = ''; + var splitId=''; + var processFile = upfileData['file']; + if(processFile.length > 0) { + /*t += ''; + t += '
'; + t += '
文件附件:
'; + for(var i = 0; i < processFile.length; i++) { + var obj = processFile[i]; + t += '
'+ obj.name +''; + /!*t +='';*!/ + t +='
'; + + }*/ + + t += '
'; + t +='文件附件:'; + for(var i = 0; i < processFile.length; i++) { + var obj = processFile[i]; + t += ''; + t +=''; + t += ''; + t += ''; + t += ''; + t +=''; + t += '
'; + t += '
'+ obj.name +''; + t +='
'; + t += '
'; + splitId+=obj.id+','; + } + + + t += '
'; + } + + var elements = Model.define.elements; + for(var e in elements) { + var ele = elements[e]; + if(ele.name == 'linker') { + continue; + } + var processShape = upfileData[ele.id]; + if(processShape != null && processShape.length > 0) { + + t += '
'; + t +=''+'节点附件:'+''+ele.text; + for(var i = 0; i < processShape.length; i++) { + t += ''; + t +=''; + t += ''; + t += ''; + t += ''; + t +=''; + t += '
'; + var obj = processShape[i]; + t += '
'+ obj.name +''; + t +='
'; + + t += '
'; + splitId+=obj.id+','; + + } + + } + t += '
'; + + } + + t += '
'; + + + $('#processFileDock').append(t); + + + var toolbarname=$("#toolbarname").text(); + if(splitId.length>0){ + var str=''; + splitId=splitId.substring(0,splitId.length-1); + str +=''; + $('#dabao').html(str); + } + + } else { + $('#processFileDock table').show(); + $('#portalFileDock table[name=' + obj + ']').show(); + } + var isHidden = true; + $('#processFileDock table').each(function(){ + if ($(this).css('display') != 'none') { + isHidden = false; + } + }); + if (isHidden) { + var $noContent = $('#noContent').clone(true); + $noContent.attr('id', 'alertMessage'); + $('#processFileDock').append($noContent); + $('#alertMessage').show(); + } +} + +//附件在线预览 +function readFile(uuid) { + $.simpleAlert("文件正在处理", "loading"); + awsui.ajax.request({ + type: "POST", + url: "./jd?sid=" + encodeURIComponent(sid) + "&cmd=com.actionsoft.apps.coe.pal_processlevel_upfile_read", + data: {uuid: uuid}, + ok: function(msg) { + $.simpleAlert("close"); + var url = msg.data.url; + if (msg.data.noSupport) { + window.location.href = url; + } else { + window.open(url); + } + }, + err: function(msg) { + } + }); +} + +function sortModelByNumber() { + + // 序号升序,无序号在后面 + var recordId = []; + var hasNumArr = []; + /*for (var shapeId in Model.define.elements) { + var shape = Model.define.elements[shapeId]; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attrArr = shape.dataAttributes[i]; + if (attrArr.attributesJsonArray && attrArr.attributesJsonArray.length > 0) { + for (var j = 0; j < attrArr.attributesJsonArray.length; j++) { + var attr = attrArr.attributesJsonArray[j]; + if (attr != null && attr.id && attr.id == 'number') { + var number = attr.value; + if(typeof number == 'string') { + number = number.replace(/^\s+|\s+$/g,"") + }; + if(number != undefined && number != null && number != "") { + var obj = {}; + obj.text = shape.text; + obj.id = shapeId; + obj.orderIndex = number; + hasNumArr.push(obj); + recordId.push(shapeId); + } + break; + } + + + + } + break; + } + } + }*/ + + /*******************************排序方法重构***by zhaolei**********************************************/ + for (var shapeId in Model.define.elements) { + var shape = Model.define.elements[shapeId]; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attrArr = shape.dataAttributes[i]; + if (attrArr.attributesJsonArray && attrArr.attributesJsonArray.length > 0) { + for (var j = 0; j < attrArr.attributesJsonArray.length; j++) { + var attr = attrArr.attributesJsonArray[j]; + + //根据活动序号排序 + if (attr != null && attr.id) { + + if(attr.id=="activity_number"){ + var number = attr.value; + var subNumer=number< 10 ? number.substr(1,1) : number; + + if(typeof subNumer == 'string') { + subNumer = subNumer.replace(/^\s+|\s+$/g,"") + }; + if(subNumer != undefined && subNumer != null && subNumer != "") { + var obj = {}; + obj.text = shape.text; + obj.id = shapeId; + obj.orderIndex = subNumer; + hasNumArr.push(obj); + recordId.push(shapeId); + } + } + } + + + + } + } + } + } + + // 有序号的元素升序排序 + var compare = function (prop) { + return function (obj1, obj2) { + var val1 = obj1[prop]; + var val2 = obj2[prop]; + if (!isNaN(Number(val1)) && !isNaN(Number(val2))) { + val1 = Number(val1); + val2 = Number(val2); + } + if (val1 < val2) { + return -1; + } else if (val1 > val2) { + return 1; + } else { + return 0; + } + } + } + + hasNumArr.sort(compare("orderIndex")); + /*for (var shapeId in Model.define.elements) { + if($.inArray(shapeId, recordId) == -1) { + var obj = {}; + obj.id = shapeId; + hasNumArr.push(obj); + } + }*/ + + return hasNumArr; +} + + + + +// 初始化流程步骤说明 +function initShapeAttribute(obj) { + if (obj == undefined || obj == '0') { + $('#portalAttrDock').empty(); + var elements = Model.define.elements; + var sortNumShapeArr = sortModelByNumber(); + for(var sortIndex = 0; sortIndex < sortNumShapeArr.length; sortIndex++) { + var temp = sortNumShapeArr[sortIndex]; + var shape = elements[temp.id]; + if(shape.name == 'linker') { + continue; + } + + // 属性弹出层显示的内容 + var attributesJsonArray = ""; + var attributesJsonArrayT = []; + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.attributesJsonArray) { + attributesJsonArrayT = attr.attributesJsonArray; + break; + } + } + // 属性排序 + var defaultMoreAttr = $('#defaultMoreAttrSort').val(); + if(defaultMoreAttr.length > 0) { + var arr = defaultMoreAttr.split('|'); + var tempAttrArray = []; + for(var i = 0; i < arr.length; i++) { + for(var j = 0; j < attributesJsonArrayT.length; j++) { + if(attributesJsonArrayT[j] == undefined || attributesJsonArrayT[j] == null) { + continue; + } + if(arr[i] == attributesJsonArrayT[j].id) { + tempAttrArray.push(attributesJsonArrayT[j]); + } + } + } + //取新添加的属性 + if (tempAttrArray.length > 0) { + var newAttrArray = []; + newAttrArray = tempAttrArray.concat(attributesJsonArrayT).filter(function(v, i, arr) { + return arr.indexOf(v) === arr.lastIndexOf(v); + }); + attributesJsonArrayT = tempAttrArray.concat(newAttrArray); + } + } + + //流程阅览只显示线上审批、线下审批、系统任务、人工审批 + if(shape.title=="线上审批" || shape.title=="线下审批" || shape.title=="系统任务" ||shape.title=="人工任务") { + var no = ""; + for (var i = 0; i < attributesJsonArrayT.length; i++) { + var id = attributesJsonArrayT[i].id; + if (id == "activity_number") { + var numberValue = attributesJsonArrayT[i].value; + if (numberValue != "") { + no = numberValue; + } + } + } + var novalue=no+"."+shape.text; + var t = ''; + t += '
'; + t += ''; + t += ''; + t += ''; + t += ''; + t += ''; + t += ''; + t += ''; + t += ''; + t += ''; + /*t += '';*/ + t += ''; + t += ''; + t += '
' +no+"."+shape.text +'
'; + $('#portalAttrDock').append(t); + if (shape && attributesJsonArrayT) { + // {}函数,改为图形创建时增加私有属性 + attributesJsonArray = attributesJsonArrayT; + var shapeTitle = shape.title == undefined ? "" : shape.title; + $("#" + shape.id + "type").text(shapeTitle); + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + if (attr.shapeDesc) { + $("#" + shape.id + "desc").html(attr.shapeDesc == undefined ? "" : attr.shapeDesc.replace(/\n/g, '
')); + break; + } + } + // 此处遍历attributesJsonArray输入 内容 + if (attributesJsonArray.length != 0) { + getPrivateAttributeHtml(attributesJsonArray, "portalAttrDock", shape); + } + } + } + } + } else { + $('#portalAttrDock table').hide(); + $('#portalAttrDock table[name=' + obj + ']').show(); + var elements = Model.define.elements; + var sortNumShapeArr = sortModelByNumber(); + for(var sortIndex = 0; sortIndex < sortNumShapeArr.length; sortIndex++) { + var temp = sortNumShapeArr[sortIndex]; + var shape = elements[temp.id]; + if(shape.title=="线上审批" || shape.title=="线下审批" || shape.title=="系统任务" ||shape.title=="人工任务") { + + if(obj==shape.id){ + continue; + } + document.getElementById("box"+shape.id).style.display="none"; + } + //document.getElementById("span"+shape.id).innerHTML=no+"."+shape.text; + } + } +} + +function searchChange(id,text) { + + if (document.getElementById("searchChangeFlg"+id).value == "1") { + document.getElementById(id+"change").style.display=""; + document.getElementById("searchChange"+id).innerHTML = ""; + document.getElementById("searchChangeFlg"+id).value = "0"; + document.getElementById("span"+id).innerHTML=""; + + } else { + document.getElementById(id+"change").style.display="none"; + document.getElementById("searchChange"+id).innerHTML = ""; + document.getElementById("searchChangeFlg"+id).value = "1"; + document.getElementById("span"+id).innerHTML=text; + } +} + + + +//获取select类型属性的option +var comboboxs = []; +function getSelectOptions(category, selectValues) { + $.ajax({ + type : "POST", + url : "./jd?sid=" + + CLB.sid + + "&cmd=com.actionsoft.apps.coe.pal_pl_attribute_option", + data : { + category : category + }, + success : function(msg) { + if (msg.result == "ok") { + var data = msg.data.data; + for (var i = 0; i < selectValues.length; i++) { + var objId = selectValues[i].objId; + var objValue = selectValues[i].objValue; + var objType = selectValues[i].objType; + var multiple = false; + var closeSelect = true; + if (objType == "select_m") { + multiple = true; + closeSelect = false; + } + var optionsData = data[objId]; + if (optionsData) { + optionsData = optionsData.split(","); + var selectData = []; + var selectedData = []; + if(objValue != null && objValue != ''){ + var selectedArr = objValue.split(','); + } + var y = 0; + if (optionsData.length > 0) { + for (var j = 0, len = optionsData.length; j < len; j++) { + var dataObj = { + id : j, + text : optionsData[j] + }; + selectData.push(dataObj); + if(objValue != null && objValue != ''){ + for(var x = 0; x < selectedArr.length; x++){ + if(selectedArr[x] == optionsData[j]){ + selectedData[y] = j; + y++; + } + } + } + } + } + $.fn.select2.defaults.set("language", "zh-CN"); + var opt1 = { + width : 244, + multiple:multiple, + closeOnSelect:closeSelect, + /*templateResult:formatState, + templateSelection:formatRepoSelection,*/ + placeholder:'请选择...' + }; + opt1.data = selectData; + $("#attribute_name_input_" + objId).parent().css("padding-left", "0px"); + var $obj = $("#attribute_name_input_" + objId).select2(opt1); + if(multiple){//多选 + $("#attribute_name_input_" + objId).val(selectedData).trigger("change"); + } else {//单选 + if(selectedData != null && selectedData != ''){ + $("#attribute_name_input_" + objId).val(selectedData[0]).trigger("change"); + } + } + $obj.off("select2:close").on("select2:close", function(e){//只能在关闭多选框时触发事件,close与unselect事件冲突,待完善 + var type = this.id.substring(this.id.lastIndexOf('_')+1); + var selectValue = []; + var selected = $('#' + this.id).select2('data'); + for(var j = 0; j < selected.length; j++){ + selectValue[j] = selected[j].text; + } + comboboxs[type] = selectValue.join(','); + saveSelectContent(type,comboboxs[type]); + }); + $("#attribute_name_input_" + objId + "_Tip").css({"float" : "left", "border" : "0"}); + } + } + } + } + }); +} + +function getScreenResolution() { + if (screen.width == 1024) { + + } +} +/** + * 图形创建后事件 + */ +/* + * Designer.events.addEventListener("created", function(a) { //alert(a.name) + * if(a.name != "linker"){ attributeShowTabContent(null); //Model.update(a); } + * if (Designer.status == "demo" && !demoCreatedTiped) { + * UI.showStartStep("created", $("#" + a.id)); demoCreatedTiped = true } }); + */ + +// 重构 +function openLinkUrlRewrite(type, url, target, uuid, obj, fileName, inspected) { + var sid=$("#sid").val(); + if (type == "custom") { + $("#link-dialog-normal_contextmenu").hide(); + if (target == "newTab" && parent.openTabCustom != undefined) { + parent.openTabCustom(uuid, url, fileName); + } else if (target == "_seft") { + if (parent.changeTabTitle) { + parent.changeTabTitle(chartId, fileName, uuid, "custom"); + } + window.location.href = url; + } else { + window.open(url+sid, target); + } + } else { + // 判断权限,判断是否存在文件 + // uuid 要打开的目标文件 + $.ajax({ + type:'POST', + url:'./jd?cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_viewer_portal_link_perm_check', + dataType : "JSON", + data:{ + sid : $("#sid").val(), + uuid:uuid + }, + success:function(r) { + switch(r.data.data) { + case 'ok': + window.open("./w?cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_viewer_portal_open_page&uuid=" + uuid + "&sid=" + sid); + break; + case 'noPerm': + $.simpleAlert('无权限访问', 'info'); + break; + case 'notFound': + $.simpleAlert('文件未找到', 'info'); + break; + case 'notPublish': + $.simpleAlert('文件未发布,无法访问', 'info'); + break; + default: + break; + } + } + }) + } +} diff --git a/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/extend/js/designer.extend.ui.mobile.js b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/extend/js/designer.extend.ui.mobile.js new file mode 100644 index 00000000..f53e71d8 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/extend/js/designer.extend.ui.mobile.js @@ -0,0 +1,489 @@ +$(function() { + // 版本管理 + // if ((isView == 1 || isView == true) && perms.indexOf("w") == -1 && process.processDefId == "") { + // $("#toolbar_designer_version_no").off("click.coe.openVersion").css({"cursor": "default"}); + // $("#toolbar_wfversion_info_status").off("click.coe.openVersion").css({"cursor": "default"}); + // } else { + // $("#toolbar_designer_version_no").on("click.coe.openVersion",function() {openDesignerVersionManager();}); + // $("#toolbar_wfversion_info_status").on("click.coe.openVersion",function() {openDesignerVersionManager();}); + // } + + $("div.selected").removeClass("selected"); + + //形状属性 + $("#toolbar-shape-attr").unbind("click").bind("click", function() { + if($("#toolbar-shape-attr").hasClass("disabled")) { + // + } else { + BPMNBiz.showPropertiesDialog(); //打开形状属性 + } + + }); + //流程属性 + $("#toolbar-global-prop").unbind("click").bind("click", function() { + BPMNBiz.showPropertiesDialog(true); //打开流程属性 + }); +}); +var aaa=true +/** + * 打开一个历史版本 + */ +Dock.openHistory = function(definition) { + if (this.currentDefinition == null) { + this.currentDefinition = $.extend(true, {}, Model.define); + } + Utils.unselect(); + Model.historyDefine = definition; + Designer.open(definition); + + // 取消快捷键 + Designer.hotkey.cancel(); + Designer.op.cancel(); + $("#menu_bar").children().addClass("readonly"); + $(".diagram_title").addClass("readonly"); + $(".dock_buttons").children().addClass("disabled"); + $("#dock_btn_history").removeClass("disabled"); + $(".panel_box").addClass("readonly"); + + // 禁用保存 + $("#bar_save").button("disable"); + $("#bar_save").unbind("click"); + // 禁用插入和视图 + $("#bar_view").button("disable"); + $("#bar_insert").button("disable"); + // 禁用校验 + $("#dock_btn_validate").unbind("click"); + // 中止监听 + // CLB.stopListen(); +}; + +/** + * 关闭历史版本 + */ +Dock.closeHistory = function() { + if (this.currentDefinition != null) { + Designer.open(this.currentDefinition); + this.currentDefinition = null; + this.activeOperation(); + } + + // 激活保存事件 + $("#bar_save").button("enable"); + $("#bar_save").unbind("click").bind("click", function() { + saveDesigner(); + }); + // 激活视图和插入 + $("#bar_view").button("enable"); + $("#bar_insert").button("enable"); + $("#moreShapes").removeAttr("disabled"); + // //激活校验事件 + // $("#dock_btn_validate").bind("click", function() { + // validateBPMN(false); + // }); +}; + +/** + * 加载历史版本 + */ +/**太费时间,暂时先注掉,后期优化 +Dock.loadHistorys = function() { + + $("#spinner_play_speed").spinner({ + min : 0.5, + max : 3.0, + unit : "s", + step : 0.5, + value : 5, + onChange : function(val) { + + } + }); + + $("#spinner_play_speed").spinner("setValue", "0.5s"); + + if (chartId == "") { + $("#history_container") + .html("
没有历史
"); + return; + } + // if($("#history_versions li").length > 0) { + // return; + // } + $.ajax({ + url : encodeURI("./jd?sid=" + + $("#sid").val() + + "&cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_history_version_json_data"), + // 发送获取versions的请求 + data : { + type : type, + appId : appId, + chartId : chartId, + processDefId : process.processDefId + }, + dataType : "json", + success : function(resObj) { + if (resObj.result != "ok") { + // $.simpleAlert("历史版本获取失败", "error", 2000); + } + var data = resObj.data; + Dock.historyVersions = data; + + if (data.versions.length == 0) { + $("#history_container") + .html('
没有历史
'); + } else { + $("#history_container") + .html('
    '); + var users = data.users; + for (var i = 0, k = data.versions.length; i < data.versions.length; i++, k--) { + var v = data.versions[i]; + var num = i == 0 ? 0 : k; + var newVersion = $('
  • ' + '
    ' + + v.updateTimeAlias + + (v.interval ? (' 持续 ' + v.interval) : '') + + '
    ' + '
    ' + k + '
    ' + + '
    ' + + '
    ' + '
    ' + + '
  • ').appendTo($("#history_versions")); + var nameContainer = newVersion.children(".content") + .children(".version_name"); + for (var j = 0; j < v.userIds.length; j++) { + var userId = v.userIds[j]; + nameContainer.append("
    " + v.userNames + "
    "); // users[userId] + } + // var remarkContainer = $("") + // .appendTo($("li[vid="+v.versionId+"] .content")); + // if (v.remark) { + // remarkContainer.find(".remark_text").text(v.remark); + // } + // remarkContainer.append(""); + } + Dock.resetVersions(); + } + }, + beforeSend : function(xhr) { + // 显示正在加载的图片 + $("#history_container") + .html(''); + } + }); +}; + + +**/ +/* 显示右侧窗口 */ +Dock.showView = function(name) { + + //if (name == "attribute") { + changeArributeByShape(); +// } + if ($("#dock_btn_" + name).button("isDisabled")) { + return; + } + $(".dock_view").hide(); + $(".dock_view_" + name).show(); + // 记录页面用户的操作 + $(".dock_buttons").children().removeClass("selected"); + $("#dock_btn_" + name).addClass("selected"); + if (Dock.currentView == "history" && name != "history") { + Dock.closeHistory(); + } + if (name == "history") { + //Dock.loadHistorys(); + } + // if (name != "attribute") { + // this.currentView = name; + // } + this.currentView = name; + // setCookie(chartId, name+",true"); + this.update(true); + // AWS增加的内容 + // 强制显示导航小窗口 + // $(".dock_view_navigator").show(); +}; + +/** + * 展示历史版本 + */ +Dock.showHistoryVersion = function(defId) { + // AWS增加的内容开始 + var versionNo = $("#history_versions").children(".selected").attr("number"); + // AWS增加的内容结束 + $("#spinner_play_speed").button("disable"); + $("#btn_history_play").button("disable"); + $("#btn_history_restore").button("disable"); + $("#moreShapes").attr("disabled", "disabled"); + Dock.cancelHistoryRemark(); + $.ajax({ + url : encodeURI("./w?sid=" + + sessionId + + "&cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_history_define_json_data"), + data : { + type : type, + chartId : chartId, + appId : appId, + processDefId : process.processDefId, + ver : versionNo + }, + dataType : "json", + success : function(resObj) { + if (resObj.result != "ok") { + // $.simpleAlert("历史版本获取失败", "error", 2000); + } + var definition = resObj.data; + Dock.openHistory(definition); + if ($("#history_versions").children(".selected").attr("ind") != "0") { + $("#spinner_play_speed").button("enable"); + $("#btn_history_play").button("enable"); + $("#btn_history_restore").button("enable"); + $("#moreShapes").removeAttr("disabled"); + } + } + }); +}; + +/** + * 播放一个版本 + */ +Dock.playOneVersion = function(index, msgIndex) { + var current = $("#history_versions").children("li[ind=" + index + "]"); + $("#history_versions").children(".selected").removeClass("selected"); + current.addClass("selected").addClass("playing"); + $(".ico_playing").remove(); + current.append("
    "); + + var top = current.position().top; + if (top < 0) { + $("#history_versions").scrollTop($("#history_versions").scrollTop() + + top); + } + + var time = $("#spinner_play_speed").spinner("getValue") * 1000; + var version = Dock.historyVersions.versions[index]; + if (version.messages.length != 0) { + var messageStr = version.messages[msgIndex]; + var messages = messageStr; + // JSON.parse(messageStr); + MessageSource.receive(messages); + if (index == 0 && msgIndex == version.messages.length - 1) { + this.pauseVersions(); + } else { + if (msgIndex < version.messages.length - 1) { + msgIndex++; + } else { + index = index - 1; + msgIndex = 0; + } + this.playingTimeout = setTimeout(function() { + Dock.playOneVersion(index, msgIndex); + }, time); + } + } else { // 如果不存在操作message(用户打开设计器后没有操作,直接保存) + if (index == 0) { + this.pauseVersions(); + } else { + index = index - 1; + this.playingTimeout = setTimeout(function() { + Dock.playOneVersion(index, msgIndex); + }, time); + } + } + +}; + +/** + * 编辑版本注释 + * + * @param {} + * event + */ +Dock.editHistoryRemark = function(event, versionId) { + event.stopPropagation(); + var versionDom = $("#history_versions").children("li[vid=" + versionId + + "]"); + versionDom.find(".remark_container").hide(); + var currentRemark = versionDom.find(".remark_text").text(); + var editContainer = versionDom.find(".edit_container"); + editContainer.show(); + editContainer.children("textarea").val(currentRemark).select(); + editContainer.children(".save").bind("click", function(e) { + e.stopPropagation(); + var newRemark = editContainer.children("textarea").val(); + versionDom.find(".remark_text").text(newRemark); + versionDom.find(".remark_container").show(); + editContainer.hide(); + if (newRemark != currentRemark) { + $.ajax({ + url : encodeURI("./w?sid=" + sessionId + + "&appId=" + $("#appId").val() + + "&cmd=CONSOLE_M_PROCESS_DESIGNER_REMARK_UPDATE" + + "&processDefId=" + process.processDefId + + "&versionId=" + versionId + + "&remark=" + newRemark), + success : function(data) { + + } + }); + } + }); + editContainer.children(".cancel").bind("click", function(e) { + e.stopPropagation(); + Dock.cancelHistoryRemark(); + }); +}; +/** + * 恢复版本 + */ +Dock.restoreVersion = function() { + $.confirm({ + content : "确定将选中的历史记录恢复为新的版本吗?", + + onConfirm : function() { + var selected = $("#history_versions").children(".selected"); + if (selected.length) { + coeBiz.restoreVersion(selected.attr("number")); + } + } + }); +}; + +/** + * 进入演示视图 + */ +Dock.enterPresentation = function() { + if (document.fullscreenElement || document.webkitFullscreenElement + || document.mozFullScreenElement) { + $.simpleAlert("当前为全屏状态不能进入演示,请退出全屏状态后重试", "info", 2000); + $("#simplealert>.msg").css("top", "15px"); + return; + } + $("#designer").bind('webkitfullscreenchange', function(e) { + Dock.manageFullScreen(true); + }); + $(document).bind('mozfullscreenchange', function(e) { + Dock.manageFullScreen(true); + }).bind('fullscreenchange', function(e) { + Dock.manageFullScreen(true); + }); + Dock.fullScreen(Utils.getDomById("designer"), true); + +}; + +/** + * 进入全屏视图 + */ +Dock.enterFullScreen = function() { + if (document.fullscreenElement || document.webkitFullscreenElement + || document.mozFullScreenElement) { + $.simpleAlert("当前已为全屏状态", "info", 2000); + $("#simplealert>.msg").css("top", "15px"); + return; + } + Dock.fullScreen(document.documentElement); +}; + +Dock.manageFullScreen = function(presentation) { + var designer = Utils.getDomById("designer"); + if (document.fullscreenElement || document.webkitFullscreenElement + || document.mozFullScreenElement) { + // 如果进入全屏状态 + $("#shape_panel").addClass("readonly"); + $("#designer_viewport").addClass("readonly"); + $(window).unbind("resize.designer"); + $("#designer_layout").height(window.screen.height); + // 取消快捷键 + Designer.hotkey.cancel(); + Designer.op.cancel(); + // 隐藏Dock + $("#dock").hide(); + $(".dock_view").hide(); + Designer.contextMenu.destroy(); + Designer.op.canvasFreeDraggable(); + + if (presentation) { + $("#dock").show(); + $("#dock_btn_validate").hide(); + $("#btn_history_restore").hide(); + } + } else { + $("#shape_panel").removeClass("readonly"); + $("#designer_viewport").removeClass("readonly"); + Designer.initialize.initLayout(); + Designer.hotkey.init(); + Designer.op.init(); + $("#dock").show(); + if (Dock.currentView != "") { + Dock.showView(Dock.currentView); + } + Designer.contextMenu.init(); + $("#designer").unbind('webkitfullscreenchange'); + $(document).unbind('mozfullscreenchange').unbind('fullscreenchange'); + if (presentation) { + $("#dock_btn_validate").show(); + $("#btn_history_restore").show(); + } + } +}; + +/** + * 进入全屏 + */ +Dock.fullScreen = function(element, presentation) { + if (element.requestFullscreen) { + element.requestFullscreen(); + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen(); + } else if (element.webkitRequestFullscreen) { + element.webkitRequestFullscreen(); + } else if (element.msRequestFullscreen) { + element.msRequestFullscreen(); + } else { + // 无法进入全屏,提示错误 + if (presentation) { + $("#fullscreen_tip").find(".t").text("由于您的浏览器限制,无法进入演示视图。"); + } else { + $("#fullscreen_tip").find(".t").text("无法进入全屏视图,您可以按(F11)进入。"); + } + $("#fullscreen_tip").fadeIn(); + } +}; + +// coeUI修改 +var CoeUI = { + initNavigationEye : function() { + var layoutW = $("#designer_layout").width(); + var desiger = $("#designer").width(); + var designerHeight = $("#designer").height(); + var viewHeight = $("#navigation_view").height(); + // 总宽度减去可视区域的宽度,得到滚动条宽度 + var navleft = 0;// layoutW-desiger; + var navtop = designerHeight - viewHeight; + var dockLeft = navleft - 164; + var dockTop = navtop - 2; + $("#navigation_view").css("left", dockLeft); + $("#navigation_view").css("top", dockTop); + $("#navigation_view").css("width", 162); + $("#navigation_view").css("height", 255); + } +} + +// UI更多图形管理 +// UI.showShapesManage = function(){ +// $("#shapes_dialog").dialog({ +// buttons:[ +// {text:'确定',cls:"blue",handler:function(){alert(88);}}, +// {text:'取消',handler:function(){alert(22);}} +// ] +// }); +// } + diff --git a/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.ui.mobile.js b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.ui.mobile.js new file mode 100644 index 00000000..b0fdbaa7 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.ui.mobile.js @@ -0,0 +1,4586 @@ +/** + * 用户界面JS + */ + +var UI = { + init : function() { + // 修改标题 + $(".diagram_title").bind("click", function() { + if ($(this).hasClass("readonly")) { + return; + } + var title = $(this).text(); + $(this).hide(); + $("#title_container").append(""); + $("#title_container").children("input").val(title.replace(/(^\s+)|(\s+$)/g, "")).select(); + $("#title_container").children("input").bind("blur", + function() { + changeTitle(); + }).bind("keydown", function(e) { + if (e.keyCode == 13) { + changeTitle(); + } + }); + }); + function changeTitle() { + var newTitle = $.trim($("#title_container").children("input").val()); + newTitle = newTitle.replace(/(^\s+)|(\s+$)/g, ""); + var oldTitle = $(".diagram_title").text(); + oldTitle = oldTitle.replace(/(^\s+)|(\s+$)/g, ""); + if (newTitle != oldTitle && chartId != "") { + var msgObj = { + action : "changeTitle", + title : newTitle + }; + CLB.send(msgObj); + } + var title = newTitle != "" ? newTitle : oldTitle; + $("title").text(title); + $(".diagram_title").text(title).show(); + $("#title_container").children("input").remove(); + // 更新父级的相关数据 + awsui.ajax.request({ + url : './jd?cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_updatetitle&sid=' + + encodeURIComponent(sid) + + '&uuid=' + + ruuid + + '&title=' + + encodeURIComponent(title) + + '&processDefId=' + + process.processDefId + + '&appId=' + + appId, + async : false,// 同步,默认为异步 + ok : function(msg) { + //同步设置文件属性中的流程名称 + $("#file_attribute").contents().find("input[id='plName']").val(title); + try { + window.opener.parent.window.top.document.main_iframe.teamAppFrame.contentWindow._d157b007c785d2d988d3d81c8ddcb1b8.contentWindow.refresh(); + } catch(e) { + try { + window.opener.parent.window.top.document.main_iframe.teamAppFrame.contentWindow._d157b007c785d2d988d3d81c8ddcb1b8.contentWindow.refresh(); + + } catch(e) {} + } + if (parent.repositoryTree) { + parent.repositoryTree.refreshNodeById({ + id : ruuid, + name : title + }); + } + if (parent.awsTabs) { + parent.awsTabs.setTitle(ruuid, title); + } + if(Model.define.coeProperties ){ + Model.define.coeProperties.fileName = title; + } + } + }) + } + /** ############################Toolbar列表############################ */ + // 撤销 + $("#bar_undo").button({ + onClick : function() { + MessageSource.undo(); + } + }); + // 恢复 + $("#bar_redo").button({ + onClick : function() { + MessageSource.redo(); + } + }); + // 格式刷 + $("#bar_brush").button({ + onClick : function() { + if ($("#bar_brush").button("isSelected")) { + // 取消格式刷 + $("#bar_brush").button("unselect"); + $("#designer_op_help").hide(); + $(document).unbind("keydown.cancelbrush"); + Utils.selectCallback = null; + } else { + Designer.clipboard.brush(); + } + } + }); + // 字体 + $("#bar_font_family").button({ + onMousedown : function() { + $("#font_list").dropdown({ + target : $("#bar_font_family"), + onSelect : function(item) { + var font = item.text(); + Designer.setFontStyle({ + fontFamily : font + }); + $("#bar_font_family").button("setText", + font); + } + }); + // 选中 + var family = $("#bar_font_family").text().trim(); + $("#font_list").children().each(function() { + if ($(this).text() == family) { + $("#font_list").dropdown("select", + $(this)); + return false; + } + }); + } + }); + // 字号 + $("#bar_font_size").spinner({ + min : 12, + max : 100, + step : 1, + unit : "px", + onChange : function(val) { + Designer.setFontStyle({ + size : val + }); + } + }); + $("#bar_font_size").spinner("setValue", "13px"); + // 加粗 + $("#bar_font_bold").button({ + onClick : function() { + var bold = !$("#bar_font_bold").button("isSelected"); + Designer.setFontStyle({ + bold : bold + }); + $("#bar_font_bold").toggleClass("selected"); + } + }); + // 斜体 + $("#bar_font_italic").button({ + onClick : function() { + var italic = !$("#bar_font_italic") + .button("isSelected"); + Designer.setFontStyle({ + italic : italic + }); + $("#bar_font_italic").toggleClass("selected"); + } + }); + // 下划线 + $("#bar_font_underline").button({ + onClick : function() { + var underline = !$("#bar_font_underline") + .button("isSelected"); + Designer.setFontStyle({ + underline : underline + }); + $("#bar_font_underline").toggleClass("selected"); + } + }); + // 字体颜色 + $("#bar_font_color").button({ + onMousedown : function() { + var color = $("#bar_font_color").button("getColor"); + $.colorpicker({ + target : $("#bar_font_color"), + onSelect : function(color) { + Designer.setFontStyle({ + color : color + }); + $("#bar_font_color").button("setColor", + color) + }, + color : color + }); + } + }); + // 文本对齐 + $("#bar_font_align").button({ + onMousedown : function() { + $("#font_align_list").dropdown({ + target : $("#bar_font_align"), + onSelect : function(item) { + var align = {}; + align[item.attr("cate")] = item + .attr("al"); + Designer.setFontStyle(align); + } + }); + } + }); + // 填充 + $("#bar_fill").button({ + onMousedown : function() { + var color = $("#bar_fill").button("getColor"); + $.colorpicker({ + target : $("#bar_fill"), + onSelect : function(color) { + Designer.setFillStyle({ + type : "solid", + color : color + }); + $("#bar_fill").button("setColor", color) + }, + color : color, + extend : "
    " + }); + $("#bar_fill_gradient").unbind().bind("click", function() { + Designer.setFillStyle({ + type : "gradient" + }); + $("#color_picker").dropdown("close"); + }); + $("#bar_fill_img").unbind().bind("click", function() { + UI.showImageSelect(function(fileId, w, h) { + Designer.setFillStyle({ + type : "image", + fileId : fileId, + imageW : w, + imageH : h + }); + }); + $("#color_picker").dropdown("close"); + }); + $("#bar_fill_more").unbind().bind("click", function() { + Dock.showView("graphic"); + $("#color_picker").dropdown("close"); + }); + } + }); + // 线条颜色 + $("#bar_line_color").button({ + onMousedown : function() { + var color = $("#bar_line_color").button("getColor"); + $.colorpicker({ + target : $("#bar_line_color"), + onSelect : function(color) { + Designer.setLineStyle({ + lineColor : color + }); + $("#bar_line_color").button("setColor", + color) + }, + color : color + }); + } + }); + // 线条宽度 + $("#bar_line_width").button({ + onMousedown : function() { + $("#line_width_list").dropdown({ + target : $("#bar_line_width"), + onSelect : function(item) { + var width = parseInt(item.text()); + Designer.setLineStyle({ + lineWidth : width + }); + } + }); + // 选中 + var width = Utils.getSelected()[0].lineStyle.lineWidth; + $("#line_width_list").children().each(function() { + if (parseInt($(this).text()) == width) { + $("#line_width_list").dropdown("select", + $(this)); + } + }); + } + }); + // 线条样式 + $("#bar_line_style").button({ + onMousedown : function() { + $("#line_style_list").dropdown({ + target : $("#bar_line_style"), + onSelect : function(item) { + var lineStyle = item.attr("line"); + Designer.setLineStyle({ + lineStyle : lineStyle + }); + } + }); + // 选中 + var style = Utils.getSelected()[0].lineStyle.lineStyle; + var item = $("#line_style_list").children("li[line=" + style + + "]"); + $("#line_style_list").dropdown("select", item); + } + }); + // 连接线类型 + $("#bar_linkertype").button({ + onMousedown : function() { + $("#line_type_list").dropdown({ + target : $("#bar_linkertype"), + onSelect : function(item) { + var type = item.attr("tp"); + Designer.setLinkerType(type); + var cls = item.children("div").attr("class"); + $("#bar_linkertype").children("div:eq(0)").attr( + "class", cls); + } + }); + } + }); + // 开始箭头 + $("#bar_beginarrow").button({ + onMousedown : function() { + $("#beginarrow_list").dropdown({ + target : $("#bar_beginarrow"), + onSelect : function(item) { + var arrow = item.attr("arrow"); + Designer.setLineStyle({ + beginArrowStyle : arrow + }); + var cls = item.children("div").attr("class"); + $("#bar_beginarrow").children("div:eq(0)").attr( + "class", cls); + } + }); + // 选中 + var style = Utils.getSelectedLinkers()[0].lineStyle.beginArrowStyle; + var item = $("#beginarrow_list").children("li[arrow=" + style + + "]"); + $("#beginarrow_list").dropdown("select", item); + } + }); + // 结束箭头 + $("#bar_endarrow").button({ + onMousedown : function() { + $("#endarrow_list").dropdown({ + target : $("#bar_endarrow"), + onSelect : function(item) { + var arrow = item.attr("arrow"); + Designer.setLineStyle({ + endArrowStyle : arrow + }); + var cls = item.children("div").attr("class"); + $("#bar_endarrow").children("div:eq(0)").attr("class", + cls); + } + }); + // 选中 + var style = Utils.getSelectedLinkers()[0].lineStyle.endArrowStyle; + var item = $("#endarrow_list").children("li[arrow=" + style + + "]"); + $("#endarrow_list").dropdown("select", item); + } + }); + // 顶层底层 + $("#bar_front").button({ + onClick : function() { + Designer.layerShapes("front"); + } + }); + $("#bar_back").button({ + onClick : function() { + Designer.layerShapes("back"); + } + }); + // 加解锁 + $("#bar_lock").button({ + onClick : function() { + Designer.lockShapes(); + } + }); + $("#bar_unlock").button({ + onClick : function() { + Designer.unlockShapes(); + } + }); + $("#bar_link").button({ + onClick : function() { + UI.showInsertLink(); + } + }); + $("#bar_risk").button({ + onClick : function() { + UI.showRiskDlg(); + } + }); + $("#bar_importShape").button({ + onClick : function() { + UI.showImportShapeDlg(); + } + }); + $("#bar_import").button({ + onClick : function() { + UI.showImportDlg(); + } + }); + //by bzp 上传制度附件 + $("#bar_importPolicyFile").button({ + onClick : function() { + UI.showImportPolicyFileDlg(); + } + }); + //by bzp end + $("#bar_upfile").button({ + onClick: function() { + openUpFile() + } + }); + $("#bar_activityNo").button({//节点按照编号排序 + onClick: function() { + UI.activityNoDlg(); + } + }); + /** ##############AWS新增工具栏菜单开始############# */ + // 排列 + $("#bar_arrange").button({ + onMousedown : function() { + $("#bar_list_arrange").dropdown({ + target : $("#bar_arrange"), + onSelect : function(item) { + menuSelected(item); + } + }); + } + }); + // 视图 + $("#bar_view").button({ + onMousedown : function() { + $("#bar_list_view").dropdown({ + target : $("#bar_view"), + onSelect : function(item) { + menuSelected(item); + } + }); + } + }); + // 插入 + /* + * $("#bar_insert").button({ onMousedown : function() { + * $("#bar_list_insert").dropdown({ target : $("#bar_insert"), onSelect : + * function(item) { menuSelected(item); } }); } }); + */ + /** ##############AWS新增工具栏菜单结束############# */ + + /** ##############菜单列表############## */ + $("#menu_bar").children().bind("mousedown", function(e) { + var tar = $(this); + showMenuBarList(tar); + e.stopPropagation(); + }); + $("#menu_bar").children().bind("mouseenter", function() { + var tar = $(this); + if ($("#ui_container").find(".options_menu:visible").length > 0) { + showMenuBarList(tar); + } + }); + + function showMenuBarList(menuBar) { + var menuId = menuBar.attr("menu"); + // 只读 + if (menuBar.hasClass("readonly")) { + return; + } + $("#" + menuId).dropdown({ + target : menuBar, + onSelect : function(item) { + menuSelected(item); + } + }); + if (menuId == "bar_list_page") { + if (Model.define.page.showGrid) { + $("#bar_list_page").dropdown( + "select", + $("#bar_list_page") + .children("li[ac=set_page_showgrid]")); + } else { + $("#bar_list_page").dropdown( + "unselect", + $("#bar_list_page") + .children("li[ac=set_page_showgrid]")); + } + var item = $("#bar_list_pagesize li[w=" + + Model.define.page.width + "][h=" + + Model.define.page.height + "]"); + if (item.length > 0) { + $("#bar_list_pagesize").dropdown("select", item); + } else { + $("#bar_list_pagesize").dropdown("select", + $("#page_size_custom")); + } + $("#page_size_w").spinner("setValue", + Model.define.page.width + "px"); + $("#page_size_h").spinner("setValue", + Model.define.page.height + "px"); + item = $("#bar_list_padding").children("li[p=" + + Model.define.page.padding + "]"); + $("#bar_list_padding").dropdown("select", item); + item = $("#bar_list_gridsize").children("li[s=" + + Model.define.page.gridSize + "]"); + $("#bar_list_gridsize").dropdown("select", item); + } else if (menuId == "bar_list_view") { + var item = $("#bar_list_view").children(".static[zoom='" + + Designer.config.scale + "']"); + if (item.length) { + $("#bar_list_page").dropdown("select", item); + } + } + } + + function menuSelected(item) { + var action = item.attr("ac"); + // 编辑菜单 + if (action == "rename") { + $(".diagram_title").trigger("click"); + } else if (action == "close") { + if (parent.closeTabById) { + parent.closeTabById(chartId); + } else { + window.close(); + } + + } else if (action == "saveAs") { + UI.showSaveAs(); + } else if (action == "preview") {//在线预览流程图片 + UI.doPreview(); + } else if (action == "saveImage") {//生成图片和缩略图 + UI.saveImage(); + } else if (action == "versionCompare") { + UI.showVersionCompare(); + } else if (action == "output") {// 导出流程手册并预览 + UI.doOutputProcess(); + } else if (action == "export") { + $("#export_dialog").dlg(); + } else if (action == "processExport") { + UI.processExport(); + } else if (action == "undo") { + MessageSource.undo(); + } else if (action == "redo") { + MessageSource.redo(); + } else if (action == "cut") { + Designer.clipboard.cut(); + } else if (action == "copy") { + Designer.clipboard.copy(); + } else if (action == "paste") { + Designer.clipboard.paste(); + } else if (action == "duplicate") { + Designer.clipboard.duplicate(); + } else if (action == "brush") { + Designer.clipboard.brush(); + } else if (action == "selectall") { + Designer.selectAll(); + } else if (action == "openNewPage") { + UI.openNewPage();//新页面打开 + } else if (action == "batchreplace") { + UI.batchReplace(); + } else if (action == "delete") { + Designer.op.removeShape(); + // 视图缩放 + } else if (action == "zoom") { + var zoom = item.attr("zoom"); + if (zoom == "in") { + Designer.zoomIn(); + } else if (zoom == "out") { + Designer.zoomOut(); + } else { + var zoomScale = parseFloat(zoom); + Designer.setZoomScale(zoomScale); + } + // 插入 + } else if (action == "insert") { + var insertType = item.attr("in"); + if (insertType == "text") { + Designer.op.changeState("creating_free_text"); + } else if (insertType == "image") { + UI.showImageSelect(function(fileId, w, h) { + UI.insertImage(fileId, w, h); + }); + } else if (insertType == "line") { + Designer.op.changeState("creating_free_linker"); + } + // 页面 + } else if (action == "set_page_size") { + var w = parseInt(item.attr("w")); + var h = parseInt(item.attr("h")); + Designer.setPageStyle({ + width: w, + height: h + }); + } else if (action == "set_page_padding") { + var p = parseInt(item.attr("p")); + Designer.setPageStyle({ + padding: p + }) + } else if (action == "set_page_showgrid") { + if (item.menuitem("isSelected")) { + item.menuitem("unselect"); + Designer.setPageStyle({ + showGrid: false + }); + } else { + item.menuitem("select"); + Designer.setPageStyle({ + showGrid: true + }); + } + } else if (action == "set_page_gridsize") { + var s = parseInt(item.attr("s")); + Designer.setPageStyle({ + gridSize: s + }) + } + // 排列 + else if (action == "front") { + Designer.layerShapes("front"); + } else if (action == "back") { + Designer.layerShapes("back"); + } else if (action == "forward") { + Designer.layerShapes("forward"); + } else if (action == "backward") { + Designer.layerShapes("backward"); + } else if (action == "align_shape") { + var align = item.attr("al"); + Designer.alignShapes(align); + } else if (action == "distribute_shape") { + var type = item.attr("dis"); + Designer.distributeShapes(type); + } else if (action == "match_size") { + if (item.attr("custom")) { + Dock.showView("metric"); + } else { + var type = {}; + var w = item.attr("w"); + var h = item.attr("h"); + if (w) { + type.w = w; + } + if (h) { + type.h = h; + } + Designer.matchSize(type); + } + } else if (action == "lock") { + Designer.lockShapes(); + } else if (action == "unlock") { + Designer.unlockShapes(); + } else if (action == "group") { + Designer.group(); + } else if (action == "ungroup") { + Designer.ungroup(); + } else if (action == "hotkey") { + UI.showHotKey(); + } else if (action == "feedback") { + UI.showFeedBack(); + } else if (action == "getting_started") { + UI.gettingStart(); + } + } + $("#page_size_w").spinner({ + min : 200, + unit : "px", + step : 100, + onChange : function(val) { + Designer.setPageStyle({ + width : val + }); + } + }); + $("#page_size_h").spinner({ + min : 200, + unit : "px", + step : 100, + onChange : function(val) { + Designer.setPageStyle({ + height : val + }); + } + }); + // 给设置页面背景色,放一个colorpicker + var pickerHtml = $("#color_picker").html(); + var newPicker = $("").appendTo($("#bar_page_color")); + newPicker.css("right", "-179px"); + newPicker.children(".color_items").children("div").unbind().bind( + "click", function() { + var color = $(this).css("background-color"); + color = color.replace(/\s/g, ""); + color = color.substring(4, color.length - 1); + Designer.setPageStyle({ + backgroundColor : color + }); + $("#bar_list_page").dropdown("close"); + }); + // 抛出事件,控制状态 + Designer.events.push("selectChanged", 0); + Designer.events.push("clipboardChanged", 0); + Designer.events.push("undoStackChanged", 0); + Designer.events.push("redoStackChanged", 0); + }, + /** + * 更新UI + */ + update : function() { + var selectedIds = Utils.getSelectedIds(); + var count = selectedIds.length; + var linkerIds = Utils.getSelectedLinkerIds(); + var linkerCount = linkerIds.length; + var shapeIds = Utils.getSelectedShapeIds(); + var shapeCount = shapeIds.length; + var lockedCount = Utils.getSelectedLockedIds().length; + var groupCount = Utils.getSelectedGroups().length; + // 排列菜单 + var arrangeMenu = $("#bar_list_arrange"); + if (count == 0) { + $(".toolbar").find(".selected").removeClass("selected"); + // 没有选中,让某些按钮失效 + if ($("#designer_op_help").is(":visible")) { + $("#bar_brush").button("enable"); + $("#bar_brush").button("select"); + } else { + $("#bar_brush").button("disable"); + } + // 字体 + $("#bar_font_family").button("disable"); + $("#bar_font_size").button("disable"); + $("#bar_font_bold").button("disable"); + $("#bar_font_italic").button("disable"); + $("#bar_font_underline").button("disable"); + $("#bar_font_color").button("disable"); + $("#bar_font_align").button("disable"); + // 线条 + $("#bar_line_color").button("disable"); + $("#bar_line_width").button("disable"); + $("#bar_line_style").button("disable"); + // 顶层底层 + $("#bar_front").button("disable"); + $("#bar_back").button("disable"); + // 锁定 + $("#bar_lock").button("disable"); + // 编辑菜单 + var editMenu = $("#bar_list_edit"); + editMenu.children("li[ac=cut]").menuitem("disable"); + editMenu.children("li[ac=copy]").menuitem("disable"); + editMenu.children("li[ac=duplicate]").menuitem("disable"); + editMenu.children("li[ac=brush]").menuitem("disable"); + editMenu.children("li[ac=delete]").menuitem("disable"); + // 排列菜单 + arrangeMenu.children("li[ac=front]").menuitem("disable"); + arrangeMenu.children("li[ac=back]").menuitem("disable"); + arrangeMenu.children("li[ac=forward]").menuitem("disable"); + arrangeMenu.children("li[ac=backward]").menuitem("disable"); + arrangeMenu.children("li[ac=lock]").menuitem("disable"); + // 节点编号排序 + $("#bar_activityNo").button("enable"); + $("#bar_activityNo div").removeClass('extend_activityNoDisable'); + $("#bar_activityNo div").addClass('extend_activityNo'); + } else { + if (editable) { + // 选中,让某些按钮激活 + $("#bar_brush").button("enable"); + if ($("#designer_op_help").is(":visible")) { + $("#bar_brush").button("select"); + } + $("#bar_font_family").button("enable"); + $("#bar_font_size").button("enable"); + $("#bar_font_bold").button("enable"); + $("#bar_font_italic").button("enable"); + $("#bar_font_underline").button("enable"); + $("#bar_font_color").button("enable"); + $("#bar_font_align").button("enable"); + // 线条 + $("#bar_line_color").button("enable"); + $("#bar_line_width").button("enable"); + $("#bar_line_style").button("enable"); + // 顶层底层 + $("#bar_front").button("enable"); + $("#bar_back").button("enable"); + // 锁定 + $("#bar_lock").button("enable"); + // 编辑菜单 + var editMenu = $("#bar_list_edit"); + editMenu.children("li[ac=cut]").menuitem("enable"); + editMenu.children("li[ac=copy]").menuitem("enable"); + editMenu.children("li[ac=duplicate]").menuitem("enable"); + editMenu.children("li[ac=brush]").menuitem("enable"); + editMenu.children("li[ac=delete]").menuitem("enable"); + // 排列菜单 + arrangeMenu.children("li[ac=front]").menuitem("enable"); + arrangeMenu.children("li[ac=back]").menuitem("enable"); + arrangeMenu.children("li[ac=forward]").menuitem("enable"); + arrangeMenu.children("li[ac=backward]").menuitem("enable"); + arrangeMenu.children("li[ac=lock]").menuitem("enable"); + // 设置Toolbar样式 + var shape = Model.getShapeById(selectedIds[0]); + $("#bar_font_family").button("setText", shape.fontStyle.fontFamily); + $("#bar_font_size") + .spinner("setValue", shape.fontStyle.size + "px"); + if (shape.fontStyle.bold) { + $("#bar_font_bold").button("select"); + } else { + $("#bar_font_bold").button("unselect"); + } + if (shape.fontStyle.italic) { + $("#bar_font_italic").button("select"); + } else { + $("#bar_font_italic").button("unselect"); + } + if (shape.fontStyle.underline) { + $("#bar_font_underline").button("select"); + } else { + $("#bar_font_underline").button("unselect"); + } + $("#bar_font_color").button("setColor", shape.fontStyle.color); + $("#bar_line_color").button("setColor", shape.lineStyle.lineColor); + + // 节点编号排序 + $("#bar_activityNo").button("disable"); + $("#bar_activityNo div").removeClass('extend_activityNo'); + $("#bar_activityNo div").addClass('extend_activityNoDisable'); + } + } + + // AWS增加的按钮需要被控制开始 + if (count == 0) { + $("#toolbar-data-attr").button("disable"); + // 节点属性 + $("#toolbar-data-attr").unbind("click"); + $("#bar_arrange").button("disable"); + } else { + $("#toolbar-data-attr").button("enable"); + // 节点属性 + $("#toolbar-data-attr").bind("click", function() { + showPropertiesDialog(); + }); + $("#bar_arrange").button("enable"); + } + // AWS增加的按钮需要被控制完毕 + + // 通过图形的数量,判读是否可以填充 + if (shapeCount == 0) { + $("#bar_fill").button("disable"); + $("#toolbar-shape-attr").button("disable"); //形状属性 + } else { + if (editable) { + $("#bar_fill").button("enable"); + } + var shape = Model.getShapeById(shapeIds[0]); + // 图形填充 + if (shape.fillStyle.type == "solid") { + $("#bar_fill").button("setColor", shape.fillStyle.color); + } else if (shape.fillStyle.type == "gradient") { + $("#bar_fill").button("setColor", shape.fillStyle.endColor); + } + if(shapeCount == 1 && shape.name == BPMN_TYPE_USER_TASK) { //控制值选择一个人工任务时形状属性可用 + $("#toolbar-shape-attr").button("enable"); //形状属性 + } else { + $("#toolbar-shape-attr").button("disable"); //形状属性 + } + } + if (shapeCount != 1) { + $("#bar_link, #bar_risk").button("disable"); + $("#dock_btn_shapeConfig").button("disable"); + $("#dock_btn_shapeConfig").bind('click', function() { + $.simpleAlert("请选择形状"); + }); + } else { + $("#dock_btn_shapeConfig").unbind('click'); + $("#dock_btn_shapeConfig").button("enable"); + if (editable) { + $("#bar_link").button("enable"); + } + // 关联/推送文件不显示 + if ($('#bar_rmark').length == 0 && $('#bar_cancel_aws_correlate').length == 0) { + $("#bar_risk").button("enable"); + } else { + $("#bar_risk").button("disable"); + } + } + // 通过连接线的数量,判断是否可以修改箭头等 + if (linkerCount == 0) { + $("#bar_linkertype").button("disable"); + $("#bar_beginarrow").button("disable"); + $("#bar_endarrow").button("disable"); + } else { + $("#bar_linkertype").button("enable"); + $("#bar_beginarrow").button("enable"); + $("#bar_endarrow").button("enable"); + var shape = Model.getShapeById(linkerIds[0]); + // 设置Toolbar的线条样式 + $("#bar_linkertype").children("div:eq(0)").attr("class", + "ico linkertype_" + shape.linkerType.toLowerCase()); + if ( typeof shape.lineStyle.beginArrowStyle != "undefined") { + $("#bar_beginarrow").children("div:eq(0)").attr( + "class", + "ico ico_arrow larrow_" + + shape.lineStyle.beginArrowStyle.toLowerCase()); + } + if ( typeof shape.lineStyle.endArrowStyle != "undefined") { + $("#bar_endarrow").children("div:eq(0)").attr( + "class", + "ico ico_arrow rarrow_" + + shape.lineStyle.endArrowStyle.toLowerCase()); + } + + + } + // 通过锁定的数量,判断是否可以解除锁定 + if (lockedCount == 0) { + $("#bar_unlock").button("disable"); + arrangeMenu.children("li[ac=unlock]").menuitem("disable"); + } else { + $("#bar_unlock").button("enable"); + arrangeMenu.children("li[ac=unlock]").menuitem("enable"); + } + // 是否激活组合、对齐,条件是选中图形要不少于2个 + if (count < 2) { + arrangeMenu.children("li[ac=group]").menuitem("disable"); + $("#bar_arrange_align").menuitem("disable"); + } else { + arrangeMenu.children("li[ac=group]").menuitem("enable"); + $("#bar_arrange_align").menuitem("enable"); + } + // 是否激活匹配大小,条件是选中形状要不少于2个 + if (shapeCount < 2) { + $("#bar_arrange_match").menuitem("disable"); + } else { + $("#bar_arrange_match").menuitem("enable"); + } + // 是否激活排列图形菜单,条件是选中图形要不少于3个 + if (count < 3) { + $("#bar_arrange_dist").menuitem("disable"); + } else { + $("#bar_arrange_dist").menuitem("enable"); + } + // 通过组合的数量,判断是否可以取消组合 + if (groupCount == 0) { + arrangeMenu.children("li[ac=ungroup]").menuitem("disable"); + } else { + arrangeMenu.children("li[ac=ungroup]").menuitem("enable"); + } + //文件串联分析工具在未选择图形的时候有效 + if($("#dock_btn_eteanalysis").length != 0) { + if (count == 0) { + $("#dock_btn_eteanalysis").find(".awsui-iconfont").css("color","black"); + $("#dock_btn_eteanalysis").button("enable"); + $("#dock_btn_eteanalysis").removeAttr("onclick"); + $("#dock_btn_eteanalysis").off("click").on("click", function(){ + var f = $('#eteCascadeAnalysisForm'); + f.find(':input[name=uuid]').val(ruuid); + f.submit(); + }); + } else { + $("#dock_btn_eteanalysis").find(".awsui-iconfont").css("color","gray"); + $("#dock_btn_eteanalysis").button("disable"); + $("#dock_btn_eteanalysis").removeAttr("onclick"); + $("#dock_btn_eteanalysis").off("click"); + } + } + }, + /** + * 打开插入链接 + */ + showInsertLink : function() { + $("#link_dialog").dlg(); + var addr = Utils.getSelected()[0].link; + if (!addr) { + addr = ""; + } + $("#linkto_addr").val(addr).select(); + $("#linkto_addr").unbind().bind("keydown", function(e) { + if (e.keyCode == 13) { + UI.setLink(); + } + }); + }, + /** + * 设置连接 + */ + setLink : function() { + var newLink = $("#linkto_addr").val(); + var shape = Utils.getSelected()[0]; + shape.link = newLink; + Model.update(shape); + $('#link_dialog').dlg('close'); + }, + /** + * 选中图片后的回调 + * + * @type {} + */ + imageSelectedCallback : null, + /** + * 打开图片选择 + */ + showImageSelect : function(callback) { + if (callback) { + this.imageSelectedCallback = callback; + } else { + this.imageSelectedCallback = null; + } + this.fetchingRequest = null; + var height = $(window).height() - 200; + if (height > 550) { + height = 550; + } else if (height < 200) { + height = 200; + } + $(".image_list").height(height); + // this.showImageSelectContent("upload"); + $("#image_dialog").dlg({ + onClose : function() { + if (UI.fetchingRequest) { + UI.fetchingRequest.abort(); + } + } + }); + // 加载用户图片 + if ($("#image_select_upload").is(":visible")) { + UI.loadUserImages(); + }; + // 左侧分类绑定事件 + $(".image_sources").children().unbind().bind("click", function() { + UI.showImageSelectContent($(this).attr("ty")); + }); + // 上传 + $("#upload_img_res").empty(); + $("#input_upload_image").unbind().bind("change", function() { + $("#upload_img_res") + .html("上传中..."); + $("#frm_upload_image").submitForm({ + success : function(result) { + if (result.result == "type_wrong") { + $("#upload_img_res").html("此文件不是图片,请重新选择"); + } else if (result.result == "size_wrong") { + $("#upload_img_res").html("文件大小超出要求,最大2M"); + } else if (result.result == "exception") { + $("#upload_img_res").html("无法使用此图片,请选择其他图片"); + } else { + var img = result.image; + UI.setShapeImage(img.fileId, img.imageW, + img.imageH); + } + } + }); + }); + // 输入URL + $("#input_img_url").val(""); + $("#img_url_area").empty(); + var oldUrl = ""; + function urlChanged() { + var url = $("#input_img_url").val().trim(); + if (url != oldUrl) { + oldUrl = url + if (url != "") { + if (url.indexOf("http") < 0) { + url = "http://" + url; + } + $("#img_url_area") + .html("正在加载预览..."); + var newImage = $("").appendTo("#img_url_area"); + newImage.unbind().bind("load", function() { + newImage.show().addClass("img_url_loaded"); + $(".img_url_loading_tip").remove(); + }).bind("error", function() { + $("#img_url_area") + .html("
    无法在此地址下加载图片。
    • 请检查图片地址是否输入正确。
    • 确保图片地址是公开的。
      "); + }); + } + } + } + $("#input_img_url").unbind().bind("paste", function() { + urlChanged(); + }).bind("keyup", function() { + urlChanged(); + }); + // 搜索 + $("#input_img_search").unbind().bind("keydown", function(e) { + if (e.keyCode == 13) { + UI.searchImgByGoogle(); + } + }); + $("#btn_img_search").unbind().bind("click", function() { + UI.searchImgByGoogle(); + }); + // 完成按钮 + $("#set_image_submit").button("enable"); + $("#set_image_submit").button({ + onClick : function() { + var currentTab = $(".image_sources").children(".active") + .attr("ty"); + if (currentTab == "upload") { + var selectedImg = $("#user_image_items") + .children(".image_item_selected"); + if (selectedImg.length > 0) { + var fileId = selectedImg.attr("fileId"); + var imageW = selectedImg.attr("w"); + var imageH = selectedImg.attr("h"); + UI.setShapeImage(fileId, imageW, imageH); + } else { + $("#image_dialog").dlg("close"); + } + } else if (currentTab == "url") { + if ($(".img_url_loaded").length > 0) { + var url = $(".img_url_loaded").attr("src"); + UI.setShapeImageByURL(url); + } else { + $("#image_dialog").dlg("close"); + } + } else { + // 搜索 + var selectedImg = $("#google_image_items") + .children(".image_item_selected"); + if (selectedImg.length > 0) { + var url = selectedImg.attr("u"); + UI.setShapeImageByURL(url); + } else { + $("#image_dialog").dlg("close"); + } + } + } + }); + // 取消按钮 + $("#set_image_cancel").button({ + onClick : function() { + $("#image_dialog").dlg("close"); + } + }); + $("#set_image_text").empty(); + }, + /** + * 显示图片设置类型 + */ + showImageSelectContent : function(type) { + $(".image_list").hide(); + $("#image_select_" + type).show().find("input[type=text]").select(); + $(".image_sources").children().removeClass("active"); + $(".image_sources").children("li[ty=" + type + "]").addClass("active"); + }, + /** + * 加载用户图片 + */ + loadUserImages : function(refresh) { + $("#user_image_items").empty(); + $.ajax({ + url : "/user_image/list", + success : function(data) { + if (data.images) { + for (var i = 0; i < data.images.length; i++) { + var img = data.images[i]; + UI.appendUserImage(img); + } + $("#user_image_items") + .append("
      "); + } + } + }); + $("#user_image_items").attr("loaded", "true"); + }, + searchIndex : 0, + searchKeywords : "", + /** + * 通过Google搜索图片 + */ + searchImgByGoogle : function() { + var keywords = $("#input_img_search").val(); + if (keywords.trim() != "") { + $("#google_image_items").empty(); + this.searchKeywords = encodeURI(keywords); + this.searchIndex = 0; + this.loadGoogleImg(); + } else { + $("#input_img_search").focus(); + } + }, + /** + * 加载Google图片 + */ + loadGoogleImg : function() { + $ + .getScript("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=" + + this.searchKeywords + + "&rsz=8&start=" + + (this.searchIndex * 16) + + "&callback=UI.googleImgCallback"); + $ + .getScript("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=" + + this.searchKeywords + + "&rsz=8&start=" + + (this.searchIndex * 16 + 8) + + "&callback=UI.googleImgCallback"); + $(".gg_img_more").remove(); + $("#google_image_items") + .append("
      正在加载图片...
      "); + this.searchIndex++; + }, + /** + * Google搜索回调 + * + * @param {} + * data + */ + googleImgCallback : function(data) { + var responseData = data.responseData; + var results = responseData.results; + for (var i = 0; i < results.length; i++) { + var item = results[i]; + UI.appendGoogleImage(item); + } + $("#google_image_items").append("
      "); + $(".img_gg_loading_tip").remove(); + $(".gg_img_more").remove(); + if (this.searchIndex <= 3) { + $("#google_image_items") + .append("
      显示更多结果...
      "); + } + }, + /** + * 添加一个用户图片 + */ + appendUserImage : function(img) { + var box = $("
      ").appendTo($("#user_image_items")); + box.unbind().bind("click", function() { + $(".image_item_selected") + .removeClass('image_item_selected'); + $(this).addClass('image_item_selected'); + }).bind("mouseenter", function() { + var target = $(this); + var remove = $("
      ") + .appendTo(target); + var id = target.attr("id"); + remove.bind("click", function() { + target.fadeOut(); + $.ajax({ + url : "/user_image/remove", + data : { + imageId : id + } + }); + }); + }).bind("mouseleave", function() { + $(this).find(".ico_remove_red").remove(); + }); + var location = img.fileId; + var newImage = $("").appendTo(box); + newImage.bind("load", function() { + $(this).css("margin-top", (140 - $(this).height()) / 2); + }); + }, + /** + * 添加一个Google搜索的图片 + */ + appendGoogleImage : function(img) { + var title = img.title + " (" + img.width + " × " + img.height + ")"; + var box = $("
      ").appendTo($("#google_image_items")); + box.unbind().bind("click", function() { + $(".image_item_selected") + .removeClass('image_item_selected'); + $(this).addClass('image_item_selected'); + }); + var newImage = $("").appendTo(box); + newImage.bind("load", function() { + $(this).css("margin-top", (140 - $(this).height()) / 2); + }); + }, + /** + * 设置形状的背景图片 + * + * @param {} + * source + */ + setShapeImage : function(fileId, w, h) { + if (this.imageSelectedCallback) { + this.imageSelectedCallback(fileId, w, h); + } + $("#image_dialog").dlg("close"); + }, + /** + * 加载URL图片的ajax请求对象 + * + * @type {} + */ + fetchingRequest : null, + /** + * 通过URL设置图片 + * + * @param {} + * url + */ + setShapeImageByURL : function(url) { + $("#set_image_text").removeClass("errored").text("正在应用图片,请稍候..."); + $("#set_image_submit").button("disable"); + UI.fetchingRequest = $.ajax({ + url : "/user_image/reference", + data : { + url : url + }, + success : function(result) { + if (result.result == "exception") { + $("#set_image_text").addClass("errored") + .html("无法使用此图片,请选择其他图片"); + } else { + $("#set_image_text").empty(); + var img = result.image; + UI + .setShapeImage(img.fileId, img.imageW, + img.imageH); + } + } + }); + }, + /** + * 插入图片 + * + * @param {} + * source + * @param {} + * location + * @param {} + * w + * @param {} + * h + */ + insertImage : function(fileId, w, h) { + w = parseInt(w); + h = parseInt(h); + var layout = $("#designer_layout"); + var centerX = layout.width() / 2 + layout.offset().left; + var centerY = layout.height() / 2 + layout.offset().top; + var pos = Utils.getRelativePos(centerX, centerY, $("#designer_canvas")); + var shape = Model.create("standardImage", pos.x.restoreScale() - w / 2, + pos.y.restoreScale() - h / 2); + shape.props.w = w; + shape.props.h = h; + shape.fillStyle = { + type : "image", + fileId : fileId, + display : "fill", + imageW : w, + imageH : h + }; + Model.add(shape); + Designer.painter.renderShape(shape); + Utils.unselect(); + Utils.selectShape(shape.id); + }, + /** + * 导出流程手册 + */ + doOutputProcess: function () { + }, + /** + * 加载预览数据 + */ + doPreview: function () { + if ($("#saving_tip").text() != "已保存成功" && $("#saving_tip").text() != "保存成功" && $("#saving_tip").text() != "您的文件已经成功保存" && $("#saving_tip").text() != "") { + if (editable) { + $.simpleAlert('页面中有未保存的内容,请先保存'); + return; + } + } + $.simpleAlert('请稍后', 'loading'); + $.post("./jd", { + cmd: "com.actionsoft.apps.coe.pal_pl_repository_df", + sid: sid, + "uuid": chartId + }, function t(msg) { + $("#previewContent .procImg").remove(); + if (typeof(msg) == "string") { + msg = eval('(' + msg + ')'); + } + msg = msg.data.url; + if (msg == "") { + alert("请您先保存一个版本!"); + } else { + var img = $(""); + var hh = img.width(); + $("#previewContent").append(img); + } + $("#previewDialog").dialog({ + title: "预览", + width: window.innerWidth * 0.9, + height: window.innerHeight * 0.92 + }); + $.simpleAlert("close"); + }, "text"); + }, + /** + * 生成图片和缩略图 + */ + saveImage : function() { + if ($("#saving_tip").text() != "已保存成功" && $("#saving_tip").text() != "保存成功" && $("#saving_tip").text() != "您的文件已经成功保存" && $("#saving_tip").text() != "") { + if (editable) { + $.simpleAlert('页面中有未保存的内容,请先保存'); + return; + } + } + $.simpleAlert('请稍后', 'loading'); + $.ajax({ + type: "POST", + url: "./jd", + data: { + sid: sid, + cmd: "com.actionsoft.apps.coe.pal_pl_repository_image_save", + uuid: chartId + }, + success: function (r, textStatus, jqXHR) { + if(r.result == 'ok' ) { + $.simpleAlert("close"); + $.simpleAlert('图片创建完成', 'ok', 2000, {callback:function() { + var options = { + title : "提示", + content:"是否打开图片预览", + onConfirm: function(){ + $.simpleAlert("close"); + UI.doPreview();// 预览 + }, + onCancel : function(){ + } + }; + $.confirm(options); + }}); + } else { + console.log(r); + $.simpleAlert("close"); + $.simpleAlert(r.data.desc, 'error'); + } + }, + error: function (jqXHR, textStatus, errorThrown) { + $.simpleAlert(errorThrown, 'err'); + console.log(jqXHR) + console.log(textStatus) + console.log(errorThrown) + } + }); + }, + showVersionCompare : function() { + $("#dialog_version_compare").dialog({ + buttons:[ + {text:'确定',cls:"blue",handler:function(){ + var checkboxs = $("input[name='version']:checked"); + var numCheck = checkboxs.length; + if (numCheck != 2) { + $.simpleAlert("请选择两个需要对比的版本", "warning"); + return; + } + var firstId; + var secondId; + var values = []; + var names = []; + checkboxs.each(function (){ + values.push($(this).val()); + names.push($(this).data("name")); + }); + firstId = values[0]; + secondId = values[1]; + awsui.ajax.post("./jd?sid="+sid+"&cmd=com.actionsoft.apps.coe.pal_pl_version_compare", { firstId: firstId, secondId: secondId}, function(data) { + $("#dialog_version_compare").dialog("close"); + var fileAttrCompare = data.fileAttrCompare; + var shapeAttrCompare = data.shapeAttrCompare; + var fileHtml = ""; + var shapeHtml = ""; + if (fileAttrCompare.length > 0) { + for (var i = 0; i < fileAttrCompare.length; i++) { + fileHtml += fileAttrCompare[i] + "
      "; + } + $("#fileAttr").html(fileHtml); + } + if (shapeAttrCompare.length > 0) { + for (var i = 0; i < shapeAttrCompare.length; i++) { + shapeHtml += shapeAttrCompare[i] + "
      "; + } + $("#shapeAttr").html(shapeHtml); + } + $("#versionCompareResult").show(); + $("#dialog_version_compare_result").dialog({ + + }); + }, 'json'); + } + } + ] + }); + }, + /** + * 流程导出 + */ + processExport : function() { + //先处理准备好导出的流程数据 + if ($("#saving_tip").text() != "已保存成功" && $("#saving_tip").text() != "保存成功" && $("#saving_tip").text() != "您的文件已经成功保存" && $("#saving_tip").text() != "") { + if (editable) { + $.simpleAlert('页面中有未保存的内容,请先保存'); + return; + } + } + var repositoryIds = []; + repositoryIds.push(ruuid); + var options = { + title : "提示", + content:"确定导出并下载文件吗?", + onConfirm: function(){ + $.simpleAlert('正在导出', 'loading'); + $.ajax({ + type: "POST", + url: "./jd", + data: { + sid: sid, + cmd: "com.actionsoft.apps.coe.pal_pl_export_handle", + repositoryIds: JSON.stringify(repositoryIds) + }, + success: function (r, textStatus, jqXHR) { + if(r.result == 'ok' ) { + $.simpleAlert("close"); + $.simpleAlert('导出完成', 'ok', 2000, {callback:function() { + $.simpleAlert("close"); + // 下载 + $.ajax({ + type: "POST", + url: "./jd", + data: { + sid: sid, + cmd: "com.actionsoft.apps.coe.pal_pl_export", + exportTitle: r.data.exportTitle, + exportCount: r.data.exportCount, + dcId: r.data.dcId, + }, + success: function (r, textStatus, jqXHR) { + if(r.result == 'ok' ) { + window.location.href = r.data.downLoadUrl; + } else { + console.log(r); + } + }, + error: function (jqXHR, textStatus, errorThrown) { + $.simpleAlert(errorThrown, 'err'); + console.log(jqXHR) + console.log(textStatus) + console.log(errorThrown) + } + }); + }}); + } else { + console.log(r); + $.simpleAlert("close"); + } + }, + error: function (jqXHR, textStatus, errorThrown) { + $.simpleAlert(errorThrown, 'err'); + console.log(jqXHR) + console.log(textStatus) + console.log(errorThrown) + } + }); + }, + onCancel : function(){ + } + }; + $.confirm(options); + }, + openNewPage : function() { + window.open(location.href); + }, + /** + * 执行导出 + */ + doExport : function() { + // var definition = JSON.stringify(Model.define); + // $("#export_definition").val(definition); + // $("#export_title").val($(".diagram_title").text()); + // $("#export_form").submit(); + if ($("#saving_tip").text() != "已保存成功" && $("#saving_tip").text() != "保存成功" && $("#saving_tip").text() != "您的文件已经成功保存" && $("#saving_tip").text() != "") { + if (editable) { + $.simpleAlert('页面中有未保存的内容,请先保存'); + return; + } + } + $.simpleAlert('请稍后', 'loading'); + var type = $('input[name="type"]:checked').val(); + $.post("./jd", { + cmd : "com.actionsoft.apps.coe.pal_pl_repository_download_png", + sid : sid, + "uuid" : chartId, + type : type + }, function t(msg) { + if (typeof(msg) == "string") { + msg = eval('(' + msg + ')'); + } + msg = msg.data.url; + if (msg == "") { + alert("请您先保存一个版本!"); + } else { + //window.open(msg); + $("#export_iframe").attr("src", msg); + } + $.simpleAlert("close"); + }, "text"); + $('#export_dialog').dlg('close'); + }, + /** + * 展示hotkey列表 + */ + showHotKey : function() { + var height = $(window).height() - 175; + if (height > 500) { + height = 500 + "px"; + } + $("#hotkey_list").dlg(); + $("#hotkey_list").css({ + "top" : "28px" + }); + $("#hotkey_list .dialog_content").css({ + "height" : height + }); + }, + /** + * 显示反馈dialog + */ + showFeedBack : function() { + $("#send_feedback").css({ + width : "auto", + height : "auto" + }); + var sendFeedBack = $("#send_feedback"); + sendFeedBack.dlg(); + $("#feedback_email").focus(); + $("#feedback_message").val(""); + $(".feedback_error_email_format").hide(); + $(".feedback_error_msg").hide(); + }, + /** + * 发送反馈 + */ + sendFeedBack : function(dom) { + $(".feedback_error_email_format").hide(); + $(".feedback_error_msg").hide(); + var email = $.trim($("#feedback_email").val()); + var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/; + if (!reg.test(email)) { + $("#feedback_email").focus(); + $(".feedback_error_email_format").show(); + return; + } + var feedbackMessage = $.trim($("#feedback_message").val()); + if (feedbackMessage == "") { + $("#feedback_message").val("").focus(); + $(".feedback_error_msg").show(); + return; + } + Util.ajax({ + url : "/support/save_ask", + data : { + content : feedbackMessage, + username : $("#feedback_name").val(), + email : email, + url : location.href + }, + success : function(data) { + $(".dlg_mask").remove(); + $("#send_feedback").animate({ + left : $(window).width(), + top : $(window).height(), + width : 0, + height : 0, + opacty : 0.2 + }); + } + }); + }, + /** + * 打开开始向导 + */ + gettingStart : function(delay) { + this.showStartStep(1); + }, + showStartStep : function(step, dom) { + $(".mark_content").hide(); + var content = $(".mark" + step + "_content"); + content.show(); + var top; + var left; + if (step == 1) { + top = $("#shape_panel").offset().top + 70; + left = $("#shape_panel").offset().left + $("#shape_panel").width() + + 10; + } else if (step == 2) { + top = $(".row2").offset().top + 30; + left = $("#menu_bar_insert").offset().left + + $("#menu_bar_insert").width() - content.outerWidth() / 2; + } else if (step == 3) { + top = $(".toolbar").offset().top + 40; + left = 270; + } else if (step == 4) { + top = $("#dock").offset().top + 10; + left = $("#dock").offset().left - content.outerWidth() - 10 + } else if (step == "created") { + top = dom.offset().top + dom.height() / 2 - content.outerHeight() + / 2; + if (top <= 0) { + top = 0; + } + if (top + content.outerHeight() > $(window).height()) { + top = $(window).height() - content.outerHeight(); + } + left = dom.offset().left + dom.width() + 10; + } + content.css({ + top : top, + left : left + }); + }, + /** + * 关闭开始向导 + * + * @param {} + * dom + */ + closeGettingStart : function(dom) { + $(".mark_content").hide(); + }, + /** + * Getting Start END-- + */ + + showAddColla : function() { + Util.ajax({ + url : "/collaboration/get_colla_role_list", + data : { + chartId : chartId + }, + success : function(data) { + $("#colla_dialog").find(".role_list").html(data).scrollTop(999); + $("#colla_dialog").removeClass("_update"); + $("#colla_dialog").css({ + "top" : ($(window).height() - $("#colla_dialog") + .outerHeight()) + * 0.5 + "px" + }); + $("#colla_dialog").dlg(); + $("#colla_suggest_box").empty(); + $("#add_prompt4").hide(); + $("#add_prompt3").hide(); + $("#add_prompt2").hide(); + $("#add_prompt1").show(); + } + }); + + var lastVal = ""; + $("#input_add_colla").val("").unbind().bind("keyup", function() { + // 加载信息 + var value = $(this).val(); + if (value == lastVal) { + return; + } + lastVal = value; + if (value == "") { + $("#colla_suggest_box").empty(); + $("#add_prompt4").hide(); + $("#add_prompt3").hide(); + $("#add_prompt2").hide(); + $("#add_prompt1").show(); + return; + } + Util.ajax({ + url : "/collaboration/get_new_members", + data : { + value : value + }, + success : function(data) { + $("#colla_suggest_box").html(data); + if ($("#colla_suggest_box").find("ul").length > 0) { + $("#add_prompt4").hide(); + $("#add_prompt3").hide(); + $("#add_prompt2").show(); + $("#add_prompt1").hide(); + } else { + $("#add_prompt4").hide(); + $("#add_prompt3").hide(); + $("#add_prompt2").hide(); + $("#add_prompt1").show(); + } + $(".colla_suggest").find("li").unbind().bind("click", + function() { + $("#add_prompt4").hide(); + $("#add_prompt3").hide(); + $("#add_prompt2").show(); + $("#add_prompt1").hide(); + var value = $.trim($("#input_add_colla").val()); + $(".colla_suggest").find("li") + .removeClass("seled"); + $(this).addClass("seled"); + var type = $(this).attr("joinType"); + var target = $(this).attr("target"); + if (type == "user") { + var userName = $(this).attr("username"); + $("#input_add_colla").val(userName); + $("#add_userid").val(target); + } else { + $("#input_add_colla").val(target); + $("#add_userid").val(target); + } + $("#add_type").val(type); + }); + } + }); + }); + }, + doAddCollaboration : function() { + if ($(".colla_suggest").length > 0) { + if ($(".colla_suggest").find(".seled").length == 0) { + $("#add_prompt1").hide(); + $("#add_prompt2").show(); + $("#add_prompt3").hide(); + $("#add_prompt4").hide(); + var top = ($(window).outerHeight() - 104) * 0.5 + 100; + var left = ($(window).outerWidth() - 272) * 0.5; + $("#confirm_dlg").removeClass("newSize").css({ + top : top + "px", + left : left + "px" + }); + $("#confirm_dlg").addClass("newSize").css({ + top : ($(window).outerHeight() - $("#confirm_dlg").height()) + * 0.5 + "px", + left : ($(window).outerWidth() - $("#confirm_dlg").width()) + * 0.5 + "px", + display : "block" + }); + } else { + var imgSrc = $(".colla_suggest").find(".seled").find("img") + .attr("src"); + var userFullName = $("#input_add_colla").val(); + if (userFullName.length > 30) { + userFullName = userFullName.substr(0, 30) + "..."; + } + var target = $("#add_userid").val(); + var role = $("#invit_role").val(); + var type = $("#add_type").val(); + $(".add_new_button") + .find(".designer_button") + .text("<@i18n resource='diagraming.collaboation_sending'/>"); + var target_item = null; + if (type == "email") { + $(".role_list").find(".role_item").each(function() { + if ($(this).attr("type") == type + && $(this).attr("target") == target) { + target_item = $(this); + $(this) + .find(".inviting_") + .text("<@i18n resource='diagraming.collaboation_inviting_again'/>"); + } + }); + } + + var paramOuter = { + type : type, + target : target, + role : role, + chartId : chartId + }; + Util.ajax({ + url : "/collaboration/add", + data : paramOuter, + success : function(data) { + var result = data.result; + if (result == "exists") { + $("#add_prompt2").hide(); + $("#add_prompt1").hide(); + $("#add_prompt4").hide(); + $("#add_prompt3").show(); + } else { + Util.ajax({ + url : "/collaboration/get_colla_role_list", + data : { + chartId : chartId + }, + success : function(data) { + $(".role_list").html(data) + .scrollTop(999); + } + }); + } + $(".add_new_button") + .find(".designer_button") + .text("<@i18n resource='diagraming.collaboation_send_invitation'/>"); + $("#colla_dialog").addClass("_update").css({ + top : ($(window).height() - $("#colla_dialog") + .outerHeight()) + * 0.5 + "px" + }); + if (result != "exists") { + setTimeout(function() { + $("#add_prompt3").hide(); + $("#add_prompt2").hide(); + $("#add_prompt1").hide(); + $("#add_prompt4").show(); + }, 400); + } + setTimeout(function() { + $("#add_prompt3").hide(); + $("#add_prompt2").hide(); + $("#add_prompt4").hide(); + $("#add_prompt1").show(); + $("#input_add_colla").val(""); + $("#colla_suggest_box").html(""); + }, 1000); + } + }); + } + } + }, + deleteCollaRole : function(dom) { + var parent = $(dom).parent(".role_item"); + var collaborationId = parent.attr("collaborationId"); + Util.ajax({ + url : "/collaboration/delete", + data : { + collaborationId : collaborationId + }, + success : function(data) { + if (data.result == "success") + parent.remove(); + } + }); + + $("#colla_dialog").addClass("_update").css({ + top : ($(window).height() - $("#colla_dialog").outerHeight()) * 0.5 + + "px" + }); + }, + changeCollaRole : function(collaborationId, dom) { + Util.ajax({ + url : "/collaboration/set_role", + data : { + collaborationId : collaborationId, + role : $(dom).val() + }, + success : function(data) { + if (data.result == "success") { + $(dom).parent(".given_role") + .find(".change_success").stop().animate({ + "left" : "-38px" + }, 200).delay(400).animate({ + "left" : "0px" + }, 200); + } + } + }); + }, + /** + * 打开图形管理 + */ + showShapesManage : function() { + var $dialog = $("#shapes_dialog").dialog({ + buttons : [{ + text : '确定', + cls : "blue", + handler : UI.saveShapesManage + }, { + text : '关闭', + handler : function() { + $dialog.dialog("close"); + } + }] + }); + $("#shape_manage_list").children("li").unbind().bind("click", + function() { + var chkbox = $(this).find("input"); + var checked = !chkbox.is(":checked"); + chkbox.attr("checked", checked); + cateChanged(chkbox); + }); + $("#shape_manage_list").find("input").unbind().bind("click", + function(e) { + e.stopPropagation(); + cateChanged($(this)); + }); + // .each(function(){ + // var categorys = $(this).val(); + // var arr = categorys.split(","); + // var exists = true; + // for(var i = 0; i < arr.length; i++){ + // var cate = arr[i]; + // if(!CategoryMapping[cate]){ + // //此分类下的图形,没有在当前使用中 + // exists = false; + // break; + // } + // } + // $(this).attr("checked", exists); + // }); + + function cateChanged(chk) { + var value = chk.val(); + var arr = value.split(","); + var chked = chk.is(":checked"); + if (arr.length > 1) { + // 是父级节点 + $("#shape_manage_list").find("input").each(function() { + var cate = $(this).val(); + if (arr.indexOf(cate) >= 0) { + // 是选择父级的子节点 + $(this).attr("checked", chked); + } + }); + } else { + // 选择的是子节点 + $("#shape_manage_list").find(".cate_parent").each(function() { + // 获取所有的父节点,判断子节点是否都全部选中了 + var cates = $(this).val().split(","); + var allChked = true; + for (var i = 0; i < cates.length; i++) { + var cate = cates[i]; + if (!$("#shape_manage_list").find("input[value=" + cate + + "]").is(":checked")) { + allChked = false; + break; + } + } + $(this).attr("checked", allChked); + }); + } + } + }, + /** + * 保存图形管理 + */ + saveShapesManage : function() { + var checked = $("#shape_manage_list") + .find("input:checked:not(.cate_parent)").map(function() { + return $(this).val(); + }).get(); + var a = ""; + var messages = { + categories : checked.join(",") + }; + // //发送消息 + // var msgObj = { + // action: "changeSchema", + // messages: JSON.stringify(messages) + // }; + // CLB.send(msgObj); + Designer.setSchema(checked.join(","), function() { + $("#shapes_dialog").dialog("close"); + }); + }, + /** + * 打开用户菜单 + */ + showUserMenu : function(e) { + e.stopPropagation(); + $("#user_menu").dropdown({ + target : $(".user"), + position : "right", + onSelect : function(item) { + var action = item.attr("ac"); + if (action == "dia") { + location.href = "/diagrams"; + } else if (action == "net") { + location.href = "/network"; + } else if (action == "out") { + location.href = "/login/out"; + } + } + }); + }, + /** + * 打开另存为 + */ + showSaveAs : function() { + $("#saveas_dialog").dlg(); + $("#saveas_title").val($(".diagram_title").text()).select(); + }, + doSaveAs : function() { + if ($("#saveas_title").val().trim() == "") { + $("#saveas_title").focus(); + return; + } + $("#hid_saveas_id").val(chartId); + $("#saveas_form").submit(); + $("#btn_dosaveas").removeAttr("onclick"); + }, + activityNoDlg : function() { + //创建Dialog的DOM,关闭时销毁 + var dialogHTML = ''; + /*计算dialog高度,规则 + 1、最小值340 + 2、每行26px,1条件出现纵向滚动条时(行>8),需要根据高度行数扩大 + 3、最大window.height-40 + */ + //获取当前节点号数组 + // var filterNames = 'timerIntermediateCatchEvent,messageIntermediateCatchEvent,signalIntermediateCatchEvent,messageIntermediateThrowingEvent,signalIntermediateThrowingEvent,compensateIntermediateThrowingEvent,userTask,serviceTask,scriptTask,manualTask,businessRuleTask,sendTask,receiveTask,callActivityCallingProcess,'; + var filterNames = undefined; + var taskList = UI.getTasksList(filterNames); + var dialogHeight = 340; + if (taskList.length > 8) { + dialogHeight = 340 + (taskList.length - 8) * 26 + } + if (dialogHeight > ($(window).height() - 80)) { + dialogHeight = ($(window).height() - 80); + } + dialogHTML += ''; + $(document.body).append(dialogHTML); + //显示Dialog + $("#activityNoDialog").dialog({ + onClose: function () { + $('#activityNoDialog').remove(); + $('#row-drag-obj').remove();//grid拖动时产生的行,鼠标拖动到document外时,该div一直显示 + }, + buttons: [ + { + text: '确定', cls: "blue", + handler: function () { + if (activityNoArr.length > 0) { + //将节点号重新设置 + var allRows = activityNoGrid.awsGrid('getAllRows'); + for (var shapeId in Model.define.elements) { + var shape = Model.getShapeById(shapeId); + for(var x = 0; x < allRows.length; x++) { + var obj = allRows[x]; + if(obj.id == shape.id) { + if (shape.dataAttributes != undefined) { + for (var i = 0; i < shape.dataAttributes.length; i++) { + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attrArr = shape.dataAttributes[i]; + if (attrArr.attributesJsonArray && attrArr.attributesJsonArray.length > 0) { + for (var j = 0; j < attrArr.attributesJsonArray.length; j++) { + var attr = attrArr.attributesJsonArray[j]; + if (attr.id == 'number') { + attr.value = parseInt(obj.no); + break; + } + } + break; + } + } + } + } + } + } + } + if (isAutoSave == "0" ){ + $("#saving_tip").css("color", "rgb(255, 0, 0)"); + $("#saving_tip").text("文件已修改,未保存"); + } + } + $("#activityNoDialog").dialog('close'); + } + }, + { + text: '取消', handler: function () { + $("#activityNoDialog").dialog('close'); + } + } + ] + }); + var activityNoArr = [];//JSON数组 + for (var i = 0; i < taskList.length; i++) { + var task = taskList[i]; + var activityNoObj = {}; + activityNoObj.id = task.id; + if (task.text) { + activityNoObj.name = task.text; + } else { + activityNoObj.name = '(无名称)' + task.title; + } + activityNoObj.no = task.orderIndex; + activityNoArr[i] = activityNoObj; + } + if (activityNoArr.length == 0) { + $('#activityNoGrid').height(dialogHeight - 100); + $('#activityNoGrid').width(317); + $('#activityNoAlert').remove(); + $('#activityNoGrid').append($('
      '+ + '
      '+ + ''+ + '不支持编号排序'+ + '画布没有形状或者形状没有编号属性'+ + '
      '+ + '
      ')); + awsuiMessagePage(); + return; + } + //渲染Grid + var activityNoGridOptions = { + width: 317, + height: dialogHeight - 100, + flexWidth: false, + flexHeight: false, + resizable: false, + selectionModel: { + type: "none", + model: "single" + }, + scrollModel: { + vertical: true, + horizontal: false + }, + bottomVisible: false, + rowDrag: true + }; + activityNoGridOptions.colModel = [ + {title: "名称", width: 200, align: 'left', dataType: 'string', dataIndx: 'name', resizable: false, sortable: false}, + {title: "节点号", width: 80, align: 'center', dataType: 'integer', dataIndx: 'no', resizable: false, sortable: false} + ]; + activityNoGridOptions.dataModel = { + data: activityNoArr, + location: "local", + sorting: "local", + sortIndx: "no", + sortDir: "up" + }; + var activityNoGrid = $("#activityNoGrid").awsGrid(activityNoGridOptions); + activityNoGrid.awsGrid('option', 'rowDragCallback', function (source, target) { + return true; + }); + activityNoGrid.awsGrid('option', 'rowDragSuccessCallback', function (source, target) { + //重新排列序号 + var allRows = activityNoGrid.awsGrid('getAllRows'); + for (var i = 0; i < allRows.length; i++) { + allRows[i].no = (i + 1); + } + activityNoGrid.awsGrid('refreshDataAndView'); + }); + }, + getTasksList: function (filterNames) { + var filterNode = []; + var nodes = Model.define.elements; + if (filterNames == undefined) { + return UI.getALLTasksList(); + } + }, + getALLTasksList: function () { + var filterNode = []; + for (var shapeId in Model.define.elements) { + var shape = Model.getShapeById(shapeId); + if (shape.dataAttributes != undefined) { + for (var i = 0; i < shape.dataAttributes.length; i++) { + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attrArr = shape.dataAttributes[i]; + if (attrArr.attributesJsonArray && attrArr.attributesJsonArray.length > 0) { + for (var j = 0; j < attrArr.attributesJsonArray.length; j++) { + var attr = attrArr.attributesJsonArray[j]; + if (attr.id == 'number') { + var tempNumber = 0; + var number = attr.value; + if(typeof number == 'string') number = number.replace(/^\s+|\s+$/g,""); + if(!isNaN(number) && number != '') { + tempNumber = number; + } + var obj = {}; + obj.text = shape.text; + obj.id = shapeId; + obj.orderIndex = tempNumber; + filterNode.push(obj); + break; + } + } + break; + } + } + } + } + } + return filterNode; + }, + batchReplace: function() { + if ($("#saving_tip").text() != "已保存成功" && $("#saving_tip").text() != "保存成功" && $("#saving_tip").text() != "您的文件已经成功保存" && $("#saving_tip").text() != "") { + if (editable) { + $.simpleAlert('页面中有未保存的内容,请先保存'); + return; + } + } + // 打开批量处理框 + initWizardByDesinger(); + } +}; + +/** + * 右侧的Dock控件 + * + * @type {} + */ +var Dock = { + init : function() { + var layoutW = $("#designer_layout").width(); + var viewW = $("#layout_block").width(); + // 总宽度减去可视区域的宽度,得到滚动条宽度 + var navRight = layoutW - viewW; + $("#dock").css("right", navRight); + var dockRight = navRight + $("#dock").outerWidth() - 1; + $(".dock_view").css("right", dockRight); + if ($("#demo_signup").length) { + var signupH = $("#demo_signup").outerHeight(); + $("#dock").css("top", signupH); + $(".dock_view").css("top", signupH + 10); + } + $(".ico_dock_collapse").bind("click", function() { + $(".dock_view").hide(); + $(".dock_buttons").children().removeClass("selected"); + if (Dock.currentView == "history") { + Dock.closeHistory(); + } + Dock.currentView = ""; + }); + $(window).bind("resize.dock", function() { + if (Dock.currentView == "attribute") { + Dock.fitAttrList(); + } + }); + // 缩放 + $("#dock_zoom").spinner({ + min : 50, + max : 200, + unit : "%", + step : 10, + onChange : function(val) { + Designer.setZoomScale(val / 100); + } + }); + // 线条颜色 + $("#dock_line_color").colorButton({ + onSelect : function(color) { + Designer.setLineStyle({ + lineColor : color + }); + } + }); + // 线条类型 + $("#dock_line_style").button({ + onMousedown : function() { + $("#line_style_list").dropdown({ + target : $("#dock_line_style"), + onSelect : function(item) { + var lineStyle = item.attr("line"); + Designer.setLineStyle({ + lineStyle : lineStyle + }); + var cls = item.children("div").attr("class"); + $("#dock_line_style").children(".linestyle").attr( + "class", cls); + } + }); + var style = Utils.getSelected()[0].lineStyle.lineStyle; + var item = $("#line_style_list").children("li[line=" + style + + "]"); + $("#line_style_list").dropdown("select", item); + } + }); + // 线条宽度 + $("#dock_line_width").spinner({ + min : 0, + max : 10, + unit : "px", + step : 1, + onChange : function(val) { + Designer.setLineStyle({ + lineWidth : val + }); + } + }); + // 填充类型 + $("#dock_fill_type").button({ + onMousedown : function() { + $("#dock_fill_list").dropdown({ + target : $("#dock_fill_type"), + onSelect : function(item) { + var type = item.attr("ty"); + $("#dock_fill_type").button("setText", + item.text()); + if (type == "image") { + UI.showImageSelect(function(fileId, w, h) { + Designer.setFillStyle({ + type : "image", + fileId : fileId, + imageW : w, + imageH : h + }); + }); + } else { + Designer.setFillStyle({ + type : type + }); + var shapeIds = Utils.getSelectedShapeIds(); + var shape = Model.getShapeById(shapeIds[0]); + Dock.setFillStyle(shape.fillStyle); + } + } + }); + var type = $("#dock_fill_type").text(); + $("#dock_fill_list").children().each(function() { + if ($(this).text() == type) { + $("#dock_fill_list") + .dropdown("select", $(this)); + return false; + } + }); + } + }); + // 填充颜色 + $("#fill_solid_btn").colorButton({ + onSelect : function(color) { + Designer.setFillStyle({ + color : color + }); + } + }); + // 渐变开始颜色 + $("#fill_gradient_begin").colorButton({ + onSelect : function(color) { + Designer.setFillStyle({ + beginColor : color + }); + $("#fill_gradient_begin").attr("c", color); + } + }); + // 渐变结束颜色 + $("#fill_gradient_end").colorButton({ + onSelect : function(color) { + Designer.setFillStyle({ + endColor : color + }); + $("#fill_gradient_end").attr("c", color) + } + }); + // 渐变颜色交换 + $("#gradient_swap").button({ + onClick : function() { + var begin = $("#fill_gradient_begin").attr("c"); + var end = $("#fill_gradient_end").attr("c"); + $("#fill_gradient_begin").attr("c", end).colorButton( + "setColor", end); + $("#fill_gradient_end").attr("c", begin).colorButton( + "setColor", begin); + Designer.setFillStyle({ + beginColor : end, + endColor : begin + }); + } + }); + // 渐变类型 + $("#gradient_type").button({ + onMousedown : function() { + $("#gradient_type_list").dropdown({ + target : $("#gradient_type"), + onSelect : function(item) { + var type = item.attr("ty"); + $("#gradient_type").button("setText", item.text()); + Designer.setFillStyle({ + gradientType : type + }); + $(".gradient_details").hide(); + $("#gradient_type_" + type).show(); + var shapeIds = Utils.getSelectedShapeIds(); + var shape = Model.getShapeById(shapeIds[0]); + var fillStyle = shape.fillStyle; + if (type == "linear") { + $("#gradient_angle").spinner( + "setValue", + Math.round(fillStyle.angle / Math.PI * 180) + + "°"); + } else { + $("#gradient_radius").spinner("setValue", + Math.round(fillStyle.radius * 100) + "%"); + } + } + }); + var type = $("#gradient_type").text().trim(); + $("#gradient_type_list").children().each(function() { + if ($(this).text() == type) { + $("#gradient_type_list").dropdown("select", + $(this)); + return false; + } + }); + } + }); + // 线性渐变角度 + $("#gradient_angle").spinner({ + min : 0, + max : 360, + unit : "°", + step : 15, + onChange : function(val) { + var angle = val / 180 * Math.PI; + Designer.setFillStyle({ + angle : angle + }); + } + }); + // 径向渐变半径 + $("#gradient_radius").spinner({ + min : 0, + max : 100, + unit : "%", + step : 5, + onChange : function(val) { + Designer.setFillStyle({ + radius : val / 100 + }); + } + }); + // 改变背景图片 + $("#fill_change_img").button({ + onClick : function() { + UI.showImageSelect(function(fileId, w, h) { + Designer.setFillStyle({ + type : "image", + fileId : fileId, + imageW : w, + imageH : h + }); + }); + } + }); + // 背景图片显示 + $("#fill_img_display").button({ + onMousedown : function() { + $("#img_display_list").dropdown({ + target : $("#fill_img_display"), + onSelect : function(item) { + var type = item.attr("ty"); + $("#fill_img_display").button("setText", + item.text()); + Designer.setFillStyle({ + display : type + }); + } + }); + } + }); + // 透明度 + $("#spinner_opacity").spinner({ + min : 0, + max : 100, + unit : "%", + step : 5, + onChange : function(val) { + Designer.setShapeStyle({ + alpha : val / 100 + }); + } + }); + // X坐标 + $("#dock_metric_x").spinner({ + min : -800, + unit : "px", + step : 5, + onChange : function(val) { + Designer.setShapeProps({ + x : val + }); + } + }); + $("#dock_metric_x").spinner("setValue", "0px"); + // 宽度 + $("#dock_metric_w").spinner({ + min : 20, + unit : "px", + step : 5, + onChange : function(val) { + Designer.setShapeProps({ + w : val + }); + } + }); + // Y坐标 + $("#dock_metric_y").spinner({ + min : -800, + unit : "px", + step : 5, + onChange : function(val) { + Designer.setShapeProps({ + y : val + }); + } + }); + $("#dock_metric_y").spinner("setValue", "0px"); + // 高度 + $("#dock_metric_h").spinner({ + min : 20, + unit : "px", + step : 5, + onChange : function(val) { + Designer.setShapeProps({ + h : val + }); + } + }); + // 角度 + $("#dock_metric_angle").spinner({ + min : 0, + max : 360, + unit : "°", + step : 15, + onChange : function(val) { + var angle = val / 180 * Math.PI; + Designer.setShapeProps({ + angle : angle + }); + } + }); + // 画布尺寸 + $("#dock_page_size").button({ + onMousedown : function() { + $("#page_size_list").dropdown({ + target : $("#dock_page_size"), + onSelect : function(item) { + var w = parseInt(item.attr("w")); + var h = parseInt(item.attr("h")); + Designer.setPageStyle({ + width : w, + height : h + }); + $("#dock_page_size").button("setText", + item.text()); + } + }); + var item = $("#page_size_list").children("li[w=" + + Model.define.page.width + "][h=" + + Model.define.page.height + "]"); + if (item.length > 0) { + $("#page_size_list").dropdown("select", item); + } else { + $("#page_size_list").dropdown("select", + $("#dock_size_custom")); + } + $("#dock_size_w").spinner("setValue", + Model.define.page.width + "px"); + $("#dock_size_h").spinner("setValue", + Model.define.page.height + "px"); + } + }); + $("#dock_size_w").spinner({ + min : 200, + unit : "px", + step : 100, + onChange : function(val) { + Designer.setPageStyle({ + width : val + }); + } + }); + $("#dock_size_h").spinner({ + min : 200, + unit : "px", + step : 100, + onChange : function(val) { + Designer.setPageStyle({ + height : val + }); + } + }); + // 页面边距 + $("#dock_page_padding").button({ + onMousedown : function() { + $("#page_padding_list").dropdown({ + target : $("#dock_page_padding"), + onSelect : function(item) { + var p = parseInt(item.attr("p")); + Designer.setPageStyle({ + padding : p + }) + $("#dock_page_padding").button("setText", + item.text()); + } + }); + var item = $("#page_padding_list").children("li[p=" + + Model.define.page.padding + "]"); + $("#page_padding_list").dropdown("select", item); + } + }); + // 画布背景颜色 + $("#dock_page_color").colorButton({ + position : "center", + onSelect : function(color) { + Designer.setPageStyle({ + backgroundColor : color + }); + } + }); + // 是否显示网格 + $("#dock_page_showgrid").bind("change", function() { + var showGrid = $(this).is(":checked"); + Designer.setPageStyle({ + showGrid : showGrid + }); + if (showGrid) { + $("#dock_gridsize_box").show(); + } else { + $("#dock_gridsize_box").hide(); + } + }); + // 网格大小 + $("#dock_page_gridsize").button({ + onMousedown : function() { + $("#page_gridsize_list").dropdown({ + target : $("#dock_page_gridsize"), + onSelect : function(item) { + var s = parseInt(item.attr("s")); + Designer.setPageStyle({ + gridSize : s + }) + $("#dock_page_gridsize").button("setText", item.text()); + } + }); + var item = $("#page_gridsize_list").children("li[s=" + + Model.define.page.gridSize + "]"); + $("#page_gridsize_list").dropdown("select", item); + } + }); + // 播放速度 + $("#spinner_play_speed").spinner({ + min : 1, + max : 30, + unit : "s", + step : 1, + value : 5, + onChange : function(val) { + + } + }); + $("#spinner_play_speed").spinner("setValue", "2s"); + // 版本播放 + $("#btn_history_play").button({ + onClick : function() { + if ($("#btn_history_play").children() + .hasClass("ico_pause")) { + Dock.pauseVersions(); + } else { + Dock.playVersions(); + } + } + }); + $("#btn_history_restore").button({ + onClick : function() { + Dock.restoreVersion(); + } + }); + }, + /** + * 当前Dock窗口 + * + * @type {String} + */ + currentView : "", + /** + * 打开一个Dock窗口 + * + * @param {} + * name + */ + showView : function(name) { + if ($("#dock_btn_" + name).button("isDisabled")) { + return; + } + $(".dock_view").hide(); + $(".dock_view_" + name).show(); + $(".dock_buttons").children().removeClass("selected"); + $("#dock_btn_" + name).addClass("selected"); + if (Dock.currentView == "history" && name != "history") { + Dock.closeHistory(); + } + this.currentView = name; + this.update(true); + }, + /** + * 设置Dock的填充样式 + * + * @param {} + * fillStyle + */ + setFillStyle : function(fillStyle) { + $("#dock_fill_type").button( + "setText", + $("#dock_fill_list").children("li[ty=" + fillStyle.type + "]") + .text()); + $(".fill_detail").hide(); + if (fillStyle.type == "solid") { + $(".fill_detail_solid").show(); + $("#fill_solid_btn").colorButton("setColor", fillStyle.color); + } else if (fillStyle.type == "gradient") { + $(".fill_detail_gradient").show(); + // 渐变颜色 + $("#fill_gradient_begin").attr("c", fillStyle.beginColor) + .colorButton("setColor", fillStyle.beginColor); + $("#fill_gradient_end").attr("c", fillStyle.endColor).colorButton( + "setColor", fillStyle.endColor); + // 渐变类型 + $("#gradient_type").button( + "setText", + $("#gradient_type_list").children("li[ty=" + + fillStyle.gradientType + "]").text()); + $(".gradient_details").hide(); + if (fillStyle.gradientType == "linear") { + $("#gradient_type_linear").show(); + $("#gradient_angle").spinner("setValue", + Math.round(fillStyle.angle / Math.PI * 180) + "°"); + } else { + $("#gradient_type_radial").show(); + $("#gradient_radius").spinner("setValue", + Math.round(fillStyle.radius * 100) + "%"); + } + } else if (fillStyle.type == "image") { + $(".fill_detail_image").show(); + var display = "fill"; + if (fillStyle.display) { + display = fillStyle.display; + } + $("#fill_img_display").button( + "setText", + $("#img_display_list").children("li[ty=" + display + "]") + .text()); + } + }, + /** + * 更新Dock + */ + update : function(drawNav) { + if(drawNav == true){ + //图形点击 + $('.newadd_wen').hide(); + $('#pinglunfix').hide() + }else{ + $('#pinglunfix').show() + $('.newadd_wen').show(); + changeArributeByShape(); + } + if (this.currentView == "portalDescShow" || this.currentView == "portalFileShow" || this.currentView == "portalwjFileShow") { + changeArributeByShape(); + } + if (this.currentView == "navigator") { + if (drawNav) { + Navigator.draw(); + } + $("#dock_zoom").spinner("setValue", + Math.round(Designer.config.scale * 100) + "%"); + } else if (this.currentView == "graphic") { + var selectedIds = Utils.getSelectedIds(); + var count = selectedIds.length; + var shapeIds = Utils.getSelectedShapeIds(); + var shapeCount = shapeIds.length; + if (count == 0) { + $("#dock_line_color").button("disable"); + $("#dock_line_style").button("disable"); + $("#dock_line_width").button("disable"); + } else { + $("#dock_line_color").button("enable"); + $("#dock_line_style").button("enable"); + $("#dock_line_width").button("enable"); + var shape = Model.getShapeById(selectedIds[0]); + $("#dock_line_color").colorButton("setColor", + shape.lineStyle.lineColor); + var lineStyleCls = $("#line_style_list").children("li[line=" + + shape.lineStyle.lineStyle + "]").children() + .attr("class"); + $("#dock_line_style").children(".linestyle").attr("class", + lineStyleCls); + $("#dock_line_width").spinner("setValue", + shape.lineStyle.lineWidth + "px"); + } + if (shapeCount == 0) { + $("#dock_fill_type").button("disable"); + $("#spinner_opacity").button("disable"); + Dock.setFillStyle({ + type : "none" + }); + } else { + $("#dock_fill_type").button("enable"); + $("#spinner_opacity").button("enable"); + var shape = Model.getShapeById(shapeIds[0]); + Dock.setFillStyle(shape.fillStyle); + $("#spinner_opacity").spinner("setValue", + Math.round(shape.shapeStyle.alpha / 1 * 100) + "%"); + } + } else if (this.currentView == "metric") { + var shapeIds = Utils.getSelectedShapeIds(); + var shapeCount = shapeIds.length; + if (shapeCount == 0) { + $("#dock_metric_x").button("disable"); + $("#dock_metric_w").button("disable"); + $("#dock_metric_y").button("disable"); + $("#dock_metric_h").button("disable"); + $("#dock_metric_angle").button("disable"); + } else { + var shape = Model.getShapeById(shapeIds[0]); + $("#dock_metric_x").button("enable").spinner("setValue", + Math.round(shape.props.x) + "px"); + $("#dock_metric_w").button("enable").spinner("setValue", + Math.round(shape.props.w) + "px"); + $("#dock_metric_y").button("enable").spinner("setValue", + Math.round(shape.props.y) + "px"); + $("#dock_metric_h").button("enable").spinner("setValue", + Math.round(shape.props.h) + "px"); + $("#dock_metric_angle").button("enable").spinner("setValue", + Math.round(shape.props.angle / Math.PI * 180) + "°"); + } + } else if (this.currentView == "page") { + var page = Model.define.page; + var w = page.width; + var h = page.height; + var sizeItem = $("#page_size_list").children("li[w=" + w + "][h=" + + h + "]"); + var sizeText = ""; + if (sizeItem.length > 0) { + sizeText = sizeItem.text(); + } else { + sizeText = $("#dock_size_custom").text(); + } + $("#dock_page_size").button("setText", sizeText); + $("#dock_page_padding").button("setText", page.padding + "px"); + $("#dock_page_color").colorButton("setColor", page.backgroundColor); + $("#dock_page_showgrid").attr("checked", page.showGrid); + if (page.showGrid) { + $("#dock_gridsize_box").show(); + } else { + $("#dock_gridsize_box").hide(); + } + var gridText = ""; + var gridItem = $("#page_gridsize_list").children("li[s=" + + page.gridSize + "]"); + if (gridItem.length > 0) { + var gridText = gridItem.text(); + } + $("#dock_page_gridsize").button("setText", gridText); + } else if (this.currentView == "attribute") { + if (!inputUpdate) {// input类型的属性值更新时不重绘所有属性 + changeArributeByShape(); + } + if(role == "viewer") { + $("#dock_page_attribute table input").prop("disabled", true); + $("#tagContent1 table input, #tagContent1 table textarea").prop("disabled", true); + } + } else if (this.currentView == "message") { + $.ajax({ + url: "./jd?sid=" + $("#sid").val() + + "&cmd=com.actionsoft.apps.coe.pal_pl_repository_commentlist" + + "&repositoryId=" + ruuid + "&openAppType=" + openAppType, + success: function(msg){ + var html = ""; + var array; + if (typeof(msg) == "string") { + array = eval('(' + msg + ')').msg; + } else { + array = msg.msg; + } + if (typeof(array) == "string") { + array = eval('(' + array + ')'); + } + for (var i = 0; i < array.length; i++) { + var obj = array[i]; + html += getHtml(obj); + } + $("#messageContent").html(html); + } + }); + } else if (this.currentView == "publish") { + $.ajax({ + url: "./jd?sid=" + $("#sid").val() + + "&cmd=com.actionsoft.apps.coe.pal_publish_history_of_repository&wsId=" + $("#wsId").val() + + "&repositoryId=" + ruuid, + success: function(msg){ + var array; + if (typeof(msg) == "string") { + array = eval('(' + msg + ')').msg; + } else { + array = msg.msg; + } + if (typeof(array) == 'string') { + array = eval('(' + array + ')'); + } + var html = ""; + if (array != null && array.length > 0) { + for (var i = 0; i < array.length; i++) { + var data = array[i]; + var type = data.publishType; + var style = ""; + var info = ""; + if (type == "N") { + style = "green"; + info = "新发布"; + } else if (type == "C") { + style = "blue"; + info = "变更"; + } else if (type == "S") { + style = "red"; + info = "停用"; + } + var clickHtml = ""; + if (data.plId != undefined) { + clickHtml = " style='cursor: pointer;' onclick=\"openFileLink('" + data.plId + "', '_seft', '" + data.plName + "')\""; + } + html += "
      " + + " " + + " " + + " " + + "
      "; + } + + } else { + html = "
      暂无发布历史
      "; + } + $("#sidePublishListDiv article").html(html); + } + }); + } else if (this.currentView == "link") { + $.ajax({ + url: "./jd?sid=" + $("#sid").val() + + "&cmd=com.actionsoft.apps.coe.pal_link_of_repository&wsId=" + $("#wsId").val() + + "&plId=" + ruuid, + success: function(r){ + var links = r.data.links; + var customLinks = r.data.customLInks; + var html = ""; + var flag1 = false; + var flag2 = false; + if (links != null && links.length > 0) { + html += '

      文件链接

      '; + for (var i = 0; i < links.length; i++) { + html += ''; + } + } else { + flag1 = true; + } + if (customLinks != null && customLinks.length > 0){ + html += '

      自定义链接

      '; + html += ''; + } else { + flag2 = true; + } + if (flag1 && flag2) { + html = "
      暂无链接
      "; + } + $("#linkContent").empty().html(html); + } + }); + } + else if(this.currentView == 'diff') { + // var html = "
      暂无版本差异
      "; + var html = '' + $.ajax({ + url: "./jd?sid=" + $("#sid").val() + + "&cmd=com.actionsoft.apps.coe.pal_repository_model_version_diff_query&wsId=" + $("#wsId").val() + + "&id=" + ruuid, + success: function (ro) { + // console.log("历史差异结果: " + JSON.stringify(ro)) + if (ro.result == "ok") { + var diffContent = ro.data; + for (var i = 0; i < diffContent.length; i++) { + var diffCount = 0 + var content = diffContent[i].updateContent + var diffListHtml = '' + for (var j = 0; j < content.length; j++) { + var diffDetailHtml = '' + var listDetail = content[j].detail + if (listDetail.length == 0) { + diffCount += 1 + } + for (var k = 0; k < listDetail.length; k++) { + diffCount += 1 + diffDetailHtml += '
      ' + '·' + listDetail[k] + '
      ' + } + diffListHtml += '
      ' + content[j].title + '
      ' + + '
      ' + diffDetailHtml + '
      ' + + } + html += '' + + '' + diffContent[i].versionName + '' + + '' + diffContent[i].updateTime + '' + '(' + diffCount + '处修改)' + '' + '' + + '' + + '' + + '' + + '' + diffListHtml + '' + + '' + + } + $("#diffTable").empty().html(html) + } else { + html = '' + + ro.msg + + '' + $("#diffTable").empty().html(html) + } + } + }); + } + if (this.currentView == "history") { + if (drawNav && Dock.historyVersions == null) { + this.loadHistorys(); + } + } + }, + /** + * 历史版本暂存 + * + * @type {} + */ + historyVersions : null, + /** + * 加载历史版本 + */ + loadHistorys : function() {/* + if (chartId == "") { + $("#history_container") + .html("
      <@i18n resource='diagraming.demo.nohistory'/>
      ") + return; + } + $.ajax({ + url : "/diagraming/history", + data : { + chartId : chartId + }, + success : function(data) { + Dock.historyVersions = data; + if (data.versions.length == 0) { + $("#history_container") + .html('
      <@i18n resource="diagraming.nohistory"/>
      '); + } else { + $("#history_container") + .html('
        '); + var users = data.users; + for (var i = 0; i < data.versions.length; i++) { + var v = data.versions[i]; + var newVersion = $('
      • ' + v.updateTime + + '
      • ') + .appendTo($("#history_versions")); + var nameContainer = newVersion + .children(".version_name"); + for (var j = 0; j < v.userIds.length; j++) { + var userId = v.userIds[j]; + nameContainer.append("
        " + users[userId] + + "
        "); + } + var remarkContainer = $("") + .appendTo(newVersion); + if (v.remark) { + remarkContainer.find(".remark_text").text(v.remark); + } + remarkContainer + .append("") + } + Dock.resetVersions(); + } + } + }); + */}, + /** + * 重置版本历史 + */ + resetVersions : function() { + $("#history_versions").children("li").unbind().bind("click", + function() { + if (Dock.playingTimeout != null) { + return; + } + if ($(this).hasClass("selected")) { + Dock.closeHistory(); + } else { + $("#history_versions").children(".selected") + .removeClass("selected"); + $(this).addClass("selected"); + var defId = $(this).attr("def"); + Dock.showHistoryVersion(defId); + } + var current = $("#history_versions").children(".selected"); + if (current.length != 0 && current.attr("ind") != "0") { + $("#spinner_play_speed").button("enable"); + $("#btn_history_play").button("enable"); + $("#btn_history_restore").button("enable"); + } else { + $("#spinner_play_speed").button("disable"); + $("#btn_history_play").button("disable"); + $("#btn_history_restore").button("disable"); + } + }); + $("#history_versions").height("auto"); + var top = $("#history_versions").offset().top; + var bottom = top + $("#history_versions").height() + 75; + if (bottom > $(window).height()) { + var height = $(window).height() - top - 75; + if (height < 140) { + height = 140; + } + $("#history_versions").height(height); + } else { + $("#history_versions").height("auto"); + } + }, + /** + * 编辑版本注释 + * + * @param {} + * event + */ + editHistoryRemark : function(event, versionId) { + event.stopPropagation(); + var versionDom = $("#history_versions").children("li[vid=" + versionId + + "]"); + versionDom.find(".remark_container").hide(); + var currentRemark = versionDom.find(".remark_text").text(); + var editContainer = versionDom.find(".edit_container"); + editContainer.show(); + editContainer.children("textarea").val(currentRemark).select(); + editContainer.children(".save").bind("click", function(e) { + e.stopPropagation(); + var newRemark = editContainer.children("textarea").val(); + versionDom.find(".remark_text").text(newRemark); + versionDom.find(".remark_container").show(); + editContainer.hide(); + if (newRemark != currentRemark) { + CLB.send({ + action : "versionRemark", + remark : newRemark, + versionId : versionId + }); + } + }); + editContainer.children(".cancel").bind("click", function(e) { + e.stopPropagation(); + Dock.cancelHistoryRemark(); + }); + }, + /** + * 取消版本注释的编辑 + */ + cancelHistoryRemark : function() { + $(".remark_container").show(); + $(".edit_container").hide(); + }, + /** + * 展示历史版本 + */ + showHistoryVersion : function(defId) { + $("#spinner_play_speed").button("disable"); + $("#btn_history_play").button("disable"); + $("#btn_history_restore").button("disable"); + Dock.cancelHistoryRemark(); + $.ajax({ + url : "/diagraming/getdefinition", + data : { + definitionId : defId + }, + success : function(data) { + Dock.openHistory(data.definition); + if ($("#history_versions").children(".selected").attr("ind") != "0") { + $("#spinner_play_speed").button("enable"); + $("#btn_history_play").button("enable"); + $("#btn_history_restore").button("enable"); + } + } + }); + }, + /** + * 播放版本历史 + */ + playVersions : function() { + var current = $("#history_versions").children(".selected"); + // if(current.length == 0){ + // return; + // } + var index = parseInt(current.attr("ind")); + Dock.playOneVersion(index--, 0); + $("#btn_history_play").children().attr("class", "ico ico_pause"); + $("#btn_history_play").attr("title", "暂停").trigger("mouseenter"); + $("#btn_history_restore").button("disable"); + }, + /** + * 终止播放 + */ + pauseVersions : function() { + if (this.playingTimeout) { + clearTimeout(this.playingTimeout); + } + this.playingTimeout = null; + $("#btn_history_play").children().attr("class", "ico ico_play"); + $("#btn_history_play").attr("title", "从此版本播放"); + $(".ico_playing").remove(); + var current = $("#history_versions").children(".selected"); + $("#history_versions").children(".playing").removeClass("playing"); + if (current.length != 0 && current.attr("ind") != "0") { + $("#spinner_play_speed").button("enable"); + $("#btn_history_play").button("enable"); + $("#btn_history_restore").button("enable"); + } else { + $("#spinner_play_speed").button("disable"); + $("#btn_history_play").button("disable"); + $("#btn_history_restore").button("disable"); + } + }, + playingTimeout : null, + /** + * 播放一个版本 + */ + playOneVersion : function(index, msgIndex) { + var current = $("#history_versions").children("li[ind=" + index + "]"); + $("#history_versions").children(".selected").removeClass("selected"); + current.addClass("selected").addClass("playing"); + $(".ico_playing").remove(); + current.append("
        "); + + var version = Dock.historyVersions.versions[index]; + var messageStr = version.messages[msgIndex]; + var messages = JSON.parse(messageStr); + MessageSource.receive(messages); + var top = current.position().top; + if (top < 0) { + $("#history_versions").scrollTop($("#history_versions").scrollTop() + + top); + } + var time = $("#spinner_play_speed").spinner("getValue") * 1000; + if (index == 0 && msgIndex == version.messages.length - 1) { + this.pauseVersions(); + } else { + if (msgIndex < version.messages.length - 1) { + msgIndex++; + } else { + index = index - 1; + msgIndex = 0; + } + this.playingTimeout = setTimeout(function() { + Dock.playOneVersion(index, msgIndex); + }, time); + } + + }, + currentDefinition : null, + /** + * 打开一个历史版本 + */ + openHistory : function(definition) { + if (this.currentDefinition == null) { + this.currentDefinition = $.extend(true, {}, Model.define); + } + Utils.unselect(); + Designer.open(definition); + // 取消快捷键 + Designer.hotkey.cancel(); + Designer.op.cancel(); + $("#menu_bar").children().addClass("readonly"); + $(".diagram_title").addClass("readonly"); + $(".dock_buttons").children().addClass("disabled"); + $("#dock_btn_history").removeClass("disabled"); + $(".panel_box").addClass("readonly"); + // 中止监听 + CLB.stopListen(); + }, + /** + * 关闭历史版本 + */ + closeHistory : function() { + if (this.currentDefinition != null) { + Designer.open(this.currentDefinition); + this.currentDefinition = null; + this.activeOperation(); + } + }, + /** + * 激活操作 + */ + activeOperation : function() { + // 重新初始化快捷键 + Designer.hotkey.init(); + Designer.op.init(); + $("#menu_bar").children().removeClass("readonly"); + $(".diagram_title").removeClass("readonly"); + $(".dock_buttons").children().removeClass("disabled"); + $("#dock_btn_history").removeClass("disabled"); + $(".panel_box").removeClass("readonly"); + $("#history_versions").children(".selected").removeClass("selected"); + // 继续监听 + CLB.listen(); + Dock.loadHistorys(); + }, + /** + * 恢复版本 + */ + restoreVersion : function() { + var selected = $("#history_versions").children(".selected"); + if (selected.length) { + MessageSource.beginBatch(); + var elements = Dock.currentDefinition.elements; + // 删除当前的所有 + var removed = []; + if (elements) { + for (var id in elements) { + removed.push(elements[id]); + } + } + MessageSource.send("remove", removed); + // 更新画布 + var updatePageMsg = { + page : Utils.copy(Dock.currentDefinition.page), + update : Utils.copy(Model.define.page) + }; + MessageSource.send("updatePage", updatePageMsg); + // 添加新图形 + var newElements = Model.define.elements; + var added = []; + if (newElements) { + for (var id in newElements) { + added.push(newElements[id]); + } + } + MessageSource.send("create", added); + MessageSource.commit(); + Dock.activeOperation(); + } + }, + /** + * 设置数据属性列表 + */ + setAttributeList : function() { + var selectedIds = Utils.getSelectedIds(); + var shape = Model.getShapeById(selectedIds[0]); + $(".clearfix").empty(); + if (shape.dataAttributes) { + for (var i = 0; i < shape.dataAttributes.length; i++) { + var attr = shape.dataAttributes[i]; + var typeText = $("#attr_add_type").children("option[value=" + + attr.type + "]").text(); + var item = $("
      • " + attr.name + + "
        " + typeText + + "
        " + attr.value + + "
      • ") + .appendTo($(".attr_list")); + if (attr.category != "default") { + item.append("
        "); + } + } + } + this.fitAttrList(); + }, + /** + * 让数据属性列表适应 + */ + fitAttrList : function() { + var scroll = $("#tagContent").scrollTop(); + $("#tagContent").height("auto"); + var top = $("#tagContent").offset().top; + var bottom = top + $(".clearfix").height() + 10; + if (bottom > $(window).height()) { + var height = $(window).height() - top - 10; + if (height < 140) { + height = 140; + } + $("#tagContent").height(height); + } else { + $("#tagContent").height("auto"); + } + $("#tagContent").scrollTop(scroll); + }, + /** + * 打开数据属性添加 + */ + showAttrAdd : function() { + $("#attr_add_btn").hide(); + $(".attr_add_items").show(); + $("#attr_add_name").val("").focus(); + $("#attr_add_type").val("string"); + $("#attr_add_type").unbind().bind("change", function() { + Dock.setAttrValueInput(null, $(this).val()); + }); + Dock.setAttrValueInput(null, "string"); + this.fitAttrList(); + }, + /** + * 保存数据属性添加 + */ + saveAttrAdd : function() { + var name = $("#attr_add_name").val(); + if (name == "") { + $("#attr_add_name").focus(); + return; + } + var type = $("#attr_add_type").val(); + var value = $("#attr_add_value_arera").children().val(); + var newAttr = { + name : name, + type : type, + value : value + }; + Designer.addDataAttribute(newAttr); + this.setAttributeList(); + // 初始化添加区域 + this.showAttrAdd(); + }, + /** + * 取消数据属性添加 + */ + cancelAttrAdd : function() { + $("#attr_add_btn").show(); + $(".attr_add_items").hide(); + this.fitAttrList(); + }, + /** + * 编辑数据属性 + * + * @param {} + * attrId + */ + editAttr : function(attrId) { + var item = $(".attr_item_" + attrId); + if (item.hasClass("attr_editing")) { + return; + } + if ($(".attr_editing").length > 0) { + var editingId = $(".attr_editing").attr("id"); + this.saveAttrEdit(editingId); + } + item = $(".attr_item_" + attrId); + item.addClass("attr_editing"); + var attr = Designer.getDataAttrById(attrId); + // 属性值输入 + var input = this.setAttrValueInput(attr, attr.type); + input.val(attr.value).select(); + if (attr.category != "default") { + // 属性名和类型输入 + var nameDiv = item.children(".attr_name"); + nameDiv.empty(); + var nameInput = $("") + .appendTo(nameDiv); + nameInput.val(attr.name).select(); + var typeDiv = item.children(".attr_type"); + typeDiv.empty(); + var select = $("") + .appendTo(typeDiv); + select.html($("#attr_add_type").html()).val(attr.type); + select.bind("change", function() { + Dock.setAttrValueInput(attr, $(this).val()); + }); + } + // 添加显示设置 + var displayArea = $("
        ") + .appendTo(item); + // 显示为的按钮 + displayArea + .append("
        <@i18n resource='diagraming.addattr.displayas'/>
        "); + displayArea + .append("
        "); + displayArea.append("
        "); + // 显示参数区域 + displayArea.append("
        "); + this.appendDisplayItems(); + var showType = "none"; + if (attr.showType) { + showType = attr.showType; + } + this.setAttrDisplay(showType); + $("#attr_edit_showtype").attr("ty", showType).button({ + onMousedown : function() { + $("#attr_display_list").dropdown({ + target : $("#attr_edit_showtype"), + onSelect : function(item) { + var type = item.attr("ty"); + $("#attr_edit_showtype").attr("ty", type).button( + "setText", item.text()); + Dock.setAttrDisplay(type); + } + }); + var type = $("#attr_edit_showtype").text().trim(); + $("#attr_display_list").children().each(function() { + if ($(this).text() == type) { + $("#attr_display_list").dropdown("select", + $(this)); + return false; + } + }); + } + }); + $("#attr_edit_showtype").attr("ty", showType).button( + "setText", + $("#attr_display_list").children("li[ty=" + showType + "]") + .html()); + if (showType != "none") { + $("#attr_display_name").attr("checked", attr.showName); + if (showType == "icon") { + this.setAttrIcon(attr.icon); + } + } + var horizontal = "mostright"; + if (attr.horizontal) { + horizontal = attr.horizontal; + } + var vertical = "mostbottom"; + if (attr.vertical) { + vertical = attr.vertical; + } + $("#attr_location_h").button( + "setText", + $("#attr_location_h_list").children("li[loc=" + horizontal + + "]").html()); + $("#attr_location_h").attr("loc", horizontal); + $("#attr_location_v").button( + "setText", + $("#attr_location_v_list").children("li[loc=" + vertical + "]") + .html()); + $("#attr_location_v").attr("loc", vertical); + // 添加保存按钮 + item + .append("
        <@i18n resource='global.ok'/>
        <@i18n resource='global.cancel'/>
        "); + $("#save_edit_attr").bind("click", function(e) { + e.stopPropagation(); + Dock.saveAttrEdit(attrId); + }); + $("#cancel_edit_attr").bind("click", function(e) { + e.stopPropagation(); + Dock.setAttributeList(); + }) + }, + /** + * 设置数据属性值的输入 + * + * @param {} + * attr + * @param {} + * type + */ + setAttrValueInput : function(attr, type) { + var valueArea; + if (attr != null) { + // 如果为null,则是添加时调用,否则为修改 + valueArea = $(".attr_editing").children(".attr_value"); + } else { + valueArea = $("#attr_add_value_arera"); + } + valueArea.empty(); + var result; + if (type == "boolean") { + result = $("") + .appendTo(valueArea);; + } else if (type == "list") { + result = $("") + .appendTo(valueArea); + if (attr.listItems) { + for (var i = 0; i < attr.listItems.length; i++) { + var listItem = attr.listItems[i]; + result.append(""); + } + } + } else { + result = $("") + .appendTo(valueArea); + } + if (attr == null) { + valueArea.children().css("width", "260px"); + } else { + valueArea.children().css("width", "128px"); + } + return result; + }, + /** + * 添加数据显示的编辑项 + */ + appendDisplayItems : function() { + var optionsArea = $(".attr_display_options"); + // 详细区域,包括是否显示name,图标 + var detailArea = $("
        ") + .appendTo(optionsArea); + detailArea + .append(""); + // 选择图标的Button + var iconButtonArea = $("
        ") + .appendTo(detailArea); + iconButtonArea + .append("
        <@i18n resource='diagraming.addattr.icon'/>
        "); + iconButtonArea + .append("
        "); + iconButtonArea.append("
        "); + if ($("#attr_icon_list").children("li").html() == "") { + // 初始化图标选择 + var html = ""; + var index = 1; + while (index <= 49) { + if (index == 30) { + // 30时,要空出一格 + html += "
        "; + } + html += "
        "; + index++; + } + $("#attr_icon_list").children("li").html(html); + } + // 位置设置区域 + var locationArea = $("
        ") + .appendTo(optionsArea); + locationArea + .append("
        <@i18n resource='diagraming.addattr.display.location'/>
        "); + locationArea + .append("
        <@i18n resource='diagraming.addattr.display.h'/>
        "); + locationArea + .append("
        Most Right
        "); + locationArea.append("
        "); + locationArea + .append("
        <@i18n resource='diagraming.addattr.display.v'/>
        "); + locationArea + .append("
        Most Bottom
        "); + locationArea.append("
        "); + optionsArea.append("
        "); + $("#attr_display_icon").button({ + onMousedown : function() { + $("#attr_icon_list").dropdown({ + target : $("#attr_display_icon") + }); + } + }); + $("#attr_location_h").button({ + onMousedown : function() { + $("#attr_location_h_list").dropdown({ + target : $("#attr_location_h"), + onSelect : function(item) { + $("#attr_location_h").button("setText", + item.html()); + $("#attr_location_h").attr("loc", + item.attr("loc")); + } + }); + } + }); + $("#attr_location_v").button({ + onMousedown : function() { + $("#attr_location_v_list").dropdown({ + target : $("#attr_location_v"), + onSelect : function(item) { + $("#attr_location_v").button("setText", + item.html()); + $("#attr_location_v").attr("loc", + item.attr("loc")); + } + }); + } + }); + }, + /** + * 根据数据属性显示类型,设置操作界面 + * + * @param {} + * type + */ + setAttrDisplay : function(type) { + if (type == "none") { + $(".attr_display_options").hide(); + } else { + $(".attr_display_options").show(); + if (type == "icon") { + $("#attr_icon_area").show(); + } else { + $("#attr_icon_area").hide(); + } + } + }, + /** + * 设置数据属性的显示图标 + * + * @param {} + * icon + */ + setAttrIcon : function(icon) { + $("#attr_display_icon").attr("ico", icon).button("setText", ""); + if (icon) { + $("#attr_display_icon").button("setText", + ""); + } + }, + /** + * 保存数据属性编辑 + * + * @param {} + * attrId + */ + saveAttrEdit : function(attrId) { + var item = $(".attr_item_" + attrId); + if (!item.hasClass("attr_editing")) { + return; + } + var attr = Designer.getDataAttrById(attrId); + if (attr.category != "default") { + var name = item.children(".attr_name").children("input").val(); + if (name == "") { + item.children(".attr_name").children("input").focus(); + return; + } + attr.name = name; + attr.type = item.children(".attr_type").children("select").val(); + } + attr.value = item.children(".attr_value").children().val(); + var showType = $("#attr_edit_showtype").attr("ty"); + attr.showType = showType; + if (showType != "none") { + attr.showName = $("#attr_display_name").is(":checked"); + attr.horizontal = $("#attr_location_h").attr("loc"); + attr.vertical = $("#attr_location_v").attr("loc"); + if (showType == "icon") { + attr.icon = $("#attr_display_icon").attr("ico"); + } + } + // BPMN数据属性规则 + var selectedIds = Utils.getSelectedIds(); + var shape = Model.getShapeById(selectedIds[0]); + if (attr.category == "default" && shape.category == "bpmn") { + if (!shape.attribute) { + shape.attribute = {}; + } + if (!shape.attribute.markers) { + shape.attribute.markers = []; + } + var markers = shape.attribute.markers; + if (attr.name == "loopCharacteristics") { + Utils.removeFromArray(markers, "loop"); + Utils.removeFromArray(markers, "sequential"); + Utils.removeFromArray(markers, "parallel"); + if (attr.value == "StandardLoopCharacteristics") { + // 显示循环 + Utils.addToArray(markers, "loop"); + } else if (attr.value == "MultipleLoopCharacteristics") { + var sequantial = Designer + .getDefaultDataAttrByName("isSequantial"); + if (sequantial != null) { + if (sequantial.value == "true") { + // 显示三条横线 + Utils.addToArray(markers, "sequential"); + } else { + // 显示三条竖线 + Utils.addToArray(markers, "parallel"); + } + } + } + } else if (attr.name == "isSequantial") { + Utils.removeFromArray(markers, "sequential"); + Utils.removeFromArray(markers, "parallel"); + var loop = Designer + .getDefaultDataAttrByName("loopCharacteristics"); + if (loop != null && loop.value == "MultipleLoopCharacteristics") { + if (attr.value == "true") { + // 显示三条横线 + Utils.addToArray(markers, "sequential"); + } else { + // 显示三条竖线 + Utils.addToArray(markers, "parallel"); + } + } + } else if (attr.name == "isForCompensation") { + // 显示两个左箭头 + Utils.removeFromArray(markers, "compensation"); + if (attr.value == "true") { + Utils.addToArray(markers, "compensation"); + } + } else if (attr.name == "isCollection" + || attr.name == "ParticipantMultiplicity") { + Utils.removeFromArray(markers, "parallel"); + if (attr.value == "true") { + // 显示三条竖线 + Utils.addToArray(markers, "parallel"); + } + } else if (attr.name == "loopType") { + Utils.removeFromArray(markers, "loop"); + Utils.removeFromArray(markers, "sequential"); + Utils.removeFromArray(markers, "parallel"); + if (attr.value == "Standard") { + // 显示循环 + Utils.addToArray(markers, "loop"); + } else if (attr.value == "MultiInstanceSequential") { + // 显示三条横线 + Utils.addToArray(markers, "sequential"); + } else if (attr.value == "MultiInstanceParallel") { + // 显示三条竖线 + Utils.addToArray(markers, "parallel"); + } + } + } + Designer.updateDataAttribute(attr); + this.setAttributeList(); + }, + /** + * 删除数据属性 + * + * @param {} + * attrId + */ + deleteAttr : function(attrId, event) { + event.stopPropagation(); + var item = $(".attr_item_" + attrId); + item.remove(); + this.fitAttrList(); + Designer.deleteDataAttribute(attrId); + }, + /** + * 进入全屏 + */ + fullScreen : function(element, presentation) { + if (element.requestFullscreen) { + element.requestFullscreen(); + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen(); + } else if (element.webkitRequestFullscreen) { + element.webkitRequestFullscreen(); + } else { + // 无法进入全屏,提示错误 + if (presentation) { + $("#fullscreen_tip").find(".t").text("由于您的浏览器限制,无法进入演示视图。"); + } else { + $("#fullscreen_tip").find(".t").text("无法进入全屏视图,您可以按(F11)进入。"); + } + $("#fullscreen_tip").fadeIn(); + } + }, + /** + * 进入演示视图 + */ + enterPresentation : function() { + $("#designer").bind('webkitfullscreenchange', function(e) { + Dock.manageFullScreen(); + }); + $(document).bind('mozfullscreenchange', function(e) { + Dock.manageFullScreen(); + }).bind('fullscreenchange', function(e) { + Dock.manageFullScreen(); + }); + this.fullScreen(Utils.getDomById("designer"), true); + + }, + /** + * 进入全屏视图 + */ + enterFullScreen : function() { + this.fullScreen(document.documentElement); + }, + manageFullScreen : function() { + var designer = Utils.getDomById("designer"); + if (document.fullscreenElement || document.webkitFullscreenElement + || document.mozFullScreenElement) { + // 如果进入全屏状态 + $("#shape_panel").addClass("readonly"); + $("#designer_viewport").addClass("readonly"); + $(window).unbind("resize.designer"); + $("#designer_layout").height(window.screen.height); + // 取消快捷键 + Designer.hotkey.cancel(); + Designer.op.cancel(); + // 隐藏Dock + $("#dock").hide(); + $(".dock_view").hide(); + Designer.contextMenu.destroy(); + Designer.op.canvasFreeDraggable(); + } else { + $("#shape_panel").removeClass("readonly"); + $("#designer_viewport").removeClass("readonly"); + Designer.initialize.initLayout(); + Designer.hotkey.init(); + Designer.op.init(); + $("#dock").show(); + if (Dock.currentView != "") { + Dock.showView(Dock.currentView); + } + Designer.contextMenu.init(); + $("#designer").unbind('webkitfullscreenchange'); + $("#designer").unbind('mozfullscreenchange') + .unbind('fullscreenchange'); + } + } +}; + +/** + * 鹰眼导航 + * + * @type {} + */ +var Navigator = { + /** + * 初始化 + */ + init : function() { + $("#designer_layout").bind("scroll", function() { + Navigator.setView(); + }); + // 绑定拖动 + $("#navigation_eye").bind("mousedown", function(downE) { + var eye = $(this); + var beginPos = eye.position(); + // 先取消滚动事件 + $("#designer_layout").unbind("scroll"); + var layout = $("#designer_layout"); + var beginTop = layout.scrollTop(); + var beginLeft = layout.scrollLeft(); + // 设计器画布 + var designerCanvas = $("#designer_canvas"); + var canvasW = designerCanvas.width(); + var canvasH = designerCanvas.height(); + // 鹰眼视图画布 + var canvas = $("#navigation_canvas"); + var navW = canvas.width(); + var navH = canvas.height(); + // 宽高比例 + var scaleW = canvasW / navW; + var scaleH = canvasH / navH; + $(document).bind("mousemove.navigator", function(moveE) { + var offsetX = moveE.pageX - downE.pageX; + var offsetY = moveE.pageY - downE.pageY; + var newLeft = beginLeft + offsetX * scaleW; + layout.scrollLeft(newLeft); + var newTop = beginTop + offsetY * scaleH; + layout.scrollTop(newTop); + eye.css({ + left : beginPos.left + offsetX, + top : beginPos.top + offsetY + }); + }); + $(document).bind("mouseup.navigator", function(moveE) { + $(document).unbind("mousemove.navigator"); + $(document).unbind("mouseup.navigator"); + Navigator.setView(); + // 重新绑定 + $("#designer_layout").bind("scroll", + function() { + Navigator.setView(); + }); + }); + }); + $("#navigation_canvas").bind("click", function(e) { + var pos = Utils.getRelativePos(e.pageX, e.pageY, $(this)); + // 设计器画布 + var designerCanvas = $("#designer_canvas"); + var canvasW = designerCanvas.width(); + var canvasH = designerCanvas.height(); + // 鹰眼视图画布 + var canvas = $("#navigation_canvas"); + var navW = canvas.width(); + var navH = canvas.height(); + // 宽高比例 + var scaleW = canvasW / navW; + var scaleH = canvasH / navH; + // 得到点击位置,相对于设计器画布的坐标 + var canvasX = pos.x * scaleW; + var canvasY = pos.y * scaleH; + // 把点击坐标,置于屏幕中心 + var layout = $("#designer_layout"); + var margin = Designer.config.pageMargin; + layout.scrollLeft(canvasX + margin - layout.width() / 2); + layout.scrollTop(canvasY + margin - layout.height() / 2); + }); + this.setView(); + }, + /** + * 绘制鹰眼视图 + */ + draw : function() { + if (this.drawNavigationTimeout) { + window.clearTimeout(this.drawNavigationTimeout); + } + this.drawNavigationTimeout = setTimeout(function() { + var canvas = $("#navigation_canvas"); + var ctx = canvas[0].getContext("2d"); + ctx.save(); + ctx.clearRect(0, 0, canvas.width(), canvas.height()); + ctx.scale(canvas.width() / Model.define.page.width, canvas + .height() + / Model.define.page.height); + // 从最底层开始绘制图形 + for (var i = 0; i < Model.orderList.length; i++) { + var shapeId = Model.orderList[i].id; + var shape = Model.getShapeById(shapeId); + ctx.save(); + if (shape.name != "linker") { + // 对图形执行绘制 + var p = shape.props; + var style = shape.lineStyle; + ctx.translate(p.x, p.y); + ctx.translate(p.w / 2, p.h / 2); + ctx.rotate(p.angle); + ctx.translate(-(p.w / 2), -(p.h / 2)); + ctx.globalAlpha = shape.shapeStyle.alpha; + Designer.painter.renderShapePath(ctx, shape); + } else { + var linker = shape; + var style = linker.lineStyle; + var points = linker.points; + var from = linker.from; + var to = linker.to; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + if (linker.linkerType == "curve") { + var cp1 = points[0]; + var cp2 = points[1]; + ctx.bezierCurveTo(cp1.x, cp1.y, cp2.x, cp2.y, + to.x, to.y); + } else { + for (var j = 0; j < points.length; j++) { + // 如果是折线,会有折点 + var linkerPoint = points[j]; + ctx.lineTo(linkerPoint.x, linkerPoint.y); + } + ctx.lineTo(to.x, to.y); + } + ctx.lineWidth = style.lineWidth; + ctx.strokeStyle = "rgb(" + style.lineColor + ")"; + ctx.stroke(); + } + ctx.restore(); + } + ctx.restore(); + Navigator.setView(); + this.drawNavigationTimeout = null; + }, 100); + }, + /** + * 设置鹰眼视图 + */ + setView : function() { + var navigator = $("#navigation_eye"); + // 设计器可见视图 + var layout = $("#designer_layout"); + var viewW = layout.width(); + var viewH = layout.height(); + // 鹰眼视图画布 + var canvas = $("#navigation_canvas"); + var navW = canvas.width(); + var navH = canvas.height(); + // 设计器画布 + var designerCanvas = $("#designer_canvas"); + var canvasW = designerCanvas.width(); + var canvasH = designerCanvas.height(); + var margin = Designer.config.pageMargin; + // 得到设计器画布在可视窗口中的left, top + var visibleLeft = margin - layout.scrollLeft(); + var visibleRight = visibleLeft + canvasW; + if (visibleLeft < 0) { + visibleLeft = 0; + } else if (visibleLeft > viewW) { + visibleLeft = viewW; + } + if (visibleRight > viewW) { + visibleRight = viewW; + } else if (visibleRight < 0) { + visibleRight = 0; + } + var visibleTop = margin - layout.scrollTop(); + var visibleBottom = visibleTop + canvasH; + if (visibleTop < 0) { + visibleTop = 0; + } else if (visibleTop > viewH) { + visibleTop = viewH; + } + if (visibleBottom > viewH) { + visibleBottom = viewH; + } else if (visibleBottom < 0) { + visibleBottom = 0; + } + var visibleW = visibleRight - visibleLeft; + var visibleH = visibleBottom - visibleTop; + if (visibleW == 0 || visibleH == 0) { + // 画布已经不可见 + navigator.hide(); + } else { + // 换算成鹰眼视图中的left, top + var navLeft = layout.scrollLeft() - margin; + if (navLeft < 0) { + navLeft = 0; + } + navLeft = navLeft * (navW / canvasW); + var navTop = layout.scrollTop() - margin; + if (navTop < 0) { + navTop = 0; + } + navTop = navTop * (navH / canvasH); + var navViewW = visibleW * (navW / canvasW); + var navViewH = visibleH * (navH / canvasH); + navigator.css({ + left : navLeft - 1, + top : navTop - 1, + width : navViewW, + height : navViewH + }).show(); + } + } +}; +/** + * jQuery的扩展 + */ +(function($) { + /** + * 按钮 + */ + $.fn.button = function(options) { + if (typeof options == "string") { + if (options == "disable") { + $(this).addClass("disabled"); + $(this).find("input").attr("disabled", true); + } else if (options == "enable") { + $(this).removeClass("disabled"); + $(this).find("input").attr("disabled", false); + } else if (options == "isDisabled") { + return $(this).hasClass("disabled"); + } else if (options == "isSelected") { + return $(this).hasClass("selected"); + } else if (options == "unselect") { + $(this).removeClass("selected"); + } else if (options == "select") { + $(this).addClass("selected"); + } else if (options == "setText") { + $(this).children(".text_content").html(arguments[1]); + } else if (options == "setColor") { + $(this).children(".btn_color").css("background-color", + "rgb(" + arguments[1] + ")"); + } else if (options == "getColor") { + var color = $(this).children(".btn_color") + .css("background-color").replace(/\s/g, ""); + return color.substring(4, color.length - 1); + } + return $(this); + } + var target = $(this); + target.unbind("click"); + target.unbind("mousedown") + if (options.onClick) { + target.bind("click", function() { + if (target.button("isDisabled")) { + return; + } + options.onClick(); + }); + } + if (options.onMousedown) { + target.bind("mousedown", function(e) { + if (target.button("isDisabled")) { + return; + } + options.onMousedown(); + e.stopPropagation(); + }); + } + }; + var currentMenu = null; + // 下拉控件 + $.fn.dropdown = function(options) { + var menu = $(this); + menu.find(".ico_selected").remove(); + if (typeof options == "string") { + if (options == "close") { + menu.hide(); + currentMenu.target.removeClass("selected"); + $(document).unbind("mousedown.ui_dropdown"); + currentMenu = null; + } else if (options == "select") { + arguments[1].prepend("
        "); + } + return; + } + if (currentMenu != null) { + /** + * 如果当前有其他菜单是打开的,则要先关闭 + */ + currentMenu.menu.dropdown("close"); + } + var menu = $(this); + var tar = options.target; + currentMenu = { + target : tar, + menu : menu + }; + var offset = tar.offset(); + tar.addClass("selected"); + menu.show(); + var left; + if (options.position == "center") { + left = offset.left + tar.outerWidth() / 2 - menu.outerWidth() / 2; + } else if (options.position == "right") { + left = offset.left + tar.outerWidth() - menu.outerWidth(); + } else { + left = offset.left; + } + var top = offset.top + tar.outerHeight(); + if (top + menu.outerHeight() > $(window).height()) { + top = $(window).height() - menu.outerHeight(); + } + menu.css({ + top : top, + left : left + }); + if (typeof options.zindex != "undefined") { + menu.css("z-index", options.zindex); + } + menu.unbind("mousedown").bind("mousedown", function(e) { + e.stopPropagation(); + }); + if (typeof options.bind == "undefined" || options.bind == true) { + menu.find("li:not(.devider,.menu_text)").unbind().bind("click", + function() { + var item = $(this); + if (!item.menuitem("isDisabled") + && item.children(".extend_menu").length == 0) { + if (options.onSelect) { + options.onSelect(item); + } + menu.dropdown("close"); + } + }); + } + $(document).bind("mousedown.ui_dropdown", function() { + menu.dropdown("close"); + }); + }; + // 调色板 + $.colorpicker = function(options) { + var picker = $("#color_picker"); + picker.find(".selected").removeClass("selected"); + if (!picker.attr("init")) { + // 没有经过初始化 + picker.find("div").each(function() { + var color = $(this).css("background-color"); + color = color.replace(/\s/g, ""); + color = color.substring(4, color.length - 1); + $(this).attr("col", color); + }); + picker.attr("init", true); + } + var opt = $.extend({}, options, { + bind : false + }); + picker.dropdown(opt); + picker.children(".color_items").children("div").unbind().bind("click", + function() { + if (options.onSelect) { + var color = $(this).css("background-color"); + color = color.replace(/\s/g, ""); + color = color.substring(4, color.length - 1); + options.onSelect(color); + } + $("#color_picker").dropdown("close"); + }); + if (options.color) { + picker.find("div[col='" + options.color + "']") + .addClass("selected"); + } + $("#color_picker").children(".color_extend").remove(); + if (options.extend) { + $("#color_picker").append("
        " + + options.extend + "
        ") + } + }; + // 颜色按钮 + $.fn.colorButton = function(opt) { + var tar = $(this); + if (typeof opt == "string") { + if (opt == "setColor") { + tar.children(".picker_btn_holder").css("background-color", + "rgb(" + arguments[1] + ")"); + } + return; + } + tar + .html("
        "); + tar.bind("mousedown", function(e) { + if (tar.button("isDisabled")) { + return; + } + e.stopPropagation(); + var options = $.extend({}, opt); + options.target = tar; + options.onSelect = function(color) { + tar.colorButton("setColor", color); + if (opt.onSelect) { + opt.onSelect(color); + } + }; + var color = $(this).children(".picker_btn_holder") + .css("background-color"); + color = color.replace(/\s/g, ""); + color = color.substring(4, color.length - 1); + options.color = color; + $.colorpicker(options); + }); + }; + /** + * 数字框 min: 0, max: 360, unit: "°", step: 15, + */ + $.fn.spinner = function(opt) { + var spinner = $(this); + if (typeof opt == "string") { + if (opt == "getValue") { + var result = spinner.find("input").val(); + result = parseFloat(result); + return result; + } else if (opt == "setValue") { + spinner.find("input").val(arguments[1]); + spinner.attr("old", arguments[1]); + } + return; + } + spinner.html("
        "); + var defaults = { + min : 0, + max : Number.MAX_VALUE, + step : 1, + unit : "" + }; + opt = $.extend(defaults, opt); + var inputBox = spinner.children(".spinner_input"); + var input = inputBox.find("input"); + spinner.spinner("setValue", opt.min + opt.unit); + spinner.find(".spinner_up").bind("click", function() { + if (spinner.button("isDisabled")) { + return; + } + var now = spinner.spinner("getValue"); + var newVal = now + opt.step; + setSpinnerValue(spinner, newVal, opt); + }); + spinner.find(".spinner_down").bind("click", function() { + if (spinner.button("isDisabled")) { + return; + } + var now = spinner.spinner("getValue"); + var newVal = now - opt.step; + setSpinnerValue(spinner, newVal, opt); + }); + input.bind("keydown", function(e) { + if (e.keyCode == 13) { + var newVal = parseInt($(this).val()); + if (isNaN(newVal)) { + newVal = opt.min; + } + setSpinnerValue(spinner, newVal, opt); + } + }).bind("focus", function(e) { + $(this).select(); + $(this).bind("mouseup", function(e) { + e.preventDefault(); + $(this).unbind("mouseup"); + }); + var box = $(this).parent().parent(); + if (!box.hasClass("active")) { + box.addClass("active inset"); + } + }).bind("blur", function(e) { + var box = $(this).parent().parent(); + if (box.hasClass("inset")) { + box.removeClass("active inset"); + } + }); + }; + function setSpinnerValue(spinner, value, opt) { + if (value > opt.max) { + value = opt.max; + } + if (value < opt.min) { + value = opt.min; + } + var oldValue = spinner.attr("old"); + var newValue = value + opt.unit; + if (oldValue != newValue) { + if (opt.onChange) { + opt.onChange(value); + } + } + spinner.spinner("setValue", value + opt.unit); + } + /** + * 菜单项 + */ + $.fn.menuitem = function(options) { + var target = $(this); + if (typeof options == "string") { + if (options == "disable") { + target.addClass("disabled"); + } else if (options == "enable") { + target.removeClass("disabled"); + } else if (options == "isDisabled") { + return target.hasClass("disabled"); + } else if (options == "isSelected") { + return target.children(".ico_selected").length > 0; + } else if (options == "unselect") { + return target.children(".ico_selected").remove(); + } else if (options == "select") { + return target.prepend("
        ") + } + } + }; + /** + * 窗口 + */ + $.fn.dlg = function(options) { + var dlg = $(this); + if (typeof options == "string") { + if (options == "close") { + dlg.children(".dlg_close").trigger("click"); + } + return; + } + var defaults = { + closable : true + }; + options = $.extend(defaults, options); + var close = dlg.children(".dlg_close"); + if (close.length == 0) { + close = $("
        ").appendTo(dlg); + } + if (options.closable == false) { + close.hide(); + } else { + close.show(); + } + $(".dlg_mask").remove(); + $("body").append("
        ") + close.unbind().bind("click", function() { + dlg.hide(); + $(".dlg_mask").remove(); + if (options && options.onClose) { + options.onClose(); + } + $(document).unbind("keydown.closedlg"); + dlg.find("input,textarea,select") + .unbind("keydown.closedlg"); + }); + dlg.css({ + left : ($(window).width() - dlg.outerWidth()) / 2, + top : ($(window).height() - dlg.outerHeight()) / 2 + }); + dlg.show(); + if (options.closable) { + dlg.find("input,textarea,select").unbind("keydown.closedlg").bind( + "keydown.closedlg", function(e) { + if (e.keyCode == 27) { + dlg.children(".dlg_close").trigger("click"); + } + }); + $(document).unbind("keydown.closedlg").bind("keydown.closedlg", + function(e) { + if (e.keyCode == 27) { + dlg.children(".dlg_close").trigger("click"); + } + }); + } + dlg.children(".dialog_header").unbind("mousedown.drag_dlg").bind( + "mousedown.drag_dlg", function(e) { + var target = $(this).parent(); + var downX = e.pageX; + var downY = e.pageY; + var downLeft = target.offset().left; + var downTop = target.offset().top; + $(document).bind("mousemove.drag_dlg", function(e) { + var left = e.pageX - downX + downLeft; + var top = e.pageY - downY + downTop; + target.offset({ + left : left, + top : top + }); + }); + $(document).bind("mouseup.drag_dlg", function(e) { + $(document).unbind("mousemove.drag_dlg"); + $(document).unbind("mouseup.drag_dlg"); + }); + }); + }; +})(jQuery);