已添加8个文件
已修改20个文件
已重命名1个文件
¶Ô±ÈÐÂÎļþ |
| | |
| | | [user] |
| | | name = WXL (wul) |
| | | email = wl_5969728@163.com |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ac8b123 - WXL (wul) <wl_5969728@163.com> : æµè¯å®æ |
| | | cd51caf - å´é¾ <wl_5969728@163.com> : æµè¯å®æ |
| | | b685449 - WXL (wul) <wl_5969728@163.com> : æµè¯å®æ |
| | | 8220a01 - WXL (wul) <wl_5969728@163.com> : æµè¯å®æ |
| | | 488008e - WXL <wl_5969728@163.com> : ä½ çæäº¤ä¿¡æ¯ |
| | | 9a164d2 - WXL <wl_5969728@163.com> : ä½ çæäº¤ä¿¡æ¯ |
| | | 9403890 - å´é¾ <wl_5969728@163.com> : æµè¯å®æ |
| | | 022e803 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4898664 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 337fb92 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a7a20b2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 6f1e7a6 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5fba330 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 209b2f7 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 53f4f0a - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 2eff945 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b6c854d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | ec2f429 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | c1f1ecb - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 7449ee9 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9ed874d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 6253746 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5fb8598 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | aa06424 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5733abb - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9668152 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f06ac34 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 20cd2de - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | fe379fd - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9cc3dcf - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 3ae495d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | dafbb90 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 665ac63 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9a5dd25 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 880e036 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e10381f - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | c7c591d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | af3ff15 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 36d1334 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a22820c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f3f7256 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 84e20d0 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 572a624 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a5bc95e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | be764ba - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e46bb66 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8ed125f - WXL <1785969728@qq.com> : ç»è®¡å®æ |
| | | 37d2ba3 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 45f9797 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 0e3739a - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 54489da - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 303d443 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5a8e93d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4413b46 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 0529f31 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 08c27c1 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 6d7cd13 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8e71817 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b7092c2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | bc241c4 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5e17454 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 186b271 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 6535680 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 6be4939 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 400d13d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 3877190 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 78f514b - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | fecb2f5 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4395f0d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 327d234 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 56b8443 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8d0f7fc - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 38c9042 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 7d47700 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 273e2fa - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 401c835 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 60e5b16 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 6e54a66 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | ee8f1a0 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5f3691d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4b60348 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 418e3a7 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4c9eab7 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 15e42d9 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9f5b4e2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 99a916e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | abde816 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 81ffbda - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 935e93f - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b73b5dd - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 2daa54c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 073edc9 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 838d8b5 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 3fd01fa - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 88481a3 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 12eb16c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 083ae82 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 36b7179 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 03a3eff - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 2b1cfea - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | ff99a9b - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | cf2c2a9 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a77752e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 3bb35f1 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b0dd238 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 57a7537 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 83d8322 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | ee1d4af - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | bcf3cae - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | d5f7da9 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5acc6d2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 355bbb7 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a3d2f84 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | ee31f47 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | bc99b53 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 84b1d28 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | bfce8d1 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 44d24a2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 17edb0e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 891f159 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5f4c59e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4f3692a - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 321891f - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 3b8d057 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 50873f4 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | ec64a69 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8aa0592 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a5faf6e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f6bc6ed - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 46784b2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e48362d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f4e079f - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | dea82b7 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4cd2bfd - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 7cfedaa - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 0c2a0bd - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 48e96f3 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 98589bb - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | fc63b5b - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 981fbdd - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 6de02b3 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9896138 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | aca3443 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 1a090a4 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8c79267 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4a7648d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 09a1bd5 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4492ab0 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | eef0168 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 080186b - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 0a4cc3c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 1cb1fbf - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 3dcfdb6 - WXL <1785969728@qq.com> : 丽水æäº¤ |
| | | 77fb64c - WXL <1785969728@qq.com> : æ°åæäº¤ |
| | | 9507541 - WXL <1785969728@qq.com> : æ é¡æäº¤ |
| | | 07e07d6 - WXL <1785969728@qq.com> : æ°åæäº¤ |
| | | b26c48a - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | c1139d1 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b1d81d0 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | ae117f0 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5dc9d1b - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9a1a82e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 294e513 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 007d388 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | bf6643a - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 2a39af9 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 0c26cb5 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 196465c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9a9bd52 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 7611c86 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b557dde - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 021f489 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | df311bf - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 7fca01a - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a7c11f4 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f2d3945 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f1d0ce1 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b229d5e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 0a9c173 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 6f35ca7 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b10795e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | cdba63e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 83598fa - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9da8c98 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 39bb435 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 2fe94c2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 7e1ced1 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 476569c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 83898e6 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 2c4c416 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b5a56d5 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 2073439 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5c35457 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4e6c841 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | d27e3ad - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9ff0d92 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a49ce34 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 88d423c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | df59cae - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 44fe7b7 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 7eaee92 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | aa055fa - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | d03829b - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a346cfb - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8dcf298 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | c73a2c3 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | c4f2875 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b50917f - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 62bfa86 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 0733833 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 09b701d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | adf7c94 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9bc2723 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 720f7c4 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8904734 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8aca823 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | d1367a2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 1b7eb08 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | fe7f65e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 77a9385 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 17b041e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e13d441 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | ad0ecac - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9201094 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | d96a756 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 1811ac2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a9a1a5c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | bac13bc - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 41b1f52 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 2599fae - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8ec6407 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 3d50e2c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 2c9ddeb - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | dad71d3 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 40bdf0b - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 841b389 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b5f603e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a4dff39 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 6b6cc07 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b14bdee - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e717068 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | bc8e3ab - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8f7984b - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9f4da36 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 76196fb - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 49299bb - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 452e7fb - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 193b6ba - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 96915c5 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b09476a - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 0e4451c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | cc73ea5 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | df21bfb - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | c936ac9 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 3207bfd - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 43bb102 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | fdf8b9c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 0700456 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 1bbfe08 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 814116f - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e60efcf - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9d01523 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a46f200 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 1e78fbf - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 387d9eb - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 245a920 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f77e656 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 1f644c6 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9955d35 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 76c3072 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4fffa66 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 0c80816 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8d2e62d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 1be7d1d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 46c0208 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 253d66f - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 1589350 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 247854b - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b032588 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e5f6689 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 43988e7 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b33fce1 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 968d62e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f9e7074 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f488fea - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 75f1a2d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f357f41 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 711c995 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 90610c8 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5041f08 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 6bc5561 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | d811436 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a85d70f - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 628fd01 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e7d8000 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 48f86b3 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4e7be54 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4e9179c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 49fcdb7 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5d6b3e5 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 998b86e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 1f7e676 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e6af7e6 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f6cedc2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 97eaf47 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 9eec698 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e4f0f4a - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 257f46b - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5c559f7 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b2278ee - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 5339f63 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | c437204 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4065fe2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e014c6f - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 47efee4 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4dc66a6 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 7d77cff - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 554cfce - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 4bc27ca - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | c1857ba - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | ddd5408 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f4dcb9c - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | f3bf996 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | b5c6bd9 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | cd3f1d6 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e98f65f - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | ca4592d - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | e8fb5c1 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | a46348a - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 32d69fc - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 412ecc2 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8ec0ecf - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 399367e - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | 8f4cb95 - WXL <1785969728@qq.com> : æµè¯å®æ |
| | | da407d5 - WXL <1785969728@qq.com> : ææ å®æ |
| | | ca2d35a - WXL <1785969728@qq.com> : ææ å®æ |
| | | d84cde7 - WXL <1785969728@qq.com> : ææ å®æ |
| | | 59953d5 - WXL <1785969728@qq.com> : ææ å®æ |
| | | cf9259c - WXL <1785969728@qq.com> : ææ å®æ |
| | | 7992520 - WXL <1785969728@qq.com> : ææ å®æ |
| | | 59272d9 - WXL <1785969728@qq.com> : ææ å®æ |
| | | ad70f14 - WXL <1785969728@qq.com> : ææ å®æ |
| | | 3b774a1 - WXL <1785969728@qq.com> : ææ å®æ |
| | | f93cb40 - WXL <1785969728@qq.com> : ææ å®æ |
| | | 2ef938e - WXL <1785969728@qq.com> : ææ å®æ |
| | | 0d74436 - WXL <1785969728@qq.com> : ææ å®æ |
| | | d94d00d - WXL <1785969728@qq.com> : é访é¢åºå®æ |
| | | 4e32f11 - WXL <1785969728@qq.com> : 宿 |
| | | 04332cb - WXL <1785969728@qq.com> : 宿 |
| | | dc3d15d - WXL <1785969728@qq.com> : é访é¢åºå®æ |
| | | c50a8b1 - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | 3b7c66d - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | 0b750c8 - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | 6b39414 - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | 0d95833 - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | 8399d18 - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | 32cb501 - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | 8a980bd - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | ea19bff - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | d28d837 - WXL <1785969728@qq.com> : é访ãå¤è¯å¤æ¥ã使£éç¥ãé®å·å表 |
| | | b509c45 - WXL <1785969728@qq.com> : é访ãå¤è¯å¤æ¥ã使£éç¥ãé®å·å表 |
| | | 58f5620 - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | ac84e78 - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | be170d2 - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | 40e3b74 - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | 42419e9 - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | 6d3e75d - WXL <1785969728@qq.com> : æäº¤ä¿¡æ¯ |
| | | f76f423 - WXL <1785969728@qq.com> : 11 |
| | | 2aecb22 - heimawl <1785969728@qq.com> : 11 |
| | | d29df60 - heimawl <1785969728@qq.com> : 11 |
| | | f719b59 - heimawl <1785969728@qq.com> : 11 |
| | | 351fc95 - heimawl <1785969728@qq.com> : 11 |
| | | 66223fb - heimawl <1785969728@qq.com> : 11 |
| | | 40df27a - heimawl <1785969728@qq.com> : 11 |
| | | c81b2f6 - heimawl <1785969728@qq.com> : 11 |
| | | 2d2377d - heimawl <1785969728@qq.com> : 宿ç»è®¡æ¨¡ååºæ¬æå»º |
| | | b77e396 - heimawl <1785969728@qq.com> : 11 |
| | | 54d166e - heimawl <1785969728@qq.com> : 11 |
| | | a879953 - heimawl <1785969728@qq.com> : 11 |
| | | 8cdcc9b - heimawl <1785969728@qq.com> : 11 |
| | | 958f682 - heimawl <1785969728@qq.com> : 夿³¨ä¿¡æ¯ |
| | | a91ca68 - heimawl <1785969728@qq.com> : æ´æ°ä¸»é¢ |
| | | eb29d75 - heimawl <1785969728@qq.com> : å®æè¯æ¯åºãææ åºã模æ¿åºã页é¢åå
¶åé¡µé¢æå»º |
| | | 363e9da - heimawl <1785969728@qq.com> : æ´æ¹ç¼è¾å¨æ ·å¼ |
| | | 12cf420 - heimawl <1785969728@qq.com> : é
置代ç ç¼è¾ä¾èµ |
| | | 39ad2d8 - heimawl <1785969728@qq.com> : 11 |
| | | 696e74d - heimawl <1785969728@qq.com> : 11 |
| | | 0db1337 - heimawl <1785969728@qq.com> : æºè½ä¸å¿é¡µæ´æ° |
| | | a1e3f22 - heimawl <1785969728@qq.com> : äºç»´ç é¢è§é¡µ |
| | | bd5fbcf - heimawl <1785969728@qq.com> : 11 |
| | | 55b71c3 - heimawl <1785969728@qq.com> : 宿é¨åæ£è
æ°æ®äº¤äºapiå°è£
ï¼å建aiç¥è¯åºç¸å
³è·¯ç±é¡µé¢ |
| | | d9a8691 - heimawl <1785969728@qq.com> : 宿æ ç¾ç®¡çæ¨¡åæ°æ®äº¤äº |
| | | 92301a6 - heimawl <1785969728@qq.com> : æµè¯æ¥å£ |
| | | f98059f - heimawl <1785969728@qq.com> : 宿é¢åºç®¡ç模åæå»º |
| | | 26ac0c2 - heimawl <1785969728@qq.com> : å°è£
apiæ¥å£ï¼å®£æç®¡ç模åæå»º |
| | | d9cbb5e - heimawl <1785969728@qq.com> : 宿æ ç¾ç®¡ç模åæå»º |
| | | 3ddea12 - heimawl <1785969728@qq.com> : è¡¥å
é®å·ç®¡çç¼è¾é¡µé¢å¸å± |
| | | b850b4c - heimawl <1785969728@qq.com> : 宿é¢åºç®¡ç页é¢è·¯ç±è®¾ç½®ï¼é®å·æ¥ç页é¢å¸å± |
| | | 8d7b4ba - heimawl <1785969728@qq.com> : 宿宣æãé®å·è·¯ç±è®¾ç½®ãé®å·æ¨¡å页é¢åå
¶æ·»å /ä¿®æ¹é¡µé¢é¨åå¸å±å¼å |
| | | cb0e31a - heimawl <1785969728@qq.com> : ä¼å页é¢ä¸»é¢ |
| | | 792c283 - heimawl <1785969728@qq.com> : 宿ä¸ä¼ æä»¶åæ¥éª¤é¡µé¢åæ ç¾ç®¡ç模å忥æå»º |
| | | 61cb6f1 - heimawl <1785969728@qq.com> : å®è£
echarts5.4.0ä¾èµï¼å®æ´æ£è
管ç主页é¢åå
¶ä¸ªäººä¿¡æ¯åéå±é¡µé¢åºç¡å¼å |
| | | 6e7acd5 - heimawl <1785969728@qq.com> : ç»ä»¶åºæ´çï¼ä¾èµå®è£
ãexcel导å
¥å¯¼å
¥æ¹æ³æ´ç |
| | | 4de052a - heimawl <1785969728@qq.com> : å´é¾åæ¯åå§æäº¤ |
| | | 8b50c04 - yxh <172933527@qq.com> : yxh |
| | | 66db2bb - yxh <172933527@qq.com> : yxh |
| | | 4fd8412 - yxh <172933527@qq.com> : yxh |
| | | a6f4edd - yxh <172933527@qq.com> : Merge branch 'master' of http://116.62.18.175:6699/r/~yxh/smartor-web |
| | | cfd89f9 - yxh <172933527@qq.com> : yxh |
| | | a742ab9 - qianxj <qianxj15@sina.com> : hide id |
| | | 58c7cea - yxh <172933527@qq.com> : yxh |
| | | 5bedda9 - yxh <172933527@qq.com> : yxh |
| | | acd7802 - yxh <172933527@qq.com> : Merge branch 'master' of http://116.62.18.175:6699/r/~yxh/smartor-web |
| | | af1f597 - yxh <172933527@qq.com> : yxh |
| | | 79f2ded - yxh <172933527@qq.com> : yxh |
| | | 7fac76a - qianxj <qianxj15@sina.com> : Merge branch 'master' of http://116.62.18.175:6699/r/~yxh/smartor-web |
| | | d49d271 - qianxj <qianxj15@sina.com> : update svytopic |
| | | 76bd95c - yxh <172933527@qq.com> : Merge branch 'master' of http://116.62.18.175:6699/r/~yxh/smartor-web |
| | | c57d049 - qianxj <qianxj15@sina.com> : update svytopic |
| | | 72c05d4 - qianxj <qianxj15@sina.com> : update svytopic |
| | | a8c0f41 - qianxj <qianxj15@sina.com> : update svytopic |
| | | 164feee - qianxj <qianxj15@sina.com> : update svytopic |
| | | 2e5dd70 - qianxj <qianxj15@sina.com> : update topic |
| | | eb692fd - qianxj <qianxj15@sina.com> : update topic |
| | | d274e9d - qianxj <qianxj15@sina.com> : qianxj |
| | | a9ade10 - qianxj <qianxj15@sina.com> : update |
| | | 2b1c001 - yxh <172933527@qq.com> : yxh |
| | | 1bd342d - qianxj <qianxj15@sina.com> : update1 |
| | | 26b67ee - qianxj <qianxj15@sina.com> : update patarchive |
| | | 3db1d85 - qianxj <qianxj15@sina.com> : update |
| | | 110790e - qianxj <qianxj15@sina.com> : update patarchive |
| | | 57b6bce - qianxj <qianxj15@sina.com> : update face |
| | | 93cff80 - yxh <172933527@qq.com> : yxh |
| | | aad1dc2 - yxh <172933527@qq.com> : yxh |
| | | 0a31e0b - yxh <172933527@qq.com> : yxh |
| | | 5ce577d - yxh <172933527@qq.com> : yxh |
| | | f65cbb4 - yxh <172933527@qq.com> : yxh |
| | | b83120c - yxh <172933527@qq.com> : yxh |
| | | 878850a - yxh <172933527@qq.com> : yxh |
| | | 877300e - qianxj <qianxj15@sina.com> : update step1 |
| | | 8b4c8fc - qianxj <qianxj15@sina.com> : update title |
| | | 621c4bb - yxh <172933527@qq.com> : ç¬¬ä¸æ¬¡ä¿®æ¹ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | [33m022e803[m[33m ([m[1;36mHEAD -> [m[1;32mlishui-Smartor[m[33m, [m[1;31morigin/lishui-Smartor[m[33m, [m[1;32mlishui-sf[m[33m)[m HEAD@{0}: rebase (finish): returning to refs/heads/lishui-Smartor |
| | | [33m022e803[m[33m ([m[1;36mHEAD -> [m[1;32mlishui-Smartor[m[33m, [m[1;31morigin/lishui-Smartor[m[33m, [m[1;32mlishui-sf[m[33m)[m HEAD@{1}: rebase (start): checkout HEAD~5 |
| | | [33m022e803[m[33m ([m[1;36mHEAD -> [m[1;32mlishui-Smartor[m[33m, [m[1;31morigin/lishui-Smartor[m[33m, [m[1;32mlishui-sf[m[33m)[m HEAD@{2}: reset: moving to origin/lishui-Smartor |
| | | [33ma65bf99[m HEAD@{3}: rebase (continue) (finish): returning to refs/heads/lishui-Smartor |
| | | [33ma65bf99[m HEAD@{4}: commit (amend): æµè¯å®æ |
| | | [33m95948fe[m HEAD@{5}: rebase (continue) (edit): æµè¯å®æ |
| | | [33m745b9af[m HEAD@{6}: commit (amend): æµè¯å®æ |
| | | [33m6f917a9[m HEAD@{7}: rebase (continue) (edit): æµè¯å®æ |
| | | [33m960960c[m HEAD@{8}: commit (amend): ä½ çæäº¤ä¿¡æ¯ |
| | | [33m488008e[m HEAD@{9}: rebase: fast-forward |
| | | [33m9a164d2[m HEAD@{10}: rebase (start): checkout HEAD~5 |
| | | [33m01e7b73[m HEAD@{11}: rebase (continue) (finish): returning to refs/heads/lishui-Smartor |
| | | [33m01e7b73[m HEAD@{12}: commit (amend): æµè¯å®æ |
| | | [33m748b8c4[m HEAD@{13}: rebase (continue) (edit): æµè¯å®æ |
| | | [33mad098d5[m HEAD@{14}: commit (amend): æµè¯å®æ |
| | | [33m8220a01[m HEAD@{15}: rebase: fast-forward |
| | | [33m488008e[m HEAD@{16}: rebase: fast-forward |
| | | [33m9a164d2[m HEAD@{17}: rebase: fast-forward |
| | | [33m9403890[m HEAD@{18}: rebase: fast-forward |
| | | [33m022e803[m[33m ([m[1;36mHEAD -> [m[1;32mlishui-Smartor[m[33m, [m[1;31morigin/lishui-Smartor[m[33m, [m[1;32mlishui-sf[m[33m)[m HEAD@{19}: rebase (start): checkout HEAD~5 |
| | | [33mb685449[m HEAD@{20}: rebase (abort): updating HEAD |
| | | [33mb685449[m HEAD@{21}: rebase (abort): updating HEAD |
| | | [33mb685449[m HEAD@{22}: commit: æµè¯å®æ |
| | | [33m8220a01[m HEAD@{23}: commit: æµè¯å®æ |
| | | [33m488008e[m HEAD@{24}: commit: ä½ çæäº¤ä¿¡æ¯ |
| | | [33m9a164d2[m HEAD@{25}: commit: ä½ çæäº¤ä¿¡æ¯ |
| | | [33m9403890[m HEAD@{26}: rebase (continue) (finish): returning to refs/heads/lishui-Smartor |
| | | [33m9403890[m HEAD@{27}: rebase (continue) (finish): refs/heads/lishui-Smartor onto 022e8035e5143328ba01d76a74ea5f86e5c994f0 |
| | | [33m9403890[m HEAD@{28}: commit: æµè¯å®æ |
| | | [33m022e803[m[33m ([m[1;36mHEAD -> [m[1;32mlishui-Smartor[m[33m, [m[1;31morigin/lishui-Smartor[m[33m, [m[1;32mlishui-sf[m[33m)[m HEAD@{29}: checkout: moving from lishui-sf to lishui-Smartor |
| | | [33m022e803[m[33m ([m[1;36mHEAD -> [m[1;32mlishui-Smartor[m[33m, [m[1;31morigin/lishui-Smartor[m[33m, [m[1;32mlishui-sf[m[33m)[m HEAD@{30}: checkout: moving from lishui-Smartor to lishui-sf |
| | | [33m022e803[m[33m ([m[1;36mHEAD -> [m[1;32mlishui-Smartor[m[33m, [m[1;31morigin/lishui-Smartor[m[33m, [m[1;32mlishui-sf[m[33m)[m HEAD@{31}: commit: æµè¯å®æ |
| | | [33m4898664[m HEAD@{32}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mb7f7f38[m[33m ([m[1;32mwuxi-smartor[m[33m)[m HEAD@{33}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m4898664[m HEAD@{34}: commit: æµè¯å®æ |
| | | [33m337fb92[m HEAD@{35}: commit: æµè¯å®æ |
| | | [33ma7a20b2[m HEAD@{36}: checkout: moving from HeNan-Smartor to lishui-Smartor |
| | | [33m56d56f3[m[33m ([m[1;32mHeNan-Smartor[m[33m)[m HEAD@{37}: checkout: moving from lishui-Smartor to HeNan-Smartor |
| | | [33ma7a20b2[m HEAD@{38}: commit: æµè¯å®æ |
| | | [33m6f1e7a6[m HEAD@{39}: commit: æµè¯å®æ |
| | | [33m5fba330[m HEAD@{40}: commit: æµè¯å®æ |
| | | [33m209b2f7[m HEAD@{41}: commit: æµè¯å®æ |
| | | [33m53f4f0a[m HEAD@{42}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mb7f7f38[m[33m ([m[1;32mwuxi-smartor[m[33m)[m HEAD@{43}: commit: æµè¯å®æ |
| | | [33me353f0e[m[33m ([m[1;31morigin/wuxi-smartor[m[33m)[m HEAD@{44}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m53f4f0a[m HEAD@{45}: commit: æµè¯å®æ |
| | | [33m2eff945[m HEAD@{46}: commit: æµè¯å®æ |
| | | [33mb6c854d[m HEAD@{47}: checkout: moving from HeNan-Smartor to lishui-Smartor |
| | | [33m56d56f3[m[33m ([m[1;32mHeNan-Smartor[m[33m)[m HEAD@{48}: commit: æµè¯å®æ |
| | | [33mb6c854d[m HEAD@{49}: checkout: moving from lishui-Smartor to HeNan-Smartor |
| | | [33mb6c854d[m HEAD@{50}: commit: æµè¯å®æ |
| | | [33mec2f429[m HEAD@{51}: commit: æµè¯å®æ |
| | | [33mc1f1ecb[m HEAD@{52}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33me353f0e[m[33m ([m[1;31morigin/wuxi-smartor[m[33m)[m HEAD@{53}: commit: æµè¯å®æ |
| | | [33me580006[m HEAD@{54}: commit: æµè¯å®æ |
| | | [33mffdeb04[m HEAD@{55}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mc1f1ecb[m HEAD@{56}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mffdeb04[m HEAD@{57}: commit: æµè¯å®æ |
| | | [33m55c665c[m HEAD@{58}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mc1f1ecb[m HEAD@{59}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m55c665c[m HEAD@{60}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mc1f1ecb[m HEAD@{61}: commit: æµè¯å®æ |
| | | [33m7449ee9[m HEAD@{62}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m55c665c[m HEAD@{63}: commit: æµè¯å®æ |
| | | [33mf93c1fb[m HEAD@{64}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m7449ee9[m HEAD@{65}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mf93c1fb[m HEAD@{66}: commit: æµè¯å®æ |
| | | [33mb3b10f3[m HEAD@{67}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m7449ee9[m HEAD@{68}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mb3b10f3[m HEAD@{69}: commit: æµè¯å®æ |
| | | [33m30e7ca1[m HEAD@{70}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m7449ee9[m HEAD@{71}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m30e7ca1[m HEAD@{72}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m7449ee9[m HEAD@{73}: commit: æµè¯å®æ |
| | | [33m9ed874d[m HEAD@{74}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m30e7ca1[m HEAD@{75}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m9ed874d[m HEAD@{76}: checkout: moving from lishui-Smartor to lishui-Smartor |
| | | [33m9ed874d[m HEAD@{77}: commit: æµè¯å®æ |
| | | [33m6253746[m HEAD@{78}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m30e7ca1[m HEAD@{79}: commit: æµè¯å®æ |
| | | [33m8b120ce[m HEAD@{80}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m6253746[m HEAD@{81}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m8b120ce[m HEAD@{82}: commit: æµè¯å®æ |
| | | [33md846a58[m HEAD@{83}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m6253746[m HEAD@{84}: commit: æµè¯å®æ |
| | | [33m5fb8598[m HEAD@{85}: checkout: moving from master to lishui-Smartor |
| | | [33mf08b133[m[33m ([m[1;31morigin/master[m[33m, [m[1;31morigin/HEAD[m[33m, [m[1;32mmaster[m[33m)[m HEAD@{86}: checkout: moving from lishui-Smartor to master |
| | | [33m5fb8598[m HEAD@{87}: checkout: moving from master to lishui-Smartor |
| | | [33mf08b133[m[33m ([m[1;31morigin/master[m[33m, [m[1;31morigin/HEAD[m[33m, [m[1;32mmaster[m[33m)[m HEAD@{88}: commit: æµè¯å®æ |
| | | [33m7c5b7bd[m HEAD@{89}: commit: æµè¯å®æ |
| | | [33ma52f35a[m HEAD@{90}: checkout: moving from lishui-Smartor to master |
| | | [33m5fb8598[m HEAD@{91}: commit: æµè¯å®æ |
| | | [33maa06424[m HEAD@{92}: checkout: moving from master to lishui-Smartor |
| | | [33ma52f35a[m HEAD@{93}: checkout: moving from lishui-Smartor to master |
| | | [33maa06424[m HEAD@{94}: checkout: moving from master to lishui-Smartor |
| | | [33ma52f35a[m HEAD@{95}: checkout: moving from lishui-Smartor to master |
| | | [33maa06424[m HEAD@{96}: commit: æµè¯å®æ |
| | | [33m5733abb[m HEAD@{97}: checkout: moving from master to lishui-Smartor |
| | | [33ma52f35a[m HEAD@{98}: commit: æµè¯å®æ |
| | | [33m246ad67[m HEAD@{99}: checkout: moving from lishui-Smartor to master |
| | | [33m5733abb[m HEAD@{100}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33md846a58[m HEAD@{101}: commit: æµè¯å®æ |
| | | [33mba57b51[m HEAD@{102}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m5733abb[m HEAD@{103}: commit: æµè¯å®æ |
| | | [33m9668152[m HEAD@{104}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mba57b51[m HEAD@{105}: commit: æµè¯å®æ |
| | | [33mfe70ca5[m HEAD@{106}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m9668152[m HEAD@{107}: commit: æµè¯å®æ |
| | | [33mf06ac34[m HEAD@{108}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mfe70ca5[m HEAD@{109}: commit: æµè¯å®æ |
| | | [33m510b433[m HEAD@{110}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mf06ac34[m HEAD@{111}: commit: æµè¯å®æ |
| | | [33m20cd2de[m HEAD@{112}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m510b433[m HEAD@{113}: commit: æµè¯å®æ |
| | | [33me946f91[m HEAD@{114}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m20cd2de[m HEAD@{115}: commit: æµè¯å®æ |
| | | [33mfe379fd[m HEAD@{116}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33me946f91[m HEAD@{117}: commit: æµè¯å®æ |
| | | [33m952ce53[m HEAD@{118}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mfe379fd[m HEAD@{119}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m952ce53[m HEAD@{120}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mfe379fd[m HEAD@{121}: commit: æµè¯å®æ |
| | | [33m9cc3dcf[m HEAD@{122}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m952ce53[m HEAD@{123}: commit: æµè¯å®æ |
| | | [33md9004dd[m HEAD@{124}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m9cc3dcf[m HEAD@{125}: commit: æµè¯å®æ |
| | | [33m3ae495d[m HEAD@{126}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33md9004dd[m HEAD@{127}: commit: æµè¯å®æ |
| | | [33ma90f11d[m HEAD@{128}: commit: æµè¯å®æ |
| | | [33m125529d[m HEAD@{129}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m3ae495d[m HEAD@{130}: commit: æµè¯å®æ |
| | | [33mdafbb90[m HEAD@{131}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m125529d[m HEAD@{132}: commit: æµè¯å®æ |
| | | [33mce16687[m HEAD@{133}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mdafbb90[m HEAD@{134}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mce16687[m HEAD@{135}: commit: æµè¯å®æ |
| | | [33m039c34d[m HEAD@{136}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mdafbb90[m HEAD@{137}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m039c34d[m HEAD@{138}: commit: æµè¯å®æ |
| | | [33m51102f4[m HEAD@{139}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mdafbb90[m HEAD@{140}: commit: æµè¯å®æ |
| | | [33m665ac63[m HEAD@{141}: commit: æµè¯å®æ |
| | | [33m9a5dd25[m HEAD@{142}: commit: æµè¯å®æ |
| | | [33m880e036[m HEAD@{143}: commit: æµè¯å®æ |
| | | [33me10381f[m HEAD@{144}: commit: æµè¯å®æ |
| | | [33mc7c591d[m HEAD@{145}: commit: æµè¯å®æ |
| | | [33maf3ff15[m HEAD@{146}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m51102f4[m HEAD@{147}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33maf3ff15[m HEAD@{148}: commit: æµè¯å®æ |
| | | [33m36d1334[m HEAD@{149}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m51102f4[m HEAD@{150}: commit: æµè¯å®æ |
| | | [33md4744cf[m HEAD@{151}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m36d1334[m HEAD@{152}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33md4744cf[m HEAD@{153}: commit: æµè¯å®æ |
| | | [33me750691[m HEAD@{154}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m36d1334[m HEAD@{155}: commit: æµè¯å®æ |
| | | [33ma22820c[m HEAD@{156}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33me750691[m HEAD@{157}: commit: æµè¯å®æ |
| | | [33mef60bc9[m HEAD@{158}: commit: æµè¯å®æ |
| | | [33mf37b479[m HEAD@{159}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33ma22820c[m HEAD@{160}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mf37b479[m HEAD@{161}: commit: æµè¯å®æ |
| | | [33m547be67[m HEAD@{162}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33ma22820c[m HEAD@{163}: commit: æµè¯å®æ |
| | | [33mf3f7256[m HEAD@{164}: checkout: moving from master to lishui-Smartor |
| | | [33m246ad67[m HEAD@{165}: checkout: moving from lishui-Smartor to master |
| | | [33mf3f7256[m HEAD@{166}: commit: æµè¯å®æ |
| | | [33m84e20d0[m HEAD@{167}: checkout: moving from master to lishui-Smartor |
| | | [33m246ad67[m HEAD@{168}: commit: æµè¯å®æ |
| | | [33mc97bd0d[m HEAD@{169}: commit: æµè¯å®æ |
| | | [33mbdb26dc[m HEAD@{170}: checkout: moving from lishui-Smartor to master |
| | | [33m84e20d0[m HEAD@{171}: checkout: moving from master to lishui-Smartor |
| | | [33mbdb26dc[m HEAD@{172}: commit: æµè¯å®æ |
| | | [33m3b6c56e[m HEAD@{173}: checkout: moving from lishui-Smartor to master |
| | | [33m84e20d0[m HEAD@{174}: commit: æµè¯å®æ |
| | | [33m572a624[m HEAD@{175}: checkout: moving from master to lishui-Smartor |
| | | [33m3b6c56e[m HEAD@{176}: commit: æµè¯å®æ |
| | | [33m0d18860[m HEAD@{177}: checkout: moving from lishui-Smartor to master |
| | | [33m572a624[m HEAD@{178}: commit: æµè¯å®æ |
| | | [33ma5bc95e[m HEAD@{179}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m547be67[m HEAD@{180}: commit: æµè¯å®æ |
| | | [33mc4fb353[m HEAD@{181}: commit: æµè¯å®æ |
| | | [33ma398c62[m HEAD@{182}: checkout: moving from master to wuxi-smartor |
| | | [33m0d18860[m HEAD@{183}: commit: æµè¯å®æ |
| | | [33md5806f3[m HEAD@{184}: commit (merge): æµè¯å®æ |
| | | [33m783b99e[m HEAD@{185}: commit: æµè¯å®æ |
| | | [33m77a8ca0[m HEAD@{186}: checkout: moving from wuxi-smartor to master |
| | | [33ma398c62[m HEAD@{187}: commit: æµè¯å®æ |
| | | [33m98b9fdc[m HEAD@{188}: commit: æµè¯å®æ |
| | | [33m9dd3964[m HEAD@{189}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33ma5bc95e[m HEAD@{190}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m9dd3964[m HEAD@{191}: commit: æµè¯å®æ |
| | | [33m4cf6b25[m HEAD@{192}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33ma5bc95e[m HEAD@{193}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m4cf6b25[m HEAD@{194}: commit: æµè¯å®æ |
| | | [33m3bab592[m HEAD@{195}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33ma5bc95e[m HEAD@{196}: commit: æµè¯å®æ |
| | | [33mbe764ba[m HEAD@{197}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m3bab592[m HEAD@{198}: commit: æµè¯å®æ |
| | | [33m23f920e[m HEAD@{199}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mbe764ba[m HEAD@{200}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m23f920e[m HEAD@{201}: commit: æµè¯å®æ |
| | | [33m03d20b4[m HEAD@{202}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mbe764ba[m HEAD@{203}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m03d20b4[m HEAD@{204}: commit: æµè¯å®æ |
| | | [33m31cbe57[m HEAD@{205}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mbe764ba[m HEAD@{206}: commit: æµè¯å®æ |
| | | [33me46bb66[m HEAD@{207}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m31cbe57[m HEAD@{208}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33me46bb66[m HEAD@{209}: commit: æµè¯å®æ |
| | | [33m8ed125f[m HEAD@{210}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m31cbe57[m HEAD@{211}: commit: æµè¯å®æ |
| | | [33m66b105c[m HEAD@{212}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m8ed125f[m HEAD@{213}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m66b105c[m HEAD@{214}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m8ed125f[m HEAD@{215}: commit: ç»è®¡å®æ |
| | | [33m37d2ba3[m HEAD@{216}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m66b105c[m HEAD@{217}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m37d2ba3[m HEAD@{218}: commit: æµè¯å®æ |
| | | [33m45f9797[m HEAD@{219}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m66b105c[m HEAD@{220}: commit: æµè¯å®æ |
| | | [33m88cd1b9[m HEAD@{221}: checkout: moving from master to wuxi-smartor |
| | | [33m77a8ca0[m HEAD@{222}: commit: æµè¯å®æ |
| | | [33mddba782[m HEAD@{223}: checkout: moving from lishui-Smartor to master |
| | | [33m45f9797[m HEAD@{224}: commit: æµè¯å®æ |
| | | [33m0e3739a[m HEAD@{225}: commit: æµè¯å®æ |
| | | [33m54489da[m HEAD@{226}: commit: æµè¯å®æ |
| | | [33m303d443[m HEAD@{227}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m88cd1b9[m HEAD@{228}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m303d443[m HEAD@{229}: commit: æµè¯å®æ |
| | | [33m5a8e93d[m HEAD@{230}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m88cd1b9[m HEAD@{231}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m5a8e93d[m HEAD@{232}: commit: æµè¯å®æ |
| | | [33m4413b46[m HEAD@{233}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m88cd1b9[m HEAD@{234}: commit: æµè¯å®æ |
| | | [33m78fc1cf[m HEAD@{235}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m4413b46[m HEAD@{236}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m78fc1cf[m HEAD@{237}: commit: æµè¯å®æ |
| | | [33m901206c[m HEAD@{238}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m4413b46[m HEAD@{239}: commit: æµè¯å®æ |
| | | [33m0529f31[m HEAD@{240}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m901206c[m HEAD@{241}: commit: æµè¯å®æ |
| | | [33mf710fa7[m HEAD@{242}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m0529f31[m HEAD@{243}: commit: æµè¯å®æ |
| | | [33m08c27c1[m HEAD@{244}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mf710fa7[m HEAD@{245}: commit: æµè¯å®æ |
| | | [33m33c6294[m HEAD@{246}: commit: æµè¯å®æ |
| | | [33m55ee279[m HEAD@{247}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m08c27c1[m HEAD@{248}: commit: æµè¯å®æ |
| | | [33m6d7cd13[m HEAD@{249}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m55ee279[m HEAD@{250}: commit: æµè¯å®æ |
| | | [33m136b920[m HEAD@{251}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m6d7cd13[m HEAD@{252}: commit: æµè¯å®æ |
| | | [33m8e71817[m HEAD@{253}: commit: æµè¯å®æ |
| | | [33mb7092c2[m HEAD@{254}: commit: æµè¯å®æ |
| | | [33mbc241c4[m HEAD@{255}: checkout: moving from master to lishui-Smartor |
| | | [33mddba782[m HEAD@{256}: checkout: moving from lishui-Smartor to master |
| | | [33mbc241c4[m HEAD@{257}: commit: æµè¯å®æ |
| | | [33m5e17454[m HEAD@{258}: checkout: moving from master to lishui-Smartor |
| | | [33mddba782[m HEAD@{259}: checkout: moving from lishui-Smartor to master |
| | | [33m5e17454[m HEAD@{260}: checkout: moving from master to lishui-Smartor |
| | | [33mddba782[m HEAD@{261}: commit: æµè¯å®æ |
| | | [33m552e2c4[m HEAD@{262}: checkout: moving from lishui-Smartor to master |
| | | [33m5e17454[m HEAD@{263}: commit: æµè¯å®æ |
| | | [33m186b271[m HEAD@{264}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m136b920[m HEAD@{265}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m186b271[m HEAD@{266}: commit: æµè¯å®æ |
| | | [33m6535680[m HEAD@{267}: commit: æµè¯å®æ |
| | | [33m6be4939[m HEAD@{268}: commit: æµè¯å®æ |
| | | [33m400d13d[m HEAD@{269}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m136b920[m HEAD@{270}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m400d13d[m HEAD@{271}: commit: æµè¯å®æ |
| | | [33m3877190[m HEAD@{272}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m136b920[m HEAD@{273}: commit: æµè¯å®æ |
| | | [33m55c064e[m HEAD@{274}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m3877190[m HEAD@{275}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m55c064e[m HEAD@{276}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m3877190[m HEAD@{277}: commit: æµè¯å®æ |
| | | [33m78f514b[m HEAD@{278}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m55c064e[m HEAD@{279}: commit: æµè¯å®æ |
| | | [33m2b67e58[m HEAD@{280}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m78f514b[m HEAD@{281}: commit: æµè¯å®æ |
| | | [33mfecb2f5[m HEAD@{282}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m2b67e58[m HEAD@{283}: commit: æµè¯å®æ |
| | | [33m91dc8cc[m HEAD@{284}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mfecb2f5[m HEAD@{285}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m91dc8cc[m HEAD@{286}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mfecb2f5[m HEAD@{287}: commit: æµè¯å®æ |
| | | [33m4395f0d[m HEAD@{288}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m91dc8cc[m HEAD@{289}: commit: æµè¯å®æ |
| | | [33m6a1bafa[m HEAD@{290}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m4395f0d[m HEAD@{291}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m6a1bafa[m HEAD@{292}: commit: æµè¯å®æ |
| | | [33md74a76f[m HEAD@{293}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m4395f0d[m HEAD@{294}: commit: æµè¯å®æ |
| | | [33m327d234[m HEAD@{295}: commit: æµè¯å®æ |
| | | [33m56b8443[m HEAD@{296}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33md74a76f[m HEAD@{297}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m56b8443[m HEAD@{298}: commit: æµè¯å®æ |
| | | [33m8d0f7fc[m HEAD@{299}: commit: æµè¯å®æ |
| | | [33m38c9042[m HEAD@{300}: commit: æµè¯å®æ |
| | | [33m7d47700[m HEAD@{301}: commit: æµè¯å®æ |
| | | [33m273e2fa[m HEAD@{302}: commit: æµè¯å®æ |
| | | [33m401c835[m HEAD@{303}: commit: æµè¯å®æ |
| | | [33m60e5b16[m HEAD@{304}: commit: æµè¯å®æ |
| | | [33m6e54a66[m HEAD@{305}: commit: æµè¯å®æ |
| | | [33mee8f1a0[m HEAD@{306}: commit: æµè¯å®æ |
| | | [33m5f3691d[m HEAD@{307}: commit: æµè¯å®æ |
| | | [33m4b60348[m HEAD@{308}: commit: æµè¯å®æ |
| | | [33m418e3a7[m HEAD@{309}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33md74a76f[m HEAD@{310}: commit: æµè¯å®æ |
| | | [33ma022656[m HEAD@{311}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m418e3a7[m HEAD@{312}: commit: æµè¯å®æ |
| | | [33m4c9eab7[m HEAD@{313}: commit: æµè¯å®æ |
| | | [33m15e42d9[m HEAD@{314}: checkout: moving from master to lishui-Smartor |
| | | [33m552e2c4[m HEAD@{315}: commit: æµè¯å®æ |
| | | [33m823bd7c[m HEAD@{316}: checkout: moving from lishui-Smartor to master |
| | | [33m15e42d9[m HEAD@{317}: commit: æµè¯å®æ |
| | | [33m9f5b4e2[m HEAD@{318}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33ma022656[m HEAD@{319}: commit: æµè¯å®æ |
| | | [33m9259056[m HEAD@{320}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m9f5b4e2[m HEAD@{321}: commit: æµè¯å®æ |
| | | [33m99a916e[m HEAD@{322}: commit: æµè¯å®æ |
| | | [33mabde816[m HEAD@{323}: commit: æµè¯å®æ |
| | | [33m81ffbda[m HEAD@{324}: checkout: moving from master to lishui-Smartor |
| | | [33m823bd7c[m HEAD@{325}: commit: æµè¯å®æ |
| | | [33m84f0f55[m HEAD@{326}: checkout: moving from lishui-Smartor to master |
| | | [33m81ffbda[m HEAD@{327}: checkout: moving from master to lishui-Smartor |
| | | [33m84f0f55[m HEAD@{328}: checkout: moving from lishui-Smartor to master |
| | | [33m81ffbda[m HEAD@{329}: commit: æµè¯å®æ |
| | | [33m935e93f[m HEAD@{330}: checkout: moving from master to lishui-Smartor |
| | | [33m84f0f55[m HEAD@{331}: checkout: moving from lishui-Smartor to master |
| | | [33m935e93f[m HEAD@{332}: commit: æµè¯å®æ |
| | | [33mb73b5dd[m HEAD@{333}: checkout: moving from master to lishui-Smartor |
| | | [33m84f0f55[m HEAD@{334}: checkout: moving from lishui-Smartor to master |
| | | [33mb73b5dd[m HEAD@{335}: commit: æµè¯å®æ |
| | | [33m2daa54c[m HEAD@{336}: checkout: moving from master to lishui-Smartor |
| | | [33m84f0f55[m HEAD@{337}: checkout: moving from lishui-Smartor to master |
| | | [33m2daa54c[m HEAD@{338}: commit: æµè¯å®æ |
| | | [33m073edc9[m HEAD@{339}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m9259056[m HEAD@{340}: checkout: moving from master to wuxi-smartor |
| | | [33m84f0f55[m HEAD@{341}: commit: æµè¯å®æ |
| | | [33md7b9ffb[m HEAD@{342}: checkout: moving from lishui-Smartor to master |
| | | [33m073edc9[m HEAD@{343}: commit: æµè¯å®æ |
| | | [33m838d8b5[m HEAD@{344}: checkout: moving from master to lishui-Smartor |
| | | [33md7b9ffb[m HEAD@{345}: checkout: moving from lishui-Smartor to master |
| | | [33m838d8b5[m HEAD@{346}: checkout: moving from master to lishui-Smartor |
| | | [33md7b9ffb[m HEAD@{347}: commit: æµè¯å®æ |
| | | [33mb8085c1[m HEAD@{348}: checkout: moving from wuxi-smartor to master |
| | | [33m9259056[m HEAD@{349}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m838d8b5[m HEAD@{350}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m9259056[m HEAD@{351}: commit: æµè¯å®æ |
| | | [33md9a95a7[m HEAD@{352}: checkout: moving from master to wuxi-smartor |
| | | [33mb8085c1[m HEAD@{353}: checkout: moving from lishui-Smartor to master |
| | | [33m838d8b5[m HEAD@{354}: checkout: moving from master to lishui-Smartor |
| | | [33mb8085c1[m HEAD@{355}: commit: æµè¯å®æ |
| | | [33mbaeeb80[m HEAD@{356}: checkout: moving from lishui-Smartor to master |
| | | [33m838d8b5[m HEAD@{357}: commit: æµè¯å®æ |
| | | [33m3fd01fa[m HEAD@{358}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33md9a95a7[m HEAD@{359}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m3fd01fa[m HEAD@{360}: commit: æµè¯å®æ |
| | | [33m88481a3[m HEAD@{361}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33md9a95a7[m HEAD@{362}: commit: æµè¯å®æ |
| | | [33mffb5cf7[m HEAD@{363}: checkout: moving from master to wuxi-smartor |
| | | [33mbaeeb80[m HEAD@{364}: commit: æµè¯å®æ |
| | | [33m5271bf2[m HEAD@{365}: checkout: moving from lishui-Smartor to master |
| | | [33m88481a3[m HEAD@{366}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mffb5cf7[m HEAD@{367}: commit: æµè¯å®æ |
| | | [33mf5c2015[m HEAD@{368}: checkout: moving from DeBug to wuxi-smartor |
| | | [33m6d3e75d[m[33m ([m[1;31morigin/DeBug[m[33m, [m[1;32mDeBug[m[33m)[m HEAD@{369}: checkout: moving from lishui-Smartor to DeBug |
| | | [33m88481a3[m HEAD@{370}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mf5c2015[m HEAD@{371}: checkout: moving from master to wuxi-smartor |
| | | [33m5271bf2[m HEAD@{372}: commit: æµè¯å®æ |
| | | [33m0516a6b[m HEAD@{373}: checkout: moving from lishui-Smartor to master |
| | | [33m88481a3[m HEAD@{374}: commit: æµè¯å®æ |
| | | [33m12eb16c[m HEAD@{375}: commit: æµè¯å®æ |
| | | [33m083ae82[m HEAD@{376}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mf5c2015[m HEAD@{377}: commit: æµè¯å®æ |
| | | [33m28f8a2e[m HEAD@{378}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m083ae82[m HEAD@{379}: commit: æµè¯å®æ |
| | | [33m36b7179[m HEAD@{380}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m28f8a2e[m HEAD@{381}: commit: æµè¯å®æ |
| | | [33m5e20020[m HEAD@{382}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m36b7179[m HEAD@{383}: checkout: moving from master to lishui-Smartor |
| | | [33m0516a6b[m HEAD@{384}: checkout: moving from wuxi-smartor to master |
| | | [33m5e20020[m HEAD@{385}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m36b7179[m HEAD@{386}: commit: æµè¯å®æ |
| | | [33m03a3eff[m HEAD@{387}: checkout: moving from master to lishui-Smartor |
| | | [33m0516a6b[m HEAD@{388}: commit: æµè¯å®æ |
| | | [33m32674b0[m HEAD@{389}: checkout: moving from lishui-Smartor to master |
| | | [33m03a3eff[m HEAD@{390}: checkout: moving from master to lishui-Smartor |
| | | [33m32674b0[m HEAD@{391}: checkout: moving from lishui-Smartor to master |
| | | [33m03a3eff[m HEAD@{392}: commit: æµè¯å®æ |
| | | [33m2b1cfea[m HEAD@{393}: commit: æµè¯å®æ |
| | | [33mff99a9b[m HEAD@{394}: checkout: moving from master to lishui-Smartor |
| | | [33m32674b0[m HEAD@{395}: checkout: moving from lishui-Smartor to master |
| | | [33mff99a9b[m HEAD@{396}: commit: æµè¯å®æ |
| | | [33mcf2c2a9[m HEAD@{397}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m5e20020[m HEAD@{398}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mcf2c2a9[m HEAD@{399}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m5e20020[m HEAD@{400}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mcf2c2a9[m HEAD@{401}: commit: æµè¯å®æ |
| | | [33ma77752e[m HEAD@{402}: commit: æµè¯å®æ |
| | | [33m3bb35f1[m HEAD@{403}: commit: æµè¯å®æ |
| | | [33mb0dd238[m HEAD@{404}: commit: æµè¯å®æ |
| | | [33m57a7537[m HEAD@{405}: commit: æµè¯å®æ |
| | | [33m83d8322[m HEAD@{406}: checkout: moving from master to lishui-Smartor |
| | | [33m32674b0[m HEAD@{407}: commit: æµè¯å®æ |
| | | [33mf6bc6ed[m HEAD@{408}: checkout: moving from lishui-Smartor to master |
| | | [33m83d8322[m HEAD@{409}: commit: æµè¯å®æ |
| | | [33mee1d4af[m HEAD@{410}: checkout: moving from master to lishui-Smartor |
| | | [33mf6bc6ed[m HEAD@{411}: checkout: moving from lishui-Smartor to master |
| | | [33mee1d4af[m HEAD@{412}: commit: æµè¯å®æ |
| | | [33mbcf3cae[m HEAD@{413}: commit: æµè¯å®æ |
| | | [33md5f7da9[m HEAD@{414}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m5e20020[m HEAD@{415}: commit: æµè¯å®æ |
| | | [33mee31f47[m HEAD@{416}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33md5f7da9[m HEAD@{417}: commit (merge): æµè¯å®æ |
| | | [33m5acc6d2[m HEAD@{418}: commit: æµè¯å®æ |
| | | [33m355bbb7[m HEAD@{419}: commit: æµè¯å®æ |
| | | [33ma3d2f84[m HEAD@{420}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mee31f47[m HEAD@{421}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33ma3d2f84[m HEAD@{422}: commit: æµè¯å®æ |
| | | [33mbc99b53[m HEAD@{423}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mee31f47[m HEAD@{424}: commit: æµè¯å®æ |
| | | [33m84b1d28[m HEAD@{425}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33mbc99b53[m HEAD@{426}: commit: æµè¯å®æ |
| | | [33m17edb0e[m HEAD@{427}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m84b1d28[m HEAD@{428}: commit: æµè¯å®æ |
| | | [33mbfce8d1[m HEAD@{429}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m17edb0e[m HEAD@{430}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33mbfce8d1[m HEAD@{431}: commit: æµè¯å®æ |
| | | [33m44d24a2[m HEAD@{432}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m17edb0e[m HEAD@{433}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m44d24a2[m HEAD@{434}: commit: æµè¯å®æ |
| | | [33m5f4c59e[m HEAD@{435}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m17edb0e[m HEAD@{436}: commit: æµè¯å®æ |
| | | [33m891f159[m HEAD@{437}: commit: æµè¯å®æ |
| | | [33m50873f4[m HEAD@{438}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m5f4c59e[m HEAD@{439}: commit: æµè¯å®æ |
| | | [33m4f3692a[m HEAD@{440}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m50873f4[m HEAD@{441}: checkout: moving from wuxi-smartor to lishui-Smartor |
| | | [33m4f3692a[m HEAD@{442}: commit: æµè¯å®æ |
| | | [33m321891f[m HEAD@{443}: commit: æµè¯å®æ |
| | | [33m3b8d057[m HEAD@{444}: commit: æµè¯å®æ |
| | | [33mf6bc6ed[m HEAD@{445}: merge master: Fast-forward |
| | | [33m9507541[m HEAD@{446}: checkout: moving from lishui-Smartor to wuxi-smartor |
| | | [33m50873f4[m HEAD@{447}: commit: æµè¯å®æ |
| | | [33mec64a69[m HEAD@{448}: commit: æµè¯å®æ |
| | | [33m8aa0592[m HEAD@{449}: checkout: moving from master to lishui-Smartor |
| | | [33mf6bc6ed[m HEAD@{450}: checkout: moving from lishui-Smartor to master |
| | | [33m8aa0592[m HEAD@{451}: checkout: moving from master to lishui-Smartor |
| | | [33mf6bc6ed[m HEAD@{452}: checkout: moving from lishui-Smartor to master |
| | | [33m8aa0592[m HEAD@{453}: checkout: moving from master to lishui-Smartor |
| | | [33mf6bc6ed[m HEAD@{454}: checkout: moving from lishui-Smartor to master |
| | | [33m8aa0592[m HEAD@{455}: checkout: moving from master to lishui-Smartor |
| | | [33mf6bc6ed[m HEAD@{456}: checkout: moving from lishui-Smartor to master |
| | | [33m8aa0592[m HEAD@{457}: commit: æµè¯å®æ |
| | | [33ma5faf6e[m HEAD@{458}: commit (merge): æµè¯å®æ |
| | | [33m46784b2[m HEAD@{459}: checkout: moving from master to lishui-Smartor |
| | | [33mf6bc6ed[m HEAD@{460}: commit: æµè¯å®æ |
| | | [33mf4e079f[m HEAD@{461}: checkout: moving from lishui-Smartor to master |
| | | [33m46784b2[m HEAD@{462}: commit: æµè¯å®æ |
| | | [33me48362d[m HEAD@{463}: commit (merge): æµè¯å®æ |
| | | [33m4cd2bfd[m HEAD@{464}: checkout: moving from master to lishui-Smartor |
| | | [33mf4e079f[m HEAD@{465}: commit: æµè¯å®æ |
| | | [33mdea82b7[m HEAD@{466}: commit: æµè¯å®æ |
| | | [33m0c2a0bd[m HEAD@{467}: checkout: moving from lishui-Smartor to master |
| | | [33m4cd2bfd[m HEAD@{468}: commit: æµè¯å®æ |
| | | [33m7cfedaa[m HEAD@{469}: commit (merge): æµè¯å®æ |
| | | [33m98589bb[m HEAD@{470}: checkout: moving from master to lishui-Smartor |
| | | [33m0c2a0bd[m HEAD@{471}: commit: æµè¯å®æ |
| | | [33m48e96f3[m HEAD@{472}: checkout: moving from lishui-Smartor to master |
| | | [33m98589bb[m HEAD@{473}: checkout: moving from master to lishui-Smartor |
| | | [33m48e96f3[m HEAD@{474}: commit: æµè¯å®æ |
| | | [33mfc63b5b[m HEAD@{475}: checkout: moving from lishui-Smartor to master |
| | | [33m98589bb[m HEAD@{476}: commit: æµè¯å®æ |
| | | [33m981fbdd[m HEAD@{477}: pull --tags origin lishui-Smartor: Fast-forward |
| | | [33m8c79267[m HEAD@{478}: reset: moving to 8c79267eb478e2986c5293d3fb48f1c3da18c544 |
| | | [33m981fbdd[m HEAD@{479}: checkout: moving from linshi-smartor to lishui-Smartor |
| | | [33m981fbdd[m HEAD@{480}: checkout: moving from linshi-smartor to linshi-smartor |
| | | [33m981fbdd[m HEAD@{481}: checkout: moving from lishui-Smartor to linshi-smartor |
| | | [33m981fbdd[m HEAD@{482}: checkout: moving from master to lishui-Smartor |
| | | [33mfc63b5b[m HEAD@{483}: commit: æµè¯å®æ |
| | | [33maca3443[m HEAD@{484}: checkout: moving from lishui-Smartor to master |
| | | [33m981fbdd[m HEAD@{485}: commit: æµè¯å®æ |
| | | [33m6de02b3[m HEAD@{486}: checkout: moving from master to lishui-Smartor |
| | | [33maca3443[m HEAD@{487}: checkout: moving from lishui-Smartor to master |
| | | [33m6de02b3[m HEAD@{488}: checkout: moving from master to lishui-Smartor |
| | | [33maca3443[m HEAD@{489}: checkout: moving from lishui-Smartor to master |
| | | [33m6de02b3[m HEAD@{490}: commit: æµè¯å®æ |
| | | [33m9896138[m HEAD@{491}: commit (merge): æµè¯å®æ |
| | | [33m4a7648d[m HEAD@{492}: checkout: moving from master to lishui-Smartor |
| | | [33maca3443[m HEAD@{493}: commit: æµè¯å®æ |
| | | [33m1a090a4[m HEAD@{494}: commit: æµè¯å®æ |
| | | [33m8c79267[m HEAD@{495}: commit: æµè¯å®æ |
| | | [33m080186b[m HEAD@{496}: checkout: moving from lishui-Smartor to master |
| | | [33m4a7648d[m HEAD@{497}: commit: æµè¯å®æ |
| | | [33m09a1bd5[m HEAD@{498}: commit: æµè¯å®æ |
| | | [33m4492ab0[m HEAD@{499}: commit: æµè¯å®æ |
| | | [33meef0168[m HEAD@{500}: commit (merge): æµè¯å®æ |
| | | [33m3dcfdb6[m HEAD@{501}: checkout: moving from master to lishui-Smartor |
| | | [33m080186b[m HEAD@{502}: commit: æµè¯å®æ |
| | | [33m0a4cc3c[m HEAD@{503}: checkout: moving from external to master |
| | | [33m3a7caf4[m[33m ([m[1;31morigin/external[m[33m, [m[1;32mexternal[m[33m)[m HEAD@{504}: checkout: moving from master to external |
| | | [33m0a4cc3c[m HEAD@{505}: checkout: moving from external to master |
| | | [33m3a7caf4[m[33m ([m[1;31morigin/external[m[33m, [m[1;32mexternal[m[33m)[m HEAD@{506}: commit: æµè¯å®æ |
| | | [33m5fcfaee[m HEAD@{507}: commit: æµè¯å®æ |
| | | [33mc8204d0[m HEAD@{508}: checkout: moving from master to external |
| | | [33m0a4cc3c[m HEAD@{509}: checkout: moving from external to master |
| | | [33mc8204d0[m HEAD@{510}: checkout: moving from master to external |
| | | [33m0a4cc3c[m HEAD@{511}: checkout: moving from external to master |
| | | [33mc8204d0[m HEAD@{512}: checkout: moving from external to external |
| | | [33mc8204d0[m HEAD@{513}: checkout: moving from master to external |
| | | [33m0a4cc3c[m HEAD@{514}: commit: æµè¯å®æ |
| | | [33m1cb1fbf[m HEAD@{515}: checkout: moving from external to master |
| | | [33mc8204d0[m HEAD@{516}: commit: æµè¯å®æ |
| | | [33m621935e[m HEAD@{517}: checkout: moving from master to external |
| | | [33m1cb1fbf[m HEAD@{518}: reset: moving to HEAD |
| | | [33m1cb1fbf[m HEAD@{519}: checkout: moving from external to master |
| | | [33m621935e[m HEAD@{520}: checkout: moving from master to external |
| | | [33m1cb1fbf[m HEAD@{521}: checkout: moving from external to master |
| | | [33m621935e[m HEAD@{522}: checkout: moving from 1cb1fbf80c955986385377b5f84e8915d1e655d6 to external |
| | | [33m1cb1fbf[m HEAD@{523}: checkout: moving from external to 1cb1fbf80c955986385377b5f84e8915d1e655d6 |
| | | [33m621935e[m HEAD@{524}: checkout: moving from wuxi-smartor to external |
| | | [33m9507541[m HEAD@{525}: checkout: moving from external to wuxi-smartor |
| | | [33m621935e[m HEAD@{526}: commit: æµè¯å®æ |
| | | [33mc7e1537[m HEAD@{527}: checkout: moving from wuxi-smartor to external |
| | | [33m9507541[m HEAD@{528}: checkout: moving from master to wuxi-smartor |
| | | [33m1cb1fbf[m HEAD@{529}: commit: æµè¯å®æ |
| | | [33m77fb64c[m HEAD@{530}: checkout: moving from lishui-Smartor to master |
| | | [33m3dcfdb6[m HEAD@{531}: commit: 丽水æäº¤ |
| | | [33m77fb64c[m HEAD@{532}: checkout: moving from master to lishui-Smartor |
| | | [33m77fb64c[m HEAD@{533}: checkout: moving from wuxi-smartor to master |
| | | [33m9507541[m HEAD@{534}: checkout: moving from wuxi-smartor to wuxi-smartor |
| | | [33m9507541[m HEAD@{535}: checkout: moving from master to wuxi-smartor |
| | | [33m77fb64c[m HEAD@{536}: commit: æ°åæäº¤ |
| | | [33m9507541[m HEAD@{537}: merge wuxi-smartor: Fast-forward |
| | | [33m07e07d6[m HEAD@{538}: checkout: moving from wuxi-smartor to master |
| | | [33m9507541[m HEAD@{539}: commit: æ é¡æäº¤ |
| | | [33m07e07d6[m HEAD@{540}: checkout: moving from master to wuxi-smartor |
| | | [33m07e07d6[m HEAD@{541}: commit: æ°åæäº¤ |
| | | [33mb26c48a[m HEAD@{542}: checkout: moving from external to master |
| | | [33mc7e1537[m HEAD@{543}: commit: å¤é¾ç¬ç« |
| | | [33mc87c46a[m HEAD@{544}: commit: å¤é¾ç¬ç« |
| | | [33m4fb7f36[m HEAD@{545}: checkout: moving from master to external |
| | | [33mb26c48a[m HEAD@{546}: commit: æµè¯å®æ |
| | | [33mc1139d1[m HEAD@{547}: checkout: moving from external to master |
| | | [33m4fb7f36[m HEAD@{548}: checkout: moving from master to external |
| | | [33mc1139d1[m HEAD@{549}: checkout: moving from external to master |
| | | [33m4fb7f36[m HEAD@{550}: commit: æµè¯å®æ |
| | | [33mc1139d1[m HEAD@{551}: checkout: moving from master to external |
| | | [33mc1139d1[m HEAD@{552}: commit: æµè¯å®æ |
| | | [33mb1d81d0[m HEAD@{553}: commit: æµè¯å®æ |
| | | [33mae117f0[m HEAD@{554}: commit: æµè¯å®æ |
| | | [33m5dc9d1b[m HEAD@{555}: commit: æµè¯å®æ |
| | | [33m9a1a82e[m HEAD@{556}: commit: æµè¯å®æ |
| | | [33m294e513[m HEAD@{557}: commit: æµè¯å®æ |
| | | [33m007d388[m HEAD@{558}: commit: æµè¯å®æ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | SSUUMMMMAARRYY OOFF LLEESSSS CCOOMMMMAANNDDSS |
| | | |
| | | Commands marked with * may be preceded by a number, _N. |
| | | Notes in parentheses indicate the behavior if _N is given. |
| | | A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K. |
| | | |
| | | h H Display this help. |
| | | q :q Q :Q ZZ Exit. |
| | | --------------------------------------------------------------------------- |
| | | |
| | | MMOOVVIINNGG |
| | | |
| | | e ^E j ^N CR * Forward one line (or _N lines). |
| | | y ^Y k ^K ^P * Backward one line (or _N lines). |
| | | f ^F ^V SPACE * Forward one window (or _N lines). |
| | | b ^B ESC-v * Backward one window (or _N lines). |
| | | z * Forward one window (and set window to _N). |
| | | w * Backward one window (and set window to _N). |
| | | ESC-SPACE * Forward one window, but don't stop at end-of-file. |
| | | d ^D * Forward one half-window (and set half-window to _N). |
| | | u ^U * Backward one half-window (and set half-window to _N). |
| | | ESC-) RightArrow * Right one half screen width (or _N positions). |
| | | ESC-( LeftArrow * Left one half screen width (or _N positions). |
| | | ESC-} ^RightArrow Right to last column displayed. |
| | | ESC-{ ^LeftArrow Left to first column. |
| | | F Forward forever; like "tail -f". |
| | | ESC-F Like F but stop when search pattern is found. |
| | | r ^R ^L Repaint screen. |
| | | R Repaint screen, discarding buffered input. |
| | | --------------------------------------------------- |
| | | Default "window" is the screen height. |
| | | Default "half-window" is half of the screen height. |
| | | --------------------------------------------------------------------------- |
| | | |
| | | SSEEAARRCCHHIINNGG |
| | | |
| | | /_p_a_t_t_e_r_n * Search forward for (_N-th) matching line. |
| | | ?_p_a_t_t_e_r_n * Search backward for (_N-th) matching line. |
| | | n * Repeat previous search (for _N-th occurrence). |
| | | N * Repeat previous search in reverse direction. |
| | | ESC-n * Repeat previous search, spanning files. |
| | | ESC-N * Repeat previous search, reverse dir. & spanning files. |
| | | ESC-u Undo (toggle) search highlighting. |
| | | ESC-U Clear search highlighting. |
| | | &_p_a_t_t_e_r_n * Display only matching lines. |
| | | --------------------------------------------------- |
| | | A search pattern may begin with one or more of: |
| | | ^N or ! Search for NON-matching lines. |
| | | ^E or * Search multiple files (pass thru END OF FILE). |
| | | ^F or @ Start search at FIRST file (for /) or last file (for ?). |
| | | ^K Highlight matches, but don't move (KEEP position). |
| | | ^R Don't use REGULAR EXPRESSIONS. |
| | | ^W WRAP search if no match found. |
| | | --------------------------------------------------------------------------- |
| | | |
| | | JJUUMMPPIINNGG |
| | | |
| | | g < ESC-< * Go to first line in file (or line _N). |
| | | G > ESC-> * Go to last line in file (or line _N). |
| | | p % * Go to beginning of file (or _N percent into file). |
| | | t * Go to the (_N-th) next tag. |
| | | T * Go to the (_N-th) previous tag. |
| | | { ( [ * Find close bracket } ) ]. |
| | | } ) ] * Find open bracket { ( [. |
| | | ESC-^F _<_c_1_> _<_c_2_> * Find close bracket _<_c_2_>. |
| | | ESC-^B _<_c_1_> _<_c_2_> * Find open bracket _<_c_1_>. |
| | | --------------------------------------------------- |
| | | Each "find close bracket" command goes forward to the close bracket |
| | | matching the (_N-th) open bracket in the top line. |
| | | Each "find open bracket" command goes backward to the open bracket |
| | | matching the (_N-th) close bracket in the bottom line. |
| | | |
| | | m_<_l_e_t_t_e_r_> Mark the current top line with <letter>. |
| | | M_<_l_e_t_t_e_r_> Mark the current bottom line with <letter>. |
| | | '_<_l_e_t_t_e_r_> Go to a previously marked position. |
| | | '' Go to the previous position. |
| | | ^X^X Same as '. |
| | | ESC-M_<_l_e_t_t_e_r_> Clear a mark. |
| | | --------------------------------------------------- |
| | | A mark is any upper-case or lower-case letter. |
| | | Certain marks are predefined: |
| | | ^ means beginning of the file |
| | | $ means end of the file |
| | | --------------------------------------------------------------------------- |
| | | |
| | | CCHHAANNGGIINNGG FFIILLEESS |
| | | |
| | | :e [_f_i_l_e] Examine a new file. |
| | | ^X^V Same as :e. |
| | | :n * Examine the (_N-th) next file from the command line. |
| | | :p * Examine the (_N-th) previous file from the command line. |
| | | :x * Examine the first (or _N-th) file from the command line. |
| | | :d Delete the current file from the command line list. |
| | | = ^G :f Print current file name. |
| | | --------------------------------------------------------------------------- |
| | | |
| | | MMIISSCCEELLLLAANNEEOOUUSS CCOOMMMMAANNDDSS |
| | | |
| | | -_<_f_l_a_g_> Toggle a command line option [see OPTIONS below]. |
| | | --_<_n_a_m_e_> Toggle a command line option, by name. |
| | | __<_f_l_a_g_> Display the setting of a command line option. |
| | | ___<_n_a_m_e_> Display the setting of an option, by name. |
| | | +_c_m_d Execute the less cmd each time a new file is examined. |
| | | |
| | | !_c_o_m_m_a_n_d Execute the shell command with $SHELL. |
| | | |XX_c_o_m_m_a_n_d Pipe file between current pos & mark XX to shell command. |
| | | s _f_i_l_e Save input to a file. |
| | | v Edit the current file with $VISUAL or $EDITOR. |
| | | V Print version number of "less". |
| | | --------------------------------------------------------------------------- |
| | | |
| | | OOPPTTIIOONNSS |
| | | |
| | | Most options may be changed either on the command line, |
| | | or from within less by using the - or -- command. |
| | | Options may be given in one of two forms: either a single |
| | | character preceded by a -, or a name preceded by --. |
| | | |
| | | -? ........ --help |
| | | Display help (from command line). |
| | | -a ........ --search-skip-screen |
| | | Search skips current screen. |
| | | -A ........ --SEARCH-SKIP-SCREEN |
| | | Search starts just after target line. |
| | | -b [_N] .... --buffers=[_N] |
| | | Number of buffers. |
| | | -B ........ --auto-buffers |
| | | Don't automatically allocate buffers for pipes. |
| | | -c ........ --clear-screen |
| | | Repaint by clearing rather than scrolling. |
| | | -d ........ --dumb |
| | | Dumb terminal. |
| | | -D xx_c_o_l_o_r . --color=xx_c_o_l_o_r |
| | | Set screen colors. |
| | | -e -E .... --quit-at-eof --QUIT-AT-EOF |
| | | Quit at end of file. |
| | | -f ........ --force |
| | | Force open non-regular files. |
| | | -F ........ --quit-if-one-screen |
| | | Quit if entire file fits on first screen. |
| | | -g ........ --hilite-search |
| | | Highlight only last match for searches. |
| | | -G ........ --HILITE-SEARCH |
| | | Don't highlight any matches for searches. |
| | | -h [_N] .... --max-back-scroll=[_N] |
| | | Backward scroll limit. |
| | | -i ........ --ignore-case |
| | | Ignore case in searches that do not contain uppercase. |
| | | -I ........ --IGNORE-CASE |
| | | Ignore case in all searches. |
| | | -j [_N] .... --jump-target=[_N] |
| | | Screen position of target lines. |
| | | -J ........ --status-column |
| | | Display a status column at left edge of screen. |
| | | -k [_f_i_l_e] . --lesskey-file=[_f_i_l_e] |
| | | Use a lesskey file. |
| | | -K ........ --quit-on-intr |
| | | Exit less in response to ctrl-C. |
| | | -L ........ --no-lessopen |
| | | Ignore the LESSOPEN environment variable. |
| | | -m -M .... --long-prompt --LONG-PROMPT |
| | | Set prompt style. |
| | | -n -N .... --line-numbers --LINE-NUMBERS |
| | | Don't use line numbers. |
| | | -o [_f_i_l_e] . --log-file=[_f_i_l_e] |
| | | Copy to log file (standard input only). |
| | | -O [_f_i_l_e] . --LOG-FILE=[_f_i_l_e] |
| | | Copy to log file (unconditionally overwrite). |
| | | -p [_p_a_t_t_e_r_n] --pattern=[_p_a_t_t_e_r_n] |
| | | Start at pattern (from command line). |
| | | -P [_p_r_o_m_p_t] --prompt=[_p_r_o_m_p_t] |
| | | Define new prompt. |
| | | -q -Q .... --quiet --QUIET --silent --SILENT |
| | | Quiet the terminal bell. |
| | | -r -R .... --raw-control-chars --RAW-CONTROL-CHARS |
| | | Output "raw" control characters. |
| | | -s ........ --squeeze-blank-lines |
| | | Squeeze multiple blank lines. |
| | | -S ........ --chop-long-lines |
| | | Chop (truncate) long lines rather than wrapping. |
| | | -t [_t_a_g] .. --tag=[_t_a_g] |
| | | Find a tag. |
| | | -T [_t_a_g_s_f_i_l_e] --tag-file=[_t_a_g_s_f_i_l_e] |
| | | Use an alternate tags file. |
| | | -u -U .... --underline-special --UNDERLINE-SPECIAL |
| | | Change handling of backspaces. |
| | | -V ........ --version |
| | | Display the version number of "less". |
| | | -w ........ --hilite-unread |
| | | Highlight first new line after forward-screen. |
| | | -W ........ --HILITE-UNREAD |
| | | Highlight first new line after any forward movement. |
| | | -x [_N[,...]] --tabs=[_N[,...]] |
| | | Set tab stops. |
| | | -X ........ --no-init |
| | | Don't use termcap init/deinit strings. |
| | | -y [_N] .... --max-forw-scroll=[_N] |
| | | Forward scroll limit. |
| | | -z [_N] .... --window=[_N] |
| | | Set size of window. |
| | | -" [_c[_c]] . --quotes=[_c[_c]] |
| | | Set shell quote characters. |
| | | -~ ........ --tilde |
| | | Don't display tildes after end of file. |
| | | -# [_N] .... --shift=[_N] |
| | | Set horizontal scroll amount (0 = one half screen width). |
| | | --file-size |
| | | Automatically determine the size of the input file. |
| | | --follow-name |
| | | The F command changes files if the input file is renamed. |
| | | --incsearch |
| | | Search file as each pattern character is typed in. |
| | | --line-num-width=N |
| | | Set the width of the -N line number field to N characters. |
| | | --mouse |
| | | Enable mouse input. |
| | | --no-keypad |
| | | Don't send termcap keypad init/deinit strings. |
| | | --no-histdups |
| | | Remove duplicates from command history. |
| | | --rscroll=C |
| | | Set the character used to mark truncated lines. |
| | | --save-marks |
| | | Retain marks across invocations of less. |
| | | --status-col-width=N |
| | | Set the width of the -J status column to N characters. |
| | | --use-backslash |
| | | Subsequent options use backslash as escape char. |
| | | --use-color |
| | | Enables colored text. |
| | | --wheel-lines=N |
| | | Each click of the mouse wheel moves N lines. |
| | | |
| | | |
| | | --------------------------------------------------------------------------- |
| | | |
| | | LLIINNEE EEDDIITTIINNGG |
| | | |
| | | These keys can be used to edit text being entered |
| | | on the "command line" at the bottom of the screen. |
| | | |
| | | RightArrow ..................... ESC-l ... Move cursor right one character. |
| | | LeftArrow ...................... ESC-h ... Move cursor left one character. |
| | | ctrl-RightArrow ESC-RightArrow ESC-w ... Move cursor right one word. |
| | | ctrl-LeftArrow ESC-LeftArrow ESC-b ... Move cursor left one word. |
| | | HOME ........................... ESC-0 ... Move cursor to start of line. |
| | | END ............................ ESC-$ ... Move cursor to end of line. |
| | | BACKSPACE ................................ Delete char to left of cursor. |
| | | DELETE ......................... ESC-x ... Delete char under cursor. |
| | | ctrl-BACKSPACE ESC-BACKSPACE ........... Delete word to left of cursor. |
| | | ctrl-DELETE .... ESC-DELETE .... ESC-X ... Delete word under cursor. |
| | | ctrl-U ......... ESC (MS-DOS only) ....... Delete entire line. |
| | | UpArrow ........................ ESC-k ... Retrieve previous command line. |
| | | DownArrow ...................... ESC-j ... Retrieve next command line. |
| | | TAB ...................................... Complete filename & cycle. |
| | | SHIFT-TAB ...................... ESC-TAB Complete filename & reverse cycle. |
| | | ctrl-L ................................... Complete filename, list all. |
| | |
| | | data: data, |
| | | }); |
| | | } |
| | | // é¦é¡µä¸é¨æ°æ® |
| | | export function getServiceStatistics(data) { |
| | | return request({ |
| | | url: "/smartor/serviceSubtask/getServiceStatistics", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | // æ¥è¯¢æ£è
ä½é¢è®°å½å表 |
| | | export function getechartsMedInhospList(data) { |
| | | return request({ |
| | |
| | | export * from './external' |
| | | export * from './patientexternal' |
| | | export * from './EChartsdata' |
| | | export * from './satisfaction' |
| | | export * from './satisfactionse' |
| | |
| | | <div class="sip-status" :class="sipStatusClass"> |
| | | SIPç¶æ: {{ sipStatus }} |
| | | </div> |
| | | <!-- å·ç è¾å
¥ --> |
| | | <input |
| | | v-model="phoneNumber" |
| | | type="text" |
| | | placeholder="è¾å
¥çµè¯å·ç " |
| | | @keyup.enter="startCall" |
| | | /> |
| | | |
| | | <!-- ç¶ææ¾ç¤º --> |
| | | <div class="call-status" :class="callStatusClass"> |
| | | {{ callStatusText }} |
| | | </div> |
| | | |
| | | <!-- å¼å«æé® --> |
| | | <button :class="['call-btn', { calling: isCalling }]" @click="startCall"> |
| | | {{ isCalling ? "éè¯ä¸..." : "ä¸é®å¼å«" }} |
| | | <button |
| | | :class="['call-btn', { calling: isCalling }]" |
| | | @click="startCall" |
| | | :disabled="isCalling || sipStatus !== '已注å'" |
| | | > |
| | | {{ callButtonText }} |
| | | </button> |
| | | |
| | | <!-- æææé® --> |
| | |
| | | |
| | | <!-- é³é¢å
ç´ ï¼éèï¼ --> |
| | | <audio id="remoteAudio" autoplay></audio> |
| | | |
| | | <!-- ç¶ææ¾ç¤º --> |
| | | <div class="call-status"> |
| | | {{ callStatus }} |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import sipService from "@/utils/sipService"; |
| | | |
| | | export default { |
| | | props: { |
| | | phoneNumber: { |
| | | type: String, |
| | | default: "", |
| | | }, |
| | | }, |
| | | data() { |
| | | const randomNum = Math.floor(Math.random() * 20) + 1000; // å
é¨å®ä¹ |
| | | return { |
| | | // phoneNumber: "", |
| | | isCalling: false, |
| | | callStatus: "åå¤å°±ç»ª", |
| | | callStatus: "idle", // idle, calling, connected, ended |
| | | sipStatus: "æªè¿æ¥", |
| | | sipStatusClass: "status-disconnected", |
| | | sipConfig: { |
| | | wsUrl: "wss://192.168.10.124:7443", |
| | | sipUri: "1000@192.168.10.124", |
| | | sipUri: `${randomNum}` + "@192.168.10.124", |
| | | password: "Smartor@2023", |
| | | displayName: "Web å°é¾", |
| | | // realm: "192.168.10.124:8090", |
| | | // realm: "9.208.5.18:8090", |
| | | }, |
| | | }; |
| | | }, |
| | | props: { |
| | | phoneNumber: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | computed: { |
| | | callStatusText() { |
| | | const statusMap = { |
| | | idle: "åå¤å°±ç»ª", |
| | | calling: "å¼å«ä¸...", |
| | | connected: "éè¯ä¸", |
| | | ended: "éè¯ç»æ", |
| | | }; |
| | | return statusMap[this.callStatus]; |
| | | }, |
| | | callStatusClass() { |
| | | return `status-${this.callStatus}`; |
| | | }, |
| | | callButtonText() { |
| | | return this.isCalling ? "éè¯ä¸..." : "ä¸é®å¼å«"; |
| | | }, |
| | | }, |
| | | mounted() { |
| | | // æµè¯ |
| | | const ws = new WebSocket("wss://192.168.10.124:7443"); |
| | | const ws = new WebSocket("wss://9.208.5.18:7443"); |
| | | ws.onopen = () => console.log("WebSocket è¿æ¥æå"); |
| | | ws.onerror = (e) => console.error("WebSocket é误:", e); |
| | | |
| | |
| | | sipService.onStatusChange = (status) => { |
| | | this.sipStatus = status.text; |
| | | this.sipStatusClass = `status-${status.type}`; |
| | | }; |
| | | |
| | | // æ ¹æ®ç¶ææ´æ°UIææ§è¡å
¶ä»æä½ |
| | | if (status.type === "registered") { |
| | | console.log("SIP注åæåï¼å¯ä»¥å¼å§å¼å«"); |
| | | } else if (status.type === "failed") { |
| | | console.error("SIP注å失败"); |
| | | } |
| | | // çå¬éè¯ç¶æåå |
| | | sipService.onCallStatusChange = (status) => { |
| | | this.callStatus = status.type; |
| | | this.isCalling = status.type === "calling" || status.type === "connected"; |
| | | |
| | | // éç¥ç¶ç»ä»¶éè¯ç¶æåå |
| | | this.$emit("call-status-change", status); |
| | | }; |
| | | }, |
| | | beforeDestroy() { |
| | | // ç»ä»¶éæ¯æ¶ç»æéè¯ |
| | | this.endCall(); |
| | | }, |
| | | methods: { |
| | | // å¼å§å¼å« |
| | | async startCall() { |
| | | if (!this.phoneNumber) { |
| | | this.callStatus = "请è¾å
¥çµè¯å·ç "; |
| | | this.$message.error("请è¾å
¥çµè¯å·ç "); |
| | | return; |
| | | } |
| | | try { |
| | | this.isCalling = true; |
| | | this.callStatus = "å¼å«ä¸..."; |
| | | // è°ç¨SIPæå¡ |
| | | sipService.makeCall(this.phoneNumber); |
| | | |
| | | this.callStatus = "éè¯å·²å»ºç«"; |
| | | try { |
| | | this.callStatus = "calling"; |
| | | this.isCalling = true; |
| | | |
| | | await sipService.makeCall(this.phoneNumber); |
| | | } catch (error) { |
| | | console.error("å¼å«å¤±è´¥:", error); |
| | | this.callStatus = `å¼å«å¤±è´¥: ${error.message}`; |
| | | this.callStatus = "ended"; |
| | | this.isCalling = false; |
| | | this.$message.error(`å¼å«å¤±è´¥: ${error.message}`); |
| | | } |
| | | }, |
| | | |
| | | // ç»æéè¯ |
| | | endCall() { |
| | | sipService.endCall(); |
| | | this.callStatus = "ended"; |
| | | this.isCalling = false; |
| | | this.callStatus = "éè¯å·²ç»æ"; |
| | | }, |
| | | }, |
| | | }; |
| | |
| | | border-radius: 4px; |
| | | cursor: pointer; |
| | | } |
| | | .call-status { |
| | | padding: 8px; |
| | | margin: 10px 0; |
| | | border-radius: 4px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .status-idle { |
| | | background-color: #f5f5f5; |
| | | color: #666; |
| | | } |
| | | |
| | | .status-calling { |
| | | background-color: #fff8e1; |
| | | color: #ff8f00; |
| | | } |
| | | |
| | | .status-connected { |
| | | background-color: #e8f5e9; |
| | | color: #2e7d32; |
| | | } |
| | | |
| | | .status-ended { |
| | | background-color: #ffebee; |
| | | color: #c62828; |
| | | } |
| | | |
| | | /* åææ ·å¼ä¿æä¸å */ |
| | | .call-container { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 10px; |
| | | max-width: 300px; |
| | | margin: 0 auto; |
| | | padding: 20px; |
| | | border: 1px solid #eee; |
| | | border-radius: 8px; |
| | | } |
| | | |
| | | .call-btn { |
| | | padding: 10px; |
| | | background-color: #4caf50; |
| | | color: white; |
| | | border: none; |
| | | border-radius: 4px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .call-btn:hover:not(:disabled) { |
| | | background-color: #45a049; |
| | | } |
| | | |
| | | .call-btn:disabled { |
| | | background-color: #cccccc; |
| | | cursor: not-allowed; |
| | | } |
| | | |
| | | .call-btn.calling { |
| | | background-color: #2196f3; |
| | | } |
| | | |
| | | .end-call-btn { |
| | | padding: 10px; |
| | | background-color: #f44336; |
| | | color: white; |
| | | border: none; |
| | | border-radius: 4px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .end-call-btn:hover { |
| | | background-color: #d32f2f; |
| | | } |
| | | |
| | | .sip-status { |
| | | padding: 8px; |
| | | margin-bottom: 10px; |
| | | border-radius: 4px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .status-disconnected { |
| | | background-color: #ffebee; |
| | | color: #c62828; |
| | | } |
| | | |
| | | .status-connecting { |
| | | background-color: #fff8e1; |
| | | color: #ff8f00; |
| | | } |
| | | |
| | | .status-registered { |
| | | background-color: #e8f5e9; |
| | | color: #2e7d32; |
| | | } |
| | | |
| | | .status-failed { |
| | | background-color: #ffebee; |
| | | color: #c62828; |
| | | } |
| | | .call-btn:hover { |
| | | background-color: #45a049; |
| | | } |
| | |
| | | </template> |
| | | <sidebar-item |
| | | v-for="child in item.children" |
| | | :key="child.path" |
| | | :is-nest="true" |
| | | :item="child" |
| | | :base-path="resolvePath(child.path)" |
| | |
| | | localStorage.setItem('deptCode', '01040201'); |
| | | }else if (orgid=='47246102433112211A2101') { |
| | | localStorage.setItem('orgname', 'ç¼äºå¿ä¸å»å»é¢'); |
| | | localStorage.setItem('ZuHuID', '1400360867068907520'); |
| | | localStorage.setItem('ZuHuID', '1429338802177000002'); |
| | | localStorage.setItem('deptCode', ''); |
| | | }else if (orgid=='47240018433118111A2101') { |
| | | localStorage.setItem('orgname', '龿³å¸ä¸å»å»é¢'); |
| | | localStorage.setItem('ZuHuID', '1400360867068907520'); |
| | | localStorage.setItem('ZuHuID', '1429338802177000003'); |
| | | localStorage.setItem('deptCode', ''); |
| | | }else if (orgid=='47243006833112611A2101') { |
| | | localStorage.setItem('orgname', 'åºå
å¿ä¸å»å»é¢'); |
| | | localStorage.setItem('ZuHuID', '1429338802177000004'); |
| | | localStorage.setItem('deptCode', ''); |
| | | }else if (orgid=='47234002X33112111A2101') { |
| | | localStorage.setItem('orgname', 'éç°å¿ä¸å»å»é¢'); |
| | | localStorage.setItem('ZuHuID', '1429338802177000005'); |
| | | localStorage.setItem('deptCode', ''); |
| | | }else if (orgid=='47240004533118111A1001') { |
| | | localStorage.setItem('orgname', '龿³å¸äººæ°å»é¢'); |
| | | localStorage.setItem('ZuHuID', '1429338802177000007'); |
| | | localStorage.setItem('deptCode', ''); |
| | | } |
| | | resolve() |
| | |
| | | // axiosä¸è¯·æ±é
ç½®æbaseURLé项ï¼è¡¨ç¤ºè¯·æ±URLå
Œ
±é¨å |
| | | baseURL: process.env.VUE_APP_BASE_API, |
| | | // è¶
æ¶ |
| | | timeout: 10000, |
| | | timeout: 100000, |
| | | }); |
| | | |
| | | // requestæ¦æªå¨ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import JsSIP from "jssip"; |
| | | |
| | | class SipService { |
| | | constructor() { |
| | | this.ua = null; |
| | | this.currentSession = null; |
| | | this.onStatusChange = null; // ç¶æåååè° |
| | | this.onCallStatusChange = null; // æ°å¢éè¯ç¶æåè° |
| | | } |
| | | |
| | | // åå§åSIP客æ·ç«¯ |
| | | init(config) { |
| | | try { |
| | | this.updateStatus("connecting", "è¿æ¥ä¸..."); |
| | | |
| | | this.ua = new JsSIP.UA({ |
| | | sockets: [new JsSIP.WebSocketInterface(config.wsUrl)], |
| | | uri: config.sipUri, |
| | | password: config.password, |
| | | display_name: config.displayName, |
| | | iceservers: [], |
| | | // realm: config.realm, |
| | | register: true, |
| | | session_expires: 180, |
| | | sessionTimersExpires: 300, // 设置 Session-Expires=120ï¼å¿
é¡» >= Min-SEï¼ |
| | | extraHeaders: [ |
| | | "Min-SE: 120", // å¯éï¼æ¾å¼åè¯æå¡å¨ä½ æ¯æçæå°å¼ |
| | | ], |
| | | register_expires: 300, // æ³¨åæææ(ç§) |
| | | connection_recovery_min_interval: 2, // æå°éè¿é´é |
| | | connection_recovery_max_interval: 30, // æå¤§éè¿é´é |
| | | }); |
| | | |
| | | this.ua.start(); |
| | | |
| | | // 注åäºä»¶çå¬ |
| | | this.ua.on("registered", () => { |
| | | this.updateStatus("registered", "已注å"); |
| | | }); |
| | | |
| | | this.ua.on("registrationFailed", (e) => { |
| | | this.updateStatus("failed", `注å失败: ${e.cause}`); |
| | | }); |
| | | |
| | | this.ua.on("disconnected", () => { |
| | | this.updateStatus("disconnected", "è¿æ¥æå¼"); |
| | | }); |
| | | |
| | | this.ua.on("connected", () => { |
| | | this.updateStatus("connecting", "éæ°è¿æ¥ä¸..."); |
| | | }); |
| | | |
| | | // ç嬿¥çµ |
| | | this.ua.on("newRTCSession", (data) => { |
| | | this.handleIncomingCall(data.session); |
| | | }); |
| | | } catch (error) { |
| | | this.updateStatus("failed", `åå§å失败: ${error.message}`); |
| | | console.error("SIPåå§å失败:", error); |
| | | } |
| | | } |
| | | handleIncomingCall(session) { |
| | | if (session.direction === "incoming") { |
| | | console.log("æ¥çµ:", session.remote_identity.uri.toString()); |
| | | // å¯ä»¥å¨è¿é触å UI éç¥ |
| | | if (this.onIncomingCall) { |
| | | this.onIncomingCall(session); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // æ´æ°ç¶æå¹¶éç¥UI |
| | | updateStatus(type, text) { |
| | | console.log(`SIPç¶ææ´æ°: ${type} - ${text}`); |
| | | if (this.onStatusChange) { |
| | | this.onStatusChange({ type, text }); |
| | | } |
| | | } |
| | | |
| | | // ä¸é®æ¨å· - å¢å 注åç¶ææ£æ¥ |
| | | makeCall(targetNumber) { |
| | | if (!this.ua) { |
| | | throw new Error("SIP客æ·ç«¯æªåå§å"); |
| | | } |
| | | |
| | | if (!this.ua.isRegistered()) { |
| | | throw new Error("SIPæªæ³¨åï¼æ æ³å¼å«"); |
| | | } |
| | | |
| | | const options = { |
| | | sessionTimers: true, |
| | | sessionTimersExpires: 300, |
| | | extraHeaders: [ |
| | | "Min-SE: 120", |
| | | "Route: <sip:@192.168.100.6>", |
| | | "Accept: application/sdp", |
| | | "Supported: replaces, timer", |
| | | "Allow: INVITE, ACK, BYE, CANCEL, OPTIONS", |
| | | ], |
| | | eventHandlers: { |
| | | progress: (e) => { |
| | | this.updateCallStatus("calling", "å¼å«ä¸..."); |
| | | }, |
| | | failed: (e) => { |
| | | this.updateCallStatus("ended", `å¼å«å¤±è´¥: ${e.cause}`); |
| | | }, |
| | | ended: (e) => { |
| | | this.updateCallStatus("ended", "éè¯ç»æ"); |
| | | }, |
| | | confirmed: (e) => { |
| | | this.updateCallStatus("connected", "éè¯å·²æ¥é"); |
| | | }, |
| | | }, |
| | | mediaConstraints: { |
| | | audio: true, |
| | | video: false, |
| | | }, |
| | | rtcOfferConstraints: { |
| | | offerToReceiveAudio: 1, |
| | | offerToReceiveVideo: 0, |
| | | mandatory: { |
| | | OfferToReceiveAudio: true, |
| | | OfferToReceiveVideo: false, |
| | | }, |
| | | }, |
| | | pcConfig: { |
| | | iceServers: [{ urls: "stun:stun.l.google.com:19302" }], |
| | | iceTransportPolicy: "all", |
| | | bundlePolicy: "balanced", |
| | | rtcpMuxPolicy: "require", |
| | | codecs: { |
| | | audio: [ |
| | | { name: "PCMU", clockRate: 8000, payloadType: 0 }, |
| | | { name: "PCMA", clockRate: 8000, payloadType: 8 }, |
| | | ], |
| | | video: [], |
| | | }, |
| | | }, |
| | | }; |
| | | |
| | | this.currentSession = this.ua.call( |
| | | `sip:${targetNumber}@192.168.100.6`, |
| | | options |
| | | ); |
| | | // å¨ä¼è¯å建åä¿®æ¹ SDP |
| | | this.currentSession.on("peerconnection", (pc) => { |
| | | this.updateCallStatus('calling', 'å¼å«ä¸...'); |
| | | pc.createOffer = (offerOptions) => { |
| | | return RTCPeerConnection.prototype.createOffer |
| | | .call(pc, offerOptions) |
| | | .then((offer) => { |
| | | const modifiedSdp = offer.sdp |
| | | .replace(/c=IN IP4 192\.168\.100\.10/g, "c=IN IP4 192.168.100.6") |
| | | .replace(/m=audio \d+ RTP\/AVP.*/, "m=audio 7078 RTP/AVP 0 8"); |
| | | return new RTCSessionDescription({ |
| | | type: "offer", |
| | | sdp: modifiedSdp, |
| | | }); |
| | | }); |
| | | }; |
| | | }); |
| | | this.currentSession.on('failed', (e) => { |
| | | this.updateCallStatus('failed', `å¼å«å¤±è´¥2: ${e}`); |
| | | }); |
| | | |
| | | this.currentSession.on('ended', () => { |
| | | this.updateCallStatus('ended', 'éè¯å·²ç»æ'); |
| | | }); |
| | | |
| | | this.currentSession.on('confirmed', () => { |
| | | this.updateCallStatus('connected', 'éè¯å·²æ¥é'); |
| | | }); |
| | | this.setupAudio(this.currentSession); |
| | | } |
| | | setupAudio(session) { |
| | | session.connection.addEventListener("addstream", (e) => { |
| | | const audioElement = document.getElementById("remoteAudio"); |
| | | if (audioElement) { |
| | | audioElement.srcObject = e.stream; |
| | | } |
| | | }); |
| | | } |
| | | // ææå½åéè¯ |
| | | endCall() { |
| | | if (this.currentSession) { |
| | | this.currentSession.terminate(); |
| | | this.updateCallStatus('ended', 'éè¯å·²ç»æ'); |
| | | this.currentSession = null; |
| | | } |
| | | } |
| | | // æ°å¢æ¹æ³ï¼æ´æ°éè¯ç¶æ |
| | | updateCallStatus(type, text) { |
| | | console.log(`éè¯ç¶ææ´æ°: ${type} - ${text}`); |
| | | if (this.onCallStatusChange) { |
| | | this.onCallStatusChange({ type, text }); |
| | | } |
| | | } |
| | | } |
| | | |
| | | export default new SipService(); |
| | |
| | | constructor() { |
| | | this.ua = null; |
| | | this.currentSession = null; |
| | | this.onStatusChange = null; // ç¶æåååè° |
| | | this.onStatusChange = null; |
| | | this.onCallStatusChange = null; |
| | | this.onIncomingCall = null; |
| | | } |
| | | |
| | | // åå§åSIP客æ·ç«¯ |
| | | init(config) { |
| | | try { |
| | | this.updateStatus("connecting", "è¿æ¥ä¸..."); |
| | | this.updateStatus("connecting", "è¿æ¥ä¸;..."); |
| | | |
| | | this.ua = new JsSIP.UA({ |
| | | sockets: [new JsSIP.WebSocketInterface(config.wsUrl)], |
| | | uri: config.sipUri, |
| | | password: config.password, |
| | | display_name: config.displayName, |
| | | iceservers:[], |
| | | // realm: config.realm, |
| | | iceServers: [], |
| | | register: true, |
| | | session_expires: 180, |
| | | sessionTimersExpires: 300, // 设置 Session-Expires=120ï¼å¿
é¡» >= Min-SEï¼ |
| | | extraHeaders: [ |
| | | "Min-SE: 120", // å¯éï¼æ¾å¼åè¯æå¡å¨ä½ æ¯æçæå°å¼ |
| | | ], |
| | | register_expires: 300, // æ³¨åæææ(ç§) |
| | | connection_recovery_min_interval: 2, // æå°éè¿é´é |
| | | connection_recovery_max_interval: 30, // æå¤§éè¿é´é |
| | | sessionExpires: 1800, |
| | | minSessionExpires: 90, |
| | | register_expires: 300, |
| | | }); |
| | | |
| | | this.ua.start(); |
| | | |
| | | // 注åäºä»¶çå¬ |
| | | this.ua.on("registered", () => { |
| | | this.updateStatus("registered", "已注å"); |
| | | }); |
| | | |
| | | this.ua.on("registrationFailed", (e) => { |
| | | this.updateStatus("failed", `注å失败: ${e.cause}`); |
| | | }); |
| | | |
| | | this.ua.on("disconnected", () => { |
| | | this.updateStatus("disconnected", "è¿æ¥æå¼"); |
| | | }); |
| | | |
| | | this.ua.on("connected", () => { |
| | | this.updateStatus("connecting", "éæ°è¿æ¥ä¸..."); |
| | | }); |
| | | |
| | | // ç嬿¥çµ |
| | | this.ua.on("newRTCSession", (data) => { |
| | | this.handleIncomingCall(data.session); |
| | | }); |
| | | // äºä»¶çå¬ |
| | | this.ua.on("registered", () => |
| | | this.updateStatus("registered", "已注å56") |
| | | ); |
| | | this.ua.on("registrationFailed", (e) => |
| | | this.updateStatus("failed", `注å失败11: ${e.cause}`) |
| | | ); |
| | | this.ua.on("disconnected", () => |
| | | this.updateStatus("disconnected", "è¿æ¥æå¼") |
| | | ); |
| | | this.ua.on("connected", () => |
| | | this.updateStatus("connecting", "éæ°è¿æ¥ä¸...") |
| | | ); |
| | | this.ua.on("newRTCSession", (data) => |
| | | this.handleIncomingCall(data.session) |
| | | ); |
| | | } catch (error) { |
| | | this.updateStatus("failed", `åå§å失败: ${error.message}`); |
| | | console.error("SIPåå§å失败:", error); |
| | | } |
| | | } |
| | | handleIncomingCall(session) { |
| | | if (session.direction === "incoming") { |
| | | console.log("æ¥çµ:", session.remote_identity.uri.toString()); |
| | | // å¯ä»¥å¨è¿é触å UI éç¥ |
| | | if (this.onIncomingCall) { |
| | | this.onIncomingCall(session); |
| | | } |
| | | throw error; |
| | | } |
| | | } |
| | | |
| | | // æ´æ°ç¶æå¹¶éç¥UI |
| | | updateStatus(type, text) { |
| | | console.log(`SIPç¶ææ´æ°: ${type} - ${text}`); |
| | | if (this.onStatusChange) { |
| | | this.onStatusChange({ type, text }); |
| | | } |
| | | } |
| | | |
| | | // ä¸é®æ¨å· - å¢å 注åç¶ææ£æ¥ |
| | | makeCall(targetNumber) { |
| | | if (!this.ua) { |
| | | throw new Error("SIP客æ·ç«¯æªåå§å"); |
| | | } |
| | | return new Promise((resolve, reject) => { |
| | | try { |
| | | if (!this.ua) { |
| | | throw new Error("SIP客æ·ç«¯æªåå§å"); |
| | | } |
| | | |
| | | if (!this.ua.isRegistered()) { |
| | | throw new Error("SIPæªæ³¨åï¼æ æ³å¼å«"); |
| | | } |
| | | if (!this.ua.isRegistered()) { |
| | | throw new Error("SIPæªæ³¨åï¼æ æ³å¼å«"); |
| | | } |
| | | |
| | | const options = { |
| | | sessionTimers: true, |
| | | sessionTimersExpires: 300, |
| | | extraHeaders: [ |
| | | "Min-SE: 120", |
| | | "Route: <sip:@192.168.100.6>", |
| | | "Accept: application/sdp", |
| | | "Supported: replaces, timer", |
| | | "Allow: INVITE, ACK, BYE, CANCEL, OPTIONS", |
| | | ], |
| | | eventHandlers: { |
| | | progress: (e) => console.log("å¼å«ä¸..."), |
| | | failed: (e) => console.error("å¼å«å¤±è´¥:", e), |
| | | ended: (e) => console.log("éè¯ç»æ"), |
| | | confirmed: (e) => console.log("éè¯å·²æ¥é"), |
| | | }, |
| | | mediaConstraints: { |
| | | audio: true, |
| | | video: false, |
| | | }, |
| | | rtcOfferConstraints: { |
| | | offerToReceiveAudio: 1, |
| | | offerToReceiveVideo: 0, |
| | | mandatory: { |
| | | OfferToReceiveAudio: true, |
| | | OfferToReceiveVideo: false, |
| | | }, |
| | | }, |
| | | pcConfig: { |
| | | iceServers: [{ urls: "stun:stun.l.google.com:19302" }], |
| | | iceTransportPolicy: "all", |
| | | bundlePolicy: "balanced", |
| | | rtcpMuxPolicy: "require", |
| | | codecs: { |
| | | audio: [ |
| | | { name: "PCMU", clockRate: 8000, payloadType: 0 }, |
| | | { name: "PCMA", clockRate: 8000, payloadType: 8 }, |
| | | ], |
| | | video: [], |
| | | }, |
| | | }, |
| | | }; |
| | | const options = { |
| | | sessionTimers: true, // å¯ç¨ä¼è¯è®¡æ¶å¨ |
| | | sessionTimersExpires: 150, |
| | | extraHeaders: ["Accept: application/sdp"], |
| | | mediaConstraints: { audio: true, video: false }, |
| | | rtcOfferConstraints: { |
| | | offerToReceiveAudio: true, |
| | | offerToReceiveVideo: false, |
| | | }, |
| | | eventHandlers: { |
| | | progress: () => this.updateCallStatus("calling", "å¼å«ä¸..."), |
| | | failed: (e) => { |
| | | this.handleCallFailure(e, reject); |
| | | }, |
| | | ended: () => this.updateCallStatus("ended", "éè¯ç»æ"), |
| | | confirmed: () => { |
| | | this.updateCallStatus("connected", "éè¯å·²æ¥é"); |
| | | resolve(); |
| | | }, |
| | | }, |
| | | }; |
| | | |
| | | this.currentSession = this.ua.call( |
| | | `sip:${targetNumber}@192.168.100.6`, |
| | | options |
| | | ); |
| | | // å¨ä¼è¯å建åä¿®æ¹ SDP |
| | | this.currentSession.on("peerconnection", (pc) => { |
| | | pc.createOffer = (offerOptions) => { |
| | | return RTCPeerConnection.prototype.createOffer |
| | | .call(pc, offerOptions) |
| | | .then((offer) => { |
| | | const modifiedSdp = offer.sdp |
| | | .replace(/c=IN IP4 192\.168\.100\.10/g, "c=IN IP4 192.168.100.6") |
| | | .replace(/m=audio \d+ RTP\/AVP.*/, "m=audio 7078 RTP/AVP 0 8"); |
| | | return new RTCSessionDescription({ |
| | | type: "offer", |
| | | sdp: modifiedSdp, |
| | | }); |
| | | }); |
| | | this.currentSession = this.ua.call( |
| | | `sip:${targetNumber}@192.168.10.124`, |
| | | options |
| | | ); |
| | | |
| | | this.setupPeerConnection(this.currentSession); |
| | | this.setupAudio(this.currentSession); |
| | | } catch (error) { |
| | | this.updateCallStatus("failed", `å¼å«å¤±è´¥22: ${error.message}`); |
| | | reject(error); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | setupPeerConnection(session) { |
| | | session.on("peerconnection", (pc) => { |
| | | const originalCreateOffer = pc.createOffer.bind(pc); |
| | | |
| | | pc.createOffer = async (offerOptions) => { |
| | | try { |
| | | const offer = await originalCreateOffer(offerOptions); |
| | | return this.normalizeSDP(offer); |
| | | } catch (error) { |
| | | console.error("å建Offer失败:", error); |
| | | throw error; |
| | | } |
| | | }; |
| | | }); |
| | | this.setupAudio(this.currentSession); |
| | | } |
| | | |
| | | normalizeSDP(offer) { |
| | | let sdp = offer.sdp; |
| | | |
| | | // æ ååSDP |
| | | sdp = sdp.replace(/c=IN IP4.*\r\n/, "c=IN IP4 0.0.0.0\r\n"); |
| | | sdp = sdp.replace( |
| | | /m=audio \d+.*\r\n/, |
| | | "m=audio 9 UDP/TLS/RTP/SAVPF 0 8\r\n" |
| | | ); |
| | | |
| | | // ç¡®ä¿å
å«åºæ¬ç¼è§£ç å¨ |
| | | if (!sdp.includes("PCMU/8000")) sdp += "a=rtpmap:0 PCMU/8000\r\n"; |
| | | if (!sdp.includes("PCMA/8000")) sdp += "a=rtpmap:8 PCMA/8000\r\n"; |
| | | |
| | | // æ·»å å¿
è¦å±æ§ |
| | | sdp += "a=rtcp-mux\r\n"; |
| | | sdp += "a=sendrecv\r\n"; |
| | | |
| | | console.log("æ åååçSDP:", sdp); |
| | | return new RTCSessionDescription({ |
| | | type: offer.type, |
| | | sdp: sdp, |
| | | }); |
| | | } |
| | | |
| | | handleCallFailure(e, reject) { |
| | | if (e.response?.status_code === 422) { |
| | | const serverMinSE = e.response.headers["Min-SE"]?.[0]?.raw || "æªç¥"; |
| | | console.error(`æå¡å¨è¦æ± Min-SE ⤠${serverMinSE}ï¼å½å设置: 120`); |
| | | } |
| | | console.error("å¼å«å¤±è´¥è¯¦æ
:", { |
| | | cause: e.cause, |
| | | message: e.message, |
| | | response: e.response && { |
| | | status: e.response.status_code, |
| | | reason: e.response.reason_phrase, |
| | | }, |
| | | }); |
| | | |
| | | let errorMessage = "å¼å«å¤±è´¥"; |
| | | switch (e.cause) { |
| | | case "Incompatible SDP": |
| | | errorMessage = "åªä½åå失败ï¼è¯·æ£æ¥ç¼è§£ç å¨é
ç½®"; |
| | | break; |
| | | case "488": |
| | | case "606": |
| | | errorMessage = "对æ¹è®¾å¤ä¸æ¯æå½ååªä½é
ç½®"; |
| | | break; |
| | | case "422": |
| | | errorMessage = "ä¼è¯åæ°ä¸æ»¡è¶³æå¡å¨è¦æ±"; |
| | | break; |
| | | default: |
| | | errorMessage = `å¼å«å¤±è´¥: ${e.cause || e.message}`; |
| | | } |
| | | |
| | | this.updateCallStatus("failed55", errorMessage); |
| | | reject(new Error(errorMessage)); |
| | | } |
| | | |
| | | setupAudio(session) { |
| | | session.connection.addEventListener("addstream", (e) => { |
| | | const audioElement = document.getElementById("remoteAudio"); |
| | |
| | | } |
| | | }); |
| | | } |
| | | // ææå½åéè¯ |
| | | |
| | | endCall() { |
| | | if (this.currentSession) { |
| | | this.currentSession.terminate(); |
| | | this.updateCallStatus("ended", "éè¯å·²ç»æ"); |
| | | this.currentSession = null; |
| | | } |
| | | } |
| | | |
| | | updateStatus(type, text) { |
| | | console.log(`SIPç¶ææ´æ°: ${type} - ${text}`); |
| | | if (this.onStatusChange) { |
| | | this.onStatusChange({ type, text }); |
| | | } |
| | | } |
| | | |
| | | updateCallStatus(type, text) { |
| | | console.log(`éè¯ç¶ææ´æ°: ${type} - ${text}`); |
| | | if (this.onCallStatusChange) { |
| | | this.onCallStatusChange({ type, text }); |
| | | } |
| | | } |
| | | |
| | | handleIncomingCall(session) { |
| | | if (session.direction === "incoming") { |
| | | console.log("æ¥çµ:", session.remote_identity.uri.toString()); |
| | | if (this.onIncomingCall) { |
| | | this.onIncomingCall(session); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | export default new SipService(); |
| | |
| | | placeholder="请è¾å
¥ä¸»æ²»å»ç" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç»ç®¡å»ç" prop="managementDoctor"> |
| | | <el-input |
| | | v-model="topqueryParams.managementDoctor" |
| | | placeholder="请è¾å
¥ä¸»æ²»å»ç" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ£è
èå´" prop="status"> |
| | | <el-cascader |
| | |
| | | align="center" |
| | | key="updateBy" |
| | | prop="updateBy" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="ç»ç®¡å»ç" |
| | | align="center" |
| | | key="managementDoctor" |
| | | prop="managementDoctor" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | |
| | | affiliation() { |
| | | this.topqueryParams.drcode = store.getters.hisUserId; |
| | | this.topqueryParams.nurseId = store.getters.hisUserId; |
| | | this.topqueryParams.managementDoctor = store.getters.name; |
| | | this.getList(1); |
| | | }, |
| | | onthatday() { |
| | |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | |
| | | <div style="margin-left: 30px"> |
| | | <el-button type="primary" plain @click="Editsingletasksonyic('')" |
| | | >ä¿åæå¡</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | <el-row :gutter="20" v-if="callStatus !== 'idle'"> |
| | | <el-col :span="24"> |
| | | <el-alert |
| | | :title="callStatusText" |
| | | :type="callStatusType" |
| | | :closable="false" |
| | | show-icon |
| | | /> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- æææé®ï¼ä»
å¨éè¯ä¸æ¾ç¤ºï¼ --> |
| | | <el-row :gutter="20" v-if="callStatus === 'connected'"> |
| | | <el-col :span="24" style="text-align: center; margin-top: 10px"> |
| | | <el-button |
| | | type="danger" |
| | | icon="el-icon-phone" |
| | | @click="endCurrentCall" |
| | | :loading="isEndingCall" |
| | | > |
| | | ææçµè¯ |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form-item label="é访记å½"> |
| | | <el-input type="textarea" v-model="form.remark"></el-input> |
| | | </el-form-item> |
| | |
| | | 宿´è¯é³ï¼ |
| | | <mini-audio |
| | | :audio-source=" |
| | | voice ? voice : 'https://example.com/example.mp3' |
| | | voice ? voice : '@assets/order/example.mp3' |
| | | " |
| | | ></mini-audio> |
| | | </div> |
| | |
| | | :audio-source=" |
| | | item.questionvoice |
| | | ? item.questionvoice |
| | | : 'https://example.com/example.mp3' |
| | | : '@assets/order/example.mp3' |
| | | " |
| | | ></mini-audio> |
| | | </div> |
| | |
| | | userid: "", |
| | | currentPhoneNumber: "", |
| | | callType: "", // ç¨äºåºåæ¯åªä¸ªçµè¯ |
| | | // å·²ææ°æ®... |
| | | callStatus: "idle", // idle, calling, connected, ended, failed |
| | | isEndingCall: false, |
| | | currentCall: null, // å½åéè¯å¯¹è±¡ |
| | | input: "ä»å¤©èº«ä½è¿ä¸é", |
| | | radio: "2", |
| | | taskname: "", |
| | |
| | | }, |
| | | pickerOptions: { |
| | | disabledDate(time) { |
| | | // ç¦ç¨ä»å¤©åä¹åçæ¥æ |
| | | return time.getTime() < Date.now() - 24 * 60 * 60 * 1000; |
| | | }, |
| | | // ç¦ç¨ä»å¤©åä¹åçæ¥æ |
| | | return time.getTime() < Date.now() - 24 * 60 * 60 * 1000; |
| | | }, |
| | | shortcuts: [ |
| | | { |
| | | text: "ä¸å¤©å", |
| | |
| | | patid: null, |
| | | }; |
| | | }, |
| | | |
| | | computed: { |
| | | callStatusText() { |
| | | const statusMap = { |
| | | idle: "åå¤å¼å«", |
| | | calling: `æ£å¨å¼å« ${this.currentPhoneNumber}...`, |
| | | connected: `å·²æ¥é ${this.currentPhoneNumber}`, |
| | | ended: "éè¯å·²ç»æ", |
| | | failed: "å¼å«å¤±è´¥", |
| | | }; |
| | | return statusMap[this.callStatus]; |
| | | }, |
| | | callStatusType() { |
| | | const typeMap = { |
| | | idle: "info", |
| | | calling: "warning", |
| | | connected: "success", |
| | | ended: "info", |
| | | failed: "error", |
| | | }; |
| | | return typeMap[this.callStatus]; |
| | | }, |
| | | }, |
| | | created() { |
| | | this.taskid = this.$route.query.taskid; |
| | | this.id = this.$route.query.id; |
| | |
| | | }) |
| | | .catch(() => { |
| | | if (this.form.serviceType == 13) { |
| | | if (this.visitCount) { |
| | | if (this.visitCount!=1) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/zbAgain", |
| | | }); |
| | |
| | | }); |
| | | } |
| | | } else if (this.form.serviceType == 2) { |
| | | if (this.visitCount) { |
| | | if (this.visitCount!=1) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/again", |
| | | }); |
| | |
| | | console.error("åçé误ï¼", error); |
| | | }); |
| | | }, |
| | | // éªè¯ææºå·æ ¼å¼ |
| | | isValidPhone(phone) { |
| | | return /^1[3-9]\d{9}$/.test(phone); |
| | | }, |
| | | // å¼å«å¤ç |
| | | handleCall(phone, type) { |
| | | if (this.isValidPhone(phone)) { |
| | | this.currentPhoneNumber = phone; |
| | | this.callType = type; |
| | | |
| | | // çå¾
ä¸ä¸ä¸ªtickç¡®ä¿å¼å·²æ´æ° |
| | | this.$nextTick(() => { |
| | | this.$refs.callButton.startCall(); |
| | | |
| | | // å¯éï¼æ ¹æ®ä¸åç±»ååä¸åå¤ç |
| | | if (type === "tel") { |
| | | console.log("æ£å¨å¼å«æ£è
æ¬äºº:", phone); |
| | | } else { |
| | | console.log("æ£å¨å¼å«è系人:", phone); |
| | | } |
| | | }); |
| | | // éªè¯çµè¯å·ç æ ¼å¼å¹¶è¿åéè¯¯ä¿¡æ¯ |
| | | validatePhoneNumber(phone) { |
| | | if (!phone) { |
| | | return { isValid: false, message: "请è¾å
¥çµè¯å·ç " }; |
| | | } |
| | | |
| | | // ææºå·æ£å |
| | | const mobileRegex = /^1[3-9]\d{9}$/; |
| | | |
| | | // 带åºå·çåºå®çµè¯ï¼å®æ´æ ¼å¼ï¼ |
| | | const landlineFullRegex = /^0\d{2,3}-?\d{7,8}$/; |
| | | |
| | | // ä¸å¸¦åºå·çåºå®çµè¯ï¼ä»
æ¬å°å·ç ï¼ |
| | | const landlineLocalRegex = /^\d{7,8}$/; |
| | | |
| | | if (mobileRegex.test(phone)) { |
| | | return { isValid: true, type: "mobile" }; |
| | | } else if (landlineFullRegex.test(phone)) { |
| | | return { isValid: true, type: "landline" }; |
| | | } else if (landlineLocalRegex.test(phone)) { |
| | | return { |
| | | isValid: false, |
| | | message: "æ¬å°å·ç 请添å åºå·ï¼å¦028-1234567ï¼", |
| | | }; |
| | | } else { |
| | | return { |
| | | isValid: false, |
| | | message: "请è¾å
¥æ£ç¡®ççµè¯å·ç ï¼ææºå·æå¸¦åºå·çåºå®çµè¯ï¼", |
| | | }; |
| | | } |
| | | }, |
| | | |
| | | // 使ç¨ç¤ºä¾ |
| | | isValidPhone(phone) { |
| | | return this.validatePhoneNumber(phone).isValid; |
| | | }, |
| | | handleCall(phone, type) { |
| | | if (!this.isValidPhone(phone)) { |
| | | this.$message.error("请è¾å
¥æ£ç¡®çææºå·ç "); |
| | | return; |
| | | } |
| | | |
| | | this.currentPhoneNumber = phone; |
| | | this.callType = type; |
| | | this.callStatus = "calling"; |
| | | |
| | | this.$nextTick(() => { |
| | | this.$refs.callButton.startCall(); |
| | | |
| | | // çå¬éè¯ç¶æåå |
| | | this.$refs.callButton.$on("call-status-change", (status) => { |
| | | this.handleCallStatusChange(status); |
| | | }); |
| | | }); |
| | | }, |
| | | |
| | | // å¤çéè¯ç¶æåå |
| | | handleCallStatusChange(status) { |
| | | console.log(status, "status"); |
| | | |
| | | this.callStatus = status.type; |
| | | |
| | | if (status.type === "connected") { |
| | | this.currentCall = { |
| | | phone: this.currentPhoneNumber, |
| | | type: this.callType, |
| | | startTime: new Date(), |
| | | }; |
| | | } else if (status.type === "ended" || status.type === "failed") { |
| | | this.currentCall = null; |
| | | } |
| | | |
| | | // å¯ä»¥æ ¹æ®ç¶ææ§è¡å
¶ä»æä½ |
| | | if (status.type === "failed") { |
| | | this.$message.error(`å¼å«å¤±è´¥: ${status.text}`); |
| | | } |
| | | }, |
| | | |
| | | // ç»æå½åéè¯ |
| | | endCurrentCall() { |
| | | if (!this.currentCall) return; |
| | | |
| | | this.isEndingCall = true; |
| | | this.$refs.callButton.endCall(); |
| | | |
| | | // 3ç§åéç½®ç¶æ |
| | | setTimeout(() => { |
| | | this.isEndingCall = false; |
| | | }, 3000); |
| | | }, |
| | | yuyingetdetail() { |
| | | this.tableDatatop.forEach((item, index) => { |
| | |
| | | }) |
| | | .catch(() => { |
| | | if (this.form.serviceType == 13) { |
| | | if (this.visitCount!=1) { |
| | | if (this.visitCount != 1) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/zbAgain", |
| | | }); |
| | |
| | | }); |
| | | } |
| | | } else if (form.serviceType == 2) { |
| | | if (this.visitCount!=1) { |
| | | if (this.visitCount != 1) { |
| | | this.$router.push({ |
| | | path: "/followvisit/again", |
| | | }); |
| | |
| | | this.form = res.rows[0].serviceSubtaskList.find( |
| | | (item) => item.id == this.id |
| | | ); |
| | | console.log(this.form.serviceType,'serviceType'); |
| | | console.log(this.form.serviceType, "serviceType"); |
| | | |
| | | this.logsheetlist = res.rows[0].serviceSubtaskList; |
| | | this.templateid = this.logsheetlist[0].templateid; |
| | |
| | | setupsubtask() { |
| | | this.$refs["zcform"].validate((valid) => { |
| | | if (valid) { |
| | | if (this.form.date1 && new Date(this.form.date1) < new Date()) { |
| | | this.$message.error("é访æ¶é´ä¸è½å°äºå½åæ¶é´"); |
| | | return false; |
| | | } |
| | | this.form.remark = |
| | | this.form.remark + "ã" + this.getCurrentTime() + "ã"; |
| | | let form = structuredClone(this.form); |
| | |
| | | } |
| | | // form.id = null; |
| | | form.sendstate = 2; |
| | | console.log(form.serviceType,'form.serviceType'); |
| | | console.log(form.serviceType, "form.serviceType"); |
| | | |
| | | addserviceSubtask(form).then((res) => { |
| | | if (res.code == 200) { |
| | |
| | | label: "é®å·é访", |
| | | }, |
| | | ]; |
| | | this.topqueryParams.type=2; |
| | | } else if (this.tasktopic == 4 || this.tasktopic == 8) { |
| | | if (!this.topqueryParams.type) this.topqueryParams.type = "3"; |
| | | this.longtermlist = [ |
| | |
| | | label: "宣æå
³æ", |
| | | }, |
| | | ]; |
| | | this.topqueryParams.type=3; |
| | | } else if (this.tasktopic == 5) { |
| | | if (!this.topqueryParams.type) this.topqueryParams.type = "1"; |
| | | this.longtermlist = [ |
| | |
| | | }, |
| | | ]; |
| | | } |
| | | // this.topqueryParams.typename = this.findLabelByValue( |
| | | // this.taskoptions, |
| | | // this.tasktopic |
| | | // ); |
| | | this.topqueryParams.beginTime = this.dateRange[0]; |
| | | this.topqueryParams.endTime = this.dateRange[1]; |
| | | getTasklist(this.topqueryParams).then((response) => { |
| | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="10"> |
| | | <div class="home-user-task-stats"> |
| | | <p>{{ OutpatientData.rs }}</p> |
| | | <p>{{ OutpatientData.rc }}</p> |
| | | <div class="text-color2"> |
| | | <p>é¨è¯å°±è¯éï¼äººæ¬¡ï¼</p> |
| | | </div> |
| | |
| | | </el-col> |
| | | <el-col :span="10"> |
| | | <div class="home-user-task-stats"> |
| | | <p>{{ OutpatientData.rc }}</p> |
| | | <p>{{ OutpatientData.rs }}</p> |
| | | <div class="text-color2"> |
| | | <p>é¨è¯æå¡éï¼äººæ¬¡ï¼</p> |
| | | </div> |
| | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="10"> |
| | | <div class="home-user-task-stats"> |
| | | <p style="color: red">{{ DischargeData.rs }}</p> |
| | | <p style="color: red">{{ DischargeData.rc }}</p> |
| | | </div> |
| | | <div class="text-color2"> |
| | | <p>åºé¢å°±è¯éï¼äººæ¬¡ï¼</p> |
| | |
| | | </el-col> |
| | | <el-col :span="10"> |
| | | <div class="home-user-task-stats"> |
| | | <p style="color: red">{{ DischargeData.rc }}</p> |
| | | <p style="color: red">{{ DischargeData.rs }}</p> |
| | | <div class="text-color2"> |
| | | <p>åºé¢æå¡éï¼äººæ¬¡ï¼</p> |
| | | </div> |
| | |
| | | style="margin-left: 390px" |
| | | @change="changes" |
| | | > |
| | | <el-radio-button label="å¨" @click="dyat = 7"></el-radio-button> |
| | | <el-radio-button |
| | | label="æ" |
| | | @click="dyat = 30" |
| | | label="è¿ä¸å¨" |
| | | @click="dyat = 7" |
| | | ></el-radio-button> |
| | | <el-radio-button |
| | | label="å¹´" |
| | | @click="dyat = 360" |
| | | label="è¿ä¸æ" |
| | | @click="dyat = 31" |
| | | ></el-radio-button> |
| | | <el-radio-button |
| | | label="è¿ä¸å¹´" |
| | | @click="dyat = 365" |
| | | ></el-radio-button> |
| | | <el-radio-button label="èªå®ä¹"> |
| | | <el-date-picker |
| | | v-if="radio1 === 'èªå®ä¹'" |
| | | v-model="customDateRange" |
| | | type="daterange" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | value-format="yyyy-MM-dd" |
| | | @change="handleCustomDateChange" |
| | | ></el-date-picker> |
| | | </el-radio-button> |
| | | </el-radio-group> |
| | | </div> |
| | | <!-- ä¸é´echars --> |
| | | <!-- ä¸é¨çº¿æ§æ±ç¶å¾ --> |
| | | <div class="boxEchars"> |
| | | <div class="echars1" id="echars"></div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <!-- ä¸é´åå³è¾¹ --> |
| | | <!-- å³è¾¹å表 --> |
| | | <el-col :span="4" class="aside"> |
| | | <div class="grid-content bg-purple" style="margin-top: -180px"> |
| | | <div class="grid-contentsa bg-purple" style="margin-top: -180px"> |
| | | <div class="title"> |
| | | ç§å®¤æå¡é |
| | | <span>{{ endatd }} ~ {{ statd }}</span> |
| | | </div> |
| | | <div style="max-height: 690px; width: 100%; overflow: auto"> |
| | | <el-table style="width: 100%" :data="SkuTop"> |
| | | <div class="dept-table-container"> |
| | | <el-table |
| | | v-if="SkuTop.length > 0" |
| | | style="width: 100%" |
| | | :data="SkuTop" |
| | | :height="tableHeight" |
| | | > |
| | | <template v-for="(item, index) in SkuTop"></template> |
| | | <el-table-column |
| | | prop="order" |
| | |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="deptname" |
| | | width="88" |
| | | width="120" |
| | | class-name="name" |
| | | ></el-table-column> |
| | | |
| | | <el-table-column prop="rc" class-name="rc"> |
| | | <template slot-scope="scope"> |
| | | {{ scope.row.rc }}次 |
| | | </template> |
| | | <template slot-scope="scope"> {{ scope.row.rc }}次 </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div v-else class="empty-tip"> |
| | | <el-empty description="ææ ç§å®¤æå¡æ°æ®"></el-empty> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- åºé¨ä¸ä¸ª --> |
| | | <el-row :gutter="20" style="margin-bottom: 20px"> |
| | | <el-col :span="24"> |
| | | <!-- <el-col :span="24"> |
| | | <div class="grid-content bg-purple" style="min-height: 300px"> |
| | | <div class="title"> |
| | | 宣æç»è®¡ |
| | | <span class="el-icon-s-unfold moreIcon"></span> |
| | | </div> |
| | | <div class="cooperate"> |
| | | <!-- åä½åºå --> |
| | | <div class="pieChart" id="pieCharts"></div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | </el-col> --> |
| | | <!-- <el-col :span="9"> |
| | | <div class="grid-content bg-purple" style="min-height: 300px"> |
| | | <div class="title"> |
| | |
| | | getechartsListCountdata, |
| | | getechartsMedOuthospList, |
| | | getechartsMedInhospList, |
| | | getechartsandData, |
| | | getServiceStatistics, |
| | | getDeptRanking, |
| | | } from "@/api/AiCentre/index"; |
| | | import dayjs from "dayjs"; |
| | |
| | | mypPieCharts: null, |
| | | lastWidth: window.innerWidth, |
| | | lastHeight: window.innerHeight, |
| | | radio1: "æ", |
| | | radio1: "è¿ä¸å¹´", |
| | | ticketStatistics: {}, |
| | | timeTypeMap: { |
| | | å¨: "day", |
| | | æ: "month", |
| | | å¹´: "year", |
| | | }, |
| | | DischargeData: { |
| | | rs: "", |
| | | rc: "", |
| | |
| | | SkuTop: [], |
| | | cylinderSeries: [], |
| | | cylinderXAxis: [], |
| | | dyat: 30, |
| | | customDateRange: [], // èªå®ä¹æ¥æèå´ |
| | | dyat: 365, |
| | | intervalId: null, |
| | | }; |
| | | }, |
| | |
| | | return dayjs().subtract(this.dyat, "day").format("YYYY-MM-DD HH:mm:ss"); |
| | | }, |
| | | statd() { |
| | | if (this.radio1 === "èªå®ä¹" && this.customDateRange.length > 0) { |
| | | return this.customDateRange[1]; |
| | | } |
| | | return dayjs().format("YYYY-MM-DD"); |
| | | }, |
| | | endatd() { |
| | | if (this.radio1 === "èªå®ä¹" && this.customDateRange.length > 0) { |
| | | return this.customDateRange[0]; |
| | | } |
| | | return dayjs().subtract(this.dyat, "day").format("YYYY-MM-DD"); |
| | | }, |
| | | tableHeight() { |
| | | // æ ¹æ®æ°æ®éå¨æè®¡ç®é«åº¦ |
| | | const rowHeight = 40; // æ¯è¡å¤§çº¦é«åº¦ |
| | | const headerHeight = 40; // 表头é«åº¦ |
| | | const minHeight = 500; // æå°é«åº¦ |
| | | const maxHeight = 600; // æå¤§é«åº¦ |
| | | |
| | | const calculatedHeight = this.SkuTop.length * rowHeight + headerHeight; |
| | | return Math.min(Math.max(calculatedHeight, minHeight), maxHeight); |
| | | }, |
| | | }, |
| | | created() { |
| | | this.getTopdata(); |
| | | this.getgraphdata(); |
| | | this.getranking(); |
| | | // this.getranking(); |
| | | this.$nextTick(function () { |
| | | this.getregionAmountCollect(); |
| | | this.myEcharts2(); |
| | | this.getnodeCollect(); |
| | | this.getSkuTop(); |
| | | }); |
| | |
| | | methods: { |
| | | // æ¹åæ¶é´äºä»¶ |
| | | changes() { |
| | | if (this.radio1 == "å¨") { |
| | | this.dyat = 7; |
| | | } else if (this.radio1 == "æ") { |
| | | this.dyat = 30; |
| | | } else { |
| | | this.dyat = 360; |
| | | switch (this.radio1) { |
| | | case "è¿ä¸å¨": |
| | | this.dyat = 7; |
| | | break; |
| | | case "è¿ä¸æ": |
| | | this.dyat = 30; |
| | | break; |
| | | case "è¿ä¸å¹´": |
| | | this.dyat = 365; |
| | | break; |
| | | case "èªå®ä¹": |
| | | // èªå®ä¹æ¥æå¤çå¨handleCustomDateChangeæ¹æ³ä¸ |
| | | return; |
| | | } |
| | | this.refreshData(); |
| | | }, |
| | | |
| | | // å¤çèªå®ä¹æ¥æåå |
| | | handleCustomDateChange(range) { |
| | | if (!range || range.length !== 2) return; |
| | | |
| | | this.customDateRange = range; |
| | | this.refreshData(); |
| | | }, |
| | | |
| | | // ç»ä¸å·æ°æ°æ®çæ¹æ³ |
| | | refreshData() { |
| | | this.getgraphdata(); |
| | | this.getranking(); |
| | | // this.getranking(); |
| | | this.getTopdata(); |
| | | this.getregionAmountCollect(); |
| | | this.myEcharts2(); |
| | | this.getnodeCollect(); |
| | | this.getSkuTop(); |
| | | }, |
| | |
| | | }, |
| | | // topæè¡ |
| | | async getSkuTop() { |
| | | let Rankingdata = { |
| | | let Rankingdata = { |
| | | startDate: this.endatd, |
| | | endDate: this.statd, |
| | | cy: 1, |
| | | }; |
| | | await getDeptRanking(Rankingdata).then((res) => { |
| | | if (res.code == 200) { |
| | | this.SkuTop=res.rows.sort((a, b) => b.rc - a.rc); |
| | | console.log(this.SkuTop,'this.SkuTop'); |
| | | this.SkuTop = res.rows.sort((a, b) => b.rc - a.rc); |
| | | console.log(this.SkuTop, "this.SkuTop"); |
| | | } |
| | | }); |
| | | |
| | |
| | | } |
| | | }); |
| | | }, |
| | | // è·åå°±è¯æ°é |
| | | getranking() { |
| | | |
| | | }, |
| | | // è·åä¸é¨çº¿æ±å¾æ°æ® |
| | | getgraphdata() { |
| | | let Outhospdata = { |
| | | getranking() {}, |
| | | |
| | | async getgraphdata() { |
| | | let params = { |
| | | startDate: this.endatd, |
| | | endDate: this.statd, |
| | | cy: 1, |
| | | timeType: this.getTimeType(), |
| | | }; |
| | | let Inhospdata = { |
| | | startDate: this.endatd, |
| | | endDate: this.statd, |
| | | cy: 1, |
| | | }; |
| | | getechartsMedOuthospList(Outhospdata).then((res) => {}); |
| | | getechartsMedInhospList(Inhospdata).then((res) => {}); |
| | | |
| | | try { |
| | | const res = await getServiceStatistics(params); |
| | | if (res.code === 200) { |
| | | this.processChartData(res.data); |
| | | } |
| | | } catch (error) { |
| | | console.error("è·åå¾è¡¨æ°æ®å¤±è´¥:", error); |
| | | } |
| | | }, |
| | | |
| | | // è·åæ¶é´ç±»å |
| | | getTimeType() { |
| | | if (this.radio1 === "è¿ä¸å¨" || this.radio1 === "è¿ä¸æ") { |
| | | return "day"; |
| | | } |
| | | |
| | | if (this.radio1 === "è¿ä¸å¹´") { |
| | | return "month"; |
| | | } |
| | | |
| | | // èªå®ä¹æ¥æèå´ |
| | | if (this.radio1 === "èªå®ä¹" && this.customDateRange.length === 2) { |
| | | const start = dayjs(this.customDateRange[0]); |
| | | const end = dayjs(this.customDateRange[1]); |
| | | const diffDays = end.diff(start, "day"); |
| | | |
| | | return diffDays > 60 ? "month" : "day"; |
| | | } |
| | | |
| | | return "day"; // é»è®¤è¿ådayç±»å |
| | | }, |
| | | processChartData(data) { |
| | | // ææ¶é´æåºç¡®ä¿æ°æ®é¡ºåºæ£ç¡® |
| | | const sortedData = [...data].sort( |
| | | (a, b) => new Date(a.timePeriod) - new Date(b.timePeriod) |
| | | ); |
| | | |
| | | const xAxisData = []; |
| | | const dischargeFollowData = []; |
| | | const outpatientFollowData = []; |
| | | const pmiData = []; |
| | | const pmoData = []; |
| | | |
| | | sortedData.forEach((item) => { |
| | | // æ ¹æ®æ¶é´ç±»åæ ¼å¼åæ¾ç¤º |
| | | const timeType = this.getTimeType(); |
| | | const timeLabel = |
| | | timeType === "day" |
| | | ? dayjs(item.timePeriod).format("MM-DD") |
| | | : dayjs(item.timePeriod).format("YYYY-MM"); |
| | | |
| | | xAxisData.push(timeLabel); |
| | | dischargeFollowData.push(item.dischargeFollowCount); |
| | | outpatientFollowData.push(item.outpatientFollowCount); |
| | | pmiData.push(item.pmiCount); |
| | | pmoData.push(item.pmoCount); |
| | | }); |
| | | |
| | | // æ´æ°å¾è¡¨ |
| | | this.updateChart( |
| | | xAxisData, |
| | | dischargeFollowData, |
| | | outpatientFollowData, |
| | | pmiData, |
| | | pmoData |
| | | ); |
| | | }, |
| | | updateChart( |
| | | xAxisData, |
| | | dischargeFollowData, |
| | | outpatientFollowData, |
| | | pmiData, |
| | | pmoData |
| | | ) { |
| | | if (!this.myChart2) { |
| | | this.myEcharts2(); |
| | | return; |
| | | } |
| | | |
| | | // 计ç®é访éçæå¤§å¼ |
| | | const maxFollow = Math.max( |
| | | ...dischargeFollowData, |
| | | ...outpatientFollowData |
| | | ); |
| | | // è®¡ç®æå¡äººæ¬¡çæå¤§å¼ |
| | | const maxService = Math.max(...pmiData, ...pmoData); |
| | | |
| | | // å¨æè®¡ç®intervalå¼ |
| | | const followInterval = this.calculateOptimalInterval(maxFollow); |
| | | const serviceInterval = this.calculateOptimalInterval(maxService); |
| | | |
| | | const option = { |
| | | xAxis: { |
| | | data: xAxisData, |
| | | }, |
| | | yAxis: [ |
| | | { |
| | | interval: followInterval, |
| | | max: Math.ceil(maxFollow / followInterval) * followInterval, |
| | | }, |
| | | { |
| | | interval: serviceInterval, |
| | | max: Math.ceil(maxService / serviceInterval) * serviceInterval, |
| | | }, |
| | | ], |
| | | series: [ |
| | | { data: dischargeFollowData }, |
| | | { data: outpatientFollowData }, |
| | | { data: pmiData }, |
| | | { data: pmoData }, |
| | | ], |
| | | }; |
| | | |
| | | this.myChart2.setOption(option); |
| | | }, |
| | | |
| | | // è®¡ç®æä¼çintervalå¼ |
| | | calculateOptimalInterval(maxValue) { |
| | | if (maxValue <= 0) return 50; // é»è®¤å¼ |
| | | |
| | | // æ ¹æ®æå¤§å¼è®¡ç®åéçé´é |
| | | const magnitude = Math.pow(10, Math.floor(Math.log10(maxValue))); |
| | | const stepRatio = maxValue / magnitude; |
| | | |
| | | let interval; |
| | | if (stepRatio > 5) { |
| | | interval = magnitude; |
| | | } else if (stepRatio > 2) { |
| | | interval = magnitude / 2; |
| | | } else { |
| | | interval = magnitude / 5; |
| | | } |
| | | |
| | | // ç¡®ä¿intervalæ¯æ´æ° |
| | | interval = Math.round(interval); |
| | | |
| | | // éå¶æå°é´é |
| | | return Math.max(interval, 50); |
| | | }, |
| | | // è·å线ç¶å¾æ¶é´ |
| | | async getregionAmountCollect() { |
| | | //getregionAmountCollect(1, this.endatd, this.statd); |
| | |
| | | this.series = [123, 123, 223, 212, 432, 123, 442, 234]; |
| | | this.myEcharts2(); |
| | | }, |
| | | // 线æ§å¾ |
| | | // 线æ§å¾åæ±ç¶å¾ |
| | | myEcharts2() { |
| | | var echarts = require("echarts"); |
| | | var myChart2 = echarts.init(document.getElementById("echars")); |
| | | this.myChart2 = myChart2; |
| | | |
| | | var option2 = { |
| | | tooltip: { |
| | | trigger: "axis", |
| | |
| | | }, |
| | | }, |
| | | legend: { |
| | | data: [ |
| | | "åºé¢é访é", |
| | | "é¨è¯é访é", |
| | | // "å¨é¢é访é", |
| | | // "é¨è¯å¤è¯éç¥", |
| | | "åºé¢æå¡äººæ¬¡", |
| | | "é¨è¯æå¡äººæ¬¡", |
| | | ], |
| | | data: ["åºé¢æå¡é", "é¨è¯æå¡é", "åºé¢å°±è¯äººæ¬¡", "é¨è¯å°±è¯äººæ¬¡"], |
| | | }, |
| | | xAxis: [ |
| | | { |
| | | type: "category", |
| | | data: [ |
| | | "䏿", |
| | | "äºæ", |
| | | "䏿", |
| | | "åæ", |
| | | "äºæ", |
| | | "å
æ", |
| | | "䏿", |
| | | "å
«æ", |
| | | "乿", |
| | | "åæ", |
| | | ], |
| | | data: [], // åå§ä¸ºç©ºï¼å°éè¿APIæ°æ®å¡«å
|
| | | axisPointer: { |
| | | type: "shadow", |
| | | }, |
| | |
| | | type: "value", |
| | | name: "é访é", |
| | | min: 0, |
| | | max: 250, |
| | | interval: 50, |
| | | axisLabel: { |
| | | formatter: "{value} 人", |
| | | }, |
| | | }, |
| | | { |
| | | type: "value", |
| | | name: "å¤è¯/è¯ä¼°æ¬¡æ°", |
| | | name: "æå¡äººæ¬¡", |
| | | min: 0, |
| | | max: 250, |
| | | interval: 50, |
| | | axisLabel: { |
| | | formatter: "{value} 次", |
| | | }, |
| | |
| | | grid: { top: "35%" }, |
| | | series: [ |
| | | { |
| | | name: "åºé¢é访é", |
| | | name: "åºé¢æå¡é", |
| | | type: "bar", |
| | | tooltip: { |
| | | valueFormatter: function (value) { |
| | | return value + " 人"; |
| | | }, |
| | | }, |
| | | data: [120, 150, 165, 90, 140, 200, 130, 85, 175, 95, 110, 160], |
| | | data: [], // åå§ä¸ºç©ºï¼å°éè¿APIæ°æ®å¡«å
|
| | | }, |
| | | // { |
| | | // name: "å½±åé访é", |
| | | // type: "bar", |
| | | // tooltip: { |
| | | // valueFormatter: function (value) { |
| | | // return value + " 人"; |
| | | // }, |
| | | // }, |
| | | // data: [102, 190, 135, 88, 175, 160, 83, 145, 200, 110, 97, 180], |
| | | // }, |
| | | { |
| | | name: "é¨è¯é访é", |
| | | name: "é¨è¯æå¡é", |
| | | type: "bar", |
| | | tooltip: { |
| | | valueFormatter: function (value) { |
| | | return value + " 人"; |
| | | }, |
| | | }, |
| | | data: [145, 92, 178, 134, 167, 85, 199, 112, 156, 88, 120, 145], |
| | | data: [], // åå§ä¸ºç©ºï¼å°éè¿APIæ°æ®å¡«å
|
| | | }, |
| | | |
| | | // { |
| | | // name: "åºé¢å¤è¯éç¥", |
| | | // type: "line", |
| | | // smooth: 0.3, |
| | | // yAxisIndex: 1, |
| | | // tooltip: { |
| | | // valueFormatter: function (value) { |
| | | // return value + " 次"; |
| | | // }, |
| | | // }, |
| | | // data: [45, 123, 78, 156, 89, 34, 199, 112, 67, 145, 88, 175], |
| | | // }, |
| | | { |
| | | name: "åºé¢æå¡äººæ¬¡", |
| | | name: "åºé¢å°±è¯äººæ¬¡", |
| | | type: "line", |
| | | smooth: 0.3, |
| | | yAxisIndex: 1, |
| | |
| | | return value + " 次"; |
| | | }, |
| | | }, |
| | | data: [102, 190, 135, 88, 175, 160, 83, 145, 200, 110, 97, 180], |
| | | data: [], // åå§ä¸ºç©ºï¼å°éè¿APIæ°æ®å¡«å
|
| | | }, |
| | | { |
| | | name: "é¨è¯æå¡äººæ¬¡", |
| | | name: "é¨è¯å°±è¯äººæ¬¡", |
| | | type: "line", |
| | | smooth: 0.3, |
| | | yAxisIndex: 1, |
| | |
| | | return value + " 次"; |
| | | }, |
| | | }, |
| | | data: [120, 150, 165, 90, 140, 200, 130, 85, 175, 95, 110, 160], |
| | | data: [], // åå§ä¸ºç©ºï¼å°éè¿APIæ°æ®å¡«å
|
| | | }, |
| | | ], |
| | | }; |
| | | myChart2.on("updateAxisPointer", function (event) { |
| | | const xAxisInfo = event.axesInfo[0]; |
| | | if (xAxisInfo) { |
| | | const dimension = xAxisInfo.value + 1; |
| | | myChart2.setOption({ |
| | | series: { |
| | | id: "pie", |
| | | label: { |
| | | formatter: "{b}: {@[" + dimension + "]} ", |
| | | }, |
| | | encode: { |
| | | value: dimension, |
| | | tooltip: dimension, |
| | | }, |
| | | }, |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | myChart2.setOption(option2); |
| | | |
| | | // åå§å è½½æ°æ® |
| | | this.getgraphdata(); |
| | | }, |
| | | // 饼ç¶å¾ |
| | | myPieChart() { |
| | |
| | | .echars1 { |
| | | flex: 1; |
| | | } |
| | | } |
| | | .dept-table-container { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | min-height: 0; /* éè¦ï¼å
许å
容æ¶ç¼© */ |
| | | } |
| | | ::v-deep .el-table { |
| | | td:first-child { |
| | |
| | | padding: 0 10px; |
| | | text-align: center; |
| | | } |
| | | .grid-contentsa { |
| | | min-height: 600px; |
| | | border-radius: 20px; |
| | | padding: 0 10px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .grid-contents { |
| | | min-height: 36px; |
| | |
| | | }); |
| | | } |
| | | // 宣æåç±» |
| | | getheLibraryAssort({}).then((res) => { |
| | | getheLibraryAssort({ hetype: 1 }).then((res) => { |
| | | this.sortlist = res.rows; |
| | | console.log(this.sortlist); |
| | | }); |
| | |
| | | > |
| | | <el-option |
| | | v-for="item in courtyardlist" |
| | | :key="item.label" |
| | | :label="item.label" |
| | | :value="item.label" |
| | | > |
| | |
| | | > |
| | | <el-option |
| | | v-for="(item, index) in qyoptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | |
| | | { value: "47231022633110211A2101", label: "丽水å¸ä¸å»é¢" }, |
| | | { value: "47246102433112211A2101", label: "ç¼äºå¿ä¸å»å»é¢ " }, |
| | | { value: "47240018433118111A2101", label: "龿³å¸ä¸å»å»é¢ " }, |
| | | { value: "47240004533118111A1001", label: "龿³å¸äººæ°å»é¢ " }, |
| | | { value: "47243006833112611A2101", label: "åºå
å¿ä¸å»å»é¢ " }, |
| | | { value: "47234002X33112111A2101", label: "éç°å¿ä¸å»å»é¢ " }, |
| | | ], |
| | | loginRules: { |
| | | username: [ |
| | |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="ç»ç®¡å»ç" |
| | | align="center" |
| | | key="managementDoctor" |
| | | prop="managementDoctor" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="主治å»ç" |
| | | align="center" |
| | | key="drname" |
| | |
| | | </el-select> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-form-item label="æ§è¡å¨æ" prop="longTask"> |
| | | <el-form-item label="æ§è¡å¨æ" prop="longTask"> |
| | | <el-radio-group v-model="form.longTask"> |
| | | <el-radio :label="0">èªå®ä¹å¨æ</el-radio> |
| | | <el-radio :label="1">é¿æä»»å¡</el-radio> |
| | |
| | | <el-radio :label="2">å³å»åé</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="æ§è¡æ¥æï¼" v-if="form.sendType == 1&& !form.longTask"> |
| | | <el-form-item |
| | | label="æ§è¡æ¥æï¼" |
| | | v-if="form.sendType == 1 && !form.longTask" |
| | | > |
| | | <el-date-picker |
| | | v-model="daytime" |
| | | @change="changeTimeday" |
| | |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ§è¡æ¶é´ç¹ï¼" v-if="form.sendType == 3&& !form.longTask"> |
| | | <el-form-item |
| | | label="æ§è¡æ¶é´ç¹ï¼" |
| | | v-if="form.sendType == 3 && !form.longTask" |
| | | > |
| | | <div style="display: flex"> |
| | | <div style="margin-right: 10px"> |
| | | <el-date-picker |
| | |
| | | </div> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ§è¡æ¶é´æ®µï¼" v-if="form.sendType == 1&& !form.longTask"> |
| | | <el-form-item |
| | | label="æ§è¡æ¶é´æ®µï¼" |
| | | v-if="form.sendType == 1 && !form.longTask" |
| | | > |
| | | <div style="display: flex"> |
| | | <div style="margin-right: 10px"> |
| | | <span style="font-size: 18px; margin-right: 10px">â </span> |
| | |
| | | icon="el-icon-upload2" |
| | | size="medium" |
| | | @click="handleImport" |
| | | |
| | | >导å
¥</el-button |
| | | > |
| | | </el-col> |
| | |
| | | <!-- 模æ¿é¢è§ --> |
| | | <el-dialog title="模æ¿é¢è§" :visible.sync="previewtf" width="60%"> |
| | | <div class="preview-left"> |
| | | <!-- åé --> |
| | | <div v-html="htmlRichText"></div> |
| | | <!-- æ ¹æ®æ¨¡æ¿ç±»åæ¾ç¤ºä¸åå
容 --> |
| | | <div v-if="currentTemplateType == '2'"> |
| | | <!-- éç¥æ¨¡æ¿åªæ¾ç¤ºçº¯ææ¬å
容 --> |
| | | <div style="white-space: pre-wrap; font-size: 16px; line-height: 1.6"> |
| | | {{ plainTextContent }} |
| | | </div> |
| | | </div> |
| | | <div v-else> |
| | | <!-- å
¶ä»ç±»åæ¨¡æ¿æ¾ç¤ºå¯ææ¬å
容 --> |
| | | <div v-html="htmlRichText"></div> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <!-- <el-button @click="previewGo">å徿¨¡æ¿è¯¦æ
ä¿®æ¹</el-button> --> |
| | | <el-button type="primary" @click="previewFn">确认使ç¨</el-button> |
| | | </span> |
| | | </el-dialog> |
| | |
| | | |
| | | <el-table :data="uploadingData" style="width: 100%"> |
| | | <el-table-column prop="serial" label="æ£è
id"> </el-table-column> |
| | | <el-table-column prop="name" label="å§å" |
| | | width="100"> </el-table-column> |
| | | <el-table-column prop="sex" label="æ§å«"width="100"> </el-table-column> |
| | | <el-table-column prop="idcardno" width="300" label="è¯ä»¶å·ç "> </el-table-column> |
| | | <el-table-column prop="name" label="å§å" width="100"> |
| | | </el-table-column> |
| | | <el-table-column prop="sex" label="æ§å«" width="100"> |
| | | </el-table-column> |
| | | <el-table-column prop="idcardno" width="300" label="è¯ä»¶å·ç "> |
| | | </el-table-column> |
| | | <el-table-column prop="goday" label="åºçæ¥æ"> </el-table-column> |
| | | <el-table-column prop="telcode" width="200" label="èç³»æ¹å¼"> </el-table-column> |
| | | <el-table-column prop="createTime" width="200" label="åå»ºæ¥æ"> |
| | | <el-table-column prop="telcode" width="200" label="èç³»æ¹å¼"> |
| | | </el-table-column> |
| | | <el-table-column prop="createTime" width="200" label="åå»ºæ¥æ"> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- <pagination |
| | |
| | | <el-form-item label="宣æåç§°"> |
| | | <el-input v-model="topqueryParams.preachname"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="宣æåç±»" prop="region"> |
| | | <el-form-item label="宣æç±»å" prop="region"> |
| | | <el-select |
| | | v-model="topqueryParams.assortid" |
| | | v-model="topqueryParams.hetype" |
| | | size="medium" |
| | | filterable |
| | | placeholder="è¯·éæ©åç±»" |
| | | > |
| | | <el-option-group |
| | | v-for="group in sortlist" |
| | | :key="group.id" |
| | | :label="group.assortname" |
| | | <el-option |
| | | v-for="item in heLibraryAssortList" |
| | | :key="item.id" |
| | | :label="item.value" |
| | | :value="item.id" |
| | | > |
| | | <el-option |
| | | v-for="item in group.heLibraryAssortList" |
| | | :key="item.id" |
| | | :label="item.assortname" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-option-group> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | |
| | | return { |
| | | title: "宣æå
容å表", |
| | | currenttype: 1, //1宣æ2é¨è¯3åºé¢4å¤è¯5使£6é®å· |
| | | currentTemplateType: "", // å½å模æ¿ç±»å |
| | | plainTextContent: "", // çº¯ææ¬å
容 |
| | | id: "", // |
| | | previewid: "", //任塿¨¡æ¿ä¼ éid |
| | | libName: "", |
| | |
| | | tableLabelxj: [ |
| | | { label: "å建人", width: "", prop: "createBy" }, |
| | | { label: "宣æåç§°", width: "180", prop: "preachname" }, |
| | | { label: "宣ææè¿°", width: "180", prop: "preachcontent" }, |
| | | { label: "宣æå
容", width: "180", prop: "preachcontent" }, |
| | | // { label: "宣æå½¢å¼", width: "", prop: "playType" }, |
| | | { label: "éç¨æ¹å¼", width: "", prop: "suitway" }, |
| | | { label: "ä¿®æ¹æ¥æ", width: "", prop: "uploadTime" }, |
| | |
| | | ], |
| | | variableListTime: [], |
| | | sortlist: [], |
| | | heLibraryAssortList: [ |
| | | { id: 1, value: "宣æ" }, |
| | | { id: 2, value: "éç¥" }, |
| | | ], |
| | | tasktopic: null, //æ°å¢ç±»å |
| | | SelectPatientslist: [], |
| | | form: { |
| | |
| | | templatename: "", |
| | | templateid: null, |
| | | libtemplateid: null, |
| | | kcb: "亲ç±çæ£è
-å®¶å±ï¼æä»¬æ¯"+localStorage.getItem("orgname")+"ç廿¤äººåï¼ä¸ºäºæ´å¥½å°äºè§£æ¨çåº·å¤æ
åµï¼è¯·æ¨æ½ä¸ç¹å®è´µæ¶é´ï¼è§çè¿ä»½å®£æèµè®¯ã", |
| | | kcb: |
| | | "亲ç±çæ£è
-å®¶å±ï¼æä»¬æ¯" + |
| | | localStorage.getItem("orgname") + |
| | | "ç廿¤äººåï¼ä¸ºäºæ´å¥½å°äºè§£æ¨çåº·å¤æ
åµï¼è¯·æ¨æ½ä¸ç¹å®è´µæ¶é´ï¼è§çè¿ä»½å®£æèµè®¯ã", |
| | | jsy: "çæ´»ä¸è¦å³é¸ç»åï¼æ³¨æä¼æ¯åè¥å
»ï¼éå½é»ç¼ï¼æçéé
ï¼ä¿æå¿æ
èç
ï¼å®æå¤è¯ã飿¬æ¬¡å®£æå
容就å°è¿éï¼ç¥æ¨èº«ä½å¥åº·ï¼", |
| | | }, |
| | | taskoptions: [ |
| | |
| | | submitForm(formName) { |
| | | this.form.preachform = this.checkList.join(","); |
| | | // this.formatFn(1); |
| | | if (!this.form.patTaskRelevances[0]) { |
| | | if (!this.form.patTaskRelevances[0]&&this.form.longTask==0) { |
| | | this.$modal.msgError("è¯·éæ©ç
人"); |
| | | return; |
| | | } |
| | |
| | | this.form.isoperation = 2; |
| | | } else { |
| | | this.form.isoperation = 1; |
| | | this.form.sendState=1; |
| | | this.form.sendState = 1; |
| | | } |
| | | if (!this.form.type) { |
| | | this.form.type = this.$route.query.type; |
| | |
| | | // ----------------------è¡¨æ ¼åç»ä»¶äºä»¶ |
| | | // éæ©æ¨¡æ¿å¹¶é¢è§ |
| | | selectfn(row, type) { |
| | | // æ¨¡æ¿æ
åµä¸è·å模æ¿ä¿¡æ¯ |
| | | this.libName = row.preachname; |
| | | this.htmlRichText = null; |
| | | this.libId = row.id; |
| | | console.log(row, "row"); |
| | | this.Tasktemplate = row; |
| | | |
| | | // 设置å½å模æ¿ç±»å |
| | | this.currentTemplateType = row.hetype || "1"; // é»è®¤ä¸ºå®£æç±»å |
| | | |
| | | this.previewtf = true; |
| | | this.previewid = row.svyid; |
| | | console.log(this.questionList, "questionList"); |
| | | // this.Variablehandling(row.svyLibScripts, 1); |
| | | console.log(row.htmlRichText); |
| | | axios |
| | | .get(row.htmlRichText) |
| | | .then((response) => { |
| | | console.log(response.data, "æ°æ®"); // è¾åºè·åå°çæä»¶å
容 |
| | | this.htmlRichText = response.data; |
| | | this.htmlRichText = this.addStyleToImages(this.htmlRichText); |
| | | }) |
| | | .catch((error) => { |
| | | this.$modal.msgError("è·å坿æ¬å¤±è´¥"); |
| | | console.error("Failed to fetch file:", error); |
| | | }); |
| | | |
| | | if (this.currentTemplateType == "2") { |
| | | // 妿æ¯éç¥æ¨¡æ¿ï¼è·åçº¯ææ¬å
容 |
| | | this.plainTextContent = row.preachcontent; |
| | | } else { |
| | | // å
¶ä»ç±»å模æ¿è·å坿æ¬å
容 |
| | | axios |
| | | .get(row.htmlRichText) |
| | | .then((response) => { |
| | | this.htmlRichText = response.data; |
| | | this.htmlRichText = this.addStyleToImages(this.htmlRichText); |
| | | }) |
| | | .catch((error) => { |
| | | this.$modal.msgError("è·å坿æ¬å¤±è´¥"); |
| | | console.error("Failed to fetch file:", error); |
| | | }); |
| | | } |
| | | }, |
| | | // é¢è§æ¨¡æ¿ |
| | | previewfnm() { |
| | |
| | | this.Tasktemplate = res.rows[0]; |
| | | this.previewtf = true; |
| | | this.previewid = res.rows[0].svyid; |
| | | axios |
| | | .get(res.rows[0].htmlRichText) |
| | | .then((response) => { |
| | | this.htmlRichText = response.data; |
| | | this.htmlRichText = this.addStyleToImages(this.htmlRichText); |
| | | }) |
| | | .catch((error) => { |
| | | this.$modal.msgError("è·å坿æ¬å¤±è´¥"); |
| | | console.error("Failed to fetch file:", error); |
| | | }); |
| | | this.currentTemplateType = res.rows[0].hetype || "1"; // é»è®¤ä¸ºå®£æç±»å |
| | | |
| | | if (this.currentTemplateType == "2") { |
| | | // 妿æ¯éç¥æ¨¡æ¿ï¼è·åçº¯ææ¬å
容 |
| | | this.plainTextContent = res.rows[0].preachcontent; |
| | | } else { |
| | | // å
¶ä»ç±»å模æ¿è·å坿æ¬å
容 |
| | | axios |
| | | .get(res.rows[0].htmlRichText) |
| | | .then((response) => { |
| | | this.htmlRichText = response.data; |
| | | this.htmlRichText = this.addStyleToImages(this.htmlRichText); |
| | | }) |
| | | .catch((error) => { |
| | | this.$modal.msgError("è·å坿æ¬å¤±è´¥"); |
| | | console.error("Failed to fetch file:", error); |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | addStyleToImages(html) { |
| | |
| | | handleExport() {}, |
| | | |
| | | // éæ©æ£è
è¡¨æ°æ® |
| | | handleSelectionChange(selection,type) { |
| | | handleSelectionChange(selection, type) { |
| | | console.log("å¤éæ£è
"); |
| | | this.SelectPatientslist = selection; |
| | | this.multiple = !selection.length; |
| | |
| | | item.sfzh = item.idcardno; |
| | | } |
| | | if (type) { |
| | | item.hospType=type |
| | | }else{ |
| | | item.hospType = type; |
| | | } else { |
| | | item.hospType = this.patientqueryParams.allhosp; |
| | | } |
| | | this.overallCase.push(item); |
| | |
| | | templateid: null, |
| | | libtemplateid: null, |
| | | serviceType: Number(this.$route.query.serviceType), |
| | | kcb: "亲ç±çæ£è
-å®¶å±ï¼æä»¬æ¯"+localStorage.getItem("orgname")+"ç廿¤äººåï¼ä¸ºäºæ´å¥½å°äºè§£æ¨çåº·å¤æ
åµï¼è¯·æ¨æ½ä¸ç¹å®è´µæ¶é´ï¼å®æè¿ä»½é访é®å·ã", |
| | | kcb: |
| | | "亲ç±çæ£è
-å®¶å±ï¼æä»¬æ¯" + |
| | | localStorage.getItem("orgname") + |
| | | "ç廿¤äººåï¼ä¸ºäºæ´å¥½å°äºè§£æ¨çåº·å¤æ
åµï¼è¯·æ¨æ½ä¸ç¹å®è´µæ¶é´ï¼è§çè¿ä»½å®£æèµè®¯ã", |
| | | jsy: "çæ´»ä¸è¦å³é¸ç»åï¼æ³¨æä¼æ¯åè¥å
»ï¼éå½é»ç¼ï¼æçéé
ï¼ä¿æå¿æ
èç
ï¼å®æå¤è¯ã飿¬æ¬¡å访就å°è¿éï¼ç¥æ¨èº«ä½å¥åº·ï¼", |
| | | }; |
| | | |
| | |
| | | this.$refs.upload.submit(); |
| | | this.dractive++; |
| | | } else if (this.dractive == 2) { |
| | | this.handleSelectionChange(this.uploadingData,4); |
| | | this.handleSelectionChange(this.uploadingData, 4); |
| | | this.upload.open = false; |
| | | this.dractive = 1 |
| | | this.dractive = 1; |
| | | } |
| | | }, |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | /* æ°å¢æ ·å¼ */ |
| | | .preview-left { |
| | | padding: 20px; |
| | | max-height: 70vh; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | /* çº¯ææ¬å
å®¹æ ·å¼ */ |
| | | .plain-text-content { |
| | | white-space: pre-wrap; |
| | | font-size: 16px; |
| | | line-height: 1.6; |
| | | padding: 15px; |
| | | background: #f9f9f9; |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | .download { |
| | | text-align: center; |
| | | .el-upload__tip { |
| | |
| | | <el-radio-group v-model="form.longTask"> |
| | | <el-radio :label="0">èªå®ä¹å¨æ</el-radio> |
| | | <el-radio :label="1">é¿æä»»å¡</el-radio> |
| | | <el-radio :label="2">åºå®ä»»å¡</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-row :gutter="20" v-if="form.longTask"> |
| | |
| | | <template> |
| | | <div class="Questionnairemanagement"> |
| | | <!-- 左侧æ --> |
| | | <!-- <div class="sidecolumn"> |
| | | <div class="sidecolumn-top"> |
| | | <div class="top-wj">æ£è
èå´</div> |
| | | </div> |
| | | |
| | | <div class="bottom-fl"> |
| | | <el-tabs |
| | | tab-position="right" |
| | | v-model="activeName" |
| | | @tab-click="handleClick" |
| | | > |
| | | <el-tab-pane label="å
¨é¨" name="first"></el-tab-pane> |
| | | <el-tab-pane label="ä½é¢" name="bhospitalized"></el-tab-pane> |
| | | <el-tab-pane label="å¨é¢" name="Inhospital"></el-tab-pane> |
| | | <el-tab-pane label="é¨è¯" name="outpatient"></el-tab-pane> |
| | | <el-tab-pane label="使£" name="physical"></el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </div> --> |
| | | <!-- å³ä¾§æ°æ® --> |
| | | <div class="leftvlue"> |
| | | <!-- <div class="leftvlue-top"> |
| | | <el-tabs v-model="topactiveName" @tab-click="tophandleClick"> |
| | | <el-tab-pane name="Local"> |
| | | <span class="mulsz" slot="label">æåºé¢ç
åºç»è®¡ </span> |
| | | </el-tab-pane> |
| | | <el-tab-pane name="sharing"> |
| | | <span class="mulsz" slot="label">æåºé¢ç§å®¤ç»è®¡ </span> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> --> |
| | | <div class="leftvlue-bg"> |
| | | <el-row :gutter="20"> |
| | | <!--æ ç¾æ°æ®--> |
| | |
| | | v-show="showSearch" |
| | | label-width="98px" |
| | | > |
| | | <!-- <el-form-item label="责任å»ç" prop="userName"> |
| | | <el-input |
| | | v-model="queryParams.drname" |
| | | placeholder="请è¾å
¥ä¸»æ²»å»ç" |
| | | ></el-input> |
| | | </el-form-item> --> |
| | | <el-form-item label="ç»è®¡ç±»å" prop="userName"> |
| | | <el-select |
| | | v-model="queryParams.statisticaltype" |
| | |
| | | @click="handleExport" |
| | | >导åº</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="el-icon-data-line" |
| | | size="medium" |
| | | @click="showChartDialog" |
| | | >ç»è®¡è¶å¿å¾</el-button |
| | | > |
| | | </el-col> |
| | | </el-form> |
| | | <!-- <right-toolbar |
| | | :showSearch.sync="showSearch" |
| | | @queryTable="getList" |
| | | :columns="columns" |
| | | ></right-toolbar> --> |
| | | <el-table |
| | | v-loading="loading" |
| | | :data="userList" |
| | | :border="true" |
| | | @selection-change="handleSelectionChange" |
| | | @row-click="handleRowClick" |
| | | @expand-change="handleRowClick" |
| | | :row-key="getRowKey" |
| | | :expand-row-keys="expands" |
| | | > |
| | | <!-- å±å¼è¡ç®å¤´å --> |
| | | <el-table-column type="expand"> |
| | | <template slot-scope="props"> |
| | | <el-table |
| | | :data="props.row.doctorStats" |
| | | border |
| | | style="width: 95%; margin: 0 auto" |
| | | class="inner-table" |
| | | > |
| | | <el-table-column |
| | | label="å»çå§å" |
| | | prop="drname" |
| | | align="center" |
| | | /> |
| | | <el-table-column |
| | | label="ç§å®¤" |
| | | width="120" |
| | | prop="deptname" |
| | | align="center" |
| | | /> |
| | | <el-table-column |
| | | label="åºé¢äººæ¬¡" |
| | | prop="dischargeCount" |
| | | align="center" |
| | | /> |
| | | <el-table-column |
| | | label="åºé¢äººæ¬¡" |
| | | align="center" |
| | | key="dischargeCount" |
| | | prop="dischargeCount" |
| | | > |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="æ éé访人次" |
| | | align="center" |
| | | width="100" |
| | | key="nonFollowUp" |
| | | prop="nonFollowUp" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="åºé访人次" |
| | | align="center" |
| | | width="100" |
| | | key="followUpNeeded" |
| | | prop="followUpNeeded" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column align="center" label="馿¬¡åºé¢é访"> |
| | | <el-table-column |
| | | label="åºé访" |
| | | align="center" |
| | | key="needFollowUp" |
| | | prop="needFollowUp" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="å¾
é访" |
| | | align="center" |
| | | key="pendingFollowUp" |
| | | prop="pendingFollowUp" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="é访æå" |
| | | align="center" |
| | | key="followUpSuccess" |
| | | prop="followUpSuccess" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="é访失败" |
| | | align="center" |
| | | key="followUpFail" |
| | | prop="followUpFail" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="é访ç" |
| | | align="center" |
| | | width="120" |
| | | key="followUpRate" |
| | | prop="followUpRate" |
| | | > |
| | | <!-- <template slot-scope="scope"> |
| | | <span |
| | | >{{ |
| | | (Number(scope.row.followUpRate) * 100).toFixed(2) |
| | | }}%</span |
| | | > |
| | | </template> --> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="åæ¶ç" |
| | | align="center" |
| | | width="120" |
| | | key="rate" |
| | | prop="rate" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click="Seedetails(scope.row)" |
| | | ><span class="button-zx" |
| | | >{{ |
| | | (Number(scope.row.rate) * 100).toFixed(2) |
| | | }}%</span |
| | | ></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="人工" |
| | | align="center" |
| | | key="manual" |
| | | prop="manual" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="çä¿¡" |
| | | align="center" |
| | | key="sms" |
| | | prop="sms" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="微信" |
| | | align="center" |
| | | key="weChat" |
| | | prop="weChat" |
| | | > |
| | | </el-table-column> |
| | | </el-table-column> |
| | | <el-table-column align="center" label="忬¡åºé¢é访"> |
| | | <el-table-column |
| | | label="åºé访" |
| | | align="center" |
| | | key="needFollowUpAgain" |
| | | prop="needFollowUpAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="å¾
é访" |
| | | align="center" |
| | | key="pendingFollowUpAgain" |
| | | prop="pendingFollowUpAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="é访æå" |
| | | align="center" |
| | | key="followUpSuccessAgain" |
| | | prop="followUpSuccessAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="é访失败" |
| | | align="center" |
| | | key="followUpFailAgain" |
| | | prop="followUpFailAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="é访ç" |
| | | align="center" |
| | | width="120" |
| | | key="followUpRateAgain" |
| | | prop="followUpRateAgain" |
| | | > |
| | | <!-- <template slot-scope="scope"> |
| | | <span |
| | | >{{ |
| | | (Number(scope.row.FollowUpRateAgain) * 100).toFixed(2) |
| | | }}%</span |
| | | > |
| | | </template> --> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="人工" |
| | | align="center" |
| | | key="manualAgain" |
| | | prop="manualAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="çä¿¡" |
| | | align="center" |
| | | key="smsAgain" |
| | | prop="smsAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="微信" |
| | | align="center" |
| | | key="weChatAgain" |
| | | prop="weChatAgain" |
| | | > |
| | | </el-table-column> |
| | | </el-table-column> |
| | | </el-table> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="åºé¢ç
åº" |
| | | align="center" |
| | |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | <!-- ç»è®¡è¶å¿å¾å¼¹çª --> |
| | | <el-dialog |
| | | title="é访ç»è®¡è¶å¿å¾" |
| | | :visible.sync="chartDialogVisible" |
| | | width="80%" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <div class="chart-container"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <div class="chart-title">éè®¿ç¶æåå¸</div> |
| | | <div id="pieChart" style="width: 100%; height: 400px"></div> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div class="chart-title">é访è¶å¿åæ</div> |
| | | <div id="barLineChart" style="width: 100%; height: 400px"></div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog |
| | | title="æªåæ¶é访æ£è
æå¡" |
| | | :visible.sync="SeedetailsVisible" |
| | |
| | | return { |
| | | topactiveName: "Local", //é¡¶é¨éæ© |
| | | activeName: "first", //ä¾§è¾¹éæ© |
| | | expands: [], |
| | | // é®ç½©å± |
| | | loading: false, |
| | | Seedloading: false, |
| | | chartDialogVisible: false, |
| | | pieChart: null, |
| | | barLineChart: null, |
| | | // é䏿°ç» |
| | | ids: [], |
| | | // éå个ç¦ç¨ |
| | |
| | | dateRange: [], |
| | | statisticaltype: 1, |
| | | leavehospitaldistrictcodes: ["all"], // é»è®¤éä¸å
¨é¨ç
åº |
| | | deptcodes: ["all"], // é»è®¤éä¸å
¨é¨ç§å®¤ |
| | | deptcodes: [], // é»è®¤éä¸å
¨é¨ç§å®¤ |
| | | }, |
| | | // åä¿¡æ¯ |
| | | columns: [ |
| | |
| | | this.userList = response.data; |
| | | }); |
| | | }, |
| | | getRowKey(row) { |
| | | return row.statisticaltype === 1 |
| | | ? row.leavehospitaldistrictcode |
| | | : row.deptcode; |
| | | }, |
| | | |
| | | // å¤çè¡ç¹å»å±å¼ |
| | | handleRowClick(row) { |
| | | console.log(row, "row"); |
| | | |
| | | // 妿已ç»å±å¼åæ¶èµ· |
| | | if (this.expands.includes(this.getRowKey(row))) { |
| | | this.expands = []; |
| | | return; |
| | | } |
| | | // å¤çæ¥è¯¢åæ° |
| | | const params = { |
| | | ...this.queryParams, |
| | | // 妿鿩äº"å
¨é¨"ï¼åä¼ ææç
åº/ç§å®¤ä»£ç |
| | | leavehospitaldistrictcodes: [row.leavehospitaldistrictcode], |
| | | drcode: "1", |
| | | }; |
| | | // å¦æè¯¥è¡è¿æ²¡æå è½½å»çæ°æ®ï¼åå è½½ |
| | | if (!row.doctorStats) { |
| | | this.loading = true; |
| | | getSfStatistics(params).then((res) => { |
| | | this.$set(row, "doctorStats", res.data); |
| | | this.expands = [this.getRowKey(row)]; |
| | | this.loading = false; |
| | | }); |
| | | } else { |
| | | this.expands = [this.getRowKey(row)]; |
| | | } |
| | | }, |
| | | /** ä¿®æ¹æ ç¾ */ |
| | | handleUpdate(row) { |
| | | console.log(row, "ä¿®æ¹æ ç¾"); |
| | |
| | | ); |
| | | this.flatArraydept.push({ label: "å
¨é¨", value: "all" }); |
| | | this.flatArrayhospit.push({ label: "å
¨é¨", value: "all" }); |
| | | |
| | | }, |
| | | flattenArray(multiArray) { |
| | | let result = []; |
| | |
| | | `user_${new Date().getTime()}.xlsx` |
| | | ); |
| | | }, |
| | | // æ¾ç¤ºå¾è¡¨å¼¹çª |
| | | |
| | | showChartDialog() { |
| | | this.chartDialogVisible = true; |
| | | this.$nextTick(() => { |
| | | this.initPieChart(); |
| | | this.initBarLineChart(); |
| | | }); |
| | | }, |
| | | // å¨methodsä¸ä¿®æ¹ç»è®¡æ¹æ³ |
| | | showChartDialog() { |
| | | this.chartDialogVisible = true; |
| | | this.$nextTick(() => { |
| | | console.log(this.userList, "this.userList"); |
| | | |
| | | this.initCharts(); |
| | | }); |
| | | }, |
| | | |
| | | // æ°å¢åå§åå¾è¡¨æ¹æ³ |
| | | initCharts() { |
| | | this.initPieChart(); |
| | | this.initBarLineChart(); |
| | | }, |
| | | |
| | | // åå§åé¥¼å¾ |
| | | initPieChart() { |
| | | const echarts = require("echarts"); |
| | | const pieDom = document.getElementById("pieChart"); |
| | | if (!pieDom) return; |
| | | |
| | | if (this.pieChart) { |
| | | this.pieChart.dispose(); |
| | | } |
| | | |
| | | this.pieChart = echarts.init(pieDom); |
| | | |
| | | // 计ç®é¥¼å¾æ°æ® |
| | | const followUpData = { |
| | | pending: 0, |
| | | success: 0, |
| | | fail: 0, |
| | | }; |
| | | |
| | | this.userList.forEach((item) => { |
| | | followUpData.pending += item.pendingFollowUp || 0; |
| | | followUpData.success += item.followUpSuccess || 0; |
| | | followUpData.fail += item.followUpFail || 0; |
| | | }); |
| | | |
| | | // ä½¿ç¨æ´ç¾è§çé¢è²æ¹æ¡ |
| | | const pieOption = { |
| | | title: { |
| | | text: "éè®¿ç¶æåå¸", |
| | | left: "center", |
| | | textStyle: { |
| | | color: '#333', |
| | | fontSize: 16 |
| | | } |
| | | }, |
| | | tooltip: { |
| | | trigger: "item", |
| | | formatter: "{a} <br/>{b}: {c} ({d}%)", |
| | | }, |
| | | legend: { |
| | | orient: "vertical", |
| | | left: "left", |
| | | data: ["å¾
é访", "é访æå", "é访失败"], |
| | | textStyle: { |
| | | color: '#666' |
| | | } |
| | | }, |
| | | color: ['#FF9D4D', '#36B37E', '#FF5C5C'], // æ°çé
è²æ¹æ¡ |
| | | series: [ |
| | | { |
| | | name: "éè®¿ç¶æ", |
| | | type: "pie", |
| | | radius: ["40%", "70%"], |
| | | avoidLabelOverlap: true, |
| | | itemStyle: { |
| | | borderRadius: 10, |
| | | borderColor: "#fff", |
| | | borderWidth: 2 |
| | | }, |
| | | label: { |
| | | show: true, |
| | | formatter: "{b}: {c} ({d}%)", |
| | | color: '#333' |
| | | }, |
| | | emphasis: { |
| | | label: { |
| | | show: true, |
| | | fontSize: "18", |
| | | fontWeight: "bold" |
| | | }, |
| | | itemStyle: { |
| | | shadowBlur: 10, |
| | | shadowOffsetX: 0, |
| | | shadowColor: 'rgba(0, 0, 0, 0.5)' |
| | | } |
| | | }, |
| | | data: [ |
| | | { |
| | | value: followUpData.pending, |
| | | name: "å¾
é访" |
| | | }, |
| | | { |
| | | value: followUpData.success, |
| | | name: "é访æå" |
| | | }, |
| | | { |
| | | value: followUpData.fail, |
| | | name: "é访失败" |
| | | } |
| | | ] |
| | | } |
| | | ] |
| | | }; |
| | | |
| | | this.pieChart.setOption(pieOption); |
| | | window.addEventListener("resize", this.resizePieChart); |
| | | }, |
| | | |
| | | // åå§åæ±ç¶æçº¿å¾ |
| | | initBarLineChart() { |
| | | const echarts = require("echarts"); |
| | | const barDom = document.getElementById("barLineChart"); |
| | | if (!barDom) return; |
| | | |
| | | if (this.barLineChart) { |
| | | this.barLineChart.dispose(); |
| | | } |
| | | |
| | | this.barLineChart = echarts.init(barDom); |
| | | |
| | | // å夿°æ® |
| | | const categories = this.userList.map( |
| | | (item) => item.leavehospitaldistrictname || item.deptname |
| | | ); |
| | | |
| | | const dischargeData = this.userList.map( |
| | | (item) => item.dischargeCount || 0 |
| | | ); |
| | | const followUpData = this.userList.map( |
| | | (item) => item.followUpNeeded || 0 |
| | | ); |
| | | |
| | | // æ°å¢ä¸¤æ¡æçº¿æ°æ® |
| | | const followUpRateData = this.userList.map(item => { |
| | | if (!item.followUpRate) return 0; |
| | | // 廿ç¾åå·å¹¶è½¬ä¸ºæ°å |
| | | const rateStr = String(item.followUpRate).replace('%', ''); |
| | | return parseFloat(rateStr) || 0; |
| | | }); |
| | | |
| | | const timelyRateData = this.userList.map(item => |
| | | item.rate ? (Number(item.rate) * 100).toFixed(2) : 0 |
| | | ); |
| | | |
| | | const option = { |
| | | title: { |
| | | text: "ç§å®¤/ç
åºé访è¶å¿", |
| | | left: "center", |
| | | textStyle: { |
| | | color: '#333', |
| | | fontSize: 16 |
| | | } |
| | | }, |
| | | tooltip: { |
| | | trigger: "axis", |
| | | axisPointer: { |
| | | type: "cross", |
| | | crossStyle: { |
| | | color: "#999", |
| | | }, |
| | | }, |
| | | }, |
| | | legend: { |
| | | data: ["åºé¢äººæ¬¡", "åºé访人次", "é访ç(%)", "åæ¶ç(%)"], |
| | | top: "bottom", |
| | | textStyle: { |
| | | color: '#666' |
| | | } |
| | | }, |
| | | color: ['#5470C6', '#91CC75', '#EE6666', '#9A60B4'], // æ°å¢ç´«è²ç¨äºåæ¶ç |
| | | xAxis: { |
| | | type: "category", |
| | | data: categories, |
| | | axisLabel: { |
| | | interval: 0, |
| | | rotate: 30, |
| | | color: '#666' |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#ddd' |
| | | } |
| | | } |
| | | }, |
| | | yAxis: [ |
| | | { |
| | | type: "value", |
| | | name: "人次", |
| | | min: 0, |
| | | axisLabel: { |
| | | color: '#666' |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#ddd' |
| | | } |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: '#f0f0f0' |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | type: "value", |
| | | name: "ç¾åæ¯(%)", |
| | | min: 0, |
| | | max: 100, |
| | | axisLabel: { |
| | | color: '#666', |
| | | formatter: '{value}%' |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#ddd' |
| | | } |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | } |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | name: "åºé¢äººæ¬¡", |
| | | type: "bar", |
| | | barWidth: "25%", |
| | | data: dischargeData, |
| | | itemStyle: { |
| | | borderRadius: [4, 4, 0, 0] |
| | | } |
| | | }, |
| | | { |
| | | name: "åºé访人次", |
| | | type: "bar", |
| | | barWidth: "25%", |
| | | data: followUpData, |
| | | itemStyle: { |
| | | borderRadius: [4, 4, 0, 0] |
| | | } |
| | | }, |
| | | { |
| | | name: "é访ç(%)", |
| | | type: "line", |
| | | yAxisIndex: 1, |
| | | data: followUpRateData, |
| | | symbolSize: 8, |
| | | lineStyle: { |
| | | width: 3 |
| | | }, |
| | | markLine: { |
| | | silent: true, |
| | | data: [{ |
| | | yAxis: 80, |
| | | lineStyle: { |
| | | color: '#EE6666', |
| | | type: 'dashed' |
| | | }, |
| | | // label: { |
| | | // position: 'end', |
| | | // formatter: 'ç®æ 80%' |
| | | // } |
| | | }] |
| | | } |
| | | }, |
| | | { |
| | | name: "åæ¶ç(%)", |
| | | type: "line", |
| | | yAxisIndex: 1, |
| | | data: timelyRateData, |
| | | symbolSize: 8, |
| | | lineStyle: { |
| | | width: 3, |
| | | type: 'dotted' // 使ç¨è线åºå |
| | | }, |
| | | markLine: { |
| | | silent: true, |
| | | data: [{ |
| | | yAxis: 90, |
| | | lineStyle: { |
| | | color: '#9A60B4', |
| | | type: 'dashed' |
| | | }, |
| | | // label: { |
| | | // position: 'end', |
| | | // formatter: 'ç®æ 90%' |
| | | // } |
| | | }] |
| | | } |
| | | } |
| | | ], |
| | | grid: { |
| | | top: '15%', |
| | | left: '3%', |
| | | right: '4%', |
| | | bottom: '15%', |
| | | containLabel: true |
| | | } |
| | | }; |
| | | |
| | | this.barLineChart.setOption(option); |
| | | window.addEventListener("resize", this.resizeBarLineChart); |
| | | }, |
| | | |
| | | // å¾è¡¨ååºå¼è°æ´æ¹æ³ |
| | | resizePieChart() { |
| | | if (this.pieChart) { |
| | | this.pieChart.resize(); |
| | | } |
| | | }, |
| | | |
| | | resizeBarLineChart() { |
| | | if (this.barLineChart) { |
| | | this.barLineChart.resize(); |
| | | } |
| | | }, |
| | | |
| | | // å¨ç»ä»¶éæ¯æ¶æ¸
ç |
| | | beforeDestroy() { |
| | | // ç§»é¤äºä»¶çå¬ |
| | | window.removeEventListener("resize", this.resizePieChart); |
| | | window.removeEventListener("resize", this.resizeBarLineChart); |
| | | |
| | | // 鿝å¾è¡¨å®ä¾ |
| | | if (this.pieChart) { |
| | | this.pieChart.dispose(); |
| | | this.pieChart = null; |
| | | } |
| | | if (this.barLineChart) { |
| | | this.barLineChart.dispose(); |
| | | this.barLineChart = null; |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | font-size: 20px; |
| | | } |
| | | } |
| | | /* ä½¿è¡ææåæé */ |
| | | .el-table__row { |
| | | cursor: pointer; |
| | | } |
| | | /* å
å±å»çè¡¨æ ¼æ ·å¼ */ |
| | | .inner-table { |
| | | // è¡¨å¤´èæ¯è² |
| | | ::v-deep .el-table__header-wrapper { |
| | | background-color: #f0f7ff !important; |
| | | |
| | | th { |
| | | background-color: #f0f7ff !important; |
| | | } |
| | | } |
| | | |
| | | // è¡¨æ ¼è¡èæ¯è² |
| | | ::v-deep .el-table__body-wrapper { |
| | | tr { |
| | | background-color: #f9fbfe !important; |
| | | |
| | | &:hover { |
| | | background-color: #e6f1ff !important; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // è¾¹æ¡é¢è² |
| | | ::v-deep .el-table--border { |
| | | border-color: #d9e8ff !important; |
| | | |
| | | td, |
| | | th { |
| | | border-color: #d9e8ff !important; |
| | | } |
| | | } |
| | | |
| | | // æé©¬çº¹ææ |
| | | ::v-deep .el-table--striped .el-table__body tr.el-table__row--striped td { |
| | | background-color: #f5f9ff !important; |
| | | } |
| | | } |
| | | /* å±å¼è¡æ ·å¼ */ |
| | | .el-table__expanded-cell { |
| | | padding: 10px 0 !important; |
| | | background: #f8f8f8; |
| | | } |
| | | .document { |
| | | width: 100px; |
| | | height: 50px; |
| | |
| | | <template> |
| | | <div class="Questionnairemanagement"> |
| | | <div class="NotificationManagement"> |
| | | <!-- 左侧æ --> |
| | | <div class="sidecolumn"> |
| | | <el-steps finish-status="success" :active="Editprogress" simple> |
| | |
| | | > |
| | | </template> |
| | | </el-step> |
| | | <el-step> |
| | | <template slot="title"> |
| | | <span style="cursor: pointer" @click="Editprogress = 2" |
| | | >éç¥å
容</span |
| | | > |
| | | </template> |
| | | </el-step> |
| | | </el-steps> |
| | | </div> |
| | | <!-- å³ä¾§æ°æ® --> |
| | |
| | | <!-- åºæ¬ä¿¡æ¯ --> |
| | | <div v-if="Editprogress == 1"> |
| | | <div class="leftvlue-jbxx">åºæ¬ä¿¡æ¯</div> |
| | | <el-divider></el-divider> |
| | | <el-form |
| | | :model="ruleForm" |
| | | :rules="rules" |
| | |
| | | <el-col :span="12"> </el-col> |
| | | </el-row> |
| | | <el-form-item label="éç¥æ é¢" prop="preachname"> |
| | | <div style="width: 30%"> |
| | | <div style="width: 60%"> |
| | | <el-input |
| | | v-model="ruleForm.preachname" |
| | | placeholder="请è¾å
¥æ é¢" |
| | | ></el-input> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="éç¥æè¿°" prop="preachcontent"> |
| | | <div style="width: 60%"> |
| | | <el-form-item label="éç¥å
容" prop="preachcontent"> |
| | | <div style="width: 80%"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="2" |
| | | :rows="5" |
| | | v-model="ruleForm.preachcontent" |
| | | placeholder="请è¾å
¥æè¿°" |
| | | placeholder="请è¾å
¥éç¥å
容" |
| | | ></el-input> |
| | | </div> |
| | | </el-form-item> |
| | |
| | | </div> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æä»¶" prop="sickness"> |
| | | <div style="width: 40%"> |
| | | <el-upload |
| | | class="upload-demo" |
| | | action="https://jsonplaceholder.typicode.com/posts/" |
| | | :on-change="handleChange" |
| | | :file-list="fileList" |
| | | > |
| | | <el-button size="small" type="primary">ç¹å»ä¸ä¼ </el-button> |
| | | <div slot="tip" class="el-upload__tip"> |
| | | åªè½ä¸ä¼ jpg/png/xslæä»¶ï¼ä¸ä¸è¶
è¿50mb |
| | | </div> |
| | | </el-upload> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="æ ç¾" prop="desc"> |
| | | <div class="xinz-inf"> |
| | | <el-tag |
| | |
| | | @change="handleInputConfirm" |
| | | filterable |
| | | remote |
| | | allow-create |
| | | reserve-keyword |
| | | default-first-option |
| | | :remote-method="remoteMethodtag" |
| | |
| | | ></el-col> |
| | | <el-col :span="9"> |
| | | <el-form-item label="å¯ç¨ç¶æ" prop="region"> |
| | | <el-select |
| | | v-model="ruleForm.isavailable" |
| | | size="medium" |
| | | filterable |
| | | placeholder="è¯·éæ©åç±»" |
| | | > |
| | | <el-option |
| | | class="ruleFormaa" |
| | | v-for="item in usable" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | <el-radio-group v-model="ruleForm.isAvailable"> |
| | | <el-radio |
| | | v-for="(item, index) in usable" |
| | | :label="item.value" |
| | | >{{ item.label }}</el-radio |
| | | > |
| | | </el-option> |
| | | </el-select> </el-form-item |
| | | ></el-col> |
| | | </el-radio-group> |
| | | </el-form-item></el-col |
| | | > |
| | | </el-row> |
| | | <el-form-item label="éç¥æ¹å¼" prop="region"> |
| | | <el-select |
| | | v-model="ruleForm.suitway" |
| | | size="medium" |
| | | multiple |
| | | filterable |
| | | placeholder="è¯·éæ©åç±»" |
| | | > |
| | | <el-option |
| | | class="ruleFormaa" |
| | | v-for="item in mode" |
| | | :key="item.label" |
| | | :label="item.label" |
| | | :value="item.label" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="éç¨ç¾ç
" prop="region"> |
| | | <el-button type="warning" @click="$refs.child.handleAddpatient()" |
| | | >æ·»å ç¾ç
</el-button |
| | | > |
| | | </el-form-item> --> |
| | | <el-form-item label="éç¨é¢åº" prop="region"> |
| | | <el-select |
| | | v-model="ruleForm.campus" |
| | | size="medium" |
| | | multiple |
| | | filterable |
| | | placeholder="è¯·éæ©åç±»" |
| | | placeholder="è¯·éæ©é¢åº" |
| | | > |
| | | <el-option |
| | | class="ruleFormaa" |
| | |
| | | </el-cascader> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="success" @click="nextstep('ruleForm')" |
| | | >ä¸ä¸æ¥</el-button |
| | | > |
| | | <el-button type="success" @click="Departmenttreatment('ruleForm')" |
| | | >ä¿å</el-button |
| | | > |
| | | <el-button type="info" @click="closeFm('ruleForm')">å
³é</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <!-- éç¥å
容 --> |
| | | <div v-if="Editprogress == 2"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="4"><div class="leftvlue-jbxx">éç¥å
容</div></el-col> |
| | | </el-row> |
| | | |
| | | <div> |
| | | <el-form |
| | | :model="ruleForm" |
| | | :rules="rules" |
| | | ref="ruleForm" |
| | | label-width="100px" |
| | | class="demo-ruleForm" |
| | | > |
| | | <el-row gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="èµæå½¢å¼" prop="region"> |
| | | <el-select |
| | | v-model="ruleForm.shape" |
| | | placeholder="è¯·éæ©å
容形å¼" |
| | | > |
| | | <el-option |
| | | v-for="item in xjxsoptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div> |
| | | <el-button @click="laststep('ruleForm')">ä¸ä¸æ¥</el-button> |
| | | <el-button |
| | | type="success" |
| | | @click="Departmenttreatment('ruleForm')" |
| | | >ä¿å</el-button |
| | | > |
| | | <el-button |
| | | type="warning" |
| | | @click="Departmenttreatment('ruleForm')" |
| | | >å¦åæ°çæ¬</el-button |
| | | > |
| | | <el-button type="info" @click="closeFm('ruleForm')" |
| | | >å
³é</el-button |
| | | > |
| | | </div></el-col |
| | | > |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <div> |
| | | <el-upload |
| | | class="upload-demo" |
| | | :action="uploadImgUrlword" |
| | | :on-success="uploadEditorSuccessword" |
| | | :on-error="uploadEditorErrorword" |
| | | :before-upload="beforeEditorUploadword" |
| | | :headers="headers" |
| | | > |
| | | <el-button size="small" type="primary">wordæä»¶ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | <div id="quillEditorQiniu"> |
| | | <!-- åºäºelementUiçä¸ä¼ ç»ä»¶ el-upload begin--> |
| | | <el-upload |
| | | class="avatar-uploader" |
| | | :action="uploadImgUrl" |
| | | :accept="'image/*,video/*'" |
| | | :show-file-list="false" |
| | | :on-success="uploadEditorSuccess" |
| | | :on-error="uploadEditorError" |
| | | :before-upload="beforeEditorUpload" |
| | | :headers="headers" |
| | | > |
| | | </el-upload> |
| | | <!-- åºäºelementUiçä¸ä¼ ç»ä»¶ el-upload end--> |
| | | <quill-editor |
| | | class="editor" |
| | | v-model="content" |
| | | ref="customQuillEditor" |
| | | :options="editorOption" |
| | | @blur="onEditorBlur" |
| | | @focus="onEditorFocus" |
| | | @change="onEditorChange" |
| | | > |
| | | </quill-editor> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- æ·»å éç¨ç¾ç
çªå£ --> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { quillEditor } from "vue-quill-editor"; |
| | | import axios from "axios"; |
| | | |
| | | import { |
| | | getheLibraryAssort, |
| | | delheLibraryAssort, |
| | |
| | | illnesslistget, |
| | | getillness, |
| | | } from "@/api/AiCentre/index"; |
| | | import OptionalForm from "@/components/OptionalForm"; //æ£åç»ä»¶ |
| | | |
| | | import OptionalForm from "@/components/OptionalForm"; |
| | | import { listDept } from "@/api/system/dept"; |
| | | // import * as Quill from "quill"; |
| | | import Quill from "quill"; |
| | | import { listtag } from "@/api/system/label"; |
| | | import store from "@/store"; |
| | | |
| | | // è¿éå¼å
¥ä¿®æ¹è¿çvideo模å并注å |
| | | import Video from "./video"; |
| | | Quill.register(Video, true); |
| | | //è·åç»å½tokenï¼å¼å
¥æä»¶ï¼å¦æåªæ¯ç®åæµè¯ï¼æ²¡æä¸ä¼ æä»¶æ¯å¦ç»å½çéå¶çè¯ï¼ |
| | | //è¿ä¸ªtokenå¯ä»¥ä¸ç¨è·åï¼æä»¶å¯ä»¥ä¸å¼å
¥ï¼æä¸é¢å¯¹åºçä¸ä¼ æä»¶æºå¸¦è¯·æ±å¤´ :headers="headers" è¿ä¸ªä»£ç å æå³å¯ |
| | | import { getToken } from "@/utils/auth"; |
| | | const toolbarOptions = [ |
| | | ["bold", "italic", "underline", "strike"], // toggled buttons |
| | | ["blockquote", "code-block"], |
| | | |
| | | [{ header: 1 }, { header: 2 }], // custom button values |
| | | [{ list: "ordered" }, { list: "bullet" }], |
| | | [{ script: "sub" }, { script: "super" }], // superscript/subscript |
| | | [{ indent: "-1" }, { indent: "+1" }], // outdent/indent |
| | | [{ direction: "rtl" }], // text direction |
| | | |
| | | [{ size: ["small", false, "large", "huge"] }], // custom dropdown |
| | | [{ header: [1, 2, 3, 4, 5, 6, false] }], |
| | | |
| | | [{ color: [] }, { background: [] }], // dropdown with defaults from theme |
| | | [{ font: [] }], |
| | | [{ align: [] }], |
| | | ["link", "image", "video"], |
| | | ["clean"], // remove formatting button |
| | | ]; |
| | | |
| | | export default { |
| | | name: "NotificationManagement", |
| | | components: { OptionalForm }, |
| | | data() { |
| | | return { |
| | | headers: { |
| | | Authorization: "Bearer " + getToken(), |
| | | }, |
| | | uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", |
| | | uploadImgUrlword: process.env.VUE_APP_BASE_API + "/common/uploadShow", |
| | | uploadUrlPath: "没ææä»¶ä¸ä¼ ", |
| | | quillUpdateImg: false, |
| | | fileList: [ |
| | | { |
| | | name: "food.jpeg", |
| | | url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100", |
| | | }, |
| | | { |
| | | name: "food2.jpeg", |
| | | url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100", |
| | | }, |
| | | ], |
| | | content: "", //æç»ä¿åçå
容 |
| | | fileName: "", //æä»¶å |
| | | dynamicTags: [], |
| | | inputVisible: false, |
| | | illnessVisible: false, |
| | | dialogVisiblepatient: false, //éç¨ç¾ç
çªå£ |
| | | dialogVisiblepatient: false, |
| | | inputValue: "", |
| | | // å¯ææ¬ |
| | | editorOption: { |
| | | placeholder: "ä½ æ³è¯´ä»ä¹ï¼", |
| | | modules: { |
| | | imageResize: { |
| | | displayStyles: { |
| | | backgroundColor: "black", |
| | | border: "none", |
| | | color: "white", |
| | | }, |
| | | modules: ["Resize", "DisplaySize", "Toolbar"], |
| | | }, |
| | | toolbar: { |
| | | container: toolbarOptions, // å·¥å
·æ |
| | | handlers: { |
| | | image: function (value) { |
| | | if (value) { |
| | | document |
| | | .querySelector("#quillEditorQiniu .avatar-uploader input") |
| | | .click(); |
| | | } else { |
| | | this.quill.format("image", false); |
| | | } |
| | | }, |
| | | video: function (value) { |
| | | if (value) { |
| | | document |
| | | .querySelector("#quillEditorQiniu .avatar-uploader input") |
| | | .click(); |
| | | } else { |
| | | this.quill.format("video", false); |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | }, |
| | | }, |
| | | |
| | | sidecolumnrabs: "left", //æ¹å |
| | | Editprogress: 1, //ç¼è¾è¿åº¦ |
| | | currentVersion: "1.2.3", //å½åçæ¬ |
| | | loading: false, // é®ç½©å± |
| | | drawer: false, //æ§å¶å±å¼ |
| | | radio: "false", //åéé¢éä¸ |
| | | radios: [], //å¤éé¢éä¸ |
| | | radioas: "", //填空é¢çæ¡ |
| | | // æ»æ¡æ° |
| | | sidecolumnrabs: "left", |
| | | Editprogress: 1, |
| | | currentVersion: "1.2.3", |
| | | loading: false, |
| | | drawer: false, |
| | | radio: "false", |
| | | radios: [], |
| | | radioas: "", |
| | | total: 1, |
| | | hetype: "", |
| | | id: null, |
| | |
| | | deptList: [], |
| | | tempDetpRelevanceslist: [], |
| | | props: { multiple: true, value: "deptId", label: "deptName" }, |
| | | xjxsoptions: [ |
| | | { |
| | | value: "1", |
| | | label: "徿", |
| | | }, |
| | | { |
| | | value: "2", |
| | | label: "è§é¢", |
| | | }, |
| | | { |
| | | value: "3", |
| | | label: "é³é¢", |
| | | }, |
| | | ], |
| | | valssu: [ |
| | | { |
| | | idd: 1, |
| | | wssd: "ä½ æè¿æä¹æ ·", |
| | | sdadd: ["sss", "ssccss", "ssaas", "ss"], |
| | | }, |
| | | ], |
| | | addvalue: "æ·»å é¢ç®", |
| | | |
| | | variablelist: [ |
| | | { variatename: "å§å", variate: "${name}", default: 1 }, |
| | | { variatename: "çµè¯", variate: "${phone}", default: 1 }, |
| | | { variatename: "ç
æ
", variate: "${illness}", default: 1 }, |
| | | ], |
| | | // æ¥è¯¢åæ° |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | }, |
| | | }; |
| | | }, |
| | | |
| | | activated() { |
| | | if (this.id != this.$route.query.id) { |
| | | this.gettabList(); |
| | | this.getList(); |
| | | this.illnessUpdate(); |
| | | } |
| | | }, |
| | | created() { |
| | | this.gettabList(); |
| | | this.getList(); |
| | |
| | | this.precedencetype = store.getters.precedencetype; |
| | | this.courtyardlist = store.getters.courtyardlist; |
| | | }, |
| | | watch: { |
| | | content(newVal, oldVal) { |
| | | //this.$emit('input', newVal); |
| | | console.log(newVal, "A"); |
| | | console.log(oldVal, "B"); |
| | | }, |
| | | }, |
| | | |
| | | methods: { |
| | | processElement(element) { |
| | | return { ...element, isoperation: null }; |
| | | }, |
| | | // è·å页颿°æ® |
| | | getList() { |
| | | this.loading = true; |
| | |
| | | if (this.id) { |
| | | getlibraryinfo({ id: this.id }).then((res) => { |
| | | this.ruleForm = res.data[0]; |
| | | this.ruleForm.campus = this.ruleForm.campus.split(","); |
| | | if (this.ruleForm.campus) |
| | | this.ruleForm.campus = this.ruleForm.campus.split(","); |
| | | this.dynamicTags = res.data[0].heLibraryTagList.map( |
| | | this.processElement |
| | | ); |
| | | this.Getmissioncontent(this.ruleForm.richText); |
| | | if (this.ruleForm.deptNames) { |
| | | this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames); |
| | | } |
| | | if (this.ruleForm.suitway) { |
| | | this.ruleForm.suitway = this.ruleForm.suitway.split(","); |
| | | } |
| | | this.variablelist = this.ruleForm.otherdata |
| | | ? JSON.parse(this.ruleForm.otherdata) |
| | |
| | | // éç¥åç±» |
| | | getheLibraryAssort({ hetype: 2 }).then((res) => { |
| | | this.sortlist = res.rows; |
| | | console.log(this.sortlist); |
| | | }); |
| | | // é¨é¨ |
| | | listDept(this.queryParams).then((response) => { |
| | | this.deptList = this.handleTree(response.data, "deptId"); |
| | | }); |
| | | this.loading = false; |
| | | }, |
| | | |
| | | processElement(element) { |
| | | return { ...element, isoperation: null }; |
| | | }, |
| | | submitForm(formName) { |
| | | let tgs = []; |
| | | this.dynamicTags.forEach((item) => { |
| | | tgs.push(item.tagname); |
| | | }); |
| | | this.ruleForm.campus = this.ruleForm.campus.join(","); |
| | | if (this.ruleForm.campus) { |
| | | this.ruleForm.campus = this.ruleForm.campus.join(","); |
| | | } |
| | | this.ruleForm.labelInfo = tgs.length != 0 ? tgs.join(", ") : ""; |
| | | this.ruleForm.otherdata = JSON.stringify(this.variablelist); |
| | | this.ruleForm.hetype = 2; |
| | | console.log(22); |
| | | this.ruleForm.suitway = |
| | | this.ruleForm.suitway.length != 0 |
| | | ? this.ruleForm.suitway.join(",") |
| | | : ""; |
| | | this.ruleForm.hetype = 2; // éç¥ç±»å |
| | | |
| | | addrichText({ |
| | | content: this.content, |
| | | fileName: this.fileName ? this.fileName : "æµè¯.html", |
| | | }).then((res) => { |
| | | this.ruleForm.richText = res.msg; |
| | | if (this.id) { |
| | | this.ruleForm.isoperation = 2; |
| | | compilelibrary(this.ruleForm).then((res) => { |
| | | if (this.id) { |
| | | this.ruleForm.isoperation = 2; |
| | | compilelibrary(this.ruleForm).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("ç¼è¾æå"); |
| | | this.confirmillness(); |
| | | this.$router.go(-1); |
| | | }); |
| | | } else { |
| | | this.ruleForm.isoperation = 1; |
| | | compilelibrary(this.ruleForm).then((res) => { |
| | | } |
| | | }); |
| | | } else { |
| | | this.ruleForm.isoperation = 1; |
| | | compilelibrary(this.ruleForm).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("æ°å¢æå"); |
| | | this.confirmillness(res.data); |
| | | this.$router.go(-1); |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | // ä¿åç¾ç
|
| | | confirmillness(guid) { |
| | |
| | | if (guid) { |
| | | item.outid = guid; |
| | | } else { |
| | | console.log(this.ruleForm); |
| | | item.outid = this.ruleForm.id; |
| | | } |
| | | item.icd10name = item.icdname; |
| | |
| | | }); |
| | | this.illnessVisible = false; |
| | | this.$modal.msgSuccess("ç¼è¾æå"); |
| | | }, |
| | | getFileNameFromPath(path) { |
| | | const parts = path.split("/"); |
| | | return parts[parts.length - 1]; |
| | | }, |
| | | // ä¸ä¸æ¥ |
| | | nextstep() { |
| | | if (this.Editprogress <= 1) { |
| | | return this.Editprogress++; |
| | | } |
| | | }, |
| | | // ä¸ä¸æ¥ |
| | | laststep() { |
| | | this.Editprogress = this.Editprogress - 1; |
| | | }, |
| | | // å
³é |
| | | closeFm() { |
| | |
| | | ); |
| | | if (!condition) { |
| | | listDept({ deptId: item }).then((res) => { |
| | | console.log("dept"); |
| | | res.data[0].type = 2; |
| | | this.ruleForm.tempDetpRelevances.push(res.data[0]); |
| | | }); |
| | |
| | | setTimeout(() => { |
| | | this.submitForm(); |
| | | }, 1000); |
| | | // this.submitForm(); |
| | | }, |
| | | // ä¿åé¢ç®ä¿¡æ¯ |
| | | Saveproblem() {}, |
| | | /** æ¥è¯¢é¢ç®å表 */ |
| | | |
| | | // æ°å¢åé |
| | | addvariable() { |
| | | this.variablelist.push({ |
| | |
| | | delvariable(item) { |
| | | const index = this.variablelist.indexOf(item); |
| | | if (index !== -1) { |
| | | this.variablelist.splice(index, 1); // ä»ç´¢å¼ä½ç½®å é¤ä¸ä¸ªå
ç´ |
| | | this.variablelist.splice(index, 1); |
| | | } else { |
| | | console.log("æªæ¾å°è¯¥å¯¹è±¡"); |
| | | } |
| | | }, |
| | | // æ§å¶æä»¶ |
| | | handleChange(file, fileList) { |
| | | this.fileList = fileList.slice(-3); |
| | | }, |
| | | // æ ç¾----------------- |
| | | // æ ç¾ç¸å
³æ¹æ³ |
| | | gettabList() { |
| | | const tagqueryParams = { |
| | | pageNum: 1, |
| | |
| | | }); |
| | | }, |
| | | handleClosetag(tag) { |
| | | console.log(tag); |
| | | const lindex = this.ruleForm.heLibraryTagList.findIndex( |
| | | (item) => item.tagname == tag.tagname |
| | | ); |
| | | console.log(lindex); |
| | | this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1); |
| | | this.ruleForm.heLibraryTagList[lindex].isoperation = 3; |
| | | }, |
| | |
| | | showInput() { |
| | | this.inputVisible = true; |
| | | }, |
| | | // ç¾ç
----------------------- |
| | | // ç¾ç
ç¸å
³æ¹æ³ |
| | | illnessUpdate() { |
| | | if (this.id) { |
| | | getillness({ outid: this.$route.query.id, type: 6 }).then((res) => { |
| | |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | // -------------------------- |
| | | |
| | | // é¢è§æ¨¡æ¿ |
| | | PreviewTemplate() { |
| | | this.drawer = true; |
| | |
| | | resetForm(formName) { |
| | | this.$refs[formName].resetFields(); |
| | | }, |
| | | |
| | | //ä¸ä¼ å¾çä¹åasync |
| | | beforeEditorUpload(res, file) { |
| | | //æ¾ç¤ºä¸ä¼ å¨ç» |
| | | this.quillUpdateImg = true; |
| | | // const res1 = await uploadImage() |
| | | // console.log(res1,'====='); |
| | | // this.$emit('before',res, file) |
| | | console.log(res); |
| | | console.log(file); |
| | | }, |
| | | // ä¸ä¼ å¾çæå |
| | | uploadEditorSuccess(res, file) { |
| | | console.log("ä¸ä¼ æå"); |
| | | // this.$emit('upload',res, file) |
| | | console.log(res, file); |
| | | //æ¼æ¥åºä¸ä¼ çå¾ç卿å¡å¨ç宿´å°å |
| | | let imgUrl = res.url; |
| | | let type = imgUrl.substring(imgUrl.lastIndexOf(".") + 1); |
| | | console.log(type); |
| | | // è·å坿æ¬ç»ä»¶å®ä¾ |
| | | let quill = this.$refs.customQuillEditor.quill; |
| | | // è·åå
æ æå¨ä½ç½® |
| | | let length = quill.getSelection().index; |
| | | // æå
¥å¾ç||è§é¢ res.info为æå¡å¨è¿åçå¾çå°å |
| | | if (type == "mp4" || type == "MP4") { |
| | | window.jsValue = imgUrl; |
| | | quill.insertEmbed(length, "video", imgUrl); |
| | | } else { |
| | | quill.insertEmbed(length, "image", imgUrl); |
| | | } |
| | | // è°æ´å
æ å°æå |
| | | quill.setSelection(length + 1); |
| | | //åæ¶ä¸ä¼ å¨ç» |
| | | this.quillUpdateImg = false; |
| | | }, |
| | | // 失å»ç¦ç¹äºä»¶ |
| | | onEditorBlur(e) { |
| | | console.log("onEditorBlur: ", e); |
| | | }, |
| | | // è·å¾ç¦ç¹äºä»¶ |
| | | onEditorFocus(e) { |
| | | console.log("onEditorFocus: ", e); |
| | | }, |
| | | // å
容æ¹åäºä»¶ |
| | | onEditorChange(e) { |
| | | console.log("onEditorChange: ", e); |
| | | }, |
| | | // ä¸ä¼ (æä»¶)å¾ç失败 |
| | | uploadEditorError(res, file) { |
| | | console.log(res, "word"); |
| | | console.log(file, "word"); |
| | | //é¡µé¢æç¤º |
| | | this.$message.error("ä¸ä¼ å¾ç失败"); |
| | | //åæ¶ä¸ä¼ å¨ç» |
| | | this.quillUpdateImg = false; |
| | | }, |
| | | //ä¸ä¼ ç»ä»¶è¿åçç»æ |
| | | uploadResult: function (res) { |
| | | this.uploadUrlPath = res; |
| | | }, |
| | | // ä¸ä¼ (æä»¶)å¾ç失败 |
| | | uploadEditorErrorword(res, file) { |
| | | console.log(res); |
| | | console.log(file); |
| | | //é¡µé¢æç¤º |
| | | this.$message.error("ä¸ä¼ å¾ç失败"); |
| | | //åæ¶ä¸ä¼ å¨ç» |
| | | this.quillUpdateImg = false; |
| | | }, |
| | | //ä¸ä¼ å¾çä¹åasync |
| | | beforeEditorUploadword(res, file) { |
| | | //æ¾ç¤ºä¸ä¼ å¨ç» |
| | | this.quillUpdateImg = true; |
| | | // const res1 = await uploadImage() |
| | | // console.log(res1,'====='); |
| | | // this.$emit('before',res, file) |
| | | console.log(res); |
| | | console.log(file); |
| | | }, |
| | | // ä¸ä¼ å¾çæå |
| | | uploadEditorSuccessword(res, file) { |
| | | console.log("ä¸ä¼ æå"); |
| | | const data = null; |
| | | console.log(res, file, "word"); |
| | | axios |
| | | .get(res.url) |
| | | .then((response) => { |
| | | console.log(response.data, "æ°æ®"); // è¾åºè·åå°çæä»¶å
容 |
| | | this.content = response.data; |
| | | this.texturl = res.url; |
| | | this.fileName = this.getFileNameFromPath(res.url); |
| | | }) |
| | | .catch((error) => { |
| | | console.error("Failed to fetch file:", error); |
| | | }); |
| | | }, |
| | | Getmissioncontent(url) { |
| | | axios |
| | | .get(url) |
| | | .then((response) => { |
| | | console.log(response.data, "æ°æ®"); // è¾åºè·åå°çæä»¶å
容 |
| | | this.content = response.data; |
| | | this.fileName = this.getFileNameFromPath(res.url); |
| | | }) |
| | | .catch((error) => { |
| | | console.error("Failed to fetch file:", error); |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .Questionnairemanagement { |
| | | // display: flex; |
| | | } |
| | | .sidecolumn { |
| | | // width: 300px; |
| | | // min-height: 100vh; |
| | | // text-align: center; |
| | | // display: flex; |
| | | // margin-top: 20px; |
| | | margin: 20px; |
| | | margin-bottom: 0; |
| | | padding: 20px; |
| | |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | } |
| | | |
| | | .leftvlue { |
| | | // display: flex; |
| | | // flex: 1; |
| | | margin: 20px; |
| | | padding: 30px; |
| | | background: #ffff; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | .mulsz { |
| | | font-size: 20px; |
| | | } |
| | | |
| | | .leftvlue-jbxx { |
| | | margin-bottom: 50px; |
| | | font-size: 20px; |
| | | span { |
| | | position: absolute; |
| | | right: 80px; |
| | | } |
| | | } |
| | | .demo-cascader { |
| | | margin-right: 20px; |
| | | } |
| | | .PreviewTemplate { |
| | | color: #02a7f0; |
| | | cursor: pointer; |
| | | font-size: 20px; |
| | | margin: 0 20px; |
| | | font-size: 24px; |
| | | height: 30px; |
| | | border-left: 3px solid #41a1be; |
| | | padding-left: 3px; |
| | | } |
| | | } |
| | | |
| | | .xinz-inf { |
| | | font-size: 18px; |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | |
| | | line-height: 48px; |
| | | |
| | | .el-tag + .el-tag { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .button-new-tag { |
| | | margin-left: 10px; |
| | | height: 32px; |
| | |
| | | padding-top: 0; |
| | | padding-bottom: 0; |
| | | } |
| | | |
| | | .input-new-tag { |
| | | width: 90px; |
| | | margin-left: 10px; |
| | | vertical-align: bottom; |
| | | } |
| | | } |
| | | .preview-left { |
| | | margin: 20px; |
| | | // margin: 20px; |
| | | padding: 30px; |
| | | background: #ffff; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | .topic-dev { |
| | | margin-bottom: 25px; |
| | | font-size: 20px !important; |
| | | .dev-text { |
| | | margin-bottom: 10px; |
| | | } |
| | | } |
| | | } |
| | | .addtopic { |
| | | margin-top: 30px; |
| | | } |
| | | .presentation { |
| | | margin: 20px 0; |
| | | display: flex; |
| | | .presentation-left { |
| | | width: 50%; |
| | | height: 500px; |
| | | .button-textxg { |
| | | color: #024df0; |
| | | } |
| | | .button-textsc { |
| | | color: #f52727; |
| | | } |
| | | } |
| | | .presentation-right { |
| | | width: 50%; |
| | | height: 500px; |
| | | padding: 20px; |
| | | font-size: 18px; |
| | | border: 1px solid #909091; |
| | | span { |
| | | padding: 0 35px; |
| | | margin-right: 10px; |
| | | border-bottom: 1px solid #909091; |
| | | } |
| | | .headline { |
| | | font-size: 20px; |
| | | border-left: 3px solid #41a1be; |
| | | padding-left: 5px; |
| | | margin: 15px 0; |
| | | } |
| | | } |
| | | } |
| | | ::v-deep .addtopic-input { |
| | | input { |
| | | background: #02a7f0; |
| | | color: #edf1f7; |
| | | width: 150px; |
| | | } |
| | | } |
| | | ::v-deep.el-step.is-vertical .el-step__title { |
| | | |
| | | ::v-deep .el-step.is-vertical .el-step__title { |
| | | font-size: 25px; |
| | | } |
| | | |
| | | ::v-deep.el-input--medium { |
| | | font-size: 18px !important; |
| | | } |
| | | ::v-deep.ruleFormaa.el-select { |
| | | display: inline-block; |
| | | position: relative; |
| | | width: 700px; |
| | | } |
| | | .el-select__tags { |
| | | |
| | | ::v-deep.el-select__tags { |
| | | font-size: 20px; |
| | | max-width: 888px !important; |
| | | } |
| | | |
| | | ::v-deep.el-radio__inner { |
| | | width: 22px; |
| | | height: 22px; |
| | | } |
| | | // ::v-deep.topic-dev.el-radio__label { |
| | | // font-size: 24px; |
| | | // } |
| | | |
| | | ::v-deep.el-radio-group { |
| | | span { |
| | | font-size: 24px; |
| | | } |
| | | } |
| | | |
| | | ::v-deep.el-checkbox-group { |
| | | span { |
| | | font-size: 24px; |
| | | } |
| | | } |
| | | .editor { |
| | | line-height: normal !important; |
| | | height: 600px; |
| | | margin-bottom: 80px; |
| | | } |
| | | .ql-snow .ql-tooltip[data-mode="link"]::before { |
| | | content: "请è¾å
¥é¾æ¥å°å:"; |
| | | } |
| | | .ql-snow .ql-tooltip.ql-editing a.ql-action::after { |
| | | border-right: 0px; |
| | | content: "ä¿å"; |
| | | padding-right: 0px; |
| | | } |
| | | |
| | | .ql-snow .ql-tooltip[data-mode="video"]::before { |
| | | content: "请è¾å
¥è§é¢å°å:"; |
| | | } |
| | | |
| | | .ql-snow .ql-picker.ql-size .ql-picker-label::before, |
| | | .ql-snow .ql-picker.ql-size .ql-picker-item::before { |
| | | content: "14px"; |
| | | } |
| | | .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before, |
| | | .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before { |
| | | content: "10px"; |
| | | } |
| | | .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before, |
| | | .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before { |
| | | content: "18px"; |
| | | } |
| | | .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before, |
| | | .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before { |
| | | content: "32px"; |
| | | } |
| | | |
| | | .ql-snow .ql-picker.ql-header .ql-picker-label::before, |
| | | .ql-snow .ql-picker.ql-header .ql-picker-item::before { |
| | | content: "ææ¬"; |
| | | } |
| | | .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, |
| | | .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { |
| | | content: "æ é¢1"; |
| | | } |
| | | .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, |
| | | .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { |
| | | content: "æ é¢2"; |
| | | } |
| | | .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, |
| | | .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { |
| | | content: "æ é¢3"; |
| | | } |
| | | .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, |
| | | .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { |
| | | content: "æ é¢4"; |
| | | } |
| | | .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, |
| | | .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { |
| | | content: "æ é¢5"; |
| | | } |
| | | .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, |
| | | .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { |
| | | content: "æ é¢6"; |
| | | } |
| | | |
| | | .ql-snow .ql-picker.ql-font .ql-picker-label::before, |
| | | .ql-snow .ql-picker.ql-font .ql-picker-item::before { |
| | | content: "æ ååä½"; |
| | | } |
| | | .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before, |
| | | .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before { |
| | | content: "衬线åä½"; |
| | | } |
| | | .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before, |
| | | .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before { |
| | | content: "ç宽åä½"; |
| | | } |
| | | </style> |
| | |
| | | icon="el-icon-plus" |
| | | size="medium" |
| | | @click="handleAdd" |
| | | v-hasPermi="['system:user:add']" |
| | | >æ°å¢</el-button |
| | | > |
| | | </el-col> |