From f4609c62152cab3bd9b7f8efd3f967f82650ee40 Mon Sep 17 00:00:00 2001 From: WXL (wul) <wl_5969728@163.com> Date: 星期三, 27 八月 2025 09:28:06 +0800 Subject: [PATCH] 测试完成 --- src/api/AiCentre/index.js | 2 src/views/index.vue | 397 +++- dist.zip | 0 e -i HEAD~1 | 0 src/views/shortmessage/healthinformation/index.vue | 1 .gitconfig | 3 src/views/patient/propaganda/QuestionnaireTask.vue | 1 et --hard HEAD@{1} | 559 +++++++ src/views/followvisit/record/detailpage/index.vue | 186 ++ src/components/CallButton/index.vue | 199 ++ src/layout/components/Sidebar/SidebarItem.vue | 1 src/views/knowledge/education/compilequer/index.vue | 2 src/views/patient/propaganda/Missioncreation.vue | 183 + src/utils/sipService-cs.js | 200 ++ src/views/followvisit/tasklist/index.vue | 6 h origin --force --all | 258 +++ src/store/modules/user.js | 16 src/utils/sipService.js | 284 ++- src/views/knowledge/education/index.vue | 2 src/assets/order/example.mp3 | 0 src/utils/request.js | 2 src/api/AiCentre/satisfactionse.js | 0 src/views/login.vue | 3 src/views/sfstatistics/percentage/index.vue | 713 +++++++++ src/views/patient/patient/hospital.vue | 7 e -i HEAD~7 | 442 ++++++ src/api/AiCentre/EChartsdata.js | 8 src/views/shortmessage/healthinformation/compilequer/index.vue | 713 +-------- src/views/followvisit/discharge/index.vue | 14 29 files changed, 3,121 insertions(+), 1,081 deletions(-) diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..084d239 --- /dev/null +++ b/.gitconfig @@ -0,0 +1,3 @@ +[user] + name = WXL (wul) + email = wl_5969728@163.com \ No newline at end of file diff --git a/dist.zip b/dist.zip new file mode 100644 index 0000000..4bef5b1 --- /dev/null +++ b/dist.zip Binary files differ diff --git a/e -i HEAD~1 b/e -i HEAD~1 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/e -i HEAD~1 diff --git a/e -i HEAD~7 b/e -i HEAD~7 new file mode 100644 index 0000000..8f99b67 --- /dev/null +++ b/e -i HEAD~7 @@ -0,0 +1,442 @@ +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> : 閰嶇疆浠g爜缂栬緫渚濊禆 +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> : 瀹屾垚閮ㄥ垎鎮h�呮暟鎹氦浜抋pi灏佽锛屽垱寤篴i鐭ヨ瘑搴撶浉鍏宠矾鐢遍〉闈� +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> : 瀹屾垚瀹f暀銆侀棶鍗疯矾鐢辫缃�侀棶鍗锋ā鍧楅〉闈㈠強鍏舵坊鍔�/淇敼椤甸潰閮ㄥ垎甯冨眬寮�鍙� +cb0e31a - heimawl <1785969728@qq.com> : 浼樺寲椤甸潰涓婚 +792c283 - heimawl <1785969728@qq.com> : 瀹屾垚涓婁紶鏂囦欢鍚勬楠ら〉闈㈠強鏍囩绠$悊妯″潡鍒濇鎼缓 +61cb6f1 - heimawl <1785969728@qq.com> : 瀹夎echarts5.4.0渚濊禆锛屽畬鏁存偅鑰呯鐞嗕富椤甸潰鍙婂叾涓汉淇℃伅鍙婇檮灞為〉闈㈠熀纭�寮�鍙� +6e7acd5 - heimawl <1785969728@qq.com> : 缁勪欢搴撴暣鐞嗭紝渚濊禆瀹夎銆乪xcel瀵煎叆瀵煎叆鏂规硶鏁寸悊 +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> : 绗竴娆′慨鏀� \ No newline at end of file diff --git "a/et --hard HEAD@\1731\175" "b/et --hard HEAD@\1731\175" new file mode 100644 index 0000000..153194b --- /dev/null +++ "b/et --hard HEAD@\1731\175" @@ -0,0 +1,559 @@ +[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: 娴嬭瘯瀹屾垚 diff --git a/h origin --force --all b/h origin --force --all new file mode 100644 index 0000000..333a0b5 --- /dev/null +++ b/h origin --force --all @@ -0,0 +1,258 @@ + + 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. diff --git a/src/api/AiCentre/EChartsdata.js b/src/api/AiCentre/EChartsdata.js index 94c3984..2b4d479 100644 --- a/src/api/AiCentre/EChartsdata.js +++ b/src/api/AiCentre/EChartsdata.js @@ -25,6 +25,14 @@ data: data, }); } +// 棣栭〉涓儴鏁版嵁 +export function getServiceStatistics(data) { + return request({ + url: "/smartor/serviceSubtask/getServiceStatistics", + method: "post", + data: data, + }); +} // 鏌ヨ鎮h�呬綇闄㈣褰曞垪琛� export function getechartsMedInhospList(data) { return request({ diff --git a/src/api/AiCentre/index.js b/src/api/AiCentre/index.js index 7455089..a124c74 100644 --- a/src/api/AiCentre/index.js +++ b/src/api/AiCentre/index.js @@ -9,4 +9,4 @@ export * from './external' export * from './patientexternal' export * from './EChartsdata' -export * from './satisfaction' +export * from './satisfactionse' diff --git a/src/api/AiCentre/satisfaction.js b/src/api/AiCentre/satisfactionse.js similarity index 100% rename from src/api/AiCentre/satisfaction.js rename to src/api/AiCentre/satisfactionse.js diff --git a/src/assets/order/example.mp3 b/src/assets/order/example.mp3 new file mode 100644 index 0000000..1c210d7 --- /dev/null +++ b/src/assets/order/example.mp3 Binary files differ diff --git a/src/components/CallButton/index.vue b/src/components/CallButton/index.vue index 2993051..ef5dbf4 100644 --- a/src/components/CallButton/index.vue +++ b/src/components/CallButton/index.vue @@ -3,17 +3,19 @@ <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> <!-- 鎸傛柇鎸夐挳 --> @@ -21,11 +23,6 @@ <!-- 闊抽鍏冪礌锛堥殣钘忥級 --> <audio id="remoteAudio" autoplay></audio> - - <!-- 鐘舵�佹樉绀� --> - <div class="call-status"> - {{ callStatus }} - </div> </div> </template> @@ -33,31 +30,48 @@ 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); @@ -68,45 +82,41 @@ sipService.onStatusChange = (status) => { this.sipStatus = status.text; this.sipStatusClass = `status-${status.type}`; + }; - // 鏍规嵁鐘舵�佹洿鏂癠I鎴栨墽琛屽叾浠栨搷浣� - 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 = "閫氳瘽宸茬粨鏉�"; }, }, }; @@ -138,7 +148,106 @@ 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; } diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue index 4853fbb..846a3d1 100644 --- a/src/layout/components/Sidebar/SidebarItem.vue +++ b/src/layout/components/Sidebar/SidebarItem.vue @@ -14,7 +14,6 @@ </template> <sidebar-item v-for="child in item.children" - :key="child.path" :is-nest="true" :item="child" :base-path="resolvePath(child.path)" diff --git a/src/store/modules/user.js b/src/store/modules/user.js index a64959d..ab91acf 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -144,11 +144,23 @@ 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() diff --git a/src/utils/request.js b/src/utils/request.js index 57969d4..71723d0 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -17,7 +17,7 @@ // axios涓姹傞厤缃湁baseURL閫夐」锛岃〃绀鸿姹俇RL鍏叡閮ㄥ垎 baseURL: process.env.VUE_APP_BASE_API, // 瓒呮椂 - timeout: 10000, + timeout: 100000, }); // request鎷︽埅鍣� diff --git a/src/utils/sipService-cs.js b/src/utils/sipService-cs.js new file mode 100644 index 0000000..1654ccc --- /dev/null +++ b/src/utils/sipService-cs.js @@ -0,0 +1,200 @@ +import JsSIP from "jssip"; + +class SipService { + constructor() { + this.ua = null; + this.currentSession = null; + this.onStatusChange = null; // 鐘舵�佸彉鍖栧洖璋� + this.onCallStatusChange = null; // 鏂板閫氳瘽鐘舵�佸洖璋� + } + + // 鍒濆鍖朣IP瀹㈡埛绔� + 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(); diff --git a/src/utils/sipService.js b/src/utils/sipService.js index 4b12914..baa65a9 100644 --- a/src/utils/sipService.js +++ b/src/utils/sipService.js @@ -4,153 +4,174 @@ constructor() { this.ua = null; this.currentSession = null; - this.onStatusChange = null; // 鐘舵�佸彉鍖栧洖璋� + this.onStatusChange = null; + this.onCallStatusChange = null; + this.onIncomingCall = null; } - // 鍒濆鍖朣IP瀹㈡埛绔� 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; + + // 鏍囧噯鍖朣DP + 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("鏍囧噯鍖栧悗鐨凷DP:", 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 = "濯掍綋鍗忓晢澶辫触锛岃妫�鏌ョ紪瑙g爜鍣ㄩ厤缃�"; + 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"); @@ -159,14 +180,37 @@ } }); } - // 鎸傛柇褰撳墠閫氳瘽 + 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(); diff --git a/src/views/followvisit/discharge/index.vue b/src/views/followvisit/discharge/index.vue index 24f7c2d..8c0f332 100644 --- a/src/views/followvisit/discharge/index.vue +++ b/src/views/followvisit/discharge/index.vue @@ -126,6 +126,12 @@ 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="鎮h�呰寖鍥�" prop="status"> <el-cascader @@ -437,6 +443,13 @@ align="center" key="updateBy" prop="updateBy" + width="120" + /> + <el-table-column + label="缁忕鍖荤敓" + align="center" + key="managementDoctor" + prop="managementDoctor" width="120" /> <el-table-column @@ -1397,6 +1410,7 @@ affiliation() { this.topqueryParams.drcode = store.getters.hisUserId; this.topqueryParams.nurseId = store.getters.hisUserId; + this.topqueryParams.managementDoctor = store.getters.name; this.getList(1); }, onthatday() { diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue index fb42e14..0e292ce 100644 --- a/src/views/followvisit/record/detailpage/index.vue +++ b/src/views/followvisit/record/detailpage/index.vue @@ -260,13 +260,37 @@ ></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> @@ -563,7 +587,7 @@ 瀹屾暣璇煶锛� <mini-audio :audio-source=" - voice ? voice : 'https://example.com/example.mp3' + voice ? voice : '@assets/order/example.mp3' " ></mini-audio> </div> @@ -587,7 +611,7 @@ :audio-source=" item.questionvoice ? item.questionvoice - : 'https://example.com/example.mp3' + : '@assets/order/example.mp3' " ></mini-audio> </div> @@ -796,6 +820,10 @@ userid: "", currentPhoneNumber: "", callType: "", // 鐢ㄤ簬鍖哄垎鏄摢涓數璇� + // 宸叉湁鏁版嵁... + callStatus: "idle", // idle, calling, connected, ended, failed + isEndingCall: false, + currentCall: null, // 褰撳墠閫氳瘽瀵硅薄 input: "浠婂ぉ韬綋杩樹笉閿�", radio: "2", taskname: "", @@ -854,9 +882,9 @@ }, pickerOptions: { disabledDate(time) { - // 绂佺敤浠婂ぉ鍙婁箣鍓嶇殑鏃ユ湡 - return time.getTime() < Date.now() - 24 * 60 * 60 * 1000; - }, + // 绂佺敤浠婂ぉ鍙婁箣鍓嶇殑鏃ユ湡 + return time.getTime() < Date.now() - 24 * 60 * 60 * 1000; + }, shortcuts: [ { text: "涓冨ぉ鍚�", @@ -948,7 +976,28 @@ patid: null, }; }, - + computed: { + callStatusText() { + const statusMap = { + idle: "鍑嗗鍛煎彨", + calling: `姝e湪鍛煎彨 ${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; @@ -1190,7 +1239,7 @@ }) .catch(() => { if (this.form.serviceType == 13) { - if (this.visitCount) { + if (this.visitCount!=1) { this.$router.push({ path: "/logisticsservice/zbAgain", }); @@ -1200,7 +1249,7 @@ }); } } else if (this.form.serviceType == 2) { - if (this.visitCount) { + if (this.visitCount!=1) { this.$router.push({ path: "/logisticsservice/again", }); @@ -1217,28 +1266,95 @@ 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; - - // 绛夊緟涓嬩竴涓猼ick纭繚鍊煎凡鏇存柊 - this.$nextTick(() => { - this.$refs.callButton.startCall(); - - // 鍙�夛細鏍规嵁涓嶅悓绫诲瀷鍋氫笉鍚屽鐞� - if (type === "tel") { - console.log("姝e湪鍛煎彨鎮h�呮湰浜�:", phone); - } else { - console.log("姝e湪鍛煎彨鑱旂郴浜�:", 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) => { @@ -1285,7 +1401,7 @@ }) .catch(() => { if (this.form.serviceType == 13) { - if (this.visitCount!=1) { + if (this.visitCount != 1) { this.$router.push({ path: "/logisticsservice/zbAgain", }); @@ -1295,7 +1411,7 @@ }); } } else if (form.serviceType == 2) { - if (this.visitCount!=1) { + if (this.visitCount != 1) { this.$router.push({ path: "/followvisit/again", }); @@ -1331,7 +1447,7 @@ 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; @@ -1481,6 +1597,10 @@ 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); @@ -1500,7 +1620,7 @@ } // 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) { diff --git a/src/views/followvisit/tasklist/index.vue b/src/views/followvisit/tasklist/index.vue index 60564ca..5143c6f 100644 --- a/src/views/followvisit/tasklist/index.vue +++ b/src/views/followvisit/tasklist/index.vue @@ -732,6 +732,7 @@ label: "闂嵎闅忚", }, ]; + this.topqueryParams.type=2; } else if (this.tasktopic == 4 || this.tasktopic == 8) { if (!this.topqueryParams.type) this.topqueryParams.type = "3"; this.longtermlist = [ @@ -740,6 +741,7 @@ label: "瀹f暀鍏虫��", }, ]; + this.topqueryParams.type=3; } else if (this.tasktopic == 5) { if (!this.topqueryParams.type) this.topqueryParams.type = "1"; this.longtermlist = [ @@ -753,10 +755,6 @@ }, ]; } - // 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) => { diff --git a/src/views/index.vue b/src/views/index.vue index 352aa61..ac2876e 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -20,7 +20,7 @@ <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> @@ -28,7 +28,7 @@ </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> @@ -62,7 +62,7 @@ <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> @@ -70,7 +70,7 @@ </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> @@ -94,32 +94,52 @@ 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" @@ -129,34 +149,34 @@ ></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"> 瀹f暀缁熻 <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"> @@ -292,7 +312,7 @@ getechartsListCountdata, getechartsMedOuthospList, getechartsMedInhospList, - getechartsandData, + getServiceStatistics, getDeptRanking, } from "@/api/AiCentre/index"; import dayjs from "dayjs"; @@ -308,8 +328,13 @@ mypPieCharts: null, lastWidth: window.innerWidth, lastHeight: window.innerHeight, - radio1: "鏈�", + radio1: "杩戜竴骞�", ticketStatistics: {}, + timeTypeMap: { + 鍛�: "day", + 鏈�: "month", + 骞�: "year", + }, DischargeData: { rs: "", rc: "", @@ -327,7 +352,8 @@ SkuTop: [], cylinderSeries: [], cylinderXAxis: [], - dyat: 30, + customDateRange: [], // 鑷畾涔夋棩鏈熻寖鍥� + dyat: 365, intervalId: null, }; }, @@ -341,18 +367,34 @@ 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(); }); @@ -369,17 +411,37 @@ 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(); }, @@ -396,15 +458,15 @@ }, // 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"); } }); @@ -451,26 +513,155 @@ } }); }, - // 鑾峰彇灏辫瘖鏁伴噺 - 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); + + // 鍔ㄦ�佽绠梚nterval鍊� + 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); @@ -480,11 +671,12 @@ 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", @@ -504,30 +696,12 @@ }, }, legend: { - data: [ - "鍑洪櫌闅忚閲�", - "闂ㄨ瘖闅忚閲�", - // "鍦ㄩ櫌闅忚閲�", - // "闂ㄨ瘖澶嶈瘖閫氱煡", - "鍑洪櫌鏈嶅姟浜烘", - "闂ㄨ瘖鏈嶅姟浜烘", - ], + data: ["鍑洪櫌鏈嶅姟閲�", "闂ㄨ瘖鏈嶅姟閲�", "鍑洪櫌灏辫瘖浜烘", "闂ㄨ瘖灏辫瘖浜烘"], }, xAxis: [ { type: "category", - data: [ - "涓�鏈�", - "浜屾湀", - "涓夋湀", - "鍥涙湀", - "浜旀湀", - "鍏湀", - "涓冩湀", - "鍏湀", - "涔濇湀", - "鍗佹湀", - ], + data: [], // 鍒濆涓虹┖锛屽皢閫氳繃API鏁版嵁濉厖 axisPointer: { type: "shadow", }, @@ -538,18 +712,14 @@ 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} 娆�", }, @@ -558,50 +728,27 @@ 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, @@ -610,10 +757,10 @@ 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, @@ -622,29 +769,15 @@ 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() { @@ -776,6 +909,12 @@ .echars1 { flex: 1; } +} +.dept-table-container { + flex: 1; + display: flex; + flex-direction: column; + min-height: 0; /* 閲嶈锛氬厑璁稿唴瀹规敹缂� */ } ::v-deep .el-table { td:first-child { @@ -1034,6 +1173,12 @@ 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; diff --git a/src/views/knowledge/education/compilequer/index.vue b/src/views/knowledge/education/compilequer/index.vue index 1060bfa..59ebeef 100644 --- a/src/views/knowledge/education/compilequer/index.vue +++ b/src/views/knowledge/education/compilequer/index.vue @@ -703,7 +703,7 @@ }); } // 瀹f暀鍒嗙被 - getheLibraryAssort({}).then((res) => { + getheLibraryAssort({ hetype: 1 }).then((res) => { this.sortlist = res.rows; console.log(this.sortlist); }); diff --git a/src/views/knowledge/education/index.vue b/src/views/knowledge/education/index.vue index f5eafa0..32789dc 100644 --- a/src/views/knowledge/education/index.vue +++ b/src/views/knowledge/education/index.vue @@ -88,7 +88,6 @@ > <el-option v-for="item in courtyardlist" - :key="item.label" :label="item.label" :value="item.label" > @@ -112,7 +111,6 @@ > <el-option v-for="(item, index) in qyoptions" - :key="item.value" :label="item.label" :value="item.value" > diff --git a/src/views/login.vue b/src/views/login.vue index fe19af7..53079bd 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -119,6 +119,9 @@ { value: "47231022633110211A2101", label: "涓芥按甯備腑鍖婚櫌" }, { value: "47246102433112211A2101", label: "缂欎簯鍘夸腑鍖诲尰闄� " }, { value: "47240018433118111A2101", label: "榫欐硥甯備腑鍖诲尰闄� " }, + { value: "47240004533118111A1001", label: "榫欐硥甯備汉姘戝尰闄� " }, + { value: "47243006833112611A2101", label: "搴嗗厓鍘夸腑鍖诲尰闄� " }, + { value: "47234002X33112111A2101", label: "闈掔敯鍘夸腑鍖诲尰闄� " }, ], loginRules: { username: [ diff --git a/src/views/patient/patient/hospital.vue b/src/views/patient/patient/hospital.vue index 0d21849..de94d9e 100644 --- a/src/views/patient/patient/hospital.vue +++ b/src/views/patient/patient/hospital.vue @@ -268,6 +268,13 @@ width="120" /> <el-table-column + label="缁忕鍖荤敓" + align="center" + key="managementDoctor" + prop="managementDoctor" + width="120" + /> + <el-table-column label="涓绘不鍖荤敓" align="center" key="drname" diff --git a/src/views/patient/propaganda/Missioncreation.vue b/src/views/patient/propaganda/Missioncreation.vue index 9ba7fa4..e272911 100644 --- a/src/views/patient/propaganda/Missioncreation.vue +++ b/src/views/patient/propaganda/Missioncreation.vue @@ -124,7 +124,7 @@ </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> @@ -147,7 +147,10 @@ <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" @@ -160,7 +163,10 @@ </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 @@ -175,7 +181,10 @@ </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> @@ -406,7 +415,6 @@ icon="el-icon-upload2" size="medium" @click="handleImport" - >瀵煎叆</el-button > </el-col> @@ -530,11 +538,19 @@ <!-- 妯℃澘棰勮 --> <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> @@ -606,13 +622,16 @@ <el-table :data="uploadingData" style="width: 100%"> <el-table-column prop="serial" label="鎮h�卛d"> </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 @@ -653,26 +672,20 @@ <el-form-item label="瀹f暀鍚嶇О"> <el-input v-model="topqueryParams.preachname"></el-input> </el-form-item> - <el-form-item label="瀹f暀鍒嗙被" prop="region"> + <el-form-item label="瀹f暀绫诲瀷" 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> @@ -767,6 +780,8 @@ return { title: "瀹f暀鍐呭鍒楄〃", currenttype: 1, //1瀹f暀2闂ㄨ瘖3鍑洪櫌4澶嶈瘖5浣撴6闂嵎 + currentTemplateType: "", // 褰撳墠妯℃澘绫诲瀷 + plainTextContent: "", // 绾枃鏈唴瀹� id: "", // previewid: "", //浠诲姟妯℃澘浼犻�抜d libName: "", @@ -816,7 +831,7 @@ tableLabelxj: [ { label: "鍒涘缓浜�", width: "", prop: "createBy" }, { label: "瀹f暀鍚嶇О", width: "180", prop: "preachname" }, - { label: "瀹f暀鎻忚堪", width: "180", prop: "preachcontent" }, + { label: "瀹f暀鍐呭", width: "180", prop: "preachcontent" }, // { label: "瀹f暀褰㈠紡", width: "", prop: "playType" }, { label: "閫傜敤鏂瑰紡", width: "", prop: "suitway" }, { label: "淇敼鏃ユ湡", width: "", prop: "uploadTime" }, @@ -930,6 +945,10 @@ ], variableListTime: [], sortlist: [], + heLibraryAssortList: [ + { id: 1, value: "瀹f暀" }, + { id: 2, value: "閫氱煡" }, + ], tasktopic: null, //鏂板绫诲瀷 SelectPatientslist: [], form: { @@ -939,7 +958,10 @@ templatename: "", templateid: null, libtemplateid: null, - kcb: "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸"+localStorage.getItem("orgname")+"鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瑙傜湅杩欎唤瀹f暀璧勮銆�", + kcb: + "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸" + + localStorage.getItem("orgname") + + "鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瑙傜湅杩欎唤瀹f暀璧勮銆�", jsy: "鐢熸椿涓婅鍔抽�哥粨鍚堬紝娉ㄦ剰浼戞伅鍜岃惀鍏伙紝閫傚綋閿荤偧锛屾垝鐑熼檺閰掞紝淇濇寔蹇冩儏鑸掔晠锛屽畾鏈熷璇娿�傞偅鏈瀹f暀鍐呭灏卞埌杩欓噷锛岀鎮ㄨ韩浣撳仴搴凤紒", }, taskoptions: [ @@ -1104,7 +1126,7 @@ 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; } @@ -1122,7 +1144,7 @@ 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; @@ -1150,28 +1172,33 @@ // ----------------------琛ㄦ牸瀛愮粍浠朵簨浠� // 閫夋嫨妯℃澘骞堕瑙� 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() { @@ -1182,16 +1209,24 @@ 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) { @@ -1274,7 +1309,7 @@ handleExport() {}, // 閫夋嫨鎮h�呰〃鏁版嵁 - handleSelectionChange(selection,type) { + handleSelectionChange(selection, type) { console.log("澶氶�夋偅鑰�"); this.SelectPatientslist = selection; this.multiple = !selection.length; @@ -1289,8 +1324,8 @@ item.sfzh = item.idcardno; } if (type) { - item.hospType=type - }else{ + item.hospType = type; + } else { item.hospType = this.patientqueryParams.allhosp; } this.overallCase.push(item); @@ -1368,7 +1403,10 @@ templateid: null, libtemplateid: null, serviceType: Number(this.$route.query.serviceType), - kcb: "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸"+localStorage.getItem("orgname")+"鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瀹屾垚杩欎唤闅忚闂嵎銆�", + kcb: + "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸" + + localStorage.getItem("orgname") + + "鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瑙傜湅杩欎唤瀹f暀璧勮銆�", jsy: "鐢熸椿涓婅鍔抽�哥粨鍚堬紝娉ㄦ剰浼戞伅鍜岃惀鍏伙紝閫傚綋閿荤偧锛屾垝鐑熼檺閰掞紝淇濇寔蹇冩儏鑸掔晠锛屽畾鏈熷璇娿�傞偅鏈鍥炶灏卞埌杩欓噷锛岀鎮ㄨ韩浣撳仴搴凤紒", }; @@ -1601,9 +1639,9 @@ 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; } }, @@ -1754,6 +1792,23 @@ } } } +/* 鏂板鏍峰紡 */ +.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 { diff --git a/src/views/patient/propaganda/QuestionnaireTask.vue b/src/views/patient/propaganda/QuestionnaireTask.vue index a8e83be..dd695de 100644 --- a/src/views/patient/propaganda/QuestionnaireTask.vue +++ b/src/views/patient/propaganda/QuestionnaireTask.vue @@ -84,6 +84,7 @@ <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"> diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue index 1e06ca3..bb119e0 100644 --- a/src/views/sfstatistics/percentage/index.vue +++ b/src/views/sfstatistics/percentage/index.vue @@ -1,37 +1,6 @@ <template> <div class="Questionnairemanagement"> - <!-- 宸︿晶鏍� --> - <!-- <div class="sidecolumn"> - <div class="sidecolumn-top"> - <div class="top-wj">鎮h�呰寖鍥�</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"> <!--鏍囩鏁版嵁--> @@ -44,12 +13,6 @@ v-show="showSearch" label-width="98px" > - <!-- <el-form-item label="璐d换鍖荤敓" 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" @@ -153,19 +116,230 @@ @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" @@ -369,6 +543,26 @@ </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" @@ -644,9 +838,13 @@ return { topactiveName: "Local", //椤堕儴閫夋嫨 activeName: "first", //渚ц竟閫夋嫨 + expands: [], // 閬僵灞� loading: false, Seedloading: false, + chartDialogVisible: false, + pieChart: null, + barLineChart: null, // 閫変腑鏁扮粍 ids: [], // 闈炲崟涓鐢� @@ -784,7 +982,7 @@ dateRange: [], statisticaltype: 1, leavehospitaldistrictcodes: ["all"], // 榛樿閫変腑鍏ㄩ儴鐥呭尯 - deptcodes: ["all"], // 榛樿閫変腑鍏ㄩ儴绉戝 + deptcodes: [], // 榛樿閫変腑鍏ㄩ儴绉戝 }, // 鍒椾俊鎭� columns: [ @@ -829,6 +1027,40 @@ 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, + // 濡傛灉閫夋嫨浜�"鍏ㄩ儴"锛屽垯浼犳墍鏈夌梾鍖�/绉戝浠g爜 + 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, "淇敼鏍囩"); @@ -870,7 +1102,6 @@ ); this.flatArraydept.push({ label: "鍏ㄩ儴", value: "all" }); this.flatArrayhospit.push({ label: "鍏ㄩ儴", value: "all" }); - }, flattenArray(multiArray) { let result = []; @@ -1064,6 +1295,354 @@ `user_${new Date().getTime()}.xlsx` ); }, + // 鏄剧ず鍥捐〃寮圭獥 + + showChartDialog() { + this.chartDialogVisible = true; + this.$nextTick(() => { + this.initPieChart(); + this.initBarLineChart(); + }); + }, + // 鍦╩ethods涓慨鏀圭粺璁℃柟娉� + 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> @@ -1160,6 +1739,52 @@ 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; diff --git a/src/views/shortmessage/healthinformation/compilequer/index.vue b/src/views/shortmessage/healthinformation/compilequer/index.vue index f872f3b..8a6e6ef 100644 --- a/src/views/shortmessage/healthinformation/compilequer/index.vue +++ b/src/views/shortmessage/healthinformation/compilequer/index.vue @@ -1,5 +1,5 @@ <template> - <div class="Questionnairemanagement"> + <div class="NotificationManagement"> <!-- 宸︿晶鏍� --> <div class="sidecolumn"> <el-steps finish-status="success" :active="Editprogress" simple> @@ -10,13 +10,6 @@ > </template> </el-step> - <el-step> - <template slot="title"> - <span style="cursor: pointer" @click="Editprogress = 2" - >閫氱煡鍐呭</span - > - </template> - </el-step> </el-steps> </div> <!-- 鍙充晶鏁版嵁 --> @@ -24,6 +17,7 @@ <!-- 鍩烘湰淇℃伅 --> <div v-if="Editprogress == 1"> <div class="leftvlue-jbxx">鍩烘湰淇℃伅</div> + <el-divider></el-divider> <el-form :model="ruleForm" :rules="rules" @@ -58,20 +52,20 @@ <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> @@ -109,21 +103,6 @@ </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 @@ -142,6 +121,7 @@ @change="handleInputConfirm" filterable remote + allow-create reserve-keyword default-first-option :remote-method="remoteMethodtag" @@ -175,53 +155,23 @@ ></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" @@ -248,105 +198,12 @@ </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> <!-- 娣诲姞閫傜敤鐤剧梾绐楀彛 --> @@ -361,9 +218,7 @@ </template> <script> -import { quillEditor } from "vue-quill-editor"; import axios from "axios"; - import { getheLibraryAssort, delheLibraryAssort, @@ -379,115 +234,33 @@ illnesslistget, getillness, } from "@/api/AiCentre/index"; -import OptionalForm from "@/components/OptionalForm"; //姝e垯缁勪欢 - +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" 杩欎釜浠g爜鍒犳帀鍗冲彲 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, @@ -513,42 +286,24 @@ 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(); @@ -559,18 +314,7 @@ 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; @@ -579,16 +323,13 @@ 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) @@ -598,51 +339,46 @@ // 閫氱煡鍒嗙被 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) { @@ -650,7 +386,6 @@ if (guid) { item.outid = guid; } else { - console.log(this.ruleForm); item.outid = this.ruleForm.id; } item.icd10name = item.icdname; @@ -662,20 +397,6 @@ }); 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() { @@ -707,7 +428,6 @@ ); if (!condition) { listDept({ deptId: item }).then((res) => { - console.log("dept"); res.data[0].type = 2; this.ruleForm.tempDetpRelevances.push(res.data[0]); }); @@ -724,12 +444,7 @@ setTimeout(() => { this.submitForm(); }, 1000); - // this.submitForm(); }, - // 淇濆瓨棰樼洰淇℃伅 - Saveproblem() {}, - /** 鏌ヨ棰樼洰鍒楄〃 */ - // 鏂板鍙橀噺 addvariable() { this.variablelist.push({ @@ -741,16 +456,12 @@ 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, @@ -762,11 +473,9 @@ }); }, 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; }, @@ -812,7 +521,7 @@ showInput() { this.inputVisible = true; }, - // 鐤剧梾----------------------- + // 鐤剧梾鐩稿叧鏂规硶 illnessUpdate() { if (this.id) { getillness({ outid: this.$route.query.id, type: 6 }).then((res) => { @@ -823,9 +532,6 @@ }); } }, - - // -------------------------- - // 棰勮妯℃澘 PreviewTemplate() { this.drawer = true; @@ -833,129 +539,12 @@ 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; @@ -964,47 +553,34 @@ -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; @@ -1012,176 +588,41 @@ 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> diff --git a/src/views/shortmessage/healthinformation/index.vue b/src/views/shortmessage/healthinformation/index.vue index ee7d665..009fdf7 100644 --- a/src/views/shortmessage/healthinformation/index.vue +++ b/src/views/shortmessage/healthinformation/index.vue @@ -141,7 +141,6 @@ icon="el-icon-plus" size="medium" @click="handleAdd" - v-hasPermi="['system:user:add']" >鏂板</el-button > </el-col> -- Gitblit v1.9.3