From 1c598b62976901679a6ba723d6fbe2dc6771f11f Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 18 三月 2025 19:07:04 +0800
Subject: [PATCH] 检验任务&首页代码迁移

---
 src/assets/icons/svg/kexue.svg                   |    1 
 src/views/index.vue                              |  720 +++++++++++--------
 vue.config.js                                    |   17 
 src/views/business/inspectionTask/Inspection.vue |   11 
 src/assets/icons/svg/jiegou.svg                  |    1 
 src/workers/InspectionWorkerAsData.worker.js     |    0 
 src/api/system/notice.js                         |   63 +
 src/views/business/inspectionTask/index.vue      |    2 
 src/api/chart/dailyBusinessStatistical.js        |   29 
 src/assets/icons/svg/source.svg                  |    1 
 src/assets/icons/svg/tongyong.svg                |    1 
 src/assets/icons/svg/jixiao.svg                  |    1 
 src/views/business/inspectionOrder/add.vue       |    6 
 public/favicon.ico                               |    0 
 src/views/logindemo.vue                          |   23 
 src/views/thirdpartylogin.vue                    |   23 
 src/api/business/report.js                       |    0 
 src/assets/icons/svg/gcyq.svg                    |    1 
 src/assets/icons/svg/testaa.svg                  |    1 
 src/permission.js                                |    2 
 src/api/login.js                                 |   23 
 src/store/modules/user.js                        |   36 
 src/assets/icons/svg/guocheng.svg                |    1 
 src/assets/icons/svg/tixi.svg                    |    1 
 src/assets/styles/element-ui.scss                |   57 +
 src/assets/icons/svg/kanban.svg                  |    1 
 src/router/index.js                              |   16 
 /dev/null                                        |    0 
 src/views/login.vue                              |  134 ++-
 src/main.js                                      |    5 
 .env.production                                  |    2 
 src/workers/InspectionWorker.worker.js           |  946 --------------------------
 32 files changed, 812 insertions(+), 1,313 deletions(-)

diff --git a/.env.production b/.env.production
index a462f7f..5b9e9c8 100644
--- a/.env.production
+++ b/.env.production
@@ -8,4 +8,4 @@
 VUE_APP_BASE_API = '/prod-api'
 
 # 鐢熶骇鐜ip+绔彛
-VUE_BASE_URL = ''
\ No newline at end of file
+VUE_BASE_URL = 'https://zttx-lims.ztt.cn:8021/'
diff --git a/public/favicon.ico b/public/favicon.ico
index a7e51df..f6325a4 100644
--- a/public/favicon.ico
+++ b/public/favicon.ico
Binary files differ
diff --git a/src/api/business/report.js b/src/api/business/report.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/api/business/report.js
diff --git a/src/api/chart/dailyBusinessStatistical.js b/src/api/chart/dailyBusinessStatistical.js
index 0eab5c6..e2c8a08 100644
--- a/src/api/chart/dailyBusinessStatistical.js
+++ b/src/api/chart/dailyBusinessStatistical.js
@@ -23,4 +23,31 @@
         method: 'post',
         params: params
     })
-}
\ No newline at end of file
+}
+
+//娣诲姞鏃ョ▼
+export function addSchedule(data) {
+    return resquest({
+        url: '/report/addSchedule',
+        method: 'post',
+        params: data
+    })
+}
+
+//鏌ヨ鏃ュ巻浠诲姟鍥�
+export function calendarWorkByWeek() {
+    return resquest({
+        url: '/report/calendarWorkByWeek',
+        method: 'get',
+    })
+}
+
+//鏌ヨ鏃ュ巻浠诲姟鍥�
+export function ScheduleByMe(data) {
+    return resquest({
+        url: '/report/ScheduleByMe',
+        method: 'post',
+        params:data
+    })
+}
+
diff --git a/src/api/login.js b/src/api/login.js
index 7b7388f..6600680 100644
--- a/src/api/login.js
+++ b/src/api/login.js
@@ -19,6 +19,27 @@
   })
 }
 
+// 鑾峰彇鍗曠偣鐧诲綍鍦板潃
+export function getSsoAuthUrl() {
+  return request({
+    url: '/getSsoAuthUrl',
+    method: 'get'
+  })
+}
+
+// 鍗曠偣鐧诲綍
+export function LoginBySSO(accessToken) {
+  return request({
+    url: '/loginBySSO',
+    headers: {
+      isToken: false,
+      repeatSubmit: false
+    },
+    method: 'post',
+    params: accessToken
+  })
+}
+
 // 娉ㄥ唽鏂规硶
 export function register(data) {
   return request({
@@ -57,4 +78,4 @@
     method: 'get',
     timeout: 20000
   })
-}
\ No newline at end of file
+}
diff --git a/src/api/system/notice.js b/src/api/system/notice.js
index c274ea5..4dd18c4 100644
--- a/src/api/system/notice.js
+++ b/src/api/system/notice.js
@@ -41,4 +41,65 @@
     url: '/system/notice/' + noticeId,
     method: 'delete'
   })
-}
\ No newline at end of file
+}
+
+// 娑堟伅閫氱煡-婊氬姩鍒嗛〉鏌ヨ
+export function pageNotice(query) {
+  return request({
+    url: '/informationNotification/page',
+    method: 'get',
+    params: query
+  })
+}
+
+// 娑堟伅閫氱煡-鏇存柊娑堟伅鐘舵�侊紙鎷掔粷銆佹帴鏀讹級
+export function updateMessageStatus(query) {
+  return request({
+    url: '/informationNotification/updateMessageStatus',
+    method: 'put',
+    data: query
+  })
+}
+
+// 娑堟伅閫氱煡-鏍囪鎵�鏈変俊鎭负宸茶/鍒犻櫎鎵�鏈夊凡璇绘秷鎭�
+export function informationReadOrDelete(isMarkAllInformationRead) {
+  return request({
+    url: '/informationNotification/informationReadOrDelete/' + isMarkAllInformationRead,
+    method: 'put',
+  })
+}
+
+// 娑堟伅閫氱煡-鍒犻櫎鏁版嵁
+export function deleteDataBasedOnId(query) {
+  return request({
+    url: '/informationNotification/deleteDataBasedOnId',
+    method: 'delete',
+    params: query
+  })
+}
+
+// 娑堟伅閫氱煡-鏌ヨ鏄惁瀛樺湪鏈鏁版嵁
+export function checkForUnreadData() {
+  return request({
+    url: '/informationNotification/checkForUnreadData',
+    method: 'get',
+  })
+}
+
+// 娑堟伅閫氱煡-鐐瑰嚮璇︽儏瑙﹀彂淇敼鐘舵�佷负宸茶
+export function triggerModificationStatusToRead(id) {
+  return request({
+    url: '/informationNotification/triggerModificationStatusToRead/' + id,
+    method: 'put',
+  })
+}
+
+// 娑堟伅閫氱煡-鑾峰彇棣栭〉鍥涚娑堟伅鏁伴噺
+export function getNumberFourTypesMessagesHomePage() {
+  return request({
+    url: '/informationNotification/getNumberFourTypesMessagesHomePage',
+    method: 'get',
+  })
+}
+
+
diff --git a/src/assets/icons/svg/gcyq.svg b/src/assets/icons/svg/gcyq.svg
new file mode 100644
index 0000000..b380e4b
--- /dev/null
+++ b/src/assets/icons/svg/gcyq.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1742292324381" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15701" width="128" height="128" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M197.8368 862.45376c43.008-12.288 73.728-49.152 79.872-92.16 67.584 61.44 153.6 98.304 245.76 98.304s184.32-36.864 245.76-98.304c18.432 43.008 49.152 79.872 92.16 92.16-86.016 79.872-202.752 129.024-331.776 129.024-129.024 0-245.76-49.152-331.776-129.024z m-36.864-178.176c36.864 0 61.44 24.576 61.44 61.44s-24.576 61.44-61.44 61.44-61.44-24.576-61.44-61.44 24.576-61.44 61.44-61.44zM873.6768 622.87872c12.288-36.864 24.576-79.872 24.576-122.88 0-172.032-116.736-313.344-270.336-356.352 12.288-18.432 24.576-43.008 24.576-73.728 0-18.432-6.144-30.72-12.288-49.152 221.184 49.152 380.928 245.76 380.928 479.232 0 61.44-12.288 116.736-30.72 165.888-18.432-24.576-55.296-43.008-92.16-43.008h-24.576zM419.0208 20.72576c-6.144 18.432-12.288 30.72-12.288 49.152 0 30.72 12.288 55.296 24.576 73.728-153.6 43.008-270.336 184.32-270.336 356.352 0 43.008 6.144 86.016 24.576 122.88h-24.576c-36.864 0-73.728 18.432-92.16 43.008-18.432-49.152-30.72-104.448-30.72-165.888 0-233.472 159.744-430.08 380.928-479.232zM529.6128 8.43776c36.864 0 61.44 24.576 61.44 61.44s-24.576 61.44-61.44 61.44-61.44-24.576-61.44-61.44 24.576-61.44 61.44-61.44zM898.2528 684.27776c36.864 0 61.44 24.576 61.44 61.44s-24.576 61.44-61.44 61.44-61.44-24.576-61.44-61.44 24.576-61.44 61.44-61.44z" fill="#2c2c2c" p-id="15702"></path></svg>
\ No newline at end of file
diff --git a/src/assets/icons/svg/guocheng.svg b/src/assets/icons/svg/guocheng.svg
new file mode 100644
index 0000000..7787b70
--- /dev/null
+++ b/src/assets/icons/svg/guocheng.svg
@@ -0,0 +1 @@
+<svg t="1742295109366" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="52688" width="128" height="128"><path d="M197.8368 862.45376c43.008-12.288 73.728-49.152 79.872-92.16 67.584 61.44 153.6 98.304 245.76 98.304s184.32-36.864 245.76-98.304c18.432 43.008 49.152 79.872 92.16 92.16-86.016 79.872-202.752 129.024-331.776 129.024-129.024 0-245.76-49.152-331.776-129.024z m-36.864-178.176c36.864 0 61.44 24.576 61.44 61.44s-24.576 61.44-61.44 61.44-61.44-24.576-61.44-61.44 24.576-61.44 61.44-61.44zM873.6768 622.87872c12.288-36.864 24.576-79.872 24.576-122.88 0-172.032-116.736-313.344-270.336-356.352 12.288-18.432 24.576-43.008 24.576-73.728 0-18.432-6.144-30.72-12.288-49.152 221.184 49.152 380.928 245.76 380.928 479.232 0 61.44-12.288 116.736-30.72 165.888-18.432-24.576-55.296-43.008-92.16-43.008h-24.576zM419.0208 20.72576c-6.144 18.432-12.288 30.72-12.288 49.152 0 30.72 12.288 55.296 24.576 73.728-153.6 43.008-270.336 184.32-270.336 356.352 0 43.008 6.144 86.016 24.576 122.88h-24.576c-36.864 0-73.728 18.432-92.16 43.008-18.432-49.152-30.72-104.448-30.72-165.888 0-233.472 159.744-430.08 380.928-479.232zM529.6128 8.43776c36.864 0 61.44 24.576 61.44 61.44s-24.576 61.44-61.44 61.44-61.44-24.576-61.44-61.44 24.576-61.44 61.44-61.44zM898.2528 684.27776c36.864 0 61.44 24.576 61.44 61.44s-24.576 61.44-61.44 61.44-61.44-24.576-61.44-61.44 24.576-61.44 61.44-61.44z" p-id="52689"></path></svg>
\ No newline at end of file
diff --git a/src/assets/icons/svg/jiegou.svg b/src/assets/icons/svg/jiegou.svg
new file mode 100644
index 0000000..8b8f49d
--- /dev/null
+++ b/src/assets/icons/svg/jiegou.svg
@@ -0,0 +1 @@
+<svg t="1742295073668" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="51639" width="128" height="128"><path d="M157.57312 744.2432c70.00064 0 126.85312 61.76768 126.85312 137.87136s-56.9344 137.91232-126.85312 137.91232C87.6544 1020.02688 30.72 958.21824 30.72 882.11456s56.85248-137.91232 126.85312-137.91232z m0 168.83712c15.64672 0 28.4672-13.9264 28.4672-30.96576 0-16.9984-12.82048-30.96576-28.4672-30.96576-15.7696 0-28.50816 13.9264-28.50816 30.96576 0 17.12128 12.86144 30.96576 28.50816 30.96576zM886.90688 36.98688c69.91872 0 126.85312 61.80864 126.85312 137.91232s-56.9344 137.78944-126.85312 137.78944c-69.87776 0-126.85312-61.8496-126.85312-137.91232 0-76.10368 56.9344-137.78944 126.85312-137.78944z m0 168.87808c15.64672 0 28.4672-13.9264 28.4672-30.96576s-12.6976-30.96576-28.4672-30.96576c-15.7696 0-28.4672 13.9264-28.4672 30.96576 0 16.9984 12.82048 30.96576 28.4672 30.96576zM339.06688 228.9664c70.0416 0 126.85312 61.8496 126.85312 137.95328 0 76.10368-56.9344 137.87136-126.85312 137.87136-69.87776 0-126.81216-61.76768-126.81216-137.87136S269.1072 228.9664 339.06688 228.9664z m0 169.04192c15.7696 0 28.50816-13.9264 28.50816-30.96576 0-17.16224-12.6976-30.96576-28.50816-30.96576-15.72864 0-28.4672 13.9264-28.4672 30.96576 0 17.12128 12.82048 30.96576 28.4672 30.96576zM700.94848 594.61632c70.00064 0 126.73024 61.80864 126.73024 137.78944s-56.85248 137.91232-126.73024 137.91232c-69.91872 0-126.85312-61.8496-126.85312-137.91232 0-76.10368 56.85248-137.78944 126.85312-137.78944z m0 168.7552c15.64672 0 28.4672-13.9264 28.4672-30.96576s-12.82048-30.96576-28.4672-30.96576c-15.7696 0-28.4672 13.9264-28.4672 30.96576 0 16.9984 12.82048 30.96576 28.4672 30.96576z" p-id="51640"></path><path d="M129.76128 932.08576c-25.31328-10.48576-38.05184-41.45152-28.38528-68.97664L282.91072 347.83232c5.85728-16.54784 18.92352-28.95872 34.816-32.9728 15.85152-4.01408 32.5632 0.8192 44.52352 12.9024l307.4048 310.51776 160.84992-481.64864c9.25696-27.77088 37.51936-41.94304 62.95552-32.03072 25.51808 10.07616 38.66624 40.79616 29.45024 68.4032l-185.9584 557.54752a50.66752 50.66752 0 0 1-34.69312 33.66912 46.61248 46.61248 0 0 1-45.01504-12.73856l-308.4288-311.5008-155.56608 441.22112c-7.49568 21.2992-26.09152 34.4064-45.8752 34.4064-5.89824 0-11.75552-1.18784-17.6128-3.56352z" p-id="51641"></path></svg>
\ No newline at end of file
diff --git a/src/assets/icons/svg/jixiao.svg b/src/assets/icons/svg/jixiao.svg
new file mode 100644
index 0000000..b82c4e3
--- /dev/null
+++ b/src/assets/icons/svg/jixiao.svg
@@ -0,0 +1 @@
+<svg t="1742295159707" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="55724" id="mx_n_1742295159708" width="128" height="128"><path d="M265.626741 519.173705c118.701281 118.701281 311.150529 118.701281 429.851811 0 118.701281-118.701281 118.701281-311.150529 0-429.851811-118.701281-118.701281-311.150529-118.687019-429.851811 0.014262-118.701281 118.687019-118.701281 311.136267 0 429.837549z" p-id="55725"></path><path d="M719.195989 649.141838c-64.691699-27.839109-144.329805-41.074095-238.686128-41.074094C190.595209 608.067744 38.506964 732.54507 38.506964 1022.459721h452.043231c-10.610808-29.550529-16.315543-61.382953-16.315543-94.584512-0.114095-142.960669 106.792646-261.048691 244.961337-278.733371z" p-id="55726"></path><path d="M902.2039 915.096602c0 10.610808-8.557103 19.167911-19.167911 19.167911-10.610808 0-19.167911-8.557103-19.167911-19.167911V832.035655h-83.060947c-10.610808 0-19.167911-8.557103-19.167911-19.167911 0-10.610808 8.557103-19.167911 19.167911-19.167911h121.396769v121.396769z m-47.463399-47.577493l-43.926462 73.134707h-105.081226l-58.302395 58.302396c-3.765125 3.765125-8.671198 5.590641-13.57727 5.59064-4.906072 0-9.812145-1.825515-13.577271-5.59064a19.143666 19.143666 0 0 1 0-27.154541l69.483677-69.483677h99.262396l32.745181-54.53727c5.476546-9.013482 17.228301-11.979944 26.241783-6.617493 9.241671 5.476546 12.208134 17.228301 6.731587 26.355878z m-86.711977-156.880223c-119.913538 0-217.236323 97.208691-217.236323 217.236323 0 34.000223 7.98663 66.060836 21.906183 94.698607H963.244568c13.919554-28.637772 21.906184-60.698384 21.906184-94.698607 0.114095-119.913538-97.094596-217.236323-217.122228-217.236323z" p-id="55727"></path></svg>
\ No newline at end of file
diff --git a/src/assets/icons/svg/kanban.svg b/src/assets/icons/svg/kanban.svg
new file mode 100644
index 0000000..608e0eb
--- /dev/null
+++ b/src/assets/icons/svg/kanban.svg
@@ -0,0 +1 @@
+<svg t="1742295203078" class="icon" viewBox="0 0 1047 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="56784" width="128" height="128"><path d="M960 2.91c48.198 0 87.273 39.074 87.273 87.272v669.09c0 48.199-39.075 87.273-87.273 87.273H87.273C39.075 846.545 0 807.471 0 759.273V90.182C0 41.984 39.075 2.909 87.273 2.909H960zM858.53 239.795a43.636 43.636 0 0 0-59.723 0.786l-1.92 1.978L602.91 454.69l-114.996-184-1.542-2.297a43.636 43.636 0 0 0-65.746-6.01l-1.92 1.995-232.727 254.546-1.803 2.094a43.636 43.636 0 0 0 2.501 57.542l2.066 2.007 2.094 1.804a43.636 43.636 0 0 0 57.542-2.502l2.007-2.065 193.979-212.16 115.008 184.029 1.547 2.298a43.636 43.636 0 0 0 65.746 6.004l1.92-1.99L861.312 301.44l1.804-2.095a43.636 43.636 0 0 0-4.573-59.549h-0.012z m14.197 694.022a43.636 43.636 0 0 1 2.56 87.203l-2.56 0.07H174.545a43.636 43.636 0 0 1-2.56-87.203l2.56-0.07h698.182z" p-id="56785"></path></svg>
\ No newline at end of file
diff --git a/src/assets/icons/svg/kexue.svg b/src/assets/icons/svg/kexue.svg
new file mode 100644
index 0000000..6fbff3a
--- /dev/null
+++ b/src/assets/icons/svg/kexue.svg
@@ -0,0 +1 @@
+<svg t="1742295043227" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="50552" width="128" height="128"><path d="M224 85.312a32 32 0 0 1 32-32h512a32 32 0 0 1 0 64H256a32 32 0 0 1-32-32z" p-id="50553"></path><path d="M352.384 85.312a32 32 0 0 1 32-32h256.192a32 32 0 0 1 32 32v228.16l150.784 312.576a32 32 0 0 1-57.6 27.84L611.776 334.72a32 32 0 0 1-3.2-13.888v-203.52H416.384v203.52a32 32 0 0 1-3.2 13.888l-154.496 319.168a32 32 0 1 1-57.6-27.84l151.296-312.576V85.312z" p-id="50554"></path><path d="M166.272 931.648a69.76 69.76 0 0 1-32.384-93.248l96-198.4S384 746.624 512 640c128-106.688 282.56 0 282.56 0l95.808 198.464a69.76 69.76 0 0 1-62.912 100.16H196.736c-10.56 0-20.992-2.368-30.464-6.976z" p-id="50555"></path><path d="M693.76 631.104c-48.576-11.84-107.584-11.2-161.28 33.472-74.304 61.952-156.416 61.376-217.088 46.528a347.52 347.52 0 0 1-71.552-26.368l-81.152 167.68a37.76 37.76 0 0 0 34.048 54.272h630.784a37.824 37.824 0 0 0 34.048-54.272l28.8-13.888-28.8 13.888-91.776-190.208a285.888 285.888 0 0 0-76.032-31.104z m100.864 8.96l18.176-26.368a32 32 0 0 1 10.624 12.416l95.744 198.528-27.072 13.056 27.072-13.056a101.76 101.76 0 0 1-91.648 146.048H196.736a101.824 101.824 0 0 1-91.648-146.176l96-198.4a32 32 0 0 1 46.976-12.48l0.064 0.064-18.176 26.304 18.176-26.304h0.064l0.96 0.64 4.224 2.688a284.352 284.352 0 0 0 77.184 31.872c48.384 11.84 107.328 11.264 160.96-33.472 74.368-61.952 156.608-61.312 217.344-46.528a350.208 350.208 0 0 1 101.376 43.136l1.728 1.088 0.512 0.384 0.192 0.064v0.064h0.064l-18.112 26.368z" p-id="50556"></path><path d="M512 832a64 64 0 1 1-128 0 64 64 0 0 1 128 0zM768 736a32 32 0 1 1-64 0 32 32 0 0 1 64 0zM640 672a32 32 0 1 1-64 0 32 32 0 0 1 64 0z" p-id="50557"></path></svg>
\ No newline at end of file
diff --git a/src/assets/icons/svg/source.svg b/src/assets/icons/svg/source.svg
new file mode 100644
index 0000000..e5b79bd
--- /dev/null
+++ b/src/assets/icons/svg/source.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1742292810401" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23099" width="128" height="128" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M522.24 407.87968l-491.52-163.84v-40.96l491.52-163.84 491.52 163.84v40.96l-491.52 163.84z m-491.52 0v40.96l491.52 163.84 491.52-163.84v-40.96l-122.88-40.96-368.64 122.88-368.64-122.88-122.88 40.96z" fill="#FFFFFF" p-id="23100"></path><path d="M30.72 612.67968v40.96l491.52 163.84 491.52-163.84v-40.96l-122.88-40.96-368.64 122.88-368.64-122.88-122.88 40.96z m0 204.8v40.96l491.52 163.84 491.52-163.84v-40.96l-122.88-40.96-368.64 122.88-368.64-122.88-122.88 40.96z" fill="#FFFFFF" p-id="23101"></path></svg>
\ No newline at end of file
diff --git a/src/assets/icons/svg/testaa.svg b/src/assets/icons/svg/testaa.svg
new file mode 100644
index 0000000..64d0310
--- /dev/null
+++ b/src/assets/icons/svg/testaa.svg
@@ -0,0 +1 @@
+<svg t="1742294201092" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="41989" id="mx_n_1742294201092" width="128" height="128"><path d="M831.825474 63.940169H191.939717C121.2479 63.940169 63.940169 121.2479 63.940169 191.939717v639.885757C63.940169 902.517291 121.2479 959.825022 191.939717 959.825022h639.885757c70.691817 0 127.999548-57.307731 127.999548-127.999548V191.939717C959.825022 121.2479 902.517291 63.940169 831.825474 63.940169zM895.884854 831.998871A63.835408 63.835408 0 0 1 831.912173 895.884854H192.087827c-17.112123 0-33.270563-6.574639-45.372232-18.67631S127.880338 849.110994 127.880338 831.998871V192.001129A64.236389 64.236389 0 0 1 192.087827 127.880338h639.824346A64.037705 64.037705 0 0 1 895.884854 192.001129v639.997742z" p-id="41990"></path><path d="M791.998335 351.851551h-255.999097a31.970084 31.970084 0 0 0 0 63.940169h255.999097a31.970084 31.970084 0 0 0 0-63.940169zM791.998335 607.973471h-255.999097a31.970084 31.970084 0 0 0 0 63.940169h255.999097a31.970084 31.970084 0 0 0 0-63.940169zM344.001722 527.997686c-61.855792 0-111.985607 50.144265-111.985607 111.985606s50.144265 111.985607 111.985607 111.985607 111.985607-50.144265 111.985606-111.985607-50.129815-111.985607-111.985606-111.985606z m33.982213 145.982269a48.045438 48.045438 0 1 1 14.088511-33.982213 47.745605 47.745605 0 0 1-14.088511 33.985826zM417.395643 297.394035L311.999125 402.78694 270.6078 361.392003a31.970084 31.970084 0 1 0-45.213286 45.213285l63.997968 64.001581a31.970084 31.970084 0 0 0 45.213286 0l127.999548-127.999549a31.970084 31.970084 0 0 0-45.209673-45.213285z" p-id="41991"></path></svg>
\ No newline at end of file
diff --git a/src/assets/icons/svg/tixi.svg b/src/assets/icons/svg/tixi.svg
new file mode 100644
index 0000000..bbdb0c0
--- /dev/null
+++ b/src/assets/icons/svg/tixi.svg
@@ -0,0 +1 @@
+<svg t="1742294944205" class="icon" viewBox="0 0 1066 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="44647" width="128" height="128"><path d="M763.094151 511.488085c74.824863-49.698384 120.29995-139.155474 120.001333-235.438093 1.834361-72.051991-22.652225-141.800367-67.956674-193.674388-45.26179-51.831361-107.502083-81.607732-172.771205-82.375604-134.078987 2.388935-241.111815 124.267289-239.149475 272.295951-1.493084 97.647725 44.109982 188.725879 119.958674 239.192134a215.260123 215.260123 0 0 0 239.917347 0zM358.126979 325.663056h-298.616897c-20.476587 1.493084-36.815197 19.410098-38.180304 42.104983v636.309948h170.42493C146.748875 794.235627 251.22213 652.861856 396.307282 552.739877V361.027829c-1.834361-21.329778-18.898184-37.113814-38.222963-35.322113zM311.84136 460.296617c0 13.224463-9.683719 24.10265-21.841693 24.10265H136.595901c-11.987335 0-21.841693-10.750208-21.841693-24.10265 0-13.267122 9.811698-24.10265 21.841693-24.102649h153.361106c12.029995 0 21.841693 10.707549 21.841693 24.102649z" p-id="44648"></path><path d="M136.595901 518.185636h153.403766c11.987335 0 21.841693 10.750208 21.841693 24.102649 0 13.224463-9.726379 24.10265-21.841693 24.10265H136.595901a20.732545 20.732545 0 0 1-15.4001-7.081487 25.510415 25.510415 0 0 1-6.398934-17.021163c0-6.398934 2.260957-12.49925 6.398934-17.063822a20.732545 20.732545 0 0 1 15.4001-7.038827zM673.125146 715.272788c2.85819-17.917014 9.385102-34.980837 19.068822-49.570405 12.925846-35.364773 19.111481-49.613064-12.925846-70.686886a55.457424 55.457424 0 0 0-46.882853-5.417763 62.837527 62.837527 0 0 0-36.260623 33.274454c-12.925846 35.407432 19.111481 49.613064 19.111481 70.686885-4.564573 37.967005-10.963506 75.592735-19.111481 112.791869-8.105316 37.241793 0 27.89935-31.994668-42.104983a1739.05949 1739.05949 0 0 1-63.392101-177.549075c-172.429928 65.48242-261.75904 191.797367-261.75904 376.129312 0 70.644226 786.044993 105.966339 805.113814-42.147642 18.983503-148.24196-223.706716-394.942176-249.643726-324.255291v-0.767872l-89.329112 211.335444-31.994667-91.718047z" p-id="44649"></path></svg>
\ No newline at end of file
diff --git a/src/assets/icons/svg/tongyong.svg b/src/assets/icons/svg/tongyong.svg
new file mode 100644
index 0000000..5c9b85d
--- /dev/null
+++ b/src/assets/icons/svg/tongyong.svg
@@ -0,0 +1 @@
+<svg t="1742295020185" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="49469" width="128" height="128"><path d="M286.88384 18.6368a206.19264 206.19264 0 0 1 177.3568 145.53088 206.56128 206.56128 0 0 1 8.84736 59.92448v235.9296H237.1584a207.38048 207.38048 0 0 1-97.32096-24.33024A206.35648 206.35648 0 0 1 30.72 253.5424v-29.4912A206.4384 206.4384 0 0 1 237.11744 17.65376h29.4912c6.79936 0 13.5168 0.32768 20.2752 0.98304zM196.85376 996.7616A206.35648 206.35648 0 0 1 30.72 794.2144v-29.4912a206.39744 206.39744 0 0 1 206.4384-206.4384h235.9296v235.9296a206.11072 206.11072 0 0 1-60.45696 145.98144 206.6432 206.6432 0 0 1-145.98144 60.45696h-29.53216a205.94688 205.94688 0 0 1-40.26368-3.93216zM757.63712 999.71072a206.68416 206.68416 0 0 1-151.47008-90.7264 205.824 205.824 0 0 1-34.77504-114.688v-235.9296h235.9296a206.11072 206.11072 0 0 1 171.66336 91.70944 205.78304 205.78304 0 0 1 34.77504 114.688v29.4912a206.4384 206.4384 0 0 1-206.39744 206.4384h-29.4912c-6.7584 0-13.5168-0.32768-20.23424-0.98304zM847.62624 21.62688a206.0288 206.0288 0 0 1 141.76256 105.14432 205.6192 205.6192 0 0 1 24.3712 97.32096v29.4912a206.0288 206.0288 0 0 1-46.85824 130.99008 206.35648 206.35648 0 0 1-159.58016 75.44832h-235.9296v-235.9296a206.0288 206.0288 0 0 1 75.48928-159.58016 205.86496 205.86496 0 0 1 110.71488-45.8752c6.71744-0.65536 13.47584-0.98304 20.23424-0.98304h29.53216a206.0288 206.0288 0 0 1 40.26368 3.97312z" p-id="49470"></path></svg>
\ No newline at end of file
diff --git a/src/assets/images/pay.png b/src/assets/images/pay.png
deleted file mode 100644
index bb8b967..0000000
--- a/src/assets/images/pay.png
+++ /dev/null
Binary files differ
diff --git a/src/assets/styles/element-ui.scss b/src/assets/styles/element-ui.scss
index c0bd317..dd9dd15 100644
--- a/src/assets/styles/element-ui.scss
+++ b/src/assets/styles/element-ui.scss
@@ -134,3 +134,60 @@
   color: #333;
   padding: 6px 15px !important;
 }
+
+.el-calendar .el-calendar__header {
+  display: none;
+}
+
+.el-calendar .el-calendar__body {
+  padding: 0;
+}
+
+.el-calendar .el-calendar-table:not(.is-range) td.next {
+  /*闅愯棌涓嬩釜鏈堢殑鏃ユ湡*/
+  display: none;
+}
+
+.el-calendar .el-calendar-day {
+  height: 40px;
+}
+
+.el-calendar .el-calendar-table td {
+  border: 0;
+  font-size: 14px;
+}
+
+.el-calendar .el-calendar-table tr td:first-child {
+  border-left: 0;
+}
+
+.el-calendar .el-calendar-day span {
+  display: inline-block;
+  width: 30px;
+  height: 30px;
+  line-height: 30px;
+  text-align: center;
+  border-radius: 4px;
+}
+
+.el-calendar .is-selected {
+  background: transparent !important;
+}
+
+.el-calendar .is-selected .el-calendar-day {
+  background: transparent !important;
+}
+
+.el-calendar .is-selected .el-calendar-day span {
+  background: #3a7bfa !important;
+  color: #fff !important;
+}
+
+.el-calendar .el-calendar-day:hover {
+  background: transparent;
+}
+
+.el-calendar .el-calendar-day span:hover {
+  background: #3a7bfa !important;
+  color: #fff !important;
+}
diff --git a/src/main.js b/src/main.js
index 59caa2b..f11e21f 100644
--- a/src/main.js
+++ b/src/main.js
@@ -51,6 +51,7 @@
 import Moment from "moment";
 import basicContainer from './components/basic-container/main'
 
+
 // 鍏ㄥ眬鏂规硶鎸傝浇
 Vue.prototype.getDicts = getDicts;
 Vue.prototype.getConfigKey = getConfigKey;
@@ -65,8 +66,8 @@
 Vue.prototype.HaveJson = (val) => {
   return JSON.parse(JSON.stringify(val));
 };
-Vue.prototype.javaApi = process.env.VUE_APP_BASE_API
-  ? process.env.VUE_APP_BASE_API
+Vue.prototype.javaApi = process.env.VUE_BASE_URL
+  ? process.env.VUE_BASE_URL
   : "http://127.0.0.1:8002";
 Vue.prototype.checkPermi = checkPermi;
 Vue.prototype.uploadHeader = {
diff --git a/src/permission.js b/src/permission.js
index b66190b..b63bc64 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -9,7 +9,7 @@
 
 NProgress.configure({ showSpinner: false })
 
-const whiteList = ['/login', '/register']
+const whiteList = ['/login', '/register','/thirdpartylogin', '/logindemo']
 
 const isWhiteList = (path) => {
   return whiteList.some(pattern => isPathMatch(pattern, path))
diff --git a/src/router/index.js b/src/router/index.js
index b9dde1e..0817afc 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -46,6 +46,18 @@
     component: () => import("@/views/login"),
     hidden: true,
   },
+    // 绗笁鏂圭櫥褰曢〉
+  {
+    path: "/thirdpartylogin",
+    component: () => import("@/views/thirdpartylogin"),
+    hidden: true,
+  },
+  // 绗笁鏂圭櫥褰曢〉涓浆
+  {
+    path: "/logindemo",
+    component: () => import("@/views/logindemo"),
+    hidden: true,
+  },
   {
     path: "/register",
     component: () => import("@/views/register"),
@@ -126,8 +138,8 @@
         // 浠诲姟妫�楠岄〉闈�
         path: 'inspection',
         component: () => import('@/views/business/inspectionTask/Inspection'),
-        name: 'inspection',
-        meta: { title: '濮旀墭鍗曟楠�', activeMenu: '/business/inspectionTask' }
+        name: 'Inspection',
+        meta: {keepAlive: false, title: '濮旀墭鍗曟楠�', activeMenu: '/business/inspectionTask' }
       },
       // {
       //   // 鏌ョ湅濮旀墭鍗曡鎯呴〉闈�
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 8c7bda4..0f3c782 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -1,4 +1,4 @@
-import { login, logout, getInfo } from "@/api/login";
+import { login, logout, getInfo,LoginBySSO } from "@/api/login";
 import { getToken, setToken, removeToken } from "@/utils/auth";
 import { isHttp, isEmpty } from "@/utils/validate";
 import defAva from "@/assets/images/profile.jpg";
@@ -69,7 +69,23 @@
           });
       });
     },
-
+    // 鍗曠偣鐧诲綍
+    LoginBySSO({ commit }, accessToken) {
+      return new Promise((resolve, reject) => {
+        LoginBySSO(accessToken)
+          .then((res) => {
+            setToken(res.token);
+            commit("SET_TOKEN", res.token);
+            Vue.prototype.uploadHeader = {
+              Authorization: "Bearer " + res.token,
+            };
+            resolve();
+          })
+          .catch((error) => {
+            reject(error);
+          });
+      })
+    },
     // 鑾峰彇鐢ㄦ埛淇℃伅
     GetInfo({ commit, state }) {
       return new Promise((resolve, reject) => {
@@ -107,12 +123,16 @@
     LogOut({ commit, state }) {
       return new Promise((resolve, reject) => {
         logout(state.token)
-          .then(() => {
-            commit("SET_TOKEN", "");
-            commit("SET_ROLES", []);
-            commit("SET_PERMISSIONS", []);
-            removeToken();
-            resolve();
+          .then((res) => {
+            if (res.data) {
+              window.location.href = res.data
+            } else {
+              commit("SET_TOKEN", "");
+              commit("SET_ROLES", []);
+              commit("SET_PERMISSIONS", []);
+              removeToken();
+              resolve();
+            }
           })
           .catch((error) => {
             reject(error);
diff --git a/src/views/business/inspectionOrder/add.vue b/src/views/business/inspectionOrder/add.vue
index c46e5fa..1691fcb 100644
--- a/src/views/business/inspectionOrder/add.vue
+++ b/src/views/business/inspectionOrder/add.vue
@@ -1565,6 +1565,7 @@
 import getLodop from "@/utils/lodop";
 import { bigEval } from "@/utils/bigEval";
 import { getDicts } from "@/api/system/dict/data";
+import Big from "big.js";
 export default {
   components: {
     fiberOpticConfig,
@@ -2452,10 +2453,9 @@
           let arr1 = [];
           arr0.forEach((m) => {
             let index = code.findIndex((b) => m.includes(b));
-            // console.log("index--銆�", index);
             if (index > -1) {
               let arr = m.split(code[index]).filter((b) => !!b);
-              let calcNum = this.$Big(
+              let calcNum = new Big(
                 bigEval(this.replaceAll(arr[0], symbolItem, value))
               );
               let num = calcNum.toFixed(
@@ -2474,7 +2474,7 @@
           if (index > -1) {
             let arr = ask.split(code[index]).filter((b) => !!b);
             console.log("鐗规畩鍊兼浛鎹�--銆�", arr);
-            let calcNum = this.$Big(
+            let calcNum = new Big(
               bigEval(this.replaceAll(arr[0], symbolItem, value))
             );
             let num = calcNum.toFixed(
diff --git a/src/views/business/inspectionTask/Inspection.vue b/src/views/business/inspectionTask/Inspection.vue
index 5ded8be..d6c48e2 100644
--- a/src/views/business/inspectionTask/Inspection.vue
+++ b/src/views/business/inspectionTask/Inspection.vue
@@ -3383,7 +3383,11 @@
 import excelFunction from "@/utils/excelFountion";
 import { mapGetters } from "vuex";
 import { getToken } from "@/utils/auth";
+import Big from "big.js";
+import InspectionWorker from "../../../workers/InspectionWorker.worker";
+import InspectionWorkerAsData from "../../../workers/InspectionWorkerAsData.worker";
 export default {
+  name: "Inspection",
   components: {
     limsTable,
   },
@@ -3785,7 +3789,6 @@
     this.getComparisonList();
     this.getAuthorizedPerson();
     this.scrollInit();
-    // this.getPower();
     this.startWorker();
   },
   watch: {
@@ -5060,12 +5063,12 @@
         this.stopWorker(); // 纭繚涔嬪墠鐨� Worker 宸插仠姝�
       }
       // 鍒涘缓 Worker 瀹炰緥
-      this.worker = new Worker("/static/js/worker.js");
+      this.worker = new InspectionWorker();
       if (this.worker0) {
         this.stopWorker(); // 纭繚涔嬪墠鐨� Worker 宸插仠姝�
       }
       // 鍒涘缓 Worker 瀹炰緥
-      this.worker0 = new Worker("/static/js/worker0.js");
+      this.worker0 = new InspectionWorkerAsData();
     },
     // 鍋滄澶氱嚎绋�
     stopWorker() {
@@ -6844,7 +6847,7 @@
           )
         ) {
           if (parseFloat(n.v.v) >= 100000) {
-            let num2 = new this.$Big(n.v.v);
+            let num2 = new Big(n.v.v);
             n.v.v = num2.toExponential();
           }
         }
diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue
index 26c8223..52f42d7 100644
--- a/src/views/business/inspectionTask/index.vue
+++ b/src/views/business/inspectionTask/index.vue
@@ -1876,7 +1876,7 @@
       }
       inspectorList.push(this.nickName);
       this.$router.push({
-        name: "inspection",
+        name: "Inspection",
         params: {
           inspectorList: inspectorList,
           state: 1,
diff --git a/src/views/index.vue b/src/views/index.vue
index 2fcc034..8a61912 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -1,40 +1,96 @@
 <template>
-  <div class="bg-1">
+  <div class="bg-1" style="padding: 15px 5px">
     <el-row :gutter="25">
       <el-col :lg="14" :md="14" :sm="24" :xl="14" :xs="24">
         <div class="left-1">
           <div class="say">
-            <div style="display: flex;align-items: center;flex-wrap: wrap;">
-              <div class="say-1">{{ user.name }} 鎮ㄥソ锛佺鎮ㄥ紑蹇冩瘡涓�澶�</div>
+            <div style="display: flex; align-items: center; flex-wrap: wrap">
+              <div class="say-1">{{ nickName }} 鎮ㄥソ锛佺鎮ㄥ紑蹇冩瘡涓�澶�</div>
               <div class="say-2">褰撳墠鏃堕棿锛� {{ now }}</div>
             </div>
           </div>
         </div>
-        <div v-loading="workLoading" class="left-2 card" style="overflow: hidden;">
-          <div v-for="(item, index) in workDay" :key="index" class="left-2-item">
+        <div
+          v-loading="workLoading"
+          class="left-2 card"
+          style="overflow: hidden"
+        >
+          <div
+            v-for="(item, index) in workDay"
+            :key="index"
+            class="left-2-item"
+          >
             <div class="left-item-title">
-              <span style="font-size: 18px;">{{ item }}</span>
-              <span style="font-size: 14px;color: #999999;">{{ weekdays[index] }}</span>
+              <span style="font-size: 18px">{{ item }}</span>
+              <span style="font-size: 14px; color: #999999">{{
+                weekdays[index]
+              }}</span>
             </div>
             <div class="left-item-body">
-              <div v-for="(m, i) in workList[index]" :key="i"
-                :class="{ color0: m.type == 0, color1: m.type == 1, color2: m.type == 2 }" class="body-item">
+              <div
+                v-for="(m, i) in workList[index]"
+                :key="i"
+                :class="{
+                  color0: m.type == 0,
+                  color1: m.type == 1,
+                  color2: m.type == 2,
+                }"
+                class="body-item"
+              >
                 <div>
-                  <span style="font-size: 12px;margin-bottom: 17px;">{{ m.text }}</span>
+                  <span style="font-size: 12px; margin-bottom: 17px">{{
+                    m.text
+                  }}</span>
                   <div style="display: flex">
-                    <span class="body-item-name">{{ m.name }}</span>
-                    <span v-if="m.insState == 0" class="body-item-insState"
-                      style="background-color: #909399;font-size: 12px;">寰呮楠�</span>
-                    <span v-if="m.insState == 1" class="body-item-insState"
-                      style="background-color: #E6A23C;font-size: 12px;">妫�楠屼腑</span>
-                    <span v-if="m.insState == 2" class="body-item-insState"
-                      style="background-color: #67C23A;font-size: 12px;">宸叉楠�</span>
-                    <span v-if="m.insState == 3" class="body-item-insState"
-                      style="background-color: #E6A23C;font-size: 12px;">寰呭鏍�</span>
-                    <span v-if="m.insState == 4" class="body-item-insState"
-                      style="background-color: #F56C6C;font-size: 9px;">澶嶆牳鏈�氳繃</span>
-                    <span v-if="m.insState == 5" class="body-item-insState"
-                      style="background-color: #67C23A;font-size: 10px;">澶嶆牳閫氳繃</span>
+                    <span
+                      style="
+                        display: inline-block;
+                        height: 24px;
+                        width: 24px;
+                        border-radius: 50%;
+                        line-height: 24px;
+                        text-align: center;
+                        background: #c0c4cc;
+                        color: #fff;
+                      "
+                      >{{ m.name.charAt(0) }}</span
+                    >
+                    <span
+                      v-if="m.insState == 0"
+                      class="body-item-insState"
+                      style="background-color: #909399; font-size: 12px"
+                      >寰呮楠�</span
+                    >
+                    <span
+                      v-if="m.insState == 1"
+                      class="body-item-insState"
+                      style="background-color: #e6a23c; font-size: 12px"
+                      >妫�楠屼腑</span
+                    >
+                    <span
+                      v-if="m.insState == 2"
+                      class="body-item-insState"
+                      style="background-color: #67c23a; font-size: 12px"
+                      >宸叉楠�</span
+                    >
+                    <span
+                      v-if="m.insState == 3"
+                      class="body-item-insState"
+                      style="background-color: #e6a23c; font-size: 12px"
+                      >寰呭鏍�</span
+                    >
+                    <span
+                      v-if="m.insState == 4"
+                      class="body-item-insState"
+                      style="background-color: #f56c6c; font-size: 9px"
+                      >澶嶆牳鏈�氳繃</span
+                    >
+                    <span
+                      v-if="m.insState == 5"
+                      class="body-item-insState"
+                      style="background-color: #67c23a; font-size: 10px"
+                      >澶嶆牳閫氳繃</span
+                    >
                   </div>
                 </div>
               </div>
@@ -46,94 +102,160 @@
         <div class="right-1 card">
           <div class="right-1-item">
             <div class="img">
-              <img alt="" src="@/assets/index_image/index-0.svg">
+              <img alt="" src="@/assets/index_image/index-0.svg" />
             </div>
             <div class="mun">
-              <p style="font-size: 20px;">{{ getNumberFourTypes.totalNumberOfMessages }}</p>
-              <p style="font-size: 14px;margin-bottom: 10px;">鎴戠殑寰呭姙</p>
+              <p style="font-size: 20px">
+                {{ getNumberFourTypes.totalNumberOfMessages }}
+              </p>
+              <p style="font-size: 14px; margin-bottom: 10px">鎴戠殑寰呭姙</p>
             </div>
           </div>
           <div class="right-1-item">
             <div class="img">
-              <img alt="" src="@/assets/index_image/index-1.svg">
+              <img alt="" src="@/assets/index_image/index-1.svg" />
             </div>
             <div class="mun">
-              <p style="font-size: 20px;">{{ getNumberFourTypes.totalNumberOfReadMessages }}</p>
-              <p style="font-size: 14px;margin-bottom: 10px;">宸插姙浜嬪疁</p>
+              <p style="font-size: 20px">
+                {{ getNumberFourTypes.totalNumberOfReadMessages }}
+              </p>
+              <p style="font-size: 14px; margin-bottom: 10px">宸插姙浜嬪疁</p>
             </div>
           </div>
           <div class="right-1-item">
             <div class="img">
-              <img alt="" src="@/assets/index_image/index-2.svg">
+              <img alt="" src="@/assets/index_image/index-2.svg" />
             </div>
             <div class="mun">
-              <p style="font-size: 20px;">{{ getNumberFourTypes.remainingToDo }}</p>
-              <p style="font-size: 14px;margin-bottom: 10px;">鍓╀綑寰呭姙</p>
+              <p style="font-size: 20px">
+                {{ getNumberFourTypes.remainingToDo }}
+              </p>
+              <p style="font-size: 14px; margin-bottom: 10px">鍓╀綑寰呭姙</p>
             </div>
           </div>
           <div class="right-1-item">
             <div class="img">
-              <img alt="" src="@/assets/index_image/index-3.svg">
+              <img alt="" src="@/assets/index_image/index-3.svg" />
             </div>
             <div class="mun">
-              <p style="font-size: 20px;">{{ getNumberFourTypes.totalNumberOfMessagesInThePastSevenDays }}</p>
-              <p style="font-size: 14px;margin-bottom: 10px;">杩戞湡浜嬪疁</p>
+              <p style="font-size: 20px">
+                {{ getNumberFourTypes.totalNumberOfMessagesInThePastSevenDays }}
+              </p>
+              <p style="font-size: 14px; margin-bottom: 10px">杩戞湡浜嬪疁</p>
             </div>
           </div>
         </div>
         <div class="right-2 card">
           <div class="right-2-title">
-            <span style="color: #333333;font-size: 16px;">鎴戠殑鏃ョ▼</span>
-            <span style="cursor: pointer;font-size: 12px;
-color: #3A7BFA;" @click="dialogVisible = true">娣诲姞鎴戠殑鏃ョ▼</span>
+            <span style="color: #333333; font-size: 16px">鎴戠殑鏃ョ▼</span>
+            <span
+              style="cursor: pointer; font-size: 12px; color: #3a7bfa"
+              @click="dialogVisible = true"
+              >娣诲姞鎴戠殑鏃ョ▼</span
+            >
           </div>
           <div class="right-2-body">
-            <div class="calendar" style="width: 49%;">
+            <div class="calendar" style="width: 49%">
               <div class="control">
-                <el-button class="prevm" icon="el-icon-arrow-left" @click="prevMonth(calendarValue)"></el-button>
-                <span>{{ calendarValue.getFullYear() + '骞�' + (calendarValue.getMonth() + 1) + '鏈�' }}</span>
-                <el-button class="nextm" icon="el-icon-arrow-right" @click="nextMonth(calendarValue)"></el-button>
+                <el-button
+                  class="prevm"
+                  icon="el-icon-arrow-left"
+                  @click="prevMonth(calendarValue)"
+                ></el-button>
+                <span>{{
+                  calendarValue.getFullYear() +
+                  "骞�" +
+                  (calendarValue.getMonth() + 1) +
+                  "鏈�"
+                }}</span>
+                <el-button
+                  class="nextm"
+                  icon="el-icon-arrow-right"
+                  @click="nextMonth(calendarValue)"
+                ></el-button>
               </div>
-              <el-calendar v-model="calendarValue">
-                <template slot="dateCell" slot-scope="{date, data}">
+              <el-calendar v-model="calendarValue" class="calendar">
+                <template slot="dateCell" slot-scope="{ date, data }">
                   <span>
-                    {{ data.day.split('-').slice(2) + '' }}
+                    {{ data.day.split("-").slice(2) + "" }}
                   </span>
                   <!-- <el-badge v-if="data.isSelected" is-dot class="item">
                   </el-badge> -->
                 </template>
               </el-calendar>
             </div>
-            <div v-loading="scheduleLoading" class="right-2-list" style="width: 49%;height: 286px;">
-              <div v-for="(m, i) in listScheduleByMe" :key="i" class="list2-item">
+            <div
+              v-loading="scheduleLoading"
+              class="right-2-list"
+              style="width: 49%; height: 286px"
+            >
+              <div
+                v-for="(m, i) in listScheduleByMe"
+                :key="i"
+                class="list2-item"
+              >
                 <span>{{ m.scheduleTimes }}</span>
-                <el-tooltip :content="m.text" effect="dark" placement="top" style="margin-left: 10px;">
+                <el-tooltip
+                  :content="m.text"
+                  effect="dark"
+                  placement="top"
+                  style="margin-left: 10px"
+                >
                   <p class="ellipsis-multiline">{{ m.text }}</p>
                 </el-tooltip>
               </div>
-              <span v-if="listScheduleByMe.length == 0"
-                style="color:rgb(144, 147, 153);font-size: 14px;text-align: center;margin: 120px 0;display: inline-block;width: 100%;">鏆傛棤鏁版嵁</span>
+              <span
+                v-if="listScheduleByMe.length == 0"
+                style="
+                  color: rgb(144, 147, 153);
+                  font-size: 14px;
+                  text-align: center;
+                  margin: 120px 0;
+                  display: inline-block;
+                  width: 100%;
+                "
+                >鏆傛棤鏁版嵁</span
+              >
             </div>
           </div>
         </div>
-        <div class="right-3 card" style="overflow: hidden;">
+        <div class="right-3 card" style="overflow: hidden">
           <div class="right-3-tab">
-            <!--            <div :class="{active:currentIndex==4}" class="tab-item" style="cursor: pointer;" @click="currentIndex=4">棰勮鎻愰啋</div>-->
-            <div :class="{ active: currentIndex == 5 }" class="tab-item" style="cursor: pointer;"
-              @click="currentIndexChange">
-              CNAS閫氱煡閫氬憡</div>
+            <div
+              class="tab-item"
+              style="cursor: pointer"
+              :class="{ active: currentIndex == 4 }"
+              @click="currentIndex = 4"
+            >
+              棰勮鎻愰啋
+            </div>
+            <div
+              class="tab-item"
+              style="cursor: pointer"
+              :class="{ active: currentIndex == 5 }"
+              @click="currentIndex = 5"
+            >
+              閫氱煡閫氬憡
+            </div>
           </div>
-          <div v-loading="listLoading" class="right-3-list">
-            <scroll-pagination v-if="list.length > 0 || listLoading" :finishLoding="finishLoding" :list="list"
-              @load="getList">
-              <div v-for="(m, i) in list" :key="i" class="list3-item">
+          <div class="right-3-list" v-loading="listLoading">
+            <scroll-pagination
+              @load="getList"
+              :finishLoding="finishLoding"
+              :list="list"
+              v-if="list.length > 0 || listLoading"
+            >
+              <div class="list3-item" v-for="(m, i) in list" :key="i">
                 <div class="list3-item-title">
-                  <!--                <img alt="" src="../../../static/img/index-tip.svg">-->
-                  <p style="color: #FF7756">{{ m.theme }}</p>
+                  <img src="../assets/index_image/index-tip.svg" alt="" />
+                  <p>{{ m.theme }}</p>
                 </div>
                 <div class="list3-item-info">
-                  <p class="ellipsis-multiline" style="width: 73%;-webkit-line-clamp: 1;cursor: pointer;"
-                    @click="goNoticeDetail(m)">
+                  <p
+                    style="width: 73%; -webkit-line-clamp: 1; cursor: pointer"
+                    class="ellipsis-multiline"
+                    @click="goNoticeDetail(m)"
+                  >
                     <!-- 缂栧彿<span style="color:#3A7BFA;"> SB20240101-001 </span>鐨勮澶囧皢浜�2023-09-09 11:11:11杩囨湡 -->
                     {{ m.content }}
                   </p>
@@ -141,28 +263,53 @@
                 </div>
               </div>
             </scroll-pagination>
-            <div v-if="list.length < 1 && !listLoading"
-              style="color:#909399;font-size:14px;text-align: center;margin-top:80px">鏆傛棤鏁版嵁
+            <div
+              v-if="list.length < 1 && !listLoading"
+              style="
+                color: #909399;
+                font-size: 14px;
+                text-align: center;
+                margin-top: 80px;
+              "
+            >
+              鏆傛棤鏁版嵁
             </div>
           </div>
         </div>
       </el-col>
     </el-row>
     <el-dialog :visible.sync="dialogVisible" title="鏃ョ▼娣诲姞" width="400px">
-      <div class="body" style="max-height: 60vh;">
+      <div class="body" style="max-height: 60vh">
         <el-row>
           <el-col :span="22" class="search_thing">
-            <div class="search_label"><span style="color: red;margin-right: 4px;">*</span>鏃堕棿锛�</div>
+            <div class="search_label">
+              <span style="color: red; margin-right: 4px">*</span>鏃堕棿锛�
+            </div>
             <div class="search_input">
-              <el-date-picker v-model="query.time" format="yyyy-MM-dd HH:mm:ss" placeholder="閫夋嫨鏃ユ湡鏃堕棿" size="small"
-                style="width: 100%;" type="datetime" value-format="yyyy-MM-dd HH:mm:ss">
+              <el-date-picker
+                v-model="query.time"
+                format="yyyy-MM-dd HH:mm:ss"
+                placeholder="閫夋嫨鏃ユ湡鏃堕棿"
+                size="small"
+                style="width: 100%"
+                type="datetime"
+                value-format="yyyy-MM-dd HH:mm:ss"
+              >
               </el-date-picker>
             </div>
           </el-col>
           <el-col :span="22" class="search_thing">
-            <div class="search_label"><span style="color: red;margin-right: 4px;">*</span>鍐呭锛�</div>
+            <div class="search_label">
+              <span style="color: red; margin-right: 4px">*</span>鍐呭锛�
+            </div>
             <div class="search_input">
-              <el-input v-model="query.text" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" size="small" type="textarea"></el-input>
+              <el-input
+                v-model="query.text"
+                :rows="2"
+                placeholder="璇疯緭鍏ュ唴瀹�"
+                size="small"
+                type="textarea"
+              ></el-input>
             </div>
           </el-col>
         </el-row>
@@ -170,7 +317,9 @@
       <span slot="footer" class="dialog-footer">
         <el-row>
           <el-button @click="handleCancel">鍙� 娑�</el-button>
-          <el-button :loading="loading" type="primary" @click="submit">纭� 瀹�</el-button>
+          <el-button :loading="loading" type="primary" @click="submit"
+            >纭� 瀹�</el-button
+          >
         </el-row>
       </span>
     </el-dialog>
@@ -178,22 +327,35 @@
 </template>
 
 <script>
-import { getYearAndMonthAndDays } from '@/utils/date.js'
-import ScrollPagination from '@/components/index/scroll-paging.vue'
+import {
+  pageNotice,
+  triggerModificationStatusToRead,
+  getNumberFourTypesMessagesHomePage,
+} from "@/api/system/notice";
+import {
+  addSchedule,
+  calendarWorkByWeek,
+  ScheduleByMe,
+} from "@/api/chart/dailyBusinessStatistical.js";
+import { getYearAndMonthAndDays } from "@/utils/date.js";
+import ScrollPagination from "@/components/index/scroll-paging.vue";
+import { mapGetters } from "vuex";
 export default {
   components: {
-    ScrollPagination
+    ScrollPagination,
+  },
+  computed: {
+    ...mapGetters(["nickName"]),
   },
   data() {
     return {
-      user: {},
       now: null,
       calendarValue: new Date(),
       currentIndex: 5,
       dialogVisible: false,
       query: {
-        time: '',
-        text: ''
+        time: "",
+        text: "",
       },
       loading: false,
       workLoading: false,
@@ -211,95 +373,108 @@
       timer: null,
       keyMap: {},
       getNumberFourTypes: {},
-    }
+    };
   },
   watch: {
     calendarValue(val) {
-      this.getScheduleByMe()
+      this.getScheduleByMe();
     },
     currentIndex() {
-      this.keyMap = {}
+      this.keyMap = {};
       this.currentPage = 1;
       this.list = [];
       this.getList();
-    }
+    },
   },
   mounted() {
-    this.user = JSON.parse(localStorage.getItem('user'))
-    this.nowTime()
+    this.nowTime();
     setInterval(() => {
-      this.nowTime()
-    }, 1000)
-    this.weekdays = this.getWeekdaysForNextWeek()
+      this.nowTime();
+    }, 1000);
+    this.weekdays = this.getWeekdaysForNextWeek();
     this.init();
     this.currentPage = 1;
-    this.keyMap = {}
+    this.keyMap = {};
     this.list = [];
     this.getList();
-    this.getScheduleByMe()
-    this.timer && clearInterval(this.timer)
+    this.getScheduleByMe();
+    this.timer && clearInterval(this.timer);
     this.timer = setInterval(() => {
       this.init();
       this.currentPage = 1;
-      this.keyMap = {}
+      this.keyMap = {};
       this.list = [];
       this.getList();
-      this.getScheduleByMe()
-    }, 1000 * 60 * 10)
-    this.getNumberFourTypesFun()
+      this.getScheduleByMe();
+    }, 1000 * 60 * 10);
+    this.getNumberFourTypesFun();
   },
   methods: {
     changeState(val) {
       if (val == 0) {
-        return '寰呮楠�'
+        return "寰呮楠�";
       }
     },
     currentIndexChange() {
-      this.keyMap = {}
+      this.keyMap = {};
       this.currentPage = 1;
       this.list = [];
       this.getList();
     },
     getNumberFourTypesFun() {
-      this.$axios.get(this.$api.informationNotification.getNumberFourTypesMessagesHomePage).then(res => {
-        this.getNumberFourTypes = res.data
-      })
+      getNumberFourTypesMessagesHomePage()
+        .then((res) => {
+          if (res.code === 200) {
+            this.getNumberFourTypes = res.data;
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+        });
     },
     getList() {
-      const key = `_${this.currentPage}`
-      const value = this.keyMap[key]
+      const key = `_${this.currentPage}`;
+      const value = this.keyMap[key];
       // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
       if (value) {
-        return
+        return;
       }
       // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
-      this.keyMap[key] = 'temp'
+      this.keyMap[key] = "temp";
       if (this.currentPage == 1) {
-        this.listLoading = true
+        this.listLoading = true;
       }
       if (this.list.length == 0) {
         this.finishLoding = false;
       }
-      this.$axios.get(this.$api.informationNotification.page + '?size=' + this.pageSize + '&current=' + this.currentPage + '&messageType=' + this.currentIndex).then(res => {
-        if (res.code === 201) {
-          return
-        }
-        let list = res.data.records;
-        this.total = res.data.total;
-        if (list.length == 0) {
-          this.finishLoding = true;
-        } else {
-          if (list.length < this.pageSize) {
-            this.finishLoding = true;
-          }
-          this.list = this.list.concat(list)
-          if (this.total == this.list.length) {
-            this.finishLoding = true;
-          }
-          this.currentPage++;
-        }
-        this.listLoading = false
+      pageNotice({
+        size: this.pageSize,
+        current: this.currentPage,
+        messageType: this.currentIndex,
       })
+        .then((res) => {
+          if (res.code === 201) {
+            return;
+          }
+          let list = res.data.records;
+          this.total = res.data.total;
+          if (list.length == 0) {
+            this.finishLoding = true;
+          } else {
+            if (list.length < this.pageSize) {
+              this.finishLoding = true;
+            }
+            this.list = this.list.concat(list);
+            if (this.total == this.list.length) {
+              this.finishLoding = true;
+            }
+            this.currentPage++;
+          }
+          this.listLoading = false;
+        })
+        .catch((error) => {
+          console.error(error);
+        });
     },
     nowTime() {
       var date = new Date();
@@ -307,7 +482,7 @@
       var m = date.getMonth() + 1;
       var d = date.getDate();
       var h = date.getHours();
-      this.timeH = h
+      this.timeH = h;
       var min = date.getMinutes();
       var s = date.getSeconds();
       if (s < 10) {
@@ -328,9 +503,9 @@
       this.now = y + "-" + m + "-" + d + "  " + h + ":" + min + ":" + s;
     },
     nextMonth(value) {
-      let year = this.calendarValue.getFullYear();// 褰撳墠骞翠唤
-      let month = this.calendarValue.getMonth() + 1;// 褰撳墠鏈堜唤
-      let day = this.calendarValue.getDate();// 褰撳墠澶╂暟
+      let year = this.calendarValue.getFullYear(); // 褰撳墠骞翠唤
+      let month = this.calendarValue.getMonth() + 1; // 褰撳墠鏈堜唤
+      let day = this.calendarValue.getDate(); // 褰撳墠澶╂暟
       let nextyear = year;
       let nextmonth = parseInt(month) + 1;
       // 鍒ゆ柇涓嬩竴鏈堟槸鍚︿細杩涘叆涓嬩竴骞�
@@ -344,21 +519,21 @@
       if (day > nextdays) {
         day = nextdays;
         if (day < 10) {
-          day = '0' + day;
+          day = "0" + day;
         }
       }
       if (nextmonth < 10) {
-        nextmonth = '0' + nextmonth;
+        nextmonth = "0" + nextmonth;
       }
-      let nexttime = nextyear + '-' + nextmonth + '-' + day;
+      let nexttime = nextyear + "-" + nextmonth + "-" + day;
 
       // 灏嗗緱鍒扮殑骞存湀鏃ユ牸寮忚浆鎹负鏍囧噯鏃堕棿锛屼笌楗夸簡涔堟椂闂存牸寮忕浉鍚屾墠鑳借仈鍔�
       this.calendarValue = new Date(nexttime);
     },
     prevMonth(time) {
-      let year = this.calendarValue.getFullYear();// 褰撳墠骞翠唤
-      let month = this.calendarValue.getMonth() + 1;// 褰撳墠鏈堜唤
-      let day = this.calendarValue.getDate();// 褰撳墠澶╂暟
+      let year = this.calendarValue.getFullYear(); // 褰撳墠骞翠唤
+      let month = this.calendarValue.getMonth() + 1; // 褰撳墠鏈堜唤
+      let day = this.calendarValue.getDate(); // 褰撳墠澶╂暟
       let prevyear = year;
       let prevmonth = parseInt(month) - 1;
       // 鍒ゆ柇涓婁竴鏈堟槸鍚︿細杩涘叆涓婁竴骞�
@@ -372,13 +547,13 @@
       if (day > prevdays) {
         day = prevdays;
         if (day < 10) {
-          day = '0' + day;
+          day = "0" + day;
         }
       }
       if (prevmonth < 10) {
-        prevmonth = '0' + prevmonth;
+        prevmonth = "0" + prevmonth;
       }
-      let prevtime = prevyear + '-' + prevmonth + '-' + day;
+      let prevtime = prevyear + "-" + prevmonth + "-" + day;
 
       // 灏嗗緱鍒扮殑骞存湀鏃ユ牸寮忚浆鎹负鏍囧噯鏃堕棿锛屼笌楗夸簡涔堟椂闂存牸寮忕浉鍚屾墠鑳借仈鍔�
       this.calendarValue = new Date(prevtime);
@@ -386,45 +561,53 @@
     handleCancel() {
       this.dialogVisible = false;
       this.query = {
-        time: '',
-        text: ''
-      }
+        time: "",
+        text: "",
+      };
     },
     submit() {
       if (!this.query.time) {
-        this.$message.error('鏃堕棿鏈~鍐�')
-        return
+        this.$message.error("鏃堕棿鏈~鍐�");
+        return;
       }
       if (!this.query.text) {
-        this.$message.error('鍐呭鏈~鍐�')
-        return
+        this.$message.error("鍐呭鏈~鍐�");
+        return;
       }
       this.loading = true;
-      this.$axios.post(this.$api.report.addSchedule, this.query).then(res => {
-        this.loading = false;
-        if (res.code == 201) {
-          this.$message.error('鎿嶄綔澶辫触')
-          return
-        }
-        this.$message.success('淇濆瓨鎴愬姛')
-        this.handleCancel()
-        this.getScheduleByMe()
-      })
+      addSchedule(this.query)
+        .then((res) => {
+          this.loading = false;
+          if (res.code == 201) {
+            this.$message.error("鎿嶄綔澶辫触");
+            return;
+          }
+          this.$message.success("淇濆瓨鎴愬姛");
+          this.handleCancel();
+          this.getScheduleByMe();
+        })
+        .catch((error) => {
+          console.error(error);
+        });
     },
     init() {
       this.workLoading = true;
-      this.$axios.get(this.$api.report.calendarWorkByWeek).then(res => {
-        if (res.code == 201) return
-        this.workLoading = false;
-        this.workList = [];
-        for (let i = 0; i < 7; i++) {
-          this.workList.push(res.data[`work${i}`])
-        }
-        this.workDay = res.data.weekDays.map(m => {
-          let arr = m.split('-')
-          return arr[2]
+      calendarWorkByWeek()
+        .then((res) => {
+          if (res.code == 201) return;
+          this.workLoading = false;
+          this.workList = [];
+          for (let i = 0; i < 7; i++) {
+            this.workList.push(res.data[`work${i}`]);
+          }
+          this.workDay = res.data.weekDays.map((m) => {
+            let arr = m.split("-");
+            return arr[2];
+          });
         })
-      })
+        .catch((error) => {
+          console.error(error);
+        });
     },
     getWeekdaysForNextWeek() {
       let weekdays = [];
@@ -434,75 +617,86 @@
         let day = date.getDay(); // 0-6 浠h〃鏄熸湡鏃ュ埌鏄熸湡鍏�
         weekdays.push(day);
       }
-      weekdays.reverse()
-      weekdays = weekdays.map(m => {
-        let day = ''
+      weekdays.reverse();
+      weekdays = weekdays.map((m) => {
+        let day = "";
         switch (m) {
           case 0:
-            day = '鏄熸湡澶�'
+            day = "鏄熸湡澶�";
             break;
           case 1:
-            day = '鏄熸湡涓�'
+            day = "鏄熸湡涓�";
             break;
           case 2:
-            day = '鏄熸湡浜�'
+            day = "鏄熸湡浜�";
             break;
           case 3:
-            day = '鏄熸湡涓�'
+            day = "鏄熸湡涓�";
             break;
           case 4:
-            day = '鏄熸湡鍥�'
+            day = "鏄熸湡鍥�";
             break;
           case 5:
-            day = '鏄熸湡浜�'
+            day = "鏄熸湡浜�";
             break;
           case 6:
-            day = '鏄熸湡鍏�'
+            day = "鏄熸湡鍏�";
             break;
         }
-        return day
-      })
+        return day;
+      });
       return weekdays;
     },
     getScheduleByMe() {
       this.scheduleLoading = true;
-      this.$axios.post(this.$api.report.ScheduleByMe, {
-        date: getYearAndMonthAndDays(this.calendarValue)
-      }).then(res => {
-        this.loading = false;
-        this.scheduleLoading = false;
-        if (res.code == 201) {
-          return
-        }
-        this.listScheduleByMe = res.data.map(m => {
-          if (m.scheduleTime) {
-            let time = m.scheduleTime.split(' ')[1].split(':')
-            m.scheduleTimes = time[0] + ':' + time[1]
-          } else {
-            m.scheduleTimes = ''
-          }
-          return m
-        })
+      ScheduleByMe({
+        date: getYearAndMonthAndDays(this.calendarValue),
       })
+        .then((res) => {
+          this.loading = false;
+          this.scheduleLoading = false;
+          if (res.code == 201) {
+            return;
+          }
+          this.listScheduleByMe = res.data.map((m) => {
+            if (m.scheduleTime) {
+              let time = m.scheduleTime.split(" ")[1].split(":");
+              m.scheduleTimes = time[0] + ":" + time[1];
+            } else {
+              m.scheduleTimes = "";
+            }
+            return m;
+          });
+        })
+        .catch((error) => {
+          console.error(error);
+        });
     },
     goNoticeDetail(row) {
-      this.$axios.put(this.$api.informationNotification.triggerModificationStatusToRead + '/' + row.id).then(res => {
-        row.num = Math.random(100);
-        this.$bus.$emit("change", JSON.stringify(row));
-        this.$parent.addTab({
-          v: "娑堟伅璇︽儏",
-          i: "el-icon-s-tools",
-          u: "notice-detail",
-          k: 35,
-          p: "abcd"
-        }, 29);
-      })
+      triggerModificationStatusToRead(row.id)
+        .then((res) => {
+          row.num = Math.random(100);
+          this.$bus.$emit("change", JSON.stringify(row));
+          this.$parent.addTab(
+            {
+              v: "娑堟伅璇︽儏",
+              i: "el-icon-s-tools",
+              u: "notice-detail",
+              k: 35,
+              p: "abcd",
+            },
+            29
+          );
+        })
+        .catch((error) => {
+          console.error(error);
+        });
     },
   },
   deactivated() {
-    this.timer && clearInterval(this.timer)
-  }
-}
+    this.timer && clearInterval(this.timer);
+  },
+};
 </script>
 
 <style scoped lang="scss">
@@ -545,13 +739,14 @@
 }
 
 .card {
-  background: #FFFFFF;
+  background: #ffffff;
   border-radius: 16px;
   width: 100%;
   box-sizing: border-box;
 }
 
 .right-1 {
+  height: 118px;
   padding: 10px 10px 4px;
   display: flex;
   align-items: center;
@@ -568,10 +763,11 @@
 
 .right-1-item .mun {
   margin-left: 6px;
-  color: #0166E2;
+  color: #0166e2;
 }
 
 .right-2 {
+  width: 100%;
   padding: 13px 14px 8px;
   margin-bottom: 16px;
 }
@@ -590,32 +786,6 @@
   justify-content: space-between;
 }
 
->>>.el-calendar__header {
-  display: none;
-}
-
->>>.el-calendar__body {
-  padding: 0;
-}
-
->>>.el-calendar-table:not(.is-range) td.next {
-  /*闅愯棌涓嬩釜鏈堢殑鏃ユ湡*/
-  display: none;
-}
-
->>>.el-calendar-day {
-  height: 40px;
-}
-
->>>.el-calendar-table td {
-  border: 0;
-  font-size: 14px;
-}
-
->>>.el-calendar-table tr td:first-child {
-  border-left: 0;
-}
-
 .control {
   display: flex;
   align-items: center;
@@ -628,10 +798,10 @@
   width: 32px;
   height: 32px;
   border-radius: 8px;
-  border: 1px solid #E8E8E8;
+  border: 1px solid #e8e8e8;
   background: #fff;
   padding: 0;
-  color: #0166E2;
+  color: #0166e2;
   font-size: 20px;
 }
 
@@ -645,47 +815,40 @@
 .right-3-tab {
   display: flex;
   align-items: center;
+  margin-bottom: 12px;
 }
-
 .tab-item {
   width: 50%;
   box-sizing: border-box;
   text-align: center;
   padding: 14px 0;
   font-size: 20px;
-  background: #F5F7FB;
+  background: #f5f7fb;
   color: #333333;
 }
-
 .tab-item.active {
   background: #fff;
-  color: #FF3838;
-  padding-left: 16px;
-  text-align: left;
+  color: #ff3838;
 }
-
 .right-3-list {
   padding: 0 12px 8px;
   box-sizing: border-box;
   height: 390px;
   overflow-y: auto;
 }
-
 .list3-item {
   padding: 6px 4px;
-  margin: 8px 0;
 }
-
 .list3-item:hover {
   background: rgba(58, 123, 250, 0.05);
 }
-
 .list3-item-title {
   display: flex;
-  align-items: flex-start;
-  margin-bottom: 10px;
+  align-items: center;
+  p {
+    margin: 0;
+  }
 }
-
 .list3-item-info {
   display: flex;
   align-items: center;
@@ -697,11 +860,11 @@
 .left-2 {
   display: grid;
   grid-template-columns: repeat(7, 1fr);
-  height: 777px;
+  height: calc(100vh - 245px);
 }
 
 .left-2-item {
-  border-right: 1px solid #F1F1F1;
+  border-right: 1px solid #f1f1f1;
   overflow: hidden !important;
 }
 
@@ -714,11 +877,11 @@
 }
 
 .left-2-item:hover .left-item-title span {
-  color: #3A7BFA !important;
+  color: #3a7bfa !important;
 }
 
 .left-item-title {
-  border-bottom: 1px solid #F1F1F1;
+  border-bottom: 1px solid #f1f1f1;
   display: flex;
   flex-direction: column;
   align-items: center;
@@ -734,25 +897,25 @@
 }
 
 .body-item {
-  background: #70A090;
+  background: #70a090;
   border-radius: 16px;
   overflow: hidden;
   margin-bottom: 8px;
 }
 
 .body-item.color0 {
-  background: #70A090;
+  background: #70a090;
 }
 
 .body-item.color1 {
-  background: #EBD476;
+  background: #ebd476;
 }
 
 .body-item.color2 {
-  background: #FF3838;
+  background: #ff3838;
 }
 
-.body-item>div {
+.body-item > div {
   height: calc(100% - 16px);
   margin-top: 16px;
   background: rgba(255, 255, 255, 0.9);
@@ -773,37 +936,6 @@
   margin-bottom: 10px;
 }
 
->>>.el-calendar-day span {
-  display: inline-block;
-  width: 30px;
-  height: 30px;
-  line-height: 30px;
-  text-align: center;
-  border-radius: 4px;
-}
-
->>>.is-selected {
-  background: transparent !important;
-}
-
->>>.is-selected .el-calendar-day {
-  background: transparent !important;
-}
-
->>>.is-selected .el-calendar-day span {
-  background: #3A7BFA !important;
-  color: #fff !important;
-}
-
->>>.el-calendar-day:hover {
-  background: transparent;
-}
-
->>>.el-calendar-day span:hover {
-  background: #3A7BFA !important;
-  color: #fff !important;
-}
-
 .body-item-name {
   display: inline-block;
   height: 22px;
@@ -811,9 +943,9 @@
   border-radius: 10px;
   line-height: 22px;
   text-align: center;
-  background: #C0C4CC;
+  background: #c0c4cc;
   color: #fff;
-  font-size: 14px
+  font-size: 14px;
 }
 
 .body-item-insState {
@@ -825,6 +957,6 @@
   line-height: 22px;
   text-align: center;
   color: #fff;
-  font-size: 14px
+  font-size: 14px;
 }
 </style>
diff --git a/src/views/login.vue b/src/views/login.vue
index 107f37f..a67d503 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -1,12 +1,17 @@
 <template>
   <div class="login">
     <div class="leftImg">
-      <img src="@/assets/images/loginBackground.png" alt="">
+      <img src="@/assets/images/loginBackground.png" alt="" />
     </div>
     <div class="rightForm">
       <div class="title_big">娆㈣繋鎮ㄧ櫥褰曪紒</div>
       <div class="title_small">LIMS瀹為獙瀹ょ鐞嗙郴缁�</div>
-      <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
+      <el-form
+        ref="loginForm"
+        :model="loginForm"
+        :rules="loginRules"
+        class="login-form"
+      >
         <el-form-item prop="username">
           <el-input
             v-model="loginForm.username"
@@ -14,7 +19,11 @@
             auto-complete="off"
             placeholder="璐﹀彿"
           >
-            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+            <svg-icon
+              slot="prefix"
+              icon-class="user"
+              class="el-input__icon input-icon"
+            />
           </el-input>
         </el-form-item>
         <el-form-item prop="password">
@@ -25,7 +34,11 @@
             placeholder="瀵嗙爜"
             @keyup.enter.native="handleLogin"
           >
-            <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+            <svg-icon
+              slot="prefix"
+              icon-class="password"
+              class="el-input__icon input-icon"
+            />
           </el-input>
         </el-form-item>
         <el-form-item prop="code" v-if="captchaEnabled">
@@ -36,41 +49,54 @@
             style="width: 63%"
             @keyup.enter.native="handleLogin"
           >
-            <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
+            <svg-icon
+              slot="prefix"
+              icon-class="validCode"
+              class="el-input__icon input-icon"
+            />
           </el-input>
           <div class="login-code">
-            <img :src="codeUrl" @click="getCode" class="login-code-img"/>
+            <img :src="codeUrl" @click="getCode" class="login-code-img" />
           </div>
         </el-form-item>
-        <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">璁颁綇瀵嗙爜</el-checkbox>
-        <el-form-item style="width:100%;">
+        <el-checkbox
+          v-model="loginForm.rememberMe"
+          style="margin: 0px 0px 25px 0px"
+          >璁颁綇瀵嗙爜</el-checkbox
+        >
+        <el-form-item style="width: 100%">
           <el-button
             :loading="loading"
             size="medium"
             type="primary"
-            style="width:100%;"
+            style="width: 100%"
             @click.native.prevent="handleLogin"
           >
             <span v-if="!loading">鐧� 褰�</span>
             <span v-else>鐧� 褰� 涓�...</span>
           </el-button>
-          <div style="float: right;" v-if="register">
-            <router-link class="link-type" :to="'/register'">绔嬪嵆娉ㄥ唽</router-link>
+          <div style="float: right" v-if="register">
+            <router-link class="link-type" :to="'/register'"
+              >绔嬪嵆娉ㄥ唽</router-link
+            >
           </div>
         </el-form-item>
+        <el-button v-if="true" type="primary" plain @click="goLogin"
+          >闆嗗洟闆嗘垚鐧诲綍</el-button
+        >
       </el-form>
     </div>
     <!--  搴曢儴  -->
-<!--    <div class="el-login-footer">-->
-<!--      <span>Copyright 漏 2018-2025 ruoyi.vip All Rights Reserved.</span>-->
-<!--    </div>-->
+    <!--    <div class="el-login-footer">-->
+    <!--      <span>Copyright 漏 2018-2025 ruoyi.vip All Rights Reserved.</span>-->
+    <!--    </div>-->
   </div>
 </template>
 
 <script>
-import { getCodeImg } from "@/api/login";
+import { getCodeImg, getSsoAuthUrl } from "@/api/login";
 import Cookies from "js-cookie";
-import { encrypt, decrypt } from '@/utils/jsencrypt'
+import { encrypt, decrypt } from "@/utils/jsencrypt";
 
 export default {
   name: "Login",
@@ -78,45 +104,51 @@
     return {
       codeUrl: "",
       loginForm: {
-        username: "admin",
-        password: "admin123",
+        username: "",
+        password: "",
         rememberMe: false,
         code: "",
-        uuid: ""
+        uuid: "",
       },
       loginRules: {
         username: [
-          { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勮处鍙�" }
+          { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勮处鍙�" },
         ],
         password: [
-          { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勫瘑鐮�" }
+          { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勫瘑鐮�" },
         ],
-        code: [{ required: false, trigger: "change", message: "璇疯緭鍏ラ獙璇佺爜" }]
+        code: [{ required: false, trigger: "change", message: "璇疯緭鍏ラ獙璇佺爜" }],
       },
       loading: false,
       // 楠岃瘉鐮佸紑鍏�
       captchaEnabled: true,
       // 娉ㄥ唽寮�鍏�
       register: false,
-      redirect: undefined
+      redirect: undefined,
     };
   },
   watch: {
     $route: {
-      handler: function(route) {
+      handler: function (route) {
         this.redirect = route.query && route.query.redirect;
       },
-      immediate: true
-    }
+      immediate: true,
+    },
   },
   created() {
     this.getCode();
     this.getCookie();
   },
   methods: {
+    async goLogin() {
+      await getSsoAuthUrl().then((res) => {
+        window.location.href = res.data;
+      });
+    },
     getCode() {
-      getCodeImg().then(res => {
-        this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+      getCodeImg().then((res) => {
+        this.captchaEnabled =
+          res.captchaEnabled === undefined ? true : res.captchaEnabled;
         if (this.captchaEnabled) {
           this.codeUrl = "data:image/gif;base64," + res.img;
           this.loginForm.uuid = res.uuid;
@@ -126,38 +158,46 @@
     getCookie() {
       const username = Cookies.get("username");
       const password = Cookies.get("password");
-      const rememberMe = Cookies.get('rememberMe')
+      const rememberMe = Cookies.get("rememberMe");
       this.loginForm = {
         username: username === undefined ? this.loginForm.username : username,
-        password: password === undefined ? this.loginForm.password : decrypt(password),
-        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
+        password:
+          password === undefined ? this.loginForm.password : decrypt(password),
+        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
       };
     },
     handleLogin() {
-      this.$refs.loginForm.validate(valid => {
+      this.$refs.loginForm.validate((valid) => {
         if (valid) {
           this.loading = true;
           if (this.loginForm.rememberMe) {
             Cookies.set("username", this.loginForm.username, { expires: 30 });
-            Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
-            Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
+            Cookies.set("password", encrypt(this.loginForm.password), {
+              expires: 30,
+            });
+            Cookies.set("rememberMe", this.loginForm.rememberMe, {
+              expires: 30,
+            });
           } else {
             Cookies.remove("username");
             Cookies.remove("password");
-            Cookies.remove('rememberMe');
+            Cookies.remove("rememberMe");
           }
-          this.$store.dispatch("Login", this.loginForm).then(() => {
-            this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
-          }).catch(() => {
-            this.loading = false;
-            if (this.captchaEnabled) {
-              this.getCode();
-            }
-          });
+          this.$store
+            .dispatch("Login", this.loginForm)
+            .then(() => {
+              this.$router.push({ path: this.redirect || "/" }).catch(() => {});
+            })
+            .catch(() => {
+              this.loading = false;
+              if (this.captchaEnabled) {
+                this.getCode();
+              }
+            });
         }
       });
-    }
-  }
+    },
+  },
 };
 </script>
 
@@ -194,13 +234,13 @@
     flex-direction: column;
     justify-content: center;
     .title_big {
-      color: #004EA2;
+      color: #004ea2;
       font-size: 40px;
       margin-bottom: 8px;
     }
 
     .title_small {
-      color: #004EA2;
+      color: #004ea2;
       font-size: 24px;
     }
     .login-form {
diff --git a/src/views/logindemo.vue b/src/views/logindemo.vue
new file mode 100644
index 0000000..1798948
--- /dev/null
+++ b/src/views/logindemo.vue
@@ -0,0 +1,23 @@
+<template>
+  <div></div>
+</template>
+<script>
+import { getSsoAuthUrl } from '@/api/login'
+export default {
+  data() {
+    return {}
+  },
+  created() {
+    this.goLogin()
+  },
+  computed: {},
+  methods: {
+    async goLogin() {
+      await getSsoAuthUrl().then(res => {
+        window.location.href = res.data
+      })
+    }
+  }
+}
+</script>
+<style scoped></style>
diff --git a/src/views/thirdpartylogin.vue b/src/views/thirdpartylogin.vue
new file mode 100644
index 0000000..35f0931
--- /dev/null
+++ b/src/views/thirdpartylogin.vue
@@ -0,0 +1,23 @@
+<template>
+  <div></div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      code: null // 鐢ㄤ簬瀛樺偍鑾峰彇鍒扮殑 code 鍙傛暟
+    };
+  },
+  created() {
+    this.initLogin();
+  },
+  methods: {
+    initLogin() {
+      this.$store.dispatch('LoginBySSO', {code: this.$route.query.code}).then(() => {
+        this.$router.push({path: '/'});
+      });
+    }
+  }
+};
+</script>
+<style scoped></style>
\ No newline at end of file
diff --git a/src/utils/thread/worker.js b/src/workers/InspectionWorker.worker.js
similarity index 63%
rename from src/utils/thread/worker.js
rename to src/workers/InspectionWorker.worker.js
index 27bb366..dd0b80f 100644
--- a/src/utils/thread/worker.js
+++ b/src/workers/InspectionWorker.worker.js
@@ -1,5 +1,6 @@
 // 澶氱嚎绋嬮噷闈㈤渶瑕佷繚瀛樼殑鏁版嵁
 'use strict';//涓簀s鑴氭湰寮�鍚弗鏍兼ā寮�
+import Big from "big.js";
 let code = ''
 // 琛ㄦ牸鏁版嵁锛堟覆鏌擄級
 let tableList = null
@@ -1122,948 +1123,3 @@
     console.log('error',error)
   }
 }
-
-
-
-
-/*
- *  big.js v5.2.2
- *  A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.
- *  Copyright (c) 2018 Michael Mclaughlin <M8ch88l@gmail.com>
- *  https://github.com/MikeMcl/big.js/LICENCE
- */
-;(function (GLOBAL) {
-  'use strict';
-  var Big,
-
-
-/************************************** EDITABLE DEFAULTS *****************************************/
-
-
-    // The default values below must be integers within the stated ranges.
-
-    /*
-     * The maximum number of decimal places (DP) of the results of operations involving division:
-     * div and sqrt, and pow with negative exponents.
-     */
-    DP = 20,          // 0 to MAX_DP
-
-    /*
-     * The rounding mode (RM) used when rounding to the above decimal places.
-     *
-     *  0  Towards zero (i.e. truncate, no rounding).       (ROUND_DOWN)
-     *  1  To nearest neighbour. If equidistant, round up.  (ROUND_HALF_UP)
-     *  2  To nearest neighbour. If equidistant, to even.   (ROUND_HALF_EVEN)
-     *  3  Away from zero.                                  (ROUND_UP)
-     */
-    RM = 1,             // 0, 1, 2 or 3
-
-    // The maximum value of DP and Big.DP.
-    MAX_DP = 1E6,       // 0 to 1000000
-
-    // The maximum magnitude of the exponent argument to the pow method.
-    MAX_POWER = 1E6,    // 1 to 1000000
-
-    /*
-     * The negative exponent (NE) at and beneath which toString returns exponential notation.
-     * (JavaScript numbers: -7)
-     * -1000000 is the minimum recommended exponent value of a Big.
-     */
-    NE = -7,            // 0 to -1000000
-
-    /*
-     * The positive exponent (PE) at and above which toString returns exponential notation.
-     * (JavaScript numbers: 21)
-     * 1000000 is the maximum recommended exponent value of a Big.
-     * (This limit is not enforced or checked.)
-     */
-    PE = 21,            // 0 to 1000000
-
-
-/**************************************************************************************************/
-
-
-    // Error messages.
-    NAME = '[big.js] ',
-    INVALID = NAME + 'Invalid ',
-    INVALID_DP = INVALID + 'decimal places',
-    INVALID_RM = INVALID + 'rounding mode',
-    DIV_BY_ZERO = NAME + 'Division by zero',
-
-    // The shared prototype object.
-    P = {},
-    UNDEFINED = void 0,
-    NUMERIC = /^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;
-
-
-  /*
-   * Create and return a Big constructor.
-   *
-   */
-  function _Big_() {
-
-    /*
-     * The Big constructor and exported function.
-     * Create and return a new instance of a Big number object.
-     *
-     * n {number|string|Big} A numeric value.
-     */
-    function Big(n) {
-      var x = this;
-
-      // Enable constructor usage without new.
-      if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);
-
-      // Duplicate.
-      if (n instanceof Big) {
-        x.s = n.s;
-        x.e = n.e;
-        x.c = n.c.slice();
-      } else {
-        parse(x, n);
-      }
-
-      /*
-       * Retain a reference to this Big constructor, and shadow Big.prototype.constructor which
-       * points to Object.
-       */
-      x.constructor = Big;
-    }
-
-    Big.prototype = P;
-    Big.DP = DP;
-    Big.RM = RM;
-    Big.NE = NE;
-    Big.PE = PE;
-    Big.version = '5.2.2';
-
-    return Big;
-  }
-
-
-  /*
-   * Parse the number or string value passed to a Big constructor.
-   *
-   * x {Big} A Big number instance.
-   * n {number|string} A numeric value.
-   */
-  function parse(x, n) {
-    var e, i, nl;
-
-    // Minus zero?
-    if (n === 0 && 1 / n < 0) n = '-0';
-    else if (!NUMERIC.test(n += '')) throw Error(INVALID + 'number');
-
-    // Determine sign.
-    x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;
-
-    // Decimal point?
-    if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');
-
-    // Exponential form?
-    if ((i = n.search(/e/i)) > 0) {
-
-      // Determine exponent.
-      if (e < 0) e = i;
-      e += +n.slice(i + 1);
-      n = n.substring(0, i);
-    } else if (e < 0) {
-
-      // Integer.
-      e = n.length;
-    }
-
-    nl = n.length;
-
-    // Determine leading zeros.
-    for (i = 0; i < nl && n.charAt(i) == '0';) ++i;
-
-    if (i == nl) {
-
-      // Zero.
-      x.c = [x.e = 0];
-    } else {
-
-      // Determine trailing zeros.
-      for (; nl > 0 && n.charAt(--nl) == '0';);
-      x.e = e - i - 1;
-      x.c = [];
-
-      // Convert string to array of digits without leading/trailing zeros.
-      for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);
-    }
-
-    return x;
-  }
-
-
-  /*
-   * Round Big x to a maximum of dp decimal places using rounding mode rm.
-   * Called by stringify, P.div, P.round and P.sqrt.
-   *
-   * x {Big} The Big to round.
-   * dp {number} Integer, 0 to MAX_DP inclusive.
-   * rm {number} 0, 1, 2 or 3 (DOWN, HALF_UP, HALF_EVEN, UP)
-   * [more] {boolean} Whether the result of division was truncated.
-   */
-  function round(x, dp, rm, more) {
-    var xc = x.c,
-      i = x.e + dp + 1;
-
-    if (i < xc.length) {
-      if (rm === 1) {
-
-        // xc[i] is the digit after the digit that may be rounded up.
-        more = xc[i] >= 5;
-      } else if (rm === 2) {
-        more = xc[i] > 5 || xc[i] == 5 &&
-          (more || i < 0 || xc[i + 1] !== UNDEFINED || xc[i - 1] & 1);
-      } else if (rm === 3) {
-        more = more || !!xc[0];
-      } else {
-        more = false;
-        if (rm !== 0) throw Error(INVALID_RM);
-      }
-
-      if (i < 1) {
-        xc.length = 1;
-
-        if (more) {
-
-          // 1, 0.1, 0.01, 0.001, 0.0001 etc.
-          x.e = -dp;
-          xc[0] = 1;
-        } else {
-
-          // Zero.
-          xc[0] = x.e = 0;
-        }
-      } else {
-
-        // Remove any digits after the required decimal places.
-        xc.length = i--;
-
-        // Round up?
-        if (more) {
-
-          // Rounding up may mean the previous digit has to be rounded up.
-          for (; ++xc[i] > 9;) {
-            xc[i] = 0;
-            if (!i--) {
-              ++x.e;
-              xc.unshift(1);
-            }
-          }
-        }
-
-        // Remove trailing zeros.
-        for (i = xc.length; !xc[--i];) xc.pop();
-      }
-    } else if (rm < 0 || rm > 3 || rm !== ~~rm) {
-      throw Error(INVALID_RM);
-    }
-
-    return x;
-  }
-
-
-  /*
-   * Return a string representing the value of Big x in normal or exponential notation.
-   * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.
-   *
-   * x {Big}
-   * id? {number} Caller id.
-   *         1 toExponential
-   *         2 toFixed
-   *         3 toPrecision
-   *         4 valueOf
-   * n? {number|undefined} Caller's argument.
-   * k? {number|undefined}
-   */
-  function stringify(x, id, n, k) {
-    var e, s,
-      Big = x.constructor,
-      z = !x.c[0];
-
-    if (n !== UNDEFINED) {
-      if (n !== ~~n || n < (id == 3) || n > MAX_DP) {
-        throw Error(id == 3 ? INVALID + 'precision' : INVALID_DP);
-      }
-
-      x = new Big(x);
-
-      // The index of the digit that may be rounded up.
-      n = k - x.e;
-
-      // Round?
-      if (x.c.length > ++k) round(x, n, Big.RM);
-
-      // toFixed: recalculate k as x.e may have changed if value rounded up.
-      if (id == 2) k = x.e + n + 1;
-
-      // Append zeros?
-      for (; x.c.length < k;) x.c.push(0);
-    }
-
-    e = x.e;
-    s = x.c.join('');
-    n = s.length;
-
-    // Exponential notation?
-    if (id != 2 && (id == 1 || id == 3 && k <= e || e <= Big.NE || e >= Big.PE)) {
-      s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;
-
-    // Normal notation.
-    } else if (e < 0) {
-      for (; ++e;) s = '0' + s;
-      s = '0.' + s;
-    } else if (e > 0) {
-      if (++e > n) for (e -= n; e--;) s += '0';
-      else if (e < n) s = s.slice(0, e) + '.' + s.slice(e);
-    } else if (n > 1) {
-      s = s.charAt(0) + '.' + s.slice(1);
-    }
-
-    return x.s < 0 && (!z || id == 4) ? '-' + s : s;
-  }
-
-
-  // Prototype/instance methods
-
-
-  /*
-   * Return a new Big whose value is the absolute value of this Big.
-   */
-  P.abs = function () {
-    var x = new this.constructor(this);
-    x.s = 1;
-    return x;
-  };
-
-
-  /*
-   * Return 1 if the value of this Big is greater than the value of Big y,
-   *       -1 if the value of this Big is less than the value of Big y, or
-   *        0 if they have the same value.
-  */
-  P.cmp = function (y) {
-    var isneg,
-      x = this,
-      xc = x.c,
-      yc = (y = new x.constructor(y)).c,
-      i = x.s,
-      j = y.s,
-      k = x.e,
-      l = y.e;
-
-    // Either zero?
-    if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;
-
-    // Signs differ?
-    if (i != j) return i;
-
-    isneg = i < 0;
-
-    // Compare exponents.
-    if (k != l) return k > l ^ isneg ? 1 : -1;
-
-    j = (k = xc.length) < (l = yc.length) ? k : l;
-
-    // Compare digit by digit.
-    for (i = -1; ++i < j;) {
-      if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;
-    }
-
-    // Compare lengths.
-    return k == l ? 0 : k > l ^ isneg ? 1 : -1;
-  };
-
-
-  /*
-   * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,
-   * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.
-   */
-  P.div = function (y) {
-    var x = this,
-      Big = x.constructor,
-      a = x.c,                  // dividend
-      b = (y = new Big(y)).c,   // divisor
-      k = x.s == y.s ? 1 : -1,
-      dp = Big.DP;
-
-    if (dp !== ~~dp || dp < 0 || dp > MAX_DP) throw Error(INVALID_DP);
-
-    // Divisor is zero?
-    if (!b[0]) throw Error(DIV_BY_ZERO);
-
-    // Dividend is 0? Return +-0.
-    if (!a[0]) return new Big(k * 0);
-
-    var bl, bt, n, cmp, ri,
-      bz = b.slice(),
-      ai = bl = b.length,
-      al = a.length,
-      r = a.slice(0, bl),   // remainder
-      rl = r.length,
-      q = y,                // quotient
-      qc = q.c = [],
-      qi = 0,
-      d = dp + (q.e = x.e - y.e) + 1;    // number of digits of the result
-
-    q.s = k;
-    k = d < 0 ? 0 : d;
-
-    // Create version of divisor with leading zero.
-    bz.unshift(0);
-
-    // Add zeros to make remainder as long as divisor.
-    for (; rl++ < bl;) r.push(0);
-
-    do {
-
-      // n is how many times the divisor goes into current remainder.
-      for (n = 0; n < 10; n++) {
-
-        // Compare divisor and remainder.
-        if (bl != (rl = r.length)) {
-          cmp = bl > rl ? 1 : -1;
-        } else {
-          for (ri = -1, cmp = 0; ++ri < bl;) {
-            if (b[ri] != r[ri]) {
-              cmp = b[ri] > r[ri] ? 1 : -1;
-              break;
-            }
-          }
-        }
-
-        // If divisor < remainder, subtract divisor from remainder.
-        if (cmp < 0) {
-
-          // Remainder can't be more than 1 digit longer than divisor.
-          // Equalise lengths using divisor with extra leading zero?
-          for (bt = rl == bl ? b : bz; rl;) {
-            if (r[--rl] < bt[rl]) {
-              ri = rl;
-              for (; ri && !r[--ri];) r[ri] = 9;
-              --r[ri];
-              r[rl] += 10;
-            }
-            r[rl] -= bt[rl];
-          }
-
-          for (; !r[0];) r.shift();
-        } else {
-          break;
-        }
-      }
-
-      // Add the digit n to the result array.
-      qc[qi++] = cmp ? n : ++n;
-
-      // Update the remainder.
-      if (r[0] && cmp) r[rl] = a[ai] || 0;
-      else r = [a[ai]];
-
-    } while ((ai++ < al || r[0] !== UNDEFINED) && k--);
-
-    // Leading zero? Do not remove if result is simply zero (qi == 1).
-    if (!qc[0] && qi != 1) {
-
-      // There can't be more than one zero.
-      qc.shift();
-      q.e--;
-    }
-
-    // Round?
-    if (qi > d) round(q, dp, Big.RM, r[0] !== UNDEFINED);
-
-    return q;
-  };
-
-
-  /*
-   * Return true if the value of this Big is equal to the value of Big y, otherwise return false.
-   */
-  P.eq = function (y) {
-    return !this.cmp(y);
-  };
-
-
-  /*
-   * Return true if the value of this Big is greater than the value of Big y, otherwise return
-   * false.
-   */
-  P.gt = function (y) {
-    return this.cmp(y) > 0;
-  };
-
-
-  /*
-   * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise
-   * return false.
-   */
-  P.gte = function (y) {
-    return this.cmp(y) > -1;
-  };
-
-
-  /*
-   * Return true if the value of this Big is less than the value of Big y, otherwise return false.
-   */
-  P.lt = function (y) {
-    return this.cmp(y) < 0;
-  };
-
-
-  /*
-   * Return true if the value of this Big is less than or equal to the value of Big y, otherwise
-   * return false.
-   */
-  P.lte = function (y) {
-    return this.cmp(y) < 1;
-  };
-
-
-  /*
-   * Return a new Big whose value is the value of this Big minus the value of Big y.
-   */
-  P.minus = P.sub = function (y) {
-    var i, j, t, xlty,
-      x = this,
-      Big = x.constructor,
-      a = x.s,
-      b = (y = new Big(y)).s;
-
-    // Signs differ?
-    if (a != b) {
-      y.s = -b;
-      return x.plus(y);
-    }
-
-    var xc = x.c.slice(),
-      xe = x.e,
-      yc = y.c,
-      ye = y.e;
-
-    // Either zero?
-    if (!xc[0] || !yc[0]) {
-
-      // y is non-zero? x is non-zero? Or both are zero.
-      return yc[0] ? (y.s = -b, y) : new Big(xc[0] ? x : 0);
-    }
-
-    // Determine which is the bigger number. Prepend zeros to equalise exponents.
-    if (a = xe - ye) {
-
-      if (xlty = a < 0) {
-        a = -a;
-        t = xc;
-      } else {
-        ye = xe;
-        t = yc;
-      }
-
-      t.reverse();
-      for (b = a; b--;) t.push(0);
-      t.reverse();
-    } else {
-
-      // Exponents equal. Check digit by digit.
-      j = ((xlty = xc.length < yc.length) ? xc : yc).length;
-
-      for (a = b = 0; b < j; b++) {
-        if (xc[b] != yc[b]) {
-          xlty = xc[b] < yc[b];
-          break;
-        }
-      }
-    }
-
-    // x < y? Point xc to the array of the bigger number.
-    if (xlty) {
-      t = xc;
-      xc = yc;
-      yc = t;
-      y.s = -y.s;
-    }
-
-    /*
-     * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only
-     * needs to start at yc.length.
-     */
-    if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;
-
-    // Subtract yc from xc.
-    for (b = i; j > a;) {
-      if (xc[--j] < yc[j]) {
-        for (i = j; i && !xc[--i];) xc[i] = 9;
-        --xc[i];
-        xc[j] += 10;
-      }
-
-      xc[j] -= yc[j];
-    }
-
-    // Remove trailing zeros.
-    for (; xc[--b] === 0;) xc.pop();
-
-    // Remove leading zeros and adjust exponent accordingly.
-    for (; xc[0] === 0;) {
-      xc.shift();
-      --ye;
-    }
-
-    if (!xc[0]) {
-
-      // n - n = +0
-      y.s = 1;
-
-      // Result must be zero.
-      xc = [ye = 0];
-    }
-
-    y.c = xc;
-    y.e = ye;
-
-    return y;
-  };
-
-
-  /*
-   * Return a new Big whose value is the value of this Big modulo the value of Big y.
-   */
-  P.mod = function (y) {
-    var ygtx,
-      x = this,
-      Big = x.constructor,
-      a = x.s,
-      b = (y = new Big(y)).s;
-
-    if (!y.c[0]) throw Error(DIV_BY_ZERO);
-
-    x.s = y.s = 1;
-    ygtx = y.cmp(x) == 1;
-    x.s = a;
-    y.s = b;
-
-    if (ygtx) return new Big(x);
-
-    a = Big.DP;
-    b = Big.RM;
-    Big.DP = Big.RM = 0;
-    x = x.div(y);
-    Big.DP = a;
-    Big.RM = b;
-
-    return this.minus(x.times(y));
-  };
-
-
-  /*
-   * Return a new Big whose value is the value of this Big plus the value of Big y.
-   */
-  P.plus = P.add = function (y) {
-    var t,
-      x = this,
-      Big = x.constructor,
-      a = x.s,
-      b = (y = new Big(y)).s;
-
-    // Signs differ?
-    if (a != b) {
-      y.s = -b;
-      return x.minus(y);
-    }
-
-    var xe = x.e,
-      xc = x.c,
-      ye = y.e,
-      yc = y.c;
-
-    // Either zero? y is non-zero? x is non-zero? Or both are zero.
-    if (!xc[0] || !yc[0]) return yc[0] ? y : new Big(xc[0] ? x : a * 0);
-
-    xc = xc.slice();
-
-    // Prepend zeros to equalise exponents.
-    // Note: reverse faster than unshifts.
-    if (a = xe - ye) {
-      if (a > 0) {
-        ye = xe;
-        t = yc;
-      } else {
-        a = -a;
-        t = xc;
-      }
-
-      t.reverse();
-      for (; a--;) t.push(0);
-      t.reverse();
-    }
-
-    // Point xc to the longer array.
-    if (xc.length - yc.length < 0) {
-      t = yc;
-      yc = xc;
-      xc = t;
-    }
-
-    a = yc.length;
-
-    // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.
-    for (b = 0; a; xc[a] %= 10) b = (xc[--a] = xc[a] + yc[a] + b) / 10 | 0;
-
-    // No need to check for zero, as +x + +y != 0 && -x + -y != 0
-
-    if (b) {
-      xc.unshift(b);
-      ++ye;
-    }
-
-    // Remove trailing zeros.
-    for (a = xc.length; xc[--a] === 0;) xc.pop();
-
-    y.c = xc;
-    y.e = ye;
-
-    return y;
-  };
-
-
-  /*
-   * Return a Big whose value is the value of this Big raised to the power n.
-   * If n is negative, round to a maximum of Big.DP decimal places using rounding
-   * mode Big.RM.
-   *
-   * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.
-   */
-  P.pow = function (n) {
-    var x = this,
-      one = new x.constructor(1),
-      y = one,
-      isneg = n < 0;
-
-    if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) throw Error(INVALID + 'exponent');
-    if (isneg) n = -n;
-
-    for (;;) {
-      if (n & 1) y = y.times(x);
-      n >>= 1;
-      if (!n) break;
-      x = x.times(x);
-    }
-
-    return isneg ? one.div(y) : y;
-  };
-
-
-  /*
-   * Return a new Big whose value is the value of this Big rounded using rounding mode rm
-   * to a maximum of dp decimal places, or, if dp is negative, to an integer which is a
-   * multiple of 10**-dp.
-   * If dp is not specified, round to 0 decimal places.
-   * If rm is not specified, use Big.RM.
-   *
-   * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.
-   * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP)
-   */
-  P.round = function (dp, rm) {
-    var Big = this.constructor;
-    if (dp === UNDEFINED) dp = 0;
-    else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) throw Error(INVALID_DP);
-    return round(new Big(this), dp, rm === UNDEFINED ? Big.RM : rm);
-  };
-
-
-  /*
-   * Return a new Big whose value is the square root of the value of this Big, rounded, if
-   * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.
-   */
-  P.sqrt = function () {
-    var r, c, t,
-      x = this,
-      Big = x.constructor,
-      s = x.s,
-      e = x.e,
-      half = new Big(0.5);
-
-    // Zero?
-    if (!x.c[0]) return new Big(x);
-
-    // Negative?
-    if (s < 0) throw Error(NAME + 'No square root');
-
-    // Estimate.
-    s = Math.sqrt(x + '');
-
-    // Math.sqrt underflow/overflow?
-    // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.
-    if (s === 0 || s === 1 / 0) {
-      c = x.c.join('');
-      if (!(c.length + e & 1)) c += '0';
-      s = Math.sqrt(c);
-      e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);
-      r = new Big((s == 1 / 0 ? '1e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);
-    } else {
-      r = new Big(s);
-    }
-
-    e = r.e + (Big.DP += 4);
-
-    // Newton-Raphson iteration.
-    do {
-      t = r;
-      r = half.times(t.plus(x.div(t)));
-    } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));
-
-    return round(r, Big.DP -= 4, Big.RM);
-  };
-
-
-  /*
-   * Return a new Big whose value is the value of this Big times the value of Big y.
-   */
-  P.times = P.mul = function (y) {
-    var c,
-      x = this,
-      Big = x.constructor,
-      xc = x.c,
-      yc = (y = new Big(y)).c,
-      a = xc.length,
-      b = yc.length,
-      i = x.e,
-      j = y.e;
-
-    // Determine sign of result.
-    y.s = x.s == y.s ? 1 : -1;
-
-    // Return signed 0 if either 0.
-    if (!xc[0] || !yc[0]) return new Big(y.s * 0);
-
-    // Initialise exponent of result as x.e + y.e.
-    y.e = i + j;
-
-    // If array xc has fewer digits than yc, swap xc and yc, and lengths.
-    if (a < b) {
-      c = xc;
-      xc = yc;
-      yc = c;
-      j = a;
-      a = b;
-      b = j;
-    }
-
-    // Initialise coefficient array of result with zeros.
-    for (c = new Array(j = a + b); j--;) c[j] = 0;
-
-    // Multiply.
-
-    // i is initially xc.length.
-    for (i = b; i--;) {
-      b = 0;
-
-      // a is yc.length.
-      for (j = a + i; j > i;) {
-
-        // Current sum of products at this digit position, plus carry.
-        b = c[j] + yc[i] * xc[j - i - 1] + b;
-        c[j--] = b % 10;
-
-        // carry
-        b = b / 10 | 0;
-      }
-
-      c[j] = (c[j] + b) % 10;
-    }
-
-    // Increment result exponent if there is a final carry, otherwise remove leading zero.
-    if (b) ++y.e;
-    else c.shift();
-
-    // Remove trailing zeros.
-    for (i = c.length; !c[--i];) c.pop();
-    y.c = c;
-
-    return y;
-  };
-
-
-  /*
-   * Return a string representing the value of this Big in exponential notation to dp fixed decimal
-   * places and rounded using Big.RM.
-   *
-   * dp? {number} Integer, 0 to MAX_DP inclusive.
-   */
-  P.toExponential = function (dp) {
-    return stringify(this, 1, dp, dp);
-  };
-
-
-  /*
-   * Return a string representing the value of this Big in normal notation to dp fixed decimal
-   * places and rounded using Big.RM.
-   *
-   * dp? {number} Integer, 0 to MAX_DP inclusive.
-   *
-   * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.
-   * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.
-   */
-  P.toFixed = function (dp) {
-    return stringify(this, 2, dp, this.e + dp);
-  };
-
-
-  /*
-   * Return a string representing the value of this Big rounded to sd significant digits using
-   * Big.RM. Use exponential notation if sd is less than the number of digits necessary to represent
-   * the integer part of the value in normal notation.
-   *
-   * sd {number} Integer, 1 to MAX_DP inclusive.
-   */
-  P.toPrecision = function (sd) {
-    return stringify(this, 3, sd, sd - 1);
-  };
-
-
-  /*
-   * Return a string representing the value of this Big.
-   * Return exponential notation if this Big has a positive exponent equal to or greater than
-   * Big.PE, or a negative exponent equal to or less than Big.NE.
-   * Omit the sign for negative zero.
-   */
-  P.toString = function () {
-    return stringify(this);
-  };
-
-
-  /*
-   * Return a string representing the value of this Big.
-   * Return exponential notation if this Big has a positive exponent equal to or greater than
-   * Big.PE, or a negative exponent equal to or less than Big.NE.
-   * Include the sign for negative zero.
-   */
-  P.valueOf = P.toJSON = function () {
-    return stringify(this, 4);
-  };
-
-
-  // Export
-
-
-  Big = _Big_();
-
-  Big['default'] = Big.Big = Big;
-
-  //AMD.
-  if (typeof define === 'function' && define.amd) {
-    define(function () { return Big; });
-
-  // Node and other CommonJS-like environments that support module.exports.
-  } else if (typeof module !== 'undefined' && module.exports) {
-    module.exports = Big;
-
-  //Browser.
-  } else {
-    GLOBAL.Big = Big;
-  }
-})(this);
diff --git a/src/utils/thread/worker0.js b/src/workers/InspectionWorkerAsData.worker.js
similarity index 100%
rename from src/utils/thread/worker0.js
rename to src/workers/InspectionWorkerAsData.worker.js
diff --git a/vue.config.js b/vue.config.js
index 5fd87e1..0fec5db 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -7,7 +7,7 @@
 
 const CompressionPlugin = require("compression-webpack-plugin");
 
-const name = process.env.VUE_APP_TITLE || "鑻ヤ緷绠$悊绯荤粺"; // 缃戦〉鏍囬
+const name = process.env.VUE_APP_TITLE || "LIMS瀹為獙瀹ょ鐞嗙郴缁�"; // 缃戦〉鏍囬
 
 const port = process.env.port || process.env.npm_config_port || 80; // 绔彛
 
@@ -37,7 +37,7 @@
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
         target: `http://127.0.0.1:8002`,
-        // target: `http://127.0.0.1:8002`,
+        // target: `https://zttx-lims.ztt.cn:8021`,
         changeOrigin: true,
         pathRewrite: {
           ["^" + process.env.VUE_APP_BASE_API]: "",
@@ -55,6 +55,19 @@
   },
   configureWebpack: {
     name: name,
+    module: {
+      rules: [
+        {
+          test: /\.worker\.js$/,
+          use: {
+            loader: "worker-loader",
+            options: {
+              inline: "fallback",
+            },
+          },
+        },
+      ],
+    },
     resolve: {
       alias: {
         "@": resolve("src"),

--
Gitblit v1.9.3