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 @@
+022e803 (HEAD -> lishui-Smartor, origin/lishui-Smartor, lishui-sf) HEAD@{0}: rebase (finish): returning to refs/heads/lishui-Smartor
+022e803 (HEAD -> lishui-Smartor, origin/lishui-Smartor, lishui-sf) HEAD@{1}: rebase (start): checkout HEAD~5
+022e803 (HEAD -> lishui-Smartor, origin/lishui-Smartor, lishui-sf) HEAD@{2}: reset: moving to origin/lishui-Smartor
+a65bf99 HEAD@{3}: rebase (continue) (finish): returning to refs/heads/lishui-Smartor
+a65bf99 HEAD@{4}: commit (amend): 娴嬭瘯瀹屾垚
+95948fe HEAD@{5}: rebase (continue) (edit): 娴嬭瘯瀹屾垚
+745b9af HEAD@{6}: commit (amend): 娴嬭瘯瀹屾垚
+6f917a9 HEAD@{7}: rebase (continue) (edit): 娴嬭瘯瀹屾垚
+960960c HEAD@{8}: commit (amend): 浣犵殑鎻愪氦淇℃伅
+488008e HEAD@{9}: rebase: fast-forward
+9a164d2 HEAD@{10}: rebase (start): checkout HEAD~5
+01e7b73 HEAD@{11}: rebase (continue) (finish): returning to refs/heads/lishui-Smartor
+01e7b73 HEAD@{12}: commit (amend): 娴嬭瘯瀹屾垚
+748b8c4 HEAD@{13}: rebase (continue) (edit): 娴嬭瘯瀹屾垚
+ad098d5 HEAD@{14}: commit (amend): 娴嬭瘯瀹屾垚
+8220a01 HEAD@{15}: rebase: fast-forward
+488008e HEAD@{16}: rebase: fast-forward
+9a164d2 HEAD@{17}: rebase: fast-forward
+9403890 HEAD@{18}: rebase: fast-forward
+022e803 (HEAD -> lishui-Smartor, origin/lishui-Smartor, lishui-sf) HEAD@{19}: rebase (start): checkout HEAD~5
+b685449 HEAD@{20}: rebase (abort): updating HEAD
+b685449 HEAD@{21}: rebase (abort): updating HEAD
+b685449 HEAD@{22}: commit: 娴嬭瘯瀹屾垚
+8220a01 HEAD@{23}: commit: 娴嬭瘯瀹屾垚
+488008e HEAD@{24}: commit: 浣犵殑鎻愪氦淇℃伅
+9a164d2 HEAD@{25}: commit: 浣犵殑鎻愪氦淇℃伅
+9403890 HEAD@{26}: rebase (continue) (finish): returning to refs/heads/lishui-Smartor
+9403890 HEAD@{27}: rebase (continue) (finish): refs/heads/lishui-Smartor onto 022e8035e5143328ba01d76a74ea5f86e5c994f0
+9403890 HEAD@{28}: commit: 娴嬭瘯瀹屾垚
+022e803 (HEAD -> lishui-Smartor, origin/lishui-Smartor, lishui-sf) HEAD@{29}: checkout: moving from lishui-sf to lishui-Smartor
+022e803 (HEAD -> lishui-Smartor, origin/lishui-Smartor, lishui-sf) HEAD@{30}: checkout: moving from lishui-Smartor to lishui-sf
+022e803 (HEAD -> lishui-Smartor, origin/lishui-Smartor, lishui-sf) HEAD@{31}: commit: 娴嬭瘯瀹屾垚
+4898664 HEAD@{32}: checkout: moving from wuxi-smartor to lishui-Smartor
+b7f7f38 (wuxi-smartor) HEAD@{33}: checkout: moving from lishui-Smartor to wuxi-smartor
+4898664 HEAD@{34}: commit: 娴嬭瘯瀹屾垚
+337fb92 HEAD@{35}: commit: 娴嬭瘯瀹屾垚
+a7a20b2 HEAD@{36}: checkout: moving from HeNan-Smartor to lishui-Smartor
+56d56f3 (HeNan-Smartor) HEAD@{37}: checkout: moving from lishui-Smartor to HeNan-Smartor
+a7a20b2 HEAD@{38}: commit: 娴嬭瘯瀹屾垚
+6f1e7a6 HEAD@{39}: commit: 娴嬭瘯瀹屾垚
+5fba330 HEAD@{40}: commit: 娴嬭瘯瀹屾垚
+209b2f7 HEAD@{41}: commit: 娴嬭瘯瀹屾垚
+53f4f0a HEAD@{42}: checkout: moving from wuxi-smartor to lishui-Smartor
+b7f7f38 (wuxi-smartor) HEAD@{43}: commit: 娴嬭瘯瀹屾垚
+e353f0e (origin/wuxi-smartor) HEAD@{44}: checkout: moving from lishui-Smartor to wuxi-smartor
+53f4f0a HEAD@{45}: commit: 娴嬭瘯瀹屾垚
+2eff945 HEAD@{46}: commit: 娴嬭瘯瀹屾垚
+b6c854d HEAD@{47}: checkout: moving from HeNan-Smartor to lishui-Smartor
+56d56f3 (HeNan-Smartor) HEAD@{48}: commit: 娴嬭瘯瀹屾垚
+b6c854d HEAD@{49}: checkout: moving from lishui-Smartor to HeNan-Smartor
+b6c854d HEAD@{50}: commit: 娴嬭瘯瀹屾垚
+ec2f429 HEAD@{51}: commit: 娴嬭瘯瀹屾垚
+c1f1ecb HEAD@{52}: checkout: moving from wuxi-smartor to lishui-Smartor
+e353f0e (origin/wuxi-smartor) HEAD@{53}: commit: 娴嬭瘯瀹屾垚
+e580006 HEAD@{54}: commit: 娴嬭瘯瀹屾垚
+ffdeb04 HEAD@{55}: checkout: moving from lishui-Smartor to wuxi-smartor
+c1f1ecb HEAD@{56}: checkout: moving from wuxi-smartor to lishui-Smartor
+ffdeb04 HEAD@{57}: commit: 娴嬭瘯瀹屾垚
+55c665c HEAD@{58}: checkout: moving from lishui-Smartor to wuxi-smartor
+c1f1ecb HEAD@{59}: checkout: moving from wuxi-smartor to lishui-Smartor
+55c665c HEAD@{60}: checkout: moving from lishui-Smartor to wuxi-smartor
+c1f1ecb HEAD@{61}: commit: 娴嬭瘯瀹屾垚
+7449ee9 HEAD@{62}: checkout: moving from wuxi-smartor to lishui-Smartor
+55c665c HEAD@{63}: commit: 娴嬭瘯瀹屾垚
+f93c1fb HEAD@{64}: checkout: moving from lishui-Smartor to wuxi-smartor
+7449ee9 HEAD@{65}: checkout: moving from wuxi-smartor to lishui-Smartor
+f93c1fb HEAD@{66}: commit: 娴嬭瘯瀹屾垚
+b3b10f3 HEAD@{67}: checkout: moving from lishui-Smartor to wuxi-smartor
+7449ee9 HEAD@{68}: checkout: moving from wuxi-smartor to lishui-Smartor
+b3b10f3 HEAD@{69}: commit: 娴嬭瘯瀹屾垚
+30e7ca1 HEAD@{70}: checkout: moving from lishui-Smartor to wuxi-smartor
+7449ee9 HEAD@{71}: checkout: moving from wuxi-smartor to lishui-Smartor
+30e7ca1 HEAD@{72}: checkout: moving from lishui-Smartor to wuxi-smartor
+7449ee9 HEAD@{73}: commit: 娴嬭瘯瀹屾垚
+9ed874d HEAD@{74}: checkout: moving from wuxi-smartor to lishui-Smartor
+30e7ca1 HEAD@{75}: checkout: moving from lishui-Smartor to wuxi-smartor
+9ed874d HEAD@{76}: checkout: moving from lishui-Smartor to lishui-Smartor
+9ed874d HEAD@{77}: commit: 娴嬭瘯瀹屾垚
+6253746 HEAD@{78}: checkout: moving from wuxi-smartor to lishui-Smartor
+30e7ca1 HEAD@{79}: commit: 娴嬭瘯瀹屾垚
+8b120ce HEAD@{80}: checkout: moving from lishui-Smartor to wuxi-smartor
+6253746 HEAD@{81}: checkout: moving from wuxi-smartor to lishui-Smartor
+8b120ce HEAD@{82}: commit: 娴嬭瘯瀹屾垚
+d846a58 HEAD@{83}: checkout: moving from lishui-Smartor to wuxi-smartor
+6253746 HEAD@{84}: commit: 娴嬭瘯瀹屾垚
+5fb8598 HEAD@{85}: checkout: moving from master to lishui-Smartor
+f08b133 (origin/master, origin/HEAD, master) HEAD@{86}: checkout: moving from lishui-Smartor to master
+5fb8598 HEAD@{87}: checkout: moving from master to lishui-Smartor
+f08b133 (origin/master, origin/HEAD, master) HEAD@{88}: commit: 娴嬭瘯瀹屾垚
+7c5b7bd HEAD@{89}: commit: 娴嬭瘯瀹屾垚
+a52f35a HEAD@{90}: checkout: moving from lishui-Smartor to master
+5fb8598 HEAD@{91}: commit: 娴嬭瘯瀹屾垚
+aa06424 HEAD@{92}: checkout: moving from master to lishui-Smartor
+a52f35a HEAD@{93}: checkout: moving from lishui-Smartor to master
+aa06424 HEAD@{94}: checkout: moving from master to lishui-Smartor
+a52f35a HEAD@{95}: checkout: moving from lishui-Smartor to master
+aa06424 HEAD@{96}: commit: 娴嬭瘯瀹屾垚
+5733abb HEAD@{97}: checkout: moving from master to lishui-Smartor
+a52f35a HEAD@{98}: commit: 娴嬭瘯瀹屾垚
+246ad67 HEAD@{99}: checkout: moving from lishui-Smartor to master
+5733abb HEAD@{100}: checkout: moving from wuxi-smartor to lishui-Smartor
+d846a58 HEAD@{101}: commit: 娴嬭瘯瀹屾垚
+ba57b51 HEAD@{102}: checkout: moving from lishui-Smartor to wuxi-smartor
+5733abb HEAD@{103}: commit: 娴嬭瘯瀹屾垚
+9668152 HEAD@{104}: checkout: moving from wuxi-smartor to lishui-Smartor
+ba57b51 HEAD@{105}: commit: 娴嬭瘯瀹屾垚
+fe70ca5 HEAD@{106}: checkout: moving from lishui-Smartor to wuxi-smartor
+9668152 HEAD@{107}: commit: 娴嬭瘯瀹屾垚
+f06ac34 HEAD@{108}: checkout: moving from wuxi-smartor to lishui-Smartor
+fe70ca5 HEAD@{109}: commit: 娴嬭瘯瀹屾垚
+510b433 HEAD@{110}: checkout: moving from lishui-Smartor to wuxi-smartor
+f06ac34 HEAD@{111}: commit: 娴嬭瘯瀹屾垚
+20cd2de HEAD@{112}: checkout: moving from wuxi-smartor to lishui-Smartor
+510b433 HEAD@{113}: commit: 娴嬭瘯瀹屾垚
+e946f91 HEAD@{114}: checkout: moving from lishui-Smartor to wuxi-smartor
+20cd2de HEAD@{115}: commit: 娴嬭瘯瀹屾垚
+fe379fd HEAD@{116}: checkout: moving from wuxi-smartor to lishui-Smartor
+e946f91 HEAD@{117}: commit: 娴嬭瘯瀹屾垚
+952ce53 HEAD@{118}: checkout: moving from lishui-Smartor to wuxi-smartor
+fe379fd HEAD@{119}: checkout: moving from wuxi-smartor to lishui-Smartor
+952ce53 HEAD@{120}: checkout: moving from lishui-Smartor to wuxi-smartor
+fe379fd HEAD@{121}: commit: 娴嬭瘯瀹屾垚
+9cc3dcf HEAD@{122}: checkout: moving from wuxi-smartor to lishui-Smartor
+952ce53 HEAD@{123}: commit: 娴嬭瘯瀹屾垚
+d9004dd HEAD@{124}: checkout: moving from lishui-Smartor to wuxi-smartor
+9cc3dcf HEAD@{125}: commit: 娴嬭瘯瀹屾垚
+3ae495d HEAD@{126}: checkout: moving from wuxi-smartor to lishui-Smartor
+d9004dd HEAD@{127}: commit: 娴嬭瘯瀹屾垚
+a90f11d HEAD@{128}: commit: 娴嬭瘯瀹屾垚
+125529d HEAD@{129}: checkout: moving from lishui-Smartor to wuxi-smartor
+3ae495d HEAD@{130}: commit: 娴嬭瘯瀹屾垚
+dafbb90 HEAD@{131}: checkout: moving from wuxi-smartor to lishui-Smartor
+125529d HEAD@{132}: commit: 娴嬭瘯瀹屾垚
+ce16687 HEAD@{133}: checkout: moving from lishui-Smartor to wuxi-smartor
+dafbb90 HEAD@{134}: checkout: moving from wuxi-smartor to lishui-Smartor
+ce16687 HEAD@{135}: commit: 娴嬭瘯瀹屾垚
+039c34d HEAD@{136}: checkout: moving from lishui-Smartor to wuxi-smartor
+dafbb90 HEAD@{137}: checkout: moving from wuxi-smartor to lishui-Smartor
+039c34d HEAD@{138}: commit: 娴嬭瘯瀹屾垚
+51102f4 HEAD@{139}: checkout: moving from lishui-Smartor to wuxi-smartor
+dafbb90 HEAD@{140}: commit: 娴嬭瘯瀹屾垚
+665ac63 HEAD@{141}: commit: 娴嬭瘯瀹屾垚
+9a5dd25 HEAD@{142}: commit: 娴嬭瘯瀹屾垚
+880e036 HEAD@{143}: commit: 娴嬭瘯瀹屾垚
+e10381f HEAD@{144}: commit: 娴嬭瘯瀹屾垚
+c7c591d HEAD@{145}: commit: 娴嬭瘯瀹屾垚
+af3ff15 HEAD@{146}: checkout: moving from wuxi-smartor to lishui-Smartor
+51102f4 HEAD@{147}: checkout: moving from lishui-Smartor to wuxi-smartor
+af3ff15 HEAD@{148}: commit: 娴嬭瘯瀹屾垚
+36d1334 HEAD@{149}: checkout: moving from wuxi-smartor to lishui-Smartor
+51102f4 HEAD@{150}: commit: 娴嬭瘯瀹屾垚
+d4744cf HEAD@{151}: checkout: moving from lishui-Smartor to wuxi-smartor
+36d1334 HEAD@{152}: checkout: moving from wuxi-smartor to lishui-Smartor
+d4744cf HEAD@{153}: commit: 娴嬭瘯瀹屾垚
+e750691 HEAD@{154}: checkout: moving from lishui-Smartor to wuxi-smartor
+36d1334 HEAD@{155}: commit: 娴嬭瘯瀹屾垚
+a22820c HEAD@{156}: checkout: moving from wuxi-smartor to lishui-Smartor
+e750691 HEAD@{157}: commit: 娴嬭瘯瀹屾垚
+ef60bc9 HEAD@{158}: commit: 娴嬭瘯瀹屾垚
+f37b479 HEAD@{159}: checkout: moving from lishui-Smartor to wuxi-smartor
+a22820c HEAD@{160}: checkout: moving from wuxi-smartor to lishui-Smartor
+f37b479 HEAD@{161}: commit: 娴嬭瘯瀹屾垚
+547be67 HEAD@{162}: checkout: moving from lishui-Smartor to wuxi-smartor
+a22820c HEAD@{163}: commit: 娴嬭瘯瀹屾垚
+f3f7256 HEAD@{164}: checkout: moving from master to lishui-Smartor
+246ad67 HEAD@{165}: checkout: moving from lishui-Smartor to master
+f3f7256 HEAD@{166}: commit: 娴嬭瘯瀹屾垚
+84e20d0 HEAD@{167}: checkout: moving from master to lishui-Smartor
+246ad67 HEAD@{168}: commit: 娴嬭瘯瀹屾垚
+c97bd0d HEAD@{169}: commit: 娴嬭瘯瀹屾垚
+bdb26dc HEAD@{170}: checkout: moving from lishui-Smartor to master
+84e20d0 HEAD@{171}: checkout: moving from master to lishui-Smartor
+bdb26dc HEAD@{172}: commit: 娴嬭瘯瀹屾垚
+3b6c56e HEAD@{173}: checkout: moving from lishui-Smartor to master
+84e20d0 HEAD@{174}: commit: 娴嬭瘯瀹屾垚
+572a624 HEAD@{175}: checkout: moving from master to lishui-Smartor
+3b6c56e HEAD@{176}: commit: 娴嬭瘯瀹屾垚
+0d18860 HEAD@{177}: checkout: moving from lishui-Smartor to master
+572a624 HEAD@{178}: commit: 娴嬭瘯瀹屾垚
+a5bc95e HEAD@{179}: checkout: moving from wuxi-smartor to lishui-Smartor
+547be67 HEAD@{180}: commit: 娴嬭瘯瀹屾垚
+c4fb353 HEAD@{181}: commit: 娴嬭瘯瀹屾垚
+a398c62 HEAD@{182}: checkout: moving from master to wuxi-smartor
+0d18860 HEAD@{183}: commit: 娴嬭瘯瀹屾垚
+d5806f3 HEAD@{184}: commit (merge): 娴嬭瘯瀹屾垚
+783b99e HEAD@{185}: commit: 娴嬭瘯瀹屾垚
+77a8ca0 HEAD@{186}: checkout: moving from wuxi-smartor to master
+a398c62 HEAD@{187}: commit: 娴嬭瘯瀹屾垚
+98b9fdc HEAD@{188}: commit: 娴嬭瘯瀹屾垚
+9dd3964 HEAD@{189}: checkout: moving from lishui-Smartor to wuxi-smartor
+a5bc95e HEAD@{190}: checkout: moving from wuxi-smartor to lishui-Smartor
+9dd3964 HEAD@{191}: commit: 娴嬭瘯瀹屾垚
+4cf6b25 HEAD@{192}: checkout: moving from lishui-Smartor to wuxi-smartor
+a5bc95e HEAD@{193}: checkout: moving from wuxi-smartor to lishui-Smartor
+4cf6b25 HEAD@{194}: commit: 娴嬭瘯瀹屾垚
+3bab592 HEAD@{195}: checkout: moving from lishui-Smartor to wuxi-smartor
+a5bc95e HEAD@{196}: commit: 娴嬭瘯瀹屾垚
+be764ba HEAD@{197}: checkout: moving from wuxi-smartor to lishui-Smartor
+3bab592 HEAD@{198}: commit: 娴嬭瘯瀹屾垚
+23f920e HEAD@{199}: checkout: moving from lishui-Smartor to wuxi-smartor
+be764ba HEAD@{200}: checkout: moving from wuxi-smartor to lishui-Smartor
+23f920e HEAD@{201}: commit: 娴嬭瘯瀹屾垚
+03d20b4 HEAD@{202}: checkout: moving from lishui-Smartor to wuxi-smartor
+be764ba HEAD@{203}: checkout: moving from wuxi-smartor to lishui-Smartor
+03d20b4 HEAD@{204}: commit: 娴嬭瘯瀹屾垚
+31cbe57 HEAD@{205}: checkout: moving from lishui-Smartor to wuxi-smartor
+be764ba HEAD@{206}: commit: 娴嬭瘯瀹屾垚
+e46bb66 HEAD@{207}: checkout: moving from wuxi-smartor to lishui-Smartor
+31cbe57 HEAD@{208}: checkout: moving from lishui-Smartor to wuxi-smartor
+e46bb66 HEAD@{209}: commit: 娴嬭瘯瀹屾垚
+8ed125f HEAD@{210}: checkout: moving from wuxi-smartor to lishui-Smartor
+31cbe57 HEAD@{211}: commit: 娴嬭瘯瀹屾垚
+66b105c HEAD@{212}: checkout: moving from lishui-Smartor to wuxi-smartor
+8ed125f HEAD@{213}: checkout: moving from wuxi-smartor to lishui-Smartor
+66b105c HEAD@{214}: checkout: moving from lishui-Smartor to wuxi-smartor
+8ed125f HEAD@{215}: commit: 缁熻瀹屾垚
+37d2ba3 HEAD@{216}: checkout: moving from wuxi-smartor to lishui-Smartor
+66b105c HEAD@{217}: checkout: moving from lishui-Smartor to wuxi-smartor
+37d2ba3 HEAD@{218}: commit: 娴嬭瘯瀹屾垚
+45f9797 HEAD@{219}: checkout: moving from wuxi-smartor to lishui-Smartor
+66b105c HEAD@{220}: commit: 娴嬭瘯瀹屾垚
+88cd1b9 HEAD@{221}: checkout: moving from master to wuxi-smartor
+77a8ca0 HEAD@{222}: commit: 娴嬭瘯瀹屾垚
+ddba782 HEAD@{223}: checkout: moving from lishui-Smartor to master
+45f9797 HEAD@{224}: commit: 娴嬭瘯瀹屾垚
+0e3739a HEAD@{225}: commit: 娴嬭瘯瀹屾垚
+54489da HEAD@{226}: commit: 娴嬭瘯瀹屾垚
+303d443 HEAD@{227}: checkout: moving from wuxi-smartor to lishui-Smartor
+88cd1b9 HEAD@{228}: checkout: moving from lishui-Smartor to wuxi-smartor
+303d443 HEAD@{229}: commit: 娴嬭瘯瀹屾垚
+5a8e93d HEAD@{230}: checkout: moving from wuxi-smartor to lishui-Smartor
+88cd1b9 HEAD@{231}: checkout: moving from lishui-Smartor to wuxi-smartor
+5a8e93d HEAD@{232}: commit: 娴嬭瘯瀹屾垚
+4413b46 HEAD@{233}: checkout: moving from wuxi-smartor to lishui-Smartor
+88cd1b9 HEAD@{234}: commit: 娴嬭瘯瀹屾垚
+78fc1cf HEAD@{235}: checkout: moving from lishui-Smartor to wuxi-smartor
+4413b46 HEAD@{236}: checkout: moving from wuxi-smartor to lishui-Smartor
+78fc1cf HEAD@{237}: commit: 娴嬭瘯瀹屾垚
+901206c HEAD@{238}: checkout: moving from lishui-Smartor to wuxi-smartor
+4413b46 HEAD@{239}: commit: 娴嬭瘯瀹屾垚
+0529f31 HEAD@{240}: checkout: moving from wuxi-smartor to lishui-Smartor
+901206c HEAD@{241}: commit: 娴嬭瘯瀹屾垚
+f710fa7 HEAD@{242}: checkout: moving from lishui-Smartor to wuxi-smartor
+0529f31 HEAD@{243}: commit: 娴嬭瘯瀹屾垚
+08c27c1 HEAD@{244}: checkout: moving from wuxi-smartor to lishui-Smartor
+f710fa7 HEAD@{245}: commit: 娴嬭瘯瀹屾垚
+33c6294 HEAD@{246}: commit: 娴嬭瘯瀹屾垚
+55ee279 HEAD@{247}: checkout: moving from lishui-Smartor to wuxi-smartor
+08c27c1 HEAD@{248}: commit: 娴嬭瘯瀹屾垚
+6d7cd13 HEAD@{249}: checkout: moving from wuxi-smartor to lishui-Smartor
+55ee279 HEAD@{250}: commit: 娴嬭瘯瀹屾垚
+136b920 HEAD@{251}: checkout: moving from lishui-Smartor to wuxi-smartor
+6d7cd13 HEAD@{252}: commit: 娴嬭瘯瀹屾垚
+8e71817 HEAD@{253}: commit: 娴嬭瘯瀹屾垚
+b7092c2 HEAD@{254}: commit: 娴嬭瘯瀹屾垚
+bc241c4 HEAD@{255}: checkout: moving from master to lishui-Smartor
+ddba782 HEAD@{256}: checkout: moving from lishui-Smartor to master
+bc241c4 HEAD@{257}: commit: 娴嬭瘯瀹屾垚
+5e17454 HEAD@{258}: checkout: moving from master to lishui-Smartor
+ddba782 HEAD@{259}: checkout: moving from lishui-Smartor to master
+5e17454 HEAD@{260}: checkout: moving from master to lishui-Smartor
+ddba782 HEAD@{261}: commit: 娴嬭瘯瀹屾垚
+552e2c4 HEAD@{262}: checkout: moving from lishui-Smartor to master
+5e17454 HEAD@{263}: commit: 娴嬭瘯瀹屾垚
+186b271 HEAD@{264}: checkout: moving from wuxi-smartor to lishui-Smartor
+136b920 HEAD@{265}: checkout: moving from lishui-Smartor to wuxi-smartor
+186b271 HEAD@{266}: commit: 娴嬭瘯瀹屾垚
+6535680 HEAD@{267}: commit: 娴嬭瘯瀹屾垚
+6be4939 HEAD@{268}: commit: 娴嬭瘯瀹屾垚
+400d13d HEAD@{269}: checkout: moving from wuxi-smartor to lishui-Smartor
+136b920 HEAD@{270}: checkout: moving from lishui-Smartor to wuxi-smartor
+400d13d HEAD@{271}: commit: 娴嬭瘯瀹屾垚
+3877190 HEAD@{272}: checkout: moving from wuxi-smartor to lishui-Smartor
+136b920 HEAD@{273}: commit: 娴嬭瘯瀹屾垚
+55c064e HEAD@{274}: checkout: moving from lishui-Smartor to wuxi-smartor
+3877190 HEAD@{275}: checkout: moving from wuxi-smartor to lishui-Smartor
+55c064e HEAD@{276}: checkout: moving from lishui-Smartor to wuxi-smartor
+3877190 HEAD@{277}: commit: 娴嬭瘯瀹屾垚
+78f514b HEAD@{278}: checkout: moving from wuxi-smartor to lishui-Smartor
+55c064e HEAD@{279}: commit: 娴嬭瘯瀹屾垚
+2b67e58 HEAD@{280}: checkout: moving from lishui-Smartor to wuxi-smartor
+78f514b HEAD@{281}: commit: 娴嬭瘯瀹屾垚
+fecb2f5 HEAD@{282}: checkout: moving from wuxi-smartor to lishui-Smartor
+2b67e58 HEAD@{283}: commit: 娴嬭瘯瀹屾垚
+91dc8cc HEAD@{284}: checkout: moving from lishui-Smartor to wuxi-smartor
+fecb2f5 HEAD@{285}: checkout: moving from wuxi-smartor to lishui-Smartor
+91dc8cc HEAD@{286}: checkout: moving from lishui-Smartor to wuxi-smartor
+fecb2f5 HEAD@{287}: commit: 娴嬭瘯瀹屾垚
+4395f0d HEAD@{288}: checkout: moving from wuxi-smartor to lishui-Smartor
+91dc8cc HEAD@{289}: commit: 娴嬭瘯瀹屾垚
+6a1bafa HEAD@{290}: checkout: moving from lishui-Smartor to wuxi-smartor
+4395f0d HEAD@{291}: checkout: moving from wuxi-smartor to lishui-Smartor
+6a1bafa HEAD@{292}: commit: 娴嬭瘯瀹屾垚
+d74a76f HEAD@{293}: checkout: moving from lishui-Smartor to wuxi-smartor
+4395f0d HEAD@{294}: commit: 娴嬭瘯瀹屾垚
+327d234 HEAD@{295}: commit: 娴嬭瘯瀹屾垚
+56b8443 HEAD@{296}: checkout: moving from wuxi-smartor to lishui-Smartor
+d74a76f HEAD@{297}: checkout: moving from lishui-Smartor to wuxi-smartor
+56b8443 HEAD@{298}: commit: 娴嬭瘯瀹屾垚
+8d0f7fc HEAD@{299}: commit: 娴嬭瘯瀹屾垚
+38c9042 HEAD@{300}: commit: 娴嬭瘯瀹屾垚
+7d47700 HEAD@{301}: commit: 娴嬭瘯瀹屾垚
+273e2fa HEAD@{302}: commit: 娴嬭瘯瀹屾垚
+401c835 HEAD@{303}: commit: 娴嬭瘯瀹屾垚
+60e5b16 HEAD@{304}: commit: 娴嬭瘯瀹屾垚
+6e54a66 HEAD@{305}: commit: 娴嬭瘯瀹屾垚
+ee8f1a0 HEAD@{306}: commit: 娴嬭瘯瀹屾垚
+5f3691d HEAD@{307}: commit: 娴嬭瘯瀹屾垚
+4b60348 HEAD@{308}: commit: 娴嬭瘯瀹屾垚
+418e3a7 HEAD@{309}: checkout: moving from wuxi-smartor to lishui-Smartor
+d74a76f HEAD@{310}: commit: 娴嬭瘯瀹屾垚
+a022656 HEAD@{311}: checkout: moving from lishui-Smartor to wuxi-smartor
+418e3a7 HEAD@{312}: commit: 娴嬭瘯瀹屾垚
+4c9eab7 HEAD@{313}: commit: 娴嬭瘯瀹屾垚
+15e42d9 HEAD@{314}: checkout: moving from master to lishui-Smartor
+552e2c4 HEAD@{315}: commit: 娴嬭瘯瀹屾垚
+823bd7c HEAD@{316}: checkout: moving from lishui-Smartor to master
+15e42d9 HEAD@{317}: commit: 娴嬭瘯瀹屾垚
+9f5b4e2 HEAD@{318}: checkout: moving from wuxi-smartor to lishui-Smartor
+a022656 HEAD@{319}: commit: 娴嬭瘯瀹屾垚
+9259056 HEAD@{320}: checkout: moving from lishui-Smartor to wuxi-smartor
+9f5b4e2 HEAD@{321}: commit: 娴嬭瘯瀹屾垚
+99a916e HEAD@{322}: commit: 娴嬭瘯瀹屾垚
+abde816 HEAD@{323}: commit: 娴嬭瘯瀹屾垚
+81ffbda HEAD@{324}: checkout: moving from master to lishui-Smartor
+823bd7c HEAD@{325}: commit: 娴嬭瘯瀹屾垚
+84f0f55 HEAD@{326}: checkout: moving from lishui-Smartor to master
+81ffbda HEAD@{327}: checkout: moving from master to lishui-Smartor
+84f0f55 HEAD@{328}: checkout: moving from lishui-Smartor to master
+81ffbda HEAD@{329}: commit: 娴嬭瘯瀹屾垚
+935e93f HEAD@{330}: checkout: moving from master to lishui-Smartor
+84f0f55 HEAD@{331}: checkout: moving from lishui-Smartor to master
+935e93f HEAD@{332}: commit: 娴嬭瘯瀹屾垚
+b73b5dd HEAD@{333}: checkout: moving from master to lishui-Smartor
+84f0f55 HEAD@{334}: checkout: moving from lishui-Smartor to master
+b73b5dd HEAD@{335}: commit: 娴嬭瘯瀹屾垚
+2daa54c HEAD@{336}: checkout: moving from master to lishui-Smartor
+84f0f55 HEAD@{337}: checkout: moving from lishui-Smartor to master
+2daa54c HEAD@{338}: commit: 娴嬭瘯瀹屾垚
+073edc9 HEAD@{339}: checkout: moving from wuxi-smartor to lishui-Smartor
+9259056 HEAD@{340}: checkout: moving from master to wuxi-smartor
+84f0f55 HEAD@{341}: commit: 娴嬭瘯瀹屾垚
+d7b9ffb HEAD@{342}: checkout: moving from lishui-Smartor to master
+073edc9 HEAD@{343}: commit: 娴嬭瘯瀹屾垚
+838d8b5 HEAD@{344}: checkout: moving from master to lishui-Smartor
+d7b9ffb HEAD@{345}: checkout: moving from lishui-Smartor to master
+838d8b5 HEAD@{346}: checkout: moving from master to lishui-Smartor
+d7b9ffb HEAD@{347}: commit: 娴嬭瘯瀹屾垚
+b8085c1 HEAD@{348}: checkout: moving from wuxi-smartor to master
+9259056 HEAD@{349}: checkout: moving from lishui-Smartor to wuxi-smartor
+838d8b5 HEAD@{350}: checkout: moving from wuxi-smartor to lishui-Smartor
+9259056 HEAD@{351}: commit: 娴嬭瘯瀹屾垚
+d9a95a7 HEAD@{352}: checkout: moving from master to wuxi-smartor
+b8085c1 HEAD@{353}: checkout: moving from lishui-Smartor to master
+838d8b5 HEAD@{354}: checkout: moving from master to lishui-Smartor
+b8085c1 HEAD@{355}: commit: 娴嬭瘯瀹屾垚
+baeeb80 HEAD@{356}: checkout: moving from lishui-Smartor to master
+838d8b5 HEAD@{357}: commit: 娴嬭瘯瀹屾垚
+3fd01fa HEAD@{358}: checkout: moving from wuxi-smartor to lishui-Smartor
+d9a95a7 HEAD@{359}: checkout: moving from lishui-Smartor to wuxi-smartor
+3fd01fa HEAD@{360}: commit: 娴嬭瘯瀹屾垚
+88481a3 HEAD@{361}: checkout: moving from wuxi-smartor to lishui-Smartor
+d9a95a7 HEAD@{362}: commit: 娴嬭瘯瀹屾垚
+ffb5cf7 HEAD@{363}: checkout: moving from master to wuxi-smartor
+baeeb80 HEAD@{364}: commit: 娴嬭瘯瀹屾垚
+5271bf2 HEAD@{365}: checkout: moving from lishui-Smartor to master
+88481a3 HEAD@{366}: checkout: moving from wuxi-smartor to lishui-Smartor
+ffb5cf7 HEAD@{367}: commit: 娴嬭瘯瀹屾垚
+f5c2015 HEAD@{368}: checkout: moving from DeBug to wuxi-smartor
+6d3e75d (origin/DeBug, DeBug) HEAD@{369}: checkout: moving from lishui-Smartor to DeBug
+88481a3 HEAD@{370}: checkout: moving from wuxi-smartor to lishui-Smartor
+f5c2015 HEAD@{371}: checkout: moving from master to wuxi-smartor
+5271bf2 HEAD@{372}: commit: 娴嬭瘯瀹屾垚
+0516a6b HEAD@{373}: checkout: moving from lishui-Smartor to master
+88481a3 HEAD@{374}: commit: 娴嬭瘯瀹屾垚
+12eb16c HEAD@{375}: commit: 娴嬭瘯瀹屾垚
+083ae82 HEAD@{376}: checkout: moving from wuxi-smartor to lishui-Smartor
+f5c2015 HEAD@{377}: commit: 娴嬭瘯瀹屾垚
+28f8a2e HEAD@{378}: checkout: moving from lishui-Smartor to wuxi-smartor
+083ae82 HEAD@{379}: commit: 娴嬭瘯瀹屾垚
+36b7179 HEAD@{380}: checkout: moving from wuxi-smartor to lishui-Smartor
+28f8a2e HEAD@{381}: commit: 娴嬭瘯瀹屾垚
+5e20020 HEAD@{382}: checkout: moving from lishui-Smartor to wuxi-smartor
+36b7179 HEAD@{383}: checkout: moving from master to lishui-Smartor
+0516a6b HEAD@{384}: checkout: moving from wuxi-smartor to master
+5e20020 HEAD@{385}: checkout: moving from lishui-Smartor to wuxi-smartor
+36b7179 HEAD@{386}: commit: 娴嬭瘯瀹屾垚
+03a3eff HEAD@{387}: checkout: moving from master to lishui-Smartor
+0516a6b HEAD@{388}: commit: 娴嬭瘯瀹屾垚
+32674b0 HEAD@{389}: checkout: moving from lishui-Smartor to master
+03a3eff HEAD@{390}: checkout: moving from master to lishui-Smartor
+32674b0 HEAD@{391}: checkout: moving from lishui-Smartor to master
+03a3eff HEAD@{392}: commit: 娴嬭瘯瀹屾垚
+2b1cfea HEAD@{393}: commit: 娴嬭瘯瀹屾垚
+ff99a9b HEAD@{394}: checkout: moving from master to lishui-Smartor
+32674b0 HEAD@{395}: checkout: moving from lishui-Smartor to master
+ff99a9b HEAD@{396}: commit: 娴嬭瘯瀹屾垚
+cf2c2a9 HEAD@{397}: checkout: moving from wuxi-smartor to lishui-Smartor
+5e20020 HEAD@{398}: checkout: moving from lishui-Smartor to wuxi-smartor
+cf2c2a9 HEAD@{399}: checkout: moving from wuxi-smartor to lishui-Smartor
+5e20020 HEAD@{400}: checkout: moving from lishui-Smartor to wuxi-smartor
+cf2c2a9 HEAD@{401}: commit: 娴嬭瘯瀹屾垚
+a77752e HEAD@{402}: commit: 娴嬭瘯瀹屾垚
+3bb35f1 HEAD@{403}: commit: 娴嬭瘯瀹屾垚
+b0dd238 HEAD@{404}: commit: 娴嬭瘯瀹屾垚
+57a7537 HEAD@{405}: commit: 娴嬭瘯瀹屾垚
+83d8322 HEAD@{406}: checkout: moving from master to lishui-Smartor
+32674b0 HEAD@{407}: commit: 娴嬭瘯瀹屾垚
+f6bc6ed HEAD@{408}: checkout: moving from lishui-Smartor to master
+83d8322 HEAD@{409}: commit: 娴嬭瘯瀹屾垚
+ee1d4af HEAD@{410}: checkout: moving from master to lishui-Smartor
+f6bc6ed HEAD@{411}: checkout: moving from lishui-Smartor to master
+ee1d4af HEAD@{412}: commit: 娴嬭瘯瀹屾垚
+bcf3cae HEAD@{413}: commit: 娴嬭瘯瀹屾垚
+d5f7da9 HEAD@{414}: checkout: moving from wuxi-smartor to lishui-Smartor
+5e20020 HEAD@{415}: commit: 娴嬭瘯瀹屾垚
+ee31f47 HEAD@{416}: checkout: moving from lishui-Smartor to wuxi-smartor
+d5f7da9 HEAD@{417}: commit (merge): 娴嬭瘯瀹屾垚
+5acc6d2 HEAD@{418}: commit: 娴嬭瘯瀹屾垚
+355bbb7 HEAD@{419}: commit: 娴嬭瘯瀹屾垚
+a3d2f84 HEAD@{420}: checkout: moving from wuxi-smartor to lishui-Smartor
+ee31f47 HEAD@{421}: checkout: moving from lishui-Smartor to wuxi-smartor
+a3d2f84 HEAD@{422}: commit: 娴嬭瘯瀹屾垚
+bc99b53 HEAD@{423}: checkout: moving from wuxi-smartor to lishui-Smartor
+ee31f47 HEAD@{424}: commit: 娴嬭瘯瀹屾垚
+84b1d28 HEAD@{425}: checkout: moving from lishui-Smartor to wuxi-smartor
+bc99b53 HEAD@{426}: commit: 娴嬭瘯瀹屾垚
+17edb0e HEAD@{427}: checkout: moving from wuxi-smartor to lishui-Smartor
+84b1d28 HEAD@{428}: commit: 娴嬭瘯瀹屾垚
+bfce8d1 HEAD@{429}: checkout: moving from lishui-Smartor to wuxi-smartor
+17edb0e HEAD@{430}: checkout: moving from wuxi-smartor to lishui-Smartor
+bfce8d1 HEAD@{431}: commit: 娴嬭瘯瀹屾垚
+44d24a2 HEAD@{432}: checkout: moving from lishui-Smartor to wuxi-smartor
+17edb0e HEAD@{433}: checkout: moving from wuxi-smartor to lishui-Smartor
+44d24a2 HEAD@{434}: commit: 娴嬭瘯瀹屾垚
+5f4c59e HEAD@{435}: checkout: moving from lishui-Smartor to wuxi-smartor
+17edb0e HEAD@{436}: commit: 娴嬭瘯瀹屾垚
+891f159 HEAD@{437}: commit: 娴嬭瘯瀹屾垚
+50873f4 HEAD@{438}: checkout: moving from wuxi-smartor to lishui-Smartor
+5f4c59e HEAD@{439}: commit: 娴嬭瘯瀹屾垚
+4f3692a HEAD@{440}: checkout: moving from lishui-Smartor to wuxi-smartor
+50873f4 HEAD@{441}: checkout: moving from wuxi-smartor to lishui-Smartor
+4f3692a HEAD@{442}: commit: 娴嬭瘯瀹屾垚
+321891f HEAD@{443}: commit: 娴嬭瘯瀹屾垚
+3b8d057 HEAD@{444}: commit: 娴嬭瘯瀹屾垚
+f6bc6ed HEAD@{445}: merge master: Fast-forward
+9507541 HEAD@{446}: checkout: moving from lishui-Smartor to wuxi-smartor
+50873f4 HEAD@{447}: commit: 娴嬭瘯瀹屾垚
+ec64a69 HEAD@{448}: commit: 娴嬭瘯瀹屾垚
+8aa0592 HEAD@{449}: checkout: moving from master to lishui-Smartor
+f6bc6ed HEAD@{450}: checkout: moving from lishui-Smartor to master
+8aa0592 HEAD@{451}: checkout: moving from master to lishui-Smartor
+f6bc6ed HEAD@{452}: checkout: moving from lishui-Smartor to master
+8aa0592 HEAD@{453}: checkout: moving from master to lishui-Smartor
+f6bc6ed HEAD@{454}: checkout: moving from lishui-Smartor to master
+8aa0592 HEAD@{455}: checkout: moving from master to lishui-Smartor
+f6bc6ed HEAD@{456}: checkout: moving from lishui-Smartor to master
+8aa0592 HEAD@{457}: commit: 娴嬭瘯瀹屾垚
+a5faf6e HEAD@{458}: commit (merge): 娴嬭瘯瀹屾垚
+46784b2 HEAD@{459}: checkout: moving from master to lishui-Smartor
+f6bc6ed HEAD@{460}: commit: 娴嬭瘯瀹屾垚
+f4e079f HEAD@{461}: checkout: moving from lishui-Smartor to master
+46784b2 HEAD@{462}: commit: 娴嬭瘯瀹屾垚
+e48362d HEAD@{463}: commit (merge): 娴嬭瘯瀹屾垚
+4cd2bfd HEAD@{464}: checkout: moving from master to lishui-Smartor
+f4e079f HEAD@{465}: commit: 娴嬭瘯瀹屾垚
+dea82b7 HEAD@{466}: commit: 娴嬭瘯瀹屾垚
+0c2a0bd HEAD@{467}: checkout: moving from lishui-Smartor to master
+4cd2bfd HEAD@{468}: commit: 娴嬭瘯瀹屾垚
+7cfedaa HEAD@{469}: commit (merge): 娴嬭瘯瀹屾垚
+98589bb HEAD@{470}: checkout: moving from master to lishui-Smartor
+0c2a0bd HEAD@{471}: commit: 娴嬭瘯瀹屾垚
+48e96f3 HEAD@{472}: checkout: moving from lishui-Smartor to master
+98589bb HEAD@{473}: checkout: moving from master to lishui-Smartor
+48e96f3 HEAD@{474}: commit: 娴嬭瘯瀹屾垚
+fc63b5b HEAD@{475}: checkout: moving from lishui-Smartor to master
+98589bb HEAD@{476}: commit: 娴嬭瘯瀹屾垚
+981fbdd HEAD@{477}: pull --tags origin lishui-Smartor: Fast-forward
+8c79267 HEAD@{478}: reset: moving to 8c79267eb478e2986c5293d3fb48f1c3da18c544
+981fbdd HEAD@{479}: checkout: moving from linshi-smartor to lishui-Smartor
+981fbdd HEAD@{480}: checkout: moving from linshi-smartor to linshi-smartor
+981fbdd HEAD@{481}: checkout: moving from lishui-Smartor to linshi-smartor
+981fbdd HEAD@{482}: checkout: moving from master to lishui-Smartor
+fc63b5b HEAD@{483}: commit: 娴嬭瘯瀹屾垚
+aca3443 HEAD@{484}: checkout: moving from lishui-Smartor to master
+981fbdd HEAD@{485}: commit: 娴嬭瘯瀹屾垚
+6de02b3 HEAD@{486}: checkout: moving from master to lishui-Smartor
+aca3443 HEAD@{487}: checkout: moving from lishui-Smartor to master
+6de02b3 HEAD@{488}: checkout: moving from master to lishui-Smartor
+aca3443 HEAD@{489}: checkout: moving from lishui-Smartor to master
+6de02b3 HEAD@{490}: commit: 娴嬭瘯瀹屾垚
+9896138 HEAD@{491}: commit (merge): 娴嬭瘯瀹屾垚
+4a7648d HEAD@{492}: checkout: moving from master to lishui-Smartor
+aca3443 HEAD@{493}: commit: 娴嬭瘯瀹屾垚
+1a090a4 HEAD@{494}: commit: 娴嬭瘯瀹屾垚
+8c79267 HEAD@{495}: commit: 娴嬭瘯瀹屾垚
+080186b HEAD@{496}: checkout: moving from lishui-Smartor to master
+4a7648d HEAD@{497}: commit: 娴嬭瘯瀹屾垚
+09a1bd5 HEAD@{498}: commit: 娴嬭瘯瀹屾垚
+4492ab0 HEAD@{499}: commit: 娴嬭瘯瀹屾垚
+eef0168 HEAD@{500}: commit (merge): 娴嬭瘯瀹屾垚
+3dcfdb6 HEAD@{501}: checkout: moving from master to lishui-Smartor
+080186b HEAD@{502}: commit: 娴嬭瘯瀹屾垚
+0a4cc3c HEAD@{503}: checkout: moving from external to master
+3a7caf4 (origin/external, external) HEAD@{504}: checkout: moving from master to external
+0a4cc3c HEAD@{505}: checkout: moving from external to master
+3a7caf4 (origin/external, external) HEAD@{506}: commit: 娴嬭瘯瀹屾垚
+5fcfaee HEAD@{507}: commit: 娴嬭瘯瀹屾垚
+c8204d0 HEAD@{508}: checkout: moving from master to external
+0a4cc3c HEAD@{509}: checkout: moving from external to master
+c8204d0 HEAD@{510}: checkout: moving from master to external
+0a4cc3c HEAD@{511}: checkout: moving from external to master
+c8204d0 HEAD@{512}: checkout: moving from external to external
+c8204d0 HEAD@{513}: checkout: moving from master to external
+0a4cc3c HEAD@{514}: commit: 娴嬭瘯瀹屾垚
+1cb1fbf HEAD@{515}: checkout: moving from external to master
+c8204d0 HEAD@{516}: commit: 娴嬭瘯瀹屾垚
+621935e HEAD@{517}: checkout: moving from master to external
+1cb1fbf HEAD@{518}: reset: moving to HEAD
+1cb1fbf HEAD@{519}: checkout: moving from external to master
+621935e HEAD@{520}: checkout: moving from master to external
+1cb1fbf HEAD@{521}: checkout: moving from external to master
+621935e HEAD@{522}: checkout: moving from 1cb1fbf80c955986385377b5f84e8915d1e655d6 to external
+1cb1fbf HEAD@{523}: checkout: moving from external to 1cb1fbf80c955986385377b5f84e8915d1e655d6
+621935e HEAD@{524}: checkout: moving from wuxi-smartor to external
+9507541 HEAD@{525}: checkout: moving from external to wuxi-smartor
+621935e HEAD@{526}: commit: 娴嬭瘯瀹屾垚
+c7e1537 HEAD@{527}: checkout: moving from wuxi-smartor to external
+9507541 HEAD@{528}: checkout: moving from master to wuxi-smartor
+1cb1fbf HEAD@{529}: commit: 娴嬭瘯瀹屾垚
+77fb64c HEAD@{530}: checkout: moving from lishui-Smartor to master
+3dcfdb6 HEAD@{531}: commit: 涓芥按鎻愪氦
+77fb64c HEAD@{532}: checkout: moving from master to lishui-Smartor
+77fb64c HEAD@{533}: checkout: moving from wuxi-smartor to master
+9507541 HEAD@{534}: checkout: moving from wuxi-smartor to wuxi-smartor
+9507541 HEAD@{535}: checkout: moving from master to wuxi-smartor
+77fb64c HEAD@{536}: commit: 鏂板崕鎻愪氦
+9507541 HEAD@{537}: merge wuxi-smartor: Fast-forward
+07e07d6 HEAD@{538}: checkout: moving from wuxi-smartor to master
+9507541 HEAD@{539}: commit: 鏃犻敗鎻愪氦
+07e07d6 HEAD@{540}: checkout: moving from master to wuxi-smartor
+07e07d6 HEAD@{541}: commit: 鏂板崕鎻愪氦
+b26c48a HEAD@{542}: checkout: moving from external to master
+c7e1537 HEAD@{543}: commit: 澶栭摼鐙珛
+c87c46a HEAD@{544}: commit: 澶栭摼鐙珛
+4fb7f36 HEAD@{545}: checkout: moving from master to external
+b26c48a HEAD@{546}: commit: 娴嬭瘯瀹屾垚
+c1139d1 HEAD@{547}: checkout: moving from external to master
+4fb7f36 HEAD@{548}: checkout: moving from master to external
+c1139d1 HEAD@{549}: checkout: moving from external to master
+4fb7f36 HEAD@{550}: commit: 娴嬭瘯瀹屾垚
+c1139d1 HEAD@{551}: checkout: moving from master to external
+c1139d1 HEAD@{552}: commit: 娴嬭瘯瀹屾垚
+b1d81d0 HEAD@{553}: commit: 娴嬭瘯瀹屾垚
+ae117f0 HEAD@{554}: commit: 娴嬭瘯瀹屾垚
+5dc9d1b HEAD@{555}: commit: 娴嬭瘯瀹屾垚
+9a1a82e HEAD@{556}: commit: 娴嬭瘯瀹屾垚
+294e513 HEAD@{557}: commit: 娴嬭瘯瀹屾垚
+007d388 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