From 6d56bf4daf08c4c7c6d193d98ed0b547dc473451 Mon Sep 17 00:00:00 2001
From: renmingwang <renmingwang@hnkhzn.com>
Date: 星期三, 25 三月 2026 16:59:14 +0800
Subject: [PATCH] 添加历史任务删除,大屏布局修改

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs                   |   42 +
 项目代码/WMS/WIDESEA_WMSClient/.vs/VSWorkspaceState.json                                    |    6 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITask_HtyService.cs                 |   14 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskHtyService.cs               |    9 
 项目代码/大屏/src/store/modules/setting.js                                                    |   40 +
 项目代码/WMS/WIDESEA_WMSClient/package-lock.json                                            |  896 ++++++++++++++++++++++
 项目代码/WMS/WIDESEA_WMSServer/.vs/slnx.sqlite                                              |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs        |    4 
 项目代码/WMS/WIDESEA_WMSClient/.vs/slnx.sqlite                                              |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/Task_HtyController.cs |   22 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskHtyService.cs                 |   44 +
 项目代码/大屏/src/api/api.js                                                                  |    3 
 项目代码/大屏/src/views/indexs/sc01-task-info.vue                                             |    4 
 项目代码/大屏/src/views/setting.vue                                                           |   40 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEAWCS_Tasks/WIDESEAWMS_Tasks.csproj                     |   14 
 项目代码/大屏/src/views/indexs/inventory-stats.vue                                            |    2 
 项目代码/WMS/WIDESEA_WMSClient/config/buttons.js                                            |    7 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_HomeService/HomeService.cs                           |   60 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task_HtyJob.cs                              |   37 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                       |   90 +-
 项目代码/大屏/src/views/indexs/sc02-location-status.vue                                       |   32 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ToMes.cs                       |  168 ++++
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.wsuo                              |    0 
 项目代码/WMS/WIDESEA_WMSClient/.vs/WIDESEA_WMSClient/v17/DocumentLayout.json                |  129 +++
 .vs/VSWorkspaceState.json                                                               |    7 
 项目代码/WMS/WIDESEA_WMSClient/.vs/WIDESEA_WMSClient/v17/.wsuo                              |    0 
 /dev/null                                                                               |  237 ------
 项目代码/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js                               |    2 
 项目代码/大屏/src/views/indexs/sc02-task-info.vue                                             |    2 
 项目代码/大屏/src/views/indexs/index.vue                                                      |   64 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs                    |  137 ++-
 项目代码/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task_hty.js                           |  138 ++-
 项目代码/大屏/src/views/indexs/sc01-location-status.vue                                       |   32 
 33 files changed, 1,812 insertions(+), 470 deletions(-)

diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json
index 02e164b..45b405e 100644
--- a/.vs/VSWorkspaceState.json
+++ b/.vs/VSWorkspaceState.json
@@ -1,7 +1,10 @@
 {
   "ExpandedNodes": [
-    ""
+    "",
+    "\\\u9879\u76EE\u4EE3\u7801",
+    "\\\u9879\u76EE\u4EE3\u7801\\WMS",
+    "\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer"
   ],
-  "SelectedNode": "\\WIDESEA_WMSServer.sln (椤圭洰浠g爜澶囦唤\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer.sln)",
+  "SelectedNode": "\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer.sln",
   "PreviewInSolutionExplorer": false
 }
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/.trae/documents/\344\277\256\345\244\215\350\267\257\347\224\261\345\214\271\351\205\215\351\227\256\351\242\230.md" "b/\351\241\271\347\233\256\344\273\243\347\240\201/.trae/documents/\344\277\256\345\244\215\350\267\257\347\224\261\345\214\271\351\205\215\351\227\256\351\242\230.md"
deleted file mode 100644
index ae47a98..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/.trae/documents/\344\277\256\345\244\215\350\267\257\347\224\261\345\214\271\351\205\215\351\227\256\351\242\230.md"
+++ /dev/null
@@ -1,108 +0,0 @@
-## 闂鍒嗘瀽
-
-1. **鏃ユ湡鏃堕棿瀛楁璁剧疆闂**锛氬湪 `ViewGrid/methods.js` 涓紝鎵�鏈夋棩鏈熷拰鏃ユ湡鏃堕棿绫诲瀷鐨勬煡璇㈠瓧娈甸兘琚己鍒惰缃负 `range = true`锛屾剰鍛崇潃瀹冧滑蹇呴』鏄寖鍥存煡璇�
-
-2. **鏌ヨ鍙傛暟澶勭悊閫昏緫闂**锛氬湪 `getSearchParameters` 鏂规硶涓紝瀵逛簬鏃ユ湡鏃堕棿绫诲瀷鐨勫鐞嗗瓨鍦ㄩ棶棰橈細
-   - 浠g爜鏈熸湜鏃ユ湡鏃堕棿鍊兼槸涓�涓暟缁勶紝鍖呭惈寮�濮嬫椂闂村拰缁撴潫鏃堕棿
-   - 褰� `value` 鏄瓧绗︿覆鏃讹紝浠g爜鏃犳硶姝g‘澶勭悊
-   - 瀵艰嚧鏃ユ湡鏃堕棿鏌ヨ鍙傛暟鏃犳硶姝g‘鐢熸垚
-
-3. **鏌ヨ鏉′欢鏍煎紡闂**锛氱敓鎴愮殑鏌ヨ鏉′欢鏍煎紡鍙兘涓庡悗绔湡鏈涚殑鏍煎紡涓嶄竴鑷�
-
-## 瑙e喅鏂规
-
-1. **淇敼鏃ユ湡鏃堕棿瀛楁璁剧疆**锛�
-   - 绉婚櫎寮哄埗灏嗘墍鏈夋棩鏈熸椂闂村瓧娈佃缃负鑼冨洿鏌ヨ鐨勪唬鐮�
-   - 鍏佽鏍规嵁瀹為檯闇�姹傝缃崟涓棩鏈熸椂闂存煡璇㈡垨鑼冨洿鏌ヨ
-
-2. **浼樺寲鏌ヨ鍙傛暟澶勭悊閫昏緫**锛�
-   - 姝g‘澶勭悊鏃ユ湡鏃堕棿绫诲瀷鐨勫崟涓�煎拰鑼冨洿鍊�
-   - 纭繚鐢熸垚鐨勬煡璇㈡潯浠舵牸寮忔纭�
-   - 娣诲姞閫傚綋鐨勬棩蹇楄褰曪紝渚夸簬璋冭瘯
-
-3. **澧炲己閿欒澶勭悊**锛�
-   - 娣诲姞瀵瑰紓甯告儏鍐电殑澶勭悊
-   - 纭繚鏌ヨ鍔熻兘鍦ㄥ悇绉嶆儏鍐典笅閮借兘姝e父宸ヤ綔
-
-## 鍏蜂綋淇敼
-
-1. **淇敼 `ViewGrid/methods.js`**锛�
-   - 绉婚櫎鎴栦慨鏀� `initFormOptions` 鏂规硶涓己鍒惰缃� `range = true` 鐨勪唬鐮�
-   - 浼樺寲 `getSearchParameters` 鏂规硶涓殑鏃ユ湡鏃堕棿澶勭悊閫昏緫
-
-2. **淇敼寤鸿**锛�
-   - 淇濈暀 `range` 灞炴�х殑璁剧疆锛屼絾鍏佽閫氳繃閰嶇疆瑕嗙洊
-   - 澧炲己 `getSearchParameters` 鏂规硶锛屾纭鐞嗘棩鏈熸椂闂寸殑鍗曚釜鍊煎拰鑼冨洿鍊�
-   - 娣诲姞閫傚綋鐨勬棩蹇楄褰�
-
-3. **淇敼 `getSearchParameters` 鏂规硶**锛�
-   ```javascript
-   getSearchParameters() {
-     // 鑾峰彇鏌ヨ鍙傛暟
-     if (!this.fiexdSearchForm) {
-       this.searchBoxShow = false;
-     }
-
-     let query = { wheres: [] };
-     for (const key in this.searchFormFields) {
-       let value = this.searchFormFields[key];
-       if (this.emptyValue(value)) continue;
-
-       if (typeof value == 'number') {
-         value = value + '';
-       }
-       let displayType = this.getSearchItem(key);
-
-       // 澶勭悊鏃ユ湡鏃堕棿绫诲瀷
-       if (['date', 'datetime'].indexOf(displayType) != -1) {
-         if (Array.isArray(value)) {
-           // 鑼冨洿鏌ヨ
-           for (let index = 0; index < value.length; index++) {
-             if (!this.emptyValue(value[index])) {
-               query.wheres.push({
-                 name: key,
-                 value: (value[index] + '').trim(),
-                 displayType: index === 0 ? 'greaterorequal' : 'lessorequal'
-               });
-             }
-           }
-         } else {
-           // 鍗曚釜鍊兼煡璇�
-           query.wheres.push({
-             name: key,
-             value: (value + '').trim(),
-             displayType: 'equal'
-           });
-         }
-         continue;
-       }
-
-       // 澶勭悊鍏朵粬绫诲瀷
-       query.wheres.push({
-         name: key,
-         value: typeof value == 'string' ? (value + '').trim() : value.join(','),
-         displayType: displayType
-       });
-     }
-     return query;
-   }
-   ```
-
-4. **淇敼 `initFormOptions` 鏂规硶**锛�
-   ```javascript
-   initFormOptions(formOptions, keys, formFields, isEdit) {
-     // 鍒濆鍖栨煡璇€�佺紪杈戝璞$殑涓嬫媺妗嗘暟鎹簮銆佸浘鐗囦笂浼犻摼鎺ュ湴鍧�
-     // ... 鍏朵粬浠g爜 ...
-     
-     // 绉婚櫎鎴栦慨鏀瑰己鍒惰缃畆ange=true鐨勪唬鐮�
-     // this.searchFormOptions.forEach((item) => {
-     //   item.forEach((x) => {
-     //     if (x.type == 'date' || x.type == 'datetime') x.range = true;
-     //   });
-     // });
-     
-     // ... 鍏朵粬浠g爜 ...
-   }
-   ```
-
-杩欐牱淇敼鍚庯紝鏃ユ湡鏃堕棿鏌ヨ鍔熻兘搴旇鑳藉姝e父宸ヤ綔锛屾棤璁烘槸鍗曚釜鍊兼煡璇㈣繕鏄寖鍥存煡璇㈤兘鑳芥纭鐞嗐��
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskHtyService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskHtyService.cs"
index fad13fd..cf8d914 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskHtyService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskHtyService.cs"
@@ -43,5 +43,14 @@
         /// <param name="taskNum">浠诲姟鍙�</param>
         /// <returns>鍘嗗彶璁板綍鍒楄〃</returns>
         List<Dt_Task_Hty> GetHistoryByTaskNum(int taskNum);
+        
+        /// <summary>
+        /// 鍒犻櫎鎸囧畾鏃ユ湡涔嬪墠鐨勫巻鍙蹭换鍔℃暟鎹�
+        /// </summary>
+        /// <param name="keepMonths">淇濈暀鐨勬湀鏁帮紝榛樿涓�3涓湀锛堟湰鏈�+鍚庝袱涓湀锛�</param>
+        /// <returns>鍒犻櫎鐨勮褰曟暟</returns>
+        int DeleteOldTaskHistory(int keepMonths = 3);
+        
+        public void Task_Hty_Job();
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskHtyService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskHtyService.cs"
index 892e2c4..80f4848 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskHtyService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskHtyService.cs"
@@ -116,5 +116,47 @@
         {
             return BaseDal.QueryData(x => x.TaskNum == taskNum).OrderByDescending(x => x.CreateDate).ToList();
         }
+
+        /// <summary>
+        /// 鍒犻櫎鎸囧畾鏃ユ湡涔嬪墠鐨勫巻鍙蹭换鍔℃暟鎹�
+        /// </summary>
+        /// <param name="keepMonths">淇濈暀鐨勬湀鏁帮紝榛樿涓�3涓湀锛堟湰鏈�+鍚庝袱涓湀锛�</param>
+        /// <returns>鍒犻櫎鐨勮褰曟暟</returns>
+        public int DeleteOldTaskHistory(int keepMonths = 3)
+        {
+            try
+            {
+                // 璁$畻淇濈暀鏃ユ湡锛氬綋鍓嶆棩鏈熷噺鍘籯eepMonths涓湀
+                DateTime keepDate = DateTime.Now.AddMonths(-keepMonths);
+                
+                // 鍏堟煡璇㈠嚭瑕佸垹闄ょ殑鏁版嵁
+                List<Dt_Task_Hty> tasksToDelete = BaseDal.QueryData().Where(x => x.CreateDate < keepDate).ToList();
+                
+                // 濡傛灉娌℃湁瑕佸垹闄ょ殑鏁版嵁锛岀洿鎺ヨ繑鍥�0
+                if (tasksToDelete.Count == 0)
+                {
+                    return 0;
+                }
+                
+                // 鍒犻櫎鏌ヨ鍑虹殑鍘嗗彶璁板綍
+                bool result = BaseDal.DeleteData(tasksToDelete);
+                return result ? tasksToDelete.Count : 0;
+            }
+            catch (Exception ex)
+            {
+                // 璁板綍寮傚父鏃ュ織
+                //Console.WriteLine($"鍒犻櫎鍘嗗彶浠诲姟璁板綍澶辫触: {ex.Message}");
+                return 0;
+            }
+        }
+
+        /// <summary>
+        /// 瀹氭椂浠诲姟璋冪敤鐨勫巻鍙蹭换鍔″垹闄ゆ柟娉�
+        /// </summary>
+        public void Task_Hty_Job()
+        {
+            // 鍒犻櫎3涓湀涔嬪墠鐨勫巻鍙蹭换鍔℃暟鎹紝淇濈暀鏈湀鍜屽悗涓や釜鏈堢殑鏁版嵁
+            DeleteOldTaskHistory(3);
+        }
     }
-}
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 4e3383f..cb22d8e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -955,37 +955,71 @@
         /// <returns></returns>
         public WebResponseContent GetRoadwayTaskProgress(string roadway)
         {
-            WebResponseContent content = new WebResponseContent();
             try
             {
-                var tasks = BaseDal.QueryData(x => x.Roadway == roadway);
+                // 1. 鍏ュ弬鏍¢獙
+                if (string.IsNullOrWhiteSpace(roadway))
+                {
+                    return WebResponseContent.Instance.Error("宸烽亾缂栧彿涓嶈兘涓虹┖");
+                }
+                // 2. 涓�娆℃煡璇紝閬垮厤澶氭鏁版嵁搴�/鍐呭瓨閬嶅巻
+                List<Dt_Task> taskList = BaseDal.QueryData(x => x.Roadway == roadway).ToList();
+
+                int totalTasks = taskList.Count;
+                int inProgressTasks = 0;
+                int completedTasks = 0;
+                int cancelledTasks = 0;
+                int exceptionTasks = 0;
+
+                foreach (var task in taskList)
+                {
+                    switch ((TaskStatusEnum)task.TaskState)
+                    {
+                        case TaskStatusEnum.Finish:
+                            completedTasks++;
+                            break;
+                        case TaskStatusEnum.Cancel:
+                            cancelledTasks++;
+                            break;
+                        case TaskStatusEnum.Exception:
+                            exceptionTasks++;
+                            break;
+                        default:
+                            inProgressTasks++;
+                            break;
+                    }
+                }
+
+                var taskDetails = taskList.Select(t => new
+                {
+                    taskNum = t.TaskNum,
+                    taskType = t.TaskType,
+                    taskState = t.TaskState,
+                    taskStateName = GetTaskStateName(t.TaskState),
+                    createDate = t.CreateDate,
+                    modifyDate = t.ModifyDate,
+                    sourceAddress = t.SourceAddress,
+                    targetAddress = t.TargetAddress
+                }).ToList();
+
+                // 5. 缁熶竴杩斿洖缁撴灉
                 var progressInfo = new
                 {
                     roadway = roadway,
-                    totalTasks = tasks.Count,
-                    inProgressTasks = tasks.Count(t => t.TaskState < (int)TaskStatusEnum.Finish && t.TaskState != (int)TaskStatusEnum.Cancel && t.TaskState != (int)TaskStatusEnum.Exception),
-                    completedTasks = tasks.Count(t => t.TaskState == (int)TaskStatusEnum.Finish),
-                    cancelledTasks = tasks.Count(t => t.TaskState == (int)TaskStatusEnum.Cancel),
-                    exceptionTasks = tasks.Count(t => t.TaskState == (int)TaskStatusEnum.Exception),
-                    tasks = tasks.Select(t => new
-                    {
-                        taskNum = t.TaskNum,
-                        taskType = t.TaskType,
-                        taskState = t.TaskState,
-                        taskStateName = GetTaskStateName(t.TaskState),
-                        createDate = t.CreateDate,
-                        modifyDate = t.ModifyDate,
-                        sourceAddress = t.SourceAddress,
-                        targetAddress = t.TargetAddress
-                    }).ToList()
+                    totalTasks,
+                    inProgressTasks,
+                    completedTasks,
+                    cancelledTasks,
+                    exceptionTasks,
+                    tasks = taskDetails
                 };
-                content = WebResponseContent.Instance.OK(data: progressInfo);
+
+                return WebResponseContent.Instance.OK(data: progressInfo);
             }
             catch (Exception ex)
             {
-                content = WebResponseContent.Instance.Error(ex.Message);
+                return WebResponseContent.Instance.Error($"鑾峰彇宸烽亾浠诲姟杩涘害澶辫触锛歿ex.Message}");
             }
-            return content;
         }
 
         /// <summary>
@@ -994,34 +1028,56 @@
         /// <returns></returns>
         public WebResponseContent GetAllRoadwayTaskProgress()
         {
-            WebResponseContent content = new WebResponseContent();
             try
             {
-                var allTasks = BaseDal.QueryData();
-                var roadways = allTasks.Select(t => t.Roadway).Distinct().ToList();
-                var progressList = new List<object>();
+                // 1. 涓�娆℃�ф煡璇㈡墍鏈夋暟鎹紙閬垮厤澶氭鏌ヨ锛�
+                List<Dt_Task> allTasks = BaseDal.QueryData().ToList();
 
-                foreach (var roadway in roadways)
-                {
-                    var roadwayTasks = allTasks.Where(t => t.Roadway == roadway).ToList();
-                    progressList.Add(new
+                // 2. 鎸夊贩閬撳垎缁� + 涓�娆¢亶鍘嗙粺璁℃墍鏈夌姸鎬侊紙鎬ц兘鎻愬崌宸ㄥぇ锛�
+                var progressList = allTasks
+                    .GroupBy(t => t.Roadway)
+                    .Select(group =>
                     {
-                        roadway = roadway,
-                        totalTasks = roadwayTasks.Count,
-                        inProgressTasks = roadwayTasks.Count(t => t.TaskState < (int)TaskStatusEnum.Finish && t.TaskState != (int)TaskStatusEnum.Cancel && t.TaskState != (int)TaskStatusEnum.Exception),
-                        completedTasks = roadwayTasks.Count(t => t.TaskState == (int)TaskStatusEnum.Finish),
-                        cancelledTasks = roadwayTasks.Count(t => t.TaskState == (int)TaskStatusEnum.Cancel),
-                        exceptionTasks = roadwayTasks.Count(t => t.TaskState == (int)TaskStatusEnum.Exception)
-                    });
-                }
+                        var roadway = group.Key;
+                        var tasks = group.ToList();
+                        var totalTasks = tasks.Count;
+                        int inProgress = 0, completed = 0, cancelled = 0, exception = 0;
 
-                content = WebResponseContent.Instance.OK(data: progressList);
+                        foreach (var task in tasks)
+                        {
+                            switch ((TaskStatusEnum)task.TaskState)
+                            {
+                                case TaskStatusEnum.Finish:
+                                    completed++;
+                                    break;
+                                case TaskStatusEnum.Cancel:
+                                    cancelled++;
+                                    break;
+                                case TaskStatusEnum.Exception:
+                                    exception++;
+                                    break;
+                                default:
+                                    inProgress++;
+                                    break;
+                            }
+                        }
+                        return new
+                        {
+                            roadway = roadway,
+                            totalTasks = totalTasks,
+                            inProgressTasks = inProgress,
+                            completedTasks = completed,
+                            cancelledTasks = cancelled,
+                            exceptionTasks = exception
+                        };
+                    })
+                    .ToList();
+                return WebResponseContent.Instance.OK(data: progressList);
             }
             catch (Exception ex)
             {
-                content = WebResponseContent.Instance.Error(ex.Message);
+                return WebResponseContent.Instance.Error($"鑾峰彇宸烽亾浠诲姟杩涘害澶辫触锛歿ex.Message}");
             }
-            return content;
         }
 
         /// <summary>
@@ -1031,7 +1087,6 @@
         /// <returns></returns>
         private string GetTaskStateName(int taskState)
         {
-            // 鐩存帴鏍规嵁鐘舵�佸�艰繑鍥炵姸鎬佸悕绉�
             switch (taskState)
             {
                 case (int)TaskStatusEnum.New:
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task_HtyJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task_HtyJob.cs"
new file mode 100644
index 0000000..5e076b1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task_HtyJob.cs"
@@ -0,0 +1,37 @@
+using Quartz;
+using System;
+using System.Threading.Tasks;
+using WIDESEAWCS_ITaskInfoService;
+
+namespace WIDESEAWCS_Tasks
+{
+    /// <summary>
+    /// 浠诲姟鍘嗗彶鍒犻櫎
+    /// </summary>
+    [DisallowConcurrentExecution]
+    public class Task_HtyJob : IJob
+    {
+        private readonly ITaskHtyService _taskHtyService;
+        
+        public Task_HtyJob(ITaskHtyService taskHtyService)
+        {
+            _taskHtyService = taskHtyService;
+        }
+
+        public Task Execute(IJobExecutionContext context)
+        {
+            try
+            {
+                // 鍒犻櫎3涓湀涔嬪墠鐨勬墍鏈夊巻鍙蹭换鍔℃暟鎹紝淇濈暀鏈湀鍜屽悗涓や釜鏈堢殑鏁版嵁
+                //int deletedCount = _taskHtyService.DeleteOldTaskHistory(3);
+                //Console.WriteLine($"{DateTime.Now}: 鎴愬姛鍒犻櫎{deletedCount}鏉″巻鍙蹭换鍔¤褰�");
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine($"{DateTime.Now}: {nameof(Task_HtyJob)}鍒犻櫎鍘嗗彶浠诲姟璁板綍澶辫触: {ex.Message}");
+            }
+
+            return Task.CompletedTask;
+        }
+    }
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/VSWorkspaceState.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/VSWorkspaceState.json"
new file mode 100644
index 0000000..6b61141
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/VSWorkspaceState.json"
@@ -0,0 +1,6 @@
+{
+  "ExpandedNodes": [
+    ""
+  ],
+  "PreviewInSolutionExplorer": false
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/WIDESEA_WMSClient/v17/.wsuo" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/WIDESEA_WMSClient/v17/.wsuo"
new file mode 100644
index 0000000..640724e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/WIDESEA_WMSClient/v17/.wsuo"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/WIDESEA_WMSClient/v17/DocumentLayout.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/WIDESEA_WMSClient/v17/DocumentLayout.json"
new file mode 100644
index 0000000..3f41e69
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/WIDESEA_WMSClient/v17/DocumentLayout.json"
@@ -0,0 +1,129 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "D:\\ShenYangLiku\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSClient\\",
+  "Documents": [],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": -1,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:130:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:128:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}"
+            }
+          ]
+        },
+        {
+          "DockedWidth": 422,
+          "SelectedChildIndex": -1,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:47:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:32:0:{d212f56b-c48a-434c-a121-1c5d80b59b9f}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:33:0:{d212f56b-c48a-434c-a121-1c5d80b59b9f}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:68:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:70:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:79:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:81:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:83:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:85:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:87:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:90:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:95:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:104:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:124:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:125:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:131:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:132:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:133:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            }
+          ]
+        },
+        {
+          "DockedWidth": 602,
+          "SelectedChildIndex": -1,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{34e76e81-ee4a-11d0-ae2e-00a0c90fffc3}"
+            }
+          ]
+        },
+        {
+          "DockedWidth": 1237,
+          "SelectedChildIndex": -1,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{d78612c7-9962-4b83-95d9-268046dad23a}"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/slnx.sqlite" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/slnx.sqlite"
new file mode 100644
index 0000000..7590fb8
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.vs/slnx.sqlite"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/config/buttons.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/config/buttons.js"
index aae5347..ffb0cd9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/config/buttons.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/config/buttons.js"
@@ -122,6 +122,13 @@
         onClick: function() {}
     },
     {
+        name: "鍒犻櫎鍘嗗彶浠诲姟淇℃伅",
+        icon: '',
+        class: '',
+        value: 'DeleteOldTaskHistory',
+        onClick: function() {}
+    },
+    {
         name: "浠� 鍔� 鍙� 娑�",
         icon: 'el-icon-delete',
         class: '',
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/package-lock.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/package-lock.json"
index 67a3a17..c7e4e2f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/package-lock.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/package-lock.json"
@@ -3654,6 +3654,16 @@
         "acorn-walk": "^6.0.1"
       }
     },
+    "node_modules/acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true,
+      "peer": true,
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
     "node_modules/acorn-walk": {
       "version": "6.2.0",
       "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
@@ -4100,6 +4110,16 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/astral-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz",
+      "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/async": {
       "version": "3.2.6",
       "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
@@ -4466,6 +4486,16 @@
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
+      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "file-uri-to-path": "1.0.0"
       }
     },
     "node_modules/bluebird": {
@@ -7472,6 +7502,19 @@
         "buffer-indexof": "^1.0.0"
       }
     },
+    "node_modules/doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
     "node_modules/dom-converter": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
@@ -8028,6 +8071,62 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/eslint": {
+      "version": "6.8.0",
+      "resolved": "https://registry.npmmirror.com/eslint/-/eslint-6.8.0.tgz",
+      "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
+      "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "ajv": "^6.10.0",
+        "chalk": "^2.1.0",
+        "cross-spawn": "^6.0.5",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "eslint-scope": "^5.0.0",
+        "eslint-utils": "^1.4.3",
+        "eslint-visitor-keys": "^1.1.0",
+        "espree": "^6.1.2",
+        "esquery": "^1.0.1",
+        "esutils": "^2.0.2",
+        "file-entry-cache": "^5.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob-parent": "^5.0.0",
+        "globals": "^12.1.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "inquirer": "^7.0.0",
+        "is-glob": "^4.0.0",
+        "js-yaml": "^3.13.1",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.3.0",
+        "lodash": "^4.17.14",
+        "minimatch": "^3.0.4",
+        "mkdirp": "^0.5.1",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.8.3",
+        "progress": "^2.0.0",
+        "regexpp": "^2.0.1",
+        "semver": "^6.1.2",
+        "strip-ansi": "^5.2.0",
+        "strip-json-comments": "^3.0.1",
+        "table": "^5.2.3",
+        "text-table": "^0.2.0",
+        "v8-compile-cache": "^2.0.3"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
     "node_modules/eslint-loader": {
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz",
@@ -8072,6 +8171,33 @@
         "node": ">=4.0.0"
       }
     },
+    "node_modules/eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/eslint-utils": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz",
+      "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/eslint-visitor-keys": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
@@ -8079,6 +8205,74 @@
       "dev": true,
       "engines": {
         "node": ">=4"
+      }
+    },
+    "node_modules/eslint/node_modules/import-fresh": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.1.tgz",
+      "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint/node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/espree": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz",
+      "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "acorn": "^7.1.1",
+        "acorn-jsx": "^5.2.0",
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/espree/node_modules/acorn": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
       }
     },
     "node_modules/esprima": {
@@ -8092,6 +8286,29 @@
       },
       "engines": {
         "node": ">=4"
+      }
+    },
+    "node_modules/esquery": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.7.0.tgz",
+      "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/esquery/node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4.0"
       }
     },
     "node_modules/esrecurse": {
@@ -8610,6 +8827,19 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/file-entry-cache": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+      "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "flat-cache": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/file-loader": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz",
@@ -8651,6 +8881,13 @@
       "engines": {
         "node": ">=4.0.0"
       }
+    },
+    "node_modules/file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+      "dev": true,
+      "optional": true
     },
     "node_modules/filesize": {
       "version": "3.6.1",
@@ -8772,6 +9009,35 @@
         "flat": "cli.js"
       }
     },
+    "node_modules/flat-cache": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz",
+      "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "flatted": "^2.0.0",
+        "rimraf": "2.6.3",
+        "write": "1.0.3"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/flat-cache/node_modules/rimraf": {
+      "version": "2.6.3",
+      "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz",
+      "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+      "deprecated": "Rimraf versions prior to v4 are no longer supported",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
     "node_modules/flat/node_modules/is-buffer": {
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
@@ -8794,6 +9060,13 @@
       "engines": {
         "node": ">=4"
       }
+    },
+    "node_modules/flatted": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz",
+      "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+      "dev": true,
+      "peer": true
     },
     "node_modules/flush-write-stream": {
       "version": "1.1.1",
@@ -8997,6 +9270,13 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/functional-red-black-tree": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+      "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+      "dev": true,
+      "peer": true
+    },
     "node_modules/functions-have-names": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
@@ -9155,7 +9435,6 @@
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
       "dev": true,
-      "optional": true,
       "dependencies": {
         "is-glob": "^4.0.1"
       },
@@ -9168,6 +9447,32 @@
       "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
       "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==",
       "dev": true
+    },
+    "node_modules/globals": {
+      "version": "12.4.0",
+      "resolved": "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz",
+      "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "type-fest": "^0.8.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/globals/node_modules/type-fest": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz",
+      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
     },
     "node_modules/globalthis": {
       "version": "1.0.4",
@@ -11221,6 +11526,13 @@
       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
       "dev": true
     },
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true,
+      "peer": true
+    },
     "node_modules/json-stringify-safe": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
@@ -12788,6 +13100,13 @@
         "node": ">=6.0.0"
       }
     },
+    "node_modules/nan": {
+      "version": "2.25.0",
+      "resolved": "https://registry.npmmirror.com/nan/-/nan-2.25.0.tgz",
+      "integrity": "sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==",
+      "dev": true,
+      "optional": true
+    },
     "node_modules/nanoid": {
       "version": "3.3.11",
       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
@@ -12826,6 +13145,13 @@
       "engines": {
         "node": ">=0.10.0"
       }
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true,
+      "peer": true
     },
     "node_modules/needle": {
       "version": "2.9.1",
@@ -13569,6 +13895,29 @@
       "dev": true,
       "dependencies": {
         "no-case": "^2.2.0"
+      }
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parent-module/node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
       }
     },
     "node_modules/parse-asn1": {
@@ -16156,6 +16505,16 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/regexpp": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz",
+      "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.5.0"
+      }
+    },
     "node_modules/regexpu-core": {
       "version": "6.4.0",
       "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz",
@@ -17342,6 +17701,31 @@
         "node": ">=6"
       }
     },
+    "node_modules/slice-ansi": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz",
+      "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.0",
+        "astral-regex": "^1.0.0",
+        "is-fullwidth-code-point": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/snapdragon": {
       "version": "0.8.2",
       "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@@ -17550,6 +17934,12 @@
       "engines": {
         "node": ">=0.10.0"
       }
+    },
+    "node_modules/sortablejs": {
+      "version": "1.15.7",
+      "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.7.tgz",
+      "integrity": "sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A==",
+      "peer": true
     },
     "node_modules/source-list-map": {
       "version": "2.0.1",
@@ -17998,6 +18388,19 @@
         "node": ">=4"
       }
     },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/stylehacks": {
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
@@ -18220,6 +18623,67 @@
       "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
       "dev": true
     },
+    "node_modules/table": {
+      "version": "5.4.6",
+      "resolved": "https://registry.npmmirror.com/table/-/table-5.4.6.tgz",
+      "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ajv": "^6.10.2",
+        "lodash": "^4.17.14",
+        "slice-ansi": "^2.1.0",
+        "string-width": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/table/node_modules/emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/table/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/table/node_modules/string-width": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/table/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/tapable": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
@@ -18394,6 +18858,13 @@
       "engines": {
         "node": ">=0.10.0"
       }
+    },
+    "node_modules/text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true,
+      "peer": true
     },
     "node_modules/thenify": {
       "version": "3.3.1",
@@ -19333,6 +19804,13 @@
       "bin": {
         "uuid": "bin/uuid"
       }
+    },
+    "node_modules/v8-compile-cache": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
+      "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==",
+      "dev": true,
+      "peer": true
     },
     "node_modules/validate-npm-package-license": {
       "version": "3.0.4",
@@ -20698,6 +21176,19 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
       "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+    },
+    "node_modules/write": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/write/-/write-1.0.3.tgz",
+      "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "mkdirp": "^0.5.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
     },
     "node_modules/ws": {
       "version": "7.5.3",
@@ -23656,6 +24147,14 @@
         "acorn-walk": "^6.0.1"
       }
     },
+    "acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {}
+    },
     "acorn-walk": {
       "version": "6.2.0",
       "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
@@ -23998,6 +24497,13 @@
       "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
       "dev": true
     },
+    "astral-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz",
+      "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+      "dev": true,
+      "peer": true
+    },
     "async": {
       "version": "3.2.6",
       "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
@@ -24264,6 +24770,16 @@
       "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
       "dev": true,
       "optional": true
+    },
+    "bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
+      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "file-uri-to-path": "1.0.0"
+      }
     },
     "bluebird": {
       "version": "3.7.2",
@@ -26604,6 +27120,16 @@
         "buffer-indexof": "^1.0.0"
       }
     },
+    "doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "esutils": "^2.0.2"
+      }
+    },
     "dom-converter": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
@@ -27059,6 +27585,82 @@
         }
       }
     },
+    "eslint": {
+      "version": "6.8.0",
+      "resolved": "https://registry.npmmirror.com/eslint/-/eslint-6.8.0.tgz",
+      "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "ajv": "^6.10.0",
+        "chalk": "^2.1.0",
+        "cross-spawn": "^6.0.5",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "eslint-scope": "^5.0.0",
+        "eslint-utils": "^1.4.3",
+        "eslint-visitor-keys": "^1.1.0",
+        "espree": "^6.1.2",
+        "esquery": "^1.0.1",
+        "esutils": "^2.0.2",
+        "file-entry-cache": "^5.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob-parent": "^5.0.0",
+        "globals": "^12.1.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "inquirer": "^7.0.0",
+        "is-glob": "^4.0.0",
+        "js-yaml": "^3.13.1",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.3.0",
+        "lodash": "^4.17.14",
+        "minimatch": "^3.0.4",
+        "mkdirp": "^0.5.1",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.8.3",
+        "progress": "^2.0.0",
+        "regexpp": "^2.0.1",
+        "semver": "^6.1.2",
+        "strip-ansi": "^5.2.0",
+        "strip-json-comments": "^3.0.1",
+        "table": "^5.2.3",
+        "text-table": "^0.2.0",
+        "v8-compile-cache": "^2.0.3"
+      },
+      "dependencies": {
+        "import-fresh": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.1.tgz",
+          "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+          "dev": true,
+          "peer": true,
+          "requires": {
+            "parent-module": "^1.0.0",
+            "resolve-from": "^4.0.0"
+          }
+        },
+        "resolve-from": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+          "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+          "dev": true,
+          "peer": true
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "peer": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
     "eslint-loader": {
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz",
@@ -27094,17 +27696,78 @@
         }
       }
     },
+    "eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "eslint-utils": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz",
+      "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "eslint-visitor-keys": "^1.1.0"
+      }
+    },
     "eslint-visitor-keys": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
       "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
       "dev": true
     },
+    "espree": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz",
+      "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "acorn": "^7.1.1",
+        "acorn-jsx": "^5.2.0",
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "7.4.1",
+          "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+          "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+          "dev": true,
+          "peer": true
+        }
+      }
+    },
     "esprima": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
       "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
       "dev": true
+    },
+    "esquery": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.7.0.tgz",
+      "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "estraverse": "^5.1.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true,
+          "peer": true
+        }
+      }
     },
     "esrecurse": {
       "version": "4.3.0",
@@ -27521,6 +28184,16 @@
         "escape-string-regexp": "^1.0.5"
       }
     },
+    "file-entry-cache": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+      "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "flat-cache": "^2.0.1"
+      }
+    },
     "file-loader": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz",
@@ -27552,6 +28225,13 @@
           }
         }
       }
+    },
+    "file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+      "dev": true,
+      "optional": true
     },
     "filesize": {
       "version": "3.6.1",
@@ -27657,6 +28337,37 @@
           "dev": true
         }
       }
+    },
+    "flat-cache": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz",
+      "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "flatted": "^2.0.0",
+        "rimraf": "2.6.3",
+        "write": "1.0.3"
+      },
+      "dependencies": {
+        "rimraf": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz",
+          "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+          "dev": true,
+          "peer": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "flatted": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz",
+      "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+      "dev": true,
+      "peer": true
     },
     "flush-write-stream": {
       "version": "1.1.1",
@@ -27802,6 +28513,13 @@
         "is-callable": "^1.2.7"
       }
     },
+    "functional-red-black-tree": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+      "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+      "dev": true,
+      "peer": true
+    },
     "functions-have-names": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
@@ -27917,7 +28635,6 @@
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
       "dev": true,
-      "optional": true,
       "requires": {
         "is-glob": "^4.0.1"
       }
@@ -27927,6 +28644,25 @@
       "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
       "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==",
       "dev": true
+    },
+    "globals": {
+      "version": "12.4.0",
+      "resolved": "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz",
+      "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "type-fest": "^0.8.1"
+      },
+      "dependencies": {
+        "type-fest": {
+          "version": "0.8.1",
+          "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz",
+          "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+          "dev": true,
+          "peer": true
+        }
+      }
     },
     "globalthis": {
       "version": "1.0.4",
@@ -29439,6 +30175,13 @@
       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
       "dev": true
     },
+    "json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true,
+      "peer": true
+    },
     "json-stringify-safe": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
@@ -30705,6 +31448,13 @@
         "rimraf": "^2.6.1"
       }
     },
+    "nan": {
+      "version": "2.25.0",
+      "resolved": "https://registry.npmmirror.com/nan/-/nan-2.25.0.tgz",
+      "integrity": "sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==",
+      "dev": true,
+      "optional": true
+    },
     "nanoid": {
       "version": "3.3.11",
       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
@@ -30728,6 +31478,13 @@
         "snapdragon": "^0.8.1",
         "to-regex": "^3.0.1"
       }
+    },
+    "natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true,
+      "peer": true
     },
     "needle": {
       "version": "2.9.1",
@@ -31314,6 +32071,25 @@
       "dev": true,
       "requires": {
         "no-case": "^2.2.0"
+      }
+    },
+    "parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "callsites": "^3.0.0"
+      },
+      "dependencies": {
+        "callsites": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+          "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+          "dev": true,
+          "peer": true
+        }
       }
     },
     "parse-asn1": {
@@ -33303,6 +34079,13 @@
         "set-function-name": "^2.0.2"
       }
     },
+    "regexpp": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz",
+      "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+      "dev": true,
+      "peer": true
+    },
     "regexpu-core": {
       "version": "6.4.0",
       "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz",
@@ -34176,6 +34959,27 @@
       "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
       "dev": true
     },
+    "slice-ansi": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz",
+      "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "ansi-styles": "^3.2.0",
+        "astral-regex": "^1.0.0",
+        "is-fullwidth-code-point": "^2.0.0"
+      },
+      "dependencies": {
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+          "dev": true,
+          "peer": true
+        }
+      }
+    },
     "snapdragon": {
       "version": "0.8.2",
       "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@@ -34354,6 +35158,12 @@
           "dev": true
         }
       }
+    },
+    "sortablejs": {
+      "version": "1.15.7",
+      "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.7.tgz",
+      "integrity": "sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A==",
+      "peer": true
     },
     "source-list-map": {
       "version": "2.0.1",
@@ -34723,6 +35533,13 @@
       "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
       "dev": true
     },
+    "strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
+      "peer": true
+    },
     "stylehacks": {
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
@@ -34895,6 +35712,57 @@
       "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
       "dev": true
     },
+    "table": {
+      "version": "5.4.6",
+      "resolved": "https://registry.npmmirror.com/table/-/table-5.4.6.tgz",
+      "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "ajv": "^6.10.2",
+        "lodash": "^4.17.14",
+        "slice-ansi": "^2.1.0",
+        "string-width": "^3.0.0"
+      },
+      "dependencies": {
+        "emoji-regex": {
+          "version": "7.0.3",
+          "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+          "dev": true,
+          "peer": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+          "dev": true,
+          "peer": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "peer": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "peer": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
     "tapable": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
@@ -35025,6 +35893,13 @@
           "dev": true
         }
       }
+    },
+    "text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true,
+      "peer": true
     },
     "thenify": {
       "version": "3.3.1",
@@ -35747,6 +36622,13 @@
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
       "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
       "dev": true
+    },
+    "v8-compile-cache": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
+      "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==",
+      "dev": true,
+      "peer": true
     },
     "validate-npm-package-license": {
       "version": "3.0.4",
@@ -36829,6 +37711,16 @@
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
       "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
     },
+    "write": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/write/-/write-1.0.3.tgz",
+      "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "mkdirp": "^0.5.1"
+      }
+    },
     "ws": {
       "version": "7.5.3",
       "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js"
index a2e1f79..bed2931 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js"
@@ -76,7 +76,7 @@
                         //     PalletCode: param
                         // }
                         this.http
-                            .get(`api/Task/WCSTask?task=${task}`)
+                            .get("api/Task/WCSTask?task=${task}")
                             .then((x) => {
                                 if (x.status) {
                                     this.$Message.success('浠诲姟鎵嬪姩涓嬪彂鎴愬姛.');
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task_hty.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task_hty.js"
index 24e1d94..1ec48ea 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task_hty.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task_hty.js"
@@ -1,58 +1,88 @@
-
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
-
 let extension = {
-    components: {
-      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
-      gridHeader: '',
-      gridBody: '',
-      gridFooter: '',
-      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
-      modelHeader: '',
-      modelBody: '',
-      modelFooter: ''
-    },
-    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
-    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
-    methods: {
-       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
-      onInit() {  
-      },
-      onInited() {
-        //妗嗘灦鍒濆鍖栭厤缃悗
-        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
-        //this.detailOptions.columns.forEach(column=>{ });
-      },
-      searchBefore(param) {
-        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
-        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
-        return true;
-      },
-      searchAfter(result) {
-        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
-        return true;
-      },
-      addBefore(formData) {
-        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
-        return true;
-      },
-      updateBefore(formData) {
-        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
-        return true;
-      },
-      rowClick({ row, column, event }) {
-        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
-        this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
-      },
-      modelOpenAfter(row) {
-        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
-        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
-        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
-        //(3)this.editFormFields.瀛楁='xxx';
-        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
-        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+     //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {  
+      // 鍘熸湁鎸夐挳閫昏緫锛歍askHandCancel
+      let TaskHandCancelBtn = this.buttons.find(x => x.value == 'TaskHandCancel');
+      if (TaskHandCancelBtn) {
+          TaskHandCancelBtn.onClick = function() {
+              this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+          }
       }
+
+      // ========== 鏂板锛氬垹闄ゆ棫鍘嗗彶鏁版嵁鎸夐挳閫昏緫锛堟棤闇�閫夋嫨鏁版嵁锛� ==========
+      let DeleteOldTaskHistoryBtn = this.buttons.find(x => x.value == 'DeleteOldTaskHistory');
+      if (DeleteOldTaskHistoryBtn) {
+          DeleteOldTaskHistoryBtn.onClick = function() {
+              // 绉婚櫎閫夋嫨鏁版嵁鏍¢獙锛岀洿鎺ュ脊鍑虹‘璁ゅ脊绐楋紙鍖归厤浣犵殑寮圭獥椋庢牸锛�
+              this.$confirm(`鏄惁纭畾鍒犻櫎3涓湀鍓嶇殑鎵�鏈夊巻鍙蹭换鍔℃暟鎹紵姝ゆ搷浣滀笉鍙仮澶嶏紒`, "鎻愮ず", {
+                  confirmButtonText: "纭", // 鍜屼綘鐨勬墜鍔ㄥ彂閫佹寜閽枃瀛椾竴鑷�
+                  cancelButtonText: "鍙栨秷",
+                  showClose: true,
+                  type: "warning"
+              }).then(() => {
+                  this.http
+                      .get(`api/Task_Hty/DeleteOldHistory`)
+                      .then((x) => {
+                          if (x.status) {
+                              this.$Message.success('鍘嗗彶鏁版嵁鍒犻櫎鎴愬姛.');
+                              this.refresh(); 
+                          } else {
+                              return this.$error(x.message);
+                          }
+                      });
+              })
+          }
+      }
+
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
     }
-  };
-  export default extension;
-  
\ No newline at end of file
+  }
+};
+export default extension;
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.wsuo" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.wsuo"
index d69b94c..d2c0dbd 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.wsuo"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.wsuo"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/slnx.sqlite" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/slnx.sqlite"
index 25a9394..6333f13 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/slnx.sqlite"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/slnx.sqlite"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEAWCS_Tasks/WIDESEAWMS_Tasks.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEAWCS_Tasks/WIDESEAWMS_Tasks.csproj"
new file mode 100644
index 0000000..6d77aae
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEAWCS_Tasks/WIDESEAWMS_Tasks.csproj"
@@ -0,0 +1,14 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_ITaskInfoService\WIDESEA_ITaskInfoService.csproj" />
+    <ProjectReference Include="..\WIDESEA_TaskInfoService\WIDESEA_TaskInfoService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_HomeService/HomeService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_HomeService/HomeService.cs"
index b2607b7..9de290f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_HomeService/HomeService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_HomeService/HomeService.cs"
@@ -26,29 +26,29 @@
         /// <returns></returns>
         public WebResponseContent GetDt_TaskHty()
         {
-            var response = new WebResponseContent();
+            WebResponseContent response = new WebResponseContent();
             try
             {
                 // 鑾峰彇褰撳墠鏃ユ湡鏃堕棿
-                var now = DateTime.Now;
+                DateTime now = DateTime.Now;
 
                 // 鑾峰彇浠婃棩鏃ユ湡鑼冨洿
-                var todayStart = now.Date;
-                var todayEnd = now.Date.AddDays(1);
+                DateTime todayStart = now.Date;
+                DateTime todayEnd = now.Date.AddDays(1);
 
                 // 鑾峰彇鏈懆鏃ユ湡鑼冨洿
                 // 璁$畻鏈懆涓�鐨勬棩鏈燂細濡傛灉浠婂ぉ鏄懆鏃�(0)锛屽噺鍘�6澶╋紱鍚﹀垯鍑忓幓褰撳墠鏄熸湡鍑犲噺1澶�
-                var daysToSubtract = (int)now.DayOfWeek == 0 ? 6 : (int)now.DayOfWeek - 1;
-                var weekStart = now.Date.AddDays(-daysToSubtract);
-                var weekEnd = weekStart.AddDays(7);
+                int daysToSubtract = (int)now.DayOfWeek == 0 ? 6 : (int)now.DayOfWeek - 1;
+                DateTime weekStart = now.Date.AddDays(-daysToSubtract);
+                DateTime weekEnd = weekStart.AddDays(7);
 
                 // 鑾峰彇鏈湀鏃ユ湡鑼冨洿
-                var monthStart = new DateTime(now.Year, now.Month, 1);
-                var monthEnd = monthStart.AddMonths(1);
+                DateTime monthStart = new DateTime(now.Year, now.Month, 1);
+                DateTime monthEnd = monthStart.AddMonths(1);
 
                 // 鑾峰彇鎵�鏈夊簱瀛樻暟鎹紝鐢ㄤ簬鍚庣画缁熻
-                var allStockData = Repository.Db.Queryable<Dt_StockInfo>().ToList();
-                var allTask_HtyData = Repository.Db.Queryable<Dt_Task_Hty>().ToList();
+                List<Dt_StockInfo> allStockData = Repository.Db.Queryable<Dt_StockInfo>().ToList();
+                List<Dt_Task_Hty> allTask_HtyData = BaseDal.QueryData();
                 // 璋冭瘯淇℃伅锛氭墦鍗版棩鏈熻寖鍥村拰搴撳瓨鏁版嵁鎬绘暟
                 var debugInfo = new
                 {
@@ -62,40 +62,40 @@
                 };
 
                 
-                var toDt_task_hty_in = allTask_HtyData.Count(it => it.TaskStatus == (int)TaskInStatusEnum.InFinish);//鑾峰彇鍑哄叆搴撳瓨鍘嗗彶浠诲姟璁板綍
-                var toDt_task_hty_on = allTask_HtyData.Count(it => it.TaskStatus == (int)TaskOutStatusEnum.OutFinish);
+                int toDt_task_hty_in = allTask_HtyData.Count(it => it.TaskStatus == (int)TaskInStatusEnum.InFinish);//鑾峰彇鍑哄叆搴撳瓨鍘嗗彶浠诲姟璁板綍
+                int toDt_task_hty_on = allTask_HtyData.Count(it => it.TaskStatus == (int)TaskOutStatusEnum.OutFinish);
                 // 浠婃棩鍏ュ簱鏁伴噺锛氫粖澶╁垱寤轰笖搴撳瓨鐘舵�佷负鍏ュ簱瀹屾垚鐨勮褰曟暟閲�
-                var todayInbound = allTask_HtyData.Count(it =>
+                int todayInbound = allTask_HtyData.Count(it =>
                     it.CreateDate >= todayStart && it.CreateDate < todayEnd &&
                     it.TaskStatus == (int)TaskInStatusEnum.InFinish);
 
                 // 浠婃棩鍑哄簱鏁伴噺锛氫粖澶╁垱寤轰笖搴撳瓨鐘舵�佷负鍑哄簱瀹屾垚鐨勮褰曟暟閲�
-                var todayOutbound = allTask_HtyData.Count(it =>
+                int todayOutbound = allTask_HtyData.Count(it =>
                     it.CreateDate >= todayStart && it.CreateDate < todayEnd &&
                     it.TaskStatus == (int)TaskOutStatusEnum.OutFinish);
 
                 // 鏈懆鍏ュ簱鏁伴噺锛氭湰鍛ㄥ垱寤轰笖搴撳瓨鐘舵�佷负鍏ュ簱瀹屾垚鐨勮褰曟暟閲�
-                var weekInbound = allTask_HtyData.Count(it =>
+                int weekInbound = allTask_HtyData.Count(it =>
                     it.CreateDate >= weekStart && it.CreateDate < weekEnd &&
                     it.TaskStatus == (int)TaskInStatusEnum.InFinish);
 
                 // 鏈懆鍑哄簱鏁伴噺锛氭湰鍛ㄥ垱寤轰笖浠诲姟鐘舵�佷负鍑哄簱瀹屾垚鐨勮褰曟暟閲�
-                var weekOutbound = allTask_HtyData.Count(it =>
+                int weekOutbound = allTask_HtyData.Count(it =>
                     it.CreateDate >= weekStart && it.CreateDate < weekEnd &&
                     it.TaskStatus == (int)TaskOutStatusEnum.OutFinish);
 
                 // 鏈湀鍏ュ簱鏁伴噺锛氭湰鏈堝垱寤轰笖搴撳瓨鐘舵�佷负鍏ュ簱瀹屾垚鐨勮褰曟暟閲�
-                var monthInbound = allTask_HtyData.Count(it =>
+                int monthInbound = allTask_HtyData.Count(it =>
                     it.CreateDate >= monthStart && it.CreateDate < monthEnd &&
                     it.TaskStatus == (int)TaskInStatusEnum.InFinish);
 
                 // 鏈湀鍑哄簱鏁伴噺锛氭湰鏈堝垱寤轰笖浠诲姟鐘舵�佷负鍑哄簱瀹屾垚鐨勮褰曟暟閲�
-                var monthOutbound = allTask_HtyData.Count(it =>
+                int monthOutbound = allTask_HtyData.Count(it =>
                     it.CreateDate >= monthStart && it.CreateDate < monthEnd &&
                     it.TaskStatus == (int)TaskOutStatusEnum.OutFinish);
 
                 // 寰呭鐞嗚鍗曟暟閲忥細鐢变簬鍙湁Dt_StockInfo琛紝鏆傛椂杩斿洖0
-                var pendingOrders = 0;
+                int pendingOrders = 0;
 
                 // 搴撳瓨鐘舵�佸垎甯冿細缁熻涓嶅悓搴撳瓨鐘舵�佺殑鏁伴噺
                 var stockStatusDistribution = allTask_HtyData
@@ -114,22 +114,22 @@
 
                 // 璐т綅鍒╃敤鐜囷細浠庢暟鎹簱鑾峰彇璐т綅淇℃伅
                 // 鑾峰彇鎵�鏈夎揣浣�
-                var allLocations = Repository.Db.Queryable<Dt_LocationInfo>().ToList();
-                var totalLocations = allLocations.Count;
+                List<Dt_LocationInfo> allLocations = Repository.Db.Queryable<Dt_LocationInfo>().ToList();
+                int totalLocations = allLocations.Count;
 
                 // 缁熻涓嶅悓鐘舵�佺殑璐т綅鏁�
-                var freeLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.Free);
-                var inStockLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.InStock);
-                var inStockLockLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.InStockLock);
-                var lockLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.Lock);
-                var freeLockLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.FreeLock);
-                var palletLockLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.PalletLock);
+                int freeLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.Free);
+                int inStockLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.InStock);
+                int inStockLockLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.InStockLock);
+                int lockLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.Lock);
+                int freeLockLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.FreeLock);
+                int palletLockLocations = allLocations.Count(it => it.LocationStatus == (int)LocationStatusEnum.PalletLock);
 
                 // 璁$畻宸蹭娇鐢ㄥ拰鏈娇鐢ㄧ殑璐т綅鏁�
                 // 宸蹭娇鐢細鏈夎揣銆佹湁璐ч攣瀹�
-                var usedLocations = inStockLocations + inStockLockLocations;
+                int usedLocations = inStockLocations + inStockLockLocations;
                 // 鏈娇鐢細绌洪棽銆佺┖闂查攣瀹�
-                var unusedLocations = freeLocations + freeLockLocations;
+                int unusedLocations = freeLocations + freeLockLocations;
 
                 // 搴撳瓨鍙樺寲瓒嬪娍锛氭ā鎷熸渶杩�7澶╃殑鏁版嵁
                 // 瀹為檯搴旀牴鎹暟鎹簱涓殑鍘嗗彶璁板綍鐢熸垚
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITask_HtyService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITask_HtyService.cs"
index 8bd7243..1b61ead 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITask_HtyService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITask_HtyService.cs"
@@ -1,4 +1,4 @@
-锘縰sing SqlSugar;
+using SqlSugar;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics.CodeAnalysis;
@@ -15,4 +15,16 @@
 
 public interface ITask_HtyService : IService<Dt_Task_Hty>
 {
+    /// <summary>
+    /// 鍒犻櫎鎸囧畾鏃ユ湡涔嬪墠鐨勫巻鍙蹭换鍔℃暟鎹�
+    /// </summary>
+    /// <param name="keepMonths">淇濈暀鐨勬湀鏁帮紝榛樿涓�3涓湀锛堟湰鏈�+鍚庝袱涓湀锛�</param>
+    /// <returns>鍒犻櫎鐨勮褰曟暟</returns>
+    int DeleteOldTaskHistory(int keepMonths = 3);
+
+    /// <summary>
+    /// 杈撳嚭30澶╁墠鏁版嵁
+    /// </summary>
+    /// <param name="task"></param>
+    public void Task_Hty_Job();
 }
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
index 15a8884..4e186ad 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
@@ -227,7 +227,7 @@
 
                         location.LocationStatus = (int)LocationStatusEnum.InStockLock;
 
-                        //鐢熸垚绉诲姩浠诲姟
+                        //鐢熸垚浠诲姟
                         Dt_Task dt_Task = new()
                         {
                             PalletCode = palletInfo.palletCode,
@@ -271,7 +271,7 @@
                         else
                         {
                             _unitOfWorkManage.RollbackTran();  //鍥炴粴浜嬪姟
-                            return MESresponse($"涓嬪彂鍑哄簱澶辫触锛屽師鍥狅細{respon.Message}锛�", false);
+                            return MESresponse($"涓嬪彂鍏ュ簱澶辫触锛屽師鍥狅細{respon.Message}锛�", false);
                         }
 
                     }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index b167a6d..ecad134 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -80,7 +80,7 @@
             _roadwayInforepository = roadwayInforepository;
             _dt_ApiInfoService = dt_ApiInfoService;
             _locationStatusChangeRecordService = locationStatusChangeRecordService;
-            _stationMangerService=stationMangerService;
+            _stationMangerService = stationMangerService;
         }
         public int GetTaskNum(string sequenceName)
         {
@@ -127,7 +127,7 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
-        
+
 
 
         /// <summary>
@@ -158,11 +158,11 @@
 
                 //鑾峰彇鍒版繁搴撲綅缂栧彿
                 Dt_LocationInfo DeepLocation = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == Locatask);
-                if(DeepLocation == null) return content.Error($"鏈壘鍒拌璐т綅淇℃伅,璐т綅缂栧彿:{Locatask}");
+                if (DeepLocation == null) return content.Error($"鏈壘鍒拌璐т綅淇℃伅,璐т綅缂栧彿:{Locatask}");
 
                 //杩涜鑾峰彇娴呭簱浣嶇紪鍙�
                 int locrow = DeepLocation.Row == 1 ? 2 : 3;
-                Dt_LocationInfo ShallowLocation = _basicService.LocationInfoService.Repository.QueryFirst(x =>x.Row== locrow && x.Layer== DeepLocation.Layer && x.Column== DeepLocation.Column && x.RoadwayNo== DeepLocation.RoadwayNo);
+                Dt_LocationInfo ShallowLocation = _basicService.LocationInfoService.Repository.QueryFirst(x => x.Row == locrow && x.Layer == DeepLocation.Layer && x.Column == DeepLocation.Column && x.RoadwayNo == DeepLocation.RoadwayNo);
                 if (ShallowLocation == null) return content.Error($"鏈壘鍒拌揣浣嶇紪鍙�:{Locatask}鐨勬祬璐т綅");
 
                 if (ShallowLocation.LocationStatus == (int)LocationStatusEnum.Free)
@@ -294,7 +294,7 @@
                 return webResponse.Error($"绉诲簱浠诲姟瀹屾垚澶辫触锛屼换鍔d锛歿task.TaskNum}");
                 throw;
             }
-            
+
         }
 
         /// <summary>
@@ -371,9 +371,9 @@
 
 
                 stockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
-                
+
                 int beforeStatus = locationInfo.LocationStatus;
-                locationInfo.LocationStatus =(int)LocationStatusEnum.Free;
+                locationInfo.LocationStatus = (int)LocationStatusEnum.Free;
                 task.TaskStatus = TaskOutStatusEnum.OutFinish.ObjToInt();
 
                 _unitOfWorkManage.BeginTran();
@@ -401,7 +401,7 @@
                 return webResponse.Error($"鍑哄簱浠诲姟瀹屾垚澶辫触锛屼换鍔d锛歿task.TaskNum},閿欒鍘熷洜锛歿ex.Message}");
                 throw;
             }
-            
+
         }
 
 
@@ -449,24 +449,24 @@
                 string WCSReceiveTaskAPI = ConfigsAPIInfo.ApiAddress + ConfigsAPIInfo.ApiName;
                 if (WCSReceiveTaskAPI == null)
                 {
-                   return webResponse.Error($"鍑哄簱澶辫触锛屾湭閰嶇疆MES绉诲簱瀹屾垚鍙嶉鎺ュ彛");
+                    return webResponse.Error($"鍑哄簱澶辫触锛屾湭閰嶇疆MES绉诲簱瀹屾垚鍙嶉鎺ュ彛");
                 }
                 var respon = HttpHelper.Post(WCSReceiveTaskAPI, JsonConvert.SerializeObject(transferRequest));
                 if (respon != null)
                 {
-                   var response = JsonConvert.DeserializeObject<ApiResponse<object>>(respon);
-                   if (response.Success)
-                   {
-                       return webResponse.OK();
-                   }
-                   else
-                   {
-                       return webResponse.Error($"璋冨彇鎺ュ彛澶辫触锛屽弽棣堝弬鏁板師鍥狅細{response.Message}");
-                   }
+                    var response = JsonConvert.DeserializeObject<ApiResponse<object>>(respon);
+                    if (response.Success)
+                    {
+                        return webResponse.OK();
+                    }
+                    else
+                    {
+                        return webResponse.Error($"璋冨彇鎺ュ彛澶辫触锛屽弽棣堝弬鏁板師鍥狅細{response.Message}");
+                    }
                 }
                 else
                 {
-                   return webResponse.Error($"璋冨彇鎺ュ彛澶辫触锛屽弽棣堝弬鏁颁负绌�");
+                    return webResponse.Error($"璋冨彇鎺ュ彛澶辫触锛屽弽棣堝弬鏁颁负绌�");
                 }
 
                 return webResponse.OK();
@@ -500,16 +500,16 @@
                     locationCode = dt_Task.TargetAddress;
                 }
                 TaskNotification transferRequest = new TaskNotification()
-                    {
-                        //涓氬姟id锛屼换鍔d鍚庣画杩涜鏇存敼
-                        taskId = dt_Task.MEStaskId,   //浠诲姟id
-                        businessId = dt_Task.MESbusinessId,   //涓氬姟id
-                        palletCode = dt_Task.PalletCode,
-                        subPalletCode = dt_Task.MESsubPalletCode,//瀛愭墭鐩樼紪鐮�
-                        locationCode = locationCode,
-                        errorStatus = "NORMAL",
-                        errorInfo = "",
-                    };
+                {
+                    //涓氬姟id锛屼换鍔d鍚庣画杩涜鏇存敼
+                    taskId = dt_Task.MEStaskId,   //浠诲姟id
+                    businessId = dt_Task.MESbusinessId,   //涓氬姟id
+                    palletCode = dt_Task.PalletCode,
+                    subPalletCode = dt_Task.MESsubPalletCode,//瀛愭墭鐩樼紪鐮�
+                    locationCode = locationCode,
+                    errorStatus = "NORMAL",
+                    errorInfo = "",
+                };
 
                 //鑾峰彇鎺ュ彛杩涜璋冨彇
                 var ConfigsAPIInfo = _dt_ApiInfoService.GetConfigsByAPIInfo(CateGoryConst.CONFIG_MES_IPAddress, SysConfigConst.MESTaskFeedback);      //鑾峰彇鍒皐cs鍏ㄩ儴绫诲瀷鐨勬帴鍙�
@@ -518,12 +518,12 @@
                 {
                     return webResponse.Error($"浠诲姟鍙嶉MES澶辫触锛屾湭閰嶇疆MES浠诲姟瀹屾垚鍙嶉鎺ュ彛");
                 }
-                
+
                 // 娣诲姞璋冭瘯淇℃伅
                 string requestJson = JsonConvert.SerializeObject(transferRequest);
                 //Console.WriteLine($"MES鍙嶉鎺ュ彛URL: {WCSReceiveTaskAPI}");
                 //Console.WriteLine($"MES鍙嶉璇锋眰鏁版嵁: {requestJson}");
-                
+
                 // 浣跨敤淇鍚庣殑PostSync鏂规硶锛堝凡鍦≒ostSync涓缃粯璁よ姹傚ご锛�
                 var respon = HttpHelper.Post(WCSReceiveTaskAPI, requestJson);
                 if (respon != null)
@@ -550,7 +550,7 @@
             }
         }
 
-        public ApiResponse<object> MESresponse(string Message, bool Success,int  Code)
+        public ApiResponse<object> MESresponse(string Message, bool Success, int Code)
         {
             ApiResponse<object> apiResponse = new ApiResponse<object>();
             apiResponse.Message = Message;
@@ -570,7 +570,7 @@
             try
             {
                 // 鏌ユ壘浠诲姟
-                Dt_Task task = BaseDal.QueryFirst(x => x.PalletCode == palletTaskDTO && (x.TaskStatus == TaskOutStatusEnum.OutNew.ObjToInt()|| x.TaskStatus == TaskRelocationStatusEnum.RelocationNew.ObjToInt()|| x.TaskStatus == TaskInStatusEnum.Line_InExecuting.ObjToInt()));
+                Dt_Task task = BaseDal.QueryFirst(x => x.PalletCode == palletTaskDTO && (x.TaskStatus == TaskOutStatusEnum.OutNew.ObjToInt() || x.TaskStatus == TaskRelocationStatusEnum.RelocationNew.ObjToInt() || x.TaskStatus == TaskInStatusEnum.Line_InExecuting.ObjToInt()));
                 if (task == null)
                 {
                     return MESresponse($"鏈壘鍒拌揣浣嶄俊鎭�,鏉$爜锛歿palletTaskDTO}", false, 0);
@@ -607,7 +607,7 @@
                   .SetColumns(x => x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt())
                   .Where(x => x.PalletCode == task.PalletCode)
                   .ExecuteCommand();
-                    if (stockmsseg<=0)
+                    if (stockmsseg <= 0)
                     {
                         return MESresponse($"鏃犲簱瀛樹俊鎭�", false, 0);
                     }
@@ -634,7 +634,7 @@
                     stockmsseg = _stockRepository.DeleteData(stockInfo).ObjToInt();
                     taskmsseg = BaseDal.DeleteData(task);
                 }
-                BaseDal.DeleteAndMoveIntoHty(task,OperateTypeEnum.浜哄伐鍒犻櫎);
+                BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.浜哄伐鍒犻櫎);
                 //鑾峰彇鎺ュ彛杩涜璋冨彇
                 var ConfigsAPIInfo = _dt_ApiInfoService.GetConfigsByAPIInfo(CateGoryConst.CONFIG_WCS_IPAddress, SysConfigConst.WCSCancelinventory);      //鑾峰彇鍒皐cs鍏ㄩ儴绫诲瀷鐨勬帴鍙�
                 string WCSReceiveTaskAPI = ConfigsAPIInfo.ApiAddress + ConfigsAPIInfo.ApiName;
@@ -660,10 +660,10 @@
                     return MESresponse($"WCS璋冨彇鎺ュ彛澶辫触锛屽弽棣堝弬鏁板師鍥狅細{response.Message}", false, 0);
                 }
                 if (stockmsseg <= 0 && locationmsseg <= 0 && taskmsseg)
-                    {
+                {
                     _unitOfWorkManage.RollbackTran();
                     return MESresponse($"浠诲姟鍙栨秷澶辫触", false, 0);
-                    }
+                }
 
 
 
@@ -702,7 +702,7 @@
             catch (Exception ex)
             {
                 _unitOfWorkManage.RollbackTran();
-                return  MESresponse($"鍙栨秷浠诲姟澶辫触锛屽師鍥狅細{ex.Message}", false, 0);
+                return MESresponse($"鍙栨秷浠诲姟澶辫触锛屽師鍥狅細{ex.Message}", false, 0);
             }
         }
 
@@ -738,7 +738,7 @@
             int res = _locationInfoRepository.AddData(dt_LocationInfoList);
             if (res <= 0)
             {
-                return MESresponse($"鍒涘缓璐т綅澶辫触",false);
+                return MESresponse($"鍒涘缓璐т綅澶辫触", false);
             }
             return MESresponse($"", true);
         }
@@ -771,7 +771,7 @@
     .ExecuteCommand() > 0;
             if (!res)
             {
-                return MESresponse($"淇敼璐т綅澶辫触",false);
+                return MESresponse($"淇敼璐т綅澶辫触", false);
             }
             return MESresponse($"", true);
         }
@@ -788,7 +788,7 @@
             int res = _locationInfoRepository.Db.Deleteable<Dt_LocationInfo>().Where(x => locationCode.Contains(x.LocationCode)).ExecuteCommand();
             if (res <= 0)
             {
-                return MESresponse($"鍒犻櫎璐т綅澶辫触",false);
+                return MESresponse($"鍒犻櫎璐т綅澶辫触", false);
             }
             return MESresponse($"", true);
         }
@@ -812,7 +812,7 @@
 
             try
             {
-                Dt_StockInfo dt_StockInfo =  _stockRepository.QueryFirst(x => x.LocationCode.StartsWith("SC01") && x.StockStatus == 6);
+                Dt_StockInfo dt_StockInfo = _stockRepository.QueryFirst(x => x.LocationCode.StartsWith("SC01") && x.StockStatus == 6);
                 int result = GetLastPart(dt_StockInfo.LocationCode).ObjToInt(); // 杩斿洖 "C03"
 
                 List<Dt_Task> dt_s = new List<Dt_Task>();
@@ -896,7 +896,7 @@
             {
                 // 鏌ユ壘浠诲姟
                 Dt_Task task = BaseDal.QueryFirst(x => x.PalletCode == palletTaskDTO);
-                
+
                 if (task == null)
                 {
                     return webResponse.Error($"鏈壘鍒版墭鐩樼紪鐮佷负銆恵palletTaskDTO}銆戠殑浠诲姟淇℃伅");
@@ -939,7 +939,7 @@
                 //        if (locationmsseg1 == null) { webResponse.Error("鏈壘鍒拌揣浣嶄俊鎭�"); }
                 //        locationmsseg1.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
                 //        location1 = _locationInfoRepository.UpdateData(locationmsseg1);
-                        
+
                 //    }
                 //}
                 //else
@@ -1031,7 +1031,7 @@
         //鎵嬪姩涓嬪彂浠诲姟鍒癢CS
         public WebResponseContent WCSTask(int task)
         {
-           List<Dt_Task> AddtaskList =  BaseDal.QueryData(x=>x.TaskNum == task);
+            List<Dt_Task> AddtaskList = BaseDal.QueryData(x => x.TaskNum == task);
 
             if (!AddtaskList.Any())
             {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs"
index 73bd716..c88b31e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs"
@@ -10,4 +10,46 @@
     public Task_HtyService(IRepository<Dt_Task_Hty> BaseDal) : base(BaseDal)
     {
     }
+
+    /// <summary>
+    /// 鍒犻櫎鎸囧畾鏃ユ湡涔嬪墠鐨勫巻鍙蹭换鍔℃暟鎹�
+    /// </summary>
+    /// <param name="keepMonths">淇濈暀鐨勬湀鏁帮紝榛樿涓�3涓湀锛堟湰鏈�+鍚庝袱涓湀锛�</param>
+    /// <returns>鍒犻櫎鐨勮褰曟暟</returns>
+    public int DeleteOldTaskHistory(int keepMonths = 3)
+    {
+        try
+        {
+            // 璁$畻淇濈暀鏃ユ湡锛氬綋鍓嶆棩鏈熷噺鍘籯eepMonths涓湀
+            DateTime keepDate = DateTime.Now.AddMonths(-keepMonths);
+            
+            // 鍏堟煡璇㈠嚭瑕佸垹闄ょ殑鏁版嵁
+            List<Dt_Task_Hty> tasksToDelete = BaseDal.QueryData().Where(x => x.CreateDate < keepDate).ToList();
+            
+            // 濡傛灉娌℃湁瑕佸垹闄ょ殑鏁版嵁锛岀洿鎺ヨ繑鍥�0
+            if (tasksToDelete.Count == 0)
+            {
+                return 0;
+            }
+            
+            // 鍒犻櫎鏌ヨ鍑虹殑鍘嗗彶璁板綍
+            bool result = BaseDal.DeleteData(tasksToDelete);
+            return result ? tasksToDelete.Count : 0;
+        }
+        catch (Exception ex)
+        {
+            // 璁板綍寮傚父鏃ュ織
+            //Console.WriteLine($"鍒犻櫎鍘嗗彶浠诲姟璁板綍澶辫触: {ex.Message}");
+            return 0;
+        }
+    }
+
+    /// <summary>
+    /// 瀹氭椂浠诲姟璋冪敤鐨勫巻鍙蹭换鍔″垹闄ゆ柟娉�
+    /// </summary>
+    public void Task_Hty_Job()
+    {
+        // 鍒犻櫎3涓湀涔嬪墠鐨勫巻鍙蹭换鍔℃暟鎹紝淇濈暀鏈湀鍜屽悗涓や釜鏈堢殑鏁版嵁
+        DeleteOldTaskHistory(3);
+    }
 }
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/Task_HtyController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/Task_HtyController.cs"
index 16f12a7..43e29e9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/Task_HtyController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/Task_HtyController.cs"
@@ -1,4 +1,4 @@
-锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
 using WIDESEA_Core;
@@ -19,5 +19,25 @@
         public Task_HtyController(ITask_HtyService service) : base(service)
         {
         }
+
+        /// <summary>
+        /// 鍒犻櫎鏃х殑鍘嗗彶浠诲姟鏁版嵁
+        /// </summary>
+        /// <param name="keepMonths">淇濈暀鐨勬湀鏁帮紝榛樿涓�3涓湀锛堟湰鏈�+鍚庝袱涓湀锛�</param>
+        /// <returns>鍒犻櫎鐨勮褰曟暟</returns>
+        [HttpGet, Route("DeleteOldHistory")]
+        [AllowAnonymous]
+        public IActionResult DeleteOldHistory(int keepMonths = 3)
+        {
+            try
+            {
+                int result = Service.DeleteOldTaskHistory(keepMonths);
+                return Ok(new { Success = true, Message = "鍘嗗彶浠诲姟鍒犻櫎鎴愬姛", DeletedCount = result });
+            }
+            catch (Exception ex)
+            {
+                return Ok(new { Success = false, Message = "鍘嗗彶浠诲姟鍒犻櫎澶辫触: " + ex.Message });
+            }
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ToMes.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ToMes.cs"
new file mode 100644
index 0000000..bd20bf4
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ToMes.cs"
@@ -0,0 +1,168 @@
+using Autofac.Core;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Common.Log;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.ToMes;
+using WIDESEA_ITaskInfoService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+
+    /// <summary>
+    /// 涓婃父鎺ュ彛
+    /// </summary>
+    [Route("v1/pallet/rmsPalletTask")]
+    [ApiController]
+    public class ToMes : ApiBaseController<ITaskService, Dt_Task>
+    {
+        public ToMes(ITaskService service) : base(service)
+        {
+        }
+        /// <summary>
+        /// MES涓嬪彂鍑哄簱浠诲姟
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("sendExTask"), AllowAnonymous]
+        public ApiResponse<object> sendExTask([FromBody] InOutboundTaskReceived outbound)
+        {
+            ApiResponse<object> api = Service.sendExTask(outbound);
+            if (api.Success == false)
+            {
+                WriteLog.Write_Log("MES涓嬪彂浠诲姟", "MES涓嬪彂鍑哄簱浠诲姟", $"浠诲姟鐢熸垚澶辫触鍘熷洜{api.Message}", outbound);
+            }
+            else
+            {
+                WriteLog.Write_Log("MES涓嬪彂浠诲姟", "MES涓嬪彂鍑哄簱浠诲姟", $"浠诲姟鐢熸垚鎴愬姛", outbound);
+            }
+            return api;
+        }
+
+        /// <summary>
+        /// MES涓嬪彂鍏ュ簱浠诲姟
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("sendEnTask"), AllowAnonymous]
+        public ApiResponse<object> sendEnTask([FromBody] InOutboundTaskReceived outbound)
+        {
+            ApiResponse<object> api = Service.sendEnTask(outbound);
+            if (api.Success == false)
+            {
+                WriteLog.Write_Log("MES涓嬪彂浠诲姟", "MES涓嬪彂鍏ュ簱浠诲姟", $"浠诲姟鐢熸垚澶辫触鍘熷洜{api.Message}", outbound);
+
+            }
+            else
+            {
+                WriteLog.Write_Log("MES涓嬪彂浠诲姟", "MES涓嬪彂鍏ュ簱浠诲姟", $"浠诲姟鐢熸垚鎴愬姛", outbound);
+
+            }
+            return api;
+        }
+
+
+        /// <summary>
+        /// 鏂板缓璐т綅
+        /// </summary>
+        [HttpPost, HttpGet, Route("createLocation"), AllowAnonymous]
+        public ApiResponse<object> createLocation([FromBody] List<LocationInfoDto> locationInfo)
+        {
+            return Service.createLocation(locationInfo);
+        }
+
+        /// <summary>
+        /// 淇敼璐т綅
+        /// </summary>
+        [HttpPost, HttpGet, Route("updateLocation"), AllowAnonymous]
+        public ApiResponse<object> updateLocation([FromBody] LocationInfoDto locationInfo)
+        {
+            return Service.updateLocation(locationInfo);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎璐т綅
+        /// </summary>
+        [HttpPost, HttpGet, Route("deleteLocation"), AllowAnonymous]
+        public ApiResponse<object> deleteLocation([FromBody] List<string> locationCode)
+        {
+            return Service.deleteLocation(locationCode);
+        }
+
+        /// <summary>
+        /// MES涓嬪彂搴撲綅璋冩嫧浠诲姟
+        /// </summary>
+        /// <param name="allocationTask">搴撲綅璋冩嫧浠诲姟淇℃伅</param>
+        /// <returns></returns>
+        [HttpPost, Route("onHandMove"), AllowAnonymous]
+        public ApiResponse<object> sendAllocationTask([FromBody] AllocationTaskReceived allocationTask)
+        {
+            return Service.sendAllocationTask(allocationTask);
+        }
+
+
+
+
+
+
+
+        /// <summary>
+        /// 鎵樼洏浠诲姟鏁版嵁浼犺緭瀵硅薄
+        /// 鐢ㄤ簬鍐呴儴涓氬姟鏁版嵁浼犺緭
+        /// </summary>
+        public class PalletTaskDTO
+        {
+            /// <summary>
+            /// 涓氬姟ID
+            /// </summary>
+            public string BusinessId { get; set; }
+
+            /// <summary>
+            /// 浠诲姟ID
+            /// </summary>
+            public string TaskId { get; set; }
+
+            /// <summary>
+            /// 鎵樼洏缂栫爜
+            /// </summary>
+            public string PalletCode { get; set; }
+
+        }
+
+
+        /// <summary>
+        /// MES鍙栨秷浠诲姟鎺ュ彛
+        /// </summary>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <returns></returns>
+        [HttpPost, Route("cancelTask"), AllowAnonymous]
+        public ApiResponse<object> Cancelinventory([FromBody] PalletTaskDTO palletTaskDTO)
+        {
+            return Service.Cancelinventory(palletTaskDTO.PalletCode);
+        }
+
+        /// <summary>
+        /// MES鎵嬪姩浠诲姟瀹屾垚
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <returns></returns>
+        [HttpPost, Route("mockComplete"), AllowAnonymous]
+        public WebResponseContent ManualTaskCompleted([FromBody] PalletTaskDTO palletTaskDTO)
+        {
+            return Service.ManualTaskCompleted(palletTaskDTO.PalletCode);
+        }
+
+        /// <summary>
+        /// MES浠诲姟缁撴灉鍙嶉鎺ュ彛
+        /// </summary>
+        /// <param name="taskFeedback"></param>
+        /// <returns></returns>
+        [HttpPost, Route("resultReport"), AllowAnonymous]
+        public ApiResponse<object> TaskFeedback([FromBody] TaskNotification taskFeedback)
+        {
+            return Service.TaskFeedback(taskFeedback);
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/api/api.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/api/api.js"
index 70de31d..9e03176 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/api/api.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/api/api.js"
@@ -8,7 +8,8 @@
 import router from '@/router'
 
 let baseUrl = UtilVar.baseUrl
-// let wcsBaseUrl = 'http://10.6.100.16:9291'
+//鏈湴娴嬭瘯127,椤圭洰鐢熶骇10
+// let wcsBaseUrl = 'http://10.6.100.116:9291'
 // let wmsBaseUrl = 'http://10.6.100.116:9290'
 let wmsBaseUrl = 'http://127.0.0.1:9290'
 let wcsBaseUrl= 'http://127.0.0.1:9291'
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/store/modules/setting.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/store/modules/setting.js"
index ac0c871..18aa6ac 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/store/modules/setting.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/store/modules/setting.js"
@@ -12,6 +12,8 @@
         ssyjSwiper:true,//瀹炴椂棰勮杞挱
         isScale:true,//鏄惁杩涜鍏ㄥ眬閫傞厤
         fullscreen: false, // 娣诲姞锛氬叏灞忕姸鎬�
+        currentTask: 'sc02', // 褰撳墠浠诲姟锛歴c01/sc02
+        currentLocation: 'sc01', // 褰撳墠璐т綅鐘舵�侊細sc01/sc02
         defaultOption: {
             step: 4.4, // 鏁板�艰秺澶ч�熷害婊氬姩瓒婂揩
             hoverStop: true, // 鏄惁寮�鍚紶鏍囨偓鍋渟top
@@ -43,12 +45,48 @@
         updateSwiper(state, {val,type}) {
             state[type] = val
             
-            // 鍒涘缓瀹屾暣鐨勮缃璞★紝鍖呭惈鍏ㄥ睆鐘舵��
+            // 鍒涘缓瀹屾暣鐨勮缃璞★紝鍖呭惈鍏ㄥ睆鐘舵�佸拰鍒囨崲鐘舵��
             const settingData = {
                 sbtxSwiper: state.sbtxSwiper,
                 ssyjSwiper: state.ssyjSwiper,
                 isScale: state.isScale,
                 fullscreen: state.fullscreen || false, // 纭繚鍖呭惈鍏ㄥ睆鐘舵��
+                currentTask: state.currentTask,
+                currentLocation: state.currentLocation
+            }
+            
+            localStorage.setItem('settingData', JSON.stringify(settingData))
+        },
+        
+        // 鏇存柊褰撳墠浠诲姟
+        updateCurrentTask(state, val) {
+            state.currentTask = val;
+            
+            // 鍒涘缓瀹屾暣鐨勮缃璞★紝鍖呭惈鍏ㄥ睆鐘舵�佸拰鍒囨崲鐘舵��
+            const settingData = {
+                sbtxSwiper: state.sbtxSwiper,
+                ssyjSwiper: state.ssyjSwiper,
+                isScale: state.isScale,
+                fullscreen: state.fullscreen || false,
+                currentTask: state.currentTask,
+                currentLocation: state.currentLocation
+            }
+            
+            localStorage.setItem('settingData', JSON.stringify(settingData))
+        },
+        
+        // 鏇存柊褰撳墠璐т綅鐘舵��
+        updateCurrentLocation(state, val) {
+            state.currentLocation = val;
+            
+            // 鍒涘缓瀹屾暣鐨勮缃璞★紝鍖呭惈鍏ㄥ睆鐘舵�佸拰鍒囨崲鐘舵��
+            const settingData = {
+                sbtxSwiper: state.sbtxSwiper,
+                ssyjSwiper: state.ssyjSwiper,
+                isScale: state.isScale,
+                fullscreen: state.fullscreen || false,
+                currentTask: state.currentTask,
+                currentLocation: state.currentLocation
             }
             
             localStorage.setItem('settingData', JSON.stringify(settingData))
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/center-bottom.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/center-bottom.vue"
deleted file mode 100644
index 235fae5..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/center-bottom.vue"
+++ /dev/null
@@ -1,314 +0,0 @@
-<template>
-  <dv-scroll-board :config="config" style="width:100%;height:400px" />
-</template>
-
-<script>
-import axios from 'axios';
-
-export default {
-  name: 'TaskListScrollBoard',
-  components: {
-    // 濡傛灉缁勪欢宸插叏灞�娉ㄥ唽锛屽垯涓嶉渶瑕佸湪杩欓噷娉ㄥ唽
-  },
-  data() {
-    return {
-      taskList: [],
-      refreshInterval: null,
-      config: null
-    };
-  },
-  mounted() {
-    this.getTaskData();
-    this.startAutoRefresh();
-  },
-  beforeDestroy() {
-    this.stopAutoRefresh();
-  },
-  methods: {
-    // 鑾峰彇浠诲姟鏁版嵁
-    getTaskData() {
-      axios.get("http://127.0.0.1:8889/api/Dashboard/CurrentTasks")
-        .then((response) => {
-          console.log("浠诲姟鏁版嵁鍝嶅簲:", response);
-
-          if (response && Array.isArray(response)) {
-            // 涓嶇敤data,閫夋嫨鏈夋暟鎹�
-            const tasks = response;
-            // 杩囨护鎺夊紓甯哥姸鎬佺殑浠诲姟
-            this.taskList = tasks.filter(task => 
-              ![999, 298, 299, 198, 199].includes(task.taskStatus)
-            );
-            this.updateBoardData();
-          } else {
-            this.taskList = [];
-            this.updateBoardData();
-          }
-        })
-        .catch((error) => {
-          console.error("鑾峰彇浠诲姟鏁版嵁澶辫触:", error);
-          this.taskList = [];
-          this.updateBoardData();
-        });
-    },
-
-    // 鏇存柊婊氬姩琛ㄦ牸鏁版嵁
-    updateBoardData() {
-      let boardData = [];
-      if (this.taskList.length === 0) {
-        boardData = [['--', '--', '--', '--', '--', '鏆傛棤浠诲姟鏁版嵁']];
-        return;
-      }
-      boardData = this.taskList.map((task) => {
-        // 璁剧疆浠诲姟绫诲瀷棰滆壊
-        const taskType = this.getTaskType(task);
-        const typeColor = this.getTaskTypeColor(taskType);
-        const typeHtml = `<span style="color:${typeColor};font-weight:bold;font-size:18px">${taskType}</span>`;
-
-        // 璁剧疆鎵樼洏绫诲瀷
-        const palletType = this.getPalletTypeText(task);
-        const palletColor = this.getPalletTypeColor(task);
-        const palletHtml = `<span style="color:${palletColor};font-weight:bold;font-size:18px;padding:2px 6px;border-radius:3px;background:rgba(255,255,255,0.1)">${palletType}</span>`;
-
-        // 璁剧疆鐩殑鍦帮紙鍙樉绀哄悗8浣嶏級
-        let targetAddress = task.targetAddress || '--';
-        if (targetAddress.length > 8) {
-          targetAddress = targetAddress.slice(-6); // 鍙彇鍚�8浣�
-        }
-        const addressHtml = `<span style="color:#67e0e3;font-size:20px;font-weight:bold;font-family:monospace">${targetAddress}</span>`;
-
-        // 璁剧疆鐘舵��
-        const statusText = this.getStatusText(task);
-        const statusClass = this.getStatusClass(task);
-        const statusColor = this.getStatusColor(statusClass);
-        const statusHtml = `<span style="color:${statusColor};font-weight:bold;font-size:18px;padding:4px 8px;border-radius:4px;background:${this.getStatusBgColor(statusClass)}">${statusText}</span>`;
-
-        // 鏍煎紡鍖栨椂闂�
-        const timeText = this.formatDate(task.createDate);
-        
-        return [
-          `<span style="color:#37a2da;font-family:monospace;font-size:18px">${task.taskNum || '--'}</span>`,
-          typeHtml,
-          palletHtml,
-          addressHtml,
-          `<span style="color:#9fe6b8;font-size:18px">${timeText}</span>`,
-          statusHtml
-        ];
-      });
-      this.config = {
-        header: ['浠诲姟鍙�', '绫诲瀷', '鐗╂枡', '鐩殑鍦�', '鍒涘缓鏃堕棿', '鐘舵��'],
-        data: boardData,
-        index: false,
-        columnWidth: [110, 80, 130, 170, 140, 170], 
-        align: ['center', 'center', 'center', 'center', 'center', 'center'],
-        waitTime: 2000,
-        rowNum: 8,
-        headerBGC: 'rgba(0, 0, 0, 0.5)',
-        headerHeight: 55,
-        oddRowBGC: 'rgba(0, 0, 0, 0.3)',
-        evenRowBGC: 'rgba(0, 0, 0, 0.5)',
-        carousel: 'single',
-        // 娣诲姞瀛椾綋澶у皬璁剧疆
-        headerStyle: {
-          fontSize: 22,
-          fontWeight: 'bold'
-        },
-        rowStyle: {
-          fontSize: 20,
-          height: 50
-        }
-      };
-    },
-
-    // 鑾峰彇浠诲姟绫诲瀷棰滆壊
-    getTaskTypeColor(type) {
-      const colorMap = {
-        '鍏ュ簱': '#37a2da',
-        '鍑哄簱': '#32c5e9',
-        '绉诲簱': '#67e0e3',
-        '鏈煡': '#ffdb5c'
-      };
-      return colorMap[type] || '#ffdb5c';
-    },
-
-    // 鑾峰彇鎵樼洏绫诲瀷鏂囧瓧
-    getPalletTypeText(task) {
-      // 鏍规嵁 warehouseId 鍜� palletType 鍒ゆ柇
-      const warehouseId = task.warehouseId;
-      const palletType = task.palletType;
-      
-      if (warehouseId === 2) {
-        // warehouseId=2鏄垚鍝�
-        return '鎴愬搧';
-      } else if (warehouseId === 1) {
-        // warehouseId=1锛屾牴鎹畃alletType鍒ゆ柇
-        if (palletType === '1' || palletType === 1) {
-          return '甯冨嵎';
-        } else if (palletType === '2' || palletType === 2) {
-          return '鏉惧竷鍗�';
-        }
-      }
-      
-      return '鏈煡';
-    },
-
-    // 鑾峰彇鎵樼洏绫诲瀷棰滆壊
-    getPalletTypeColor(task) {
-      const warehouseId = task.warehouseId;
-      const palletType = task.palletType;
-      
-      if (warehouseId === 2) {
-        return '#ff9f7f'; // 鎴愬搧 - 姗欒壊
-      } else if (warehouseId === 1) {
-        if (palletType === '1' || palletType === 1) {
-          return '#9fe6b8'; // 甯冨嵎 - 缁胯壊
-        } else if (palletType === '2' || palletType === 2) {
-          return '#ffdb5c'; // 鏉惧竷鍗� - 榛勮壊
-        }
-      }
-      
-      return '#95a5a6'; // 鏈煡 - 鐏拌壊
-    },
-
-    // 鑾峰彇鐘舵�侀鑹�
-    getStatusColor(statusClass) {
-      const colorMap = {
-        'status-completed': '#ffffff', // 瀹屾垚 - 鐧借壊鏂囧瓧
-        'status-processing': '#ffffff', // 鎵ц涓� - 鐧借壊鏂囧瓧
-        'status-pending': '#ffffff',   // 寰呭鐞� - 鐧借壊鏂囧瓧
-        'status-cancelled': '#ffffff', // 鍙栨秷 - 鐧借壊鏂囧瓧
-        'status-error': '#ffffff',     // 閿欒 - 鐧借壊鏂囧瓧
-        'status-default': '#ffffff'    // 榛樿 - 鐧借壊鏂囧瓧
-      };
-      return colorMap[statusClass] || '#ffffff';
-    },
-
-    // 鑾峰彇鐘舵�佽儗鏅鑹�
-    getStatusBgColor(statusClass) {
-      const colorMap = {
-        'status-completed': 'rgba(46, 204, 113, 0.7)', // 瀹屾垚 - 缁胯壊
-        'status-processing': 'rgba(52, 152, 219, 0.7)', // 鎵ц涓� - 钃濊壊
-        'status-pending': 'rgba(243, 156, 18, 0.7)',   // 寰呭鐞� - 姗欒壊
-        'status-cancelled': 'rgba(149, 165, 166, 0.7)', // 鍙栨秷 - 鐏拌壊
-        'status-error': 'rgba(231, 76, 60, 0.7)',     // 閿欒 - 绾㈣壊
-        'status-default': 'rgba(127, 140, 141, 0.7)'    // 榛樿 - 娣辩伆鑹�
-      };
-      return colorMap[statusClass] || 'rgba(127, 140, 141, 0.7)';
-    },
-
-    // 鍚姩鑷姩鍒锋柊
-    startAutoRefresh() {
-      this.refreshInterval = setInterval(() => {
-        this.getTaskData();
-      }, 10000);
-    },
-
-    // 鍋滄鑷姩鍒锋柊
-    stopAutoRefresh() {
-      if (this.refreshInterval) {
-        clearInterval(this.refreshInterval);
-        this.refreshInterval = null;
-      }
-    },
-
-    // 鏍煎紡鍖栨棩鏈燂紙绠�鍖栫増锛�
-    formatDate(dateString) {
-      if (!dateString) return '--';
-      try {
-        const date = new Date(dateString);
-        return date.toLocaleTimeString('zh-CN', {
-          hour: '2-digit',
-          minute: '2-digit',
-          second: '2-digit',
-          hour12: false
-        });
-      } catch (e) {
-        return '--';
-      }
-    },
-
-    // 鑾峰彇浠诲姟绫诲瀷鏂囧瓧
-    getTaskType(task) {
-      const status = task.taskStatus;
-      
-      if (status >= 200 && status < 300) {
-        return '鍏ュ簱';
-      } else if (status >= 100 && status < 200) {
-        return '鍑哄簱';
-      } else if (status >= 300 && status < 400) {
-        return '绉诲簱';
-      }
-      
-      return '鏈煡';
-    },
-
-    // 鏍规嵁鐘舵�佸�艰幏鍙栫姸鎬佹枃瀛楁弿杩�
-    getStatusText(task) {
-      const status = task.taskStatus;
-      
-      if (status >= 200 && status < 300) {
-        const inStatusMap = {
-          200: '鏂板缓',
-          230: '杈撻�佺嚎',
-          235: '杈撻�佸畬鎴�',
-          240: '鍫嗗灈鏈�',
-          245: '鍫嗗灈瀹屾垚',
-          290: '瀹屾垚',
-          297: '鍙栨秷',
-          298: '杈撻�佸紓甯�',
-          299: '鍫嗗灈寮傚父'
-        };
-        return inStatusMap[status] || '鍏ュ簱';
-      } else if (status >= 100 && status < 200) {
-        const outStatusMap = {
-          100: '鏂板缓',
-          110: '鍫嗗灈鏈�',
-          115: '鍫嗗灈瀹屾垚',
-          120: '杈撻�佺嚎',
-          125: '杈撻�佸畬鎴�',
-          190: '瀹屾垚',
-          197: '鍙栨秷',
-          198: '杈撻�佸紓甯�',
-          199: '鍫嗗灈寮傚父'
-        };
-        return outStatusMap[status] || '鍑哄簱';
-      } else if (status >= 300 && status < 400) {
-        const relocationStatusMap = {
-          300: '鏂板缓',
-          315: '绉诲簱涓�',
-          310: '瀹屾垚',
-          330: '寮傚父'
-        };
-        return relocationStatusMap[status] || '绉诲簱';
-      }
-      
-      return '鏈煡';
-    },
-
-    // 鑾峰彇鐘舵�佸搴旂殑CSS绫�
-    getStatusClass(task) {
-      const status = task.taskStatus;
-      
-      if ([298, 299, 198, 199, 330].includes(status)) {
-        return 'status-error';
-      } else if ([290, 190, 310].includes(status)) {
-        return 'status-completed';
-      } else if ([297, 197].includes(status)) {
-        return 'status-cancelled';
-      } else if ([230, 235, 240, 245, 110, 115, 120, 125, 315].includes(status)) {
-        return 'status-processing';
-      } else if ([200, 100, 300].includes(status)) {
-        return 'status-pending';
-      }
-      
-      return 'status-default';
-    }
-  }
-};
-</script>
-
-<style scoped>
-/* 纭繚婊氬姩琛ㄦ牸姝g‘鏄剧ず */
-dv-scroll-board {
-  font-family: 'Microsoft YaHei', Arial, sans-serif;
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/center-map.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/center-map.vue"
deleted file mode 100644
index fc973a0..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/center-map.vue"
+++ /dev/null
@@ -1,454 +0,0 @@
-<template>
-  <ItemWrap class="contetn_left-bottom contetn_lr-item" title="鎬讳綋缁熻">
-    <div class="dashboard-container">
-      <div class="stats-stack">
-        <!-- 姹囨�� -->
-        <div class="stats-card summary">
-          <div class="stats-content">
-            <div class="stats-grid">
-              <!-- 绗竴琛岋細姹囨�荤粺璁� -->
-              <div class="stat-item">
-                <div class="stat-label">鎬诲叆搴�</div>
-                <div class="stat-number">
-                  <dv-digital-flop :config="getConfig('totalInbound', rawStats.summary.totalInbound)" />
-                </div>
-              </div>
-              <div class="stat-item">
-                <div class="stat-label">鎬诲嚭搴�</div>
-                <div class="stat-number">
-                  <dv-digital-flop :config="getConfig('totalOutbound', rawStats.summary.totalOutbound)" />
-                </div>
-              </div>
-              <div class="stat-item">
-                <div class="stat-label">鎬诲緟瀹屾垚</div>
-                <div class="stat-number" :class="{
-                  'warning': totalPendingTasks > 0,
-                  'danger': totalPendingTasks > 20
-                }">
-                  <dv-digital-flop
-                    :config="getConfig('totalPendingTasks', totalPendingTasks, totalPendingTasks > 20 ? 'danger' : totalPendingTasks > 0 ? 'warning' : 'normal')" />
-                </div>
-              </div>
-              <div class="stat-item">
-                <div class="stat-label">鎬诲紓甯�</div>
-                <div class="stat-number" :class="{
-                  'warning': totalExceptionTasks > 0,
-                  'danger': totalExceptionTasks > 10
-                }">
-                  <dv-digital-flop
-                    :config="getConfig('totalExceptionTasks', totalExceptionTasks, totalExceptionTasks > 10 ? 'danger' : totalExceptionTasks > 0 ? 'warning' : 'normal')" />
-                </div>
-              </div>
-
-              <!-- 绗簩琛岋細鍘熸枡浠� -->
-              <div class="stat-item">
-                <div class="stat-label">鍘熸枡浠撲粖鏃ュ叆搴�</div>
-                <div class="stat-number">
-                  <dv-digital-flop :config="getConfig('rawTodayInbound', rawStats.rawMaterialWarehouse.todayInbound)" />
-                </div>
-              </div>
-              <div class="stat-item">
-                <div class="stat-label">鍘熸枡浠撲粖鏃ュ嚭搴�</div>
-                <div class="stat-number">
-                  <dv-digital-flop
-                    :config="getConfig('rawTodayOutbound', rawStats.rawMaterialWarehouse.todayOutbound)" />
-                </div>
-              </div>
-              <div class="stat-item">
-                <div class="stat-label">鍘熸枡浠撳緟瀹屾垚</div>
-                <div class="stat-number" :class="{
-                  'warning': rawMaterialPendingTasks > 0,
-                  'danger': rawMaterialPendingTasks > 10
-                }">
-                  <dv-digital-flop
-                    :config="getConfig('rawPendingTasks', rawMaterialPendingTasks, rawMaterialPendingTasks > 10 ? 'danger' : rawMaterialPendingTasks > 0 ? 'warning' : 'normal')" />
-                </div>
-              </div>
-              <div class="stat-item">
-                <div class="stat-label">鍘熸枡浠撳紓甯�</div>
-                <div class="stat-number" :class="{
-                  'warning': rawMaterialExceptionTasks > 0,
-                  'danger': rawMaterialExceptionTasks > 5
-                }">
-                  <dv-digital-flop
-                    :config="getConfig('rawExceptionTasks', rawMaterialExceptionTasks, rawMaterialExceptionTasks > 5 ? 'danger' : rawMaterialExceptionTasks > 0 ? 'warning' : 'normal')" />
-                </div>
-              </div>
-
-              <!-- 绗笁琛岋細鎴愬搧浠� -->
-              <div class="stat-item">
-                <div class="stat-label">鎴愬搧浠撲粖鏃ュ叆搴�</div>
-                <div class="stat-number">
-                  <dv-digital-flop
-                    :config="getConfig('finishedTodayInbound', rawStats.finishedProductWarehouse.todayInbound)" />
-                </div>
-              </div>
-              <div class="stat-item">
-                <div class="stat-label">鎴愬搧浠撲粖鏃ュ嚭搴�</div>
-                <div class="stat-number">
-                  <dv-digital-flop
-                    :config="getConfig('finishedTodayOutbound', rawStats.finishedProductWarehouse.todayOutbound)" />
-                </div>
-              </div>
-              <div class="stat-item">
-                <div class="stat-label">鎴愬搧浠撳緟瀹屾垚</div>
-                <div class="stat-number" :class="{
-                  'warning': finishedProductPendingTasks > 0,
-                  'danger': finishedProductPendingTasks > 10
-                }">
-                  <dv-digital-flop
-                    :config="getConfig('finishedPendingTasks', finishedProductPendingTasks, finishedProductPendingTasks > 10 ? 'danger' : finishedProductPendingTasks > 0 ? 'warning' : 'normal')" />
-                </div>
-              </div>
-              <div class="stat-item">
-                <div class="stat-label">鎴愬搧浠撳紓甯�</div>
-                <div class="stat-number" :class="{
-                  'warning': finishedProductExceptionTasks > 0,
-                  'danger': finishedProductExceptionTasks > 5
-                }">
-                  <dv-digital-flop
-                    :config="getConfig('finishedExceptionTasks', finishedProductExceptionTasks, finishedProductExceptionTasks > 5 ? 'danger' : finishedProductExceptionTasks > 0 ? 'warning' : 'normal')" />
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-  </ItemWrap>
-</template>
-
-<script>
-import axios from 'axios';
-
-export default {
-  name: 'WarehouseDashboard',
-  data() {
-    return {
-      rawStats: {
-        rawMaterialWarehouse: {
-          totalTasks: 0,
-          todayInbound: 0,
-          todayOutbound: 0
-        },
-        finishedProductWarehouse: {
-          totalTasks: 0,
-          todayInbound: 0,
-          todayOutbound: 0
-        },
-        summary: {
-          totalAllTasks: 0,
-          totalInbound: 0,
-          totalOutbound: 0
-        }
-      },
-      taskList: [],
-      refreshInterval: null,
-      statsRefreshInterval: null,
-      // 鏁板瓧缈荤墝鍣ㄩ厤缃紦瀛�
-      flopConfigs: new Map(),
-      // 榛樿棰滆壊閰嶇疆
-      colors: {
-        normal: '#ffffff',
-        warning: '#f39c12',
-        danger: '#e74c3c',
-        success: '#2ecc71',
-        primary: '#3498db'
-      }
-    };
-  },
-  computed: {
-    rawMaterialPendingTasks() {
-      return this.taskList.filter(task => task.warehouseId === 1).length;
-    },
-    rawMaterialExceptionTasks() {
-      return this.taskList.filter(task =>
-        task.warehouseId === 1 && task.taskStatus === 999 ||
-        task.taskStatus === 298 || task.taskStatus === 299 ||
-        task.taskStatus === 198 || task.taskStatus === 199
-      ).length;
-    },
-    finishedProductPendingTasks() {
-      return this.taskList.filter(task => task.warehouseId === 2).length;
-    },
-    finishedProductExceptionTasks() {
-      return this.taskList.filter(task =>
-        task.warehouseId === 2 && task.taskStatus === 999 ||
-        task.taskStatus === 198 || task.taskStatus === 199 ||
-        task.taskStatus === 298 || task.taskStatus === 299
-      ).length;
-    },
-    totalPendingTasks() {
-      return this.taskList.length;
-    },
-    totalExceptionTasks() {
-      return this.taskList.filter(task => task.taskStatus === 999).length;
-    }
-  },
-  mounted() {
-    this.getStatsData();
-    this.getTaskData();
-    this.startAutoRefresh();
-  },
-  beforeDestroy() {
-    this.stopAutoRefresh();
-  },
-  methods: {
-    getStatsData() {
-      axios.get("http://127.0.0.1:8889/api/Dashboard/WarehouseOperationStats")
-        .then((response) => {
-          if (response) {
-            // 娓呴櫎閰嶇疆缂撳瓨锛屽己鍒堕噸鏂扮敓鎴�
-            this.flopConfigs.clear();
-
-            // 鍒涘缓鏂板璞$‘淇濆搷搴斿紡
-            const newStats = {
-              rawMaterialWarehouse: {
-                totalTasks: (response.rawMaterialWarehouse && response.rawMaterialWarehouse.totalTasks) || 0,
-                todayInbound: (response.rawMaterialWarehouse && response.rawMaterialWarehouse.todayInbound) || 0,
-                todayOutbound: (response.rawMaterialWarehouse && response.rawMaterialWarehouse.todayOutbound) || 0
-              },
-              finishedProductWarehouse: {
-                totalTasks: (response.finishedProductWarehouse && response.finishedProductWarehouse.totalTasks) || 0,
-                todayInbound: (response.finishedProductWarehouse && response.finishedProductWarehouse.todayInbound) || 0,
-                todayOutbound: (response.finishedProductWarehouse && response.finishedProductWarehouse.todayOutbound) || 0
-              },
-              summary: {
-                totalAllTasks: (response.summary && response.summary.totalAllTasks) || 0,
-                totalInbound: (response.summary && response.summary.totalInbound) || 0,
-                totalOutbound: (response.summary && response.summary.totalOutbound) || 0
-              }
-            };
-            // 鐩存帴璧嬪�兼柊瀵硅薄
-            this.rawStats = newStats;
-
-          }
-        })
-        .catch((error) => {
-          console.error("鑾峰彇浠撳簱缁熻澶辫触:", error);
-        });
-    },
-
-    getTaskData() {
-      axios.get("http://127.0.0.1:8889/api/Dashboard/CurrentTasks")
-        .then((response) => {
-          if (response && Array.isArray(response)) {
-            this.taskList = response;
-          } else {
-            this.taskList = [];
-          }
-        })
-        .catch((error) => {
-          this.taskList = [];
-        });
-    },
-
-    startAutoRefresh() {
-      this.refreshInterval = setInterval(() => {
-        this.getTaskData();
-      }, 5000);
-
-      this.statsRefreshInterval = setInterval(() => {
-        this.getStatsData();
-      }, 10000);
-    },
-
-    stopAutoRefresh() {
-      if (this.refreshInterval) {
-        clearInterval(this.refreshInterval);
-        this.refreshInterval = null;
-      }
-      if (this.statsRefreshInterval) {
-        clearInterval(this.statsRefreshInterval);
-        this.statsRefreshInterval = null;
-      }
-    },
-
-    // 鑾峰彇鏁板瓧缈荤墝鍣ㄩ厤缃�
-    getConfig(key, number, type = 'normal') {
-      const configKey = `${key}_${type}`;
-
-      // 纭繚number鏄湁鏁堢殑鏁板瓧
-      const validNumber = isNaN(Number(number)) ? 0 : Number(number);
-
-      if (!this.flopConfigs.has(configKey)) {
-        const config = {
-          number: [validNumber],
-          toFixed: 0,
-          content: '{nt}',
-          duration: 10, // 璁剧疆涓�10绉掔炕鍔ㄥ姩鐢�
-          style: {
-            fontSize: 24,
-            fill: this.getColorByType(type),
-            fontWeight: 'bold',
-            textShadow: '0 2px 8px rgba(0, 0, 0, 0.3)',
-          },
-          formatter: (number) => {
-            return number.toLocaleString();
-          }
-        };
-        this.flopConfigs.set(configKey, config);
-      } else {
-        // 鏇存柊鐜版湁閰嶇疆鐨勫��
-        const config = this.flopConfigs.get(configKey);
-        config.number = [validNumber];
-        config.style.fill = this.getColorByType(type);
-        config.duration = 1; // 纭繚duration涔熸槸10绉�
-      }
-
-      return this.flopConfigs.get(configKey);
-    },
-
-    // 鏍规嵁绫诲瀷鑾峰彇棰滆壊
-    getColorByType(type) {
-      return this.colors[type] || this.colors.normal;
-    }
-  }
-};
-</script>
-<style lang="scss" scoped>
-/* 鏍峰紡淇濇寔涓嶅彉 */
-.dashboard-container {
-  width: 100%;
-  height: 100%;
-  // padding-top: 10px;
-  box-sizing: border-box;
-}
-
-.stats-stack {
-  display: flex;
-  flex-direction: column;
-  gap: 10px;
-  height: 100%;
-}
-
-.stats-card {
-  border-radius: 16px;
-  transition: all 0.3s ease;
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-
-  &:hover {
-    transform: translateY(-2px);
-  }
-
-  &.material {
-    border-top: 4px solid #3498db;
-  }
-
-  &.product {
-    border-top: 4px solid #2ecc71;
-  }
-}
-
-.card-header {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
-}
-
-.warehouse-name {
-  font-size: 28px; /* 浠�24px澧炲ぇ鍒�28px */
-  font-weight: 700;
-  color: #ffffff;
-  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
-  letter-spacing: 1px;
-}
-
-.total-count {
-  font-size: 40px; /* 浠�36px澧炲ぇ鍒�40px */
-  font-weight: 800;
-  color: #ffffff;
-  text-shadow:
-    0 2px 12px rgba(0, 0, 0, 0.4),
-    0 0 30px currentColor;
-  letter-spacing: -0.5px;
-
-  .summary & {
-    color: #9b59b6;
-  }
-}
-
-.stats-content {
-  flex: 1;
-  align-items: center;
-}
-
-.stats-grid {
-  display: grid;
-  grid-template-columns: repeat(4, 1fr);
-  gap: 20px;
-  width: 100%;
-}
-
-.stat-item {
-  display: flex;
-  margin-top: 10px;
-  flex-direction: column;
-  align-items: center;
-}
-
-.stat-label {
-  font-size: 18px; /* 浠�14px澧炲ぇ鍒�18px */
-  font-weight: 500;
-  color: rgba(255, 255, 255, 0.7);
-  text-transform: uppercase;
-  letter-spacing: 1px;
-  margin-bottom: 12px; /* 浠�8px澧炲ぇ鍒�12px */
-  text-align: center;
-  line-height: 1.3;
-}
-
-.stat-number {
-  height: 64px; /* 浠�56px澧炲ぇ鍒�64px */
-  width: 100%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  background: rgba(255, 255, 255, 0.05);
-  border-radius: 12px;
-  border: 2px solid rgba(255, 255, 255, 0.15);
-  box-shadow:
-    inset 0 2px 8px rgba(0, 0, 0, 0.2),
-    0 4px 16px rgba(0, 0, 0, 0.2);
-  overflow: hidden;
-  position: relative;
-
-  :deep(.dv-digital-flop) {
-    width: 100% !important;
-    height: 100% !important;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-  }
-
-  &.warning {
-    border-color: rgba(243, 156, 18, 0.4);
-    background: rgba(243, 156, 18, 0.1);
-  }
-
-  &.danger {
-    border-color: rgba(231, 76, 60, 0.4);
-    background: rgba(231, 76, 60, 0.1);
-  }
-}
-
-// 鏁板瓧缈荤墝鍣ㄨ嚜瀹氫箟鏍峰紡
-:deep(.digital-flop-item) {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  height: 100%;
-}
-
-:deep(.digital-flop-dom) {
-  font-size: 28px !important; /* 浠�24px澧炲ぇ鍒�28px */
-  font-weight: 800 !important;
-  text-shadow:
-    0 2px 8px rgba(0, 0, 0, 0.3),
-    0 0 20px currentColor !important;
-  line-height: 1;
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/index.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/index.vue"
index 5f7a3b6..d44a39a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/index.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/index.vue"
@@ -11,13 +11,12 @@
       <div class="pagetab">
         <div class="item">瀹炴椂鐩戞祴</div>
       </div>
-      <!-- SC01宸烽亾浠诲姟淇℃伅 -->
-      <ItemWrap class="contetn_left-bottom contetn_lr-item" title="SC01宸烽亾浠诲姟淇℃伅" style="padding: 0 10px 16px 0px">
-        <sc01-task-info />
-      </ItemWrap>
-      <!-- SC02宸烽亾浠诲姟淇℃伅 -->
-      <ItemWrap class="contetn_left-bottom contetn_lr-item" title="SC02宸烽亾浠诲姟淇℃伅">
-        <sc02-task-info />
+      <!-- 宸烽亾浠诲姟淇℃伅 -->
+      <ItemWrap class="contetn_left-bottom contetn_lr-item" title="宸烽亾浠诲姟淇℃伅" style="padding: 0 10px 16px 0px; height: 92%;">
+        <div class="task-content">
+          <sc01-task-info v-if="currentTask === 'sc01'" />
+          <sc02-task-info v-else-if="currentTask === 'sc02'" />
+        </div>
       </ItemWrap>
     </div>
     <div class="contetn_center">
@@ -26,24 +25,24 @@
         <inventory-stats />
       </ItemWrap>
       <!-- 鏃ュ嚭鍏ュ簱鏌卞舰鍥惧姣� -->
-      <ItemWrap class="contetn_left-bottom contetn_lr-item" title="鏃ュ嚭鍏ュ簱瀵规瘮" style="padding: 0 10px 16px 10px">
+      <ItemWrap class="contetn_left-bottom contetn_lr-item" title="鎶ヨ淇℃伅" style="padding: 0 10px 16px 10px">
         <daily-inout-chart />
       </ItemWrap>
     </div>
     <div class="contetn_right">
-      <!-- SC01璐т綅鐘舵�� -->
-      <ItemWrap class="contetn_left-bottom contetn_lr-item" title="SC01璐т綅鐘舵��">
-        <sc01-location-status />
-      </ItemWrap>
-      <!-- SC02璐т綅鐘舵�� -->
-      <ItemWrap class="contetn_left-bottom contetn_lr-item" title="SC02璐т綅鐘舵��">
-        <sc02-location-status />
+      <!-- 璐т綅鐘舵�� -->
+      <ItemWrap class="contetn_left-bottom contetn_lr-item" title="璐т綅鐘舵��" style="padding: 0 10px 16px 0px; height: 92%;">
+        <div class="task-content">
+          <sc01-location-status v-if="currentLocation === 'sc01'" />
+          <sc02-location-status v-else-if="currentLocation === 'sc02'" />
+        </div>
       </ItemWrap>
     </div>
   </div>
 </template>
 
 <script>
+import { mapState, mapMutations } from 'vuex'
 import sc01TaskInfo from './sc01-task-info.vue'
 import sc02TaskInfo from './sc02-task-info.vue'
 import inventoryStats from './inventory-stats.vue'
@@ -59,10 +58,8 @@
     sc01LocationStatus,
     sc02LocationStatus
   },
-  data() {
-    return {
-
-    };
+  computed: {
+    ...mapState('setting', ['currentTask', 'currentLocation'])
   },
   filters: {
     numsFilter(msg) {
@@ -73,9 +70,8 @@
   },
 
   mounted() { },
-  methods: {
+  methods: {},
 
-  },
 };
 </script>
 <style lang="scss" scoped>
@@ -84,25 +80,34 @@
   display: flex;
   justify-content: center;
   gap: 10px;
+  height: 100%;
 
   .contetn_left,
   .contetn_right {
     width: 600px;
-    // height: 100%;
     box-sizing: border-box;
     gap: 10px;
-    // padding: 16px 0;
+    display: flex;
+    flex-direction: column;
   }
 
   .contetn_center {
     width: 660px;
     gap: 10px;
+    display: flex;
+    flex-direction: column;
+  }
+
+  // 宸︿晶SC01浠诲姟淇℃伅 - 淇濇寔涓庡叾浠栧尯鍩熺浉鍚岀殑楂樺害
+  .contetn_left-item {
+    height: px; // 鎭㈠鍘熸潵鐨勫浐瀹氶珮搴︼紝鍜屽彸渚у崟涓潡鐨勯珮搴︿竴鑷�
+    flex-shrink: 0; // 闃叉鍘嬬缉
   }
 
   //宸﹀彸涓や晶 涓変釜鍧�
   .contetn_lr-item {
     gap: 10px;
-    height: 480px;
+    height: 480px; // 鎭㈠鍘熸潵鐨勫浐瀹氶珮搴�
   }
 
   .contetn_center_top {
@@ -114,7 +119,6 @@
     display: flex;
     flex-direction: column;
     gap: 10px;
-    // justify-content: space-around;
   }
 
   .contetn_center-bottom {
@@ -126,7 +130,6 @@
   .contetn_right {
     display: flex;
     flex-direction: column;
-    // justify-content: space-around;
     gap: 10px;
     position: relative;
   }
@@ -164,4 +167,11 @@
     transform: rotate(360deg) scale(1);
   }
 }
-</style>
+
+// 浠诲姟鍐呭鍖哄煙
+.task-content {
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/inventory-stats.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/inventory-stats.vue"
index 325b5ca..3e0cdb5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/inventory-stats.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/inventory-stats.vue"
@@ -83,7 +83,7 @@
     // 姣�10绉掑埛鏂颁竴娆℃暟鎹�
     this.refreshInterval = setInterval(() => {
       this.getData();
-    }, 10000);
+    }, 30000);
   },
   beforeDestroy() {
     if (this.refreshInterval) {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-bottom.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-bottom.vue"
deleted file mode 100644
index 181cd31..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-bottom.vue"
+++ /dev/null
@@ -1,278 +0,0 @@
-<!--
- * @Author: daidai
- * @Date: 2022-03-01 09:43:37
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-09-09 11:40:22
- * @FilePath: \web-pc\src\pages\big-screen\view\indexs\left-bottom.vue
--->
-<template>
-  <div
-    v-if="pageflag"
-    class="left_boottom_wrap beautify-scroll-def"
-    :class="{ 'overflow-y-auto': !sbtxSwiperFlag }"
-  >
-    <component :is="components" :data="list" :class-option="defaultOption">
-      <ul class="left_boottom">
-        <li class="left_boottom_item" v-for="(item, i) in list" :key="i">
-          <div class="inner_right">
-            <div class="dibu"></div>
-            <div class="flex" style="width: 100%;">
-              <div class="info">
-                <!-- <span class="labels">璁惧ID锛�</span> -->
-                <span class="contents zhuyao doudong wangguan">
-                  {{ item.alarmposition }}</span
-                >
-              </div>
-              <div class="info" style="margin-left: 8%;">
-              <!-- <span class="labels">鍦板潃锛�</span> -->
-              <span class="contents ciyao" style="font-size: 10px;width: 30px;">
-                {{ item.devicename }}</span
-              >
-            </div>
-              <div class="info" style="margin-left: 7%;">
-              <!-- <span class="labels">鍦板潃锛�</span> -->
-              <span class="contents ciyao" style="font-size: 10px;width: 180px;">
-                {{ item.alarmname }}</span
-              >
-            </div>
-            <div class="info">
-                <!-- <span class="labels">鏃堕棿锛�</span> -->
-                <span class="contents " style="font-size: 10px;width: 180px;">
-                  {{ item.starttime }}</span
-                >
-              </div>
-            </div>
-
-              <!-- <span
-                class="types doudong"
-                :class="{
-                  typeRed: item.onlineState == 0,
-                  typeGreen: item.onlineState == 1,
-                }"
-                >{{ item.onlineState == 1 ? "涓婄嚎" : "涓嬬嚎" }}</span
-              > -->
-
-           
-          </div>
-        </li>
-      </ul>
-    </component>
-  </div>
-
-  <Reacquire v-else @onclick="getData" style="line-height: 200px" />
-</template>
-
-<script>
-// import { currentGET } from "api";
-import {FaultInformation} from "@/api/http.js"
-import vueSeamlessScroll from "vue-seamless-scroll"; // vue2寮曞叆鏂瑰紡
-import Kong from "../../components/kong.vue";
-export default {
-  components: { vueSeamlessScroll, Kong },
-  data() {
-    return {
-      list: [],
-      pageflag: true,
-      components: vueSeamlessScroll,
-      defaultOption: {
-        ...this.$store.state.setting.defaultOption,
-        singleHeight: 240,
-        limitMoveNum: 5, 
-        step: 0,
-      },
-    };
-  },
-  computed: {
-    sbtxSwiperFlag() {
-      let sbtxSwiper = this.$store.state.setting.sbtxSwiper;
-      if (sbtxSwiper) {
-        this.components = vueSeamlessScroll;
-      } else {
-        this.components = Kong;
-      }
-      return sbtxSwiper;
-    },
-  },
-  created() {
-    
-  },
-
-  mounted() {
-    this.getData();
-    this.changeTiming();
-  },
-  methods: {
-    changeTiming() {
-      setInterval(() => {
-        this.getData();
-      }, 5000);
-    },
-    addressHandle(item) {
-      let name = item.provinceName;
-      if (item.cityName) {
-        name += "/" + item.cityName;
-        if (item.countyName) {
-          name += "/" + item.countyName;
-        }
-      }
-      return name;
-    },
-    async getData() {
-      this.pageflag = true;
-    // this.pageflag =false
-      // currentGET("big3", { limitNum: 20 }).then((res) => {
-      //   console.log("璁惧鎻愰啋", res);
-      //   if (res.success) {
-      //     this.countUserNumData = res.data;
-      //     this.list = res.data.list;
-          
-      //     let timer = setTimeout(() => {
-      //       clearTimeout(timer);
-      //       this.defaultOption.step =
-      //         this.$store.state.setting.defaultOption.step;
-      //     }, this.$store.state.setting.defaultOption.waitTime);
-      //   } else {
-      //     this.pageflag = false;
-      //     this.$Message({
-      //       text: res.msg,
-      //       type: "warning",
-      //     });
-      //   }
-      // });
-      let rep = await FaultInformation((a)=>{
-          console.log(a);
-        });
-   
-       this.list=rep;
-                let timer = setTimeout(() => {
-            clearTimeout(timer);
-            this.defaultOption.step =
-              this.$store.state.setting.defaultOption.step;
-          }, this.$store.state.setting.defaultOption.waitTime);
-    },
-  },
-};
-</script>
-<style lang='scss' scoped>
-.left_boottom_wrap {
-  overflow: hidden;
-  width: 100%;
-  height: 230px;
-}
-
-.doudong {
-  //  vertical-align:middle;
-  overflow: hidden;
-  -webkit-backface-visibility: hidden;
-  -moz-backface-visibility: hidden;
-  -ms-backface-visibility: hidden;
-  backface-visibility: hidden;
-}
-
-.overflow-y-auto {
-  overflow-y: auto;
-}
-
-.left_boottom {
-  width: 100%;
-  height: 100%;
-
-  .left_boottom_item {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    padding: 8px;
-    font-size: 14px;
-    margin: 10px 0;
-    .orderNum {
-      margin: 0 16px 0 -20px;
-    }
-
-    .info {
-      margin-right: 8%;
-      display: flex;
-      align-items: center;
-      color: #fff;
-      .labels {
-        flex-shrink: 0;
-        font-size: 12px;
-        color: rgba(255, 255, 255, 0.6);
-      }
-
-      .zhuyao {
-        color: $primary-color;
-        font-size: 15px;
-      }
-
-      .ciyao {
-        color: rgba(255, 255, 255, 0.8);
-      }
-
-      .warning {
-        color: #e6a23c;
-        font-size: 15px;
-      }
-    }
-
-    .inner_right {
-      position: relative;
-      height: 100%;
-      width: 650px;
-      flex-shrink: 0;
-      line-height: 1;
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-      flex-wrap: wrap;
-      .dibu {
-        position: absolute;
-        height: 2px;
-        width: 104%;
-        background-image: url("../../assets/img/zuo_xuxian.png");
-        bottom: -10px;
-        left: -2%;
-        background-size: cover;
-      }
-      .addresswrap {
-        width: 200px;
-        display: flex;
-        margin-top: 8px;
-      }
-    }
-
-    .wangguan {
-      color: #1890ff;
-      font-weight: 900;
-      font-size: 15px;
-      width: 80px;
-      flex-shrink: 0;
-    }
-
-
-    .time {
-      font-size: 12px;
-      // color: rgba(211, 210, 210,.8);
-      color: #fff;
-    }
-
-    .address {
-      font-size: 12px;
-      cursor: pointer;
-      // @include text-overflow(1);
-    }
-
-    .types {
-      width: 30px;
-      flex-shrink: 0;
-    }
-
-    .typeRed {
-      color: #fc1a1a;
-    }
-
-    .typeGreen {
-      color: #29fc29;
-    }
-  }
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-center-right.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-center-right.vue"
deleted file mode 100644
index 79b6ad3..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-center-right.vue"
+++ /dev/null
@@ -1,257 +0,0 @@
-<!--
- * @Author: daidai
- * @Date: 2022-02-28 16:16:42
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-10-25 09:18:22
- * @FilePath: \web-pc\src\pages\big-screen\view\indexs\left-center.vue
--->
-<template>
-    <Echart id="leftcenterright" :options="options" class="left_center_inner" v-if="pageflag" ref="charts" />
-    <Reacquire v-else @onclick="getData" style="line-height:200px">
-      閲嶆柊鑾峰彇
-    </Reacquire>
-  </template>
-  
-  <script>
-  import { currentPOST } from 'api/modules'
-  import {Equipmentfault} from "@/api/http.js"
-  export default {
-    data() {
-      return {
-        options: {},
-        countUserNumData: {
-          HoistNum: 0,
-          decoderNum: 0,
-          uncoderNum: 0,
-          elevatorNum:0,
-          TransmissionlineNum:0,
-          totalNum: 0
-        },
-        pageflag: true,
-        timer: null
-      };
-    },
-    created() {
-      this.getData()
-    },
-    mounted() {
-      this.changeTiming();
-    },
-    beforeDestroy() {
-      // this.clearData()
-  
-    },
-    methods: {
-      changeTiming() {
-      setInterval(() => {
-        this.getData();
-      }, 5000);
-    },
-      // clearData() {
-      //   if (this.timer) {
-      //     clearInterval(this.timer)
-      //     this.timer = null
-      //   }
-      // },
-       async getData() {
-         this.pageflag = true
-        // this.pageflag =false
-  
-        // currentPOST('big1').then(res => {
-
-        //   //鍙墦鍗颁竴娆�
-        //   if (!this.timer) {
-        //     console.log("璁惧鎬昏", res);
-        //   }
-        //   if (res.success) {
-        //     // this.countUserNumData = res.data
-        //     this.$nextTick(() => {
-        //       this.init()
-        //     })
-  
-        //   } else {
-        //     this.pageflag = false
-        //     this.$Message({
-        //       text: res.msg,
-        //       type: 'warning'
-        //     })
-        //   }
-        // })
-
-
-        let rep = await Equipmentfault((a)=>{
-          console.log(a);
-        });
-        
-        this.countUserNumData = rep;
-            this.$nextTick(() => {
-              this.init()
-            })
-      },
-      //杞
-      switper() {
-        if (this.timer) {
-          return
-        }
-        let looper = (a) => {
-          this.getData()
-        };
-        this.timer = setInterval(looper, this.$store.state.setting.echartsAutoTime);
-        let myChart = this.$refs.charts.chart
-        myChart.on('mouseover', params => {
-          this.clearData()
-        });
-        myChart.on('mouseout', params => {
-          this.timer = setInterval(looper, this.$store.state.setting.echartsAutoTime);
-        });
-      },
-      init() {
-        let total = this.countUserNumData.total;
-        let colors = ["#ECA444", "#33A1DB", "#56B557","#ffb8c6","#FF21FA"];
-        let piedata = {
-          name: "鏁呴殰璁惧棰戠巼",
-          type: "pie",
-          radius: ["40%", "70%"],
-          avoidLabelOverlap: false,
-          itemStyle: {
-            borderRadius: 4,
-            borderColor: "rgba(0,0,0,0)",
-            borderWidth: 2,
-          },
-  
-          color: colors,
-          data: [
-            // {
-            //   value: 0,
-            //   name: "鍛婅",
-            //   label: {
-            //     shadowColor: colors[0],
-            //   },
-            // },
-            {
-              value: this.countUserNumData.elevator,
-              name: "鎻愬崌鏈烘晠闅�",
-              label: {
-                shadowColor: colors[0],
-              },
-            },
-            {
-              value: this.countUserNumData.discremover,
-              name: "鎷嗙爜鏈烘晠闅�",
-              label: {
-                shadowColor: colors[2],
-              },
-            },
-            {
-              value: this.countUserNumData.rgVcCar,
-              name: "鍥涘悜杞︽晠闅�",
-              label: {
-                shadowColor: colors[1],
-              },
-            },
-            {
-              value: this.countUserNumData.pipeline,
-              name: "杈撻�佺嚎鏁呴殰",
-              label: {
-                shadowColor: colors[4],
-              },
-            }
-          ],
-        };
-        this.options = {
-          title: {
-            // zlevel: 0,
-            text: ["{value|" + total + "}", "{name|鎬绘暟}"].join("\n"),
-            top: "center",
-            left: "center",
-            textStyle: {
-              rich: {
-                value: {
-                  color: "#ffffff",
-                  fontSize: 24,
-                  fontWeight: "bold",
-                  lineHeight: 20,
-                },
-                name: {
-                  color: "#ffffff",
-                  lineHeight: 20,
-                },
-              },
-            },
-          },
-          tooltip: {
-            trigger: "item",
-            backgroundColor: "rgba(0,0,0,.6)",
-            borderColor: "rgba(147, 235, 248, .8)",
-            textStyle: {
-              color: "#FFF",
-            },
-          },
-          legend: {
-            show: false,
-            top: "5%",
-            left: "center",
-          },
-          series: [
-            //灞曠ず鍦嗙偣
-            {
-              ...piedata,
-              tooltip: { show: true },
-              label: {
-                formatter: " {b|{b}}",
-                // formatter: "   {b|{b}}   \n   {c|{c}涓獇   {per|{d}%}  ",
-                //   position: "outside",
-                rich: {
-                  b: {
-                    color: "#fff",
-                    fontSize: 12,
-                    lineHeight: 26,
-                  },
-                  c: {
-                    color: "#31ABE3",
-                    fontSize: 14,
-                  },
-                  per: {
-                    color: "#31ABE3",
-                    fontSize: 14,
-                  },
-                },
-              },
-              labelLine: {
-                length: 30, // 绗竴娈电嚎 闀垮害
-                length2: 46, // 绗簩娈电嚎 闀垮害
-                show: true,
-              
-              },
-                emphasis: {
-                  show: true,
-                },
-            },
-            {
-              ...piedata,
-              tooltip: { show: true },
-              itemStyle: {},
-              label: {
-                backgroundColor: "inherit", //鍦嗙偣棰滆壊锛宎uto锛氭槧灏勭殑绯诲垪鑹�
-                height: 0,
-                width: 0,
-                lineHeight: 0,
-                borderRadius: 2.5,
-                shadowBlur: 8,
-                shadowColor: "auto",
-                padding: [2.5, -2.5, 2.5, -2.5],
-              },
-              labelLine: {
-                length: 30, // 绗竴娈电嚎 闀垮害
-                length2: 46, // 绗簩娈电嚎 闀垮害
-                show: false,
-              },
-            },
-          ],
-        };
-      },
-    },
-  };
-  </script>
-  <style lang='scss' scoped>
-  </style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-center.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-center.vue"
deleted file mode 100644
index a6bf8da..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-center.vue"
+++ /dev/null
@@ -1,256 +0,0 @@
-<!--
- * @Author: daidai
- * @Date: 2022-02-28 16:16:42
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-10-25 09:18:22
- * @FilePath: \web-pc\src\pages\big-screen\view\indexs\left-center.vue
--->
-<template>
-  <Echart id="leftCenter" :options="options" class="left_center_inner" v-if="pageflag" ref="charts" />
-  <Reacquire v-else @onclick="getData" style="line-height:200px">
-    閲嶆柊鑾峰彇
-  </Reacquire>
-</template>
-
-<script>
-import { currentGET } from 'api/modules'
-import {Failuremode} from "@/api/http.js"
-export default {
-  data() {
-    return {
-      options: {},
-      countUserNumData: {
-        lockNum: 0,
-        onlineNum: 0,
-        offlineNum: 0,
-        totalNum: 0
-      },
-      pageflag: true,
-      timer: null
-    };
-  },
-  created() {
-    this.getData()
-  },
-  mounted() {
-    this.changeTiming();
-    
-  },
-  beforeDestroy() {
-    // this.clearData()
-  },
-  methods: {
-    changeTiming() {
-      setInterval(() => {
-        this.getData();
-      }, 5000);
-    },
-    // clearData() {
-    //   if (this.timer) {
-    //     clearInterval(this.timer)
-    //     this.timer = null
-    //   }
-    // },
-    async getData() {
-     // this.pageflag = true
-     let rep = await Failuremode((a)=>{
-          console.log(a);
-        });
-      this.countUserNumData = {
-        offlineNum: rep.overtime,
-        onlineNum: rep.sensitization,
-        lockNum: rep.rgVcCar,
-        totalNum: rep.total
-        },
-        this.$nextTick(() => {
-            this.init()
-          })
-      // this.pageflag =false
-
-      // currentGET('big1').then(res => {
-      //   //鍙墦鍗颁竴娆�
-      //   if (!this.timer) {
-      //     console.log("璁惧鎬昏", res);
-      //   }
-      //   if (res.success) {
-      //     this.countUserNumData = res.data
-          // this.$nextTick(() => {
-          //   this.init()
-          // })
-
-      //   } else {
-      //     this.pageflag = false
-      //     this.$Message({
-      //       text: res.msg,
-      //       type: 'warning'
-      //     })
-      //   }
-      // })
-      
-    },
-    //杞
-    switper() {
-      if (this.timer) {
-        return
-      }
-      let looper = (a) => {
-        this.getData()
-      };
-      this.timer = setInterval(looper, this.$store.state.setting.echartsAutoTime);
-      let myChart = this.$refs.charts.chart
-      myChart.on('mouseover', params => {
-        this.clearData()
-      });
-      myChart.on('mouseout', params => {
-        this.timer = setInterval(looper, this.$store.state.setting.echartsAutoTime);
-      });
-    },
-    init() {
-      let total = this.countUserNumData.totalNum;
-      let colors = ["#ECA444", "#33A1DB", "#56B557","#ffb8c6"];
-      let piedata = {
-        name: "鏁呴殰绉嶇被棰戠巼",
-        type: "pie",
-        radius: ["42%", "65%"],
-        avoidLabelOverlap: false,
-        itemStyle: {
-          borderRadius: 4,
-          borderColor: "rgba(0,0,0,0)",
-          borderWidth: 2,
-        },
-
-        color: colors,
-        data: [
-          // {
-          //   value: 0,
-          //   name: "鍛婅",
-          //   label: {
-          //     shadowColor: colors[0],
-          //   },
-          // },
-          {
-            value: this.countUserNumData.onlineNum,
-            name: "鍏夌數鏁呴殰",
-            label: {
-              shadowColor: colors[0],
-            },
-          },
-          {
-            value: this.countUserNumData.lockNum,
-            name: "鍥涘悜杞︽晠闅�",
-            label: {
-              shadowColor: colors[2],
-            },
-          },
-          // {
-          //   value: this.countUserNumData.onlineNum,
-          //   name: "瓒呴檺浣嶆晠闅�",
-          //   label: {
-          //     shadowColor: colors[1],
-          //   },
-          // },
-          {
-            value: this.countUserNumData.offlineNum,
-            name: "瓒呮椂鏁呴殰",
-            label: {
-              shadowColor: colors[3],
-            },
-          },
-        ],
-      };
-      this.options = {
-        title: {
-          // zlevel: 0,
-          text: ["{value|" + total + "}", "{name|鎬绘暟}"].join("\n"),
-          top: "center",
-          left: "center",
-          textStyle: {
-            rich: {
-              value: {
-                color: "#ffffff",
-                fontSize: 24,
-                fontWeight: "bold",
-                lineHeight: 20,
-              },
-              name: {
-                color: "#ffffff",
-                lineHeight: 20,
-              },
-            },
-          },
-        },
-        tooltip: {
-          trigger: "item",
-          backgroundColor: "rgba(0,0,0,.6)",
-          borderColor: "rgba(147, 235, 248, .8)",
-          textStyle: {
-            color: "#FFF",
-          },
-        },
-        legend: {
-          show: false,
-          top: "5%",
-          left: "center",
-        },
-        series: [
-          //灞曠ず鍦嗙偣
-          {
-            ...piedata,
-            tooltip: { show: true },
-            label: {
-              formatter: " {b|{b}}",
-              //   position: "outside",
-              rich: {
-                b: {
-                  color: "#fff",
-                  fontSize: 12,
-                  lineHeight: 26,
-                },
-                c: {
-                  color: "#31ABE3",
-                  fontSize: 14,
-                },
-                per: {
-                  color: "#31ABE3",
-                  fontSize: 14,
-                },
-              },
-            },
-            labelLine: {
-              length: 30, // 绗竴娈电嚎 闀垮害
-              length2: 46, // 绗簩娈电嚎 闀垮害
-              show: true,
-            
-            },
-              emphasis: {
-                show: true,
-              },
-          },
-          {
-            ...piedata,
-            tooltip: { show: true },
-            itemStyle: {},
-            label: {
-              backgroundColor: "inherit", //鍦嗙偣棰滆壊锛宎uto锛氭槧灏勭殑绯诲垪鑹�
-              height: 0,
-              width: 0,
-              lineHeight: 0,
-              borderRadius: 2.5,
-              shadowBlur: 8,
-              shadowColor: "auto",
-              padding: [2.5, -2.5, 2.5, -2.5],
-            },
-            labelLine: {
-              length: 30, // 绗竴娈电嚎 闀垮害
-              length2: 46, // 绗簩娈电嚎 闀垮害
-              show: false,
-            },
-          },
-        ],
-      };
-    },
-  },
-};
-</script>
-<style lang='scss' scoped>
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-top.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-top.vue"
deleted file mode 100644
index 4f7f439..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/left-top.vue"
+++ /dev/null
@@ -1,250 +0,0 @@
-<!--
- * @Author: daidai
- * @Date: 2022-02-28 16:16:42
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-07-20 17:57:11
- * @FilePath: \web-pc\src\pages\big-screen\view\indexs\left-center.vue
--->
-<template>
-    <ul class="user_Overview flex" v-if="pageflag">
-        <li class="user_Overview-item" style="color: #00fdfa">
-            <div class="user_Overview_nums allnum ">
-                <dv-digital-flop :config="onlineconfig" style="width:100%;height:100%;" />
-            </div>
-            <p>涓夋ゼ璐ф灦</p>
-        </li>
-        <li class="user_Overview-item" style="color: #07f7a8">
-            <div class="user_Overview_nums online">
-                <dv-digital-flop :config="config" style="width:100%;height:100%;" />
-            </div>
-            <p>浜旀ゼ璐ф灦</p>
-        </li>
-        <li class="user_Overview-item" style="color: #e3b337">
-            <div class="user_Overview_nums offline">
-                <dv-digital-flop :config="offlineconfig" style="width:100%;height:100%;" />
-
-            </div>
-            <p>鍏ゼ璐ф灦</p>
-        </li>
-        <li class="user_Overview-item" style="color: #f5023d">
-            <div class="user_Overview_nums laramnum">
-                <dv-digital-flop :config="laramnumconfig" style="width:100%;height:100%;" />
-            </div>
-            <p>涓冩ゼ璐ф灦</p>
-        </li>
-    </ul>
-    <Reacquire v-else @onclick="getData" line-height="200px">
-        閲嶆柊鑾峰彇
-    </Reacquire>
-</template>
-
-<script>
-import { currentGET } from 'api/modules'
-import {Floorfault} from "@/api/http.js"
-let style = {
-    fontSize: 24
-}
-export default {
-    data() {
-        return {
-            options: {},
-            userOverview: {
-                alarmNum: 2,
-                offlineNum: 3,
-                onlineNum: 5,
-                totalNum: 10,
-            },
-            pageflag: true,
-            timer: null,
-            config: {
-                number: [100],
-                content: '{nt}',
-                style: {
-                    ...style,
-                    // stroke: "#00fdfa",
-                    fill: "#00fdfa",
-                },
-            },
-            onlineconfig: {
-                number: [0],
-                content: '{nt}',
-                style: {
-                    ...style,
-                    // stroke: "#07f7a8",
-                    fill: "#07f7a8",
-                },
-            },
-            offlineconfig: {
-                number: [0],
-                content: '{nt}',
-                style: {
-                    ...style,
-                    // stroke: "#e3b337",
-                    fill: "#e3b337",
-                },
-            },
-            laramnumconfig: {
-                number: [0],
-                content: '{nt}',
-                style: {
-                    ...style,
-                    // stroke: "#f5023d",
-                    fill: "#f5023d",
-                },
-            }
-
-        };
-    },
-    filters: {
-        numsFilter(msg) {
-            return msg || 0;
-        },
-    },
-    created() {
-        this.getData()
-    },
-    mounted() {
-    },
-    beforeDestroy() {
-        this.clearData()
-
-    },
-    methods: {
-        clearData() {
-            if (this.timer) {
-                clearInterval(this.timer)
-                this.timer = null
-            }
-        },
-        async getData() {
-            this.pageflag = true;
-            // currentGET("big2").then((res) => {
-            //     if (!this.timer) {
-            //         console.log("璁惧鎬昏2", res);
-            //     }
-            //     if (res.success) {
-            //         this.userOverview = res.data;
-            //            this.onlineconfig = {
-            //             ...this.onlineconfig,
-            //             number: [1]
-            //         }
-            //         this.config = {
-            //             ...this.config,
-            //             number: [7]
-            //         }
-            //         this.offlineconfig = {
-            //             ...this.offlineconfig,
-            //             number: [4]
-            //         }
-            //         this.laramnumconfig = {
-            //             ...this.laramnumconfig,
-            //             number: [10]
-            //         }
-            //         this.switper();  
-            //     } else {
-            //         this.pageflag = false;
-            //         this.$Message.warning(res.msg);
-            //     }
-            // });
-                    let rep = await Floorfault((a)=>{
-                            console.log(a);
-                    });
-                       this.onlineconfig = {
-                        ...this.onlineconfig,
-                        number: [rep.threefloor]
-                    }
-                    this.config = {
-                        ...this.config,
-                        number: [rep.fivefloor]
-                    }
-                    this.offlineconfig = {
-                        ...this.offlineconfig,
-                        number: [rep.sixfloor]
-                    }
-                    this.laramnumconfig = {
-                        ...this.laramnumconfig,
-                        number: [rep.sevenfloor]
-                    }
-                    this.switper(); 
-        },
-        //杞
-        switper() {
-            if (this.timer) {
-                return
-            }
-            let looper = (a) => {
-                this.getData()
-            };
-            this.timer = setInterval(looper, this.$store.state.setting.echartsAutoTime);
-        },
-    },
-};
-</script>
-<style lang='scss' scoped>
-.user_Overview {
-    li {
-        flex: 1;
-
-        p {
-            text-align: center;
-            height: 16px;
-            font-size: 16px;
-        }
-
-        .user_Overview_nums {
-            width: 100px;
-            height: 100px;
-            text-align: center;
-            line-height: 100px;
-            font-size: 22px;
-            margin: 50px auto 30px;
-            background-size: cover;
-            background-position: center center;
-            position: relative;
-
-            &::before {
-                content: '';
-                position: absolute;
-                width: 100%;
-                height: 100%;
-                top: 0;
-                left: 0;
-            }
-
-            &.bgdonghua::before {
-                animation: rotating 14s linear infinite;
-            }
-        }
-
-        .allnum {
-
-            // background-image: url("../../assets/img/left_top_lan.png");
-            &::before {
-                background-image: url("../../assets/img/left_top_lan.png");
-
-            }
-        }
-
-        .online {
-            &::before {
-                background-image: url("../../assets/img/left_top_lv.png");
-
-            }
-        }
-
-        .offline {
-            &::before {
-                background-image: url("../../assets/img/left_top_huang.png");
-
-            }
-        }
-
-        .laramnum {
-            &::before {
-                background-image: url("../../assets/img/left_top_hong.png");
-
-            }
-        }
-    }
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/pass-two.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/pass-two.vue"
deleted file mode 100644
index 3878c67..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/pass-two.vue"
+++ /dev/null
@@ -1,295 +0,0 @@
-<template>
-  <dv-scroll-board :config="config" style="width:100%;height:400px" />
-</template>
-
-<script>
-import axios from 'axios';
-
-export default {
-  name: 'TaskListScrollBoard',
-  components: {
-    // 濡傛灉缁勪欢宸插叏灞�娉ㄥ唽锛屽垯涓嶉渶瑕佸湪杩欓噷娉ㄥ唽
-  },
-  data() {
-    return {
-      taskList: [],
-      refreshInterval: null,
-      config: null
-    };
-  },
-  mounted() {
-    this.getTaskData();
-    this.startAutoRefresh();
-  },
-  beforeDestroy() {
-    this.stopAutoRefresh();
-  },
-  methods: {
-    // 鑾峰彇浠诲姟鏁版嵁
-    getTaskData() {
-      axios.get("http://127.0.0.1:8889/api/Dashboard/CurrentTasks")
-        .then((response) => {
-
-          if (response && Array.isArray(response)) {
-            // 涓嶇敤data,閫夋嫨鏈夋暟鎹�
-            const tasks = response;
-            // 杩囨护锛屽彧鏄剧ず寮傚父鐘舵�佺殑浠诲姟 (298, 299, 198, 199, 999)
-            this.taskList = tasks.filter(task => 
-              [298, 299, 198, 199, 999].includes(task.taskStatus)
-            );
-            this.updateBoardData();
-          } else {
-            this.taskList = [];
-            this.updateBoardData();
-          }
-        })
-        .catch((error) => {
-          console.error("鑾峰彇浠诲姟鏁版嵁澶辫触:", error);
-          this.taskList = [];
-          this.updateBoardData();
-        });
-    },
-
-    // 鏇存柊婊氬姩琛ㄦ牸鏁版嵁
-    updateBoardData() {
-      let boardData = [];
-      if (this.taskList.length === 0) {
-        boardData = [['--', '--', '--', '--', '--', '鏃犲紓甯镐换鍔�']];
-      } else {
-        boardData = this.taskList.map((task) => {
-          // 璁剧疆浠诲姟绫诲瀷棰滆壊
-          const taskType = this.getTaskType(task);
-          const typeColor = this.getTaskTypeColor(taskType);
-          const typeHtml = `<span style="color:${typeColor};font-weight:bold;font-size:18px">${taskType}</span>`;
-
-          // 璁剧疆鎵樼洏绫诲瀷
-          const palletType = this.getPalletTypeText(task);
-          const palletColor = this.getPalletTypeColor(task);
-          const palletHtml = `<span style="color:${palletColor};font-weight:bold;font-size:18px;padding:4px 8px;border-radius:3px;background:rgba(255,255,255,0.1)">${palletType}</span>`;
-
-          // 璁剧疆鐩殑鍦帮紙鍙樉绀哄悗8浣嶏級
-          let targetAddress = task.targetAddress || '--';
-          if (targetAddress.length > 8) {
-            targetAddress = targetAddress.slice(-8); // 鍙彇鍚�8浣�
-          }
-          const addressHtml = `<span style="color:#67e0e3;font-size:20px;font-weight:bold;font-family:monospace">${targetAddress}</span>`;
-
-          // 璁剧疆鐘舵��
-          const statusText = this.getStatusText(task);
-          const statusClass = this.getStatusClass(task);
-          const statusColor = this.getStatusColor(statusClass);
-          const statusHtml = `<span style="color:${statusColor};font-weight:bold;font-size:18px;padding:4px 8px;border-radius:4px;background:${this.getStatusBgColor(statusClass)};animation: pulse 1.5s infinite;">${statusText}</span>`;
-
-          // 鏍煎紡鍖栨椂闂�
-          const timeText = this.formatDate(task.createDate);
-          
-          return [
-            `<span style="color:#37a2da;font-family:monospace;font-size:18px">${task.taskNum || '--'}</span>`,
-            typeHtml,
-            palletHtml,
-            addressHtml,
-            `<span style="color:#9fe6b8;font-size:18px">${timeText}</span>`,
-            statusHtml
-          ];
-        });
-      }
-      
-      this.config = {
-        header: ['浠诲姟鍙�', '绫诲瀷', '鐗╂枡', '鐩殑鍦�', '鍒涘缓鏃堕棿', '寮傚父'],
-        data: boardData,
-        index: false,
-        columnWidth: [100, 100, 150, 180, 180, 150], 
-        align: ['center', 'center', 'center', 'center', 'center', 'center'],
-        waitTime: 2000,
-        rowNum: 8,
-        headerBGC: 'rgba(0, 0, 0, 0.5)',
-        headerHeight: 55,
-        oddRowBGC: 'rgba(0, 0, 0, 0.3)',
-        evenRowBGC: 'rgba(0, 0, 0, 0.5)',
-        carousel: 'single',
-        // 娣诲姞瀛椾綋澶у皬璁剧疆
-        headerStyle: {
-          fontSize: 22,
-          fontWeight: 'bold'
-        },
-        rowStyle: {
-          fontSize: 20,
-          height: 50
-        }
-      };
-    },
-
-    // 鑾峰彇浠诲姟绫诲瀷棰滆壊
-    getTaskTypeColor(type) {
-      const colorMap = {
-        '鍏ュ簱': '#37a2da',
-        '鍑哄簱': '#32c5e9',
-        '绉诲簱': '#67e0e3',
-        '鏈煡': '#ffdb5c'
-      };
-      return colorMap[type] || '#ffdb5c';
-    },
-
-    // 鑾峰彇鎵樼洏绫诲瀷鏂囧瓧
-    getPalletTypeText(task) {
-      // 鏍规嵁 warehouseId 鍜� palletType 鍒ゆ柇
-      const warehouseId = task.warehouseId;
-      const palletType = task.palletType;
-      
-      if (warehouseId === 2) {
-        // warehouseId=2鏄垚鍝�
-        return '鎴愬搧';
-      } else if (warehouseId === 1) {
-        // warehouseId=1锛屾牴鎹畃alletType鍒ゆ柇
-        if (palletType === '1' || palletType === 1) {
-          return '甯冨嵎';
-        } else if (palletType === '2' || palletType === 2) {
-          return '鏉惧竷鍗�';
-        }
-      }
-      
-      return '鏈煡';
-    },
-
-    // 鑾峰彇鎵樼洏绫诲瀷棰滆壊
-    getPalletTypeColor(task) {
-      const warehouseId = task.warehouseId;
-      const palletType = task.palletType;
-      
-      if (warehouseId === 2) {
-        return '#ff9f7f'; // 鎴愬搧 - 姗欒壊
-      } else if (warehouseId === 1) {
-        if (palletType === '1' || palletType === 1) {
-          return '#9fe6b8'; // 甯冨嵎 - 缁胯壊
-        } else if (palletType === '2' || palletType === 2) {
-          return '#ffdb5c'; // 鏉惧竷鍗� - 榛勮壊
-        }
-      }
-      
-      return '#95a5a6'; // 鏈煡 - 鐏拌壊
-    },
-
-    // 鑾峰彇鐘舵�侀鑹�
-    getStatusColor(statusClass) {
-      const colorMap = {
-        'status-completed': '#ffffff',
-        'status-processing': '#ffffff',
-        'status-pending': '#ffffff',
-        'status-cancelled': '#ffffff',
-        'status-error': '#ffffff',
-        'status-default': '#ffffff'
-      };
-      return colorMap[statusClass] || '#ffffff';
-    },
-
-    // 鑾峰彇鐘舵�佽儗鏅鑹�
-    getStatusBgColor(statusClass) {
-      const colorMap = {
-        'status-completed': 'rgba(46, 204, 113, 0.7)',
-        'status-processing': 'rgba(52, 152, 219, 0.7)',
-        'status-pending': 'rgba(243, 156, 18, 0.7)',
-        'status-cancelled': 'rgba(149, 165, 166, 0.7)',
-        'status-error': 'rgba(231, 76, 60, 0.7)',     // 閿欒 - 绾㈣壊鑳屾櫙
-        'status-default': 'rgba(127, 140, 141, 0.7)'
-      };
-      return colorMap[statusClass] || 'rgba(127, 140, 141, 0.7)';
-    },
-
-    // 鍚姩鑷姩鍒锋柊
-    startAutoRefresh() {
-      this.refreshInterval = setInterval(() => {
-        this.getTaskData();
-      }, 5000);
-    },
-
-    // 鍋滄鑷姩鍒锋柊
-    stopAutoRefresh() {
-      if (this.refreshInterval) {
-        clearInterval(this.refreshInterval);
-        this.refreshInterval = null;
-      }
-    },
-
-    // 鏍煎紡鍖栨棩鏈燂紙绠�鍖栫増锛�
-    formatDate(dateString) {
-      if (!dateString) return '--';
-      try {
-        const date = new Date(dateString);
-        return date.toLocaleTimeString('zh-CN', {
-          hour: '2-digit',
-          minute: '2-digit',
-          second: '2-digit',
-          hour12: false
-        });
-      } catch (e) {
-        return '--';
-      }
-    },
-
-    // 鑾峰彇浠诲姟绫诲瀷鏂囧瓧
-    getTaskType(task) {
-      const status = task.taskStatus;
-      
-      // 鍏ュ簱寮傚父鐘舵��
-      if (status === 298 || status === 299) {
-        return '鍏ュ簱';
-      }
-      // 鍑哄簱寮傚父鐘舵��
-      else if (status === 198 || status === 199) {
-        return '鍑哄簱';
-      }
-      // 绉诲簱寮傚父
-      else if (status === 999) {
-        return '绉诲簱';
-      }
-      
-      return '鏈煡';
-    },
-
-    // 鏍规嵁鐘舵�佸�艰幏鍙栫姸鎬佹枃瀛楁弿杩�
-    getStatusText(task) {
-      const status = task.taskStatus;
-      
-      const statusMap = {
-        298: '杈撻�佺嚎鍏ュ簱寮傚父',
-        299: '鍫嗗灈鏈哄叆搴撳紓甯�',
-        198: '杈撻�佺嚎鍑哄簱寮傚父',
-        199: '鍫嗗灈鏈哄嚭搴撳紓甯�',
-        999: '绉诲簱寮傚父'
-      };
-      return statusMap[status] || `鏈煡寮傚父(${status})`;
-    },
-
-    // 鑾峰彇鐘舵�佸搴旂殑CSS绫�
-    getStatusClass(task) {
-      const status = task.taskStatus;
-      
-      // 鎵�鏈夎鏄剧ず鐨勭姸鎬侀兘鏄紓甯哥姸鎬�
-      if ([298, 299, 198, 199, 999].includes(status)) {
-        return 'status-error';
-      }
-      return 'status-default';
-    }
-  }
-};
-</script>
-
-<style scoped>
-/* 纭繚婊氬姩琛ㄦ牸姝g‘鏄剧ず */
-dv-scroll-board {
-  font-family: 'Microsoft YaHei', Arial, sans-serif;
-}
-
-/* 閿欒鐘舵�侀棯鐑佸姩鐢� */
-@keyframes pulse {
-  0% {
-    opacity: 1;
-  }
-  50% {
-    opacity: 0.7;
-  }
-  100% {
-    opacity: 1;
-  }
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/right-bottom.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/right-bottom.vue"
deleted file mode 100644
index b1fb54d..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/right-bottom.vue"
+++ /dev/null
@@ -1,194 +0,0 @@
-<!--
- * @Author: daidai
- * @Date: 2022-03-01 15:27:58
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-05-07 11:24:14
- * @FilePath: \web-pc\src\pages\big-screen\view\indexs\right-center.vue
--->
-<template>
-  <div v-if="pageflag" class="right_center_wrap beautify-scroll-def" :class="{ 'overflow-y-auto': !sbtxSwiperFlag }">
-    <component :is="components" :data="list" :class-option="defaultOption">
-      <ul class="right_center ">
-        <li class="right_center_item" v-for="(item, i) in list" :key="i">
-          <span class="orderNum">{{ i + 1 }}</span>
-          <div class="inner_right">
-            <div class="dibu"></div>
-            <div class="flex">
-              <div class="info">
-                <span class="labels ">璁惧ID锛�</span>
-                <span class="contents zhuyao"> {{ item.gatewayno }}</span>
-              </div>
-              <div class="info">
-                <span class="labels">鍨嬪彿锛�</span>
-                <span class="contents "> {{ item.terminalno }}</span>
-              </div>
-              <div class="info">
-                <span class="labels">鍛婅鍊硷細</span>
-                <span class="contents warning"> {{ item.alertvalue | montionFilter }}</span>
-              </div>
-            </div>
-
-
-            <div class="flex">
-
-              <div class="info">
-                <span class="labels"> 鍦板潃锛�</span>
-                <span class="contents ciyao" style="font-size:12px"> {{ item.provinceName }}/{{ item.cityName }}/{{ item.countyName }}</span>
-              </div>
-              <div class="info time">
-                <span class="labels">鏃堕棿锛�</span>
-                <span class="contents" style="font-size:12px"> {{ item.createtime }}</span>
-              </div>
-
-            </div>
-            <div class="flex">
-
-              <div class="info">
-                <span class="labels">鎶ヨ鍐呭锛�</span>
-                <span class="contents ciyao" :class="{ warning: item.alertdetail }"> {{ item.alertdetail || '鏃�'
-                }}</span>
-              </div>
-            </div>
-          </div>
-        </li>
-      </ul>
-    </component>
-  </div>
-  <Reacquire v-else @onclick="getData" style="line-height:200px" />
-
-</template>
-
-<script>
-import { currentGET } from 'api/modules'
-import vueSeamlessScroll from 'vue-seamless-scroll'  // vue2寮曞叆鏂瑰紡
-import Kong from '../../components/kong.vue'
-export default {
-  components: { vueSeamlessScroll, Kong },
-
-  data() {
-    return {
-      list: [],
-      pageflag: true,
-      defaultOption: {
-        ...this.$store.state.setting.defaultOption,
-        limitMoveNum: 3, 
-        singleHeight: 250, 
-        step:0,
-      }
-
-    };
-  },
-  computed: {
-    sbtxSwiperFlag() {
-      let ssyjSwiper = this.$store.state.setting.ssyjSwiper
-      if (ssyjSwiper) {
-        this.components = vueSeamlessScroll
-      } else {
-        this.components = Kong
-      }
-      return ssyjSwiper
-    }
-  },
-  created() {
-    this.getData()
-  },
-
-  mounted() { },
-  methods: {
-    getData() {
-      this.pageflag = true
-      // this.pageflag =false
-      currentGET('big5', { limitNum: 50 }).then(res => {
-        console.log('瀹炴椂棰勮', res);
-        if (res.success) {
-          this.list = res.data.list
-          let timer = setTimeout(() => {
-              clearTimeout(timer)
-              this.defaultOption.step=this.$store.state.setting.defaultOption.step
-          }, this.$store.state.setting.defaultOption.waitTime);
-        } else {
-          this.pageflag = false
-          this.$Message.warning(res.msg)
-        }
-      })
-    },
-
-  },
-};
-</script>
-<style lang='scss' scoped>
-.right_center {
-  width: 100%;
-  height: 100%;
-
-  .right_center_item {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: auto;
-    padding: 10px;
-    font-size: 14px;
-    color: #fff;
-
-    .orderNum {
-      margin: 0 20px 0 -20px;
-    }
-
-
-    .inner_right {
-      position: relative;
-      height: 100%;
-      width: 400px;
-      flex-shrink: 0;
-      line-height: 1.5;
-
-      .dibu {
-        position: absolute;
-        height: 2px;
-        width: 104%;
-        background-image: url("../../assets/img/zuo_xuxian.png");
-        bottom: -12px;
-        left: -2%;
-        background-size: cover;
-      }
-    }
-
-    .info {
-      margin-right: 10px;
-      display: flex;
-      align-items: center;
-
-      .labels {
-        flex-shrink: 0;
-        font-size: 12px;
-        color: rgba(255, 255, 255, 0.6);
-      }
-
-      .zhuyao {
-        color: $primary-color;
-        font-size: 15px;
-      }
-
-      .ciyao {
-        color: rgba(255, 255, 255, 0.8);
-      }
-
-      .warning {
-        color: #E6A23C;
-        font-size: 15px;
-      }
-    }
-
-  }
-}
-
-.right_center_wrap {
-  overflow: hidden;
-  width: 100%;
-  height: 250px;
-}
-
-.overflow-y-auto {
-  overflow-y: auto;
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/right-center.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/right-center.vue"
deleted file mode 100644
index dfb83fd..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/right-center.vue"
+++ /dev/null
@@ -1,485 +0,0 @@
-<template>
-  <div class="task-trend-container">
-    <div class="chart-wrapper">
-      <div class="chart" id="task-trend-chart"></div>
-    </div>
-  </div>
-</template>
-
-<script>
-import * as echarts from "echarts";
-import axios from 'axios';
-
-export default {
-  name: 'TaskTrendChart',
-  data() {
-    return {
-      trendData: [],
-      chart: null,
-      refreshInterval: null,
-      currentTimeRange: 'week' // day, week, month
-    };
-  },
-  mounted() {
-    this.getTrendData();
-    // 鐩戝惉绐楀彛澶у皬鍙樺寲
-    window.addEventListener("resize", this.resizeChart);
-  },
-  beforeDestroy() {
-    this.stopAutoRefresh();
-    window.removeEventListener("resize", this.resizeChart);
-    if (this.chart) {
-      this.chart.dispose();
-      this.chart = null;
-    }
-  },
-  methods: {
-    // 鑾峰彇瓒嬪娍鏁版嵁
-    async getTrendData() {
-      try {
-        const response = await axios.get("http://127.0.0.1:8889/api/Dashboard/TodayTrafficStats");
-        
-        const responseData = response;
-        
-        if (responseData && Array.isArray(responseData)) {
-          // 澶勭悊API杩斿洖鐨勬暟鎹紝娣诲姞鏍煎紡鍖栧悗鐨勬棩鏈熸爣绛�
-          this.trendData = responseData.map(item => ({
-            ...item,
-            dayLabel: this.formatDateLabel(item.date)
-          }));
-          this.initChart();
-        } else {
-          console.error("鑾峰彇浠诲姟瓒嬪娍鏁版嵁澶辫触:", responseData);
-        }
-      } catch (error) {
-        console.error("鑾峰彇浠诲姟瓒嬪娍鏁版嵁澶辫触:", error);
-      }
-    },
-    
-    // 鏍煎紡鍖栨棩鏈熸爣绛撅紙浠�"2026-01-17"鏍煎紡鍖栦负"01-17"锛�
-    formatDateLabel(dateStr) {
-      if (!dateStr) return '';
-      const date = new Date(dateStr);
-      const month = (date.getMonth() + 1).toString().padStart(2, '0');
-      const day = date.getDate().toString().padStart(2, '0');
-      return `${month}-${day}`;
-    },
-    
-    // 鑾峰彇鏃堕棿鑼冨洿鏄剧ず鏍囩
-    getTimeRangeLabel() {
-      const labels = {
-        'day': '浠婃棩',
-        'week': '杩�7澶�',
-        'month': '鏈湀'
-      };
-      return labels[this.currentTimeRange] || '杩�7澶�';
-    },
-    
-    // 鍚姩鑷姩鍒锋柊
-    startAutoRefresh() {
-      if (this.refreshInterval) {
-        clearInterval(this.refreshInterval);
-      }
-      this.refreshInterval = setInterval(() => {
-        this.getTrendData();
-      }, 10000); // 10绉掑埛鏂颁竴娆�
-    },
-    
-    // 鍋滄鑷姩鍒锋柊
-    stopAutoRefresh() {
-      if (this.refreshInterval) {
-        clearInterval(this.refreshInterval);
-        this.refreshInterval = null;
-      }
-    },
-    
-    // 鍒濆鍖栧浘琛�
-    initChart() {
-      const chartDom = document.getElementById('task-trend-chart');
-      if (!chartDom) return;
-      
-      if (this.chart) {
-        this.chart.dispose();
-      }
-      
-      this.chart = echarts.init(chartDom, 'dark');
-      const option = this.getChartOption();
-      this.chart.setOption(option);
-      
-      // 缁戝畾鐐瑰嚮浜嬩欢
-      this.chart.on('click', this.handleChartClick);
-      
-      this.startAutoRefresh();
-    },
-    
-    // 鑾峰彇鍥捐〃閰嶇疆
-    getChartOption() {
-      const dates = this.trendData.map(item => item.dayLabel);
-      const inboundData = this.trendData.map(item => item.inboundCount);
-      const outboundData = this.trendData.map(item => item.outboundCount);
-      const totalData = this.trendData.map(item => item.totalCount);
-      
-      // 璁$畻缁熻鏁版嵁
-      const totalInbound = inboundData.reduce((a, b) => a + b, 0);
-      const totalOutbound = outboundData.reduce((a, b) => a + b, 0);
-      const totalTasks = totalData.reduce((a, b) => a + b, 0);
-      
-      return {
-        backgroundColor: 'transparent',
-        title: {
-          subtext: `${this.getTimeRangeLabel()} | 鍏ュ簱: ${totalInbound} | 鍑哄簱: ${totalOutbound} | 鎬昏: ${totalTasks}`,
-          subtextStyle: {
-            color: '#8ad3ff',
-            fontSize: 12
-          }
-        },
-        tooltip: {
-          trigger: 'axis',
-          axisPointer: {
-            type: 'cross',
-            crossStyle: {
-              color: '#999'
-            }
-          },
-          backgroundColor: 'rgba(0, 0, 0, 0.85)',
-          borderColor: '#00ffff',
-          borderWidth: 1,
-          textStyle: {
-            color: '#ffffff',
-            fontSize: 12
-          },
-          formatter: (params) => {
-            let html = `<div style="font-weight: bold; color: #00ffff; margin-bottom: 8px; border-bottom: 1px solid #00ffff; padding-bottom: 5px;">
-              ${params[0].axisValue} - 浠诲姟缁熻
-            </div>`;
-            
-            params.forEach(param => {
-              const icon = param.seriesType === 'bar' ? '鈻�' : '鈼�';
-              
-              html += `
-                <div style="display: flex; justify-content: space-between; align-items: center; margin: 5px 0;">
-                  <div style="display: flex; align-items: center;">
-                    <span style="color: ${param.color}; margin-right: 8px;">${icon}</span>
-                    <span style="color: #ddd;">${param.seriesName}:</span>
-                  </div>
-                  <span style="font-weight: bold; color: ${param.color};">${param.value}涓�</span>
-                </div>
-              `;
-            });
-            
-            return html;
-          }
-        },
-        legend: {
-          data: ['鍏ュ簱鏁伴噺', '鍑哄簱鏁伴噺', '浠诲姟鎬绘暟'],
-          top: '15%',
-          textStyle: {
-            color: '#ffffff',
-            fontSize: 12
-          },
-          itemStyle: {
-            borderColor: '#00ffff',
-            borderWidth: 1
-          }
-        },
-        grid: {
-          left: '10%',
-          right: '10%',
-          bottom: '15%',
-          top: '25%',
-          containLabel: true
-        },
-        xAxis: [
-          {
-            type: 'category',
-            data: dates,
-            axisPointer: {
-              type: 'shadow'
-            },
-            axisLabel: {
-              color: '#ffffff',
-              fontSize: 12,
-              rotate: dates.length > 7 ? 45 : 0
-            },
-            axisLine: {
-              lineStyle: {
-                color: '#00ffff',
-                width: 2,
-                shadowBlur: 5,
-                shadowColor: '#00ffff'
-              }
-            },
-            axisTick: {
-              show: true,
-              lineStyle: {
-                color: '#00ffff'
-              }
-            }
-          }
-        ],
-        yAxis: [
-          {
-            type: 'value',
-            name: '浠诲姟鏁伴噺 (涓�)',
-            nameTextStyle: {
-              color: '#ffffff',
-              fontSize: 12,
-              textShadow: '0 0 3px #00ffff'
-            },
-            min: 0,
-            axisLabel: {
-              color: '#ffffff',
-              fontSize: 12,
-              formatter: '{value}'
-            },
-            axisLine: {
-              show: true,
-              lineStyle: {
-                color: '#ff416c',
-                width: 2
-              }
-            },
-            splitLine: {
-              lineStyle: {
-                color: 'rgba(255, 65, 108, 0.2)',
-                type: 'dashed'
-              }
-            }
-          }
-        ],
-        series: [
-          {
-            name: '鍏ュ簱鏁伴噺',
-            type: 'bar',
-            yAxisIndex: 0,
-            data: inboundData,
-            barWidth: '30%',
-            itemStyle: {
-              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                { offset: 0, color: '#0080ff' },
-                { offset: 0.5, color: '#0044ff' },
-                { offset: 1, color: '#002288' }
-              ]),
-              borderRadius: [4, 4, 0, 0],
-              borderColor: '#8ad3ff',
-              borderWidth: 1,
-              shadowColor: 'rgba(0, 128, 255, 0.5)',
-              shadowBlur: 10,
-              shadowOffsetY: 3
-            },
-            emphasis: {
-              itemStyle: {
-                shadowColor: 'rgba(0, 128, 255, 0.8)',
-                shadowBlur: 15,
-                borderColor: '#ffffff',
-                borderWidth: 2
-              }
-            },
-            label: {
-              show: true,
-              position: 'top',
-              formatter: '{c}',
-              color: '#8ad3ff',
-              fontSize: 11,
-              fontWeight: 'bold'
-            }
-          },
-          {
-            name: '鍑哄簱鏁伴噺',
-            type: 'bar',
-            yAxisIndex: 0,
-            data: outboundData,
-            barWidth: '30%',
-            itemStyle: {
-              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                { offset: 0, color: '#ff416c' },
-                { offset: 0.5, color: '#ff2b2b' },
-                { offset: 1, color: '#cc0000' }
-              ]),
-              borderRadius: [4, 4, 0, 0],
-              borderColor: '#ff8a8a',
-              borderWidth: 1,
-              shadowColor: 'rgba(255, 65, 108, 0.5)',
-              shadowBlur: 10,
-              shadowOffsetY: 3
-            },
-            emphasis: {
-              itemStyle: {
-                shadowColor: 'rgba(255, 65, 108, 0.8)',
-                shadowBlur: 15,
-                borderColor: '#ffffff',
-                borderWidth: 2
-              }
-            },
-            label: {
-              show: true,
-              position: 'top',
-              formatter: '{c}',
-              color: '#ff8a8a',
-              fontSize: 11,
-              fontWeight: 'bold'
-            }
-          },
-          {
-            name: '浠诲姟鎬绘暟',
-            type: 'line',
-            yAxisIndex: 0,
-            data: totalData,
-            smooth: true,
-            lineStyle: {
-              width: 4,
-              color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
-                { offset: 0, color: '#ffcc00' },
-                { offset: 1, color: '#ff8800' }
-              ]),
-              shadowColor: 'rgba(255, 204, 0, 0.5)',
-              shadowBlur: 10
-            },
-            symbol: 'circle',
-            symbolSize: 10,
-            itemStyle: {
-              color: '#ffcc00',
-              borderColor: '#ffffff',
-              borderWidth: 2
-            },
-            emphasis: {
-              itemStyle: {
-                color: '#ffffff',
-                borderColor: '#ffcc00',
-                borderWidth: 3
-              }
-            },
-            label: {
-              show: true,
-              position: 'top',
-              formatter: '{c}',
-              color: '#ffcc00',
-              fontSize: 12,
-              fontWeight: 'bold',
-              shadowColor: 'rgba(255, 204, 0, 0.5)',
-              shadowBlur: 5
-            },
-            areaStyle: {
-              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                { offset: 0, color: 'rgba(255, 204, 0, 0.3)' },
-                { offset: 1, color: 'rgba(255, 136, 0, 0.1)' }
-              ])
-            }
-          }
-        ],
-        graphic: [
-          {
-            type: 'group',
-            left: 'center',
-            top: '85%',
-            children: [
-
-            ]
-          }
-        ]
-      };
-    },
-    
-    // 澶勭悊鍥捐〃鐐瑰嚮浜嬩欢
-    handleChartClick(params) {
-      // 鍙互鏍规嵁鐐瑰嚮鐨勭郴鍒楁垨鏁版嵁鐐规墽琛岀浉搴旀搷浣�
-    },
-    
-    // 閲嶇粯鍥捐〃
-    resizeChart() {
-      if (this.chart) {
-        this.chart.resize();
-      }
-    }
-  }
-};
-</script>
-
-<style lang="scss" scoped>
-.task-trend-container {
-  width: 100%;
-  height: 100%;
-  padding: 0;
-  background: transparent;
-  position: relative;
-  
-  // 绉戝够鑳屾櫙鏁堟灉
-  &::before {
-    content: '';
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    background: 
-      radial-gradient(circle at 20% 30%, rgba(0, 100, 255, 0.1) 0%, transparent 50%),
-      radial-gradient(circle at 80% 70%, rgba(255, 0, 100, 0.1) 0%, transparent 50%),
-      linear-gradient(45deg, #0a0a0f 0%, #121225 50%, #0a0a1a 100%);
-    z-index: -1;
-  }
-  
-  // 缃戞牸绾挎晥鏋�
-  &::after {
-    content: '';
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    background-image: 
-      linear-gradient(rgba(0, 255, 255, 0.05) 1px, transparent 1px),
-      linear-gradient(90deg, rgba(0, 255, 255, 0.05) 1px, transparent 1px);
-    background-size: 20px 20px;
-    z-index: -1;
-    opacity: 0.3;
-  }
-}
-
-.chart-wrapper {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  overflow: hidden;
-  
-  // 杈规鍏夋晥
-  &::before {
-    content: '';
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    border-radius: 4px;
-    pointer-events: none;
-    z-index: 1;
-  }
-}
-
-.chart {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  z-index: 0;
-}
-
-// 鍝嶅簲寮忚璁�
-@media (max-width: 768px) {
-  .task-trend-container {
-    padding: 10px;
-  }
-  
-  .chart-wrapper {
-    &::before {
-      border-width: 1px;
-    }
-  }
-}
-
-@media (max-width: 480px) {
-  .task-trend-container {
-    &::after {
-      background-size: 15px 15px;
-    }
-  }
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/right-top.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/right-top.vue"
deleted file mode 100644
index dc9d271..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/right-top.vue"
+++ /dev/null
@@ -1,299 +0,0 @@
-<!--
- * @Author: daidai
- * @Date: 2022-03-01 14:13:04
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-09-27 15:04:49
- * @FilePath: \web-pc\src\pages\big-screen\view\indexs\right-top.vue
--->
-<template>
-  <Echart
-    id="rightTop"
-    :options="option"
-    class="right_top_inner"
-    v-if="pageflag"
-    ref="charts"
-  />
-  <Reacquire v-else @onclick="getData" style="line-height: 200px">
-    閲嶆柊鑾峰彇
-  </Reacquire>
-</template>
-
-<script>
-import { currentGET } from "api/modules";
-import {graphic} from "echarts"
-export default {
-  data() {
-    return {
-      option: {},
-      pageflag: false,
-      timer: null,
-    };
-  },
-  created() {
-   
-  },
-
-  mounted() {
-     this.getData();
-  },
-  beforeDestroy() {
-    this.clearData();
-  },
-  methods: {
-    clearData() {
-      if (this.timer) {
-        clearInterval(this.timer);
-        this.timer = null;
-      }
-    },
-    getData() {
-      this.pageflag = true;
-      // this.pageflag =false
-      currentGET("big4").then((res) => {
-        if (!this.timer) {
-          console.log("鎶ヨ娆℃暟", res);
-        }
-        if (res.success) {
-          this.countUserNumData = res.data;
-          this.$nextTick(() => {
-            this.init(res.data.dateList, res.data.numList, res.data.numList2),
-              this.switper();
-          });
-        } else {
-          this.pageflag = false;
-          this.$Message({
-            text: res.msg,
-            type: "warning",
-          });
-        }
-      });
-    },
-    //杞
-    switper() {
-      if (this.timer) {
-        return;
-      }
-      let looper = (a) => {
-        this.getData();
-      };
-      this.timer = setInterval(
-        looper,
-        this.$store.state.setting.echartsAutoTime
-      );
-      let myChart = this.$refs.charts.chart;
-      myChart.on("mouseover", (params) => {
-        this.clearData();
-      });
-      myChart.on("mouseout", (params) => {
-        this.timer = setInterval(
-          looper,
-          this.$store.state.setting.echartsAutoTime
-        );
-      });
-    },
-    init(xData, yData, yData2) {
-      this.option = {
-        xAxis: {
-          type: "category",
-          data: xData,
-          boundaryGap: false, // 涓嶇暀鐧斤紝浠庡師鐐瑰紑濮�
-          splitLine: {
-            show: true,
-            lineStyle: {
-              color: "rgba(31,99,163,.2)",
-            },
-          },
-          axisLine: {
-            // show:false,
-            lineStyle: {
-              color: "rgba(31,99,163,.1)",
-            },
-          },
-          axisLabel: {
-            color: "#7EB7FD",
-            fontWeight: "500",
-          },
-        },
-        yAxis: {
-          type: "value",
-          splitLine: {
-            show: true,
-            lineStyle: {
-              color: "rgba(31,99,163,.2)",
-            },
-          },
-          axisLine: {
-            lineStyle: {
-              color: "rgba(31,99,163,.1)",
-            },
-          },
-          axisLabel: {
-            color: "#7EB7FD",
-            fontWeight: "500",
-          },
-        },
-        tooltip: {
-          trigger: "axis",
-          backgroundColor: "rgba(0,0,0,.6)",
-          borderColor: "rgba(147, 235, 248, .8)",
-          textStyle: {
-            color: "#FFF",
-          },
-        },
-        grid: {
-          //甯冨眬
-          show: true,
-          left: "10px",
-          right: "30px",
-          bottom: "10px",
-          top: "28px",
-          containLabel: true,
-          borderColor: "#1F63A3",
-        },
-        series: [
-          {
-            data: yData,
-            type: "line",
-            smooth: true,
-            symbol: "none", //鍘婚櫎鐐�
-            name: "鎶ヨ1娆℃暟",
-            color: "rgba(252,144,16,.7)",
-            areaStyle: {
-                //鍙筹紝涓嬶紝宸︼紝涓�
-                color: new graphic.LinearGradient(
-                  0,
-                  0,
-                  0,
-                  1,
-                  [
-                    {
-                      offset: 0,
-                      color: "rgba(252,144,16,.7)",
-                    },
-                    {
-                      offset: 1,
-                      color: "rgba(252,144,16,.0)",
-                    },
-                  ],
-                  false
-                ),
-            },
-            markPoint: {
-              data: [
-                {
-                  name: "鏈�澶у��",
-                  type: "max",
-                  valueDim: "y",
-                  symbol: "rect",
-                  symbolSize: [60, 26],
-                  symbolOffset: [0, -20],
-                  itemStyle: {
-                    color: "rgba(0,0,0,0)",
-                  },
-                  label: {
-                    color: "#FC9010",
-                    backgroundColor: "rgba(252,144,16,0.1)",
-                    borderRadius: 6,
-                    padding: [7, 14],
-                    borderWidth: 0.5,
-                    borderColor: "rgba(252,144,16,.5)",
-                    formatter: "鎶ヨ1锛歿c}",
-                  },
-                },
-                {
-                  name: "鏈�澶у��",
-                  type: "max",
-                  valueDim: "y",
-                  symbol: "circle",
-                  symbolSize: 6,
-                  itemStyle: {
-                    color: "#FC9010",
-                    shadowColor: "#FC9010",
-                    shadowBlur: 8,
-                  },
-                  label: {
-                    formatter: "",
-                  },
-                },
-              ],
-            },
-          },
-          {
-            data: yData2,
-            type: "line",
-            smooth: true,
-            symbol: "none", //鍘婚櫎鐐�
-            name: "鎶ヨ2娆℃暟",
-            color: "rgba(9,202,243,.7)",
-            areaStyle: {
-                //鍙筹紝涓嬶紝宸︼紝涓�
-                color: new graphic.LinearGradient(
-                  0,
-                  0,
-                  0,
-                  1,
-                  [
-                    {
-                      offset: 0,
-                      color: "rgba(9,202,243,.7)",
-                    },
-                    {
-                      offset: 1,
-                      color: "rgba(9,202,243,.0)",
-                    },
-                  ],
-                  false
-                ),
-            },
-            markPoint: {
-              data: [
-                {
-                  name: "鏈�澶у��",
-                  type: "max",
-                  valueDim: "y",
-                  symbol: "rect",
-                  symbolSize: [60, 26],
-                  symbolOffset: [0, -20],
-                  itemStyle: {
-                    color: "rgba(0,0,0,0)",
-                  },
-                  label: {
-                    color: "#09CAF3",
-                    backgroundColor: "rgba(9,202,243,0.1)",
-
-                    borderRadius: 6,
-                    borderColor: "rgba(9,202,243,.5)",
-                    padding: [7, 14],
-                    formatter: "鎶ヨ2锛歿c}",
-                    borderWidth: 0.5,
-                  },
-                },
-                {
-                  name: "鏈�澶у��",
-                  type: "max",
-                  valueDim: "y",
-                  symbol: "circle",
-                  symbolSize: 6,
-                  itemStyle: {
-                    color: "#09CAF3",
-                    shadowColor: "#09CAF3",
-                    shadowBlur: 8,
-                  },
-                  label: {
-                    formatter: "",
-                  },
-                },
-              ],
-            },
-          },
-        ],
-      };
-    },
-  },
-};
-</script>
-<style lang='scss' scoped>
-.right_top_inner {
-  margin-top: -8px;
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc01-location-status.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc01-location-status.vue"
index 257a0c4..6365f48 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc01-location-status.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc01-location-status.vue"
@@ -25,7 +25,7 @@
     // 姣�10绉掑埛鏂颁竴娆℃暟鎹�
     this.refreshInterval = setInterval(() => {
       this.getData();
-    }, 10000);
+    }, 30000);
   },
   beforeDestroy() {
     if (this.chart) {
@@ -61,21 +61,33 @@
           }
         },
         legend: {
-          orient: 'vertical',
-          right: '10%',
-          top: 'center',
+          orient: 'horizontal',
+          bottom: '10%',
+          left: 'center',
           textStyle: {
             color: '#fff',
-            fontSize: 14
+            fontSize: 20
           },
-          data: ['绌洪棽', '鏈夎揣', '鏈夎揣閿佸畾']
+          data: ['绌洪棽', '鏈夎揣', '鏈夎揣閿佸畾'],
+          width: '80%',
+          itemWidth: 20,
+          itemHeight: 14,
+          itemGap: 30,
+          formatter: function(name) {
+            let value = 0;
+            if (name === '绌洪棽') value = this.locationData.free;
+            if (name === '鏈夎揣') value = this.locationData.occupied;
+            if (name === '鏈夎揣閿佸畾') value = this.locationData.locked;
+            return `${name}\n${value}`;
+          }.bind(this),
+          selectedMode: 'multiple'
         },
         series: [
           {
             name: 'SC01璐т綅鐘舵��',
             type: 'pie',
-            radius: ['50%', '70%'],
-            center: ['40%', '50%'],
+            radius: ['40%', '75%'],
+            center: ['50%', '45%'],
             avoidLabelOverlap: true,
             itemStyle: {
               borderRadius: 4,
@@ -86,12 +98,12 @@
               show: true,
               formatter: '{b}: {c}',
               color: '#fff',
-              fontSize: 14
+              fontSize: 20
             },
             emphasis: {
               label: {
                 show: true,
-                fontSize: 16,
+                fontSize: 20,
                 fontWeight: 'bold'
               },
               itemStyle: {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc01-task-info.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc01-task-info.vue"
index 6a3946c..cbb5915 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc01-task-info.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc01-task-info.vue"
@@ -28,7 +28,7 @@
     // 鑾峰彇浠诲姟鏁版嵁
     getTaskData() {
       import('@/api/api').then(({ WCS_GET }) => {
-        WCS_GET('/api/Task/GetRoadwayTaskProgress', { roadway: 'SC01' })
+        WCS_GET("/api/Task/GetRoadwayTaskProgress", { roadway: 'SC01' })
           .then((response) => {
             console.log("SC01浠诲姟鏁版嵁鍝嶅簲:", response);
 
@@ -202,7 +202,7 @@
     startAutoRefresh() {
       this.refreshInterval = setInterval(() => {
         this.getTaskData();
-      }, 10000);
+      }, 30000);
     },
 
     // 鍋滄鑷姩鍒锋柊
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc02-location-status.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc02-location-status.vue"
index a9eb338..fdb8280 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc02-location-status.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc02-location-status.vue"
@@ -25,7 +25,7 @@
     // 姣�10绉掑埛鏂颁竴娆℃暟鎹�
     this.refreshInterval = setInterval(() => {
       this.getData();
-    }, 10000);
+    }, 30000);
   },
   beforeDestroy() {
     if (this.chart) {
@@ -61,21 +61,33 @@
           }
         },
         legend: {
-          orient: 'vertical',
-          right: '10%',
-          top: 'center',
+          orient: 'horizontal',
+          bottom: '10%',
+          left: 'center',
           textStyle: {
             color: '#fff',
-            fontSize: 14
+            fontSize: 20
           },
-          data: ['绌洪棽', '鏈夎揣', '鏈夎揣閿佸畾']
+          data: ['绌洪棽', '鏈夎揣', '鏈夎揣閿佸畾'],
+          width: '80%',
+          itemWidth: 20,
+          itemHeight: 14,
+          itemGap: 30,
+          formatter: function(name) {
+            let value = 0;
+            if (name === '绌洪棽') value = this.locationData.free;
+            if (name === '鏈夎揣') value = this.locationData.occupied;
+            if (name === '鏈夎揣閿佸畾') value = this.locationData.locked;
+            return `${name}\n${value}`;
+          }.bind(this),
+          selectedMode: 'multiple'
         },
         series: [
           {
             name: 'SC02璐т綅鐘舵��',
             type: 'pie',
-            radius: ['50%', '70%'],
-            center: ['40%', '50%'],
+            radius: ['40%', '75%'],
+            center: ['50%', '45%'],
             avoidLabelOverlap: true,
             itemStyle: {
               borderRadius: 4,
@@ -86,12 +98,12 @@
               show: true,
               formatter: '{b}: {c}',
               color: '#fff',
-              fontSize: 14
+              fontSize: 20
             },
             emphasis: {
               label: {
                 show: true,
-                fontSize: 16,
+                fontSize: 20,
                 fontWeight: 'bold'
               },
               itemStyle: {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc02-task-info.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc02-task-info.vue"
index fc8e8ad..874c886 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc02-task-info.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/sc02-task-info.vue"
@@ -202,7 +202,7 @@
     startAutoRefresh() {
       this.refreshInterval = setInterval(() => {
         this.getTaskData();
-      }, 10000);
+      }, 30000);
     },
 
     // 鍋滄鑷姩鍒锋柊
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-four.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-four.vue"
deleted file mode 100644
index f402bb9..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-four.vue"
+++ /dev/null
@@ -1,461 +0,0 @@
-<template>
-  <div class="warehouse-capacity-container">
-    <div class="chart-wrapper">
-      <div class="chart" id="warehouse-chart"></div>
-    </div>
-  </div>
-</template>
-
-<script>
-import * as echarts from "echarts";
-import axios from 'axios';
-
-export default {
-  name: 'WarehouseCapacity',
-  data() {
-    return {
-      warehouseData: [],
-      chart: null,
-      refreshInterval: null
-    };
-  },
-  mounted() {
-    this.getWarehouseData();
-    
-    // 鐩戝惉绐楀彛澶у皬鍙樺寲锛岄噸缁樺浘琛�
-    window.addEventListener("resize", this.resizeChart);
-  },
-  beforeDestroy() {
-    this.stopAutoRefresh();
-    window.removeEventListener("resize", this.resizeChart);
-    
-    // 閿�姣佸浘琛ㄥ疄渚�
-    if (this.chart) {
-      this.chart.dispose();
-      this.chart = null;
-    }
-  },
-  methods: {
-    // 鑾峰彇浠撳簱鏁版嵁
-    async getWarehouseData() {
-      try {
-        const response = await axios.get("http://127.0.0.1:8889/api/Dashboard/Warehouse");
-
-        // 鏍规嵁API鍝嶅簲缁撴瀯鑾峰彇鏁版嵁
-        const responseData = response;
-        
-        if (responseData && Array.isArray(responseData)) {
-          // 鍙彇鍓嶄袱涓粨搴撶殑鏁版嵁
-          const apiData = responseData;
-          
-          // 杞崲鏁版嵁缁撴瀯浠ラ�傚簲鍥捐〃
-          this.warehouseData = apiData.map(item => ({
-            warehouseId: item.warehouseId,
-            freeLocations: item.freeLocations,
-            remainingCapacityPercentage: item.remainingCapacityPercentage,
-            // 璁$畻宸蹭娇鐢ㄧ櫨鍒嗘瘮锛�100 - 鍓╀綑瀹归噺鐧惧垎姣旓級
-            usagePercentage: 100 - item.remainingCapacityPercentage,
-            // 妯℃嫙鎬昏揣浣嶆暟锛堟牴鎹疄闄呮儏鍐佃皟鏁达級
-            totalLocations: Math.round(item.freeLocations / (item.remainingCapacityPercentage / 100)),
-            // 璁$畻宸蹭娇鐢ㄨ揣浣嶆暟
-            usedLocations: Math.round(item.freeLocations / (item.remainingCapacityPercentage / 100)) - item.freeLocations
-          }));
-          
-          this.$nextTick(() => {
-            this.initChart();
-          });
-        } else {
-          console.warn("鑾峰彇浠撳簱鏁版嵁澶辫触鎴栨暟鎹牸寮忎笉姝g‘");
-          this.warehouseData = [];
-          this.$nextTick(() => {
-            this.initChart();
-          });
-        }
-      } catch (error) {
-        console.error("鑾峰彇浠撳簱鏁版嵁澶辫触:", error);
-        this.warehouseData = [];
-        this.$nextTick(() => {
-          this.initChart();
-        });
-      }
-    },
-    
-    // 鍚姩鑷姩鍒锋柊
-    startAutoRefresh() {
-      if (this.refreshInterval) {
-        clearInterval(this.refreshInterval);
-      }
-      this.refreshInterval = setInterval(() => {
-        this.getWarehouseData();
-      }, 10000); 
-    },
-    
-    // 鍋滄鑷姩鍒锋柊
-    stopAutoRefresh() {
-      if (this.refreshInterval) {
-        clearInterval(this.refreshInterval);
-        this.refreshInterval = null;
-      }
-    },
-    
-    // 鍒濆鍖栧浘琛�
-    initChart() {
-      const chartDom = document.getElementById('warehouse-chart');
-      
-      if (chartDom) {
-        // 濡傛灉宸叉湁鍥捐〃瀹炰緥锛屽厛閿�姣�
-        if (this.chart) {
-          this.chart.dispose();
-        }
-        
-        // 鍒涘缓鏂扮殑鍥捐〃瀹炰緥
-        this.chart = echarts.init(chartDom, 'dark');
-        
-        // 妫�鏌ユ槸鍚︽湁鏁版嵁
-        if (this.warehouseData.length === 0) {
-          // 濡傛灉娌℃湁鏁版嵁锛屾樉绀虹┖鐘舵��
-          this.chart.setOption({
-            title: {
-              text: '鏆傛棤鏁版嵁',
-              left: 'center',
-              top: 'center',
-              textStyle: {
-                color: '#aaa',
-                fontSize: 16
-              }
-            }
-          });
-          return;
-        }
-        
-        // 璁剧疆鍥捐〃閰嶇疆
-        const option = this.getChartOption();
-        this.chart.setOption(option);
-        
-        // 鍚姩鑷姩鍒锋柊
-        this.startAutoRefresh();
-      }
-    },
-    
-    // 鑾峰彇鍥捐〃閰嶇疆 - 绉戝够椋庢牸鏌辩姸鍥�
-    getChartOption() {
-      // 鎻愬彇涓や釜浠撳簱鐨勬暟鎹�
-      const warehouse1 = this.warehouseData[0] || {};
-      const warehouse2 = this.warehouseData[1] || {};
-      
-      const warehouse1Usage = warehouse1.usagePercentage || 0;
-      const warehouse1Free = warehouse1.remainingCapacityPercentage || 0;
-      const warehouse1Total = warehouse1.totalLocations || 0;
-      const warehouse1Used = warehouse1.usedLocations || 0;
-      const warehouse1FreeLoc = warehouse1.freeLocations || 0;
-      
-      const warehouse2Usage = warehouse2.usagePercentage || 0;
-      const warehouse2Free = warehouse2.remainingCapacityPercentage || 0;
-      const warehouse2Total = warehouse2.totalLocations || 0;
-      const warehouse2Used = warehouse2.usedLocations || 0;
-      const warehouse2FreeLoc = warehouse2.freeLocations || 0;
-      
-      // 浠撳簱鍚嶇О
-      const warehouse1Name = this.getWarehouseName(warehouse1.warehouseId || 1);
-      const warehouse2Name = this.getWarehouseName(warehouse2.warehouseId || 2);
-      
-      return {
-        backgroundColor: 'transparent',
-        tooltip: {
-          trigger: 'axis',
-          axisPointer: {
-            type: 'shadow'
-          },
-          backgroundColor: 'rgba(0, 0, 0, 0.8)',
-          borderColor: '#00ffff',
-          borderWidth: 1,
-          textStyle: {
-            color: '#ffffff',
-            fontSize: 12
-          },
-          formatter: (params) => {
-            const data = params[0];
-            const warehouseIndex = data.dataIndex;
-            const warehouse = warehouseIndex === 0 ? warehouse1 : warehouse2;
-            const usage = warehouseIndex === 0 ? warehouse1Usage : warehouse2Usage;
-            const free = warehouseIndex === 0 ? warehouse1Free : warehouse2Free;
-            const used = warehouseIndex === 0 ? warehouse1Used : warehouse2Used;
-            const freeLoc = warehouseIndex === 0 ? warehouse1FreeLoc : warehouse2FreeLoc;
-            const total = warehouseIndex === 0 ? warehouse1Total : warehouse2Total;
-            const name = warehouseIndex === 0 ? warehouse1Name : warehouse2Name;
-            
-            return `
-              <div style="font-weight: bold; color: #00ffff; margin-bottom: 8px; border-bottom: 1px solid #00ffff; padding-bottom: 5px;">
-                ${name} - 瀹归噺鐘舵��
-              </div>
-              <div style="display: flex; align-items: center; margin: 5px 0;">
-                <span style="display: inline-block; width: 10px; height: 10px; background: linear-gradient(45deg, #ff416c, #ff4b2b); margin-right: 8px; border-radius: 2px;"></span>
-                <span style="color: #ff8a8a;">宸蹭娇鐢細</span>
-                <span style="font-weight: bold; color: #ff416c; margin-left: 5px;">${usage.toFixed(1)}% (${used.toLocaleString()}璐т綅)</span>
-              </div>
-              <div style="display: flex; align-items: center; margin: 5px 0;">
-                <span style="display: inline-block; width: 10px; height: 10px; background: linear-gradient(45deg, #00ffff, #0080ff); margin-right: 8px; border-radius: 2px;"></span>
-                <span style="color: #8ad3ff;">绌洪棽锛�</span>
-                <span style="font-weight: bold; color: #00ffff; margin-left: 5px;">${free.toFixed(1)}% (${freeLoc.toLocaleString()}璐т綅)</span>
-              </div>
-              <div style="margin-top: 8px; padding-top: 8px; border-top: 1px dashed #555; color: #aaa; font-size: 11px;">
-                鎬诲閲�: ${total.toLocaleString()}璐т綅 | 鐘舵��: ${usage > 80 ? '鈿� 楂樿礋鑽�' : usage > 50 ? '鉁� 姝e父' : '鈼� 绌洪棽'}
-              </div>
-            `;
-          }
-        },
-        legend: {
-          data: ['宸蹭娇鐢ㄥ閲�', '鍓╀綑瀹归噺'],
-          top: '5%',
-          textStyle: {
-            color: '#ffffff',
-            fontSize: 12,
-            fontWeight: 'bold'
-          },
-          itemStyle: {
-            borderColor: '#00ffff',
-            borderWidth: 1
-          }
-        },
-        grid: {
-          left: '10%',
-          right: '10%',
-          bottom: '15%',
-          top: '20%',
-          containLabel: true
-        },
-        xAxis: {
-          type: 'category',
-          data: [warehouse1Name, warehouse2Name],
-          axisLabel: {
-            color: '#ffffff',
-            fontSize: 14,
-            fontWeight: 'bold',
-            textShadow: '0 0 5px #00ffff'
-          },
-          axisLine: {
-            lineStyle: {
-              color: '#00ffff',
-              width: 2,
-              shadowBlur: 10,
-              shadowColor: '#00ffff'
-            }
-          },
-          axisTick: {
-            show: false
-          }
-        },
-        yAxis: {
-          type: 'value',
-          name: '瀹归噺鐧惧垎姣� (%)',
-          nameTextStyle: {
-            color: '#ffffff',
-            fontSize: 12,
-            fontWeight: 'bold',
-            textShadow: '0 0 3px #00ffff'
-          },
-          min: 0,
-          max: 100,
-          axisLabel: {
-            color: '#ffffff',
-            fontSize: 12,
-            formatter: '{value}%',
-            textShadow: '0 0 3px #00ffff'
-          },
-          axisLine: {
-            show: true,
-            lineStyle: {
-              color: '#00ffff',
-              width: 2,
-              shadowBlur: 10,
-              shadowColor: '#00ffff'
-            }
-          },
-          splitLine: {
-            lineStyle: {
-              color: 'rgba(0, 255, 255, 0.2)',
-              type: 'dashed'
-            }
-          }
-        },
-        series: [
-          {
-            name: '宸蹭娇鐢ㄥ閲�',
-            type: 'bar',
-            data: [warehouse1Usage, warehouse2Usage],
-            barWidth: '30%',
-            itemStyle: {
-              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                { offset: 0, color: '#ff416c' },
-                { offset: 0.5, color: '#ff4b2b' },
-                { offset: 1, color: '#ff2300' }
-              ]),
-              borderRadius: [4, 4, 0, 0],
-              borderColor: '#ff8a8a',
-              borderWidth: 1,
-              shadowColor: 'rgba(255, 65, 108, 0.5)',
-              shadowBlur: 10,
-              shadowOffsetY: 3
-            },
-            label: {
-              show: true,
-              position: 'top',
-              formatter: '{c}%',
-              color: '#ff416c',
-              fontSize: 14,
-              fontWeight: 'bold',
-              textShadow: '0 0 5px #ff416c'
-            },
-            emphasis: {
-              itemStyle: {
-                shadowColor: 'rgba(255, 65, 108, 0.8)',
-                shadowBlur: 15,
-                borderColor: '#ffffff',
-                borderWidth: 2
-              }
-            }
-          },
-          {
-            name: '鍓╀綑瀹归噺',
-            type: 'bar',
-            data: [warehouse1Free, warehouse2Free],
-            barWidth: '30%',
-            barGap: '10%',
-            itemStyle: {
-              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                { offset: 0, color: '#00ffff' },
-                { offset: 0.5, color: '#0080ff' },
-                { offset: 1, color: '#0044ff' }
-              ]),
-              borderRadius: [4, 4, 0, 0],
-              borderColor: '#8ad3ff',
-              borderWidth: 1,
-              shadowColor: 'rgba(0, 255, 255, 0.5)',
-              shadowBlur: 10,
-              shadowOffsetY: 3
-            },
-            label: {
-              show: true,
-              position: 'top',
-              formatter: '{c}%',
-              color: '#00ffff',
-              fontSize: 14,
-              fontWeight: 'bold',
-              textShadow: '0 0 5px #00ffff'
-            },
-            emphasis: {
-              itemStyle: {
-                shadowColor: 'rgba(0, 255, 255, 0.8)',
-                shadowBlur: 15,
-                borderColor: '#ffffff',
-                borderWidth: 2
-              }
-            }
-          }
-        ]
-      };
-    },
-    
-    // 鑾峰彇浠撳簱鍚嶇О
-    getWarehouseName(id) {
-      const nameMap = {
-        1: '鍘熸枡浠�',
-        2: '鎴愬搧浠�',
-      };
-      return nameMap[id] || `浠撳簱${id}`;
-    },
-    
-    // 閲嶇粯鍥捐〃
-    resizeChart() {
-      if (this.chart) {
-        this.chart.resize();
-      }
-    }
-  }
-};
-</script>
-
-<style lang="scss" scoped>
-.warehouse-capacity-container {
-  width: 100%;
-  height: 100%;
-  padding: 0;
-  background: transparent;
-  position: relative;
-  
-  // 绉戝够鑳屾櫙鏁堟灉
-  &::before {
-    content: '';
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    z-index: -1;
-  }
-  
-  // 缃戞牸绾挎晥鏋�
-  &::after {
-    content: '';
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    z-index: -1;
-    opacity: 0.3;
-  }
-}
-
-.chart-wrapper {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  overflow: hidden;
-  
-  // 杈规鍏夋晥
-  &::before {
-    content: '';
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    // border: 1px solid rgba(0, 255, 255, 0.3);
-    border-radius: 4px;
-    // box-shadow: 
-    //   0 0 10px rgba(0, 255, 255, 0.3),
-    //   inset 0 0 10px rgba(0, 255, 255, 0.1);
-    pointer-events: none;
-    z-index: 1;
-  }
-}
-
-.chart {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  z-index: 0;
-}
-
-// 鍝嶅簲寮忚璁�
-@media (max-width: 768px) {
-  .warehouse-capacity-container {
-    padding: 10px;
-  }
-  
-  .chart-wrapper {
-    &::before {
-      border-width: 1px;
-    }
-  }
-}
-
-@media (max-width: 480px) {
-  .warehouse-capacity-container {
-    &::after {
-      background-size: 15px 15px;
-    }
-  }
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-one.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-one.vue"
deleted file mode 100644
index 5829a62..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-one.vue"
+++ /dev/null
@@ -1,229 +0,0 @@
-<!--
- * @Author: daidai
- * @Date: 2022-02-28 16:16:42
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-07-20 17:57:11
- * @FilePath: \web-pc\src\pages\big-screen\view\indexs\left-center.vue
--->
-<template>
-    <ul class="user_Overview flex" v-if="pageflag">
-        <li class="user_Overview-item" style="color: #00fdfa">
-            <div class="user_Overview_nums allnum ">
-                <dv-digital-flop :config="onlineconfig" style="width:100%;height:100%;" />
-            </div>
-            <p>1鍙锋淇彴</p>
-            <br>
-            <p>{{stationstate[0].station_state}}</p>
-        </li>
-        <li class="user_Overview-item" style="color: #07f7a8">
-            <div class="user_Overview_nums online">
-                <dv-digital-flop :config="config" style="width:100%;height:100%;" />
-            </div>
-            <p>2鍙锋淇彴</p>
-            <br>
-            <p>{{stationstate[1].station_state}}</p>
-        </li>
-        <li class="user_Overview-item" style="color: #e3b337">
-            <div class="user_Overview_nums offline">
-                <dv-digital-flop :config="offlineconfig" style="width:100%;height:100%;" />
-            </div>
-            <p>3鍙锋淇彴</p>
-            <br>
-            <p>{{stationstate[2].station_state}}</p>
-        </li>
-      
-    </ul>
-    <Reacquire v-else @onclick="getData" line-height="200px">
-        閲嶆柊鑾峰彇
-    </Reacquire>
-</template>
-
-<script>
-import { currentGET } from 'api/modules'
-import {Floorfault} from "@/api/http.js"
-let style = {
-    fontSize: 24
-}
-export default {
-    data() {
-        return {
-            options: {},
-            userOverview: {
-                alarmNum: 2,
-                offlineNum: 3,
-                onlineNum: 5,
-                totalNum: 10,
-            },
-            stationstate:[],
-            pageflag: true,
-            timer: null,
-            config: {
-                number: [100],
-                content: '{nt}',
-                style: {
-                    ...style,
-                    // stroke: "#00fdfa",
-                    fill: "#00fdfa",
-                },
-            },
-            onlineconfig: {
-                number: [0],
-                content: '{nt}',
-                style: {
-                    ...style,
-                    // stroke: "#07f7a8",
-                    fill: "#07f7a8",
-                },
-            },
-        };
-    },
-    filters: {
-        numsFilter(msg) {
-            return msg || 0;
-        },
-    },
-    created() {
-        this.getData()
-    },
-    mounted() {
-    },
-    beforeDestroy() {
-        this.clearData()
-
-    },
-    methods: {
-        clearData() {
-            if (this.timer) {
-                clearInterval(this.timer)
-                this.timer = null
-            }
-        },
-        async getData() {
-            this.pageflag = true;
-            // currentGET("big2").then((res) => {
-            //     if (!this.timer) {
-            //         console.log("璁惧鎬昏2", res);
-            //     }
-            //     if (res.success) {
-            //         this.userOverview = res.data;
-            //            this.onlineconfig = {
-            //             ...this.onlineconfig,
-            //             number: [1]
-            //         }
-            //         this.config = {
-            //             ...this.config,
-            //             number: [7]
-            //         }
-            //         this.offlineconfig = {
-            //             ...this.offlineconfig,
-            //             number: [4]
-            //         }
-            //         this.laramnumconfig = {
-            //             ...this.laramnumconfig,
-            //             number: [10]
-            //         }
-            //         this.switper();  
-            //     } else {
-            //         this.pageflag = false;
-            //         this.$Message.warning(res.msg);
-            //     }
-            // });
-                    let rep = await Floorfault((a)=>{
-                    });
-                    this.stationstate=rep;
-                    console.log(rep);
-                       this.onlineconfig = {
-                        ...this.onlineconfig,
-                        number: [rep[0].station_qty]
-                    }
-                    this.config = {
-                        ...this.config,
-                        number: [rep[1].station_qty]
-                    }
-                    this.offlineconfig = {
-                        ...this.offlineconfig,
-                        number: [rep[2].station_qty]
-                    }
-                    this.switper(); 
-        },
-        //杞
-        switper() {
-            if (this.timer) {
-                return
-            }
-            let looper = (a) => {
-                this.getData()
-            };
-            this.timer = setInterval(looper, this.$store.state.setting.echartsAutoTime);
-        },
-    },
-};
-</script>
-<style lang='scss' scoped>
-.user_Overview {
-    li {
-        flex: 1;
-
-        p {
-            text-align: center;
-            height: 16px;
-            font-size: 16px;
-        }
-
-        .user_Overview_nums {
-            width: 100px;
-            height: 100px;
-            text-align: center;
-            line-height: 100px;
-            font-size: 22px;
-            margin: 50px auto 30px;
-            background-size: cover;
-            background-position: center center;
-            position: relative;
-
-            &::before {
-                content: '';
-                position: absolute;
-                width: 100%;
-                height: 100%;
-                top: 0;
-                left: 0;
-            }
-
-            &.bgdonghua::before {
-                animation: rotating 14s linear infinite;
-            }
-        }
-
-        .allnum {
-
-            // background-image: url("../../assets/img/left_top_lan.png");
-            &::before {
-                background-image: url("../../assets/img/left_top_lan.png");
-
-            }
-        }
-
-        .online {
-            &::before {
-                background-image: url("../../assets/img/left_top_lv.png");
-
-            }
-        }
-
-        .offline {
-            &::before {
-                background-image: url("../../assets/img/left_top_huang.png");
-
-            }
-        }
-
-        .laramnum {
-            &::before {
-                background-image: url("../../assets/img/left_top_hong.png");
-
-            }
-        }
-    }
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-three.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-three.vue"
deleted file mode 100644
index d3396c2..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-three.vue"
+++ /dev/null
@@ -1,725 +0,0 @@
-<template>
-  <div class="dashboard-container">
-    <div class="warehouse-charts-container" v-if="pageflag">
-      <div class="warehouse-charts vertical-layout">
-        <!-- 鍘熸枡浠� - 涓婃柟 -->
-        <div class="warehouse-chart-item material-chart">
-          <div class="chart-header">
-            <h3 class="chart-title" style="color: #07f7a8">
-              <span>鍘熸枡浠�</span>
-              <span class="total-count">浠诲姟鎬绘暟: {{materialWarehouseData.totalCount || 0}}</span>
-            </h3>
-          </div>
-          <div 
-            id="materialWarehouseChart" 
-            class="warehouse-chart" 
-            ref="materialChart"
-          ></div>
-        </div>
-        
-        <!-- 鎴愬搧浠� - 涓嬫柟 -->
-        <div class="warehouse-chart-item finished-chart">
-          <div class="chart-header">
-            <h3 class="chart-title" style="color: #00fdfa">
-              <span>鎴愬搧浠�</span>
-              <span class="total-count">浠诲姟鎬绘暟: {{finishedWarehouseData.totalCount || 0}}</span>
-            </h3>
-          </div>
-          <div 
-            id="finishedWarehouseChart" 
-            class="warehouse-chart" 
-            ref="finishedChart"
-          ></div>
-        </div>
-      </div>
-    </div>
-    
-    <Reacquire v-else @onclick="getData" line-height="200px">
-      閲嶆柊鑾峰彇
-    </Reacquire>
-  </div>
-</template>
-
-<script>
-import * as echarts from "echarts";
-import axios from 'axios';
-
-export default {
-  name: 'WarehouseTaskDistribution',
-  data() {
-    return {
-      // 浠撳簱鏁版嵁
-      finishedWarehouseData: {
-        warehouseId: 2,
-        stats: [],
-        totalCount: 0
-      },
-      materialWarehouseData: {
-        warehouseId: 1,
-        stats: [],
-        totalCount: 0
-      },
-      
-      // 鐘舵�佹爣蹇�
-      pageflag: true,
-      chartsInitialized: false,
-      
-      // 瀹氭椂鍣� - 10绉掑埛鏂�
-      refreshTimer: null,
-      resizeTimer: null,
-      
-      // ECharts瀹炰緥
-      finishedWarehouseChart: null,
-      materialWarehouseChart: null
-    };
-  },
-  
-  created() {
-    this.getData();
-  },
-  
-  mounted() {
-    // 鍒濆鍖栧浘琛�
-    this.$nextTick(() => {
-      this.initCharts();
-    });
-    
-    // 椤甸潰鍙鎬х洃鍚�
-    document.addEventListener('visibilitychange', this.handleVisibilityChange);
-    
-    // 鐩戝惉绐楀彛澶у皬鍙樺寲
-    window.addEventListener('resize', this.handleWindowResize);
-  },
-  
-  // 浣跨敤keep-alive鏃剁殑浜嬩欢
-  activated() {
-    // 濡傛灉鍥捐〃琚攢姣侊紝閲嶆柊鍒濆鍖�
-    if (!this.chartsInitialized && this.pageflag) {
-      this.$nextTick(() => {
-        this.initCharts();
-      });
-    }
-    // 閲嶆柊鍚姩瀹氭椂鍣�
-    this.startAutoRefresh();
-  },
-  
-  deactivated() {
-    // 鍋滄瀹氭椂鍣�
-    this.stopAutoRefresh();
-  },
-  
-  beforeDestroy() {
-    // 缁勪欢閿�姣佹椂褰诲簳娓呯悊
-    this.stopAutoRefresh();
-    this.disposeCharts();
-    document.removeEventListener('visibilitychange', this.handleVisibilityChange);
-    window.removeEventListener('resize', this.handleWindowResize);
-  },
-  
-  methods: {
-    // 妫�娴嬫槸鍚︿负鐢佃鏈烘ā寮�
-    detectTVMode() {
-      // 鐢佃鏈洪�氬父鏈夌壒瀹氱殑鍒嗚鲸鐜囨垨瀹介珮姣�
-      return window.innerHeight <= 1080 && window.innerWidth >= 1920;
-    },
-    
-    // 澶勭悊椤甸潰鍙鎬у彉鍖�
-    handleVisibilityChange() {
-      if (document.hidden) {
-        // 椤甸潰涓嶅彲瑙佹椂鍋滄鍒锋柊
-        this.stopAutoRefresh();
-      } else {
-        // 椤甸潰鍙鏃剁珛鍗冲埛鏂版暟鎹苟閲嶆柊寮�濮嬭嚜鍔ㄥ埛鏂�
-        this.getData();
-      }
-    },
-    
-    // 澶勭悊绐楀彛澶у皬鍙樺寲
-    handleWindowResize() {
-      // 闃叉姈璋冩暣鍥捐〃澶у皬
-      clearTimeout(this.resizeTimer);
-      this.resizeTimer = setTimeout(() => {
-        if (this.finishedWarehouseChart) {
-          try {
-            this.finishedWarehouseChart.resize();
-          } catch (e) {
-            console.warn('璋冩暣鎴愬搧浠撳浘琛ㄥぇ灏忔椂鍑洪敊:', e);
-          }
-        }
-        if (this.materialWarehouseChart) {
-          try {
-            this.materialWarehouseChart.resize();
-          } catch (e) {
-            console.warn('璋冩暣鍘熸枡浠撳浘琛ㄥぇ灏忔椂鍑洪敊:', e);
-          }
-        }
-      }, 200);
-    },
-    
-    // 鍚姩鑷姩鍒锋柊锛�10绉掞級
-    startAutoRefresh() {
-      // 鍏堟竻闄ょ幇鏈夌殑瀹氭椂鍣�
-      this.stopAutoRefresh();
-      
-      // 鍒涘缓鏂扮殑瀹氭椂鍣�
-      this.refreshTimer = setInterval(() => {
-        this.getData();
-      }, 10000); // 10绉掕嚜鍔ㄥ埛鏂�
-    },
-    
-    // 鍋滄鑷姩鍒锋柊
-    stopAutoRefresh() {
-      if (this.refreshTimer) {
-        clearInterval(this.refreshTimer);
-        this.refreshTimer = null;
-      }
-    },
-    
-    // 鍒濆鍖栧浘琛ㄥ疄渚�
-    initCharts() {
-      try {
-        // 闃叉閲嶅鍒濆鍖�
-        if (this.chartsInitialized) {
-          return;
-        }
-        
-        // 浣跨敤refs鑾峰彇DOM鍏冪礌
-        const materialChartEl = this.$refs.materialChart;
-        const finishedChartEl = this.$refs.finishedChart;
-        
-        // 妫�鏌OM鍏冪礌鏄惁瀛樺湪
-        if (!materialChartEl || !finishedChartEl) {
-          console.warn('鍥捐〃瀹瑰櫒鍏冪礌涓嶅瓨鍦紝寤惰繜鍒濆鍖�');
-          setTimeout(() => this.initCharts(), 100);
-          return;
-        }
-        
-        // 娓呯悊宸插瓨鍦ㄧ殑鍥捐〃瀹炰緥锛堥槻姝㈠唴瀛樻硠婕忥級
-        this.disposeExistingCharts();
-        
-        // 鍒涘缓鏂扮殑鍥捐〃瀹炰緥
-        this.materialWarehouseChart = echarts.init(materialChartEl);
-        this.finishedWarehouseChart = echarts.init(finishedChartEl);
-        
-        // 璁剧疆榛樿鍥捐〃閰嶇疆
-        this.setChartOptions();
-        
-        // 鏍囪涓哄凡鍒濆鍖�
-        this.chartsInitialized = true;
-        
-        // 娣诲姞绐楀彛resize鐩戝惉锛堥槻鎶栧鐞嗭級
-        window.addEventListener("resize", this.handleResize);
-        
-      } catch (error) {
-        console.error('鍒濆鍖栧浘琛ㄥけ璐�:', error);
-        this.chartsInitialized = false;
-      }
-    },
-    
-    // 娓呯悊宸插瓨鍦ㄧ殑鍥捐〃瀹炰緥
-    disposeExistingCharts() {
-      // 妫�鏌ュ苟閿�姣佸師鏂欎粨鍥捐〃
-      if (this.materialWarehouseChart) {
-        try {
-          this.materialWarehouseChart.dispose();
-        } catch (e) {
-          console.warn('閿�姣佸師鏂欎粨鍥捐〃鏃跺嚭閿�:', e);
-        }
-        this.materialWarehouseChart = null;
-      }
-      
-      // 妫�鏌ュ苟閿�姣佹垚鍝佷粨鍥捐〃
-      if (this.finishedWarehouseChart) {
-        try {
-          this.finishedWarehouseChart.dispose();
-        } catch (e) {
-          console.warn('閿�姣佹垚鍝佷粨鍥捐〃鏃跺嚭閿�:', e);
-        }
-        this.finishedWarehouseChart = null;
-      }
-    },
-    
-    // 澶勭悊绐楀彛澶у皬鍙樺寲锛堥槻鎶栵級- 鍥捐〃涓撶敤
-    handleResize() {
-      clearTimeout(this.resizeTimer);
-      this.resizeTimer = setTimeout(() => {
-        if (this.finishedWarehouseChart) {
-          try {
-            this.finishedWarehouseChart.resize();
-          } catch (e) {
-            console.warn('璋冩暣鎴愬搧浠撳浘琛ㄥぇ灏忔椂鍑洪敊:', e);
-          }
-        }
-        if (this.materialWarehouseChart) {
-          try {
-            this.materialWarehouseChart.resize();
-          } catch (e) {
-            console.warn('璋冩暣鍘熸枡浠撳浘琛ㄥぇ灏忔椂鍑洪敊:', e);
-          }
-        }
-      }, 200);
-    },
-    
-    // 閿�姣佸浘琛ㄥ疄渚�
-    disposeCharts() {
-      // 绉婚櫎浜嬩欢鐩戝惉
-      window.removeEventListener("resize", this.handleResize);
-      
-      // 娓呴櫎瀹氭椂鍣�
-      clearTimeout(this.resizeTimer);
-      this.resizeTimer = null;
-      
-      // 閿�姣佸浘琛ㄥ疄渚�
-      this.disposeExistingCharts();
-      
-      // 閲嶇疆鍒濆鍖栨爣蹇�
-      this.chartsInitialized = false;
-    },
-    
-    // 璁剧疆榛樿鍥捐〃閰嶇疆
-    setChartOptions() {
-      const finishedOption = this.getPieChartOption(
-        '鎴愬搧浠撲换鍔″垎甯�', 
-        '#00fdfa',
-        [
-          { value: 0, name: '鍏ュ簱', itemStyle: { color: '#00fdfa' } },
-          { value: 0, name: '鍑哄簱', itemStyle: { color: '#1e90ff' } },
-          { value: 0, name: '绉诲簱', itemStyle: { color: '#9370db' } }
-        ]
-      );
-      
-      const materialOption = this.getPieChartOption(
-        '鍘熸枡浠撲换鍔″垎甯�', 
-        '#07f7a7',
-        [
-          { value: 0, name: '鍏ュ簱', itemStyle: { color: '#07f7a7' } },
-          { value: 0, name: '鍑哄簱', itemStyle: { color: '#32cd32' } },
-          { value: 0, name: '绉诲簱', itemStyle: { color: '#ffa500' } }
-        ]
-      );
-      
-      // 瀹夊叏鍦拌缃浘琛ㄩ�夐」
-      this.safeSetChartOption(this.finishedWarehouseChart, finishedOption);
-      this.safeSetChartOption(this.materialWarehouseChart, materialOption);
-    },
-    
-    // 瀹夊叏璁剧疆鍥捐〃閫夐」
-    safeSetChartOption(chartInstance, option) {
-      if (!chartInstance) return;
-      
-      try {
-        chartInstance.setOption(option, true);
-      } catch (error) {
-        console.error('璁剧疆鍥捐〃閫夐」澶辫触:', error);
-      }
-    },
-    
-    // 鑾峰彇楗煎浘閰嶇疆閫夐」
-    getPieChartOption(title, titleColor, data) {
-      return {
-        title: {
-          text: title,
-          left: 'center',
-          textStyle: {
-            color: titleColor,
-            fontSize: 14,
-            fontWeight: 'normal'
-          }
-        },
-        tooltip: {
-          trigger: 'item',
-          formatter: '{a} <br/>{b}: {c} ({d}%)',
-          backgroundColor: 'rgba(0,0,0,0.7)',
-          borderColor: '#333',
-          textStyle: {
-            color: '#fff'
-          }
-        },
-        legend: {
-          orient: 'vertical',
-          right: '5%',
-          top: 'center',
-          textStyle: {
-            color: '#fff',
-            fontSize: 14
-          },
-          data: data.map(item => item.name)
-        },
-        series: [
-          {
-            name: title,
-            type: 'pie',
-            radius: ['60%', '90%'], // 鍑忓皬楗煎浘鍗婂緞
-            center: ['35%', '50%'],
-            avoidLabelOverlap: true,
-            itemStyle: {
-              borderRadius: 4,
-              borderColor: '#000',
-              borderWidth: 1
-            },
-            label: {
-              show: true,
-              formatter: '{b}: {c}',
-              color: '#fff',
-              fontSize: 14 // 鍑忓皬瀛椾綋
-            },
-            emphasis: {
-              label: {
-                show: true,
-                fontSize: 14,
-                fontWeight: 'bold'
-              },
-              itemStyle: {
-                shadowBlur: 5,
-                shadowOffsetX: 0,
-                shadowColor: 'rgba(0, 0, 0, 0.5)'
-              }
-            },
-            labelLine: {
-              show: true,
-              length: 5, // 鍑忕煭绾块暱搴�
-              length2: 10
-            },
-            data: data,
-            animationType: 'scale',
-            animationEasing: 'elasticOut',
-            animationDelay: function(idx) {
-              return Math.random() * 200;
-            }
-          }
-        ],
-        backgroundColor: 'transparent'
-      };
-    },
-    
-    // 鏇存柊鍥捐〃鏁版嵁
-    updateCharts() {
-      // 纭繚鍥捐〃宸插垵濮嬪寲
-      if (!this.chartsInitialized) {
-        this.initCharts();
-        return;
-      }
-      
-      // 鏇存柊鎴愬搧浠撳浘琛�
-      this.updateChartData(this.finishedWarehouseChart, '鎴愬搧浠撲换鍔″垎甯�', '#00fdfa', 'finished');
-      
-      // 鏇存柊鍘熸枡浠撳浘琛�
-      this.updateChartData(this.materialWarehouseChart, '鍘熸枡浠撲换鍔″垎甯�', '#07f7a7', 'material');
-    },
-    
-    // 鏇存柊鍗曚釜鍥捐〃鏁版嵁
-    updateChartData(chartInstance, title, titleColor, warehouseType) {
-      if (!chartInstance) {
-        console.warn(`${title} 鍥捐〃瀹炰緥涓嶅瓨鍦╜);
-        return;
-      }
-      
-      try {
-        // 鑾峰彇瀵瑰簲浠撳簱鐨勬暟鎹�
-        const warehouseData = warehouseType === 'finished' 
-          ? this.finishedWarehouseData 
-          : this.materialWarehouseData;
-        
-        // 杞崲鏁版嵁鏍煎紡
-        const chartData = this.transformDataForChart(warehouseData, warehouseType);
-        
-        // 鐩存帴璁剧疆瀹屾暣鐨勫浘琛ㄩ�夐」
-        const newOption = this.getPieChartOption(title, titleColor, chartData);
-        chartInstance.setOption(newOption, true);
-        
-      } catch (error) {
-        console.error(`鏇存柊${title}鍥捐〃鏁版嵁澶辫触:`, error);
-      }
-    },
-    
-    // 杞崲鏁版嵁涓哄浘琛ㄦ牸寮�
-    transformDataForChart(warehouseData, warehouseType) {
-      // 纭畾棰滆壊鏂规
-      const colorScheme = warehouseType === 'finished' 
-        ? {
-            inbound: '#00fdfa',
-            outbound: '#1e90ff',
-            relocation: '#9370db'
-          }
-        : {
-            inbound: '#07f7a7',
-            outbound: '#32cd32',
-            relocation: '#ffa500'
-          };
-      
-      // 鍒濆鍖栭粯璁ゅ��
-      let inboundCount = 0;
-      let outboundCount = 0;
-      let relocationCount = 0;
-      
-      // 浠巗tats涓彁鍙栨暟鎹�
-      if (warehouseData.stats && Array.isArray(warehouseData.stats)) {
-        warehouseData.stats.forEach(stat => {
-          if (stat.type === 'Inbound' || stat.type === '鍏ュ簱' || stat.type === 'inbound') {
-            inboundCount = stat.count || 0;
-          } else if (stat.type === 'Outbound' || stat.type === '鍑哄簱' || stat.type === 'outbound') {
-            outboundCount = stat.count || 0;
-          } else if (stat.type === 'Relocation' || stat.type === '宸烽亾鍐呯Щ搴�' || stat.type === 'relocation') {
-            relocationCount = stat.count || 0;
-          }
-        });
-      }
-      
-      return [
-        { 
-          value: inboundCount, 
-          name: '鍏ュ簱', 
-          itemStyle: { color: colorScheme.inbound }
-        },
-        { 
-          value: outboundCount, 
-          name: '鍑哄簱', 
-          itemStyle: { color: colorScheme.outbound }
-        },
-        { 
-          value: relocationCount, 
-          name: '绉诲簱', 
-          itemStyle: { color: colorScheme.relocation }
-        }
-      ];
-    },
-    
-    // 鑾峰彇鏁版嵁
-    async getData() {
-      this.pageflag = true;
-      
-      try {
-        const response = await axios.get("http://127.0.0.1:8889/api/Dashboard/InOutTypeStats");
-        
-        // 娉ㄦ剰锛氳繖閲岀洿鎺ヤ娇鐢� response锛屼笉鐢� .data
-        if (response && Array.isArray(response)) {
-          // 鍒嗙鎴愬搧浠撳拰鍘熸枡浠撴暟鎹�
-          const finishedWarehouse = response.find(item => item.warehouseId === 2);
-          const materialWarehouse = response.find(item => item.warehouseId === 1);
-          
-          // 鏇存柊鎴愬搧浠撴暟鎹�
-          this.finishedWarehouseData = finishedWarehouse || {
-            warehouseId: 2,
-            stats: [],
-            totalCount: 0
-          };
-          
-          // 鏇存柊鍘熸枡浠撴暟鎹�
-          this.materialWarehouseData = materialWarehouse || {
-            warehouseId: 1,
-            stats: [],
-            totalCount: 0
-          };
-          
-          // 鏇存柊鍥捐〃鏁版嵁
-          this.updateCharts();
-          
-          // 鍚姩鑷姩鍒锋柊锛�10绉掞級
-          this.startAutoRefresh();
-          
-        } else {
-          this.pageflag = false;
-          console.warn("杩斿洖鐨勬暟鎹牸寮忎笉姝g‘鎴栦笉鏄暟缁�", response);
-          this.resetData();
-        }
-      } catch (error) {
-        this.pageflag = false;
-        console.error('鑾峰彇浠撳簱缁熻鏁版嵁澶辫触:', error);
-        this.resetData();
-      }
-    },
-    
-    // 閲嶇疆鏁版嵁
-    resetData() {
-      this.finishedWarehouseData = {
-        warehouseId: 2,
-        stats: [],
-        totalCount: 0
-      };
-      this.materialWarehouseData = {
-        warehouseId: 1,
-        stats: [],
-        totalCount: 0
-      };
-      
-      // 鏇存柊鍥捐〃鏄剧ず绌烘暟鎹�
-      this.updateCharts();
-    }
-  }
-};
-</script>
-
-<style lang='scss' scoped>
-.dashboard-container {
-  display: flex;
-  flex-direction: column;
-  height: 100%;
-  width: 100%;
-  background: transparent;
-  overflow: hidden; /* 绂佹婊氬姩鏉� */
-}
-
-.warehouse-charts-container {
-  flex: 1;
-  padding: 8px; /* 鍑忓皬鍐呰竟璺� */
-  position: relative;
-  width: 100%;
-  height: 100%;
-  box-sizing: border-box;
-  overflow: hidden; /* 绂佹婊氬姩鏉� */
-  
-  .warehouse-charts.vertical-layout {
-    display: flex;
-    flex-direction: column; /* 鍨傜洿甯冨眬 */
-    gap: 12px; /* 鍑忓皬闂磋窛 */
-    height: 100%; /* 鍗犳弧瀹瑰櫒楂樺害 */
-    width: 100%;
-    
-    .warehouse-chart-item {
-      flex: 1; /* 姣忎釜鍥捐〃瀹瑰櫒骞冲潎鍒嗛厤楂樺害 */
-      min-height: 0; /* 鍏佽鏀剁缉 */
-      padding: 10px; /* 鍑忓皬鍐呰竟璺� */
-      box-sizing: border-box;
-      border-radius: 6px; /* 鍑忓皬鍦嗚 */
-      //border: 1px solid rgba(0, 255, 255, 0.1);
-      display: flex;
-      flex-direction: column;
-      position: relative;
-      overflow: hidden;
-      //background: rgba(0, 20, 40, 0.6);
-      
-      .chart-header {
-        margin-bottom: 8px; /* 鍑忓皬杈硅窛 */
-        position: relative;
-        z-index: 2;
-        flex-shrink: 0;
-        
-        .chart-title {
-          display: flex;
-          justify-content: space-between;
-          align-items: center;
-          margin: 0;
-          font-size: 20px; /* 鍑忓皬瀛椾綋 */
-          font-weight: bold;
-          text-shadow: 0 0 3px currentColor; /* 鍑忓皬闃村奖 */
-          
-          .total-count {
-            font-size: 30px; 
-            color: #ccc;
-            font-weight: normal;
-            text-shadow: none;
-          }
-        }
-      }
-      
-      .warehouse-chart {
-        flex: 1;
-        min-height: 0;
-        position: relative;
-        z-index: 2;
-        height: 100%;
-        width: 100%;
-      }
-    }
-  }
-}
-
-/* 鐢佃鏈洪�傞厤 - 杩涗竴姝ュ帇缂╁浘琛� */
-@media screen and (max-height: 1080px) {
-  .warehouse-charts-container {
-    padding: 5px;
-    
-    .warehouse-charts.vertical-layout {
-      gap: 8px;
-      
-      .warehouse-chart-item {
-        padding: 8px;
-        
-        .chart-header {
-          margin-bottom: 5px;
-          
-          .chart-title {
-            font-size: 13px;
-            
-            .total-count {
-              font-size: 11px;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-/* 瀹藉睆閫傞厤 */
-@media screen and (min-width: 1920px) {
-  .warehouse-charts-container {
-    .warehouse-charts.vertical-layout {
-      .warehouse-chart-item {
-        .chart-header {
-          .chart-title {
-            font-size: 20px;
-            
-            .total-count {
-              font-size: 20px;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-/* 鎵嬫満閫傞厤 */
-@media screen and (max-width: 768px) {
-  .warehouse-charts-container {
-    padding: 5px;
-    
-    .warehouse-charts.vertical-layout {
-      gap: 10px;
-      
-      .warehouse-chart-item {
-        padding: 8px;
-        min-height: 200px; /* 鎵嬫満淇濇寔閫傚綋楂樺害 */
-        
-        .chart-header {
-          .chart-title {
-            font-size: 20px;
-            flex-direction: column;
-            align-items: flex-start;
-            
-            .total-count {
-              font-size: 20px;
-              margin-top: 3px;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-/* 瓒呭皬灞忓箷閫傞厤 */
-@media screen and (max-width: 480px) {
-  .warehouse-charts-container {
-    .warehouse-charts.vertical-layout {
-      gap: 8px;
-      
-      .warehouse-chart-item {
-        min-height: 180px;
-        padding: 6px;
-        
-        .chart-header {
-          .chart-title {
-            font-size: 20px;
-            
-            .total-count {
-              font-size: 20px;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-two.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-two.vue"
deleted file mode 100644
index 2c03df5..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/indexs/station-two.vue"
+++ /dev/null
@@ -1,237 +0,0 @@
-<!--
- * @Author: daidai
- * @Date: 2022-02-28 16:16:42
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-07-20 17:57:11
- * @FilePath: \web-pc\src\pages\big-screen\view\indexs\left-center.vue
--->
-<template>
-  <ul class="user_Overview flex" v-if="pageflag">
-      <li class="user_Overview-item" style="color: #00fdfa">
-          <div class="user_Overview_nums allnum ">
-              <dv-digital-flop :config="onlineconfig" style="width:100%;height:100%;" />
-          </div>
-          <p>4鍙锋淇彴</p>
-          <br>
-          <p>{{stationstate[3].station_state}}</p>
-      </li>
-      <li class="user_Overview-item" style="color: #07f7a8">
-          <div class="user_Overview_nums online">
-              <dv-digital-flop :config="config" style="width:100%;height:100%;" />
-          </div>
-          <p>5鍙锋淇彴</p>
-          <br>
-          <p>{{stationstate[4].station_state}}</p>
-      </li>
-      <li class="user_Overview-item" style="color: #e3b337">
-          <div class="user_Overview_nums offline">
-              <dv-digital-flop :config="offlineconfig" style="width:100%;height:100%;" />
-
-          </div>
-          <p>6鍙锋淇彴</p>
-          <br>
-          <p>{{stationstate[5].station_state}}</p>
-      </li>
-  </ul>
-  <Reacquire v-else @onclick="getData" line-height="200px">
-      閲嶆柊鑾峰彇
-  </Reacquire>
-</template>
-
-<script>
-import { currentGET } from 'api/modules'
-import {Floorfault} from "@/api/http.js"
-let style = {
-  fontSize: 24
-}
-export default {
-  data() {
-      return {
-          options: {},
-          stationstate:[],
-          userOverview: {
-              alarmNum: 2,
-              offlineNum: 3,
-              onlineNum: 5,
-              totalNum: 10,
-          },
-          pageflag: true,
-          timer: null,
-          config: {
-              number: [100],
-              content: '{nt}',
-              style: {
-                  ...style,
-                  // stroke: "#00fdfa",
-                  fill: "#00fdfa",
-              },
-          },
-          onlineconfig: {
-              number: [0],
-              content: '{nt}',
-              style: {
-                  ...style,
-                  // stroke: "#07f7a8",
-                  fill: "#07f7a8",
-              },
-          },
-          offlineconfig: {
-              number: [0],
-              content: '{nt}',
-              style: {
-                  ...style,
-                  // stroke: "#e3b337",
-                  fill: "#e3b337",
-              },
-          },
-      };
-  },
-  filters: {
-      numsFilter(msg) {
-          return msg || 0;
-      },
-  },
-  created() {
-      this.getData()
-  },
-  mounted() {
-  },
-  beforeDestroy() {
-      this.clearData()
-
-  },
-  methods: {
-      clearData() {
-          if (this.timer) {
-              clearInterval(this.timer)
-              this.timer = null
-          }
-      },
-      async getData() {
-          this.pageflag = true;
-          // currentGET("big2").then((res) => {
-          //     if (!this.timer) {
-          //         console.log("璁惧鎬昏2", res);
-          //     }
-          //     if (res.success) {
-          //         this.userOverview = res.data;
-          //            this.onlineconfig = {
-          //             ...this.onlineconfig,
-          //             number: [1]
-          //         }
-          //         this.config = {
-          //             ...this.config,
-          //             number: [7]
-          //         }
-          //         this.offlineconfig = {
-          //             ...this.offlineconfig,
-          //             number: [4]
-          //         }
-          //         this.laramnumconfig = {
-          //             ...this.laramnumconfig,
-          //             number: [10]
-          //         }
-          //         this.switper();  
-          //     } else {
-          //         this.pageflag = false;
-          //         this.$Message.warning(res.msg);
-          //     }
-          // });
-                  let rep = await Floorfault((a)=>{
-                  });
-                  this.stationstate=rep;
-                     this.onlineconfig = {
-                      ...this.onlineconfig,
-                      number: [rep[3].station_qty]
-                  }
-                  this.config = {
-                      ...this.config,
-                      number: [rep[4].station_qty]
-                  }
-                  this.offlineconfig = {
-                      ...this.offlineconfig,
-                      number: [rep[5].station_qty]
-                  }
-                  this.switper(); 
-      },
-      //杞
-      switper() {
-          if (this.timer) {
-              return
-          }
-          let looper = (a) => {
-              this.getData()
-          };
-          this.timer = setInterval(looper, this.$store.state.setting.echartsAutoTime);
-      },
-  },
-};
-</script>
-<style lang='scss' scoped>
-.user_Overview {
-  li {
-      flex: 1;
-
-      p {
-          text-align: center;
-          height: 16px;
-          font-size: 16px;
-      }
-
-      .user_Overview_nums {
-          width: 100px;
-          height: 100px;
-          text-align: center;
-          line-height: 100px;
-          font-size: 22px;
-          margin: 50px auto 30px;
-          background-size: cover;
-          background-position: center center;
-          position: relative;
-
-          &::before {
-              content: '';
-              position: absolute;
-              width: 100%;
-              height: 100%;
-              top: 0;
-              left: 0;
-          }
-
-          &.bgdonghua::before {
-              animation: rotating 14s linear infinite;
-          }
-      }
-
-      .allnum {
-
-          // background-image: url("../../assets/img/left_top_lan.png");
-          &::before {
-              background-image: url("../../assets/img/left_top_lan.png");
-
-          }
-      }
-
-      .online {
-          &::before {
-              background-image: url("../../assets/img/left_top_lv.png");
-
-          }
-      }
-
-      .offline {
-          &::before {
-              background-image: url("../../assets/img/left_top_huang.png");
-
-          }
-      }
-
-      .laramnum {
-          &::before {
-              background-image: url("../../assets/img/left_top_hong.png");
-
-          }
-      }
-  }
-}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/setting.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/setting.vue"
index bd69b7b..bf40c14 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/setting.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\244\247\345\261\217/src/views/setting.vue"
@@ -61,6 +61,32 @@
                             </el-radio-group>
                         </div>
                     </div>
+                    
+                    <!-- 宸烽亾浠诲姟淇℃伅榛樿鏄剧ず -->
+                    <div class="setting_item">
+                        <span class="setting_label">
+                            宸烽亾浠诲姟淇℃伅榛樿鏄剧ず:
+                        </span>
+                        <div class="setting_content">
+                            <el-radio-group v-model="currentTaskRadio" @change="(val) => updateCurrentTask(val)">
+                                <el-radio :label="'sc01'">SC01</el-radio>
+                                <el-radio :label="'sc02'">SC02</el-radio>
+                            </el-radio-group>
+                        </div>
+                    </div>
+                    
+                    <!-- 璐т綅鐘舵�侀粯璁ゆ樉绀� -->
+                    <div class="setting_item">
+                        <span class="setting_label">
+                            璐т綅鐘舵�侀粯璁ゆ樉绀�:
+                        </span>
+                        <div class="setting_content">
+                            <el-radio-group v-model="currentLocationRadio" @change="(val) => updateCurrentLocation(val)">
+                                <el-radio :label="'sc01'">SC01</el-radio>
+                                <el-radio :label="'sc02'">SC02</el-radio>
+                            </el-radio-group>
+                        </div>
+                    </div>
                     <div class="flex justify-center">
                         <!-- <el-button type="primary" round size="mini">纭畾</el-button> -->
                     </div>
@@ -82,6 +108,8 @@
             isScaleradio:true,
             fullscreenRadio: false, // 鍏ㄥ睆鐘舵��
             fullscreenElement: null, // 鍏ㄥ睆鍏冪礌
+            currentTaskRadio: 'sc02', // 榛樿浠诲姟鏄剧ず锛歴c01/sc02
+            currentLocationRadio: 'sc01' // 榛樿璐т綅鐘舵�佹樉绀猴細sc01/sc02
         };
     },
     computed: {},
@@ -196,6 +224,16 @@
                     this.bindFullscreenEvents();
                 }
             }
+        },
+        
+        // 鏇存柊褰撳墠浠诲姟
+        updateCurrentTask(val) {
+            this.$store.commit('setting/updateCurrentTask', val);
+        },
+        
+        // 鏇存柊褰撳墠璐т綅鐘舵��
+        updateCurrentLocation(val) {
+            this.$store.commit('setting/updateCurrentLocation', val);
         }
     },
     created() {
@@ -204,6 +242,8 @@
         this.ssyjradio = this.$store.state.setting.ssyjSwiper,
         this.isScaleradio = this.$store.state.setting.isScale;
         this.fullscreenRadio = this.$store.state.setting.fullscreen || false;
+        this.currentTaskRadio = this.$store.state.setting.currentTask;
+        this.currentLocationRadio = this.$store.state.setting.currentLocation;
         
         // 鍒濆鍖栨椂妫�鏌ュ叏灞忕姸鎬�
         if (this.fullscreenRadio) {

--
Gitblit v1.9.3