From 891207469b41c23d22805876a4e179d75832572f Mon Sep 17 00:00:00 2001
From: leiqunqing <zhengqifeng@hnkhzn.com>
Date: 星期四, 05 三月 2026 11:03:52 +0800
Subject: [PATCH] 完整项目更新

---
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ProcessInfoDetail.cs                                       |   67 -
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2                                                         |    0 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IScanStationService.cs                                             |    2 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/BoxingService.cs                                                    |   64 +
 代码管理/WIDESEAWCS_Client/src/views/basicinfo/formula.vue                                                                                   |  420 ++++++--
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/BoxingDetailService.cs                                              |   43 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PLCJob.cs                                                                      |   95 +
 代码管理/WIDESEAWCS_Client/src/extension/basicinfo/extend/formulaExecuteDetail.vue                                                           |    0 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.794.21998/CodeChunks.db                              |    0 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ProcessInfo.cs                                             |   69 -
 代码管理/WIDESEAWCS_Client/src/extension/basicinfo/scanStation.js                                                                            |   12 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_Formula.cs                                                 |  100 +
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo                                                                  |    0 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/BoxingController.cs                                     |   17 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2                                              |    0 
 代码管理/WIDESEAWCS_Client/src/views/Home.vue                                                                                                |  198 +++
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ScanStationService.cs                                               |  291 +++--
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IBoxingService.cs                                                  |    3 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/BoxingDetailController.cs                               |    2 
 项目资料/发电机弹性支撑信息化流程卡-注释.pdf                                                                                                                |    0 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.794.21998/SemanticSymbols.db                         |    0 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_FormulaDetail.cs                                           |   16 
 代码管理/WIDESEAWCS_Client/src/assets/test.png                                                                                               |    0 
 代码管理/WIDESEAWCS_Client/src/extension/basicinfo/formula.js                                                                                |    1 
 代码管理/WIDESEAWCS_Client/src/extension/basicinfo/processInfo.js                                                                            |    1 
 代码管理/WIDESEAWCS_Client/src/views/basicinfo/processInfoDetail.vue                                                                         |  334 +++---
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Common/Spire.XLS.dll                                                                 |    0 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/Debug/net6.0/WIDESEAWCS_TaskInfoService.AssemblyInfo.cs          |    2 
 代码管理/WIDESEAWCS_Client/config/buttons.js                                                                                                 |    9 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ScanStation.cs                                             |   57 -
 代码管理/WIDESEAWCS_Client/src/views/basicinfo/processInfo.vue                                                                               |  439 +++-----
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/Debug/net6.0/WIDESEAWCS_TaskInfoService.AssemblyInfoInputs.cache |    2 
 代码管理/WIDESEAWCS_Client/src/components/basic/VolUpload.vue                                                                                |  248 ++--
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Common/PLCEnum/W_PLCDBName.cs                                                        |   25 
 代码管理/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/ScanStationController.cs                                |    4 
 项目资料/发电机弹性支撑BOM结构及工艺参数.pdf                                                                                                               |    0 
 代码管理/WIDESEAWCS_Client/src/extension/basicinfo/extend/taskExecuteDetail.vue                                                              |  259 +++++
 37 files changed, 1,790 insertions(+), 990 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/config/buttons.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/config/buttons.js"
index 50c4dfd..5d92bce 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/config/buttons.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/config/buttons.js"
@@ -136,6 +136,15 @@
     onClick: function () {
         this.export();
     }
+},
+{
+    name: "瀵煎嚭娴佺▼鍗�",
+    icon: 'el-icon-bottom',
+    type: 'success',
+    plain: true,
+    value: 'ExportProcessCard',
+    onClick: function () {
+    }
 }
 
 ]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/assets/test.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/assets/test.png"
new file mode 100644
index 0000000..c109ce2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/assets/test.png"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/components/basic/VolUpload.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/components/basic/VolUpload.vue"
index 4c7d696..87a2af7 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/components/basic/VolUpload.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/components/basic/VolUpload.vue"
@@ -40,9 +40,7 @@
             </div>
           </div>
         </div>
-        <el-button v-else @click="handleClick"
-          >閫夋嫨{{ img ? '鍥剧墖' : '鏂囦欢' }}</el-button
-        >
+        <el-button v-else @click="handleClick">閫夋嫨{{ img ? "鍥剧墖" : "鏂囦欢" }}</el-button>
 
         <el-button
           v-if="!autoUpload && !img"
@@ -83,7 +81,7 @@
   </div>
 </template>
 <script>
-let OSS = require('ali-oss');
+let OSS = require("ali-oss");
 export default {
   components: {},
   props: {
@@ -91,62 +89,62 @@
       //鏄惁鏄剧ず榛樿浠嬬粛
       //鏄惁澶氶��
       type: Boolean,
-      default: false
+      default: false,
     },
     fileInfo: {
       //鐢ㄤ簬鎺ユ敹涓婁紶鐨勬枃浠讹紝涔熷彲浠ュ姞浠ラ粯璁ゅ�硷紝鏄剧ず宸蹭笂浼犵殑鏂囦欢锛岀敤鎴蜂笂浼犲悗浼氳鐩栭粯璁ゅ��
       type: Array,
       default: () => {
         return [];
-      } //鏍煎紡[{name:'1.jpg',path:'127.0.01/1.jpg'}]
+      }, //鏍煎紡[{name:'1.jpg',path:'127.0.01/1.jpg'}]
     },
     downLoad: {
       //鏄惁鍙互鐐瑰嚮鏂囦欢涓嬭浇
       type: Boolean,
-      default: true
+      default: true,
     },
     multiple: {
       //鏄惁澶氶��
       type: Boolean,
-      default: false
+      default: false,
     },
     maxFile: {
       //鏈�澶氬彲閫夋枃浠舵暟閲忥紝蹇呴』multiple=true锛屾墠浼氱敓鏁�
       type: Number,
-      default: 5
+      default: 5,
     },
     maxSize: {
       //鏂囦欢闄愬埗澶у皬3M
       type: Number,
-      default: 50
+      default: 50,
     },
 
     autoUpload: {
       //閫夋嫨鏂囦欢鍚庢槸鍚﹁嚜鍔ㄤ笂浼�
       type: Boolean,
-      default: true
+      default: true,
     },
     img: {
       //鍥剧墖绫诲瀷  img>excel>fileTypes涓夌鏂囦欢绫诲瀷浼樺厛绾�
       type: Boolean,
-      default: false
+      default: false,
     },
     excel: {
       //excel鏂囦欢
       type: Boolean,
-      default: false
+      default: false,
     },
     fileTypes: {
       //鎸囧畾涓婁紶鏂囦欢鐨勭被鍨�
       type: Array,
       default: () => {
         return [];
-      }
+      },
     },
     url: {
       //涓婁紶鐨剈rl
       type: String,
-      default: ''
+      default: "",
     },
     uploadBefore: {
       //杩斿洖false浼氫腑姝㈡墽琛�
@@ -154,7 +152,7 @@
       type: Function,
       default: (files) => {
         return true;
-      }
+      },
     },
     uploadAfter: {
       //杩斿洖false浼氫腑姝㈡墽琛�
@@ -162,14 +160,14 @@
       type: Function,
       default: (result, files) => {
         return true;
-      }
+      },
     },
     onChange: {
       //閫夋嫨鏂囦欢鏃�  //杩斿洖false浼氫腑姝㈡墽琛�
       type: Function,
       default: (files) => {
         return true;
-      }
+      },
     },
     // clear: {
     //   //涓婁紶瀹屾垚鍚庢槸鍚︽竻绌烘枃浠跺垪琛�
@@ -179,48 +177,48 @@
     fileList: {
       //鏄惁鏄剧ず閫夋嫨鐨勬枃浠跺垪琛�
       type: Boolean,
-      default: true
+      default: true,
     },
     fileClick: {
       //鐐瑰嚮鏂囦欢浜嬩欢
       type: Function,
       default: (index, file, files) => {
         return true;
-      }
+      },
     },
     removeBefore: {
       //绉婚櫎鏂囦欢浜嬩欢
       type: Function,
       default: (index, file, files) => {
         return true;
-      }
+      },
     },
     append: {
       //姝ゅ睘鎬у凡搴熷純锛屽鏂囦欢涓婁紶锛岄粯璁よ拷鍔犳枃浠�
       type: Boolean,
-      default: false
+      default: false,
     },
     compress: {
       //寮�鍚浘鐗囧帇缂�,鍚庨潰鏍规嵁闇�瑕佸啀瀹屽杽
       type: Boolean,
-      default: true
+      default: true,
     },
     compressMinSize: {
       //鍘嬬缉鐨勬渶灏忔瘮渚�
       type: Number,
-      default: 0.1
-    }
+      default: 0.1,
+    },
   },
   data() {
     return {
-      errorImg: 'this.src="' + require('@/assets/imgs/error-img.png') + '"',
+      errorImg: 'this.src="' + require("@/assets/imgs/error-img.png") + '"',
       changed: false, //鎵嬪姩涓婁紶鎴愬姛鍚庣姝㈤噸澶嶄笂浼狅紝蹇呴』閲嶆柊閫夋嫨
       model: true,
       files: [],
-      bigImg: '',
-      imgTypes: ['gif', 'jpg', 'jpeg', 'png', 'bmp', 'webp', 'jfif'],
+      bigImg: "",
+      imgTypes: ["gif", "jpg", "jpeg", "png", "bmp", "webp", "jfif"],
       loadingStatus: false,
-      loadText: '涓婁紶鏂囦欢'
+      loadText: "涓婁紶鏂囦欢",
     };
   },
   created() {
@@ -235,23 +233,23 @@
       handler(files) {
         this.cloneFile(files);
       },
-      deep: true
-    }
+      deep: true,
+    },
   },
   methods: {
     cloneFile(files) {
       this.files = files.map((x) => {
         return {
           name: x.name || this.getFileName(x.path),
-          path: x.path
+          path: x.path,
         };
       });
     },
     getFileName(path) {
       if (!path) {
-        return '鏈畾涔夋枃浠跺悕';
+        return "鏈畾涔夋枃浠跺悕";
       }
-      let _index = path.lastIndexOf('/');
+      let _index = path.lastIndexOf("/");
       return path.substring(_index + 1);
     },
     previewImg(index) {
@@ -261,20 +259,20 @@
     },
     getSelector() {
       if (this.autoUpload) {
-        return 'auto-selector';
+        return "auto-selector";
       }
-      return 'submit-selector';
+      return "submit-selector";
     },
     getImgSrc(file, index) {
-      if (file.hasOwnProperty('path')) {
+      if (file.hasOwnProperty("path")) {
         if (this.base.isUrl(file.path)) {
           return file.path;
         }
         //2020.12.27澧炲姞base64鍥剧墖鎿嶄綔
-        if (file.path.indexOf('/9j/') != -1) {
-          return 'data:image/jpeg;base64,' + file.path;
+        if (file.path.indexOf("/9j/") != -1) {
+          return "data:image/jpeg;base64," + file.path;
         }
-        if (file.path.substr(0, 1) == '/') {
+        if (file.path.substr(0, 1) == "/") {
           file.path = file.path.substr(1);
         }
         return this.http.ipAddress + file.path;
@@ -290,23 +288,23 @@
         return;
       }
       if (!file.path) {
-        this.$message.error('璇峰厛涓婁紶鏂囦欢');
+        this.$message.error("璇峰厛涓婁紶鏂囦欢");
         return;
       }
       this.base.dowloadFile(
         file.path,
         file.name,
         {
-          Authorization: this.$store.getters.getToken()
+          Authorization: this.$store.getters.getToken(),
         },
         this.http.ipAddress
       );
     },
     getText() {
       if (this.img) {
-        return '鍙兘涓婁紶鍥剧墖,';
+        return "鍙兘涓婁紶鍥剧墖,";
       } else if (this.excel) {
-        return '鍙兘涓婁紶excel鏂囦欢,';
+        return "鍙兘涓婁紶excel鏂囦欢,";
       }
     },
     handleClick() {
@@ -360,9 +358,9 @@
       return this.files;
     },
     convertToFile(dataurl, filename) {
-      let arr = dataurl.split(',');
+      let arr = dataurl.split(",");
       let mime = arr[0].match(/:(.*?);/)[1];
-      let suffix = mime.split('/')[1];
+      let suffix = mime.split("/")[1];
       let bstr = atob(arr[1]);
       let n = bstr.length;
       let u8arr = new Uint8Array(n);
@@ -373,7 +371,7 @@
       // 绗笁涓弬鏁版槸 瑕佹斁鍒版枃浠朵腑鐨勫唴瀹圭殑 MIME 绫诲瀷
       return new File([u8arr], `${filename}.${suffix}`, {
         type: mime,
-        input: true
+        input: true,
       });
     },
     async compressImg(file) {
@@ -385,14 +383,14 @@
           let img = new Image();
           img.src = e.target.result;
           let _this = this;
-          img.onload = function() {
+          img.onload = function () {
             //榛樿鎸夋瘮渚嬪帇缂�
             let w = this.width;
             let h = this.height;
-            let canvas = document.createElement('canvas');
-            let ctx = canvas.getContext('2d');
-            canvas.setAttribute('width', w);
-            canvas.setAttribute('height', h);
+            let canvas = document.createElement("canvas");
+            let ctx = canvas.getContext("2d");
+            canvas.setAttribute("width", w);
+            canvas.setAttribute("height", h);
             ctx.drawImage(this, 0, 0, w, h);
             let rate = 0.3;
             if (fileSize > 2) {
@@ -404,14 +402,14 @@
               rate = _this.compressMinSize;
             }
             // rate=1;
-            let base64 = canvas.toDataURL('image/jpeg', rate);
+            let base64 = canvas.toDataURL("image/jpeg", rate);
             resolve(_this.convertToFile(base64, file.name));
           };
         };
       });
     },
     async uploadOSS() {
-      this.http.get('api/alioss/getAccessToken', {}, false).then(async (x) => {
+      this.http.get("api/alioss/getAccessToken", {}, false).then(async (x) => {
         if (!x.status) return this.$Message.error(x.message);
         let client = new OSS({
           // yourRegion濉啓Bucket鎵�鍦ㄥ湴鍩熴�備互鍗庝笢1锛堟澀宸烇級涓轰緥锛孯egion濉啓涓簅ss-cn-hangzhou銆�
@@ -422,14 +420,14 @@
           // 浠嶴TS鏈嶅姟鑾峰彇鐨勫畨鍏ㄤ护鐗岋紙SecurityToken锛夈��
           stsToken: x.data.securityToken,
           // 濉啓Bucket鍚嶇О銆�
-          bucket: x.data.bucket
+          bucket: x.data.bucket,
         });
         console.log(this.files);
         for (let index = 0; index < this.files.length; index++) {
           const file = this.files[index];
           if (file.input) {
             let result = await client.put(
-              x.data.bucketFolder + '/' + x.data.unique + file.name,
+              x.data.bucketFolder + "/" + x.data.unique + file.name,
               file
             );
             file.path = result.url;
@@ -442,7 +440,7 @@
         let _files = this.files.map((file) => {
           return {
             name: file.newName || file.name,
-            path: file.path
+            path: file.path,
           };
         });
         this.fileInfo.push(..._files);
@@ -454,41 +452,41 @@
     async upload(vail) {
       if (vail && !this.checkFile()) return false;
       if (!this.url) {
-        return this.$message.error('娌℃湁閰嶇疆濂経rl');
+        return this.$message.error("娌℃湁閰嶇疆濂経rl");
       }
       if (!this.files || this.files.length == 0) {
-        return this.$message.error('璇烽�夋嫨鏂囦欢');
+        return this.$message.error("璇烽�夋嫨鏂囦欢");
       }
       //澧炲姞涓婁紶鏃惰嚜瀹氫箟鍙傛暟锛屽悗鍙颁娇鐢ㄨ幏鍙朥tilities.HttpContext.Current.Request.Query["瀛楁"]
-      let params={};
-      if (!this.uploadBefore(this.files,params)) {
+      let params = {};
+      if (!this.uploadBefore(this.files, params)) {
         return;
       }
-      let paramText="";
+      let paramText = "";
       if (Object.keys(params).length) {
-        paramText="?1=1";
+        paramText = "?1=1";
         for (const key in params) {
-          let value=params[key];
-          if(typeof(value)=='object'){
-            value=JSON.stringify(value)
+          let value = params[key];
+          if (typeof value == "object") {
+            value = JSON.stringify(value);
           }
-          paramText+=`&${key}=${value}`
+          paramText += `&${key}=${value}`;
         }
       }
 
       this.loadingStatus = true;
-      this.loadText = '涓婁紶涓�..';
+      this.loadText = "涓婁紶涓�..";
       if (window.oss && window.oss.ali.use) {
         await this.uploadOSS();
         this.loadingStatus = false;
-        this.loadText = '涓婁紶鏂囦欢';
-        if (!this.uploadAfter({status:true}, this.files)) {
+        this.loadText = "涓婁紶鏂囦欢";
+        if (!this.uploadAfter({ status: true }, this.files)) {
           this.changed = false;
           return;
         } else {
           this.changed = true;
         }
-        this.$message.success('涓婁紶鎴愬姛');
+        this.$message.success("涓婁紶鎴愬姛");
         return;
       }
 
@@ -496,32 +494,32 @@
       for (let index = 0; index < this.files.length; index++) {
         let file = this.files[index];
         if (file.input) {
-          let name = file.name.split('.');
+          let name = file.name.split(".");
           name = name[name.length - 1].toLocaleLowerCase();
           let isImg = this.imgTypes.indexOf(name) != -1;
-          if (isImg && (name == 'jpg' || name == 'jpeg')) {
+          if (isImg && (name == "jpg" || name == "jpeg")) {
             //>200KB鐨勫紑鍚帇缂�
             if (isImg && file.size / 1024 / 1024 > 0.2) {
-              console.log('鍘嬬缉鍓�' + file.size);
+              console.log("鍘嬬缉鍓�" + file.size);
               file = await this.compressImg(file);
               file.compress = true;
               this.files[index] = file;
               this.files[index].input = true;
-              console.log('鍘嬬缉鍚�' + file.size);
+              console.log("鍘嬬缉鍚�" + file.size);
             }
           }
-          forms.append('fileInput', file, file.name);
+          forms.append("fileInput", file, file.name);
         }
       }
       // forms.append("fileInput", this.files);
 
       this.http
-        .post(this.url+paramText, forms, this.autoUpload ? '姝e湪涓婁紶鏂囦欢' : '')
+        .post(this.url + paramText, forms, this.autoUpload ? "姝e湪涓婁紶鏂囦欢" : "")
         .then(
           (x) => {
             // this.$refs.uploadFile.clearFiles();
             this.loadingStatus = false;
-            this.loadText = '涓婁紶鏂囦欢';
+            this.loadText = "涓婁紶鏂囦欢";
             if (!this.uploadAfter(x, this.files)) {
               this.changed = false;
               return;
@@ -541,7 +539,7 @@
             let _files = this.files.map((file) => {
               return {
                 name: file.name,
-                path: file.path || x.data + file.name
+                path: file.path || x.data + file.name,
               };
             });
             this.fileInfo.push(..._files);
@@ -549,18 +547,14 @@
             this.files = _files;
           },
           (error) => {
-            this.loadText = '涓婁紶鏂囦欢';
+            this.loadText = "涓婁紶鏂囦欢";
             this.loadingStatus = false;
           }
         );
     },
     format(file, checkFileType) {
-      const format =
-        file.name
-          .split('.')
-          .pop()
-          .toLocaleLowerCase() || '';
-      let fileIcon = 'el-icon-document';
+      const format = file.name.split(".").pop().toLocaleLowerCase() || "";
+      let fileIcon = "el-icon-document";
       if (this.fileTypes.length > 0 && checkFileType != undefined) {
         if (this.fileTypes.indexOf(format) != -1) {
           return true;
@@ -570,8 +564,8 @@
       if (
         checkFileType &&
         !(checkFileType instanceof Array) &&
-        checkFileType != 'img' &&
-        checkFileType != 'excel'
+        checkFileType != "img" &&
+        checkFileType != "excel"
       ) {
         if (checkFileType.indexOf(format) > -1) {
           return true;
@@ -580,41 +574,39 @@
         }
       }
 
-      if (checkFileType == 'img' || this.imgTypes.indexOf(format) > -1) {
-        if (checkFileType == 'img') {
+      if (checkFileType == "img" || this.imgTypes.indexOf(format) > -1) {
+        if (checkFileType == "img") {
           if (this.imgTypes.indexOf(format) > -1) {
             return true;
           } else {
             return false;
           }
         }
-        fileIcon = 'el-icon-picture-outline';
+        fileIcon = "el-icon-picture-outline";
       }
       if (
-        ['mp4', 'm3u8', 'rmvb', 'avi', 'swf', '3gp', 'mkv', 'flv'].indexOf(
-          format
-        ) > -1
+        ["mp4", "m3u8", "rmvb", "avi", "swf", "3gp", "mkv", "flv"].indexOf(format) > -1
       ) {
-        fileIcon = 'el-icon-document';
+        fileIcon = "el-icon-document";
       }
-      if (['mp3', 'wav', 'wma', 'ogg', 'aac', 'flac'].indexOf(format) > -1) {
-        fileIcon = 'el-icon-document';
+      if (["mp3", "wav", "wma", "ogg", "aac", "flac"].indexOf(format) > -1) {
+        fileIcon = "el-icon-document";
       }
-      if (['doc', 'txt', 'docx', 'pages', 'epub', 'pdf'].indexOf(format) > -1) {
-        fileIcon = 'el-icon-document';
+      if (["doc", "txt", "docx", "pages", "epub", "pdf"].indexOf(format) > -1) {
+        fileIcon = "el-icon-document";
       }
       if (
-        checkFileType == 'excel' ||
-        ['numbers', 'csv', 'xls', 'xlsx'].indexOf(format) > -1
+        checkFileType == "excel" ||
+        ["numbers", "csv", "xls", "xlsx"].indexOf(format) > -1
       ) {
-        if (checkFileType == 'excel') {
-          if (['numbers', 'csv', 'xls', 'xlsx'].indexOf(format) > -1) {
+        if (checkFileType == "excel") {
+          if (["numbers", "csv", "xls", "xlsx"].indexOf(format) > -1) {
             return true;
           } else {
             return false;
           }
         }
-        fileIcon = 'el-icon-document';
+        fileIcon = "el-icon-document";
       }
       return fileIcon;
     },
@@ -627,11 +619,11 @@
         files.length + (inputFiles || []).length > (this.maxFile || 5)
       ) {
         this.$message.error(
-          '鏈�澶氬彧鑳介�夈��' +
+          "鏈�澶氬彧鑳介�夈��" +
             (this.maxFile || 5) +
-            '銆�' +
-            (this.img ? '寮犲浘鐗�' : '涓枃浠�') +
-            ''
+            "銆�" +
+            (this.img ? "寮犲浘鐗�" : "涓枃浠�") +
+            ""
         );
         return false;
       }
@@ -644,15 +636,15 @@
       for (let index = 0; index < inputFiles.length; index++) {
         const file = inputFiles[index];
         if (names.indexOf(file.name) != -1) {
-          file.name = '(' + index + ')' + file.name;
+          file.name = "(" + index + ")" + file.name;
         }
         names.push(file.name);
-        if (this.img && !this.format(file, 'img')) {
-          this.$message.error('閫夋嫨鐨勬枃浠躲��' + file.name + '銆戝彧鑳芥槸鍥剧墖鏍煎紡');
+        if (this.img && !this.format(file, "img")) {
+          this.$message.error("閫夋嫨鐨勬枃浠躲��" + file.name + "銆戝彧鑳芥槸鍥剧墖鏍煎紡");
           return false;
         }
-        if (this.excel && !this.format(file, 'excel')) {
-          this.$message.error('閫夋嫨鐨勬枃浠躲��' + file.name + '銆戝彧鑳芥槸excel鏂囦欢');
+        if (this.excel && !this.format(file, "excel")) {
+          this.$message.error("閫夋嫨鐨勬枃浠躲��" + file.name + "銆戝彧鑳芥槸excel鏂囦欢");
           return false;
         }
         if (
@@ -661,28 +653,24 @@
           !this.format(file, this.fileTypes)
         ) {
           this.$message.error(
-            '閫夋嫨鐨勬枃浠躲��' +
+            "閫夋嫨鐨勬枃浠躲��" +
               file.name +
-              '銆戝彧鑳芥槸銆�' +
-              this.fileTypes.join(',') +
-              '銆戞牸寮�'
+              "銆戝彧鑳芥槸銆�" +
+              this.fileTypes.join(",") +
+              "銆戞牸寮�"
           );
           return false;
         }
         if (file.size > (this.maxSize || 50) * 1024 * 1024) {
           this.$message.error(
-            '閫夋嫨鐨勬枃浠躲��' +
-              file.name +
-              '銆戜笉鑳借秴杩�:' +
-              (this.maxSize || 50) +
-              'M'
+            "閫夋嫨鐨勬枃浠躲��" + file.name + "銆戜笉鑳借秴杩�:" + (this.maxSize || 50) + "M"
           );
           return false;
         }
       }
       return true;
-    }
-  }
+    },
+  },
 };
 </script>
 <style lang="less" scoped>
@@ -741,20 +729,26 @@
   .img-selector {
     position: relative;
     cursor: pointer;
-    margin: 0 10px 10px 0;
+    // margin: 0 10px 10px 0;
+    margin: 0px;
     float: left;
-    width: 65px;
-    height: 65px;
+    width: 365px;
+    height: 365px;
     border: 1px solid #c7c7c7;
     overflow: hidden;
     border-radius: 5px;
     box-sizing: content-box;
+    background-image: url("~@/assets/test.png");
+    background-repeat: no-repeat;
+    background-position: center;
+    background-size: contain;
     img {
       margin: 0;
       padding: 0;
       width: 100%;
       height: 100%;
       object-fit: cover;
+      // background-image: url("@/assets/logo.png");
     }
 
     .operation {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/extend/formulaExecuteDetail.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/extend/formulaExecuteDetail.vue"
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/extend/formulaExecuteDetail.vue"
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/extend/taskExecuteDetail.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/extend/taskExecuteDetail.vue"
new file mode 100644
index 0000000..ced7068
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/extend/taskExecuteDetail.vue"
@@ -0,0 +1,259 @@
+<template>
+  <div>
+    <vol-box
+      v-model="showDetialBox"
+      :lazy="true"
+      width="1200px"
+      :padding="15"
+      title="浠诲姟璇︽儏"
+    >
+      <el-row height="50">
+        <el-col :span="24">
+          <div class="grid-content right-text">
+            <el-link type="primary" @click="switchView">鍒囨崲瑙嗗浘</el-link>
+          </div>
+        </el-col>
+      </el-row>
+      <div :style="{ height: height }">
+        <div v-if="viewType == 1">
+          <el-row height="50">
+            <el-col :span="8">
+              <div
+                class="grid-content content-text"
+                style="font-weight: bold; font-size: 18px"
+              >
+                <span>浠诲姟缂栧彿锛歿{ row.taskNum }}</span>
+              </div>
+            </el-col>
+            <el-col :span="8">
+              <div
+                class="grid-content content-text"
+                style="font-weight: bold; font-size: 18px"
+              >
+                <span>鎵樼洏缂栧彿锛歿{ row.palletCode }}</span>
+              </div>
+            </el-col>
+            <el-col :span="8">
+              <div
+                class="grid-content content-text"
+                style="font-weight: bold; font-size: 18px"
+              >
+                <span>浠诲姟鐘舵�侊細{{ row.taskState }}</span>
+              </div>
+            </el-col>
+          </el-row>
+          <div style="height: 100px; margin-top: 3%">
+            <el-steps :active="active" align-center finish-status="success">
+              <el-step
+                v-for="item in steps"
+                :key="item.title"
+                :title="item.title"
+                :description="item.description"
+              ></el-step>
+            </el-steps>
+          </div>
+          <el-row height="50" v-show="previousShow || nextShow">
+            <el-col :span="8">
+              <div v-show="previousShow" class="grid-content content-text">
+                <el-button type="danger" @click="previous"
+                  >鍥炴粴鍒颁笂涓�姝�</el-button
+                >
+              </div>
+            </el-col>
+            <el-col :span="8">
+              <div v-show="recoveryShow" class="grid-content content-text">
+                <el-button type="primary" @click="recovery">浠诲姟鎸傝捣鎭㈠</el-button>
+              </div>
+            </el-col>
+            <el-col :span="8">
+              <div v-show="nextShow" class="grid-content content-text">
+                <el-button type="warning" @click="next">璺宠浆鍒颁笅涓�姝�</el-button>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+        <div v-else>
+          <el-table
+            :data="tableData"
+            style="width: 100%"
+            :row-class-name="tableRowClassName"
+          >
+            <el-table-column type="index" width="50"> </el-table-column>
+            <el-table-column prop="taskNum" label="浠诲姟鍙�" width="90">
+            </el-table-column>
+            <el-table-column prop="taskState" label="浠诲姟鐘舵��" width="90">
+            </el-table-column>
+            <el-table-column prop="currentAddress" label="褰撳墠浣嶇疆" width="90">
+            </el-table-column>
+            <el-table-column prop="nextAddress" label="涓嬩竴浣嶇疆" width="90">
+            </el-table-column>
+            <el-table-column prop="isManual" label="鏄惁浜哄伐鎿嶄綔" width="120">
+            </el-table-column>
+            <el-table-column prop="isNormal" label="鏄惁姝e父" width="90">
+            </el-table-column>
+            <el-table-column prop="description" label="鎻忚堪"> </el-table-column>
+            <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" width="180">
+            </el-table-column>
+            <el-table-column prop="remark" label="澶囨敞" width="180">
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
+    </vol-box>
+  </div>
+</template>
+
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+  components: { VolBox },
+  data() {
+    return {
+      active: 0,
+      showDetialBox: false,
+      row: {},
+      steps: [],
+      viewType: 1,
+      height: "200px",
+      tableData: [],
+      previousShow: false,
+      nextShow: false,
+      recoveryShow: true,
+    };
+  },
+  methods: {
+    open(row) {
+      this.row = row;
+      this.showDetialBox = true;
+      if (this.viewType == 1) {
+        this.getSteps();
+      } else {
+        this.getDetailDatas();
+      }
+
+      this.$emit("parentCall", ($vue) => {
+        var previousButton = $vue.buttons.find((x) => x.value == "Previous");
+        this.previousShow = previousButton != null;
+
+        var nextButton = $vue.buttons.find((x) => x.value == "Next");
+        this.nextShow = nextButton != null;
+      });
+    },
+    getSteps() {
+      this.http
+        .post(
+          "/api/TaskExecuteDetail/GetDetailInfo?taskNum=" + this.row.taskNum,
+          {},
+          true
+        )
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.steps = x.data.list;
+          this.active = x.data.active;
+        });
+    },
+    getDetailDatas() {
+      this.http
+        .post(
+          "/api/TaskExecuteDetail/GetDetailDatas?taskNum=" + this.row.taskNum,
+          {},
+          true
+        )
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.tableData = x.data;
+        });
+    },
+    previous() {
+      this.http
+        .post(
+          "/api/Task/RollbackTaskStatusToLast?taskNum=" + this.row.taskNum,
+          {},
+          true
+        )
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.getSteps();
+        });
+    },
+    recovery(){
+      this.http
+        .post(
+          "/api/Task/TaskStatusRecovery?taskNum=" + this.row.taskNum,
+          {},
+          true
+        )
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.getSteps();
+        });
+    },
+    next() {
+      this.http
+        .post(
+          "/api/Task/UpdateTaskStatusToNext?taskNum=" + this.row.taskNum,
+          {},
+          true
+        )
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.getSteps();
+        });
+    },
+    switchView() {
+      this.viewType = this.viewType == 1 ? 2 : 1;
+      if (this.viewType == 2) {
+        this.height = "600px";
+        this.getDetailDatas();
+      } else {
+        this.height = "200px";
+      }
+    },
+    tableRowClassName({ row, rowIndex }) {
+      if (!row.isNormal) {
+        return "error-row";
+      } else if (row.isManual) {
+        return "warning-row";
+      }
+      return "success-row";
+    },
+  },
+  created() {},
+};
+</script>
+
+<style scoped>
+.el-col {
+  border-radius: 4px;
+}
+.grid-content {
+  border-radius: 4px;
+  min-height: 36px;
+}
+.content-text {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.right-text {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+}
+</style>
+<style>
+.el-table .warning-row {
+  background: #fcf1e2;
+}
+
+.el-table .success-row {
+  background: #f0f9eb;
+}
+
+.el-table .error-row {
+  background: #fde2e2;
+}
+</style>
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/formula.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/formula.js"
index 76c1328..8371849 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/formula.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/formula.js"
@@ -12,6 +12,7 @@
     buttons: [],//鎵╁睍鐨勬寜閽�
     methods: {//浜嬩欢鎵╁睍
         onInit() {
+            
         },
         onInited() {
         }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/processInfo.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/processInfo.js"
index da94487..07fd8e5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/processInfo.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/processInfo.js"
@@ -14,6 +14,7 @@
     buttons: [],//鎵╁睍鐨勬寜閽�
     methods: {//浜嬩欢鎵╁睍
         onInit() {
+
         },
         onInited() {
         }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/scanStation.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/scanStation.js"
index da94487..4b5d85f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/scanStation.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/extension/basicinfo/scanStation.js"
@@ -14,6 +14,18 @@
     buttons: [],//鎵╁睍鐨勬寜閽�
     methods: {//浜嬩欢鎵╁睍
         onInit() {
+    let ExportProcessCardBtn = this.buttons.find(x => x.value == 'ExportProcessCard');
+      if (ExportProcessCardBtn) {
+        ExportProcessCardBtn.onClick = function () {
+          this.http
+            .post("api/scanStation/ExportData", null, "鏁版嵁澶勭悊涓�")
+            .then((x) => {
+              if (!x.status) return this.$message.error(x.message);
+              this.$message.success("鎿嶄綔鎴愬姛");
+              this.refresh();
+            });
+        }
+      }
         },
         onInited() {
         }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/Home.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/Home.vue"
index 9a69c91..6a085b0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/Home.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/Home.vue"
@@ -34,6 +34,14 @@
               v-model="leftPartCodes[index]"
               disabled
             />
+            <!-- 鏂板锛氫緵鏂逛唬鐮佽緭鍏ユ -->
+            <input
+              type="text"
+              class="input-box supplier-code-input"
+              v-model="leftPartSupplierCodes[index]"
+              disabled
+              placeholder="渚涙柟浠g爜"
+            />
             <label class="checkbox-container">
               <input
                 type="checkbox"
@@ -57,7 +65,14 @@
       <div class="right-top">
         <div class="form-row input-submit-row">
           <span class="label">褰曞叆妗嗭細</span>
-          <input type="text" class="input-box" v-model="rightTopInput" />
+          <!-- 鍏抽敭淇敼1锛氭坊鍔爎ef鏍囪瘑 -->
+          <input
+            ref="inputBoxRef"
+            type="text"
+            class="input-box"
+            v-model="rightTopInput"
+            @blur="handleInputBlur"
+          />
           <button class="btn save-btn submit-input-btn" @click="saveData">
             <i class="icon icon-submit"></i>鎻愪氦
           </button>
@@ -76,6 +91,14 @@
             />
             <button class="btn clear-btn" @click="clearFinishedProductCode">
               <i class="icon icon-clear"></i>娓呴櫎
+            </button>
+            <!-- 鏂板锛氬垹闄ゅ綋鍓嶆墭鐩樻寜閽� -->
+            <button
+              class="btn delete-tray-btn"
+              @click="deleteCurrentTray"
+              :disabled="deleteLoading"
+            >
+              <i class="icon icon-delete"></i>鍒犻櫎褰撳墠鎵樼洏
             </button>
           </div>
           <div
@@ -101,7 +124,7 @@
 </template>
 
 <script>
-import { ref, onMounted, onUnmounted, watch, computed } from "vue";
+import { ref, onMounted, onUnmounted, watch, computed, nextTick } from "vue";
 import axios from "axios";
 
 export default {
@@ -111,12 +134,19 @@
     const finishedProductId = ref(""); // 宸︿晶鎴愬搧ID锛堟帴鍙h繑鍥烇級
     const rightTopInput = ref(""); // 鍙充晶鏍稿績褰曞叆妗�
     const leftPartCodes = ref(Array(10).fill("")); // 宸︿晶闆朵欢缂栧彿鏁扮粍
+    // 鏂板锛氬乏渚т緵鏂逛唬鐮佹暟缁�
+    const leftPartSupplierCodes = ref(Array(10).fill(""));
     const rightPartCodes = ref(Array(10).fill("")); // 鍙充晶闆朵欢缂栧彿鏁扮粍
     const leftPartChecked = ref(Array(10).fill(false)); // 宸︿晶闆朵欢鍕鹃�夌姸鎬�
     const leftPartIds = ref(Array(10).fill("")); // 宸︿晶闆朵欢ID锛堟帴鍙h繑鍥烇級
     const finishedProductCode = ref(""); // 鍙充晶鎴愬搧缂栧彿杈撳叆妗�
     const fillIndex = ref(-1); // 褰曞叆妗嗚嚜鍔ㄥ~鍏呯储寮�
     const checkLoading = ref(Array(10).fill(false)); // 闆朵欢鍕鹃�夊姞杞介攣
+    // 鏂板锛氬垹闄ゆ墭鐩樺姞杞界姸鎬�
+    const deleteLoading = ref(false);
+
+    // 鍏抽敭淇敼2锛氬畾涔夊綍鍏ユref
+    const inputBoxRef = ref(null);
 
     // 淇″彿鐏浉鍏�
     const signalStates = ref([false, false, false, false, false]);
@@ -136,6 +166,17 @@
     const destroyDelayTime = 500; // 褰曞叆妗嗗~鍏呭欢杩�500ms
     let autoSubmitDebounceTimer = null;
     let submitLock = ref(false); // 鎻愪氦閿侊紝闃叉閲嶅鎻愪氦
+
+    // 鍏抽敭淇敼3锛氬皝瑁呰仛鐒︽柟娉�
+    const focusInputBox = () => {
+      nextTick(() => {
+        if (inputBoxRef.value) {
+          inputBoxRef.value.focus();
+          // 鍙�夛細閫変腑杈撳叆妗嗗唴瀹癸紝鏂逛究鐩存帴瑕嗙洊杈撳叆
+          // inputBoxRef.value.select();
+        }
+      });
+    };
 
     // 璁$畻灞炴�� - 缁熻鏈夋晥鍕鹃��/濉厖鏁伴噺锛堣繃婊ょ┖鍊硷級
     const checkedCount = computed(() => {
@@ -162,6 +203,8 @@
             for (let i = 0; i < 10; i++) {
               leftPartCodes.value[i] = data.leftPartCodes[i] || "";
               leftPartIds.value[i] = data.leftPartIds?.[i] || "";
+              // 鏂板锛氳祴鍊间緵鏂逛唬鐮�
+              leftPartSupplierCodes.value[i] = data.leftPartSupplierCodes?.[i] || "";
             }
           }
           if (Array.isArray(data.leftPartChecked) && data.leftPartChecked.length >= 10) {
@@ -172,6 +215,9 @@
         }
       } catch (error) {
         console.error("鑾峰彇宸︿晶鍒濆鏁版嵁澶辫触锛�", error);
+      } finally {
+        // 鏁版嵁鍔犺浇瀹屾垚鍚庤仛鐒�
+        focusInputBox();
       }
     };
 
@@ -214,16 +260,19 @@
       if (!finishedProductId.value) {
         alert("鎴愬搧ID涓嶅瓨鍦紝鏃犳硶鏇存柊闆朵欢鎵爜鐘舵�侊紒");
         leftPartChecked.value[index] = !isChecked;
+        focusInputBox(); // 鎻愮ず鍚庤仛鐒�
         return;
       }
       if (!partId) {
         alert(`闆朵欢${index + 1}鏁版嵁搴揑D涓嶅瓨鍦紝鏃犳硶鏇存柊鎵爜鐘舵�侊紒`);
         leftPartChecked.value[index] = !isChecked;
+        focusInputBox(); // 鎻愮ず鍚庤仛鐒�
         return;
       }
       if (!partCode.trim()) {
         alert(`闆朵欢${index + 1}缂栧彿涓虹┖锛屾棤娉曟洿鏂版壂鐮佺姸鎬侊紒`);
         leftPartChecked.value[index] = !isChecked;
+        focusInputBox(); // 鎻愮ず鍚庤仛鐒�
         return;
       }
 
@@ -254,6 +303,7 @@
         checkLoading.value[index] = false;
         if (checkDebounceTimer) clearTimeout(checkDebounceTimer);
         checkDebounceTimer = null;
+        focusInputBox(); // 鎿嶄綔瀹屾垚鍚庤仛鐒�
       }
     };
 
@@ -271,12 +321,10 @@
           fillIndex.value++;
         } else {
           alert("鎴愬搧缂栧彿鍜岄浂浠�1-10宸插叏閮ㄥ~鍏呭畬鎴�,鏃犳硶缁х画褰曞叆!");
-          rightTopInput.value = "";
-          destroyDelayTimer = null;
-          return;
         }
         rightTopInput.value = "";
         destroyDelayTimer = null;
+        focusInputBox(); // 濉厖瀹屾垚鍚庤仛鐒�
       }, destroyDelayTime);
     };
 
@@ -289,9 +337,23 @@
       { immediate: false }
     );
 
+    // 鍏抽敭淇敼4锛氬け鍘荤劍鐐规椂閲嶆柊鑱氱劍
+    const handleInputBlur = () => {
+      // 寤惰繜涓�鐐规墽琛岋紝閬垮厤鍜屽叾浠栨搷浣滃啿绐�
+      setTimeout(() => {
+        focusInputBox();
+      }, 50);
+    };
+
     // 鍙充晶杈撳叆妗嗘竻闄ゆ柟娉�
-    const clearRightPart = (index) => (rightPartCodes.value[index] = "");
-    const clearFinishedProductCode = () => (finishedProductCode.value = "");
+    const clearRightPart = (index) => {
+      rightPartCodes.value[index] = "";
+      focusInputBox(); // 娓呴櫎鍚庤仛鐒�
+    };
+    const clearFinishedProductCode = () => {
+      finishedProductCode.value = "";
+      focusInputBox(); // 娓呴櫎鍚庤仛鐒�
+    };
 
     // 鏍稿績淇敼锛氭仮澶嶆垚鍝佺紪鍙峰繀濉牎楠岋紝鏈~鍐欑洿鎺ユ彁绀哄苟缁堟鎻愪氦
     const saveData = async () => {
@@ -299,6 +361,7 @@
       const productCode = finishedProductCode.value.trim();
       if (!productCode) {
         alert("璇峰厛濉啓鎴愬搧缂栧彿锛屾垚鍝佺紪鍙蜂负蹇呭~椤癸紒");
+        focusInputBox(); // 鎻愮ず鍚庤仛鐒�
         return;
       }
       // 2. 鎻愪氦閿侊細闃叉閲嶅鐐瑰嚮
@@ -328,10 +391,14 @@
           rightPartCodes.value = Array(10).fill("");
           rightTopInput.value = "";
           fillIndex.value = -1;
+          const msg = resData.message;
+
+          // 鏍稿績淇敼锛氫粎褰� msg 涓嶆槸 null 鏃舵墠寮瑰嚭鎻愮ず
+          if (msg !== null) {
+            alert(msg);
+          }
         } else {
-          // 涓氬姟閿欒锛氱洿鎺ュ睍绀哄悗绔繑鍥炵殑message锛堝鐗╂枡閿欒銆佹棤閰嶆柟锛�
-          const errorMsg = resData.message || "鎻愪氦澶辫触锛屾湭鐭ヤ笟鍔¢敊璇�";
-          alert(`鎻愪氦澶辫触锛�${errorMsg}`);
+          alert(`${resData.message || "鏈煡閿欒"}`);
         }
       } catch (error) {
         // 6. 寮傚父鎹曡幏锛氬吋瀹瑰悗绔湭鎹曡幏寮傚父锛堝PLC閫氳寮傚父銆佹暟缁勮秺鐣屻��500閿欒锛�
@@ -352,6 +419,7 @@
       } finally {
         // 7. 閲婃斁鎻愪氦閿侊細鏃犺鎴愬姛/澶辫触閮借閲婃斁
         submitLock.value = false;
+        focusInputBox(); // 鎻愪氦瀹屾垚鍚庤仛鐒�
       }
     };
 
@@ -372,6 +440,7 @@
         if (!hasProductCode) {
           console.log("鈿狅笍 鎴愬搧缂栧彿鏈~鍐欙紝璺宠繃鑷姩鎻愪氦");
           autoSubmitDebounceTimer = null;
+          focusInputBox(); // 鏍¢獙鍚庤仛鐒�
           return;
         }
 
@@ -393,6 +462,61 @@
       }, 300); // 300ms闃叉姈锛岄伩鍏嶈緭鍏ラ绻佽Е鍙�
     };
 
+    // 鏂板锛氬垹闄ゅ綋鍓嶆墭鐩樻柟娉�
+    const deleteCurrentTray = async () => {
+      // 纭鎿嶄綔锛岄槻姝㈣鍒�
+      if (!confirm("纭瑕佸垹闄ゅ綋鍓嶆墭鐩樻暟鎹悧锛熸鎿嶄綔涓嶅彲鎭㈠锛�")) {
+        focusInputBox();
+        return;
+      }
+
+      // 璁剧疆鍔犺浇鐘舵�侊紝闃叉閲嶅鐐瑰嚮
+      deleteLoading.value = true;
+      try {
+        console.log("馃摛 璋冪敤鍒犻櫎褰撳墠鎵樼洏鎺ュ彛锛�/api/boxing/DeleteCurrentTray");
+        // 璋冪敤鍒犻櫎鎺ュ彛锛堟牴鎹疄闄呴渶姹傞�夋嫨GET/POST锛岃繖閲岄粯璁ょ敤POST锛岃嫢鍚庣鏄疓ET鍙敼涓篻et锛�
+        const response = await axios.post(
+          "/api/boxing/DeleteCurrentTray",
+          {}, // 鑻ユ棤鍙傛暟浼犵┖瀵硅薄
+          { timeout: 8000 }
+        );
+        const resData = response.data;
+        console.log("馃摜 鍒犻櫎褰撳墠鎵樼洏鎺ュ彛杩斿洖锛�", resData);
+
+        // 閫傞厤鍚庣杩斿洖鏍煎紡
+        const isSuccess = resData.status === true || resData.Status === true;
+        if (isSuccess) {
+          // 鍒犻櫎鎴愬姛鍚庢竻绌哄彸渚ц緭鍏ユ
+          finishedProductCode.value = "";
+          rightPartCodes.value = Array(10).fill("");
+          rightTopInput.value = "";
+          fillIndex.value = -1;
+          alert(resData.message || "褰撳墠鎵樼洏鍒犻櫎鎴愬姛锛�");
+        } else {
+          alert(`鍒犻櫎澶辫触锛�${resData.message || "鏈煡閿欒"}`);
+        }
+      } catch (error) {
+        // 寮傚父澶勭悊
+        let errorMsg = "鍒犻櫎鎵樼洏璇锋眰寮傚父锛�";
+        if (error.code === "ECONNABORTED") {
+          errorMsg = "鍒犻櫎璇锋眰瓒呮椂锛佽绋嶅悗閲嶈瘯";
+        } else if (error.response) {
+          errorMsg = `鏈嶅姟鍣ㄩ敊璇細${error.response.status} - ${error.response.statusText}`;
+          console.error("鉂� 鍒犻櫎鎵樼洏鏈嶅姟鍣ㄩ敊璇鎯咃細", error.response.data);
+        } else if (error.request) {
+          errorMsg = "缃戠粶寮傚父锛佹湭鏀跺埌鍚庣鍝嶅簲锛岃妫�鏌ユ帴鍙e湴鍧�鍜岀綉缁�";
+        } else {
+          errorMsg = `璇锋眰閿欒锛�${error.message}`;
+        }
+        alert(errorMsg);
+        console.error("鉂� 鍒犻櫎鎵樼洏鎺ュ彛寮傚父璇︽儏锛�", error);
+      } finally {
+        // 閲婃斁鍔犺浇鐘舵��
+        deleteLoading.value = false;
+        focusInputBox(); // 鎿嶄綔瀹屾垚鍚庤仛鐒﹀綍鍏ユ
+      }
+    };
+
     // 鐩戝惉鑷姩鎻愪氦鐩稿叧鏁版嵁鍙樺寲锛岃Е鍙戞牎楠�
     watch([checkedCount, filledPartCount, finishedProductCode], () => checkAutoSubmit(), {
       deep: true,
@@ -403,15 +527,15 @@
     const detectFillIndex = () => {
       if (!finishedProductCode.value.trim()) {
         fillIndex.value = -1;
-        return;
-      }
-      for (let i = 0; i < 10; i++) {
-        if (!rightPartCodes.value[i].trim()) {
-          fillIndex.value = i;
-          return;
+      } else {
+        for (let i = 0; i < 10; i++) {
+          if (!rightPartCodes.value[i].trim()) {
+            fillIndex.value = i;
+            return;
+          }
         }
+        fillIndex.value = 10;
       }
-      fillIndex.value = 10;
     };
 
     // 鐩戝惉鎴愬搧/闆朵欢杈撳叆锛屾洿鏂板~鍏呯储寮�
@@ -425,6 +549,7 @@
       await fetchLeftInitialData();
       startPolling();
       detectFillIndex();
+      focusInputBox(); // 椤甸潰鎸傝浇鍚庣珛鍗宠仛鐒�
     });
 
     // 鐢熷懡鍛ㄦ湡锛氬嵏杞芥椂娓呴櫎鎵�鏈夊畾鏃跺櫒/闃叉姈锛岄槻姝㈠唴瀛樻硠婕�
@@ -440,16 +565,22 @@
       finishedProduct,
       rightTopInput,
       leftPartCodes,
+      // 鏂板锛氭毚闇蹭緵鏂逛唬鐮佹暟缁�
+      leftPartSupplierCodes,
       rightPartCodes,
       leftPartChecked,
       signalStates,
       signalLabels,
       finishedProductCode,
       checkLoading,
+      deleteLoading, // 鏆撮湶鍒犻櫎鍔犺浇鐘舵��
       handlePartCheck,
       saveData,
+      deleteCurrentTray, // 鏆撮湶鍒犻櫎鎵樼洏鏂规硶
       clearRightPart,
       clearFinishedProductCode,
+      inputBoxRef, // 鏆撮湶ref
+      handleInputBlur, // 鏆撮湶鏂规硶
     };
   },
 };
@@ -613,6 +744,11 @@
   transition: all 0.2s ease;
   background-color: #ffffff;
 }
+/* 鏂板锛氫緵鏂逛唬鐮佽緭鍏ユ鏍峰紡锛堝搴︾◢绐勶級 */
+.supplier-code-input {
+  flex: 0 0 150px;
+  min-width: 120px;
+}
 .input-box:focus {
   border-color: #3b82f6;
   box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.12);
@@ -645,6 +781,10 @@
   gap: 8px;
   position: relative;
   overflow: hidden;
+}
+/* 鏂板锛氬垹闄ゆ墭鐩樻寜閽搴﹂�傞厤 */
+.delete-tray-btn {
+  width: 140px !important;
 }
 .submit-input-btn {
   width: 110px !important;
@@ -692,6 +832,10 @@
 .icon-submit {
   background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M2.01 21L15 13.4 23 21V5H2.01V21zM17 15l-5-5-5 5V7h10v8z'/%3E%3C/svg%3E");
 }
+/* 鏂板锛氬垹闄ゅ浘鏍� */
+.icon-delete {
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z'/%3E%3C/svg%3E");
+}
 
 /* 鎸夐挳涓婚鏍峰紡 */
 .clear-btn {
@@ -711,6 +855,16 @@
 .save-btn:hover:not(:disabled) {
   transform: translateY(-1px);
   box-shadow: 0 4px 8px rgba(59, 130, 246, 0.15);
+}
+/* 鏂板锛氬垹闄ゆ墭鐩樻寜閽牱寮� */
+.delete-tray-btn {
+  background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
+  color: #fff;
+  padding: 0 12px;
+}
+.delete-tray-btn:hover:not(:disabled) {
+  transform: translateY(-1px);
+  box-shadow: 0 4px 8px rgba(245, 158, 11, 0.15);
 }
 
 /* 淇″彿鐏牱寮� */
@@ -851,8 +1005,16 @@
   .input-box {
     width: 100%;
   }
+  /* 閫傞厤绉诲姩绔緵鏂逛唬鐮佽緭鍏ユ */
+  .supplier-code-input {
+    flex: 1;
+    min-width: 100%;
+    margin-top: 6px;
+  }
+  /* 绉诲姩绔寜閽搴﹂�傞厤 */
   .btn,
-  .submit-input-btn {
+  .submit-input-btn,
+  .delete-tray-btn {
     width: 100% !important;
     margin-top: 6px;
   }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/formula.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/formula.vue"
index fc822f3..a213ecf 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/formula.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/formula.vue"
@@ -11,14 +11,43 @@
     :extend="extend"
   >
   </view-grid>
+
+  <!-- 鍙充晶鍥剧墖渚ц竟鏍� - 澧炲姞z-index灞傜骇 -->
+  <div class="image-sidebar" :class="{ 'sidebar-open': isSidebarOpen }">
+    <div class="sidebar-toggle" @click="toggleSidebar">
+      <span>{{ isSidebarOpen ? ">" : "<" }}</span>
+    </div>
+    <div class="sidebar-content">
+      <div class="image-container">
+        <img :src="logoUrl" alt="鍙傝�冨浘鐗�" class="reference-image" />
+        <div class="image-description">閰嶆柟甯冨眬鍙傝�冨浘</div>
+      </div>
+    </div>
+  </div>
 </template>
 
 <script>
 import extend from "@/extension/basicinfo/formula.js";
-import { ref, defineComponent } from "vue";
+import { ref, defineComponent, computed } from "vue";
 
 export default defineComponent({
   setup() {
+    const isSidebarOpen = ref(false);
+
+    // 鍥剧墖璺緞
+    const logoUrl = computed(() => {
+      try {
+        return require("@/assets/test.png");
+      } catch (e) {
+        console.log("浣跨敤鐩稿璺緞鍔犺浇鍥剧墖");
+        return "/assets/test.png";
+      }
+    });
+
+    const toggleSidebar = () => {
+      isSidebarOpen.value = !isSidebarOpen.value;
+    };
+
     const table = ref({
       key: "id",
       footer: "Foots",
@@ -28,7 +57,7 @@
       sortName: "createDate",
     });
 
-    // 缂栬緫琛ㄥ崟瀛楁 - 鏂板pressFastenTorque锛堝帇瑁呬綅绱у浐鎵煩锛�
+    // 缂栬緫琛ㄥ崟瀛楁 - 瀹屽叏鍖归厤鍚庣Dt_Formula瀹炰綋绫�
     const editFormFields = ref({
       id: "",
       productCode: "",
@@ -37,173 +66,230 @@
       productWidth: "",
       productHeight: "",
       pressNoTighten: "",
-      screwDownsetDistance: "",
-      screwTorqueOutput: "",
-      pressFastenTorque: "", // 銆愭柊澧炪�戝帇瑁呬綅绱у浐鎵煩
+      pressNoCheckBottomPlate: "",
+      screwDownsetDistance: "", // 鍚庣娉ㄩ噴涓猴細淇濆帇鍘嬪姏
+      screwTorqueOutput: "", // 鍚庣娉ㄩ噴涓猴細涓績楂樺害
       dintAutoScrewOn: "",
+      pressFastenTorque: "",
       p0P1Width: "",
       p0P2Width: "",
       p0P3Width: "",
-      p1P3Height: "",
-      p2P3Height: "",
-      productImagePath: "",
+      pressPressureDiff: "",
+      pressTorqueDiff: "",
+      detectHeightDiff: "",
+      screwPositionDiff: "",
+      // 绉婚櫎浜哻enterHeight瀛楁锛堝悗绔棤姝ゅ瓧娈碉紝鍘熷墠绔厤缃敊璇槧灏勶級
     });
 
-    // 缂栬緫琛ㄥ崟閰嶇疆-鏂板鍘嬭浣嶇揣鍥烘壄鐭╋紝甯冨眬閫傞厤鍘熸湁绱у噾鎬�
+    // 缂栬緫琛ㄥ崟閰嶇疆 - 淇瀛楁涓枃鍚嶇О鍜屾敞閲婏紝鍖归厤鍚庣瀹炰綋
+    // 閲嶇偣锛氫负鏍稿績瀛楁琛ュ厖蹇呭~閰嶇疆锛坮equire: true锛�
     const editFormOptions = ref([
-      // 绗竴琛岋細鍩虹鏍囪瘑
       [
         {
           title: "鎴愬搧缂栧彿",
+          required: true,
           field: "productCode",
-          type: "input",
+          type: "string",
           width: 200,
-          require: true,
         },
         {
           title: "鎴愬搧鍚嶇О",
           field: "productName",
-          type: "input",
+          type: "string",
           width: 200,
-          require: true,
+          required: true,
         },
         {
           title: "鎷х揣绋嬪簭鍙�",
           field: "dintAutoScrewOn",
-          type: "input",
+          type: "string",
           inputType: "number",
           width: 180,
           placeholder: "璇疯緭鍏ユ暣鏁�",
-        },
-        {
-          title: "浜у搧闀垮害",
-          field: "productLength",
-          type: "input",
-          inputType: "number",
-          width: 120,
-          placeholder: "淇濈暀2浣嶅皬鏁�",
-          attrs: { step: 0.01, min: 0 },
+          required: true,
         },
       ],
       [
         {
-          title: "浜у搧瀹藉害",
+          title: "浜у搧闀垮害", // 淇鍚庣娉ㄩ噴
+          field: "productLength",
+          type: "string",
+          inputType: "number",
+          width: 100,
+          placeholder: "淇濈暀2浣嶅皬鏁�",
+          attrs: { step: 0.01, min: 0 },
+          required: true,
+        },
+        {
+          title: "浜у搧瀹藉害", // 淇鍚庣娉ㄩ噴
           field: "productWidth",
-          type: "input",
+          type: "string",
           inputType: "number",
-          width: 120,
+          width: 100,
           placeholder: "淇濈暀2浣嶅皬鏁�",
           attrs: { step: 0.01, min: 0 },
+          required: true,
         },
         {
-          title: "浜у搧楂樺害",
+          title: "浜у搧楂樺害", // 淇鍚庣娉ㄩ噴
           field: "productHeight",
-          type: "input",
+          type: "string",
           inputType: "number",
-          width: 120,
+          width: 100,
           placeholder: "淇濈暀2浣嶅皬鏁�",
           attrs: { step: 0.01, min: 0 },
+          required: true,
         },
+      ],
+      [
         {
-          title: "鍘嬭浣嶄笉鎷х揣",
+          title: "涓嶆嫥绱�",
           field: "pressNoTighten",
           type: "select",
           width: 120,
           align: "center",
+          defaultValue: "0",
           data: [
             { key: "0", value: "鍚�" },
             { key: "1", value: "鏄�" },
           ],
+          required: true, // 鏂板锛氬紑鍏崇被瀛楁蹇呭~
+        },
+        {
+          title: "涓嶆祴搴曟澘",
+          field: "pressNoCheckBottomPlate",
+          type: "select",
+          width: 120,
+          align: "center",
+          defaultValue: "0",
+          data: [
+            { key: "0", value: "鍚�" },
+            { key: "1", value: "鏄�" },
+          ],
+          required: true, // 鏂板锛氬紑鍏崇被瀛楁蹇呭~
         },
         {
           title: "淇濆帇鍘嬪姏",
           field: "screwDownsetDistance",
-          type: "input",
-          inputType: "number",
-          width: 150,
-          placeholder: "淇濈暀2浣嶅皬鏁�",
-          attrs: { step: 0.01, min: 0 },
-        },
-      ],
-      [
-        {
-          title: "涓績楂樺害",
-          field: "screwTorqueOutput",
-          type: "input",
+          type: "string",
           inputType: "number",
           width: 120,
           placeholder: "淇濈暀2浣嶅皬鏁�",
           attrs: { step: 0.01, min: 0 },
+          required: true, // 鏂板锛氬伐鑹哄弬鏁板繀濉�
+        },
+      ],
+      [
+        {
+          title: "涓績楂樺害", // 淇瀛楁涓枃鍚嶇О锛堝悗绔敞閲婏級
+          field: "screwTorqueOutput",
+          type: "string",
+          inputType: "number",
+          width: 120,
+          placeholder: "淇濈暀2浣嶅皬鏁�",
+          attrs: { step: 0.01, min: 0 },
+          required: true, // 鏂板锛氬伐鑹哄弬鏁板繀濉�
         },
         {
-          title: "绱у浐鎵煩",
+          title: "绱у浐鎵煩", // 琛ュ厖瀹屾暣瀛楁鍚嶇О
           field: "pressFastenTorque",
-          type: "input",
+          type: "string",
           inputType: "number",
-          width: 150,
+          width: 120,
           placeholder: "淇濈暀2浣嶅皬鏁帮紝榛樿0.00",
           attrs: { step: 0.01, min: 0 },
+          required: true, // 鏂板锛氬伐鑹哄弬鏁板繀濉�
         },
         {
           title: "P0P1瀹藉害",
           field: "p0P1Width",
-          type: "input",
+          type: "string",
           inputType: "number",
           width: 120,
           placeholder: "淇濈暀2浣嶅皬鏁�",
           attrs: { step: 0.01, min: 0 },
+          required: true, // 鏂板锛氬昂瀵稿弬鏁板繀濉�
         },
+      ],
+      [
         {
           title: "P0P2瀹藉害",
           field: "p0P2Width",
-          type: "input",
+          type: "string",
           inputType: "number",
           width: 120,
           placeholder: "淇濈暀2浣嶅皬鏁�",
           attrs: { step: 0.01, min: 0 },
+          required: true, // 鏂板锛氬昂瀵稿弬鏁板繀濉�
         },
-      ],
-      // 绗洓琛岋細P绯诲垪楂樺害 + 浜у搧鍥剧墖璺緞
-      [
         {
           title: "P0P3瀹藉害",
           field: "p0P3Width",
-          type: "input",
+          type: "string",
           inputType: "number",
           width: 120,
           placeholder: "淇濈暀2浣嶅皬鏁�",
           attrs: { step: 0.01, min: 0 },
+          required: true, // 鏂板锛氬昂瀵稿弬鏁板繀濉�
         },
         {
-          title: "P1P3楂樺害",
-          field: "p1P3Height",
-          type: "input",
+          title: "鍘嬪姏宸��",
+          field: "pressPressureDiff",
+          type: "string",
           inputType: "number",
-          width: 150,
+          width: 120,
           placeholder: "淇濈暀2浣嶅皬鏁�",
           attrs: { step: 0.01, min: 0 },
+          required: true, // 鏂板锛氬樊鍊煎弬鏁板繀濉�
         },
+      ],
+      [
         {
-          title: "P2P3楂樺害",
-          field: "p2P3Height",
-          type: "input",
+          title: "鎵姏宸��",
+          field: "pressTorqueDiff",
+          type: "string",
           inputType: "number",
-          width: 150,
+          width: 120,
           placeholder: "淇濈暀2浣嶅皬鏁�",
           attrs: { step: 0.01, min: 0 },
+          required: true, // 鏂板锛氬樊鍊煎弬鏁板繀濉�
         },
         {
-          title: "浜у搧鍥剧墖璺緞",
-          field: "productImagePath",
-          type: "textarea",
-          width: 400,
-          rows: 2,
-          placeholder: "璇疯緭鍏ュ浘鐗囧畬鏁磋矾寰勶紝鏀寔500瀛楃浠ュ唴",
+          title: "楂樺害宸��",
+          field: "detectHeightDiff",
+          type: "string",
+          inputType: "number",
+          width: 120,
+          placeholder: "淇濈暀2浣嶅皬鏁�",
+          attrs: { step: 0.01, min: 0 },
+          required: true, // 鏂板锛氬樊鍊煎弬鏁板繀濉�
+        },
+        {
+          title: "铻虹汗宸��",
+          field: "screwPositionDiff",
+          type: "string",
+          inputType: "number",
+          width: 120,
+          placeholder: "淇濈暀2浣嶅皬鏁�",
+          attrs: { step: 0.01, min: 0 },
+          required: true, // 鏂板锛氬樊鍊煎弬鏁板繀濉�
+        },
+      ],
+      [
+        {
+          title: "鍨墖楂樺害",
+          field: "gasketHeight",
+          type: "string",
+          inputType: "number",
+          width: 120,
+          placeholder: "淇濈暀2浣嶅皬鏁�",
+          attrs: { step: 0.01, min: 0 },
+          required: true,
         },
       ],
     ]);
 
-    // 鎼滅储琛ㄥ崟瀛楁 - 鏃犻渶淇敼
+    // 鎼滅储琛ㄥ崟瀛楁
     const searchFormFields = ref({
       productCode: "",
       productName: "",
@@ -211,7 +297,7 @@
       createDate: "",
     });
 
-    // 鎼滅储琛ㄥ崟閰嶇疆 - 鏃犻渶淇敼
+    // 鎼滅储琛ㄥ崟閰嶇疆
     const searchFormOptions = ref([
       [
         { title: "鎴愬搧缂栧彿", field: "productCode", type: "like", width: 200 },
@@ -223,14 +309,14 @@
       ],
     ]);
 
-    // 琛ㄦ牸鍒楅厤缃� - 鏂板鍘嬭浣嶇揣鍥烘壄鐭╁垪
+    // 琛ㄦ牸鍒楅厤缃� - 淇瀛楁涓枃鍚嶇О鍜屾敞閲婏紝鍖归厤鍚庣瀹炰綋
     const columns = ref([
       {
         field: "id",
-        title: "搴忓彿",
+        title: "id",
         type: "int",
         width: 80,
-        hidden: true,
+        // hidden: true,
         align: "center",
       },
       {
@@ -250,28 +336,28 @@
       },
       {
         field: "productLength",
-        title: "浜у搧闀垮害",
+        title: "浜у搧闀垮害", // 淇鍚庣娉ㄩ噴
         type: "decimal",
         width: 90,
         align: "center",
       },
       {
         field: "productWidth",
-        title: "浜у搧瀹藉害",
+        title: "浜у搧瀹藉害", // 淇鍚庣娉ㄩ噴
         type: "decimal",
         width: 90,
         align: "center",
       },
       {
         field: "productHeight",
-        title: "浜у搧楂樺害",
+        title: "浜у搧楂樺害", // 淇鍚庣娉ㄩ噴
         type: "decimal",
         width: 90,
         align: "center",
       },
       {
         field: "pressNoTighten",
-        title: "鍘嬭浣嶄笉鎷х揣",
+        title: "涓嶆嫥绱�",
         type: "select",
         width: 100,
         align: "center",
@@ -284,24 +370,38 @@
         },
       },
       {
+        field: "pressNoCheckBottomPlate",
+        title: "涓嶆祴搴曟澘",
+        type: "select",
+        width: 110,
+        align: "center",
+        bind: {
+          key: "value",
+          data: [
+            { key: "0", value: "鍚�" },
+            { key: "1", value: "鏄�" },
+          ],
+        },
+      },
+      {
         field: "screwDownsetDistance",
-        title: "淇濆帇鍘嬪姏",
+        title: "淇濆帇鍘嬪姏", // 淇瀛楁涓枃鍚嶇О
         type: "decimal",
         width: 110,
         align: "center",
       },
       {
         field: "screwTorqueOutput",
-        title: "涓績楂樺害",
+        title: "涓績楂樺害", // 淇瀛楁涓枃鍚嶇О
         type: "decimal",
         width: 90,
         align: "center",
       },
       {
-        field: "pressFastenTorque", // 銆愭柊澧炪�戣〃鏍煎垪
-        title: "鍘嬭浣嶇揣鍥烘壄鐭�",
+        field: "pressFastenTorque",
+        title: "绱у浐鎵煩", // 琛ュ厖瀹屾暣瀛楁鍚嶇О
         type: "decimal",
-        width: 120,
+        width: 90,
         align: "center",
       },
       {
@@ -311,7 +411,6 @@
         width: 100,
         align: "center",
       },
-      // P绯诲垪瀹藉害
       {
         field: "p0P1Width",
         title: "P0P1瀹藉害",
@@ -333,30 +432,41 @@
         width: 90,
         align: "center",
       },
-      // P绯诲垪楂樺害
       {
-        field: "p1P3Height",
-        title: "P1P3楂樺害",
+        field: "pressPressureDiff",
+        title: "鍘嬪姏宸��",
         type: "decimal",
-        width: 90,
+        width: 100,
         align: "center",
       },
       {
-        field: "p2P3Height",
-        title: "P2P3楂樺害",
+        field: "pressTorqueDiff",
+        title: "鎵煩宸��",
         type: "decimal",
-        width: 90,
+        width: 100,
         align: "center",
       },
       {
-        field: "productImagePath",
-        title: "鍥剧墖璺緞",
-        type: "string",
-        width: 200,
-        align: "left",
-        overflow: "ellipsis",
+        field: "detectHeightDiff",
+        title: "楂樺害宸��",
+        type: "decimal",
+        width: 100,
+        align: "center",
       },
-      // 鍏叡瀛楁
+      {
+        field: "screwPositionDiff",
+        title: "铻虹汗宸��",
+        type: "decimal",
+        width: 100,
+        align: "center",
+      },
+      {
+        field: "gasketHeight",
+        title: "鍨墖楂樺害",
+        type: "decimal",
+        width: 100,
+        align: "center",
+      },
       {
         field: "creater",
         title: "鍒涘缓浜�",
@@ -387,7 +497,7 @@
       },
     ]);
 
-    // 閰嶆柟鏄庣粏閰嶇疆 - 鏃犻渶淇敼
+    // 閰嶆柟鏄庣粏閰嶇疆 - 鍚屾牱缁欐槑缁嗗瓧娈垫坊鍔犲繀濉�
     const detail = ref({
       cnName: "閰嶆柟淇℃伅璇︽儏",
       table: "FormulaDetail",
@@ -399,32 +509,34 @@
           width: 90,
           hidden: true,
           readonly: true,
-          require: true,
+          required: true,
           align: "center",
         },
         {
           field: "componentCode",
           title: "闆朵欢缂栧彿",
           type: "string",
-          edit: { type: "" },
+          edit: { type: "input" },
           width: 120,
-          require: true,
+          required: true, // 鏄庣粏鏍稿績瀛楁蹇呭~
           align: "left",
         },
         {
           field: "componentName",
           title: "闆朵欢鍚嶇О",
           type: "string",
-          edit: { type: "" },
+          edit: { type: "input" },
           width: 150,
+          required: true, // 鏄庣粏鏍稿績瀛楁蹇呭~
           align: "left",
         },
         {
           field: "supplierCode",
           title: "渚涙柟浠g爜",
           type: "string",
-          edit: { type: "" },
+          edit: { type: "input" },
           width: 150,
+          required: true, // 鏄庣粏鏍稿績瀛楁蹇呭~
           align: "left",
         },
         {
@@ -440,6 +552,7 @@
               { key: "1", value: "鏄�" },
             ],
           },
+          required: true, // 鏄庣粏寮�鍏冲瓧娈靛繀濉�
         },
       ],
       sortName: "createDate",
@@ -455,7 +568,112 @@
       searchFormOptions,
       columns,
       detail,
+      isSidebarOpen,
+      logoUrl,
+      toggleSidebar,
     };
   },
 });
 </script>
+
+<style scoped>
+/* 渚ц竟鏍忔牱寮� - 澧炲姞z-index灞傜骇 */
+.image-sidebar {
+  position: fixed;
+  top: 0;
+  right: -600px;
+  width: 600px;
+  height: 100vh;
+  background: #fff;
+  box-shadow: -2px 0 10px rgba(0, 0, 0, 0.1);
+  transition: right 0.3s ease;
+  z-index: 9999;
+  display: flex;
+}
+
+.sidebar-open {
+  right: 0;
+}
+
+.sidebar-toggle {
+  position: absolute;
+  left: -40px;
+  top: 50%;
+  transform: translateY(-50%);
+  width: 40px;
+  height: 80px;
+  background: #409eff;
+  color: white;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  cursor: pointer;
+  border-radius: 8px 0 0 8px;
+  font-size: 16px;
+  font-weight: bold;
+  transition: all 0.3s ease;
+  box-shadow: -2px 0 5px rgba(0, 0, 0, 0.1);
+  z-index: 10000; /* 鍒囨崲鎸夐挳鐨剒-index鏇撮珮 */
+}
+
+.sidebar-toggle:hover {
+  background: #66b1ff;
+}
+
+.sidebar-toggle span {
+  transition: transform 0.3s ease;
+}
+
+.sidebar-open .sidebar-toggle span {
+  transform: rotate(180deg);
+}
+
+.sidebar-content {
+  flex: 1;
+  padding: 20px;
+  overflow-y: auto;
+  z-index: 9999; /* 鍐呭鍖哄煙涔熻缃珮z-index */
+}
+
+.image-container {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+
+.reference-image {
+  max-width: 100%;
+  max-height: 60vh;
+  object-fit: contain;
+  border: 1px solid #ddd;
+  border-radius: 8px;
+  padding: 10px;
+  background: #f8f9fa;
+}
+
+.image-description {
+  margin-top: 15px;
+  padding: 10px;
+  background: #409eff;
+  color: white;
+  border-radius: 4px;
+  font-size: 14px;
+  text-align: center;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 768px) {
+  .image-sidebar {
+    width: 250px;
+    right: -250px;
+  }
+
+  .sidebar-toggle {
+    left: -30px;
+    width: 30px;
+    height: 60px;
+  }
+}
+</style>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/processInfo.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/processInfo.vue"
index 5a9b62d..49962fb 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/processInfo.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/processInfo.vue"
@@ -19,6 +19,13 @@
 
 export default defineComponent({
   setup() {
+    // 宸ュ叿鍑芥暟锛氭牸寮忓寲鏁板瓧涓轰袱浣嶅皬鏁�
+    const formatTwoDecimal = (value) => {
+      if (value === "" || value === null || value === undefined) return "";
+      const num = parseFloat(value);
+      return isNaN(num) ? "" : num.toFixed(2);
+    };
+
     // 琛ㄦ牸鍩虹閰嶇疆
     const table = ref({
       key: "id",
@@ -27,45 +34,51 @@
       name: "processInfo",
       url: "/processInfo/",
       sortName: "createDate",
-      sortOrder: "desc", // 鏂板锛氬垱寤烘椂闂撮粯璁ゅ�掑簭锛岀鍚堝父瑙勪娇鐢�
+      sortOrder: "desc", // 鍒涘缓鏃堕棿榛樿鍊掑簭
     });
 
-    // 缂栬緫琛ㄥ崟瀛楁 - 瀹屽叏鍖归厤鍚庣Dt_ProcessInfo瀹炰綋
-    // 鏂板锛歱ressPressure锛堝帇瑁呬綅涓嬪帇鍘嬪姏锛夛紝琛ュ叏鎵�鏈夊悗绔瓧娈�
+    // 缂栬緫琛ㄥ崟瀛楁 - 涓ユ牸鍖归厤鍚庣Dt_ProcessInfo瀹炰綋
     const editFormFields = ref({
-      id: "",
+      id: 0, // 涓婚敭榛樿鍊兼敼涓烘暟瀛�0
       palletCode: "",
       productCode: "",
       productName: "",
-      productSn: "", // 娴佹按鍙�
-      pressTightenNg: "", // 鍘嬭鎷х揣_鎷х揣NG
-      pressTightenOk: "", // 鍘嬭鎷х揣_鎷х揣OK
-      pressTightenUnfinished: "", // 鍘嬭鎷х揣_鏈鍔犲伐鏈畬鎴�
-      checkUnfinished: "", // 妫�娴媉鏈妫�娴嬫湭瀹屾垚
-      //componentQty: "", // 闆朵欢鏁伴噺
-      // torsioValue: "", // 鎵姏鍊�
-      // torsioValueStandard: "", // 鎵姏鍊兼爣鍑�
-      // stiffnessValue: "", // 鍒氬害鍊�
-      // stiffnessValueStandard: "", // 鍒氬害鍊兼爣鍑�
-      // testResult: "", // 娴嬭瘯缁撴灉
-      pressHeight: "", // 鍘嬭浣嶄笅鍘嬮珮搴�
-      screwTorque: "", // 鍘嬭浣嶆嫥绱ф壄鍔�
-      screwAngle: "", // 鍘嬭浣嶆嫥绱ц搴�
-      pressPressure: "", // 銆愭柊澧炪�戝帇瑁呬綅涓嬪帇鍘嬪姏锛堝尮閰嶅悗绔疄浣擄級
-      height1: "", // 鎷х揣浣嶆娴嬮珮搴�1
-      height2: "", // 鎷х揣浣嶆娴嬮珮搴�2
-      height3: "", // 鎷х揣浣嶆娴嬮珮搴�3
+      productSn: "",
+      pressTightenOk: 0, // 鏀逛负鏁板瓧榛樿鍊�
+      pressTightenUnfinished: 0, // 鏀逛负鏁板瓧榛樿鍊�
+      productStatus: 0, // 鏂板锛氫骇鍝佺姸鎬佸瓧娈�
+      screwTorque: "",
+      screwAngle: "",
+      pressPressure: "",
+      productCheckHeight: "",
+      threadPositionHeight: "",
+      height1: "",
+      height2: "",
+      height3: "",
     });
 
-    // 缂栬緫琛ㄥ崟閰嶇疆-銆愬彇娑堝垎绫伙紝鍧囧寑鎺掑竷銆戯紝淇濈暀鎵�鏈夊師鏈夋牎楠�/榛樿鍊�/灞炴��
+    // 浜у搧鐘舵�佷笅鎷夐�夐」锛堝尮閰嶅悗绔敞閲婏級
+    const productStatusOptions = [
+      { key: "0", value: "涓嶅悎鏍�" },
+      { key: "1", value: "鍚堟牸" },
+      { key: "2", value: "浜哄伐纭鍚堟牸" },
+    ];
+
+    // 甯冨皵鍨嬩笅鎷夐�夐」锛堥�氱敤锛�
+    const booleanOptions = [
+      { key: "0", value: "鍚�" },
+      { key: "1", value: "鏄�" },
+    ];
+
+    // 缂栬緫琛ㄥ崟閰嶇疆 - 淇瀛楁鍖归厤锛屼紭鍖栧竷灞�鍜屽懡鍚�
     const editFormOptions = ref([
-      // 绗竴琛岋細5涓瓧娈碉紙鍩虹鏍囪瘑+1涓姸鎬侊級锛屽搴﹀崗璋�
+      // 鍩虹淇℃伅琛�
       [
         {
           title: "宸ヨ鏉跨紪鍙�",
           field: "palletCode",
           type: "input",
-          width: 160,
+          width: 180,
           require: true,
           placeholder: "璇疯緭鍏ュ伐瑁呮澘缂栧彿",
         },
@@ -73,7 +86,7 @@
           title: "鎴愬搧缂栧彿",
           field: "productCode",
           type: "input",
-          width: 160,
+          width: 180,
           require: true,
           placeholder: "璇疯緭鍏ユ垚鍝佺紪鍙�",
         },
@@ -81,7 +94,7 @@
           title: "鎴愬搧鍚嶇О",
           field: "productName",
           type: "input",
-          width: 160,
+          width: 180,
           require: true,
           placeholder: "璇疯緭鍏ユ垚鍝佸悕绉�",
         },
@@ -89,220 +102,172 @@
           title: "娴佹按鍙�",
           field: "productSn",
           type: "input",
-          width: 180,
+          width: 200,
           require: false,
           placeholder: "璇疯緭鍏ヤ骇鍝佹祦姘村彿",
         },
       ],
+      // 鍔犲伐鐘舵�佽 - 绉婚櫎涓嶅瓨鍦ㄧ殑checkUnfinished锛屾柊澧炰骇鍝佺姸鎬�
       [
         {
-          title: "鎷х揣NG",
-          field: "pressTightenNg",
-          type: "select",
-          width: 150,
-          align: "center",
-          defaultValue: "0",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
-        },
-        {
-          title: "鎷х揣OK",
+          title: "鍘嬭鎷х揣_鎷х揣OK",
           field: "pressTightenOk",
           type: "select",
-          width: 150,
+          width: 160,
           align: "center",
-          defaultValue: "0",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
+          defaultValue: 0,
+          data: booleanOptions,
         },
         {
-          title: "鎷х揣鏈畬鎴�",
+          title: "鍘嬭鎷х揣_鏈鍔犲伐鏈畬鎴�",
           field: "pressTightenUnfinished",
           type: "select",
-          width: 170,
+          width: 180,
           align: "center",
-          defaultValue: "0",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
+          defaultValue: 0,
+          data: booleanOptions,
         },
         {
-          title: "妫�娴嬫湭瀹屾垚",
-          field: "checkUnfinished",
+          title: "浜у搧鐘舵��",
+          field: "productStatus",
           type: "select",
-          width: 150,
-          align: "center",
-          defaultValue: "0",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
-        },
-        // {
-        //   title: "闆朵欢鏁伴噺",
-        //   field: "componentQty",
-        //   type: "input",
-        //   inputType: "number",
-        //   width: 140,
-        //   require: false,
-        //   attrs: { min: 0, step: 1 },
-        //   placeholder: "璇疯緭鍏ユ鏁存暟",
-        // },
-        {
-          title: "涓婚敭ID",
-          field: "id",
-          type: "input",
-          width: 100,
-          hidden: true,
-          readonly: true,
-        },
-      ],
-      // // 绗笁琛岋細5涓瓧娈碉紙鎵姏/鍒氬害鐩稿叧+娴嬭瘯缁撴灉锛夛紝灏忔暟鏍¢獙
-      // [
-      //   {
-      //     title: "鎵姏鍊�",
-      //     field: "torsioValue",
-      //     type: "input",
-      //     inputType: "number",
-      //     width: 140,
-      //     require: false,
-      //     attrs: { step: 0.01, min: 0 },
-      //     placeholder: "淇濈暀2浣嶅皬鏁�",
-      //   },
-      //   {
-      //     title: "鎵姏鍊兼爣鍑�",
-      //     field: "torsioValueStandard",
-      //     type: "input",
-      //     inputType: "number",
-      //     width: 160,
-      //     require: false,
-      //     attrs: { step: 0.01, min: 0 },
-      //     placeholder: "淇濈暀2浣嶅皬鏁�",
-      //   },
-      //   {
-      //     title: "鍒氬害鍊�",
-      //     field: "stiffnessValue",
-      //     type: "input",
-      //     inputType: "number",
-      //     width: 140,
-      //     require: false,
-      //     attrs: { step: 0.01, min: 0 },
-      //     placeholder: "淇濈暀2浣嶅皬鏁�",
-      //   },
-      //   {
-      //     title: "鍒氬害鍊兼爣鍑�",
-      //     field: "stiffnessValueStandard",
-      //     type: "input",
-      //     inputType: "number",
-      //     width: 160,
-      //     require: false,
-      //     attrs: { step: 0.01, min: 0 },
-      //     placeholder: "淇濈暀2浣嶅皬鏁�",
-      //   },
-      //   {
-      //     title: "娴嬭瘯缁撴灉",
-      //     field: "testResult",
-      //     type: "input",
-      //     inputType: "number",
-      //     width: 140,
-      //     require: false,
-      //     placeholder: "璇疯緭鍏ユ暟瀛楃粨鏋�",
-      //   },
-      // ],
-      // 绗洓琛岋細4涓瓧娈碉紙鍘嬭浣嶅叏鍙傛暟锛夛紝灏忔暟鏍¢獙锛屾柊澧炲帇瑁呭帇鍔�
-      [
-        {
-          title: "鍘嬭楂樺害",
-          field: "pressHeight",
-          type: "input",
-          inputType: "number",
           width: 160,
-          require: false,
-          attrs: { step: 0.01, min: 0 },
-          placeholder: "淇濈暀2浣嶅皬鏁�",
+          align: "center",
+          defaultValue: 0,
+          data: productStatusOptions,
         },
         {
-          title: "鍘嬭鍘嬪姏",
+          title: "鍘嬭浣嶄笅鍘嬪帇鍔�",
           field: "pressPressure",
           type: "input",
           inputType: "number",
-          width: 160,
+          width: 180,
           require: false,
           attrs: { step: 0.01, min: 0 },
           placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
+      ],
+      // 鍘嬭妫�娴嬪弬鏁拌 - 浼樺寲鏍囬锛屽尮閰嶅悗绔敞閲�
+      [
         {
-          title: "鍘嬭鎵姏",
+          title: "鍘嬭浣嶆嫥绱ф娴嬫壄鍔�",
           field: "screwTorque",
           type: "input",
           inputType: "number",
-          width: 160,
+          width: 180,
           require: false,
           attrs: { step: 0.01, min: 0 },
           placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
         {
-          title: "鎷х揣瑙掑害",
+          title: "鍘嬭浣嶆嫥绱ф娴嬭搴�",
           field: "screwAngle",
           type: "input",
           inputType: "number",
-          width: 160,
+          width: 180,
           require: false,
           attrs: { step: 0.01, min: 0 },
           placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
+        },
+        {
+          title: "浜у搧妫�娴嬮珮搴�",
+          field: "productCheckHeight",
+          type: "input",
+          inputType: "number",
+          width: 180,
+          require: false,
+          attrs: { step: 0.01, min: 0 },
+          placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
+        },
+        {
+          title: "铻虹汗浣嶇疆楂樺害",
+          field: "threadPositionHeight",
+          type: "input",
+          inputType: "number",
+          width: 180,
+          require: false,
+          attrs: { step: 0.01, min: 0 },
+          placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
       ],
-      // 绗簲琛岋細3涓瓧娈碉紙鎷х揣浣嶆娴嬮珮搴︼級锛屽皬鏁版牎楠岋紝灞呬腑鎺掑竷
+      // 鎷х揣浣嶆娴嬮珮搴﹁
       [
         {
-          title: "妫�娴嬮珮搴�1",
+          title: "鎷х揣浣嶆娴嬮珮搴�1",
           field: "height1",
           type: "input",
           inputType: "number",
-          width: 200,
+          width: 180,
           require: false,
           attrs: { step: 0.01, min: 0 },
           placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
         {
-          title: "妫�娴嬮珮搴�2",
+          title: "鎷х揣浣嶆娴嬮珮搴�2",
           field: "height2",
           type: "input",
           inputType: "number",
-          width: 200,
+          width: 180,
           require: false,
           attrs: { step: 0.01, min: 0 },
           placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
         {
-          title: "妫�娴嬮珮搴�3",
+          title: "鎷х揣浣嶆娴嬮珮搴�3",
           field: "height3",
           type: "input",
           inputType: "number",
-          width: 200,
+          width: 180,
           require: false,
           attrs: { step: 0.01, min: 0 },
           placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
       ],
     ]);
 
-    // 鎼滅储琛ㄥ崟瀛楁 - 鏍稿績鎼滅储椤癸紙娴佹按鍙�+鍩虹淇℃伅+鍒涘缓淇℃伅锛�
+    // 鎼滅储琛ㄥ崟瀛楁 - 鍖归厤鍚庣瀹炰綋锛岀Щ闄ゆ棤鍏冲瓧娈�
     const searchFormFields = ref({
       palletCode: "",
       productCode: "",
       productName: "",
-      productSn: "", // 娴佹按鍙锋悳绱�
-      creater: "",
+      productSn: "",
+      productStatus: "", // 鏂板锛氫骇鍝佺姸鎬佹悳绱�
       createDate: "",
     });
 
-    // 鎼滅储琛ㄥ崟閰嶇疆 - 浼樺寲瀹藉害锛屽尮閰嶅竷灞�
+    // 鎼滅储琛ㄥ崟閰嶇疆 - 浼樺寲甯冨眬锛屾柊澧炰骇鍝佺姸鎬佹悳绱�
     const searchFormOptions = ref([
       [
         { title: "宸ヨ鏉跨紪鍙�", field: "palletCode", type: "like", width: 180 },
@@ -311,12 +276,18 @@
         { title: "娴佹按鍙�", field: "productSn", type: "like", width: 200 },
       ],
       [
-        { title: "鍒涘缓浜�", field: "creater", type: "like", width: 200 },
+        {
+          title: "浜у搧鐘舵��",
+          field: "productStatus",
+          type: "select",
+          width: 180,
+          data: productStatusOptions,
+        },
         { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime", width: 380 },
       ],
     ]);
 
-    // 琛ㄦ牸鍒楅厤缃� - 瀹屽叏鍖归厤鍚庣瀹炰綋锛屾柊澧瀙ressPressure鍒楋紝浼樺寲鍒楀/瀵归綈
+    // 琛ㄦ牸鍒楅厤缃� - 淇瀛楁鍖归厤锛屾柊澧炰骇鍝佺姸鎬佸垪锛屼紭鍖栨爣棰�
     const columns = ref([
       {
         field: "id",
@@ -355,159 +326,107 @@
         align: "left",
         overflow: "ellipsis",
       },
-      // 4涓姸鎬佸垪 - 鏄惁鏍煎紡鍖栨樉绀�
-      {
-        field: "pressTightenNg",
-        title: "鎷х揣NG",
-        type: "select",
-        width: 120,
-        align: "center",
-        bind: {
-          key: "value",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
-        },
-      },
+      // 鐘舵�佸垪 - 绉婚櫎checkUnfinished锛屾柊澧炰骇鍝佺姸鎬�
       {
         field: "pressTightenOk",
         title: "鎷х揣OK",
         type: "select",
-        width: 120,
+        width: 100,
         align: "center",
         bind: {
           key: "value",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
+          data: booleanOptions,
         },
       },
       {
         field: "pressTightenUnfinished",
         title: "鎷х揣鏈畬鎴�",
         type: "select",
-        width: 140,
+        width: 120,
         align: "center",
         bind: {
           key: "value",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
+          data: booleanOptions,
         },
       },
       {
-        field: "checkUnfinished",
-        title: "妫�娴嬫湭瀹屾垚",
+        field: "productStatus",
+        title: "浜у搧鐘舵��",
         type: "select",
         width: 120,
         align: "center",
         bind: {
           key: "value",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
+          data: productStatusOptions,
         },
       },
-      // {
-      //   field: "componentQty",
-      //   title: "闆朵欢鏁伴噺",
-      //   type: "int",
-      //   width: 90,
-      //   align: "center",
-      // },
-      // // 鎵姏/鍒氬害鐩稿叧 - decimal绫诲瀷锛堜繚鐣�2浣嶅皬鏁帮級
-      // {
-      //   field: "torsioValue",
-      //   title: "鎵姏鍊�",
-      //   type: "decimal",
-      //   width: 90,
-      //   align: "center",
-      // },
-      // {
-      //   field: "torsioValueStandard",
-      //   title: "鎵姏鏍囧噯",
-      //   type: "decimal",
-      //   width: 100,
-      //   align: "center",
-      // },
-      // {
-      //   field: "stiffnessValue",
-      //   title: "鍒氬害鍊�",
-      //   type: "decimal",
-      //   width: 90,
-      //   align: "center",
-      // },
-      // {
-      //   field: "stiffnessValueStandard",
-      //   title: "鍒氬害鏍囧噯",
-      //   type: "decimal",
-      //   width: 100,
-      //   align: "center",
-      // },
-      // {
-      //   field: "testResult",
-      //   title: "娴嬭瘯缁撴灉",
-      //   type: "int",
-      //   width: 90,
-      //   align: "center",
-      // },
-      // 鍘嬭浣嶆娴嬪弬鏁� - 銆愭柊澧瀙ressPressure鍒椼�慸ecimal绫诲瀷
+      // 鍘嬭妫�娴嬪弬鏁板垪 - 浼樺寲鏍囬锛岀粺涓�鏍煎紡鍖�
       {
-        field: "pressHeight",
-        title: "鍘嬭楂樺害",
+        field: "pressPressure",
+        title: "鍘嬭浣嶄笅鍘嬪帇鍔�",
         type: "decimal",
-        width: 100,
+        width: 120,
         align: "center",
-      },
-      {
-        field: "pressPressure", // 銆愭柊澧炪�戝帇瑁呬綅涓嬪帇鍘嬪姏
-        title: "鍘嬭鍘嬪姏",
-        type: "decimal",
-        width: 100,
-        align: "center",
-        columnDescription: "鍘嬭浣嶄笅鍘嬪帇鍔�",
+        formatter: (row) => formatTwoDecimal(row.pressPressure),
       },
       {
         field: "screwTorque",
-        title: "鍘嬭鎵姏",
+        title: "鎷х揣妫�娴嬫壄鍔�",
         type: "decimal",
-        width: 100,
+        width: 120,
         align: "center",
+        formatter: (row) => formatTwoDecimal(row.screwTorque),
       },
       {
         field: "screwAngle",
-        title: "鎷х揣瑙掑害",
+        title: "鎷х揣妫�娴嬭搴�",
         type: "decimal",
-        width: 100,
+        width: 120,
         align: "center",
+        formatter: (row) => formatTwoDecimal(row.screwAngle),
       },
-      // 鎷х揣浣嶆娴嬮珮搴�
+      // 浜у搧妫�娴嬮珮搴﹀垪
+      {
+        field: "productCheckHeight",
+        title: "浜у搧妫�娴嬮珮搴�",
+        type: "decimal",
+        width: 120,
+        align: "center",
+        formatter: (row) => formatTwoDecimal(row.productCheckHeight),
+      },
+      {
+        field: "threadPositionHeight",
+        title: "铻虹汗浣嶇疆楂樺害",
+        type: "decimal",
+        width: 120,
+        align: "center",
+        formatter: (row) => formatTwoDecimal(row.threadPositionHeight),
+      },
       {
         field: "height1",
-        title: "妫�娴嬮珮搴�1",
+        title: "楂樺害1",
         type: "decimal",
         width: 100,
         align: "center",
+        formatter: (row) => formatTwoDecimal(row.height1),
       },
       {
         field: "height2",
-        title: "妫�娴嬮珮搴�2",
+        title: "楂樺害2",
         type: "decimal",
         width: 100,
         align: "center",
+        formatter: (row) => formatTwoDecimal(row.height2),
       },
       {
         field: "height3",
-        title: "妫�娴嬮珮搴�3",
+        title: "楂樺害3",
         type: "decimal",
         width: 100,
         align: "center",
+        formatter: (row) => formatTwoDecimal(row.height3),
       },
-      // 鍏叡瀛楁 - 鍒涘缓/淇敼淇℃伅
+      // 鍏叡瀛楁
       {
         field: "creater",
         title: "鍒涘缓浜�",
@@ -538,7 +457,7 @@
       },
     ]);
 
-    // 鍔犲伐淇℃伅鏃犳槑缁嗭紝淇濇寔绌洪厤缃�
+    // 鍔犲伐淇℃伅鏃犳槑缁�
     const detail = ref({
       cnName: "",
       table: "",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/processInfoDetail.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/processInfoDetail.vue"
index f267713..bd90e8c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/processInfoDetail.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Client/src/views/basicinfo/processInfoDetail.vue"
@@ -19,7 +19,14 @@
 
 export default defineComponent({
   setup() {
-    // 琛ㄦ牸鍩虹閰嶇疆 - 鏂板榛樿鍊掑簭銆佺粺涓�瑙勮寖
+    // 宸ュ叿鍑芥暟锛氭牸寮忓寲鏁板瓧涓轰袱浣嶅皬鏁�
+    const formatTwoDecimal = (value) => {
+      if (value === "" || value === null || value === undefined) return "";
+      const num = parseFloat(value);
+      return isNaN(num) ? "" : num.toFixed(2);
+    };
+
+    // 琛ㄦ牸鍩虹閰嶇疆
     const table = ref({
       key: "id",
       footer: "Foots",
@@ -27,38 +34,51 @@
       name: "processInfoDetail",
       url: "/processInfoDetail/",
       sortName: "createDate",
-      sortOrder: "desc", // 鏂板锛氬垱寤烘椂闂撮粯璁ゅ�掑簭锛屽拰涓婚〉闈繚鎸佷竴鑷�
+      sortOrder: "desc", // 鍒涘缓鏃堕棿榛樿鍊掑簭
     });
 
-    // 缂栬緫琛ㄥ崟瀛楁 - 鍚屾涓婚〉闈紝鏂板pressPressure锛堝帇瑁呭帇鍔涳級锛屽尮閰嶅悗绔疄浣�
+    // 缂栬緫琛ㄥ崟瀛楁 - 涓ユ牸鍖归厤鍚庣Dt_ProcessInfo瀹炰綋
     const editFormFields = ref({
-      id: "",
+      id: 0, // 涓婚敭榛樿鍊兼敼涓烘暟瀛�0
       palletCode: "",
       productCode: "",
       productName: "",
-      productSn: "", // 娴佹按鍙�
-      pressTightenNg: "", // 鍘嬭鎷х揣_鎷х揣NG
-      pressTightenOk: "", // 鍘嬭鎷х揣_鎷х揣OK
-      pressTightenUnfinished: "", // 鍘嬭鎷х揣_鏈鍔犲伐鏈畬鎴�
-      checkUnfinished: "", // 妫�娴媉鏈妫�娴嬫湭瀹屾垚
-      pressHeight: "", // 鍘嬭浣嶄笅鍘嬮珮搴�
-      screwTorque: "", // 鍘嬭浣嶆嫥绱ф壄鍔�
-      screwAngle: "", // 鍘嬭浣嶆嫥绱ц搴�
-      pressPressure: "", // 銆愭柊澧炪�戝帇瑁呬綅涓嬪帇鍘嬪姏锛堝尮閰嶅悗绔疄浣擄級
-      height1: "", // 鎷х揣浣嶆娴嬮珮搴�1
-      height2: "", // 鎷х揣浣嶆娴嬮珮搴�2
-      height3: "", // 鎷х揣浣嶆娴嬮珮搴�3
+      productSn: "",
+      pressTightenOk: 0, // 鏀逛负鏁板瓧榛樿鍊�
+      pressTightenUnfinished: 0, // 鏀逛负鏁板瓧榛樿鍊�
+      productStatus: 0, // 鏂板锛氫骇鍝佺姸鎬佸瓧娈�
+      screwTorque: "",
+      screwAngle: "",
+      pressPressure: "",
+      productCheckHeight: "",
+      threadPositionHeight: "",
+      height1: "",
+      height2: "",
+      height3: "",
     });
 
-    // 缂栬緫琛ㄥ崟閰嶇疆 - 鍙栨秷鍐椾綑鍒嗙被銆佸潎鍖�鎺掑竷锛屾柊澧炲帇瑁呭帇鍔涢」锛岃ˉ鍏ㄩ粯璁ゅ��/鏍¢獙锛岀粺涓�瀹藉害
+    // 浜у搧鐘舵�佷笅鎷夐�夐」锛堝尮閰嶅悗绔敞閲婏級
+    const productStatusOptions = [
+      { key: "0", value: "涓嶅悎鏍�" },
+      { key: "1", value: "鍚堟牸" },
+      { key: "2", value: "浜哄伐纭鍚堟牸" },
+    ];
+
+    // 甯冨皵鍨嬩笅鎷夐�夐」锛堥�氱敤锛�
+    const booleanOptions = [
+      { key: "0", value: "鍚�" },
+      { key: "1", value: "鏄�" },
+    ];
+
+    // 缂栬緫琛ㄥ崟閰嶇疆 - 淇瀛楁鍖归厤锛屼紭鍖栧竷灞�鍜屽懡鍚�
     const editFormOptions = ref([
-      // 绗竴琛岋細鍩虹鏍囪瘑锛屽搴﹀崗璋冿紝鍜屼富椤甸潰甯冨眬涓�鑷�
+      // 鍩虹淇℃伅琛�
       [
         {
           title: "宸ヨ鏉跨紪鍙�",
           field: "palletCode",
           type: "input",
-          width: 160,
+          width: 180,
           require: true,
           placeholder: "璇疯緭鍏ュ伐瑁呮澘缂栧彿",
         },
@@ -66,7 +86,7 @@
           title: "鎴愬搧缂栧彿",
           field: "productCode",
           type: "input",
-          width: 160,
+          width: 180,
           require: true,
           placeholder: "璇疯緭鍏ユ垚鍝佺紪鍙�",
         },
@@ -74,7 +94,7 @@
           title: "鎴愬搧鍚嶇О",
           field: "productName",
           type: "input",
-          width: 160,
+          width: 180,
           require: true,
           placeholder: "璇疯緭鍏ユ垚鍝佸悕绉�",
         },
@@ -82,158 +102,172 @@
           title: "娴佹按鍙�",
           field: "productSn",
           type: "input",
-          width: 180,
+          width: 200,
           require: false,
           placeholder: "璇疯緭鍏ヤ骇鍝佹祦姘村彿",
         },
       ],
-      // 绗簩琛岋細4涓姸鎬佸垪+涓婚敭锛岃ˉ鍏ㄩ粯璁ゅ��0锛堝惁锛夛紝缁熶竴瀹藉害/瀵归綈锛岄殣钘忎富閿�
+      // 鍔犲伐鐘舵�佽 - 绉婚櫎涓嶅瓨鍦ㄧ殑checkUnfinished锛屾柊澧炰骇鍝佺姸鎬�
       [
         {
-          title: "鎷х揣NG",
-          field: "pressTightenNg",
-          type: "select",
-          width: 150,
-          align: "center",
-          defaultValue: "0", // 鏂板榛樿鍊硷紝鍜屼富椤甸潰涓�鑷�
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
-        },
-        {
-          title: "鎷х揣OK",
+          title: "鍘嬭鎷х揣_鎷х揣OK",
           field: "pressTightenOk",
           type: "select",
-          width: 150,
+          width: 160,
           align: "center",
-          defaultValue: "0", // 鏂板榛樿鍊�
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
+          defaultValue: 0,
+          data: booleanOptions,
         },
         {
-          title: "鎷х揣鏈畬鎴�",
+          title: "鍘嬭鎷х揣_鏈鍔犲伐鏈畬鎴�",
           field: "pressTightenUnfinished",
           type: "select",
-          width: 170,
+          width: 180,
           align: "center",
-          defaultValue: "0",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
+          defaultValue: 0,
+          data: booleanOptions,
         },
         {
-          title: "妫�娴嬫湭瀹屾垚",
-          field: "checkUnfinished",
+          title: "浜у搧鐘舵��",
+          field: "productStatus",
           type: "select",
-          width: 150,
+          width: 160,
           align: "center",
-          defaultValue: "0", // 鏂板榛樿鍊硷紝缁熶竴瑙勮寖
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
+          defaultValue: 0,
+          data: productStatusOptions,
         },
         {
-          title: "涓婚敭ID",
-          field: "id",
+          title: "鍘嬭浣嶄笅鍘嬪帇鍔�",
+          field: "pressPressure",
           type: "input",
-          width: 100,
-          hidden: true,
-          readonly: true,
+          inputType: "number",
+          width: 180,
+          require: false,
+          attrs: { step: 0.01, min: 0 },
+          placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
       ],
+      // 鍘嬭妫�娴嬪弬鏁拌 - 浼樺寲鏍囬锛屽尮閰嶅悗绔敞閲�
       [
         {
-          title: "鍘嬭楂樺害",
-          field: "pressHeight",
-          type: "input",
-          inputType: "number",
-          width: 160,
-          require: false,
-          attrs: { step: 0.01, min: 0 },
-          placeholder: "淇濈暀2浣嶅皬鏁�",
-        },
-        {
-          title: "鍘嬭鍘嬪姏",
-          field: "pressPressure", // 鏂板鍘嬭鍘嬪姏椤�
-          type: "input",
-          inputType: "number",
-          width: 160,
-          require: false,
-          attrs: { step: 0.01, min: 0 },
-          placeholder: "淇濈暀2浣嶅皬鏁�",
-        },
-        {
-          title: "鍘嬭鎵姏",
+          title: "鍘嬭浣嶆嫥绱ф娴嬫壄鍔�",
           field: "screwTorque",
           type: "input",
           inputType: "number",
-          width: 160,
+          width: 180,
           require: false,
           attrs: { step: 0.01, min: 0 },
           placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
         {
-          title: "鎷х揣瑙掑害",
+          title: "鍘嬭浣嶆嫥绱ф娴嬭搴�",
           field: "screwAngle",
           type: "input",
           inputType: "number",
-          width: 160,
+          width: 180,
           require: false,
           attrs: { step: 0.01, min: 0 },
           placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
+        },
+        {
+          title: "浜у搧妫�娴嬮珮搴�",
+          field: "productCheckHeight",
+          type: "input",
+          inputType: "number",
+          width: 180,
+          require: false,
+          attrs: { step: 0.01, min: 0 },
+          placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
+        },
+        {
+          title: "铻虹汗浣嶇疆楂樺害",
+          field: "threadPositionHeight",
+          type: "input",
+          inputType: "number",
+          width: 180,
+          require: false,
+          attrs: { step: 0.01, min: 0 },
+          placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
       ],
-      // 绗簲琛岋細鎷х揣浣嶆娴嬮珮搴︼紝灏忔暟鏍¢獙锛屽眳涓帓甯冿紝缁熶竴瀹藉害
+      // 鎷х揣浣嶆娴嬮珮搴﹁
       [
         {
-          title: "妫�娴嬮珮搴�1",
+          title: "鎷х揣浣嶆娴嬮珮搴�1",
           field: "height1",
           type: "input",
           inputType: "number",
-          width: 200,
+          width: 180,
           require: false,
           attrs: { step: 0.01, min: 0 },
           placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
         {
-          title: "妫�娴嬮珮搴�2",
+          title: "鎷х揣浣嶆娴嬮珮搴�2",
           field: "height2",
           type: "input",
           inputType: "number",
-          width: 200,
+          width: 180,
           require: false,
           attrs: { step: 0.01, min: 0 },
           placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
         {
-          title: "妫�娴嬮珮搴�3",
+          title: "鎷х揣浣嶆娴嬮珮搴�3",
           field: "height3",
           type: "input",
           inputType: "number",
-          width: 200,
+          width: 180,
           require: false,
           attrs: { step: 0.01, min: 0 },
           placeholder: "淇濈暀2浣嶅皬鏁�",
+          formatter: formatTwoDecimal,
+          onBlur: (e) => {
+            e.target.value = formatTwoDecimal(e.target.value);
+          },
         },
       ],
     ]);
 
-    // 鎼滅储琛ㄥ崟瀛楁 - 淇濇寔鍜屼富椤甸潰銆佸師鏈変唬鐮佷竴鑷达紝鏍稿績鎼滅储椤规棤璋冩暣
+    // 鎼滅储琛ㄥ崟瀛楁 - 鍖归厤鍚庣瀹炰綋锛岀Щ闄ゆ棤鍏冲瓧娈�
     const searchFormFields = ref({
       palletCode: "",
       productCode: "",
       productName: "",
-      productSn: "", // 娴佹按鍙锋悳绱�
-      creater: "",
+      productSn: "",
+      productStatus: "", // 鏂板锛氫骇鍝佺姸鎬佹悳绱�
       createDate: "",
     });
 
-    // 鎼滅储琛ㄥ崟閰嶇疆 - 浼樺寲瀹藉害鍖归厤甯冨眬锛屽拰涓婚〉闈㈠畬鍏ㄤ竴鑷�
+    // 鎼滅储琛ㄥ崟閰嶇疆 - 浼樺寲甯冨眬锛屾柊澧炰骇鍝佺姸鎬佹悳绱�
     const searchFormOptions = ref([
       [
         { title: "宸ヨ鏉跨紪鍙�", field: "palletCode", type: "like", width: 180 },
@@ -242,12 +276,18 @@
         { title: "娴佹按鍙�", field: "productSn", type: "like", width: 200 },
       ],
       [
-        { title: "鍒涘缓浜�", field: "creater", type: "like", width: 200 },
+        {
+          title: "浜у搧鐘舵��",
+          field: "productStatus",
+          type: "select",
+          width: 180,
+          data: productStatusOptions,
+        },
         { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime", width: 380 },
       ],
     ]);
 
-    // 琛ㄦ牸鍒楅厤缃� - 銆愭柊澧瀙ressPressure鍒椼�戯紝缁熶竴鍒楀悕/瀹藉害/绫诲瀷锛屼慨澶嶉瀛楁瘝澶у啓闂锛屼紭鍖栧榻�
+    // 琛ㄦ牸鍒楅厤缃� - 淇瀛楁鍖归厤锛屾柊澧炰骇鍝佺姸鎬佸垪锛屼紭鍖栨爣棰�
     const columns = ref([
       {
         field: "id",
@@ -286,115 +326,107 @@
         align: "left",
         overflow: "ellipsis",
       },
-      // 4涓姸鎬佸垪 - 淇鍘熸湁PressTightenNg棣栧瓧姣嶅ぇ鍐欓棶棰橈紝缁熶竴瑙勮寖
-      {
-        field: "pressTightenNg",
-        title: "鎷х揣NG",
-        type: "select",
-        width: 120,
-        align: "center",
-        bind: {
-          key: "value",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
-        },
-      },
+      // 鐘舵�佸垪 - 绉婚櫎checkUnfinished锛屾柊澧炰骇鍝佺姸鎬�
       {
         field: "pressTightenOk",
         title: "鎷х揣OK",
         type: "select",
-        width: 120,
+        width: 100,
         align: "center",
         bind: {
           key: "value",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
+          data: booleanOptions,
         },
       },
       {
         field: "pressTightenUnfinished",
         title: "鎷х揣鏈畬鎴�",
         type: "select",
-        width: 140,
+        width: 120,
         align: "center",
         bind: {
           key: "value",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
+          data: booleanOptions,
         },
       },
       {
-        field: "checkUnfinished",
-        title: "妫�娴嬫湭瀹屾垚",
+        field: "productStatus",
+        title: "浜у搧鐘舵��",
         type: "select",
         width: 120,
         align: "center",
         bind: {
           key: "value",
-          data: [
-            { key: "0", value: "鍚�" },
-            { key: "1", value: "鏄�" },
-          ],
+          data: productStatusOptions,
         },
       },
+      // 鍘嬭妫�娴嬪弬鏁板垪 - 浼樺寲鏍囬锛岀粺涓�鏍煎紡鍖�
       {
-        field: "pressHeight",
-        title: "鍘嬭楂樺害",
+        field: "pressPressure",
+        title: "鍘嬭浣嶄笅鍘嬪帇鍔�",
         type: "decimal",
-        width: 100,
+        width: 120,
         align: "center",
-      },
-      {
-        field: "pressPressure", // 鏂板鍘嬭鍘嬪姏鍒�
-        title: "鍘嬭鍘嬪姏",
-        type: "decimal",
-        width: 100,
-        align: "center",
-        columnDescription: "鍘嬭浣嶄笅鍘嬪帇鍔�",
+        formatter: (row) => formatTwoDecimal(row.pressPressure),
       },
       {
         field: "screwTorque",
-        title: "鍘嬭鎵姏",
+        title: "鎷х揣妫�娴嬫壄鍔�",
         type: "decimal",
-        width: 100,
+        width: 120,
         align: "center",
+        formatter: (row) => formatTwoDecimal(row.screwTorque),
       },
       {
         field: "screwAngle",
-        title: "鎷х揣瑙掑害",
+        title: "鎷х揣妫�娴嬭搴�",
         type: "decimal",
-        width: 100,
+        width: 120,
         align: "center",
+        formatter: (row) => formatTwoDecimal(row.screwAngle),
       },
-      // 鎷х揣浣嶆娴嬮珮搴�
+      // 浜у搧妫�娴嬮珮搴﹀垪
+      {
+        field: "productCheckHeight",
+        title: "浜у搧妫�娴嬮珮搴�",
+        type: "decimal",
+        width: 120,
+        align: "center",
+        formatter: (row) => formatTwoDecimal(row.productCheckHeight),
+      },
+      {
+        field: "threadPositionHeight",
+        title: "铻虹汗浣嶇疆楂樺害",
+        type: "decimal",
+        width: 120,
+        align: "center",
+        formatter: (row) => formatTwoDecimal(row.threadPositionHeight),
+      },
       {
         field: "height1",
-        title: "妫�娴嬮珮搴�1",
+        title: "楂樺害1",
         type: "decimal",
         width: 100,
         align: "center",
+        formatter: (row) => formatTwoDecimal(row.height1),
       },
       {
         field: "height2",
-        title: "妫�娴嬮珮搴�2",
+        title: "楂樺害2",
         type: "decimal",
         width: 100,
         align: "center",
+        formatter: (row) => formatTwoDecimal(row.height2),
       },
       {
         field: "height3",
-        title: "妫�娴嬮珮搴�3",
+        title: "楂樺害3",
         type: "decimal",
         width: 100,
         align: "center",
+        formatter: (row) => formatTwoDecimal(row.height3),
       },
-      // 鍏叡瀛楁 - 鍒涘缓/淇敼淇℃伅锛屽拰涓婚〉闈竴鑷�
+      // 鍏叡瀛楁
       {
         field: "creater",
         title: "鍒涘缓浜�",
@@ -425,7 +457,7 @@
       },
     ]);
 
-    // 鏃犱簩绾ф槑缁嗭紝淇濇寔绌洪厤缃笉鍙�
+    // 鍔犲伐淇℃伅鏃犳槑缁�
     const detail = ref({
       cnName: "",
       table: "",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.794.21998/CodeChunks.db" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.794.21998/CodeChunks.db"
index 54475ee..601eb0d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.794.21998/CodeChunks.db"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.794.21998/CodeChunks.db"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.794.21998/SemanticSymbols.db" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.794.21998/SemanticSymbols.db"
index b9b9d10..74c916e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.794.21998/SemanticSymbols.db"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.794.21998/SemanticSymbols.db"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2"
index 9f272c0..393dad0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2"
index 2965807..81e7b76 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo"
index de8ccda..6a28682 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/BoxingDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/BoxingDetailService.cs"
index 03b6dce..fa9372b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/BoxingDetailService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/BoxingDetailService.cs"
@@ -11,6 +11,7 @@
 using WIDESEAWCS_Core.BaseServices;
 using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_DTO.BasicInfo;
+using WIDESEAWCS_IBasicInfoService;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
 
@@ -22,6 +23,10 @@
         private readonly IBoxingService _boxingService;
         private readonly IFormulaService _formulaService;
         private readonly IFormulaDetailService _formulaDetailService;
+        private readonly IProcessInfoDetailService _processInfoDetailService;
+        private readonly IScanStationService _scanStationService;
+        
+
         private readonly IUnitOfWorkManage _unitOfWorkManage;
 
         public BoxingDetailService(
@@ -29,13 +34,18 @@
             IFormulaService formulaService,
             IBoxingService boxingService,
             IFormulaDetailService formulaDetailService,
+            IProcessInfoDetailService processInfoDetailService,
+            IScanStationService scanStationService,
             IUnitOfWorkManage unitOfWorkManage
             ) : base(BaseDal)
         {
             _formulaService = formulaService;
             _boxingService = boxingService;
             _formulaDetailService = formulaDetailService;
+            _processInfoDetailService = processInfoDetailService;
+            _scanStationService = scanStationService;
             _unitOfWorkManage = unitOfWorkManage;
+            
         }
 
         public IRepository<Dt_BoxingDetail> Repository => BaseDal;
@@ -103,6 +113,7 @@
         /// <returns></returns>
         public string IsComponentCodesEqual(List<string> boxingDetails, List<string> formulaDetails)
         {
+
             // 澶勭悊null闆嗗悎锛岃閬跨┖鎸囬拡寮傚父
             var boxList = boxingDetails ?? new List<string>();
             var formulaList = formulaDetails ?? new List<string>();
@@ -142,15 +153,17 @@
                         return WebResponseContent.Instance.Error("鎻愪氦鍙傛暟涓嶈兘涓虹┖");
                     }
                     string productCode = toolingBoardSubmitDto.FinishedProductCode?.Trim();
+
+                    string proCode = string.Empty;
+                    string proOther = string.Empty;
+
                     if (!string.IsNullOrWhiteSpace(productCode))
                     {
-                        string proCode = string.Empty;
-                        string proOther = string.Empty;
 
                         var proCodeMatch = System.Text.RegularExpressions.Regex.Match(productCode, @"TX(\d+)(?=\s|\||$)", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                         if (proCodeMatch.Success)
                         {
-                            proCode = $"TX{proCodeMatch.Groups[1].Value.Trim()}"; // 鎷兼帴TX+鏁板瓧锛屼繚鎸佹牸寮忕粺涓�
+                            proCode = $"TX{proCodeMatch.Groups[1].Value.Trim()}";
                         }
 
                         // 姝e垯2锛氬尮閰嶈繛缁殑10浣嶇函鏁板瓧锛堝叏灞�鍖归厤锛屽彇绗竴涓鍚堢殑鍗冲彲锛�
@@ -165,6 +178,12 @@
                         if (formulaModel == null)
                         {
                             return WebResponseContent.Instance.Error("鏃犳垚鍝侀厤鏂癸紝璇锋牳瀵规垚鍝佺紪鐮�");
+                        }
+
+                        Dt_ScanStation dt_ScanStation = _scanStationService.Repository.QueryFirst(x => x.StationCode == "001");
+                        if (dt_ScanStation.StationEndProduct != proCode) 
+                        {
+                            return WebResponseContent.Instance.Error("鎴愬搧缂栧彿閿欒");
                         }
 
                         List<Dt_FormulaDetail> dt_FormulaDetails = _formulaDetailService.Repository.QueryData(x => x.FormulaId == formulaModel.Id && x.IsScanned == 1);
@@ -193,6 +212,11 @@
                         if (!PalletCode.IsNotEmptyOrNull() || PalletCode == "NoRead")
                         {
                             throw new InvalidOperationException("鎵樼洏鐮佹湭鎵埌锛岃閲嶈瘯");
+                        }
+                        Dt_Boxing dt_Boxing = _boxingService.Repository.QueryFirst(x => x.PalletCode == PalletCode);
+                        if(dt_Boxing != null)
+                        {
+                            throw new InvalidOperationException("鎵樼洏鐮侀噸澶嶆壂鎻�");
                         }
                         Dt_Boxing existBoxinModel = new Dt_Boxing();
                         existBoxinModel.PalletCode = PalletCode;
@@ -326,9 +350,18 @@
                     //    #endregion
                     //}
                     //uow.Commit();
-                    //string msg = existBoxinModel == null ? "缁勭洏淇℃伅鏂板鎴愬姛锛�" : "缁勭洏淇℃伅淇敼鎴愬姛锛�";
+                    string msg = null;
+                    List<Dt_ProcessInfoDetail> dt_ProcessInfoDetail = _processInfoDetailService.Repository
+                            .QueryData(x => x.ProductSn == proOther && x.ProductCode == proCode).ToList();
 
-                    return WebResponseContent.Instance.OK();
+                    // 3. 鍒ゆ柇鏌ヨ缁撴灉锛屽瓨鍦ㄥ垯璧嬪�兼彁绀轰俊鎭�
+                    if (dt_ProcessInfoDetail.Count<=3 && dt_ProcessInfoDetail.Count != 0)
+                    {
+                        msg = "宸叉湁娴佹按鍙�";
+                    }
+
+                    // 4. 杩斿洖鍝嶅簲锛堝瓨鍦ㄩ噸澶嶅垯msg鏄�"宸叉湁娴佹按鍙�"锛屼笉瀛樺湪鍒檓sg涓簄ull锛�
+                    return WebResponseContent.Instance.OK(msg);
                 }
                 catch (Exception ex)
                 {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/BoxingService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/BoxingService.cs"
index 0c26b86..00f5f64 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/BoxingService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/BoxingService.cs"
@@ -1,20 +1,80 @@
-锘縰sing System;
+锘縰sing Autofac.Core;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.BaseRepository;
 using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IBasicInfoService;
 using WIDESEAWCS_Model.Models;
 
 namespace WIDESEAWCS_BasicInfoService
 {
     public class BoxingService : ServiceBase<Dt_Boxing, IRepository<Dt_Boxing>>, IBoxingService
     {
-        public BoxingService(IRepository<Dt_Boxing> BaseDal) : base(BaseDal)
+        private readonly IProcessInfoService _processInfoService;
+        // 鐩存帴娉ㄥ叆 BoxingDetail 鐨勪粨鍌紝鏇夸唬娉ㄥ叆 BoxingDetailService
+        private readonly IRepository<Dt_BoxingDetail> _boxingDetailRepo;
+
+        public BoxingService(
+            IRepository<Dt_Boxing> BaseDal,
+            IProcessInfoService processInfoService,
+            // 鏂板娉ㄥ叆 BoxingDetail 浠撳偍
+            IRepository<Dt_BoxingDetail> boxingDetailRepo
+            ) : base(BaseDal)
         {
+            _processInfoService = processInfoService;
+            _boxingDetailRepo = boxingDetailRepo; // 璧嬪��
         }
 
         public IRepository<Dt_Boxing> Repository => BaseDal;
+
+        //鍒犻櫎褰撳墠鎵樼洏
+        public WebResponseContent DeleteCurrentTray()
+        {
+            try
+            {
+                var PalletCode = TcpClientExample.Start("192.168.2.120", 2001);
+                if (!PalletCode.IsNotEmptyOrNull() || PalletCode == "NoRead")
+                {
+                    return WebResponseContent.Instance.Error("鎵樼洏鐮佹湭鎵埌锛岃閲嶈瘯");
+                }
+                Db.Ado.BeginTran();
+
+                // 1. 鍒犻櫎 Boxing 涓昏〃鏁版嵁
+                Dt_Boxing dt_Boxing = BaseDal.QueryFirst(x => x.PalletCode == PalletCode);
+                if (dt_Boxing != null)
+                {
+                    BaseDal.DeleteData(dt_Boxing);
+
+                    // 2. 鐩存帴閫氳繃浠撳偍鍒犻櫎 BoxingDetail 鏁版嵁锛堟牳蹇冧慨鏀癸級
+                    Dt_BoxingDetail dt_BoxingDetail = _boxingDetailRepo.QueryFirst(x => x.BoxingId == dt_Boxing.Id);
+                    if (dt_BoxingDetail != null)
+                    {
+                        _boxingDetailRepo.DeleteData(dt_BoxingDetail);
+                    }
+                }
+
+                // 3. 鍒犻櫎 ProcessInfo 鏁版嵁
+                Dt_ProcessInfo dt_ProcessInfo = _processInfoService.Repository.QueryFirst(x => x.PalletCode == PalletCode);
+                if (dt_ProcessInfo != null)
+                {
+                    _processInfoService.Repository.DeleteData(dt_ProcessInfo);
+                }
+
+                Db.Ado.CommitTran();
+                return WebResponseContent.Instance.OK("鍒犻櫎鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                Db.Ado.RollbackTran();
+                throw new Exception(ex.Message);
+            }
+        }
+
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ScanStationService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ScanStationService.cs"
index 5345f81..a778204 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ScanStationService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ScanStationService.cs"
@@ -1,5 +1,6 @@
 锘縰sing Autofac.Core;
 using OfficeOpenXml;
+using OfficeOpenXml.Style;
 using Spire.Xls;
 using System;
 using System.Collections.Generic;
@@ -126,34 +127,42 @@
         /// <exception cref="Exception"></exception>
         public WebResponseContent GetSignalStates()
         {
-            OtherDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceName == "涓绘帶PLC") as OtherDevice;
-            if (device == null) throw new Exception("鏈壘鍒颁富鎺LC璁惧淇℃伅");
-            if (!device.IsConnected) throw new Exception($"涓绘帶PLC璁惧閫氳寮傚父");
 
-            //鑾峰彇淇″彿鐏姸鎬�
-            var Heart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolHeart);
-            var EMG = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolEMG);
-            var AutoExecuting = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolAutoExecuting);
-            var OnlineExecuting = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolOnlineExecuting);
-            var Error = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolError);
-
-            //鑾峰彇鍚姩鏆傚仠鐘舵��
-            var IsStarted = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolAutoStart);
-            var IsPaused = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolAutoPause);
-
-            //杩斿洖瀵硅薄
-            var responseData = new
+            try
             {
-                // 淇″彿鐏姸鎬佹暟缁勶紙淇濇寔鍘熸湁椤哄簭锛�
-                signalStates = new bool[] { Heart, EMG, AutoExecuting, OnlineExecuting, Error },
-                // PLC鍚姩/鏆傚仠鐘舵�佸璞�
-                plcStatus = new
+                OtherDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceName == "涓绘帶PLC") as OtherDevice;
+                if (device == null) throw new Exception("鏈壘鍒颁富鎺LC璁惧淇℃伅");
+                if (!device.IsConnected) throw new Exception($"涓绘帶PLC璁惧閫氳寮傚父");
+
+                //鑾峰彇淇″彿鐏姸鎬�
+                var Heart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolHeart);
+                var EMG = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolEMG);
+                var AutoExecuting = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolAutoExecuting);
+                var OnlineExecuting = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolOnlineExecuting);
+                var Error = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolError);
+
+                //鑾峰彇鍚姩鏆傚仠鐘舵��
+                var IsStarted = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolAutoStart);
+                var IsPaused = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolAutoPause);
+
+                //杩斿洖瀵硅薄
+                var responseData = new
                 {
-                    isStarted = IsStarted,
-                    isPaused = IsPaused
-                }
-            };
-            return WebResponseContent.Instance.OK(data: responseData);
+                    // 淇″彿鐏姸鎬佹暟缁勶紙淇濇寔鍘熸湁椤哄簭锛�
+                    signalStates = new bool[] { Heart, EMG, AutoExecuting, OnlineExecuting, Error },
+                    // PLC鍚姩/鏆傚仠鐘舵�佸璞�
+                    plcStatus = new
+                    {
+                        isStarted = IsStarted,
+                        isPaused = IsPaused
+                    }
+                };
+                return WebResponseContent.Instance.OK(data: responseData);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
         }
 
         /// <summary>
@@ -176,13 +185,16 @@
                 }
                 List<Dt_FormulaDetail> dt_FormulaDetails = _formulaDetailService.Repository.QueryData(x => x.FormulaId == dt_Formula.Id);
 
+                // 鏂板leftPartSupplierCodes瀛楁瀛樺偍渚涙柟浠g爜
                 var responseData = new
                 {
                     finishedProductId = dt_Formula.Id,
                     finishedProduct = dt_Formula.ProductCode,
                     leftPartCodes = new List<string>(),
                     leftPartIds = new List<int>(),
-                    leftPartChecked = new List<int>()
+                    leftPartChecked = new List<int>(),
+                    // 瀛樺偍姣忎釜闆朵欢鐨勪緵鏂逛唬鐮�
+                    leftPartSupplierCodes = new List<string>()
                 };
 
                 foreach (var detail in dt_FormulaDetails.Take(10))
@@ -190,6 +202,8 @@
                     responseData.leftPartCodes.Add(detail.ComponentCode ?? "");
                     responseData.leftPartIds.Add(detail.Id);
                     responseData.leftPartChecked.Add(detail.IsScanned);
+                    // 娣诲姞渚涙柟浠g爜锛屼负绌烘椂杩斿洖绌哄瓧绗︿覆
+                    responseData.leftPartSupplierCodes.Add(detail.SupplierCode ?? "");
                 }
 
                 int needFillCount = 10 - responseData.leftPartCodes.Count;
@@ -198,6 +212,8 @@
                     responseData.leftPartCodes.Add("");
                     responseData.leftPartIds.Add(0);
                     responseData.leftPartChecked.Add(0);
+                    //琛ヨ冻10鏉℃暟鎹紝绌虹殑渚涙柟浠g爜杩斿洖绌哄瓧绗︿覆
+                    responseData.leftPartSupplierCodes.Add("");
                 }
                 return WebResponseContent.Instance.OK("鑾峰彇宸︿晶鍒濆鏁版嵁鎴愬姛", responseData);
             }
@@ -237,109 +253,144 @@
         /// </summary>
         /// <param name="dt_ProcessInfo"></param>
         /// <returns></returns>
-        public WebResponseContent ExportData(Dt_ScanStation dt_ScanStation)
+        public WebResponseContent ExportData()
         {
-
-            string fileName = $"{DateTime.Now.ToString("yyyyMMddHHssmm")}.xlsx";
-            string templatePath = $"{AppDomain.CurrentDomain.BaseDirectory}ExprotTemplate\\鍙戠數鏈哄脊鎬ф敮鎾戜俊鎭寲娴佺▼鍗�.xlsx";//妯℃澘璺緞
-            string savePath = $"{AppDomain.CurrentDomain.BaseDirectory}Download\\{fileName}";//淇濆瓨鏂囦欢璺緞
-
-            using Stream templateStream = new FileStream(templatePath, FileMode.Open);
-            using Stream saveStream = new FileStream(savePath, FileMode.Create);
-            using ExcelPackage package = new ExcelPackage(saveStream, templateStream);
-            ExcelWorksheet worksheet = package.Workbook.Worksheets["娴佺▼鍗�"];
-            Dt_Formula formula = _formulaService.Repository.QueryFirst(x => x.ProductCode == dt_ScanStation.StationEndProduct);
-            List<Dt_FormulaDetail> dt_FormulaDetails = _formulaDetailService.Repository.QueryData(x => x.FormulaId == formula.Id && x.IsScanned == 1).ToList();
-            for (int i = dt_FormulaDetails.Count; i < 10; i++)
+            try
             {
-                dt_FormulaDetails.Add(new Dt_FormulaDetail());
-            }
+                Dt_ScanStation dt_ScanStation = BaseDal.QueryFirst(x => x.StationCode == "001");
 
-            worksheet.Cells[3, 5].Value = dt_ScanStation.StationEndProduct;//鎴愬搧缂栧彿
-            worksheet.Cells[3, 17].Value = dt_ScanStation.LastProductSn.ObjToInt() - dt_ScanStation.FirstProductSn.ObjToInt() + 1;//鏁伴噺;
-            worksheet.Cells[3, 29].Value = dt_ScanStation.FirstProductSn + "-" + dt_ScanStation.LastProductSn;//娴佹按鍙�
-            worksheet.Cells[4, 5].Value = DateTime.Now.ToString("yyyy/MM/dd");//缁勮鏃ユ湡
-            worksheet.Cells[4, 17].Value = dt_ScanStation.AssembleUser;//缁勮浜哄憳
+                string fileName = $"{DateTime.Now.ToString("yyyyMMddHHssmm")}" + $"{dt_ScanStation.StationEndProduct}.xlsx";
+                string templatePath = $"{AppDomain.CurrentDomain.BaseDirectory}ExprotTemplate\\鍙戠數鏈哄脊鎬ф敮鎾戜俊鎭寲娴佺▼鍗�.xlsx";//妯℃澘璺緞
+                                                                                                                   // 鑾峰彇绯荤粺妗岄潰璺緞
+                string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\娴佺▼鍗�";
+                //string desktopPath = "C:\\Users\\Administrator\\Desktop";
+                string savePath = Path.Combine(desktopPath, fileName);
 
-            int row = 7;
-            for (int j = 0; j < 5; j++)
-            {
-                worksheet.Cells[row, 1].Value = dt_FormulaDetails[j].ComponentName;
-                worksheet.Cells[row, 5].Value = dt_FormulaDetails[j].ComponentCode;
-                worksheet.Cells[row, 12].Value = dt_FormulaDetails[j].SupplierCode;
-
-                worksheet.Cells[row, 19].Value = dt_FormulaDetails[j + 5].ComponentName;
-                worksheet.Cells[row, 23].Value = dt_FormulaDetails[j + 5].ComponentCode;
-                worksheet.Cells[row, 30].Value = dt_FormulaDetails[j + 5].SupplierCode;
-                row++;
-            }
-
-            row = 13;
-            for (int j = 0; j < 4; j++)
-            {
-                worksheet.Cells[row + j, 12].Value = "鈽� 鏄�     鈻� 鍚�";
-                worksheet.Cells[row + j, 30].Value = "鈽� 鏄�     鈻� 鍚�";
-            }
-            worksheet.Cells[17, 12].Value = "鈽� 鏄�     鈻� 鍚�";
-            worksheet.Cells[23, 5].Value = "鈽� 鏄�     鈻� 鍚�";
-
-            List<Dt_ProcessInfoDetail> dt_ProcessInfoDetails = _processInfoDetailService.Repository
-                .QueryData(x => x.ProductCode == dt_ScanStation.StationEndProduct
-                && x.ProductSn.CompareTo(dt_ScanStation.LastProductSn) >= 0
-                && x.ProductSn.CompareTo(dt_ScanStation.LastProductSn) <= 0)
-                .OrderBy(x => x.CreateDate)
-                .ToList();
-            row = 27;
-            ExcelRange baseStyleRow = worksheet.Cells[$"{row}:{row}"];
-            foreach (var item in dt_ProcessInfoDetails)
-            {
-                if (row > 61)
+                using Stream templateStream = new FileStream(templatePath, FileMode.Open);
+                using Stream saveStream = new FileStream(savePath, FileMode.Create);
+                using ExcelPackage package = new ExcelPackage(saveStream, templateStream);
+                ExcelWorksheet worksheet = package.Workbook.Worksheets["娴佺▼鍗�"];
+                Dt_Formula formula = _formulaService.Repository.QueryFirst(x => x.ProductCode == dt_ScanStation.StationEndProduct);
+                List<Dt_FormulaDetail> dt_FormulaDetails = _formulaDetailService.Repository.QueryData(x => x.FormulaId == formula.Id && x.IsScanned == 1).ToList();
+                for (int i = dt_FormulaDetails.Count; i < 10; i++)
                 {
-                    var sourceRange = worksheet.Cells[row - 1, 1, row - 1, 36];
-                    var targetRange = worksheet.Cells[row, 1, row, 36];
-
-                    // 1. 澶嶅埗鍚堝苟瑙勫垯锛堝師鏈夐�昏緫淇濈暀锛�
-                    this.CopyCellMerge(worksheet, sourceRange, targetRange);
-                    // 2. 澶嶅埗鏍峰紡锛堝吋瀹规墍鏈塃PPlus鐗堟湰锛�
-                    targetRange.StyleID = sourceRange.StyleID;
-                    // 3. 鍚屾琛岄珮
-                    worksheet.Row(row).Height = worksheet.Row(row - 1).Height;
+                    dt_FormulaDetails.Add(new Dt_FormulaDetail());
                 }
 
-                worksheet.Cells[row, 1].Value = item.ProductSn;
-                worksheet.Cells[row, 7].Value = item.Height2;
-                worksheet.Cells[row, 13].Value = item.Height1;
-                worksheet.Cells[row, 19].Value = item.PressPressure;
-                worksheet.Cells[row, 25].Value = item.ScrewTorque;
-                if (item.PressTightenUnfinished == 1)
-                {
-                    worksheet.Cells[row, 31].Value = "鍘嬭鎷х揣寮傚父";
-                }
-                else if (item.CheckUnfinished == 1)
-                {
-                    worksheet.Cells[row, 31].Value = "妫�娴嬪紓甯�";
-                }
-                else
-                {
-                    worksheet.Cells[row, 31].Value = "姝e父";
-                }
-                row++;
 
+
+                worksheet.Cells[3, 5].Value = dt_ScanStation.StationEndProduct;//鎴愬搧缂栧彿
+                worksheet.Cells[3, 17].Value = dt_ScanStation.LastProductSn.ObjToInt() - dt_ScanStation.FirstProductSn.ObjToInt() + 1;//鏁伴噺;
+                worksheet.Cells[3, 29].Value = dt_ScanStation.FirstProductSn + "-" + dt_ScanStation.LastProductSn;//娴佹按鍙�
+                worksheet.Cells[4, 5].Value = DateTime.Now.ToString("yyyy/MM/dd");//缁勮鏃ユ湡
+                worksheet.Cells[4, 17].Value = dt_ScanStation.AssembleUser;//缁勮浜哄憳
+
+
+                int row = 7;
+                for (int j = 0; j < 5; j++)
+                {
+                    worksheet.Cells[row, 1].Value = dt_FormulaDetails[j].ComponentName;
+                    worksheet.Cells[row, 5].Value = dt_FormulaDetails[j].ComponentCode;
+                    worksheet.Cells[row, 12].Value = dt_FormulaDetails[j].SupplierCode;
+
+                    worksheet.Cells[row, 19].Value = dt_FormulaDetails[j + 5].ComponentName;
+                    worksheet.Cells[row, 23].Value = dt_FormulaDetails[j + 5].ComponentCode;
+                    worksheet.Cells[row, 30].Value = dt_FormulaDetails[j + 5].SupplierCode;
+                    row++;
+                }
+
+                row = 13;
+                for (int j = 0; j < 4; j++)
+                {
+                    worksheet.Cells[row + j, 12].Value = "鈽� 鏄�     鈻� 鍚�";
+                    worksheet.Cells[row + j, 30].Value = "鈽� 鏄�     鈻� 鍚�";
+                }
+                worksheet.Cells[17, 12].Value = "鈽� 鏄�     鈻� 鍚�";
+                worksheet.Cells[23, 5].Value = "鈽� 鏄�     鈻� 鍚�";
+
+                worksheet.Cells[26, 7].Value = formula.ProductHeight;
+                worksheet.Cells[26, 13].Value = formula.ScrewTorqueOutput;
+                worksheet.Cells[26, 19].Value = formula.ScrewDownsetDistance;
+                worksheet.Cells[26, 25].Value = formula.PressFastenTorque;
+
+
+                List<Dt_ProcessInfoDetail> dt_ProcessInfoDetails = _processInfoDetailService.Repository
+                    .QueryData(x => x.ProductCode == dt_ScanStation.StationEndProduct
+                    && x.ProductSn.CompareTo(dt_ScanStation.FirstProductSn) >= 0
+                    && x.ProductSn.CompareTo(dt_ScanStation.LastProductSn) <= 0)
+                    .OrderBy(x => x.CreateDate)
+                    .ToList();
+                row = 27;
+                ExcelRange baseStyleRow = worksheet.Cells[$"{row}:{row}"];
+                foreach (var item in dt_ProcessInfoDetails)
+                {
+                    if (row > 61)
+                    {
+                        var sourceRange = worksheet.Cells[row - 1, 1, row - 1, 36];
+                        var targetRange = worksheet.Cells[row, 1, row, 36];
+
+                        // 1. 澶嶅埗鍚堝苟瑙勫垯锛堝師鏈夐�昏緫淇濈暀锛�
+                        CopyCellMerge(worksheet, sourceRange, targetRange);
+                        // 2. 澶嶅埗鏍峰紡锛堝吋瀹规墍鏈塃PPlus鐗堟湰锛�
+                        targetRange.StyleID = sourceRange.StyleID;
+                        // 3. 鍚屾琛岄珮
+                        worksheet.Row(row).Height = worksheet.Row(row - 1).Height;
+                    }
+
+                    worksheet.Cells[row, 1].Value = item.ProductSn;
+                    worksheet.Cells[row, 7].Value = item.ProductCheckHeight;
+                    worksheet.Cells[row, 7].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
+                    worksheet.Cells[row, 7].Style.Fill.BackgroundColor.SetColor(SixLabors.ImageSharp.Color.Yellow);
+
+                    worksheet.Cells[row, 13].Value = item.ThreadPositionHeight;
+                    worksheet.Cells[row, 13].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
+                    worksheet.Cells[row, 13].Style.Fill.BackgroundColor.SetColor(SixLabors.ImageSharp.Color.Yellow);
+
+                    worksheet.Cells[row, 19].Value = item.PressPressure;
+                    worksheet.Cells[row, 19].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
+                    worksheet.Cells[row, 19].Style.Fill.BackgroundColor.SetColor(SixLabors.ImageSharp.Color.Yellow);
+
+                    worksheet.Cells[row, 25].Value = item.ScrewTorque;
+                    worksheet.Cells[row, 25].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
+                    worksheet.Cells[row, 25].Style.Fill.BackgroundColor.SetColor(SixLabors.ImageSharp.Color.Yellow);
+
+                    worksheet.Cells[row, 31].Value = item.ProductStatus == 0 ? "涓嶅悎鏍�" : item.ProductStatus == 1 ? "鍚堟牸" : "浜哄伐纭鍚堟牸";
+                    //if (item.PressTightenUnfinished == 1)
+                    //{
+                    //    worksheet.Cells[row, 31].Value = "鍘嬭鎷х揣寮傚父";
+                    //}
+                    //else
+                    //{
+                    //    worksheet.Cells[row, 31].Value = "姝e父";
+                    //}
+                    row++;
+
+                }
+                //worksheet.DeleteRow(row, worksheet.Dimension.End.Row - row + 1);
+
+                package.Save();
+
+                string pdfFileName = $"{DateTime.Now.ToString("yyyyMMddHHssmm")}" + $"{dt_ScanStation.StationEndProduct}.pdf";
+                //string pdfPath = $"{AppDomain.CurrentDomain.BaseDirectory}Download\\{pdfFileName}";
+                string pdfPath = Path.Combine(desktopPath, pdfFileName);
+
+                Workbook workbook = new Workbook();
+                workbook.LoadFromFile(savePath);
+
+                // 璁剧疆杞崲閫夐」锛屽寘鍚墍鏈夊伐浣滆〃
+                workbook.ConverterSetting.SheetFitToPage = true;
+
+                // 淇濆瓨鎵�鏈夊伐浣滆〃鍒板悓涓�涓狿DF鏂囦欢
+                workbook.SaveToFile(pdfPath, FileFormat.PDF);
+
+                //// 杞崲绗竴涓伐浣滆〃鍒癙DF
+                //workbook.SaveToFile(pdfPath, FileFormat.PDF);
+                return WebResponseContent.Instance.OK(data: new { path = pdfPath, fileName = pdfFileName });
             }
-            //worksheet.DeleteRow(row, worksheet.Dimension.End.Row - row + 1);
-
-            package.Save();
-
-            string pdfFileName = $"{DateTime.Now.ToString("yyyyMMddHHssmm")}.pdf";
-            string pdfPath = $"{AppDomain.CurrentDomain.BaseDirectory}Download\\{pdfFileName}";
-
-            Workbook workbook = new Workbook();
-            workbook.LoadFromFile(savePath);
-
-            // 杞崲绗竴涓伐浣滆〃鍒癙DF
-            workbook.SaveToFile(pdfPath, FileFormat.PDF);
-            return WebResponseContent.Instance.OK(data: new { path = pdfPath, fileName = pdfFileName });
-
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
         }
 
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Common/PLCEnum/W_PLCDBName.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Common/PLCEnum/W_PLCDBName.cs"
index 824384e..98a70e4 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Common/PLCEnum/W_PLCDBName.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Common/PLCEnum/W_PLCDBName.cs"
@@ -48,6 +48,10 @@
         /// 鍘嬭浣嶄笉鎷х揣
         /// </summary>
         wboolLocation8ScanDone,
+        /// <summary>
+        /// 鍘嬭浣嶄笉娴嬪簳鏉�
+        /// </summary>
+        wboolLocation9ScanDone,
 
         /// <summary>
         /// 鍘嬭浣嶄骇鍝侀暱搴�
@@ -103,5 +107,26 @@
         /// </summary>
         wrealCheckPalletCode,
 
+        /// <summary>
+        /// 鍘嬭鍘嬪姏宸��
+        /// </summary>
+        wrealPressPressure,
+        /// <summary>
+        /// 鍘嬭鎵姏宸��
+        /// </summary>
+        wrealTighteningTorque,
+        /// <summary>
+        /// 妫�娴嬮珮搴﹀樊鍊�
+        /// </summary>
+        wrealProdHeightDiff,
+        /// <summary>
+        /// 铻虹汗浣嶇疆宸��
+        /// </summary>
+        wrealScrewHeight,
+        /// <summary>
+        /// 绱у浐鎵煩宸��
+        /// </summary>
+        wrealFastenTorque,
+
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Common/Spire.XLS.dll" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Common/Spire.XLS.dll"
new file mode 100644
index 0000000..e8bd6de
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Common/Spire.XLS.dll"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IBoxingService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IBoxingService.cs"
index 84ad303..ae3f78a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IBoxingService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IBoxingService.cs"
@@ -3,6 +3,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.BaseRepository;
 using WIDESEAWCS_Core.BaseServices;
 using WIDESEAWCS_Model.Models;
@@ -12,5 +13,7 @@
     public interface IBoxingService : IService<Dt_Boxing>
     {
         public IRepository<Dt_Boxing> Repository { get; }
+
+        public WebResponseContent DeleteCurrentTray();
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IScanStationService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IScanStationService.cs"
index 00b5dae..8f1f331 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IScanStationService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IScanStationService.cs"
@@ -31,7 +31,7 @@
         public WebResponseContent UpdatePartScannedStatus(UpdatePartScannedStatusRequest updatePartScannedStatusRequest);
 
         // 涓嬭浇娴佺▼鍗�
-        public WebResponseContent ExportData(Dt_ScanStation dt_ScanStation);
+        public WebResponseContent ExportData();
 
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_Formula.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_Formula.cs"
index eb28322..75cb8be 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_Formula.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_Formula.cs"
@@ -1,12 +1,13 @@
-锘縰sing System;
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;
+using SqlSugar;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;
-using SqlSugar;
 using WIDESEAWCS_Core.DB.Models;
-
+using Magicodes.IE.Core;
 namespace WIDESEAWCS_Model.Models
 {
     [SugarTable(nameof(Dt_Formula), "閰嶆柟淇℃伅琛�")]
@@ -15,107 +16,170 @@
         /// <summary>
         /// 涓婚敭
         /// </summary>
+        /// 
+        [ImporterHeader(IsIgnore = true)]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "涓婚敭")]
         [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
         public int Id { get; set; }
 
         /// <summary>
         /// 鎴愬搧缂栧彿
         /// </summary>
-        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎴愬搧缂栧彿")]
+        /// 
+        [ImporterHeader(Name = "鎴愬搧缂栧彿")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "鎴愬搧缂栧彿")]
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鎴愬搧缂栧彿")]
         public string ProductCode { get; set; }
 
         /// <summary>
         /// 鎴愬搧鍚嶇О
         /// </summary>
+        [ImporterHeader(Name = "鎴愬搧鍚嶇О")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "鎴愬搧鍚嶇О")]
         [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎴愬搧鍚嶇О")]
         public string ProductName { get; set; }
 
         /// <summary>
         /// 鍘嬭浣嶄骇鍝侀暱搴�
         /// </summary>
+        [ImporterHeader(Name = "浜у搧闀垮害")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "浜у搧闀垮害")]
         [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍘嬭浣嶄骇鍝侀暱搴�")]
         public decimal? ProductLength { get; set; }
 
         /// <summary>
         /// 鍘嬭浣嶄骇鍝佸搴�
         /// </summary>
+        [ImporterHeader(Name = "浜у搧瀹藉害")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "浜у搧瀹藉害")]
         [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍘嬭浣嶄骇鍝佸搴�")]
         public decimal? ProductWidth { get; set; }
 
         /// <summary>
         /// 鍘嬭浣嶄骇鍝侀珮搴�
         /// </summary>
+        [ImporterHeader(Name = "浜у搧楂樺害")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "浜у搧楂樺害")]
         [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍘嬭浣嶄骇鍝侀珮搴�")]
         public decimal? ProductHeight { get; set; }
 
         /// <summary>
         /// 鍘嬭浣嶄笉鎷х揣
         /// </summary>
+        [ImporterHeader(Name = "涓嶆嫥绱�")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "涓嶆嫥绱�")]
         [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "鍘嬭浣嶄笉鎷х揣")]
         public int? PressNoTighten { get; set; }
 
         /// <summary>
-        /// 鍘嬭浣嶆嫥绱т笅闄嶉珮搴�
+        /// 鍘嬭浣嶄笉娴嬪簳鏉�
+        /// 0-妫�娴� 1-涓嶆娴�
         /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍘嬭浣嶆嫥绱т笅闄嶉珮搴�")]
+        [ImporterHeader(Name = "涓嶆祴搴曟澘")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "涓嶆祴搴曟澘")]
+        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "鍘嬭浣嶄笉娴嬪簳鏉�")]
+        public int? PressNoCheckBottomPlate { get; set; }
+
+        /// <summary>
+        /// 淇濆帇鍘嬪姏
+        /// </summary>
+        [ImporterHeader(Name = "淇濆帇鍘嬪姏")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "淇濆帇鍘嬪姏")]
+        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "淇濆帇鍘嬪姏")]
         public decimal? ScrewDownsetDistance { get; set; }
 
         /// <summary>
-        /// 鍘嬭浣嶆嫥绱ф壄鍔�
+        /// 涓績楂樺害
         /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍘嬭浣嶆嫥绱ф壄鍔�")]
+        [ImporterHeader(Name = "涓績楂樺害")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "涓績楂樺害")]
+        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "涓績楂樺害")]
         public decimal? ScrewTorqueOutput { get; set; }
 
         /// <summary>
         /// 鍘嬭浣嶈嚜鍔ㄦ嫥绱х▼搴忓彿
         /// </summary>
+        [ImporterHeader(Name = "鑷姩鎷х揣绋嬪簭鍙�")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "鑷姩鎷х揣绋嬪簭鍙�")]
         [SugarColumn(IsNullable = true, ColumnDescription = "鍘嬭浣嶈嚜鍔ㄦ嫥绱х▼搴忓彿")]
         public int? DintAutoScrewOn { get; set; }
 
         /// <summary>
         /// 鍘嬭浣嶇揣鍥烘壄鐭�
         /// </summary>
+        [ImporterHeader(Name = "绱у浐鎵煩")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "绱у浐鎵煩")]
         [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍘嬭浣嶇揣鍥烘壄鐭�", DefaultValue = "0.00")]
         public decimal? PressFastenTorque { get; set; }
 
         /// <summary>
         /// P0P1瀹藉害
         /// </summary>
+        [ImporterHeader(Name = "P0P1瀹藉害")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "P0P1瀹藉害")]
         [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "P0P1瀹藉害")]
         public decimal? P0P1Width { get; set; }
 
         /// <summary>
         /// P0P2瀹藉害
         /// </summary>
+        [ImporterHeader(Name = "P0P2瀹藉害")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "P0P2瀹藉害")]
         [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "P0P2瀹藉害")]
         public decimal? P0P2Width { get; set; }
 
         /// <summary>
         /// P0P3瀹藉害
         /// </summary>
+        [ImporterHeader(Name = "P0P3瀹藉害")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "P0P3瀹藉害")]
         [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "P0P3瀹藉害")]
         public decimal? P0P3Width { get; set; }
 
         /// <summary>
-        /// P1P3楂樺害
+        /// 鍨墖楂樺害
         /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "P1P3楂樺害")]
-        public decimal? P1P3Height { get; set; }
+        [ImporterHeader(Name = "鍨墖楂樺害")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "鍨墖楂樺害")]
+        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍨墖楂樺害")]
+        public decimal? GasketHeight { get; set; }
+
 
         /// <summary>
-        /// P2P3楂樺害
+        /// 鍘嬭鍘嬪姏宸��
         /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "P2P3楂樺害")]
-        public decimal? P2P3Height { get; set; }
+        [ImporterHeader(Name = "鍘嬪姏宸��")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "鍘嬪姏宸��")]
+        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍘嬭鍘嬪姏宸��")]
+        public decimal? PressPressureDiff { get; set; }
 
         /// <summary>
-        /// 浜у搧鍥剧墖璺緞
+        /// 鍘嬭鎵姏宸��
         /// </summary>
-        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "浜у搧鍥剧墖璺緞")]
-        public string ProductImagePath { get; set; }
+        [ImporterHeader(Name = "鎵姏宸��")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "鎵姏宸��")]
+        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍘嬭鎵姏宸��")]
+        public decimal? PressTorqueDiff { get; set; }
+
+        /// <summary>
+        /// 妫�娴嬮珮搴﹀樊鍊�
+        /// </summary>
+        [ImporterHeader(Name = "楂樺害宸��")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "楂樺害宸��")]
+        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "妫�娴嬮珮搴﹀樊鍊�")]
+        public decimal? DetectHeightDiff { get; set; }
+
+        /// <summary>
+        /// 铻虹汗浣嶇疆宸��
+        /// </summary>
+        [ImporterHeader(Name = "铻虹汗宸��")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "铻虹汗宸��")]
+        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "铻虹汗浣嶇疆宸��")]
+        public decimal? ScrewPositionDiff { get; set; }
 
         [SugarColumn(IsIgnore = true)]//涓嶅弬涓庢暟鎹簱鏄犲皠锛屾祴璇曚娇鐢�
         [Navigate(NavigateType.OneToMany, nameof(Dt_FormulaDetail.FormulaId), nameof(Id))]
         public List<Dt_FormulaDetail> Details { get; set; }
+
     }
 }
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_FormulaDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_FormulaDetail.cs"
index daf7a87..7a61fc0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_FormulaDetail.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_FormulaDetail.cs"
@@ -1,10 +1,12 @@
-锘縰sing SqlSugar;
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEAWCS_Core.DB.Models;
+using Magicodes.IE.Core;
 
 namespace WIDESEAWCS_Model.Models
 {
@@ -14,35 +16,47 @@
         /// <summary>
         /// 涓婚敭
         /// </summary>
+        [ImporterHeader(IsIgnore = true)]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "涓婚敭")]
         [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
         public int Id { get; set; }
         /// <summary>
         /// 閰嶆柟淇℃伅涓婚敭
         /// </summary>
+        [ImporterHeader(Name = "閰嶆柟淇℃伅涓婚敭")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "閰嶆柟淇℃伅涓婚敭")]
         [SugarColumn(IsNullable = false, ColumnDescription = "閰嶆柟淇℃伅涓婚敭")]
         public int FormulaId { get; set; }
 
         /// <summary>
         /// 闆朵欢缂栧彿
         /// </summary>
+        [ImporterHeader(Name = "闆朵欢缂栧彿")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "闆朵欢缂栧彿")]
         [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢缂栧彿")]
         public string ComponentCode { get; set; }
 
         /// <summary>
         /// 闆朵欢鍚嶇О
         /// </summary>
+        [ImporterHeader(Name = "闆朵欢鍚嶇О")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "闆朵欢鍚嶇О")]
         [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢鍚嶇О")]
         public string ComponentName { get; set; }
 
         /// <summary>
         /// 渚涙柟浠g爜
         /// </summary>
+        [ImporterHeader(Name = "渚涙柟浠g爜")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "渚涙柟浠g爜")]
         [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "渚涙柟浠g爜")]
         public string SupplierCode { get; set; }
 
         /// <summary>
         /// 鏄惁鎵爜
         /// </summary>
+        [ImporterHeader(Name = "鏄惁鎵爜")]
+        [ExporterHeader(null, 11f, null, true, true, false, 0, KnownColor.Empty, DisplayName = "鏄惁鎵爜")]
         [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "鏄惁鎵爜")]
         public int IsScanned { get; set; }
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ProcessInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ProcessInfo.cs"
index 1c252a5..473be2e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ProcessInfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ProcessInfo.cs"
@@ -42,12 +42,6 @@
         public string ProductSn { get; set; }
 
         /// <summary>
-        /// 鍘嬭鎷х揣_鎷х揣NG
-        /// </summary>
-        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "鍘嬭鎷х揣_鎷х揣NG")]
-        public int? PressTightenNg { get; set; }
-
-        /// <summary>
         /// 鍘嬭鎷х揣_鎷х揣OK
         /// </summary>
         [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "鍘嬭鎷х揣_鎷х揣OK")]
@@ -60,52 +54,13 @@
         public int? PressTightenUnfinished { get; set; }
 
         /// <summary>
-        /// 妫�娴媉鏈妫�娴嬫湭瀹屾垚
+        /// 浜у搧鐘舵�� 
+        /// 0 - 涓嶅悎鏍�
+        /// 1 - 鍚堟牸
+        /// 2 - 浜哄伐纭鍚堟牸
         /// </summary>
-        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "妫�娴媉鏈妫�娴嬫湭瀹屾垚")]
-        public int? CheckUnfinished { get; set; }
-
-        /// <summary>
-        /// 闆朵欢鏁伴噺
-        /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDescription = "闆朵欢鏁伴噺")]
-        public int? ComponentQty { get; set; }
-
-        /// <summary>
-        /// 鎵姏鍊�
-        /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鎵姏鍊�")]
-        public decimal? TorsioValue { get; set; }
-
-        /// <summary>
-        /// 鎵姏鍊兼爣鍑�
-        /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鎵姏鍊兼爣鍑�")]
-        public decimal? TorsioValueStandard { get; set; }
-
-        /// <summary>
-        /// 鍒氬害鍊�
-        /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍒氬害鍊�")]
-        public decimal? StiffnessValue { get; set; }
-
-        /// <summary>
-        /// 鍒氬害鍊兼爣鍑�
-        /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍒氬害鍊兼爣鍑�")]
-        public decimal? StiffnessValueStandard { get; set; }
-
-        /// <summary>
-        /// 娴嬭瘯缁撴灉
-        /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDescription = "娴嬭瘯缁撴灉")]
-        public int? TestResult { get; set; }
-
-        /// <summary>
-        /// 鍘嬭浣嶄笅鍘嬫娴嬮珮搴�
-        /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍘嬭浣嶄笅鍘嬫娴嬮珮搴�")]
-        public decimal? PressHeight { get; set; }
+        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "浜у搧鐘舵��")]
+        public int? ProductStatus { get; set; }
 
         /// <summary>
         /// 鍘嬭浣嶆嫥绱ф娴嬫壄鍔�
@@ -126,6 +81,18 @@
         public decimal? PressPressure { get; set; }
 
         /// <summary>
+        /// 浜у搧妫�娴嬮珮搴�
+        /// </summary>
+        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "浜у搧妫�娴嬮珮搴�")]
+        public decimal? ProductCheckHeight { get; set; }
+
+        /// <summary>
+        /// 铻虹汗浣嶇疆楂樺害
+        /// </summary>
+        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "铻虹汗浣嶇疆楂樺害")]
+        public decimal? ThreadPositionHeight { get; set; }
+
+        /// <summary>
         /// 鎷х揣浣嶆娴嬮珮搴�1
         /// </summary>
         [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鎷х揣浣嶆娴嬮珮搴�1")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ProcessInfoDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ProcessInfoDetail.cs"
index 745b084..3ed9bf0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ProcessInfoDetail.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ProcessInfoDetail.cs"
@@ -42,12 +42,6 @@
         public string ProductSn { get; set; }
 
         /// <summary>
-        /// 鍘嬭鎷х揣_鎷х揣NG
-        /// </summary>
-        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "鍘嬭鎷х揣_鎷х揣NG")]
-        public int? PressTightenNg { get; set; }
-
-        /// <summary>
         /// 鍘嬭鎷х揣_鎷х揣OK
         /// </summary>
         [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "鍘嬭鎷х揣_鎷х揣OK")]
@@ -60,52 +54,10 @@
         public int? PressTightenUnfinished { get; set; }
 
         /// <summary>
-        /// 妫�娴媉鏈妫�娴嬫湭瀹屾垚
+        /// 浜у搧鐘舵��
         /// </summary>
-        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "妫�娴媉鏈妫�娴嬫湭瀹屾垚")]
-        public int? CheckUnfinished { get; set; }
-
-        /// <summary>
-        /// 闆朵欢鏁伴噺
-        /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDescription = "闆朵欢鏁伴噺")]
-        public int? ComponentQty { get; set; }
-
-        /// <summary>
-        /// 鎵姏鍊�
-        /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鎵姏鍊�")]
-        public decimal? TorsioValue { get; set; }
-
-        /// <summary>
-        /// 鎵姏鍊兼爣鍑�
-        /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鎵姏鍊兼爣鍑�")]
-        public decimal? TorsioValueStandard { get; set; }
-
-        /// <summary>
-        /// 鍒氬害鍊�
-        /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍒氬害鍊�")]
-        public decimal? StiffnessValue { get; set; }
-
-        /// <summary>
-        /// 鍒氬害鍊兼爣鍑�
-        /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍒氬害鍊兼爣鍑�")]
-        public decimal? StiffnessValueStandard { get; set; }
-
-        /// <summary>
-        /// 娴嬭瘯缁撴灉
-        /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDescription = "娴嬭瘯缁撴灉")]
-        public int? TestResult { get; set; }
-
-        /// <summary>
-        /// 鍘嬭浣嶄笅鍘嬫娴嬮珮搴�
-        /// </summary>
-        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鍘嬭浣嶄笅鍘嬫娴嬮珮搴�")]
-        public decimal? PressHeight { get; set; }
+        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "浜у搧鐘舵��")]
+        public int? ProductStatus { get; set; }
 
         /// <summary>
         /// 鍘嬭浣嶆嫥绱ф娴嬫壄鍔�
@@ -126,6 +78,18 @@
         public decimal? PressPressure { get; set; }
 
         /// <summary>
+        /// 浜у搧妫�娴嬮珮搴�
+        /// </summary>
+        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "浜у搧妫�娴嬮珮搴�")]
+        public decimal? ProductCheckHeight { get; set; }
+
+        /// <summary>
+        /// 铻虹汗浣嶇疆楂樺害
+        /// </summary>
+        [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "铻虹汗浣嶇疆楂樺害")]
+        public decimal? ThreadPositionHeight { get; set; }
+
+        /// <summary>
         /// 鎷х揣浣嶆娴嬮珮搴�1
         /// </summary>
         [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鎷х揣浣嶆娴嬮珮搴�1")]
@@ -142,6 +106,5 @@
         /// </summary>
         [SugarColumn(IsNullable = true, DecimalDigits = 2, ColumnDescription = "鎷х揣浣嶆娴嬮珮搴�3")]
         public decimal? Height3 { get; set; }
-
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ScanStation.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ScanStation.cs"
index 0ea8af4..1e10e1b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ScanStation.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_ScanStation.cs"
@@ -59,62 +59,5 @@
         [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "鏄惁鎵爜")]
         public int IsScanned { get; set; }
 
-        ///// <summary>
-        ///// 闆朵欢鏁伴噺
-        ///// </summary>
-        //[SugarColumn(IsNullable = true, ColumnDescription = "闆朵欢鏁伴噺")]
-        //public int StationComponentQty { get; set; }
-
-        ///// <summary>
-        ///// 闆朵欢1
-        ///// </summary>
-        //[SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢1")]
-        //public string StationComponent1 { get; set; }
-
-        ///// <summary>
-        ///// 闆朵欢2
-        ///// </summary>
-        //[SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢2")]
-        //public string StationComponent2 { get; set; }
-        ///// <summary>
-        ///// 闆朵欢3
-        ///// </summary>
-        //[SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢3")]
-        //public string StationComponent3 { get; set; }
-        ///// <summary>
-        ///// 闆朵欢4
-        ///// </summary>
-        //[SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢4")]
-        //public string StationComponent4 { get; set; }
-        ///// <summary>
-        ///// 闆朵欢5
-        ///// </summary>
-        //[SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢5")]
-        //public string StationComponent5 { get; set; }
-        ///// <summary>
-        ///// 闆朵欢6
-        ///// </summary>
-        //[SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢6")]
-        //public string StationComponent6 { get; set; }
-        ///// <summary>
-        ///// 闆朵欢7
-        ///// </summary>
-        //[SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢7")]
-        //public string StationComponent7 { get; set; }
-        ///// <summary>
-        ///// 闆朵欢8
-        ///// </summary>
-        //[SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢8")]
-        //public string StationComponent8 { get; set; }
-        ///// <summary>
-        ///// 闆朵欢9
-        ///// </summary>
-        //[SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢9")]
-        //public string StationComponent9 { get; set; }
-        ///// <summary>
-        ///// 闆朵欢10
-        ///// </summary>
-        //[SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "闆朵欢10")]
-        //public string StationComponent10 { get; set; }
     }
 }
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/BoxingController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/BoxingController.cs"
index 55aac0f..d006159 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/BoxingController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/BoxingController.cs"
@@ -1,6 +1,13 @@
-锘縰sing Microsoft.AspNetCore.Mvc;
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
 using WIDESEAWCS_BasicInfoService;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IBasicInfoService;
 using WIDESEAWCS_Model.Models;
 
 namespace WIDESEAWCS_Server.Controllers.BoxingInfo
@@ -12,9 +19,17 @@
     [ApiController]
     public class BoxingController : ApiBaseController<IBoxingService, Dt_Boxing>
     {
+
         public BoxingController(IBoxingService service) : base(service)
         {
+            
+        }
 
+        //鍒犻櫎褰撳墠鎵樼洏
+        [HttpPost, Route("DeleteCurrentTray"), AllowAnonymous]
+        public WebResponseContent DeleteCurrentTray()
+        {
+            return Service.DeleteCurrentTray();
         }
 
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/BoxingDetailController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/BoxingDetailController.cs"
index 9c85305..cc2ec0b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/BoxingDetailController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/BoxingDetailController.cs"
@@ -13,7 +13,7 @@
     /// </summary>
     [Route("api/boxingDetail")]
     [ApiController]
-    public class BoxingDetailController : ApiBaseController<IBoxingDetailService, Dt_Boxing>
+    public class BoxingDetailController : ApiBaseController<IBoxingDetailService, Dt_BoxingDetail>
     {
         public BoxingDetailController(IBoxingDetailService service) : base(service)
         {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/ScanStationController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/ScanStationController.cs"
index b9b34fe..38917f2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/ScanStationController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/ScanStationController.cs"
@@ -83,9 +83,9 @@
         /// <param name="dt_ProcessInfo"></param>
         /// <returns></returns>
         [HttpPost, Route("ExportData"), AllowAnonymous]
-        public WebResponseContent ExportData([FromBody] Dt_ScanStation dt_ScanStation)
+        public WebResponseContent ExportData()
         {
-            return Service.ExportData(dt_ScanStation);
+            return Service.ExportData();
         }
 
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/Debug/net6.0/WIDESEAWCS_TaskInfoService.AssemblyInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/Debug/net6.0/WIDESEAWCS_TaskInfoService.AssemblyInfo.cs"
index 8e68a52..5821c49 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/Debug/net6.0/WIDESEAWCS_TaskInfoService.AssemblyInfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/Debug/net6.0/WIDESEAWCS_TaskInfoService.AssemblyInfo.cs"
@@ -14,7 +14,7 @@
 [assembly: System.Reflection.AssemblyCompanyAttribute("WIDESEAWCS_TaskInfoService")]
 [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
 [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+15b3879cd259108e7ebb755fe02c190f28f1e20c")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8aa5f0e094e6ff51aa7c47d5b4e8331a16eb09ff")]
 [assembly: System.Reflection.AssemblyProductAttribute("WIDESEAWCS_TaskInfoService")]
 [assembly: System.Reflection.AssemblyTitleAttribute("WIDESEAWCS_TaskInfoService")]
 [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/Debug/net6.0/WIDESEAWCS_TaskInfoService.AssemblyInfoInputs.cache" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/Debug/net6.0/WIDESEAWCS_TaskInfoService.AssemblyInfoInputs.cache"
index e74a44e..4ed3999 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/Debug/net6.0/WIDESEAWCS_TaskInfoService.AssemblyInfoInputs.cache"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/Debug/net6.0/WIDESEAWCS_TaskInfoService.AssemblyInfoInputs.cache"
@@ -1 +1 @@
-2fcc0eeacc37ee31f32434a719cbb8cb3eedf35ecc022754a7ce9ac39f254105
+c97e13df12cbbd7b4f052106b0c5e3e54606d4e7d7c3571cbd36adfdc2f442d8
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PLCJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PLCJob.cs"
index 34303d0..ed85f36 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PLCJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PLCJob.cs"
@@ -27,7 +27,6 @@
         private readonly IProcessInfoDetailService _processDetailInfoService;
         private readonly IUnitOfWorkManage _unitOfWorkManage;
         private readonly IScanStationService _scanStationService;
-        //private readonly string PalletCode = "PL107";
 
         public PLCJob(IBoxingService boxingService,
             IBoxingDetailService boxingDetailService,
@@ -300,13 +299,23 @@
                     {
                         device.SetValue(W_PLCDBName.wboolLocation8ScanDone,true);
                     }
+                    else
+                    {
+                        device.SetValue(W_PLCDBName.wboolLocation8ScanDone, false);
+                    }
+
                     device.SetValue(W_PLCDBName.wrealProductLength, dt_Formula.ProductLength);
                     device.SetValue(W_PLCDBName.wrealProductWidth, dt_Formula.ProductWidth);
-                    device.SetValue(W_PLCDBName.wrealProductHeight, dt_Formula.ProductHeight);
+                    device.SetValue(W_PLCDBName.wrealProductHeight, dt_Formula.ProductHeight + dt_Formula.GasketHeight);
                     device.SetValue(W_PLCDBName.wrealScrewDownsetDistance, dt_Formula.ScrewDownsetDistance);
                     //涓績楂樺害
-                    device.SetValue(W_PLCDBName.wrealScrewTorque, dt_Formula.ScrewTorqueOutput);
+                    device.SetValue(W_PLCDBName.wrealScrewTorque, dt_Formula.ScrewTorqueOutput + dt_Formula.GasketHeight);
                     device.SetValue(W_PLCDBName.wrealAutoScrewProgramNo, dt_Formula.DintAutoScrewOn);
+                    device.SetValue(W_PLCDBName.wrealPressPressure, dt_Formula.PressPressureDiff);
+                    device.SetValue(W_PLCDBName.wrealTighteningTorque, dt_Formula.PressTorqueDiff);
+                    device.SetValue(W_PLCDBName.wrealFastenTorque, dt_Formula.PressFastenTorque);
+
+
                     //鍘嬭鎵爜瀹屾垚
                     device.SetValue(W_PLCDBName.wboolLocation2ScanDone, true);
 
@@ -354,15 +363,13 @@
 
 
                     //鎺ユ敹鏁版嵁
-                    decimal PressHeight = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectPressHeight);
                     decimal ScrewTorque = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectScrewTorque);
                     decimal ScrewAngle = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectScrewAngle);
                     decimal PressPressure = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectPressForce);
-                    bool PressTightenNg = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rrealPressScrewByScrewNG);
                     bool PressTightenOk = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rrealPressScrewByScrewOK);
                     bool PressTightenUnfinished = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rrealPressScrewByProcessUnfinished);
 
-                    
+
 
                     //娣诲姞鍒版暟鎹簱
                     Dt_ProcessInfo dt_ProcessInfo = new Dt_ProcessInfo()
@@ -371,14 +378,22 @@
                         ProductCode = dt_Formula.ProductCode,
                         ProductName = dt_Formula.ProductName,
                         ProductSn = dt_Boxing.BoxingNo,
-                        PressTightenNg = PressTightenNg?1:0,
-                        PressTightenOk = PressTightenOk?1:0,
-                        PressTightenUnfinished = PressTightenUnfinished?1:0,
-                        PressHeight = PressHeight,
+                        ProductStatus = 1,
+                        PressTightenOk = PressTightenOk ? 1 : 0,
+                        PressTightenUnfinished = PressTightenUnfinished ? 1 : 0,
                         ScrewTorque = ScrewTorque,
                         ScrewAngle = ScrewAngle,
                         PressPressure = PressPressure,
                     };
+
+                    if (
+                        PressPressure > dt_Formula.ScrewDownsetDistance + dt_Formula.PressPressureDiff || PressPressure < dt_Formula.ScrewDownsetDistance - dt_Formula.PressPressureDiff ||
+                        ScrewTorque > dt_Formula.PressFastenTorque + dt_Formula.PressTorqueDiff || ScrewTorque < dt_Formula.PressFastenTorque - dt_Formula.PressTorqueDiff
+                        )
+                    {
+                        dt_ProcessInfo.ProductStatus = 0;
+                    }
+
                     _processInfoService.Repository.AddData(dt_ProcessInfo);
 
                     // 鍘嬭淇℃伅涓婁紶瀹屾垚
@@ -427,14 +442,27 @@
                         return;
                     }
                     Dt_Formula dt_Formula = _formulaService.Repository.QueryFirst(x => x.ProductCode == dt_Boxing.ProductCode);
+                    if(dt_Formula.PressNoCheckBottomPlate == 1)
+                    {
+                        device.SetValue(W_PLCDBName.wboolLocation9ScanDone, true);
+                    }
+                    else
+                    {
+                        device.SetValue(W_PLCDBName.wboolLocation9ScanDone, false);
+                    }
+
                     //鍐欏叆PLC
                     device.SetValue(W_PLCDBName.wrealCheckPalletCode, dt_Boxing.Id % 100);
                     device.SetValue(W_PLCDBName.wrealP0P1Width, dt_Formula.P0P1Width);
                     device.SetValue(W_PLCDBName.wrealP0P2Width, dt_Formula.P0P2Width);
                     device.SetValue(W_PLCDBName.wrealP0P3Width, dt_Formula.P0P3Width);
-                    device.SetValue(W_PLCDBName.wrealP0P3Width, dt_Formula.P0P3Width);
-                    device.SetValue(W_PLCDBName.wrealP1P3Height, dt_Formula.P1P3Height);
-                    device.SetValue(W_PLCDBName.wrealP2P3Height, dt_Formula.P2P3Height);
+                    device.SetValue(W_PLCDBName.wrealP1P3Height, dt_Formula.ScrewTorqueOutput + dt_Formula.GasketHeight);
+                    device.SetValue(W_PLCDBName.wrealP2P3Height, dt_Formula.ProductHeight + dt_Formula.GasketHeight);
+                    device.SetValue(W_PLCDBName.wrealProdHeightDiff, dt_Formula.DetectHeightDiff);
+                    device.SetValue(W_PLCDBName.wrealScrewHeight, dt_Formula.ScrewPositionDiff);
+                    
+
+
 
                     //妫�娴嬫壂鐮佸畬鎴�
                     device.SetValue(W_PLCDBName.wboolLocation3ScanDone, true);
@@ -486,7 +514,14 @@
                     decimal Height1 = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectHeight1);//113
                     decimal Height2 = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectHeight2);//92
                     decimal Height3 = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectHeight3);//11
-                    bool CheckUnfinished = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rrealDetectByInspectUnfinished);
+                    if(dt_Formula.PressNoCheckBottomPlate == 1)
+                    {
+                        Height3 = 0;
+                    }
+
+                    //bool CheckUnfinished = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rrealDetectByInspectUnfinished);
+
+                    
 
                     Dt_ProcessInfo dt_ProcessInfo = _processInfoService.Repository.QueryFirst(x => x.PalletCode == dt_Boxing.PalletCode);
                     int id = 0;
@@ -498,7 +533,6 @@
                             ProductCode = dt_Formula.ProductCode,
                             ProductName = dt_Formula.ProductName,
                             ProductSn = dt_Boxing.BoxingNo,
-                            CheckUnfinished = CheckUnfinished?1:0,
                         };
                         id = _processInfoService.Repository.AddData(dt_ProcessInfo);
                     }
@@ -506,10 +540,23 @@
                     {
                         id = dt_ProcessInfo.Id;
                     }
+                    decimal? ThreadPositionHeight = Height1 - Height3 - dt_Formula.GasketHeight;
+                    decimal? ProductCheckHeight = Height2 - Height3 - dt_Formula.GasketHeight;
+
                     dt_ProcessInfo.Id = id;
-                    dt_ProcessInfo.Height1 = Height1 = Height1 - Height3;
-                    dt_ProcessInfo.Height2 = Height2 = Height2 - Height3;
+                    dt_ProcessInfo.ThreadPositionHeight = ThreadPositionHeight;
+                    dt_ProcessInfo.ProductCheckHeight = ProductCheckHeight;
+                    dt_ProcessInfo.Height1 = Height1;
+                    dt_ProcessInfo.Height2 = Height2;
                     dt_ProcessInfo.Height3 = Height3;
+
+                    if(
+                        ProductCheckHeight > dt_Formula.ProductHeight + dt_Formula.DetectHeightDiff || ProductCheckHeight < dt_Formula.ProductHeight - dt_Formula.DetectHeightDiff ||
+                        ThreadPositionHeight > dt_Formula.ScrewTorqueOutput + dt_Formula.ScrewPositionDiff || ThreadPositionHeight < dt_Formula.ScrewTorqueOutput - dt_Formula.ScrewPositionDiff
+                        )
+                    {
+                        dt_ProcessInfo.ProductStatus = 0;
+                    }
 
                     _processInfoService.Repository.UpdateData(dt_ProcessInfo);
                     //妫�娴嬩俊鎭笂浼犲畬鎴�
@@ -551,16 +598,22 @@
                             throw new InvalidOperationException("鎵樼洏涓虹┖");
                         }
                         Dt_Boxing dt_Boxing = _boxingService.Repository.QueryFirst(x => x.PalletCode == PalletCode);
+                        WriteInfo("涓嬬嚎鎵爜缁勭洏鏁版嵁",$"{PalletCode}_boxingService鏌ヨ{dt_Boxing}");
+
                         if (dt_Boxing != null)
                         {
+                            WriteInfo("涓嬬嚎鎵爜缁勭洏鏁版嵁", $"{PalletCode}_boxingService鍒犻櫎{dt_Boxing}");
                             _boxingService.Repository.DeleteData(dt_Boxing);
+                            
                             List<Dt_BoxingDetail> dt_BoxingDetails = _boxingDetailService.Repository.QueryData(x => x.BoxingId == dt_Boxing.Id);
                             if (dt_BoxingDetails != null)
                             {
+                                WriteInfo("涓嬬嚎鎵爜缁勭洏鏁版嵁", $"{PalletCode}_boxingService鍒犻櫎{dt_BoxingDetails}");
                                 _boxingDetailService.Repository.DeleteData(dt_BoxingDetails);
                             }
                         }
                         Dt_ProcessInfo dt_ProcessInfo = _processInfoService.Repository.QueryFirst(x => x.PalletCode == PalletCode);
+                        WriteInfo("涓嬬嚎鎵爜缁勭洏鏁版嵁", $"{PalletCode}_processInfoService鏌ヨ{dt_ProcessInfo}");
                         if (dt_ProcessInfo != null)
                         {
                             Dt_ProcessInfoDetail dt_ProcessInfoDetail = new Dt_ProcessInfoDetail()
@@ -569,14 +622,14 @@
                                 ProductCode = dt_ProcessInfo.ProductCode?.ToString() ?? "",
                                 ProductName = dt_ProcessInfo.ProductName?.ToString() ?? "",
                                 ProductSn = dt_ProcessInfo.ProductSn,
-                                PressTightenNg = dt_ProcessInfo.PressTightenNg,
                                 PressTightenOk = dt_ProcessInfo.PressTightenOk,
                                 PressTightenUnfinished = dt_ProcessInfo.PressTightenUnfinished,
-                                CheckUnfinished = dt_ProcessInfo.CheckUnfinished,
-                                PressHeight = dt_ProcessInfo.PressHeight,
+                                ProductStatus = dt_ProcessInfo.ProductStatus,
                                 ScrewTorque = dt_ProcessInfo.ScrewTorque,
                                 ScrewAngle = dt_ProcessInfo.ScrewAngle,
                                 PressPressure = dt_ProcessInfo.PressPressure,
+                                ThreadPositionHeight = dt_ProcessInfo.ThreadPositionHeight,
+                                ProductCheckHeight = dt_ProcessInfo.ProductCheckHeight,
                                 Height1 = dt_ProcessInfo.Height1,
                                 Height2 = dt_ProcessInfo.Height2,
                                 Height3 = dt_ProcessInfo.Height3,
@@ -584,7 +637,9 @@
                                 CreateDate = DateTime.Now
                             };
                             _processDetailInfoService.Repository.AddData(dt_ProcessInfoDetail);
+                            WriteInfo("涓嬬嚎鎵爜缁勭洏鏁版嵁", $"{PalletCode}_processInfoService鍒犻櫎{dt_ProcessInfo}");
                             _processInfoService.DeleteData(dt_ProcessInfo);
+                            
                         }
                         uow.Commit();
                         //涓嬬嚎鎵爜瀹屾垚
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\221\347\224\265\346\234\272\345\274\271\346\200\247\346\224\257\346\222\221BOM\347\273\223\346\236\204\345\217\212\345\267\245\350\211\272\345\217\202\346\225\260.pdf" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\221\347\224\265\346\234\272\345\274\271\346\200\247\346\224\257\346\222\221BOM\347\273\223\346\236\204\345\217\212\345\267\245\350\211\272\345\217\202\346\225\260.pdf"
new file mode 100644
index 0000000..0557ea0
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\221\347\224\265\346\234\272\345\274\271\346\200\247\346\224\257\346\222\221BOM\347\273\223\346\236\204\345\217\212\345\267\245\350\211\272\345\217\202\346\225\260.pdf"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\221\347\224\265\346\234\272\345\274\271\346\200\247\346\224\257\346\222\221\344\277\241\346\201\257\345\214\226\346\265\201\347\250\213\345\215\241-\346\263\250\351\207\212.pdf" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\221\347\224\265\346\234\272\345\274\271\346\200\247\346\224\257\346\222\221\344\277\241\346\201\257\345\214\226\346\265\201\347\250\213\345\215\241-\346\263\250\351\207\212.pdf"
new file mode 100644
index 0000000..e40ca98
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\221\347\224\265\346\234\272\345\274\271\346\200\247\346\224\257\346\222\221\344\277\241\346\201\257\345\214\226\346\265\201\347\250\213\345\215\241-\346\263\250\351\207\212.pdf"
Binary files differ

--
Gitblit v1.9.3