Browse Source

配方干物质修改

Shan9312 1 month ago
parent
commit
9d4595ef1e

+ 1 - 1
.env.development

@@ -4,7 +4,7 @@ ENV = 'development'
 
 # base api
 # 测试线'
-# VUE_APP_BASE_API = 'http://kpttest.kptyun.com/':q
+# VUE_APP_BASE_API = 'http://kpttest.kptyun.com/'
 # 白少后台本地
 VUE_APP_BASE_API = 'http://192.168.1.79:8081/'
 # VUE_APP_BASE_API = 'http://192.168.1.93/'

BIN
dist-多语言-tmr-20250327.zip


+ 1 - 0
src/lang/en/langModule/formulationEvaluation.js

@@ -111,4 +111,5 @@ export default {
   ],
 
   cdb1: "Crude Protein(%DM)",
+  gwzzl: "Dry Matter Weight",
 };

+ 82 - 81
src/lang/en/langModule/menus.js

@@ -1,83 +1,84 @@
 export default {
-  首页: 'Home',
+  首页: "Home",
   //
-  统计分析:'Statistical Analysis',
-    仪表盘:'Dashboard',
-    配方统计:'Formula Statistics',
-    推料计划分析:'Feed Push Plan Analysis',
-    过程分析:"Process Analysis",
-    图表:'Chart',
-    准确性分析:'Accuracy Analysis',
-    饲喂效率:'Feeding Efficiency',
-    库存管理:'Inventory Management',
-    硬件测试:'Hardware Testing',
-    配方评估:'Formula Evaluation',
-    //
-    配方计划:'Formula Plan',
-    配方模板:'Formula Template',
-    配方下发:'Formula Issuance',
-    栏舍配方:'Pen Formula',
-    预混计划:'Premix Plan',
-    撒料计划:'Feed Spreading Plan',
-    剩料计划:'Leftover Feed Plan',
-    日执行计划:'Daily Execution Plan',
-    推料计划:'Feed Push Plan',
-    配方评估:'Formula Evaluation',
-    //
-    栏舍生产:'Pens Production',
-    栏舍生产性能:'Pens Production Performance',
-    配方干物质:'Formula Dry Matter',
-    宾州筛:'Penn State Sieve',
-    粪便筛:'Manure Sieve',
-    粪便评分:'Manure Scoring',
-    体况评分:'Body Condition Scoring',
-    值班记录:'Duty Record',
-    栏舍剩料记录:"Pens Leftover Feed Record",
-   //
-   库存管理:'Inventory Management',
-   入库管理:'Inward Stock Management',
-   系统用量:'System Usage',
-   人工用量:'Labor Usage',
-   盘点单:'Inventory Count Sheet',
-   库存预警:'Inventory Alert',
-   库存统计:'Inventory Statistics',
-   饲料合同:'Feed Contract',
-   //
-   基础数据:'Basic Data',
-   驾驶员:'Driver',
-   TMR设备:'TMR Equipment',
-   其他设备管理:'Other Equipment Management',
-   牲畜类别:'Livestock Category',
-   舍组栏:'Pens Group Pen',
-   饲料分类:'Feed Classification',
-   饲料表:'Feed Chart',
-   供应商管理:'Supplier Management',
-   标准参数:'Standard Parameters',
-   默认参数配置:'Default Parameter Configuration',
-   sap日志:'SAP Log',
-   //
-   系统管理:'System Management',
-   集团信息:'Group Information',
-   图表2:'Chart',
-   仪表盘2:'Dashboard',
-   数据同步:'Data Synchronization',
-   牧场信息:'Ranch Information',
-   角色管理:'Role Management',
-   用户管理:'User Management',
-   操作日志:'Operation Log',
-   仪表盘管理:'Dashboard Management',
-   运营管理:'Operation Management',
-   标签管理:'Label Management',
-   通知管理:'Notification Management',
-   消息接收:'Message Management',
-   提醒设置:'Reminder Settings',
-   //
-   后台管理:'Back-end Management',
-   硬件调用:'Hardware Invocation',
-   菜单管理:'Menu Management',
-   字典管理:'Dictionary Management',
-   SQL管理:'SQL Management',
-   测试:'Test',
-   消息管理:'Message Management',
-   剩料配置:"Scrap material allocation",
-}
+  统计分析: "Statistical Analysis",
+  仪表盘: "Dashboard",
+  配方统计: "Formula Statistics",
+  推料计划分析: "Feed Push Plan Analysis",
+  过程分析: "Process Analysis",
+  图表: "Chart",
+  准确性分析: "Accuracy Analysis",
+  饲喂效率: "Feeding Efficiency",
+  库存管理: "Inventory Management",
+  硬件测试: "Hardware Testing",
+  配方评估: "Formula Evaluation",
+  //
+  配方计划: "Formula Plan",
+  配方模板: "Formula Template",
+  配方下发: "Formula Issuance",
+  栏舍配方: "Pen Formula",
+  预混计划: "Premix Plan",
+  撒料计划: "Feed Spreading Plan",
+  剩料计划: "Leftover Feed Plan",
+  日执行计划: "Daily Execution Plan",
+  推料计划: "Feed Push Plan",
+  配方评估: "Formula Evaluation",
+  //
+  栏舍生产: "Pens Production",
+  栏舍生产性能: "Pens Production Performance",
+  配方干物质: "Formula Dry Matter",
+  宾州筛: "Penn State Sieve",
+  粪便筛: "Manure Sieve",
+  粪便评分: "Manure Scoring",
+  体况评分: "Body Condition Scoring",
+  值班记录: "Duty Record",
+  栏舍剩料记录: "Pens Leftover Feed Record",
+  剩料使用: "Usage of Leftover Feed",
+  //
+  库存管理: "Inventory Management",
+  入库管理: "Inward Stock Management",
+  系统用量: "System Usage",
+  人工用量: "Labor Usage",
+  盘点单: "Inventory Count Sheet",
+  库存预警: "Inventory Alert",
+  库存统计: "Inventory Statistics",
+  饲料合同: "Feed Contract",
+  //
+  基础数据: "Basic Data",
+  驾驶员: "Driver",
+  TMR设备: "TMR Equipment",
+  其他设备管理: "Other Equipment Management",
+  牲畜类别: "Livestock Category",
+  舍组栏: "Pens Group Pen",
+  饲料分类: "Feed Classification",
+  饲料表: "Feed Chart",
+  供应商管理: "Supplier Management",
+  标准参数: "Standard Parameters",
+  默认参数配置: "Default Parameter Configuration",
+  sap日志: "SAP Log",
+  //
+  系统管理: "System Management",
+  集团信息: "Group Information",
+  图表2: "Chart",
+  仪表盘2: "Dashboard",
+  数据同步: "Data Synchronization",
+  牧场信息: "Ranch Information",
+  角色管理: "Role Management",
+  用户管理: "User Management",
+  操作日志: "Operation Log",
+  仪表盘管理: "Dashboard Management",
+  运营管理: "Operation Management",
+  标签管理: "Label Management",
+  通知管理: "Notification Management",
+  消息接收: "Message Management",
+  提醒设置: "Reminder Settings",
+  //
+  后台管理: "Back-end Management",
+  硬件调用: "Hardware Invocation",
+  菜单管理: "Menu Management",
+  字典管理: "Dictionary Management",
+  SQL管理: "SQL Management",
+  测试: "Test",
+  消息管理: "Message Management",
+  剩料配置: "Scrap material allocation",
+};

+ 490 - 415
src/lang/en/langModule/message.js

@@ -1,439 +1,514 @@
-export default{
+export default {
   msg1: "Copy successful",
-msg2: "Copy failed",
-msg3: "Please select a formula",
-msg4: "Are you sure to copy this information?",
-msg5: "Import successful",
-msg6: "Feed order cannot be negative or a decimal",
-msg7: "Feed name/weight/mixing delay/allowable delay deviation cannot be empty",
-msg8: "Please enter a positive number for weight, up to four decimal places",
-msg9: "Special characters are not allowed in the formula name",
-msg10: "Effective successfully",
-msg11: "Failed to take effect",
-msg12: "Please select train information",
-msg13: "Disable failed",
-msg14: "Request failed",
-msg15: "Disable successful",
-msg16: "Formula name/livestock category/formula type cannot be empty",
-msg17: "Livestock category/formula type cannot be empty",
-msg18: "Formula name cannot be empty",
-msg19: "Livestock category cannot be empty",
-msg20: "Formula type cannot be empty",
-msg21: "Special characters are not allowed in the formula code",
-msg22: "The formula code cannot be duplicated, please re-enter",
-msg23: "Please select formula details",
-msg24: "Premix formula cannot be synthesized into premix feed",
-msg25: "Cannot select premix feed",
-msg26: "Please select at least two feeds to synthesize",
-msg27: "The premix formula already exists, cannot be regenerated",
-msg28: "Formula name/livestock category cannot be empty",
-msg29: "Currently selected",
-msg30: "pieces of information, are you sure to disable?",
-msg31: "pieces of information, are you sure to delete?",
-msg32: "Formula record",
-msg33: "Synthesize premix feed",
-msg34: "Historical record",
-msg35: "Feed details",
-msg36: "Formula modification record",
-msg37: "Failed",
-msg38: "Import failed:",
-msg39: "piece!",
-msg40: "Upload failed",
-msg41: "Application cancelled",
-msg42: "Please save or cancel the current change order operation",
-msg43: "Weight/mixing delay/allowable delay deviation cannot be empty",
-msg44: "Feed name cannot be empty",
-msg45: "Weight cannot be empty",
-msg46: "Mixing delay cannot be empty",
-msg47: "Allowable delay deviation cannot be empty",
-msg48: "Allowable delay deviation cannot exceed mixing delay",
-msg49: "Feed name cannot select a premix formula",
-msg50: "Order switch successful",
-msg51: "Order switch failed",
-msg52: "Mixing delay/allowable delay deviation cannot be empty",
+  msg2: "Copy failed",
+  msg3: "Please select a formula",
+  msg4: "Are you sure to copy this information?",
+  msg5: "Import successful",
+  msg6: "Feed order cannot be negative or a decimal",
+  msg7: "Feed name/weight/mixing delay/allowable delay deviation cannot be empty",
+  msg8: "Please enter a positive number for weight, up to four decimal places",
+  msg9: "Special characters are not allowed in the formula name",
+  msg10: "Effective successfully",
+  msg11: "Failed to take effect",
+  msg12: "Please select train information",
+  msg13: "Disable failed",
+  msg14: "Request failed",
+  msg15: "Disable successful",
+  msg16: "Formula name/livestock category/formula type cannot be empty",
+  msg17: "Livestock category/formula type cannot be empty",
+  msg18: "Formula name cannot be empty",
+  msg19: "Livestock category cannot be empty",
+  msg20: "Formula type cannot be empty",
+  msg21: "Special characters are not allowed in the formula code",
+  msg22: "The formula code cannot be duplicated, please re-enter",
+  msg23: "Please select formula details",
+  msg24: "Premix formula cannot be synthesized into premix feed",
+  msg25: "Cannot select premix feed",
+  msg26: "Please select at least two feeds to synthesize",
+  msg27: "The premix formula already exists, cannot be regenerated",
+  msg28: "Formula name/livestock category cannot be empty",
+  msg29: "Currently selected",
+  msg30: "pieces of information, are you sure to disable?",
+  msg31: "pieces of information, are you sure to delete?",
+  msg32: "Formula record",
+  msg33: "Synthesize premix feed",
+  msg34: "Historical record",
+  msg35: "Feed details",
+  msg36: "Formula modification record",
+  msg37: "Failed",
+  msg38: "Import failed:",
+  msg39: "piece!",
+  msg40: "Upload failed",
+  msg41: "Application cancelled",
+  msg42: "Please save or cancel the current change order operation",
+  msg43: "Weight/mixing delay/allowable delay deviation cannot be empty",
+  msg44: "Feed name cannot be empty",
+  msg45: "Weight cannot be empty",
+  msg46: "Mixing delay cannot be empty",
+  msg47: "Allowable delay deviation cannot be empty",
+  msg48: "Allowable delay deviation cannot exceed mixing delay",
+  msg49: "Feed name cannot select a premix formula",
+  msg50: "Order switch successful",
+  msg51: "Order switch failed",
+  msg52: "Mixing delay/allowable delay deviation cannot be empty",
 
-msg53: "Formula Modification Record:",
-msg54: "Formula Template Import Template.xlsx",
-msg55: "Formula Template",
-msg56: "Formula Template Import Error Message",
-msg57: "The formula name cannot be duplicated, please re-enter",
-msg58: "Are you sure to apply the data of",
-msg59: "to the current?",
-msg60: "Are you sure to split the current premix feed?",
-msg61: "Are you sure to upload the formula?",
-msg62: "Pens Details:",
-msg63: "Formula Details",
-msg64: "Weight (KG)",
-msg65: "(3.5) Feed Conversion Efficiency (kg/DM)",
-msg66: "Daily Milk Cost per Kilogram ($)",
-//
-msg67: "Please select the formula to be issued",
-msg68: "The formula is not enabled and cannot be issued",
-msg69: "Please select the farm to be issued to" ,
-msg70: "Formula issued",
-msg71: "Is it the current formula",
-msg72: "Issuance record",
-msg73: "Issuance time",
-msg74: "Select the farm for issuance",
-msg75: "Yield (kg/cow)",
-msg76: "Dry matter intake (kg/cow)",
-msg77: "2.75 points (quantity, percentage)",
-msg78: "2.75 points (quantity, percentage)" ,
-msg79: "3 points (quantity, percentage)",
-msg80: "3.25 points (quantity, percentage)",
-msg81: "3.75 points (quantity, percentage)",
-msg82: "4+ points (quantity, percentage)",
-msg83: "1 point (quantity, percentage)",
-msg84: "2 points (quantity, percentage)",
-msg85: "4 points (quantity, percentage)",
-msg86: "5 points (quantity, percentage)",
-msg87: "Dry matter adjustment - formula selection",
-msg88: "Please select the pen formula",
-msg89: "Fresh weight (g)",
-msg90: "Dried weight (g)",
-msg91: "Theoretical dry matter",
+  msg53: "Formula Modification Record:",
+  msg54: "Formula Template Import Template.xlsx",
+  msg55: "Formula Template",
+  msg56: "Formula Template Import Error Message",
+  msg57: "The formula name cannot be duplicated, please re-enter",
+  msg58: "Are you sure to apply the data of",
+  msg59: "to the current?",
+  msg60: "Are you sure to split the current premix feed?",
+  msg61: "Are you sure to upload the formula?",
+  msg62: "Pens Details:",
+  msg63: "Formula Details",
+  msg64: "Weight (KG)",
+  msg65: "(3.5) Feed Conversion Efficiency (kg/DM)",
+  msg66: "Daily Milk Cost per Kilogram ($)",
+  //
+  msg67: "Please select the formula to be issued",
+  msg68: "The formula is not enabled and cannot be issued",
+  msg69: "Please select the farm to be issued to",
+  msg70: "Formula issued",
+  msg71: "Is it the current formula",
+  msg72: "Issuance record",
+  msg73: "Issuance time",
+  msg74: "Select the farm for issuance",
+  msg75: "Yield (kg/cow)",
+  msg76: "Dry matter intake (kg/cow)",
+  msg77: "2.75 points (quantity, percentage)",
+  msg78: "2.75 points (quantity, percentage)",
+  msg79: "3 points (quantity, percentage)",
+  msg80: "3.25 points (quantity, percentage)",
+  msg81: "3.75 points (quantity, percentage)",
+  msg82: "4+ points (quantity, percentage)",
+  msg83: "1 point (quantity, percentage)",
+  msg84: "2 points (quantity, percentage)",
+  msg85: "4 points (quantity, percentage)",
+  msg86: "5 points (quantity, percentage)",
+  msg87: "Dry matter adjustment - formula selection",
+  msg88: "Please select the pen formula",
+  msg89: "Fresh weight (g)",
+  msg90: "Dried weight (g)",
+  msg91: "Theoretical dry matter",
   msg92: "Actual dry matter",
-// msg94:"Operator",
-msg93: "Operation date",
+  msg93: "Operation date",
+  msg94: "Operator Date",
 
-msg95: "Previous step" ,
-msg96: "Next step",
-msg97: "Shift weight before adjustment",
-msg98: "Shift weight after adjustment",
-msg99: "Theoretical dry matter before adjustment",
-msg100: "Theoretical dry matter after adjustment",
-msg101: "Sampling dry matter before adjustment",
-msg102: "Sampling dry matter after adjustment",
-msg103: "Daily feeding amount before adjustment",
-msg104: "Daily feeding amount after adjustment",
-msg105: "Dry matter adjustment - sampling selection",
-msg106: "Dry matter adjustment - change details",
-msg107: "Select the formula to be adjusted",
-msg108: "Please select the corresponding dry matter ratio adjustment for the sampling content",
-msg109: "Only one sampling content can be selected for adjustment",
-msg110: "Are you sure to perform the current dry matter adjustment operation?",
-msg111: "Prompt",
-msg112: "Pen formula import template",
-msg113: "Filling specification",
-downloadList:[
-  { 'obj1': '1. The file type should be xlsx, and the corresponding table file name format should be: File Name.xlsx;' },
-  { 'obj1': '2. The bottom worksheet name cannot be changed, and the default is: Sheet1;' },
-  { 'obj1': '3. Pen name, actual cattle number, coefficient (%), coefficient head number, formula template, supplementary feed formula font are required to fill in;' },
-  { 'obj1': ' The first column pen name defaults to the pen in the system and cannot be modified;' },
-  { 'obj1': '5. The actual number of cattle should be a positive integer, the coefficient should be a positive number, and at most two decimal places should be retained;' },
-  { 'obj1': '6. The formula template name must match the feeding formula in the system formula plan - formula template; if the supplementary feed formula is enabled, it needs to match the supplementary feed formula in the formula template;' },
-  { 'obj1': '7. A maximum of 200 data entries can be imported, if more than 200 entries, please import in multiple files.' }
-],
+  msg95: "Previous step",
+  msg96: "Next step",
+  msg97: "Shift weight before adjustment",
+  msg98: "Shift weight after adjustment",
+  msg99: "Theoretical dry matter before adjustment",
+  msg100: "Theoretical dry matter after adjustment",
+  msg101: "Sampling dry matter before adjustment",
+  msg102: "Sampling dry matter after adjustment",
+  msg103: "Daily feeding amount before adjustment",
+  msg104: "Daily feeding amount after adjustment",
+  msg105: "Dry matter adjustment - sampling selection",
+  msg106: "Dry matter adjustment - change details",
+  msg107: "Select the formula to be adjusted",
+  msg108:
+    "Please select the corresponding dry matter ratio adjustment for the sampling content",
+  msg109: "Only one sampling content can be selected for adjustment",
+  msg110:
+    "Are you sure to perform the current dry matter adjustment operation?",
+  msg111: "Prompt",
+  msg112: "Pen formula import template",
+  msg113: "Filling specification",
+  downloadList: [
+    {
+      obj1: "1. The file type should be xlsx, and the corresponding table file name format should be: File Name.xlsx;",
+    },
+    {
+      obj1: "2. The bottom worksheet name cannot be changed, and the default is: Sheet1;",
+    },
+    {
+      obj1: "3. Pen name, actual cattle number, coefficient (%), coefficient head number, formula template, supplementary feed formula font are required to fill in;",
+    },
+    {
+      obj1: " The first column pen name defaults to the pen in the system and cannot be modified;",
+    },
+    {
+      obj1: "5. The actual number of cattle should be a positive integer, the coefficient should be a positive number, and at most two decimal places should be retained;",
+    },
+    {
+      obj1: "6. The formula template name must match the feeding formula in the system formula plan - formula template; if the supplementary feed formula is enabled, it needs to match the supplementary feed formula in the formula template;",
+    },
+    {
+      obj1: "7. A maximum of 200 data entries can be imported, if more than 200 entries, please import in multiple files.",
+    },
+  ],
 
+  //
+  msg114:
+    "Cattle head count synchronization with the software has been canceled",
+  msg115: "Recovery has been canceled",
+  msg116:
+    "The livestock category of the selected formula template does not match the livestock category corresponding to the pen",
+  msg117:
+    "The selected supplementary feed formula does not match the livestock category corresponding to the pen",
+  msg118:
+    "Actual cattle head count/coefficients/coefficients head count/formula template cannot be empty",
+  msg119:
+    "Coefficients/coefficients head count/formula template cannot be empty",
+  msg120: "Coefficients head count/formula template cannot be empty",
+  msg121: "Actual cattle head count cannot be empty",
+  msg122: "Coefficient cannot be empty",
+  msg123: "Coefficients head count cannot be empty",
+  msg124: "Formula template cannot be empty",
+  msg125: "Please enter a positive integer for the actual cattle head count",
+  msg126: "Please select a pen information for nutritional assessment",
+  msg127: "Start date and end date cannot be empty",
+  msg128: "Cattle head count should be a positive integer",
+  msg129: "Temperature environment should be kept to two decimal places",
+  msg130: "Average age should be kept to two decimal places",
+  msg131: "Body weight should be kept to two decimal places",
+  msg132: "Daily weight gain should be kept to two decimal places",
+  msg133:
+    "Pregnancy days should be an integer greater than 0 and less than 280",
+  msg134: "Parity should be an integer greater than 0 and less than 20",
+  msg135: "Average days in milk should be a positive integer",
+  msg136: "Milk yield should be kept to two decimal places",
+  msg137: "Milk fat percentage should be kept to two decimal places",
+  msg138: "Milk protein percentage should be kept to two decimal places",
+  msg139: "Lactose percentage should be kept to two decimal places",
 
-//
-msg114: "Cattle head count synchronization with the software has been canceled",
-msg115: "Recovery has been canceled",
-msg116: "The livestock category of the selected formula template does not match the livestock category corresponding to the pen",
-msg117: "The selected supplementary feed formula does not match the livestock category corresponding to the pen",
-msg118: "Actual cattle head count/coefficients/coefficients head count/formula template cannot be empty",
-msg119: "Coefficients/coefficients head count/formula template cannot be empty",
-msg120: "Coefficients head count/formula template cannot be empty",
-msg121: "Actual cattle head count cannot be empty",
-msg122: "Coefficient cannot be empty",
-msg123: "Coefficients head count cannot be empty",
-msg124: "Formula template cannot be empty",
-msg125: "Please enter a positive integer for the actual cattle head count",
-msg126: "Please select a pen information for nutritional assessment",
-msg127: "Start date and end date cannot be empty",
-msg128: "Cattle head count should be a positive integer",
-msg129: "Temperature environment should be kept to two decimal places",
-msg130: "Average age should be kept to two decimal places",
-msg131: "Body weight should be kept to two decimal places",
-msg132: "Daily weight gain should be kept to two decimal places",
-msg133: "Pregnancy days should be an integer greater than 0 and less than 280",
-msg134: "Parity should be an integer greater than 0 and less than 20",
-msg135: "Average days in milk should be a positive integer",
-msg136: "Milk yield should be kept to two decimal places",
-msg137: "Milk fat percentage should be kept to two decimal places",
-msg138: "Milk protein percentage should be kept to two decimal places",
-msg139: "Lactose percentage should be kept to two decimal places",
+  msg140: "Pen Formula",
+  msg141: "There is a piece of information, do you want to make it effective?",
+  msg142:
+    "Train number/formula name/TMR number/shift/mixing weight cannot be empty.",
+  msg143: "Formula name/TMR number/shift/mixing weight cannot be empty.",
+  msg144: "TMR number/shift/mixing weight cannot be empty.",
+  msg145: "Shift/mixing weight cannot be empty.",
+  msg146: "Train number cannot be empty and must be greater than 0.",
+  msg147: "TMR number cannot be empty.",
+  msg148: "Shift cannot be empty.",
+  msg149: "Mixing weight cannot be empty.",
+  msg150: "Train number cannot be duplicated.",
+  msg151: "Please enter an integer for the train number.",
 
-msg140:"Pen Formula",
-msg141: "There is a piece of information, do you want to make it effective?",
-msg142: "Train number/formula name/TMR number/shift/mixing weight cannot be empty.",
-msg143: "Formula name/TMR number/shift/mixing weight cannot be empty.",
-msg144: "TMR number/shift/mixing weight cannot be empty.",
-msg145: "Shift/mixing weight cannot be empty.",
-msg146: "Train number cannot be empty and must be greater than 0.",
-msg147: "TMR number cannot be empty.",
-msg148: "Shift cannot be empty.",
-msg149: "Mixing weight cannot be empty.",
-msg150: "Train number cannot be duplicated.",
-msg151: "Please enter an integer for the train number.",
+  msg152:
+    "The pen for this train has already been added and cannot be deleted.",
+  msg153: "Success",
+  msg154: "Weight cannot have a value less than 0.",
+  msg155: "The total weight of the spreader truck exceeds the maximum weight.",
+  msg156: "The planned formula has reached maximum capacity.",
+  msg157:
+    "Fixed equipment cannot spread material; please select a spreading device.",
+  msg158: "Please select a train number.",
 
-msg152: "The pen for this train has already been added and cannot be deleted.",
-msg153: "Success",
-msg154: "Weight cannot have a value less than 0.",
-msg155: "The total weight of the spreader truck exceeds the maximum weight.",
-msg156: "The planned formula has reached maximum capacity.",
-msg157: "Fixed equipment cannot spread material; please select a spreading device.",
-msg158: "Please select a train number.",
+  msg159: "Mandatory fields",
+  msg160: "Dashboard name/status cannot be empty",
+  msg161: "Dashboard name cannot be empty",
+  msg162: "Dashboard name cannot contain special characters",
+  msg163: "Failed to save",
+  msg164:
+    "To receive system notifications and early warning messages via WeChat, you must first scan the QR code to follow the public account",
+  msg165: "Follow WeChat:",
+  msg166: "Please select role information",
+  msg167: "Group ID/group name/administrator username cannot be empty",
+  msg168: "Group name/administrator username cannot be empty",
+  msg169: "Group ID cannot be empty",
+  msg170: "Group name cannot be empty",
+  msg171: "Administrator username cannot be empty",
+  msg172: "Please enter an 11-digit phone number",
+  msg173: "The group already exists and cannot be duplicated",
+  msg174: "Farm ID/farm name/administrator username cannot be empty",
+  msg175: "Farm name/administrator username cannot be empty",
+  msg176: "Farm ID cannot be empty",
+  msg177: "Farm name cannot be empty",
+  msg178: "Generation canceled",
+  msg179: "Cleared successfully",
+  msg180: "Failed to clear",
+  msg181: "Disabled successfully",
+  msg182:
+    "Train number/pen/TMR number/shift/remaining material processing method cannot be empty",
+  msg183:
+    "Pen/TMR number/shift/remaining material processing method cannot be empty",
+  msg184:
+    "TMR number/shift/remaining material processing method cannot be empty",
+  msg185: "Shift/remaining material processing method cannot be empty",
+  msg186: "Pen cannot be empty",
+  msg187: "Remaining material processing method cannot be empty",
+  msg188: "Transfer pen cannot be empty",
+  msg189: "Shift/remaining material processing method cannot be empty",
+  msg190: "Uploaded successfully",
+  msg191:
+    "There are pens in the spreading plan that have not been fully assigned, it is recommended to assign them in a timely manner",
+  msg192:
+    "The current date cannot modify the plan, please choose a different date",
+  msg193: "Pen formula",
+  msg194: "The order of plans that have been executed cannot be adjusted",
+  msg195: "You cannot move other plans between pre-weighing plans",
+  msg196: "Pre-weighing plan cannot be moved to other positions",
+  msg197: "Pre-weighing plan cannot be moved below the spreading plan",
+  msg198: "Spreading plan - spreading cannot be moved to other positions",
+  msg199:
+    "Spreading plan - spreading cannot be moved above the mixing in the spreading plan",
+  msg200: "Cannot be dragged into the middle of other plans;",
+  msg201: "Cannot be dragged between pre-weighing plans and pre-weighing plans",
+  msg202: "There are no plans available for copying at the moment",
+  msg203: "Synchronization successful",
+  msg204: "Synchronization failed",
+  msg205: "Data synchronization canceled",
+  msg206:
+    "Since the mixer truck and the spreader truck are integrated, the insertion order cannot be separated",
+  msg207: "Sorting",
+  msg208: "Please enter the position you want to insert into",
+  msg209: "Please check if the insertion position number is correct",
+  msg210: "Cancel sorting",
+  msg211: "Please select a plan",
+  msg212: "Modified successfully",
+  msg213: "Cleared successfully",
+  msg214: "Failed to clear",
+  msg215: "Please select a plan first",
+  msg216: "Are you sure to change the status of the checked plans to executed?",
+  msg217: "Please enter a positive number for the coefficient",
+  msg218: "Please enter a positive number for the coefficient head count",
+  msg219: "Spreading plan",
+  msg220: "Modify plan",
+  msg221: "Driver number/driver name cannot be empty",
+  msg222: "Driver number cannot be empty",
+  msg223: "Driver name cannot be empty",
+  msg224:
+    "TMR equipment number/TMR equipment name/data collection card number/TMR equipment type/maximum mixing quantity cannot be empty",
+  msg225:
+    "TMR equipment name/data collection card number/TMR equipment type/maximum mixing quantity cannot be empty",
+  msg226:
+    "Data collection card number/TMR equipment type/maximum mixing quantity cannot be empty",
+  msg227:
+    "Data collection card number/TMR equipment type/maximum mixing quantity cannot be empty",
+  msg228: "TMR equipment number cannot be empty",
+  msg229: "Equipment name cannot be empty",
+  msg230: "Data collection card number cannot be empty",
+  msg231: "Equipment type cannot be empty",
+  msg232: "Maximum mixing quantity cannot be empty",
+  msg233: "Data collection card please enter an integer between 0 and 15",
+  msg234: "Maximum mixing quantity please enter a positive integer",
+  msg235: "Jump weight range please enter an integer between 0 and 40",
+  msg236: "TMR equipment number cannot contain special characters",
+  msg237: "TMR equipment name cannot be empty",
+  msg238: "Please select TMR equipment information",
 
-msg159: "Mandatory fields",
-msg160: "Dashboard name/status cannot be empty",
-msg161: "Dashboard name cannot be empty",
-msg162: "Dashboard name cannot contain special characters",
-msg163: "Failed to save",
-msg164: "To receive system notifications and early warning messages via WeChat, you must first scan the QR code to follow the public account",
-msg165: "Follow WeChat:",
-msg166: "Please select role information",
-msg167: "Group ID/group name/administrator username cannot be empty",
-msg168: "Group name/administrator username cannot be empty",
-msg169: "Group ID cannot be empty",
-msg170: "Group name cannot be empty",
-msg171: "Administrator username cannot be empty",
-msg172: "Please enter an 11-digit phone number",
-msg173: "The group already exists and cannot be duplicated",
-msg174: "Farm ID/farm name/administrator username cannot be empty",
-msg175: "Farm name/administrator username cannot be empty",
-msg176: "Farm ID cannot be empty",
-msg177: "Farm name cannot be empty",
-msg178: "Generation canceled",
-msg179: "Cleared successfully",
-msg180: "Failed to clear",
-msg181: "Disabled successfully",
-msg182: "Train number/pen/TMR number/shift/remaining material processing method cannot be empty",
-msg183: "Pen/TMR number/shift/remaining material processing method cannot be empty",
-msg184: "TMR number/shift/remaining material processing method cannot be empty",
-msg185: "Shift/remaining material processing method cannot be empty",
-msg186: "Pen cannot be empty",
-msg187: "Remaining material processing method cannot be empty",
-msg188: "Transfer pen cannot be empty",
-msg189: "Shift/remaining material processing method cannot be empty",
-msg190: "Uploaded successfully",
-msg191: "There are pens in the spreading plan that have not been fully assigned, it is recommended to assign them in a timely manner",
-msg192: "The current date cannot modify the plan, please choose a different date",
-msg193: "Pen formula",
-msg194: "The order of plans that have been executed cannot be adjusted",
-msg195: "You cannot move other plans between pre-weighing plans",
-msg196: "Pre-weighing plan cannot be moved to other positions",
-msg197: "Pre-weighing plan cannot be moved below the spreading plan",
-msg198: "Spreading plan - spreading cannot be moved to other positions",
-msg199: "Spreading plan - spreading cannot be moved above the mixing in the spreading plan",
-msg200: "Cannot be dragged into the middle of other plans;",
-msg201: "Cannot be dragged between pre-weighing plans and pre-weighing plans",
-msg202: "There are no plans available for copying at the moment",
-msg203: "Synchronization successful",
-msg204: "Synchronization failed",
-msg205: "Data synchronization canceled",
-msg206: "Since the mixer truck and the spreader truck are integrated, the insertion order cannot be separated",
-msg207: "Sorting",
-msg208: "Please enter the position you want to insert into",
-msg209: "Please check if the insertion position number is correct",
-msg210: "Cancel sorting",
-msg211: "Please select a plan",
-msg212: "Modified successfully",
-msg213: "Cleared successfully",
-msg214: "Failed to clear",
-msg215: "Please select a plan first",
-msg216: "Are you sure to change the status of the checked plans to executed?",
-msg217: "Please enter a positive number for the coefficient",
-msg218: "Please enter a positive number for the coefficient head count",
-msg219: "Spreading plan",
-msg220: "Modify plan",
-msg221: "Driver number/driver name cannot be empty",
-msg222: "Driver number cannot be empty",
-msg223: "Driver name cannot be empty",
-msg224: "TMR equipment number/TMR equipment name/data collection card number/TMR equipment type/maximum mixing quantity cannot be empty",
-msg225: "TMR equipment name/data collection card number/TMR equipment type/maximum mixing quantity cannot be empty",
-msg226: "Data collection card number/TMR equipment type/maximum mixing quantity cannot be empty",
-msg227: "Data collection card number/TMR equipment type/maximum mixing quantity cannot be empty",
-msg228: "TMR equipment number cannot be empty",
-msg229: "Equipment name cannot be empty",
-msg230: "Data collection card number cannot be empty",
-msg231: "Equipment type cannot be empty",
-msg232: "Maximum mixing quantity cannot be empty",
-msg233: "Data collection card please enter an integer between 0 and 15",
-msg234: "Maximum mixing quantity please enter a positive integer",
-msg235: "Jump weight range please enter an integer between 0 and 40",
-msg236: "TMR equipment number cannot contain special characters",
-msg237: "TMR equipment name cannot be empty",
-msg238: "Please select TMR equipment information",
+  //
+  msg239:
+    "Equipment type/equipment number/equipment name/data collection card number cannot be empty",
+  msg240:
+    "Equipment number/equipment name/data collection card number cannot be empty",
+  msg241: "Equipment name/data collection card number cannot be empty",
+  msg242: "Equipment number cannot be empty",
+  msg243: "Equipment number cannot contain special characters",
+  msg244: "The equipment number is already in use, please re-enter",
+  msg245: "The data collection card number is already in use, please re-enter",
+  msg246: "Please select equipment information",
+  msg247:
+    "Livestock parent class/livestock category/livestock category number cannot be empty",
+  msg248: "Livestock parent class cannot be empty",
+  msg249: "Livestock category/livestock category number cannot be empty",
+  msg250: "Livestock category number cannot be empty",
+  msg251: "Livestock category cannot contain special characters",
+  msg252: "Livestock category number cannot contain special characters",
+  msg253: "Please select livestock category information",
+  msg254:
+    "Please enter an integer greater than or equal to 0 for the allowable error",
+  msg255:
+    "Please enter an integer greater than or equal to 0 and less than or equal to 120 for the jump weight range",
+  msg256: "The pen number is already in use, please re-enter",
+  msg257: "Pen name/pen number cannot be empty",
+  msg258: "Please select pen group pen information",
+  msg259: "Please enter a positive integer for the packaging unit weight",
+  msg260: "Please keep the unit price to two decimal places",
+  msg261:
+    "Please enter an integer greater than or equal to 0 and less than or equal to 50 for the jump weight range",
+  msg262: "Please enter a number from 1 to 8 for the relay position",
+  msg263:
+    "Please enter an integer greater than or equal to 0 for the allowable error",
+  msg264: "Canceled",
+  msg265: "Are you sure to confirm the association?",
+  msg266: "Please enter a natural number, up to two decimal places",
+  msg267: "Please select feed table information",
+  msg268: "Please select a piece of information",
 
-//
-msg239: "Equipment type/equipment number/equipment name/data collection card number cannot be empty",
-msg240: "Equipment number/equipment name/data collection card number cannot be empty" ,
-msg241: "Equipment name/data collection card number cannot be empty",
-msg242: "Equipment number cannot be empty",
-msg243: "Equipment number cannot contain special characters",
-msg244: "The equipment number is already in use, please re-enter",
-msg245: "The data collection card number is already in use, please re-enter",
-msg246: "Please select equipment information",
-msg247: "Livestock parent class/livestock category/livestock category number cannot be empty",
-msg248: "Livestock parent class cannot be empty",
-msg249: "Livestock category/livestock category number cannot be empty",
-msg250: "Livestock category number cannot be empty",
-msg251: "Livestock category cannot contain special characters",
-msg252: "Livestock category number cannot contain special characters",
-msg253: "Please select livestock category information",
-msg254: "Please enter an integer greater than or equal to 0 for the allowable error",
-msg255: "Please enter an integer greater than or equal to 0 and less than or equal to 120 for the jump weight range",
-msg256: "The pen number is already in use, please re-enter",
-msg257: "Pen name/pen number cannot be empty",
-msg258: "Please select pen group pen information",
-msg259: "Please enter a positive integer for the packaging unit weight",
-msg260: "Please keep the unit price to two decimal places",
-msg261: "Please enter an integer greater than or equal to 0 and less than or equal to 50 for the jump weight range",
-msg262: "Please enter a number from 1 to 8 for the relay position",
-msg263: "Please enter an integer greater than or equal to 0 for the allowable error",
-msg264: "Canceled",
-msg265: "Are you sure to confirm the association?",
-msg266: "Please enter a natural number, up to two decimal places",
-msg267: "Please select feed table information",
-msg268: "Please select a piece of information",
+  msg269: "The number of any vehicle cannot be empty or zero",
+  msg270: "The role name cannot be empty",
+  msg271: "The role name cannot be duplicated",
+  msg272: "Username/role cannot be empty",
+  msg273: "Username cannot be empty",
+  msg274: "Role cannot be empty",
+  msg275: "Please select user information",
+  msg276: "Password reset successful",
+  msg277:
+    "There are pens that have not been assigned, the unassigned pens are as follows:",
+  msg278: "All pens have been fully assigned",
+  msg279: "Do you want to change the TMR equipment?",
+  msg280:
+    "Note: Changing the TMR spreading equipment will result in different loading weights. Please select the processing method.",
+  msg281:
+    "1. The excess feed is evenly deducted from each pen that has been allocated.",
+  msg282: "2. The excess feed is deducted from the last pen going forward.",
+  msg283: "3. Clear the allocated spreader truck.",
+  msg284: "The loading volume has exceeded the vehicle capacity",
+  msg285: "The loading volume must not exceed the vehicle capacity",
+  msg286: "cubic meters, please confirm",
+  msg287: "The loading volume must not be less than the vehicle capacity",
+  msg288:
+    "Regenerating the plan will clear the existing plan first, are you sure to confirm the regeneration?",
+  msg289: "Clear the allocated pens",
+  msg290: "Edit",
+  msg291: "Add New",
+  msg292:
+    "There are pens that have not been allocated, it is recommended to allocate them in a timely manner, the unallocated pens are as follows:",
+  msg293: "All pens have been fully allocated",
+  msg294: "Transfer surplus feed",
+  msg295: "Continue feeding",
+  msg296: "Total",
+  msg297: "Delete record",
+  msg298: "Newly generated",
+  msg299: "SAP upload",
+  msg300: "Mixing data upload",
+  msg301: "Surplus feed upload",
+  msg302: "Spreading data upload",
+  msg303: "Copy plan",
+  msg304: "Apply",
+  msg305: "Pen formula",
+  msg306: "Feed Spreading Plan",
+  msg307: "Pre-mixed Plan",
+  msg308: "Surplus feed plan",
+  msg309: "Are you sure to apply the current modified plan to",
+  msg310:
+    "Are you sure to clear all data below this operation number? If you clear the mixing truck data, the spreading truck data will also be cleared synchronously?",
+  msg311: "Processing method",
 
-msg269: "The number of any vehicle cannot be empty or zero",
-msg270: "The role name cannot be empty",
-msg271: "The role name cannot be duplicated",
-msg272: "Username/role cannot be empty",
-msg273: "Username cannot be empty",
-msg274: "Role cannot be empty",
-msg275: "Please select user information",
-msg276: "Password reset successful",
-msg277: "There are pens that have not been assigned, the unassigned pens are as follows:",
-msg278: "All pens have been fully assigned",
-msg279: "Do you want to change the TMR equipment?",
-msg280: "Note: Changing the TMR spreading equipment will result in different loading weights. Please select the processing method.",
-msg281: "1. The excess feed is evenly deducted from each pen that has been allocated.",
-msg282: "2. The excess feed is deducted from the last pen going forward.",
-msg283: "3. Clear the allocated spreader truck.",
-msg284: "The loading volume has exceeded the vehicle capacity",
-msg285: "The loading volume must not exceed the vehicle capacity",
-msg286: "cubic meters, please confirm",
-msg287: "The loading volume must not be less than the vehicle capacity",
-msg288: "Regenerating the plan will clear the existing plan first, are you sure to confirm the regeneration?",
-msg289: "Clear the allocated pens",
-msg290: "Edit",
-msg291: "Add New",
-msg292: "There are pens that have not been allocated, it is recommended to allocate them in a timely manner, the unallocated pens are as follows:",
-msg293: "All pens have been fully allocated",
-msg294: "Transfer surplus feed",
-msg295: "Continue feeding",
-msg296: "Total",
-msg297: "Delete record",
-msg298: "Newly generated",
-msg299: "SAP upload",
-msg300: "Mixing data upload",
-msg301: "Surplus feed upload",
-msg302: "Spreading data upload",
-msg303: "Copy plan",
-msg304: "Apply",
-msg305: "Pen formula",
-msg306: "Feed Spreading Plan",
-msg307: "Pre-mixed Plan",
-msg308: "Surplus feed plan",
-msg309: "Are you sure to apply the current modified plan to",
-msg310: "Are you sure to clear all data below this operation number? If you clear the mixing truck data, the spreading truck data will also be cleared synchronously?",
-msg311: "Processing method",
+  msg312: "System Built-in",
+  msg313: "User Custom",
+  msg314: "Feed Library",
+  msg315: "Association",
+  msg316: "Nutritional Value",
+  msg317: "Settings",
+  msg318: "Retrieve SAP Code",
+  msg319:
+    "Are you sure to reset this user's password to the default password 123456?",
+  msg320: "Do you want to acquire UD feed?",
+  msg321: "Are you sure to confirm the disassociation?",
+  msg322: "Error message for feed table import",
+  msg323: "Filling Specifications:",
+  msg324: "Feed Table Import Template",
+  msg325: "Positive Integer",
+  msg326: "Integer between 0 and 50",
+  msg327: "Raw Material Name",
+  msg328: "Material Number",
+  msg329: "Material Group",
+  msg330: "Material Description",
+  msg331: "Last Modified Date",
+  msg332: "Feed Information",
+  msg333: "Do you want to restore?",
+  msg334: "Restore",
 
-msg312: "System Built-in",
-msg313: "User Custom",
-msg314: "Feed Library",
-msg315: "Association",
-msg316: "Nutritional Value",
-msg317: "Settings",
-msg318: "Retrieve SAP Code",
-msg319: "Are you sure to reset this user's password to the default password 123456?",
-msg320: "Do you want to acquire UD feed?",
-msg321: "Are you sure to confirm the disassociation?",
-msg322: "Error message for feed table import",
-msg323: "Filling Specifications:",
-msg324: "Feed Table Import Template",
-msg325: "Positive Integer",
-msg326: "Integer between 0 and 50",
-msg327: "Raw Material Name",
-msg328: "Material Number",
-msg329: "Material Group",
-msg330: "Material Description",
-msg331: "Last Modified Date",
-msg332: "Feed Information",
-msg333:'Do you want to restore?',
-msg334:"Restore",
+  msg335:
+    " Executing this operation will clear all the feeding pens that have been assigned to the existing train number. Are you sure you want to proceed with this operation?",
 
-msg335: ' Executing this operation will clear all the feeding pens that have been assigned to the existing train number. Are you sure you want to proceed with this operation?',
-
-msg336: "Do you want to change the TMR equipment?",
-msg337: "Note: Changing the TMR spreading equipment will result in different loading ,weights. Please select the processing method.",
-msg338: "1. The excess feed is evenly deducted from each pen that has been allocated.",
-msg339: "2. The excess feed is deducted from the last pen going forward.",
+  msg336: "Do you want to change the TMR equipment?",
+  msg337:
+    "Note: Changing the TMR spreading equipment will result in different loading ,weights. Please select the processing method.",
+  msg338:
+    "1. The excess feed is evenly deducted from each pen that has been allocated.",
+  msg339: "2. The excess feed is deducted from the last pen going forward.",
   msg340: "3. Clear the allocated spreader truck.",
-msg341: "There are pens that have not been allocated. It is recommended to allocate them in a timely manner. The unallocated pens are as follows:",
-msg342: "Allocation is complete: The current pens have been fully allocated.",
-  msg343: 'Do you want to obtain the UD pens?',
+  msg341:
+    "There are pens that have not been allocated. It is recommended to allocate them in a timely manner. The unallocated pens are as follows:",
+  msg342: "Allocation is complete: The current pens have been fully allocated.",
+  msg343: "Do you want to obtain the UD pens?",
 
   msg344: "Are you sure you want to restore the default settings?",
-msg345: "Are you sure you want to synchronize the data?",
-
-msg346:'Enable',
+  msg345: "Are you sure you want to synchronize the data?",
 
-msg347: 'Feed Spreading Plan-mixing', // Feed Spreading Plan-mixing
-  msg348: 'Feed Spreading Plan-Spreading Feed', //
-  msg349: '剩料计划' ,//
+  msg346: "Enable",
 
-  msg350:'Feed Code', //
-  msg351:'Feed Name',//
-feedLang:{
-  理论:'Theory ',
-  牲畜类别: 'Livestock Category',
-  理论:'Theory ' ,
-  实际: 'Actual',
-  合计: 'Total',
-  饲料名称: 'Feed Name',
-  饲料编码:'Feed Code',
-  饲料参数:'Livestock Category/Feed Parameters'
- },
-sourceList: [{ id: '0', name: 'Customize' }, { id: '1', name: 'Unadjusted Group-Issued' }, { id: '2', name: 'Adjusted Group-Issued' }, { id: '3', name: 'Import' }],
-msg352:'(DM Weight:',
-msg353:{
-a: 'Feeding Simplified',
-b: 'Cumulative Feeding',
-c: 'Scattering Simplified',
-d: 'Feeding and Scattering Simplified',
-e: 'Packaging Simplified',
-f: 'Actual Dispatch Simplified',
-g: 'Scattering and Feeding Cumulative',
+  msg347: "Feed Spreading Plan-mixing", // Feed Spreading Plan-mixing
+  msg348: "Feed Spreading Plan-Spreading Feed", //
+  msg349: "剩料计划", //
 
+  msg350: "Feed Code", //
+  msg351: "Feed Name", //
+  feedLang: {
+    理论: "Theory ",
+    牲畜类别: "Livestock Category",
+    理论: "Theory ",
+    实际: "Actual",
+    合计: "Total",
+    饲料名称: "Feed Name",
+    饲料编码: "Feed Code",
+    饲料参数: "Livestock Category/Feed Parameters",
+  },
+  sourceList: [
+    { id: "0", name: "Customize" },
+    { id: "1", name: "Unadjusted Group-Issued" },
+    { id: "2", name: "Adjusted Group-Issued" },
+    { id: "3", name: "Import" },
+  ],
+  msg352: "(DM Weight:",
+  msg353: {
+    a: "Feeding Simplified",
+    b: "Cumulative Feeding",
+    c: "Scattering Simplified",
+    d: "Feeding and Scattering Simplified",
+    e: "Packaging Simplified",
+    f: "Actual Dispatch Simplified",
+    g: "Scattering and Feeding Cumulative",
+  },
+  shiftObj: {
+    1: "First Shift",
+    2: "Second Shift",
+    3: "Third Shift",
+    4: "Fourth Shift",
+    5: "Fifth shift",
+    6: "Sixth shift",
+  },
+  msg354: "Select Livestock Parent Category",
+  msg355: "Customize",
+  msg356: "Spreading Feed",
+  msg357: "Mixing Feed ",
+  recipe: {
+    name: "checkfttype,checkbigcowclass,checkFeed,insertFTUploadEnglish,insertFTdetailUpload",
+    importParams:
+      "Formula Name,Livestock Category,Formula Type,Note,Feed Group,Feed Name,with Weight (kg),Mixing Delay (min),Lock the Ratio of Cattle Heads",
+    requiredParams:
+      "Formula Name,Livestock Category,Formula Type,Feed Name,with Weight (kg),Mixing Delay (min),Lock the Ratio of Cattle Heads",
+    numParams: "with Weight (kg),Mixing Delay (min)",
+  },
 
-},
-shiftObj:{
-  1:'First Shift',
-  2:"Second Shift",
-  3:'Third Shift',
-  4:'Fourth Shift',
-  5:'Fifth shift',
-  6:'Sixth shift'
-},
-msg354:'Select Livestock Parent Category',
-msg355:"Customize",
-msg356:'Spreading Feed',
-msg357: 'Mixing Feed ',
-recipe:{
-  name: 'checkfttype,checkbigcowclass,checkFeed,insertFTUploadEnglish,insertFTdetailUpload',
-  importParams: 'Formula Name,Livestock Category,Formula Type,Note,Feed Group,Feed Name,with Weight (kg),Mixing Delay (min),Lock the Ratio of Cattle Heads',
-  requiredParams: 'Formula Name,Livestock Category,Formula Type,Feed Name,with Weight (kg),Mixing Delay (min),Lock the Ratio of Cattle Heads',
-numParams: 'with Weight (kg),Mixing Delay (min)',
-},
-
-dhedform:{
-  name:'checkbarname,checkftsw,checkftbl',
-  importParams: 'Pen Name,Actual Headcount,Coefficient(%), Formula Template ,Supplement Formula,First Shift Ratio(%),Second Shift Ratio(%),Third Shift Ratio(%)',
-  requiredParams: 'Pen Name,Actual Headcount,Coefficient(%), Formula Template ,',
-  numParams: 'Actual Headcount,Coefficient(%),First Shift Ratio(%),Second Shift Ratio(%),Third Shift Ratio(%),Fourth Shift Ratio(%)',
-  theader:['Pen Name','Actual Headcount','Coefficient(%)','Formula Template','Supplement Formula',' First Shift Ratio(%)','Second Shift Ratio(%)','Third Shift Ratio(%)','Fourth Shift Ratio(%)','Fourth Shift Ratio(%)','Sixth shift Ratio(%)'],
+  dhedform: {
+    name: "checkbarname,checkftsw,checkftbl",
+    importParams:
+      "Pen Name,Actual Headcount,Coefficient(%), Formula Template ,Supplement Formula,First Shift Ratio(%),Second Shift Ratio(%),Third Shift Ratio(%)",
+    requiredParams:
+      "Pen Name,Actual Headcount,Coefficient(%), Formula Template ,",
+    numParams:
+      "Actual Headcount,Coefficient(%),First Shift Ratio(%),Second Shift Ratio(%),Third Shift Ratio(%),Fourth Shift Ratio(%)",
+    theader: [
+      "Pen Name",
+      "Actual Headcount",
+      "Coefficient(%)",
+      "Formula Template",
+      "Supplement Formula",
+      " First Shift Ratio(%)",
+      "Second Shift Ratio(%)",
+      "Third Shift Ratio(%)",
+      "Fourth Shift Ratio(%)",
+      "Fourth Shift Ratio(%)",
+      "Sixth shift Ratio(%)",
+    ],
   },
 
   feedObj: {
-      importParams:
-      'Feed Name,Feed Category,Unique Code,Plan Type,Package Unit Weight (kg),Unit Price,Jump Weight Range (kg),Jump Dela,Confirm Star,Enabled/Disabled,Relay Without Upper Domain',
-      requiredParams: 'Feed Name,Feed Category,',
+    importParams:
+      "Feed Name,Feed Category,Unique Code,Plan Type,Package Unit Weight (kg),Unit Price,Jump Weight Range (kg),Jump Dela,Confirm Star,Enabled/Disabled,Relay Without Upper Domain",
+    requiredParams: "Feed Name,Feed Category,",
   },
-  msg360: "1.The file type should be in xlsx format, with the corresponding table file name format as: File Name.xlsx.",
-  msg361:"2.The name of the bottom worksheet cannot be changed, and the default is: Sheet1."
-
-}
+  msg360:
+    "1.The file type should be in xlsx format, with the corresponding table file name format as: File Name.xlsx.",
+  msg361:
+    "2.The name of the bottom worksheet cannot be changed, and the default is: Sheet1.",
+};

+ 110 - 67
src/lang/en/langModule/premixedPlan.js

@@ -1,72 +1,115 @@
-export default{
+export default {
+  xzcc: "Add",
+  jscc: "Delete",
+  sx: "Take Effect",
+  jy: "Disable",
+  tmrbh: "TMR Number",
+  sljhccgs: "Feed Distribution Plan with Batch Following",
+  zdjbl: "Maximum Mixing Quantity(KG)",
+  hlzl: "Mixed Material Weight",
+  fljhcsgs: " Material Issuance Plan with Train Number Following",
+  time: "Time",
 
-xzcc:"Add",
-jscc:"Delete",
-sx:"Take Effect",
-jy:"Disable",
-tmrbh:"TMR Number",
-sljhccgs:"Feed Distribution Plan with Batch Following",
-zdjbl:"Maximum Mixing Quantity(KG)",
-hlzl:"Mixed Material Weight",
-fljhcsgs:" Material Issuance Plan with Train Number Following",
-time:"Time",
+  jy1: "Verification",
+  zdsc: "Auto-generated",
+  save: "Save",
+  qkyfls: "Clear Assigned Pens",
+  bc: "shift",
+  lsjl: "Historical Record",
+  ms: "Description",
+  zdzl: "Maximum Weight",
+  hjzl: "Total Weight",
+  pfmb: "recipe template",
+  wlxq: "Material Details",
+  xq: "Details",
+  sftqcfxl: "Whether to Split Small Materials in Advance",
+  rlzt: "Capacity Status",
+  sl: "Spread Feed",
+  lsqc: "Full Name of the Stall",
+  slzl: "feed weight",
+  slc: "Spreader Truck",
+  qxzzdscfa1: "Please select the automatic generation method",
+  qxzzdscfa2: "Clear the plan and generate a new plan",
+  qxzzdscfa3: "Continue to generate plans based on the current plan",
+  jxsc: "Continue Generating",
+  cxsc: "Regenerate",
 
+  weight: "weight",
+  zb: "Proportion",
+  wl: "Material",
+  fpsl: "Distribute Feed",
+  clrj: "Vehicle Volume Capacity",
+  rjl: "Volume Capacity",
+  qk: "Empty",
+  tlc: "Feed Pushcart",
+  status: "Status",
+  ls: "Pens",
+  clbm: "Vehicle Code",
+  tljh: "Feed Push Plan",
 
-jy1:"Verification",
-zdsc:"Auto-generated",
-save:"Save",
-qkyfls:"Clear Assigned Pens",
-bc:"shift",
-lsjl:"Historical Record",
-ms:"Description",
-zdzl:"Maximum Weight",
-hjzl:"Total Weight",
-pfmb:"recipe template",
-wlxq:"Material Details",
-xq:"Details",
-sftqcfxl:"Whether to Split Small Materials in Advance",
-rlzt:"Capacity Status",
-sl:"Spread Feed",
-lsqc:"Full Name of the Stall",
-slzl:"feed weight",
-slc:"Spreader Truck",
-qxzzdscfa1:'Please select the automatic generation method',
-qxzzdscfa2:"Clear the plan and generate a new plan",
-qxzzdscfa3:"Continue to generate plans based on the current plan",
-jxsc:"Continue Generating",
-cxsc:"Regenerate",
+  scc: "Delete",
+  slclfs: "Leftover Material Disposal Method",
+  ztls: "Transfer to Pens",
+  cci: "Train:",
+  lsname: "Pens Name",
 
-weight:"weight",
-zb:"Proportion",
-wl:"Material",
-fpsl:"Distribute Feed",
-clrj:"Vehicle Volume Capacity",
-rjl:"Volume Capacity",
-qk:"Empty",
-tlc:"Feed Pushcart",
-status:'Status',
-ls:"Pens",
-clbm:"Vehicle Code",
-tljh:"Feed Push Plan",
+  fuzhi: "Copy",
+  taici: "Parity",
+  pjmrts: "Average Lactation Days",
+  hyts: "Pregnancy Duration",
+  cnl: "Milk Production (kg per head)",
+  jlr: "Recorder",
+  sxsj: "Effective Time",
+  sxrq: "Effective Date",
+  jlr: "Recorder",
+  lsxx: "Pen Information",
+  sxlb: "Livestock Categories:",
+  nts: "Head Count of Cattle:",
 
-scc:"Delete",
-slclfs:"Leftover Material Disposal Method",
-ztls:"Transfer to Pens",
-cci:"Train:",
-lsname:"Pens Name:",
-
-fuzhi:'Copy',
-taici:"Parity",
-pjmrts:"Average Lactation Days",
-hyts:"Pregnancy Duration",
-cnl:"产奶量(kg/头)",
-jlr:"Recorder",
-sxsj:"Effective Time",
-sxrq:"Effective Date",
-jlr:"Recorder:",
-lsxx:"Pen Information",
-sxlb:"livestock categories:",
-nts:"Head Count of Cattle:",
-
-
-}
+  xyzlg: "Fresh weight(g)",
+  hgzlg: "Dried weight(g)",
+  llgwz: "Theoretical dry matter",
+  sjgwz: "Actual dry matter",
+  czrq: "Operation Date",
+  sfsl: "Is There Leftover Feed",
+  zdllwxs: "Up to two decimal places",
+  msg1: "Weight cannot be less than 0, and up to two decimal places are allowed",
+  msg2: "Dried weight cannot be greater than fresh weight",
+  msg3: "Please select formula dry matter",
+  msg4: "The formula dry matter for this pen and shift already exists today, duplication is not allowed",
+  msg5: "Copy has been canceled",
+  tHeader: [
+    "Pen Name",
+    "Shift",
+    "Fresh Sample Weight (g)",
+    "Dried Weight (g)",
+    "Theoretical Dry Matter",
+    "Actual Dry Matter",
+    "Operator",
+    "Operation Date",
+    "Is There Leftover Feed",
+  ],
+  filterVal: [
+    "Pen Name",
+    "Shift",
+    "Fresh Sample Weight (g)",
+    "Dried Weight (g)",
+    "Operator",
+    "Operation Date",
+    "Is There Leftover Feed (Yes/No)",
+    "Error Message",
+  ],
+  formName: "Formula Dry Matter",
+  filename: "Formula Dry Matter Import Error Messages",
+  dyb1: "First Shift",
+  dyb2: "Second Shift",
+  dyb3: "Third Shift",
+  dyb4: "Fourth Shift",
+  dyb5: "Fifth Shift",
+  dyb6: "Sixth Shift",
+  docname: "Dry Matter Formula Import Template.xlsx",
+  historyName: "Formula Dry Matter Modification Record",
+  create: "Add",
+  update: "Edit",
+  Operator: "Operator",
+};

+ 1 - 1
src/lang/zn/langModule/common.js

@@ -21,7 +21,7 @@ export default {
   openGuide: "开启新手引导",
   requestMsg: "请求超时",
   logoIcon: require("../../../assets/images/logo-icon.jpg"),
-  logoM: require("../../../assets/images/logo-zn-m.png"),
+  logoM: require("../../../assets/images/logo-en-m.png"),
   relogo: "重新登陆", //重新登陆
   conLogo: "确认注销",
   watchMore: "查看更多",

+ 114 - 130
src/lang/zn/langModule/formulationEvaluation.js

@@ -1,132 +1,116 @@
-export default{
-  qsrpfmc:"请输入配方名称",
-  xzls:'请选择栏舍',
-  pfmbzb:"配方模板/指标",
-  nts:"牛头数",
-  tmrl:"TMR料",
-  csl:"采食量",
-  cnjn:"产奶净能(MJ)",
-
-
-   nnnldw:"奶牛能量单位(NND)",
-   cdb:"粗蛋白(g)",
-   pfl:"配方量",
-   l:"磷(g)",
-   cnjndm:"产奶净能(MCal/DM)",
-   zf:"脂肪(%DM)",
-   df:'淀粉(%DM)',
-   dnf:"NDF(%DM)",
-   clzdnf:"粗料中的NDF(%DM)",
-   adf:'ADF(%DM)',
-   ca:'钙(%DM)',
-   lin:"磷(%DM)",
-   jcb:"精粗比(%)",
-   lszb:"栏舍/指标",
-   nnxq:"奶牛需要",
-   gwz:"干物质(kg)",
-   slzhl:"(4.0)饲料转化效率(kg/DM)",
-
-   rlcb:"日粮成本(元)",
-   gwzcb:"干物质成本(元/公斤)",
-   rgjncb:"日公斤奶成本(元)",
-   lssjjl:"历史记录时间",
-   pfmbb:"配方模板表",
-   pflx:"配方类型",
-   sfqy:"是否启用",
-   ly:"来源",
-   pfmc:"配方名称",
-   remark:"备注",
-cancel:'取消',
-search:'搜索',
-add:"新增",
-pfsc:"配方上传",
-enter:"导入",
-out:"导出",
-outmb:"导出模板",
-outsj:"导出数据",
-pfjl:"配方记录",
-xh:"序号",
-pfbm:"配方编码",
-rl:"容重(kg/m³)",
-pfys:"配方颜色",
-
-bbh:'版本号',
-nqlb:"牛群类别",
-tzzly:"跳转重量域(kg)",
-pfbqb:"配方详情表",
-pfmc:"配方名称",
-cclx:"牲畜类别",
-
-del:"删除",
-hcyhl:"合成预混料",
-ggsx:"更改顺序",
-save:'保存',
-slmc:"饲料名称",
-slzmc:"饲料组名称",
-reset:"重量",
-reset1:"重量(KG)",
-jbys:"搅拌延时",
-sfsdntbs:"是否锁定牛头数比例",
-sort:"顺序",
-hide:"隐藏",
-fd:'放大',
-sx:'缩小',
-jbys:"搅拌延时(min)",
-yxyspc:"允许延时偏差(min)",
-jlqtj:"加料前停机",
-slz:"饲料组",
-bbsj:"版本时间",
-feed:"饲料",
-xgsj:"修改时间",
-xgyh:"修改用户",
-slmcdw:"饲料名称(单位:kg)",
-slzhl1:"(3.5)饲料转化效率(kg/DM)",
-shi:'是',
-fou:"否",
-
-tHeader:['配方名称', '配方编码', '牲畜类别', '配方类型', '来源', '备注', '是否启用', '饲料组', '饲料名称', '重量(kg)', '搅拌延时(min)', '是否锁定牛头数比例', '顺序'],
-tHeader1:[
-  '配方名称', '牲畜类别', '配方类型', '备注', '饲料组', '饲料名称', '重量(kg)', '搅拌延时(min)', '是否锁定牛头数比例', '错误信息'
+export default {
+  qsrpfmc: "请输入配方名称",
+  xzls: "请选择栏舍",
+  pfmbzb: "配方模板/指标",
+  nts: "牛头数",
+  tmrl: "TMR料",
+  csl: "采食量",
+  cnjn: "产奶净能(MJ)",
+
+  nnnldw: "奶牛能量单位(NND)",
+  cdb: "粗蛋白(g)",
+  pfl: "配方量",
+  l: "磷(g)",
+  cnjndm: "产奶净能(MCal/DM)",
+  zf: "脂肪(%DM)",
+  df: "淀粉(%DM)",
+  dnf: "NDF(%DM)",
+  clzdnf: "粗料中的NDF(%DM)",
+  adf: "ADF(%DM)",
+  ca: "钙(%DM)",
+  lin: "磷(%DM)",
+  jcb: "精粗比(%)",
+  lszb: "栏舍/指标",
+  nnxq: "奶牛需要",
+  gwz: "干物质(kg)",
+  slzhl: "(4.0)饲料转化效率(kg/DM)",
+
+  rlcb: "日粮成本(元)",
+  gwzcb: "干物质成本(元/公斤)",
+  rgjncb: "日公斤奶成本(元)",
+  lssjjl: "历史记录时间",
+  pfmbb: "配方模板表",
+  pflx: "配方类型",
+  sfqy: "是否启用",
+  ly: "来源",
+  pfmc: "配方名称",
+  remark: "备注",
+  cancel: "取消",
+  search: "搜索",
+  add: "新增",
+  pfsc: "配方上传",
+  enter: "导入",
+  out: "导出",
+  outmb: "导出模板",
+  outsj: "导出数据",
+  pfjl: "配方记录",
+  xh: "序号",
+  pfbm: "配方编码",
+  rl: "容重(kg/m³)",
+  pfys: "配方颜色",
+
+  bbh: "版本号",
+  nqlb: "牛群类别",
+  tzzly: "跳转重量域(kg)",
+  pfbqb: "配方详情表",
+  pfmc: "配方名称",
+  cclx: "牲畜类别",
+
+  del: "删除",
+  hcyhl: "合成预混料",
+  ggsx: "更改顺序",
+  save: "保存",
+  slmc: "饲料名称",
+  slzmc: "饲料组名称",
+  reset: "重量",
+  reset1: "重量(KG)",
+  jbys: "搅拌延时",
+  sfsdntbs: "是否锁定牛头数比例",
+  sort: "顺序",
+  hide: "隐藏",
+  fd: "放大",
+  sx: "缩小",
+  jbys: "搅拌延时(min)",
+  yxyspc: "允许延时偏差(min)",
+  jlqtj: "加料前停机",
+  slz: "饲料组",
+  bbsj: "版本时间",
+  feed: "饲料",
+  xgsj: "修改时间",
+  xgyh: "修改用户",
+  slmcdw: "饲料名称(单位:kg)",
+  slzhl1: "(3.5)饲料转化效率(kg/DM)",
+  shi: "是",
+  fou: "否",
+
+  tHeader: [
+    "配方名称",
+    "配方编码",
+    "牲畜类别",
+    "配方类型",
+    "来源",
+    "备注",
+    "是否启用",
+    "饲料组",
+    "饲料名称",
+    "重量(kg)",
+    "搅拌延时(min)",
+    "是否锁定牛头数比例",
+    "顺序",
+  ],
+  tHeader1: [
+    "配方名称",
+    "牲畜类别",
+    "配方类型",
+    "备注",
+    "饲料组",
+    "饲料名称",
+    "重量(kg)",
+    "搅拌延时(min)",
+    "是否锁定牛头数比例",
+    "错误信息",
   ],
 
-  cdb1:"粗蛋白(%DM)"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
+  cdb1: "粗蛋白(%DM)",
+  gwzzl: "干物质重量",
+};

+ 84 - 84
src/lang/zn/langModule/menus.js

@@ -1,85 +1,85 @@
 export default {
-    首页: '首页',
-    //
-    统计分析:'统计分析',
-      仪表盘:'仪表盘',
-      配方统计:'配方统计',
-      推料计划分析:'推料计划分析',
-      过程分析:"过程分析",
-      图表:'图表',
-      准确性分析:'准确性分析',
-      饲喂效率:'饲喂效率',
-      库存管理:'库存管理',
-      硬件测试:'硬件测试',
-      配方评估:'配方评估',
-      //
-      配方计划:'配方计划',
-      配方模板:'配方模板',
-      配方下发:'配方下发',
-      栏舍配方:'栏舍配方',
-      预混计划:'预混计划',
-      撒料计划:'撒料计划',
-      剩料计划:'剩料计划',
-      日执行计划:'日执行计划',
-      推料计划:'推料计划',
-      配方评估:'配方评估',
-      //
-      栏舍生产:'栏舍生产',
-      栏舍生产性能:'栏舍生产性能',
-      栏舍剩料记录:'栏舍剩料记录',
-      配方干物质:'配方干物质',
-      宾州筛:'宾州筛',
-      粪便筛:'粪便筛',
-      粪便评分:'粪便评分',
-      体况评分:'体况评分',
-      值班记录:'值班记录',
-      栏舍剩料记录:"栏舍剩料记录",
-     //
-     库存管理:'库存管理',
-     入库管理:'入库管理',
-     系统用量:'系统用量',
-     人工用量:'人工用量',
-     盘点单:'盘点单',
-     库存预警:'库存预警',
-     库存统计:'库存统计',
-     饲料合同:'饲料合同',
-     //
-     基础数据:'基础数据',
-     驾驶员:'驾驶员',
-     TMR设备:'TMR设备',
-     其他设备管理:'其他设备管理',
-     牲畜类别:'牲畜类别',
-     舍组栏:'舍组栏',
-     饲料分类:'饲料分类',
-     饲料表:'饲料表',
-     供应商管理:'供应商管理',
-     标准参数:'标准参数',
-     默认参数配置:'默认参数配置',
-     sap日志:'sap日志',
-     //
-     系统管理:'系统管理',
-     集团信息:'集团信息',
-     图表2:'图表2',
-     仪表盘2:'仪表盘2',
-     数据同步:'数据同步',
-     牧场信息:'牧场信息',
-     角色管理:'角色管理',
-     用户管理:'用户管理',
-     操作日志:'操作日志',
-     仪表盘管理:'仪表盘管理',
-     运营管理:'运营管理',
-     标签管理:'标签管理',
-     通知管理:'通知管理',
-     消息接收:'消息接收',
-     提醒设置:'提醒设置',
-     //
-     后台管理:'后台管理',
-     硬件调用:'硬件调用',
-     菜单管理:'菜单管理',
-     字典管理:'字典管理',
-     SQL管理:'SQL管理',
-     测试:'测试',
-     消息管理:'消息管理',
-     剩料配置:"剩料配置",
-
-  }
+  首页: "首页",
+  //
+  统计分析: "统计分析",
+  仪表盘: "仪表盘",
+  配方统计: "配方统计",
+  推料计划分析: "推料计划分析",
+  过程分析: "过程分析",
+  图表: "图表",
+  准确性分析: "准确性分析",
+  饲喂效率: "饲喂效率",
+  库存管理: "库存管理",
+  硬件测试: "硬件测试",
+  配方评估: "配方评估",
+  //
+  配方计划: "配方计划",
+  配方模板: "配方模板",
+  配方下发: "配方下发",
+  栏舍配方: "栏舍配方",
+  预混计划: "预混计划",
+  撒料计划: "撒料计划",
+  剩料计划: "剩料计划",
+  日执行计划: "日执行计划",
+  推料计划: "推料计划",
+  配方评估: "配方评估",
+  //
+  栏舍生产: "栏舍生产",
+  栏舍生产性能: "栏舍生产性能",
+  栏舍剩料记录: "栏舍剩料记录",
+  配方干物质: "配方干物质",
+  宾州筛: "宾州筛",
+  粪便筛: "粪便筛",
+  粪便评分: "粪便评分",
+  体况评分: "体况评分",
+  值班记录: "值班记录",
+  栏舍剩料记录: "栏舍剩料记录",
+  剩料使用: "剩料使用",
+  //
+  库存管理: "库存管理",
+  入库管理: "入库管理",
+  系统用量: "系统用量",
+  人工用量: "人工用量",
+  盘点单: "盘点单",
+  库存预警: "库存预警",
+  库存统计: "库存统计",
+  饲料合同: "饲料合同",
+  //
+  基础数据: "基础数据",
+  驾驶员: "驾驶员",
+  TMR设备: "TMR设备",
+  其他设备管理: "其他设备管理",
+  牲畜类别: "牲畜类别",
+  舍组栏: "舍组栏",
+  饲料分类: "饲料分类",
+  饲料表: "饲料表",
+  供应商管理: "供应商管理",
+  标准参数: "标准参数",
+  默认参数配置: "默认参数配置",
+  sap日志: "sap日志",
+  //
+  系统管理: "系统管理",
+  集团信息: "集团信息",
+  图表2: "图表2",
+  仪表盘2: "仪表盘2",
+  数据同步: "数据同步",
+  牧场信息: "牧场信息",
+  角色管理: "角色管理",
+  用户管理: "用户管理",
+  操作日志: "操作日志",
+  仪表盘管理: "仪表盘管理",
+  运营管理: "运营管理",
+  标签管理: "标签管理",
+  通知管理: "通知管理",
+  消息接收: "消息接收",
+  提醒设置: "提醒设置",
+  //
+  后台管理: "后台管理",
+  硬件调用: "硬件调用",
+  菜单管理: "菜单管理",
+  字典管理: "字典管理",
+  SQL管理: "SQL管理",
+  测试: "测试",
+  消息管理: "消息管理",
+  剩料配置: "剩料配置",
+};

+ 45 - 0
src/lang/zn/langModule/premixedPlan.js

@@ -64,4 +64,49 @@ export default {
   lsxx: "栏舍信息",
   sxlb: "牲畜类别:",
   nts: "牛头数:",
+
+  xyzlg: "鲜样重量(g):",
+  hgzlg: "烘干重量(g):",
+  llgwz: "理论干物质:",
+  sjgwz: "实际干物质:",
+  czrq: "操作日期:",
+  sfsl: "是否剩料:",
+  zdllwxs: "最多两位小数",
+  msg1: "重量不可小于0,最多保留俩位小数",
+  msg2: "烘干重量不可大于鲜样重量",
+  msg3: "请选择配方干物质",
+  msg4: "该栏舍该班次今日配方干物质已存在,不可重复生成",
+  msg5: "已取消复制",
+  tHeader: [
+    "栏舍名称",
+    "班次",
+    "鲜样重量(g)",
+    "烘干重量(g)",
+    "理论干物质",
+    "实际干物质",
+    "操作人",
+    "操作日期",
+    "是否剩料",
+  ],
+  filterVal: [
+    "栏舍名称",
+    "班次",
+    "鲜样重量(g)",
+    "烘干重量(g)",
+    "操作人",
+    "操作日期",
+    "是否剩料(是/否)",
+    "error_msg",
+  ],
+  formName: "配方干物质配方干物质",
+  filename: "配方干物质导入报错信息",
+  dyb1: "第一班",
+  dyb2: "第二班",
+  dyb3: "第三班",
+  dyb4: "第四班",
+  dyb5: "第五班",
+  dyb6: "第六班",
+  docname: "配方干物质导入模板.xlsx",
+  historyName: "配方干物质修改记录",
+  Operator: "操作人",
 };

+ 5 - 5
src/utils/request.js

@@ -16,9 +16,9 @@ var reg =
   /(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)/;
 var browserUrl = window.location.hostname;
 console.log("========url===", reg.test(browserUrl));
-if (reg.test(browserUrl)) {
-  URL = window.location.protocol + "//" + browserUrl + ":8081/";
-}
+// if (reg.test(browserUrl)) {
+//   URL = window.location.protocol + "//" + browserUrl + ":8081/";
+// }
 
 Cookies.set("url", URL);
 console.log(process.env.VUE_APP_BASE_API, "===========URL1111");
@@ -81,7 +81,7 @@ service.interceptors.response.use(
     if (res.code !== 200) {
       Message({
         // message: res.msg + res.code,
-        message: Vue.$t("common.requestMsg"),
+        message: res.msg,
         type: "error",
         duration: 5 * 1000,
       });
@@ -127,7 +127,7 @@ service.interceptors.response.use(
     if (config.__retryCount >= 3) {
       // Message({ message:error.message, type: 'error', duration: 5 * 1000 })
       Message({
-        message: Vue.$t("common.requestMsg"),
+        message: "Request Timeout",
         type: "error",
         duration: 5 * 1000,
       });

File diff suppressed because it is too large
+ 289 - 289
src/views/formulationPlan/materialIssuancePlan/index.vue


File diff suppressed because it is too large
+ 848 - 144
src/views/formulationPlan/recipeTemplate/index.vue


+ 352 - 166
src/views/shedProduction/formulaDryMatter/historyRecord.vue

@@ -1,9 +1,23 @@
 <template>
   <div class="app-table">
     <div class="search">
-      <el-date-picker v-model="table.getdataListParm.parammaps.changeTime" :clearable="true" class="filter-item" type="date" style="width: 250px;" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="年/月/日" @change="changeTime" />
-      <el-button class="successBorder" @click="form_search">{{$t('common.query')}}</el-button>
-      <el-button class="successBorder" @click="handleRefresh">{{$t('common.reset')}}</el-button>
+      <el-date-picker
+        v-model="table.getdataListParm.parammaps.changeTime"
+        :clearable="true"
+        class="filter-item"
+        type="date"
+        style="width: 250px"
+        format="yyyy-MM-dd"
+        value-format="yyyy-MM-dd"
+        placeholder="年/月/日"
+        @change="changeTime"
+      />
+      <el-button class="successBorder" @click="form_search">{{
+        $t("common.query")
+      }}</el-button>
+      <el-button class="successBorder" @click="handleRefresh">{{
+        $t("common.reset")
+      }}</el-button>
     </div>
     <div class="table">
       <el-table
@@ -14,33 +28,109 @@
         border
         fit
         highlight-current-row
-        style="width: 100%;"
+        style="width: 100%"
         :row-style="rowStyle"
         :cell-style="cellStyle"
         class="elTable table-fixed"
         :span-method="objectSpanMethod"
       >
-        <el-table-column :key="1" :label="$t('formulationEvaluation.xh')" prop="sort" align="center" width="50px" />
-        <el-table-column :key="2"  :label="$t('errorAnalysis.isHouseName')"  prop="barname" min-width="90px" align="center" />
-        <el-table-column :key="3" :label="$t('errorAnalysis.isTrainNumber')"  prop="time1" min-width="90px" align="center" />
-        <el-table-column :key="4" label="鲜重重量(g)" prop="freshweight" min-width="90px" align="center" />
-        <el-table-column :key="5" label="烘干重量(g)" prop="dryweight" min-width="90px" align="center" />
-        <el-table-column :key="6" :label="$t('message.msg92')" prop="thoweight" min-width="90px" align="center" />
-        <el-table-column :key="7" :label="$t('message.msg93')"  prop="actweight" min-width="90px" align="center" />
-        <el-table-column :key="8"  :label="$t('errorAnalysis.cz')" prop="operation" align="center" width="300" class-name="small-padding fixed-width" fixed="right">
-          <template slot-scope="{row}">
-            <a class="correcting" @click="form_seeHistory (row)">{{ row.operation }}</a>
+        <el-table-column
+          :key="1"
+          :label="$t('formulationEvaluation.xh')"
+          prop="sort"
+          align="center"
+          width="50px"
+        />
+        <el-table-column
+          :key="2"
+          :label="$t('errorAnalysis.isHouseName')"
+          prop="barname"
+          min-width="90px"
+          align="center"
+        />
+        <el-table-column
+          :key="3"
+          :label="$t('errorAnalysis.isTrainNumber')"
+          prop="time1"
+          min-width="90px"
+          align="center"
+        />
+        <el-table-column
+          :key="4"
+          :label="$t('premixedPlan.xyzlg')"
+          prop="freshweight"
+          min-width="90px"
+          align="center"
+        />
+        <el-table-column
+          :key="5"
+          :label="$t('premixedPlan.hgzlg')"
+          prop="dryweight"
+          min-width="90px"
+          align="center"
+        />
+        <el-table-column
+          :key="6"
+          :label="$t('premixedPlan.llgwz')"
+          prop="thoweight"
+          min-width="90px"
+          align="center"
+        />
+        <el-table-column
+          :key="7"
+          :label="$t('premixedPlan.sjgwz')"
+          prop="actweight"
+          min-width="90px"
+          align="center"
+        />
+        <el-table-column
+          :key="8"
+          :label="$t('errorAnalysis.cz')"
+          prop="operation"
+          align="center"
+          width="300"
+          class-name="small-padding fixed-width"
+          fixed="right"
+        >
+          <template slot-scope="{ row }">
+            <a class="correcting" @click="form_seeHistory(row)">{{
+              row.operation
+            }}</a>
           </template>
         </el-table-column>
       </el-table>
-      <pagination2 v-show="table.total>0" :total="table.total" :page.sync="table.getdataListParm.offset" :limit.sync="table.getdataListParm.pagecount" @pagination="getList" />
+      <pagination2
+        v-show="table.total > 0"
+        :total="table.total"
+        :page.sync="table.getdataListParm.offset"
+        :limit.sync="table.getdataListParm.pagecount"
+        @pagination="getList"
+      />
     </div>
-    <el-dialog :visible.sync="seeHistory.dialogFormVisible" append-to-body :title="textMap[seeHistory.dialogStatus]" :close-on-click-modal="false" width="90%">
+    <el-dialog
+      :visible.sync="seeHistory.dialogFormVisible"
+      append-to-body
+      :title="textMap[seeHistory.dialogStatus]"
+      :close-on-click-modal="false"
+      width="90%"
+    >
       <div class="seeHistory">
         <div class="search">
-          <el-date-picker v-model="seeHistory.getdataListParm.parammaps.inputDatetime" class="inputDatetime filter-item" type="daterange" :range-separator="$t('common.to')"  :start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" style="width: 250px;" />
-          <el-button class="successBorder" @click="form_search2">{{$t('common.query')}}</el-button>
-          <el-button class="successBorder" @click="handleRefresh2">{{$t('common.reset')}}</el-button>
+          <el-date-picker
+            v-model="seeHistory.getdataListParm.parammaps.inputDatetime"
+            class="inputDatetime filter-item"
+            type="daterange"
+            :range-separator="$t('common.to')"
+            :start-placeholder="$t('common.startTime')"
+            :end-placeholder="$t('common.endTime')"
+            style="width: 250px"
+          />
+          <el-button class="successBorder" @click="form_search2">{{
+            $t("common.query")
+          }}</el-button>
+          <el-button class="successBorder" @click="handleRefresh2">{{
+            $t("common.reset")
+          }}</el-button>
         </div>
         <div class="table">
           <el-table
@@ -51,25 +141,76 @@
             border
             fit
             highlight-current-row
-            style="width: 100%;"
+            style="width: 100%"
             :row-style="rowStyle"
             :cell-style="cellStyle"
             class="elTable table-fixed"
             :span-method="objectSpanMethod2"
           >
-            <el-table-column :key="1" :label="$t('formulationEvaluation.xh')" prop="sort" align="center" width="50px" />
-            <el-table-column :key="2" :label="$t('formulationEvaluation.xgsj')" prop="changeTime1" min-width="90px" align="center" />
-            <el-table-column :key="3" :label="$t('errorAnalysis.isTrainNumber')"  prop="times" min-width="90px" align="center" />
-            <el-table-column :key="4" label="鲜重重量(g)" prop="times" min-width="90px" align="center" />
-            <el-table-column :key="5" label="烘干重量(g)" prop="times" min-width="90px" align="center" />
-            <el-table-column :key="6" :label="$t('message.msg92')" prop="times" min-width="90px" align="center" />
-            <el-table-column :key="7" :label="$t('message.msg93')"  prop="times" min-width="90px" align="center" />
-
+            <el-table-column
+              :key="1"
+              :label="$t('formulationEvaluation.xh')"
+              prop="sort"
+              align="center"
+              width="50px"
+            />
+            <el-table-column
+              :key="2"
+              :label="$t('formulationEvaluation.xgsj')"
+              prop="changeTime1"
+              min-width="90px"
+              align="center"
+            />
+            <el-table-column
+              :key="3"
+              :label="$t('errorAnalysis.isTrainNumber')"
+              prop="times"
+              min-width="90px"
+              align="center"
+            />
+            <el-table-column
+              :key="4"
+              :label="$t('premixedPlan.xyzlg')"
+              prop="times"
+              min-width="90px"
+              align="center"
+            />
+            <el-table-column
+              :key="5"
+              :label="$t('premixedPlan.hgzlg')"
+              prop="times"
+              min-width="90px"
+              align="center"
+            />
+            <el-table-column
+              :key="6"
+              :label="$t('premixedPlan.llgwz')"
+              prop="times"
+              min-width="90px"
+              align="center"
+            />
+            <el-table-column
+              :key="7"
+              :label="$t('premixedPlan.sjgwz')"
+              prop="times"
+              min-width="90px"
+              align="center"
+            />
           </el-table>
-          <pagination2 v-show="seeHistory.total>0" :total="seeHistory.total" :page.sync="seeHistory.getdataListParm.offset" :limit.sync="seeHistory.getdataListParm.pagecount" @pagination="getSeeHistoryList" />
+          <pagination2
+            v-show="seeHistory.total > 0"
+            :total="seeHistory.total"
+            :page.sync="seeHistory.getdataListParm.offset"
+            :limit.sync="seeHistory.getdataListParm.pagecount"
+            @pagination="getSeeHistoryList"
+          />
         </div>
         <div slot="footer" class="dialog-footer">
-          <el-button class="cancelClose cancelClose1" @click="seeHistory.dialogFormVisible = false; ">{{$t('common.closed')}}</el-button>
+          <el-button
+            class="cancelClose cancelClose1"
+            @click="seeHistory.dialogFormVisible = false"
+            >{{ $t("common.closed") }}</el-button
+          >
         </div>
       </div>
     </el-dialog>
@@ -77,29 +218,33 @@
 </template>
 
 <script>
-import { GetDataByName } from '@/api/common'
-import draggable from 'vuedraggable'
-import Cookies from 'js-cookie'
-import { parseTime, handleTableSpan, handleObjectSpanMethod } from '@/utils/index.js'
-import Pagination2 from '@/components/Pagination2'
+import { GetDataByName } from "@/api/common";
+import draggable from "vuedraggable";
+import Cookies from "js-cookie";
+import {
+  parseTime,
+  handleTableSpan,
+  handleObjectSpanMethod,
+} from "@/utils/index.js";
+import Pagination2 from "@/components/Pagination2";
 export default {
-  name: 'MaterialIssuancePlan',
-  display: 'Two list header slot',
+  name: "MaterialIssuancePlan",
+  display: "Two list header slot",
   order: 14,
   components: { Pagination2 },
   data() {
     return {
       table: {
         getdataListParm: {
-          name: 'getFtdryHistory',
+          name: "getFtdryHistory",
           page: 1,
           offset: 1,
           pagecount: 12,
-          returntype: 'Map',
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            changeTime: ''
-          }
+            pastureid: Cookies.get("pastureid"),
+            changeTime: "",
+          },
         },
         list: [],
         total: 0,
@@ -107,212 +252,253 @@ export default {
         listLoading: false,
         temp: {},
         changeList: [],
-        startObj: {}
+        startObj: {},
       },
       spanObj: {},
-      mergekeys: ['barname', 'operation'],
+      mergekeys: ["barname", "operation"],
       textMap: {
-        seeHistory: '配方干物质修改记录'
+        seeHistory: this.$t("premixedPlan.historyName"),
       },
       seeHistory: {
-        dialogFormVisible: false, dialogStatus: '',
-        total: 0, tableKey: 0, listLoading: false,
+        dialogFormVisible: false,
+        dialogStatus: "",
+        total: 0,
+        tableKey: 0,
+        listLoading: false,
         getdataListParm: {
-          name: 'getFtdryHistoryBar', page: 1, offset: 1, pagecount: 10, returntype: 'Map',
+          name: "getFtdryHistoryBar",
+          page: 1,
+          offset: 1,
+          pagecount: 10,
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            barid: '',
-            inputDatetime: '',
-            time1: '',
-            time2: ''
-          }
-        }
+            pastureid: Cookies.get("pastureid"),
+            barid: "",
+            inputDatetime: "",
+            time1: "",
+            time2: "",
+          },
+        },
       },
       spanObj2: {},
-      mergekeys2: ['changeTime1'],
-      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
-      cellStyle: { padding: 0 + 'px' }
-    }
+      mergekeys2: ["changeTime1"],
+      rowStyle: { maxHeight: 30 + "px", height: 30 + "px" },
+      cellStyle: { padding: 0 + "px" },
+    };
   },
   created() {
-    this.getList()
+    this.getList();
   },
   methods: {
-    changeTime(item){
-      console.log(item)
-      if(item == null){
-        this.table.getdataListParm.parammaps.changeTime = ''
+    changeTime(item) {
+      console.log(item);
+      if (item == null) {
+        this.table.getdataListParm.parammaps.changeTime = "";
       }
     },
     changeDate() {
-      this.getList()
+      this.getList();
     },
     getList() {
-      this.table.listLoading = true
-      GetDataByName(this.table.getdataListParm).then(response => {
-        console.log('table数据', response.data.list)
+      this.table.listLoading = true;
+      GetDataByName(this.table.getdataListParm).then((response) => {
+        console.log("table数据", response.data.list);
         if (response.data.list !== null) {
-          this.table.list = response.data.list
-          this.handleSpan()
-          this.table.pageNum = response.data.pageNum
-          this.table.pageSize = response.data.pageSize
-          this.table.total = response.data.total
+          this.table.list = response.data.list;
+          this.handleSpan();
+          this.table.pageNum = response.data.pageNum;
+          this.table.pageSize = response.data.pageSize;
+          this.table.total = response.data.total;
         } else {
-          this.table.list = []
+          this.table.list = [];
         }
         setTimeout(() => {
-          this.table.listLoading = false
-        }, 100)
-      })
+          this.table.listLoading = false;
+        }, 100);
+      });
     },
     handleSpan() {
-      this.mergekeys.forEach(key => {
-        this.spanObj[key] = []
-        let position = 0
+      this.mergekeys.forEach((key) => {
+        this.spanObj[key] = [];
+        let position = 0;
         this.table.list.forEach((item, index) => {
           if (index === 0) {
-            this.spanObj[key].push(1)
-            position = 0
+            this.spanObj[key].push(1);
+            position = 0;
           } else {
-            if (key == 'operation') {
-              if (this.table.list[index][key] === this.table.list[index - 1][key] && this.table.list[index]['barname'] === this.table.list[index - 1]['barname']) {
-                this.spanObj[key][position] += 1
-                this.spanObj[key].push(0)
+            if (key == "operation") {
+              if (
+                this.table.list[index][key] ===
+                  this.table.list[index - 1][key] &&
+                this.table.list[index]["barname"] ===
+                  this.table.list[index - 1]["barname"]
+              ) {
+                this.spanObj[key][position] += 1;
+                this.spanObj[key].push(0);
               } else {
-                this.spanObj[key].push(1)
-                position = index
+                this.spanObj[key].push(1);
+                position = index;
               }
             } else {
-              if (this.table.list[index][key] === this.table.list[index - 1][key]) {
-                this.spanObj[key][position] += 1
-                this.spanObj[key].push(0)
+              if (
+                this.table.list[index][key] === this.table.list[index - 1][key]
+              ) {
+                this.spanObj[key][position] += 1;
+                this.spanObj[key].push(0);
               } else {
-                this.spanObj[key].push(1)
-                position = index
+                this.spanObj[key].push(1);
+                position = index;
               }
             }
           }
-        })
-      })
+        });
+      });
     },
     objectSpanMethod({ row, column, rowIndex, columnIndex }) {
       for (let i = 0; i < this.mergekeys.length; i++) {
         if (column.property === this.mergekeys[i]) {
-          const _row = this.spanObj[this.mergekeys[i]][rowIndex]
-          const _col = _row > 0 ? 1 : 0
+          const _row = this.spanObj[this.mergekeys[i]][rowIndex];
+          const _col = _row > 0 ? 1 : 0;
           return {
             rowspan: _row,
-            colspan: _col
-          }
+            colspan: _col,
+          };
         }
       }
     },
     form_search() {
-      console.log(this.table.getdataListParm.parammaps.changeTime)
-      if (this.table.getdataListParm.parammaps.changeTime == '' || this.table.getdataListParm.parammaps.changeTime == null ) {
-        this.table.getdataListParm.parammaps.changeTime = ''
+      console.log(this.table.getdataListParm.parammaps.changeTime);
+      if (
+        this.table.getdataListParm.parammaps.changeTime == "" ||
+        this.table.getdataListParm.parammaps.changeTime == null
+      ) {
+        this.table.getdataListParm.parammaps.changeTime = "";
       } else {
-        this.table.getdataListParm.parammaps.changeTime = parseTime(this.table.getdataListParm.parammaps.changeTime, '{y}-{m}-{d}')
+        this.table.getdataListParm.parammaps.changeTime = parseTime(
+          this.table.getdataListParm.parammaps.changeTime,
+          "{y}-{m}-{d}"
+        );
       }
-      this.getList()
+      this.getList();
     },
     handleRefresh() {
-      this.table.getdataListParm.parammaps.changeTime = ''
-      this.getList()
+      this.table.getdataListParm.parammaps.changeTime = "";
+      this.getList();
     },
     form_seeHistory(row) {
-      console.log(row)
-      this.textMap.seeHistory = '配方干物质修改记录——栏舍:' + row.barname
-      this.seeHistory.dialogFormVisible = true
-      this.seeHistory.dialogStatus = 'seeHistory'
-      this.seeHistory.getdataListParm.parammaps.barid = row.barids
-      this.seeHistory.getdataListParm.parammaps.inputDatetime = ''
-      this.seeHistory.getdataListParm.parammaps.time1 = ''
-      this.seeHistory.getdataListParm.parammaps.time2 = ''
-      this.getSeeHistoryList()
+      console.log(row);
+      this.textMap.seeHistory =
+        this.$t("premixedPlan.historyName") + row.barname;
+
+      this.seeHistory.dialogFormVisible = true;
+      this.seeHistory.dialogStatus = "seeHistory";
+      this.seeHistory.getdataListParm.parammaps.barid = row.barids;
+      this.seeHistory.getdataListParm.parammaps.inputDatetime = "";
+      this.seeHistory.getdataListParm.parammaps.time1 = "";
+      this.seeHistory.getdataListParm.parammaps.time2 = "";
+      this.getSeeHistoryList();
     },
     getSeeHistoryList() {
-      this.seeHistory.listLoading = true
-      GetDataByName(this.seeHistory.getdataListParm).then(response => {
-        console.log('table数据', response.data.list)
+      this.seeHistory.listLoading = true;
+      GetDataByName(this.seeHistory.getdataListParm).then((response) => {
+        console.log("table数据", response.data.list);
         if (response.data.list !== null) {
-          this.seeHistory.list = response.data.list
-          this.handleSpan2()
-          this.seeHistory.pageNum = response.data.pageNum
-          this.seeHistory.pageSize = response.data.pageSize
-          this.seeHistory.total = response.data.total
+          this.seeHistory.list = response.data.list;
+          this.handleSpan2();
+          this.seeHistory.pageNum = response.data.pageNum;
+          this.seeHistory.pageSize = response.data.pageSize;
+          this.seeHistory.total = response.data.total;
         } else {
-          this.seeHistory.list = []
+          this.seeHistory.list = [];
         }
         setTimeout(() => {
-          this.seeHistory.listLoading = false
-        }, 100)
-      })
+          this.seeHistory.listLoading = false;
+        }, 100);
+      });
     },
     handleSpan2() {
-      this.mergekeys2.forEach(key => {
-        this.spanObj2[key] = []
-        let position = 0
+      this.mergekeys2.forEach((key) => {
+        this.spanObj2[key] = [];
+        let position = 0;
         this.seeHistory.list.forEach((item, index) => {
           if (index === 0) {
-            this.spanObj2[key].push(1)
-            position = 0
+            this.spanObj2[key].push(1);
+            position = 0;
           } else {
-            if (key == 'operation') {
-              if (this.seeHistory.list[index][key] === this.seeHistory.list[index - 1][key] && this.seeHistory.list[index]['barname'] === this.seeHistory.list[index - 1]['barname']) {
-                this.spanObj2[key][position] += 1
-                this.spanObj2[key].push(0)
+            if (key == "operation") {
+              if (
+                this.seeHistory.list[index][key] ===
+                  this.seeHistory.list[index - 1][key] &&
+                this.seeHistory.list[index]["barname"] ===
+                  this.seeHistory.list[index - 1]["barname"]
+              ) {
+                this.spanObj2[key][position] += 1;
+                this.spanObj2[key].push(0);
               } else {
-                this.spanObj2[key].push(1)
-                position = index
+                this.spanObj2[key].push(1);
+                position = index;
               }
             } else {
-              if (this.seeHistory.list[index][key] === this.seeHistory.list[index - 1][key]) {
-                this.spanObj2[key][position] += 1
-                this.spanObj2[key].push(0)
+              if (
+                this.seeHistory.list[index][key] ===
+                this.seeHistory.list[index - 1][key]
+              ) {
+                this.spanObj2[key][position] += 1;
+                this.spanObj2[key].push(0);
               } else {
-                this.spanObj2[key].push(1)
-                position = index
+                this.spanObj2[key].push(1);
+                position = index;
               }
             }
           }
-        })
-      })
+        });
+      });
     },
     objectSpanMethod2({ row, column, rowIndex, columnIndex }) {
       for (let i = 0; i < this.mergekeys2.length; i++) {
         if (column.property === this.mergekeys2[i]) {
-          const _row = this.spanObj2[this.mergekeys2[i]][rowIndex]
-          const _col = _row > 0 ? 1 : 0
+          const _row = this.spanObj2[this.mergekeys2[i]][rowIndex];
+          const _col = _row > 0 ? 1 : 0;
           return {
             rowspan: _row,
-            colspan: _col
-          }
+            colspan: _col,
+          };
         }
       }
     },
     form_search2() {
-      if (this.seeHistory.getdataListParm.parammaps.inputDatetime !== '' && this.seeHistory.getdataListParm.parammaps.inputDatetime !== null) {
-        this.seeHistory.getdataListParm.parammaps.time1 = parseTime(this.seeHistory.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
-        this.seeHistory.getdataListParm.parammaps.time2 = parseTime(this.seeHistory.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
+      if (
+        this.seeHistory.getdataListParm.parammaps.inputDatetime !== "" &&
+        this.seeHistory.getdataListParm.parammaps.inputDatetime !== null
+      ) {
+        this.seeHistory.getdataListParm.parammaps.time1 = parseTime(
+          this.seeHistory.getdataListParm.parammaps.inputDatetime[0],
+          "{y}-{m}-{d}"
+        );
+        this.seeHistory.getdataListParm.parammaps.time2 = parseTime(
+          this.seeHistory.getdataListParm.parammaps.inputDatetime[1],
+          "{y}-{m}-{d}"
+        );
       } else {
-        this.seeHistory.getdataListParm.parammaps.inputDatetime = ''
-        this.seeHistory.getdataListParm.parammaps.time1 = ''
-        this.seeHistory.getdataListParm.parammaps.time2 = ''
+        this.seeHistory.getdataListParm.parammaps.inputDatetime = "";
+        this.seeHistory.getdataListParm.parammaps.time1 = "";
+        this.seeHistory.getdataListParm.parammaps.time2 = "";
       }
-      this.seeHistory.getdataListParm.offset = 1
-      this.getSeeHistoryList()
+      this.seeHistory.getdataListParm.offset = 1;
+      this.getSeeHistoryList();
     },
     handleRefresh2() {
-      this.seeHistory.getdataListParm.parammaps.time1 = ''
-      this.seeHistory.getdataListParm.parammaps.time2 = ''
-      this.seeHistory.getdataListParm.parammaps.inputDatetime = ''
-      this.getSeeHistoryList()
-    }
-  }
-}
+      this.seeHistory.getdataListParm.parammaps.time1 = "";
+      this.seeHistory.getdataListParm.parammaps.time2 = "";
+      this.seeHistory.getdataListParm.parammaps.inputDatetime = "";
+      this.getSeeHistoryList();
+    },
+  },
+};
 </script>
 
-<style  lang="scss" scoped>
- .search{margin-bottom: 10px;}
+<style lang="scss" scoped>
+.search {
+  margin-bottom: 10px;
+}
 </style>

+ 1137 - 489
src/views/shedProduction/formulaDryMatter/index.vue

@@ -1,35 +1,114 @@
 <template>
   <div class="app-container">
     <div class="search">
-      <el-date-picker v-model="table.getdataListParm.parammaps.inputDatetime" class="inputDatetime filter-item" type="daterange" :range-separator="$t('common.to')"  :start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" style="width: 250px;" />
-      <el-button class="el-icon-arrow-left elIconArrowLeft" @click="handleBefore" />
-      <el-button class="el-icon-arrow-right elIconArrowRight" @click="handleNext" />
-      <el-select v-model="table.getdataListParm.parammaps.barid" filterable :placeholder="$t('errorAnalysis.isHouseName')"  class="filter-item" style="width: 120px;" clearable>
-        <el-option v-for="item in houseNameList" :key="item.id" :label="item.bname" :value="item.id" />
+      <el-date-picker
+        v-model="table.getdataListParm.parammaps.inputDatetime"
+        class="inputDatetime filter-item"
+        type="daterange"
+        :range-separator="$t('common.to')"
+        :start-placeholder="$t('common.startTime')"
+        :end-placeholder="$t('common.endTime')"
+        style="width: 250px"
+      />
+      <el-button
+        class="el-icon-arrow-left elIconArrowLeft"
+        @click="handleBefore"
+      />
+      <el-button
+        class="el-icon-arrow-right elIconArrowRight"
+        @click="handleNext"
+      />
+      <el-select
+        v-model="table.getdataListParm.parammaps.barid"
+        filterable
+        :placeholder="$t('errorAnalysis.isHouseName')"
+        class="filter-item"
+        style="width: 120px"
+        clearable
+      >
+        <el-option
+          v-for="item in houseNameList"
+          :key="item.id"
+          :label="item.bname"
+          :value="item.id"
+        />
       </el-select>
-      <el-select v-model="table.getdataListParm.parammaps.times" filterable :placeholder="$t('errorAnalysis.isTrainNumber')"  class="filter-item" style="width: 120px;" clearable>
-        <el-option v-for="item in frequencyList" :key="item.id" :label="item.name" :value="item.id" />
+      <el-select
+        v-model="table.getdataListParm.parammaps.times"
+        filterable
+        :placeholder="$t('errorAnalysis.isTrainNumber')"
+        class="filter-item"
+        style="width: 120px"
+        clearable
+      >
+        <el-option
+          v-for="item in frequencyList"
+          :key="item.id"
+          :label="item.name"
+          :value="item.id"
+        />
       </el-select>
-      <el-button class="successBorder" @click="form_search">{{$t('common.query')}}</el-button>
-      <el-button class="successBorder" @click="handleRefresh">{{$t('common.reset')}}</el-button>
+      <el-button class="successBorder" @click="form_search">{{
+        $t("common.query")
+      }}</el-button>
+      <el-button class="successBorder" @click="handleRefresh">{{
+        $t("common.reset")
+      }}</el-button>
     </div>
     <div class="operation">
-      <el-button v-if="isRoleEdit" icon="el-icon-plus" class="success" @click="handleCreate">{{$t('formulationEvaluation.add')}}</el-button>
-      <el-button v-if="isRoleEdit" icon="el-icon-delete" class="danger" @click="form_delete">{{$t('formulationEvaluation.del')}}</el-button>
+      <el-button
+        v-if="isRoleEdit"
+        icon="el-icon-plus"
+        class="success"
+        @click="handleCreate"
+        >{{ $t("formulationEvaluation.add") }}</el-button
+      >
+      <el-button
+        v-if="isRoleEdit"
+        icon="el-icon-delete"
+        class="danger"
+        @click="form_delete"
+        >{{ $t("formulationEvaluation.del") }}</el-button
+      >
       <!-- 临时注释 -->
       <!-- <el-button v-if="isRoleEdit" icon="el-icon-copy-document" class="copy" @click="handleCopy">{{$t('performance.copy')}}</el-button> -->
       <!-- 临时注释 -->
-      <el-upload v-if="isRoleEdit" style="float: right;" :headers="headers" :data="uploadData" :action="uploadExcelUrl" :show-file-list="false" :before-upload="beforeImport" :on-success="handleImportSuccess">
-        <el-button class="import" icon="el-icon-download" style="float: right;">{{$t('formulationEvaluation.enter')}}</el-button>
+      <el-upload
+        v-if="isRoleEdit"
+        style="float: right"
+        :headers="headers"
+        :data="uploadData"
+        :action="uploadExcelUrl"
+        :show-file-list="false"
+        :before-upload="beforeImport"
+        :on-success="handleImportSuccess"
+      >
+        <el-button
+          class="import"
+          icon="el-icon-download"
+          style="float: right"
+          >{{ $t("formulationEvaluation.enter") }}</el-button
+        >
       </el-upload>
-      <el-dropdown style="float: right;margin-right: 10px;">
-        <el-button class="export" icon="el-icon-upload2">{{$t('formulationEvaluation.out')}}</el-button>
+      <el-dropdown style="float: right; margin-right: 10px">
+        <el-button class="export" icon="el-icon-upload2">{{
+          $t("formulationEvaluation.out")
+        }}</el-button>
         <el-dropdown-menu slot="dropdown">
-          <el-dropdown-item @click.native="handleExport(1)">{{$t('formulationEvaluation.outmb')}}</el-dropdown-item>
-          <el-dropdown-item @click.native="handleExport(2)">{{$t('formulationEvaluation.outsj')}}</el-dropdown-item>
+          <el-dropdown-item @click.native="handleExport(1)">{{
+            $t("formulationEvaluation.outmb")
+          }}</el-dropdown-item>
+          <el-dropdown-item @click.native="handleExport(2)">{{
+            $t("formulationEvaluation.outsj")
+          }}</el-dropdown-item>
         </el-dropdown-menu>
       </el-dropdown>
-      <el-button class="export" style="float: right;" @click="handleHistoryRecord">{{$t('dhedFormula.lsjl')}}</el-button>
+      <el-button
+        class="export"
+        style="float: right"
+        @click="handleHistoryRecord"
+        >{{ $t("dhedFormula.lsjl") }}</el-button
+      >
     </div>
     <div class="table">
       <el-table
@@ -40,7 +119,7 @@
         border
         fit
         highlight-current-row
-        style="width: 100%;"
+        style="width: 100%"
         :row-style="rowStyle"
         :cell-style="cellStyle"
         class="elTable table-fixed"
@@ -48,125 +127,271 @@
         :max-height="myHeight"
       >
         <el-table-column type="selection" align="center" width="50" />
-        <el-table-column :label="$t('formulationEvaluation.xh')" align="center" type="index" width="50px">
+        <el-table-column
+          :label="$t('formulationEvaluation.xh')"
+          align="center"
+          type="index"
+          width="50px"
+        >
           <template slot-scope="scope">
-            <span>{{ scope.$index + (table.pageNum-1) * table.pageSize + 1 }}</span>
+            <span>{{
+              scope.$index + (table.pageNum - 1) * table.pageSize + 1
+            }}</span>
           </template>
         </el-table-column>
-        <el-table-column  :label="$t('errorAnalysis.isHouseName')"  min-width="150px" align="center">
+        <el-table-column
+          :label="$t('errorAnalysis.isHouseName')"
+          min-width="150px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span>{{ scope.row.barname }}</span>
           </template>
         </el-table-column>
-        <el-table-column :label="$t('errorAnalysis.isTrainNumber')"  min-width="90px" align="center">
+        <el-table-column
+          :label="$t('errorAnalysis.isTrainNumber')"
+          min-width="90px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span>{{ scope.row.timesstr }}</span>
           </template>
         </el-table-column>
-        <el-table-column :label="$t('message.msg90')"min-width="100px" align="center">
+        <el-table-column
+          :label="$t('premixedPlan.xyzlg')"
+          min-width="100px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span>{{ scope.row.freshweight }}</span>
           </template>
         </el-table-column>
-        <el-table-column :label="$t('message.msg91')" min-width="100px" align="center">
+        <el-table-column
+          :label="$t('premixedPlan.hgzlg')"
+          min-width="100px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span>{{ scope.row.dryweight }}</span>
           </template>
         </el-table-column>
-        <el-table-column :label="$t('message.msg92')" min-width="100px" align="center">
+        <el-table-column
+          :label="$t('premixedPlan.llgwz')"
+          min-width="100px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span>{{ scope.row.thoweight }}</span>
           </template>
         </el-table-column>
-        <el-table-column :label="$t('message.msg93')"  min-width="100px" align="center">
+        <el-table-column
+          :label="$t('premixedPlan.sjgwz')"
+          min-width="100px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span>{{ scope.row.actweight }}</span>
           </template>
         </el-table-column>
-        <el-table-column  :label="$t('performance.czr')" min-width="90px" align="center">
+        <el-table-column
+          :label="$t('premixedPlan.Operator')"
+          min-width="90px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span>{{ scope.row.emp }}</span>
           </template>
         </el-table-column>
-        <el-table-column :label="$t('message.msg94')"  min-width="100px" align="center">
+        <el-table-column
+          :label="$t('message.msg94')"
+          min-width="100px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span>{{ scope.row.operatetime }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="是否剩料" min-width="100px" align="center">
+        <el-table-column
+          :label="$t('premixedPlan.sfsl')"
+          min-width="100px"
+          align="center"
+        >
           <template slot-scope="scope">
-            <el-switch v-model="scope.row.excess" disabled active-color="#13ce66" inactive-color="#ff4949" :active-value="1" :inactive-value="0" />
+            <el-switch
+              v-model="scope.row.excess"
+              disabled
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="1"
+              :inactive-value="0"
+            />
           </template>
         </el-table-column>
 
-        <el-table-column  :label="$t('errorAnalysis.cz')" align="center" width="80" class-name="small-padding fixed-width" fixed="right">
-          <template slot-scope="{row}">
-            <el-button v-if="isRoleEdit" class="miniSuccess" icon="el-icon-edit-outline" @click="handleUpdate(row)" />
+        <el-table-column
+          :label="$t('errorAnalysis.cz')"
+          align="center"
+          width="80"
+          class-name="small-padding fixed-width"
+          fixed="right"
+        >
+          <template slot-scope="{ row }">
+            <el-button
+              v-if="isRoleEdit"
+              class="miniSuccess"
+              icon="el-icon-edit-outline"
+              @click="handleUpdate(row)"
+            />
             <span v-if="isRoleEdit" class="centerSpan">|</span>
-            <el-button v-if="isRoleEdit" class="miniDanger" icon="el-icon-delete" @click="handleRowDelete(row)" />
+            <el-button
+              v-if="isRoleEdit"
+              class="miniDanger"
+              icon="el-icon-delete"
+              @click="handleRowDelete(row)"
+            />
           </template>
         </el-table-column>
       </el-table>
-      <pagination v-show="table.total>=0" :total="table.total" :page.sync="table.getdataListParm.offset" :limit.sync="table.getdataListParm.pagecount" @pagination="getList" />
+      <pagination
+        v-show="table.total >= 0"
+        :total="table.total"
+        :page.sync="table.getdataListParm.offset"
+        :limit.sync="table.getdataListParm.pagecount"
+        @pagination="getList"
+      />
     </div>
 
     <!-- 新增/编辑 -->
-    <el-dialog :fullscreen="dialogFull" v-if='create.dialogFormVisible' :visible.sync="create.dialogFormVisible" :close-on-click-modal="false" width="70%">
+    <el-dialog
+      :fullscreen="dialogFull"
+      v-if="create.dialogFormVisible"
+      :visible.sync="create.dialogFormVisible"
+      :close-on-click-modal="false"
+      width="70%"
+    >
       <template slot="title">
         <div class="avue-crud__dialog__header">
           <span class="el-dialog__title">
-            <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px" />
+            <span
+              style="
+                display: inline-block;
+                width: 3px;
+                height: 20px;
+                margin-right: 5px;
+                float: left;
+                margin-top: 2px;
+              "
+            />
             {{ textMap[create.dialogStatus] }}
           </span>
-          <div class="avue-crud__dialog__menu" @click="dialogFull? dialogFull=false: dialogFull=true">
+          <div
+            class="avue-crud__dialog__menu"
+            @click="dialogFull ? (dialogFull = false) : (dialogFull = true)"
+          >
             <svg-icon v-if="dialogFull" icon-class="exit-fullscreen" />
             <svg-icon v-else icon-class="fullscreen" />
           </div>
         </div>
       </template>
       <div class="app-add">
-        <el-form ref="temp" :rules="create.rules" :model="create.temp" label-position="right" label-width="135px" style="width: 90%;margin:0 auto 50px">
+        <el-form
+          ref="temp"
+          :rules="create.rules"
+          :model="create.temp"
+          label-position="right"
+          label-width="180px"
+          style="width: 95%; margin: 0 auto 50px"
+        >
           <el-row>
-            <el-col v-if="create.dialogStatus=='create'" :span="12">
+            <el-col v-if="create.dialogStatus == 'create'" :span="12">
               <el-form-item :label="$t('premixedPlan.lsname')" prop="barid">
-                <el-select ref="barid" v-model="create.temp.barid" filterable :placeholder="$t('errorAnalysis.isHouseName')"  class="filter-item" style="width: 100%;" @change="changeBar">
-                  <el-option v-for="item in houseNameList" :key="item.id" :label="item.bname" :value="item.id" />
+                <el-select
+                  ref="barid"
+                  v-model="create.temp.barid"
+                  filterable
+                  :placeholder="$t('errorAnalysis.isHouseName')"
+                  class="filter-item"
+                  style="width: 100%"
+                  @change="changeBar"
+                >
+                  <el-option
+                    v-for="item in houseNameList"
+                    :key="item.id"
+                    :label="item.bname"
+                    :value="item.id"
+                  />
                 </el-select>
               </el-form-item>
             </el-col>
             <el-col v-else :span="12">
               <el-form-item :label="$t('premixedPlan.lsname')" prop="barname">
-                <el-input ref="barname" v-model="create.temp.barname" disabled class="filter-item" placeholder="barname" />
+                <el-input
+                  ref="barname"
+                  v-model="create.temp.barname"
+                  disabled
+                  class="filter-item"
+                  placeholder="barname"
+                />
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item :label="$t('premixedPlan.bc')"  prop="times">
-                <el-select ref="times" v-model="create.temp.times" :disabled="create.dialogStatus=='update'" filterable :placeholder="$t('errorAnalysis.isTrainNumber')"  class="filter-item" style="width: 100%;">
-                  <el-option v-for="item in frequencyList" :key="item.id" :label="item.name" :value="item.id" />
+              <el-form-item :label="$t('premixedPlan.bc')" prop="times">
+                <el-select
+                  ref="times"
+                  v-model="create.temp.times"
+                  :disabled="create.dialogStatus == 'update'"
+                  filterable
+                  :placeholder="$t('errorAnalysis.isTrainNumber')"
+                  class="filter-item"
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="item in frequencyList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  />
                 </el-select>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="12">
-              <el-form-item label="鲜样重量(g):" prop="freshweight">
-                <el-input ref="freshweight" v-model="create.temp.freshweight" class="filter-item" placeholder="最多两位小数" type="number" @blur="blurFreshweight" />
+              <el-form-item
+                :label="$t('premixedPlan.xyzlg')"
+                prop="freshweight"
+              >
+                <el-input
+                  ref="freshweight"
+                  v-model="create.temp.freshweight"
+                  class="filter-item"
+                  :placeholder="$t('premixedPlan.zdllwxs')"
+                  type="number"
+                  @blur="blurFreshweight"
+                />
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="烘干重量(g):" prop="dryweight">
-                <el-input ref="dryweight" v-model="create.temp.dryweight" class="filter-item" placeholder="最多两位小数" type="number" @blur="blurDryweight" />
+              <el-form-item :label="$t('premixedPlan.hgzlg')" prop="dryweight">
+                <el-input
+                  ref="dryweight"
+                  v-model="create.temp.dryweight"
+                  class="filter-item"
+                  :placeholder="$t('premixedPlan.zdllwxs')"
+                  type="number"
+                  @blur="blurDryweight"
+                />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="12">
-              <el-form-item label="理论干物质:" prop="thoweight">
+              <el-form-item :label="$t('premixedPlan.llgwz')" prop="thoweight">
                 <span>{{ create.temp.thoweight }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="实际干物质:" prop="actweight">
+              <el-form-item :label="$t('premixedPlan.sjgwz')" prop="actweight">
                 <span>{{ create.temp.actweight }}</span>
               </el-form-item>
             </el-col>
@@ -174,41 +399,112 @@
           <el-row>
             <el-col :span="12">
               <el-form-item :label="$t('performance.czr')" prop="emp">
-                <el-select ref="emp" v-model="create.temp.emp" filterable :placeholder="$t('performance.czr')" class="filter-item" style="width: 100%;" @blur="blurEmp">
-                  <el-option v-for="item in create.noteTakerList" :key="item.myId" :label="item.emp" :value="item.emp" />
+                <el-select
+                  ref="emp"
+                  v-model="create.temp.emp"
+                  filterable
+                  :placeholder="$t('performance.czr')"
+                  class="filter-item"
+                  style="width: 100%"
+                  @blur="blurEmp"
+                >
+                  <el-option
+                    v-for="item in create.noteTakerList"
+                    :key="item.myId"
+                    :label="item.emp"
+                    :value="item.emp"
+                  />
                 </el-select>
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="操作日期:" prop="operatetime">
-                <el-date-picker v-model="create.temp.operatetime" :disabled="create.dialogStatus=='update'" type="date" :placeholder="$t('dailyExecutionPlan.xzrq')"   format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;" :clearable="false" @change="changeOperatetime" />
+              <el-form-item :label="$t('premixedPlan.czrq')" prop="operatetime">
+                <el-date-picker
+                  v-model="create.temp.operatetime"
+                  :disabled="create.dialogStatus == 'update'"
+                  type="date"
+                  :placeholder="$t('dailyExecutionPlan.xzrq')"
+                  format="yyyy-MM-dd"
+                  value-format="yyyy-MM-dd"
+                  style="width: 100%"
+                  :clearable="false"
+                  @change="changeOperatetime"
+                />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="12">
-              <el-form-item label="是否剩料:" prop="excess">
-                <el-switch v-model="create.temp.excess"  active-color="#13ce66" inactive-color="#ff4949" :active-value="1" :inactive-value="0" />
+              <el-form-item :label="$t('premixedPlan.sfsl')" prop="excess">
+                <el-switch
+                  v-model="create.temp.excess"
+                  active-color="#13ce66"
+                  inactive-color="#ff4949"
+                  :active-value="1"
+                  :inactive-value="0"
+                />
               </el-form-item>
             </el-col>
           </el-row>
         </el-form>
         <div slot="footer" class="dialog-footer">
-          <el-button class="cancelClose" @click="create.dialogFormVisible = false;getList()">{{$t('common.closed')}}</el-button>
-          <el-button v-if="create.dialogStatus==='create'" class="save" :disabled="isokDisable" @click="createDataAgain()">{{$t('performance.qrxz')}}</el-button>
-          <el-button v-if="create.dialogStatus==='create' || create.dialogStatus==='update'" class="save" :disabled="isokDisable" @click="create.dialogStatus==='create'?createData():updateData()">{{$t('errorAnalysis.confirm')}}</el-button>
+          <el-button
+            class="cancelClose"
+            @click="
+              create.dialogFormVisible = false;
+              getList();
+            "
+            >{{ $t("common.closed") }}</el-button
+          >
+          <!-- <el-button
+            v-if="create.dialogStatus === 'create'"
+            class="save"
+            :disabled="isokDisable"
+            @click="createDataAgain()"
+            >{{ $t("performance.qrxz") }}</el-button
+          > -->
+          <el-button
+            v-if="
+              create.dialogStatus === 'create' ||
+              create.dialogStatus === 'update'
+            "
+            class="save"
+            :disabled="isokDisable"
+            @click="
+              create.dialogStatus === 'create' ? createData() : updateData()
+            "
+            >{{ $t("errorAnalysis.confirm") }}</el-button
+          >
         </div>
       </div>
     </el-dialog>
     <!-- 历史记录 -->
-    <el-dialog :fullscreen="dialogFull" :destroy-on-close="true" :visible.sync="historyRecord.dialogFormVisible" :close-on-click-modal="false" width="90%">
+    <el-dialog
+      :fullscreen="dialogFull"
+      :destroy-on-close="true"
+      :visible.sync="historyRecord.dialogFormVisible"
+      :close-on-click-modal="false"
+      width="90%"
+    >
       <template slot="title">
         <div class="avue-crud__dialog__header">
           <span class="el-dialog__title">
-            <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px" />
+            <span
+              style="
+                display: inline-block;
+                width: 3px;
+                height: 20px;
+                margin-right: 5px;
+                float: left;
+                margin-top: 2px;
+              "
+            />
             {{ textMap[historyRecord.dialogStatus] }}
           </span>
-          <div class="avue-crud__dialog__menu" @click="dialogFull? dialogFull=false: dialogFull=true">
+          <div
+            class="avue-crud__dialog__menu"
+            @click="dialogFull ? (dialogFull = false) : (dialogFull = true)"
+          >
             <svg-icon v-if="dialogFull" icon-class="exit-fullscreen" />
             <svg-icon v-else icon-class="fullscreen" />
           </div>
@@ -219,7 +515,11 @@
           <component :is="historyRecord.myComponent" ref="historyRecord" />
         </keep-alive>
         <div slot="footer" class="dialog-footer">
-          <el-button class="cancelClose cancelClose1" @click="historyRecord.dialogFormVisible = false; ">{{$t('common.closed')}}</el-button>
+          <el-button
+            class="cancelClose cancelClose1"
+            @click="historyRecord.dialogFormVisible = false"
+            >{{ $t("common.closed") }}</el-button
+          >
         </div>
       </div>
     </el-dialog>
@@ -227,676 +527,1024 @@
 </template>
 
 <script>
-import { GetDataByName, PostDataByName, failproccess, ExecDataByConfig, GetDataByNames, checkButtons,postJson } from '@/api/common'
-import Cookies from 'js-cookie'
-import { parseTime, json2excel } from '@/utils/index.js'
-import Pagination from '@/components/Pagination'
-import { MessageBox } from 'element-ui'
-import axios from 'axios'
-import { getToken } from '@/utils/auth'
+import {
+  GetDataByName,
+  PostDataByName,
+  failproccess,
+  ExecDataByConfig,
+  GetDataByNames,
+  checkButtons,
+  postJson,
+} from "@/api/common";
+import Cookies from "js-cookie";
+import { parseTime, json2excel } from "@/utils/index.js";
+import Pagination from "@/components/Pagination";
+import { MessageBox } from "element-ui";
+import axios from "axios";
+import { getToken } from "@/utils/auth";
 export default {
-  name: 'FormulaDryMatter',
+  name: "FormulaDryMatter",
   components: { Pagination },
   data() {
     return {
       dialogFull: false,
       isRoleEdit: [],
       requestParams: [
-        { name: 'getBarListEnable', offset: 0, pagecount: 0, parammaps: { 'pastureid': Cookies.get('pastureid') }},
-        { name: 'getSysoptEnable', offset: 0, pagecount: 0, parammaps: { 'pastureid': Cookies.get('pastureid'), 'inforname': 'times' }}
+        {
+          name: "getBarListEnable",
+          offset: 0,
+          pagecount: 0,
+          parammaps: { pastureid: Cookies.get("pastureid") },
+        },
+        {
+          name: "getSysoptEnable",
+          offset: 0,
+          pagecount: 0,
+          parammaps: {
+            pastureid: Cookies.get("pastureid"),
+            inforname: "times",
+          },
+        },
       ],
       houseNameList: [], // 栏舍名称
       frequencyList: [], // 班次
 
       table: {
         getdataListParm: {
-          name: 'getFtdryList',
+          name: "getFtdryList",
           page: 1,
           offset: 1,
-          pagecount: parseInt(Cookies.get('pageCount')),
-          returntype: 'Map',
+          pagecount: parseInt(Cookies.get("pageCount")),
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            barid: '',
-            times: '',
-            startTime: '',
-            stopTime: '',
-            inputDatetime: ''
-          }
+            pastureid: Cookies.get("pastureid"),
+            barid: "",
+            times: "",
+            startTime: "",
+            stopTime: "",
+            inputDatetime: "",
+          },
         },
         tableKey: 0,
         list: [],
         total: 0,
         listLoading: true,
-        temp: {}
+        temp: {},
       },
 
       // 新增/编辑
       create: {
         dialogFormVisible: false,
-        dialogStatus: '',
-        temp: { pastureid: Cookies.get('pastureid'), operatetime: parseTime(new Date(), '{y}-{m}-{d}'), emp: Cookies.get('employename'), barid: '', barname: '', freshweight: '', dryweight: '', thoweight: '', actweight: '', times: '',excess:1 },
+        dialogStatus: "",
+        temp: {
+          pastureid: Cookies.get("pastureid"),
+          operatetime: parseTime(new Date(), "{y}-{m}-{d}"),
+          emp: Cookies.get("employename"),
+          barid: "",
+          barname: "",
+          freshweight: "",
+          dryweight: "",
+          thoweight: "",
+          actweight: "",
+          times: "",
+          excess: 1,
+        },
         rules: {
-          barid: [{ type: 'string', required: true, message: this.$t('hardwareTest.bt'), trigger: 'blur' }],
-          times: [{ type: 'string', required: true, message: this.$t('hardwareTest.bt'), trigger: 'blur' }],
-          freshweight: [{ type: 'string', required: true, message: this.$t('hardwareTest.bt'), trigger: 'blur' }],
-          dryweight: [{ type: 'string', required: true, message: this.$t('hardwareTest.bt'), trigger: 'blur' }]
+          barid: [
+            {
+              type: "string",
+              required: true,
+              message: this.$t("hardwareTest.bt"),
+              trigger: "blur",
+            },
+          ],
+          times: [
+            {
+              type: "string",
+              required: true,
+              message: this.$t("hardwareTest.bt"),
+              trigger: "blur",
+            },
+          ],
+          freshweight: [
+            {
+              type: "string",
+              required: true,
+              message: this.$t("hardwareTest.bt"),
+              trigger: "blur",
+            },
+          ],
+          dryweight: [
+            {
+              type: "string",
+              required: true,
+              message: this.$t("hardwareTest.bt"),
+              trigger: "blur",
+            },
+          ],
         },
         // 操作人
         getdataListParm: {
-          name: 'getFtdryEmpHis',
+          name: "getFtdryEmpHis",
           page: 1,
           offset: 1,
           pagecount: 10,
-          returntype: 'Map',
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid')
-          }
+            pastureid: Cookies.get("pastureid"),
+          },
         },
         // 理论干物质
         getdataListParm2: {
-          name: 'getFtdrytweight',
+          name: "getFtdrytweight",
           page: 1,
           offset: 1,
           pagecount: 10,
-          returntype: 'Map',
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            barid: '',
-            date: ''
-          }
+            pastureid: Cookies.get("pastureid"),
+            barid: "",
+            date: "",
+          },
         },
-        noteTakerList: [] // 记录人
+        noteTakerList: [], // 记录人
       },
       textMap: {
-        create: '新增',
-        update: '编辑',
-        historyRecord: this.$t('message.msg34')
+        create: this.$t("premixedPlan.create"),
+        update: this.$t("premixedPlan.update"),
+        historyRecord: this.$t("message.msg34"),
       },
       historyRecord: {
         dialogFormVisible: false,
-        dialogStatus: '',
-        myComponent: null
+        dialogStatus: "",
+        myComponent: null,
       },
       requestParam: {},
       requestParam2: {},
       download: {
         getdataListParm: {
-          name: 'getFtdryList',
+          name: "getFtdryList",
           page: 1,
           offset: 1,
           pagecount: 0,
-          returntype: 'Map',
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            barid: '',
-            times: '',
-            startTime: '',
-            stopTime: '',
-            inputDatetime: ''
-          }
+            pastureid: Cookies.get("pastureid"),
+            barid: "",
+            times: "",
+            startTime: "",
+            stopTime: "",
+            inputDatetime: "",
+          },
         },
-        list: []
+        list: [],
       },
       isokDisable: false,
       selectList: [],
-      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
-      cellStyle: { padding: 0 + 'px' },
-      myHeight:document.documentElement.clientHeight - 85- 150 - 45
-    }
+      rowStyle: { maxHeight: 30 + "px", height: 30 + "px" },
+      cellStyle: { padding: 0 + "px" },
+      myHeight: document.documentElement.clientHeight - 85 - 150 - 45,
+    };
   },
   computed: {
     // 设置请求头
     headers() {
       return {
-        token: getToken()
-      }
+        token: getToken(),
+      };
     },
     uploadData() {
       return {
-        name: 'checkdryfresh,checkbarname,checktimes,insertFtdryUpload',
-        importParams: '栏舍名称,班次,鲜样重量(g),烘干重量(g),操作人,操作日期,是否剩料(是/否)',
-        sheetname: 'Sheet1',
+        name: "checkdryfresh,checkbarname,checktimes,insertFtdryUpload",
+        importParams:
+          "栏舍名称,班次,鲜样重量(g),烘干重量(g),操作人,操作日期,是否剩料(是/否)",
+        sheetname: "Sheet1",
         // 登录牧场
-        pastureid: Cookies.get('pastureid'),
+        pastureid: Cookies.get("pastureid"),
         // 日期参数
-        dateParams: '操作日期',
+        dateParams: "操作日期",
         // 必填参数
-        requiredParams: '栏舍名称,班次,鲜样重量(g),烘干重量(g)',
+        requiredParams: "栏舍名称,班次,鲜样重量(g),烘干重量(g)",
         // 为数值的参数
-        numParams: '鲜样重量(g),烘干重量(g)'
-      }
+        numParams: "鲜样重量(g),烘干重量(g)",
+      };
     },
     // 设置上传地址
     uploadExcelUrl() {
-      return Cookies.get('url') + 'authdata/ImportExcel'
-    }
+      return Cookies.get("url") + "authdata/ImportExcel";
+    },
   },
   created() {
-    this.getList()
-    this.getDownList()
-    this.getButtons()
+    this.getList();
+    this.getDownList();
+    this.getButtons();
   },
 
   methods: {
     getButtons() {
-      const Edit = 'FormulaDryMatter'
-      const isRoleEdit = checkButtons(JSON.parse(sessionStorage.getItem('buttons')), Edit)
-      this.isRoleEdit = isRoleEdit
+      const Edit = "FormulaDryMatter";
+      const isRoleEdit = checkButtons(
+        JSON.parse(sessionStorage.getItem("buttons")),
+        Edit
+      );
+      this.isRoleEdit = isRoleEdit;
     },
     getDownList() {
-      GetDataByNames(this.requestParams).then(response => {
-        this.houseNameList = response.data.getBarListEnable.list
+      GetDataByNames(this.requestParams).then((response) => {
+        this.houseNameList = response.data.getBarListEnable.list;
         if (response.data.getSysoptEnable.list !== null) {
-          for (let i = 1; i <= response.data.getSysoptEnable.list[0].inforvalue; i++) {
-            const obj = {}
-            obj.id = String(i)
-            if (i == 1) { obj.name = '第一班' } else if (i == 2) { obj.name = '第二班' } else if (i == 3) { obj.name = '第三班' } else if (i == 4) { obj.name = '第四班' }else if (i == 5) { obj.name = '第五班' }else if (i == 6) { obj.name = '第六班' }
-            this.frequencyList.push(obj)
+          for (
+            let i = 1;
+            i <= response.data.getSysoptEnable.list[0].inforvalue;
+            i++
+          ) {
+            const obj = {};
+            obj.id = String(i);
+            if (i == 1) {
+              obj.name = this.$t("premixedPlan.dyb1");
+            } else if (i == 2) {
+              obj.name = this.$t("premixedPlan.dyb2");
+            } else if (i == 3) {
+              obj.name = this.$t("premixedPlan.dyb3");
+            } else if (i == 4) {
+              obj.name = this.$t("premixedPlan.dyb4");
+            } else if (i == 5) {
+              obj.name = this.$t("premixedPlan.dyb5");
+            } else if (i == 6) {
+              obj.name = this.$t("premixedPlan.dyb6");
+            }
+            this.frequencyList.push(obj);
           }
         } else {
-          this.frequencyList = []
+          this.frequencyList = [];
         }
-      })
+      });
     },
     handleBefore() {
-      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
-        var start = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() - 1))
-        var stop = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() - 1))
-        this.table.getdataListParm.parammaps.inputDatetime.length = 0
-        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
-        this.$forceUpdate()
+      if (
+        this.table.getdataListParm.parammaps.inputDatetime !== "" &&
+        this.table.getdataListParm.parammaps.inputDatetime !== null
+      ) {
+        var start = new Date(
+          this.table.getdataListParm.parammaps.inputDatetime[0].setDate(
+            this.table.getdataListParm.parammaps.inputDatetime[0].getDate() - 1
+          )
+        );
+        var stop = new Date(
+          this.table.getdataListParm.parammaps.inputDatetime[1].setDate(
+            this.table.getdataListParm.parammaps.inputDatetime[1].getDate() - 1
+          )
+        );
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0;
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop);
+        this.$forceUpdate();
       }
     },
     handleNext() {
-      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
-        var start = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1))
-        var stop = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1))
-        this.table.getdataListParm.parammaps.inputDatetime.length = 0
-        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
-        this.$forceUpdate()
+      if (
+        this.table.getdataListParm.parammaps.inputDatetime !== "" &&
+        this.table.getdataListParm.parammaps.inputDatetime !== null
+      ) {
+        var start = new Date(
+          this.table.getdataListParm.parammaps.inputDatetime[0].setDate(
+            this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1
+          )
+        );
+        var stop = new Date(
+          this.table.getdataListParm.parammaps.inputDatetime[1].setDate(
+            this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1
+          )
+        );
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0;
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop);
+        this.$forceUpdate();
       }
     },
 
     getList() {
-      this.table.listLoading = true
-      GetDataByName(this.table.getdataListParm).then(response => {
-        console.log('table数据', response.data.list)
+      this.table.listLoading = true;
+      GetDataByName(this.table.getdataListParm).then((response) => {
+        console.log("table数据", response.data.list);
         if (response.data.list !== null) {
-          this.table.list = response.data.list
-          this.table.pageNum = response.data.pageNum
-          this.table.pageSize = response.data.pageSize
-          this.table.total = response.data.total
+          this.table.list = response.data.list;
+          this.table.pageNum = response.data.pageNum;
+          this.table.pageSize = response.data.pageSize;
+          this.table.total = response.data.total;
         } else {
-          this.table.list = []
+          this.table.list = [];
         }
         setTimeout(() => {
-          this.table.listLoading = false
-        }, 100)
-      })
+          this.table.listLoading = false;
+        }, 100);
+      });
     },
     form_search() {
-      console.log('点击了查询')
-      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
-        this.table.getdataListParm.parammaps.startTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
-        this.table.getdataListParm.parammaps.stopTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
+      console.log("点击了查询");
+      if (
+        this.table.getdataListParm.parammaps.inputDatetime !== "" &&
+        this.table.getdataListParm.parammaps.inputDatetime !== null
+      ) {
+        this.table.getdataListParm.parammaps.startTime = parseTime(
+          this.table.getdataListParm.parammaps.inputDatetime[0],
+          "{y}-{m}-{d}"
+        );
+        this.table.getdataListParm.parammaps.stopTime = parseTime(
+          this.table.getdataListParm.parammaps.inputDatetime[1],
+          "{y}-{m}-{d}"
+        );
       } else {
-        this.table.getdataListParm.parammaps.inputDatetime = ''
-        this.table.getdataListParm.parammaps.startTime = ''
-        this.table.getdataListParm.parammaps.stopTime = ''
+        this.table.getdataListParm.parammaps.inputDatetime = "";
+        this.table.getdataListParm.parammaps.startTime = "";
+        this.table.getdataListParm.parammaps.stopTime = "";
       }
-      this.table.getdataListParm.offset = 1
-      this.getList()
+      this.table.getdataListParm.offset = 1;
+      this.getList();
     },
     handleRefresh() {
-      console.log('点击了重置')
-      this.table.getdataListParm.parammaps.barid = ''
-      this.table.getdataListParm.parammaps.times = ''
-      this.table.getdataListParm.parammaps.startTime = ''
-      this.table.getdataListParm.parammaps.stopTime = ''
-      this.table.getdataListParm.parammaps.inputDatetime = ''
-      this.table.getdataListParm.offset = 1
-      this.getList()
+      console.log("点击了重置");
+      this.table.getdataListParm.parammaps.barid = "";
+      this.table.getdataListParm.parammaps.times = "";
+      this.table.getdataListParm.parammaps.startTime = "";
+      this.table.getdataListParm.parammaps.stopTime = "";
+      this.table.getdataListParm.parammaps.inputDatetime = "";
+      this.table.getdataListParm.offset = 1;
+      this.getList();
     },
 
     // 新增
     resetTemp() {
-      this.create.temp = { pastureid: Cookies.get('pastureid'), operatetime: parseTime(new Date(), '{y}-{m}-{d}'), emp: Cookies.get('employename'), barid: '', barname: '', freshweight: '', dryweight: '', thoweight: '', actweight: '', times: '',excess:1 }
+      this.create.temp = {
+        pastureid: Cookies.get("pastureid"),
+        operatetime: parseTime(new Date(), "{y}-{m}-{d}"),
+        emp: Cookies.get("employename"),
+        barid: "",
+        barname: "",
+        freshweight: "",
+        dryweight: "",
+        thoweight: "",
+        actweight: "",
+        times: "",
+        excess: 1,
+      };
     },
     blurEmp(item) {
-      this.create.temp.emp = item.target.value
+      this.create.temp.emp = item.target.value;
     },
     // 栏舍名称
     changeBar(item) {
-      this.create.temp.barname = this.houseNameList.find(obj => obj.id === item).bname
-      this.getThoweight()
+      this.create.temp.barname = this.houseNameList.find(
+        (obj) => obj.id === item
+      ).bname;
+      this.getThoweight();
     },
     changeOperatetime() {
-      this.getThoweight()
+      this.getThoweight();
     },
     //  理论干物质
     getThoweight() {
-      this.create.getdataListParm2.parammaps.date = this.create.temp.operatetime
-      this.create.getdataListParm2.parammaps.barid = this.create.temp.barid
-      GetDataByName(this.create.getdataListParm2).then(response => {
+      this.create.getdataListParm2.parammaps.date =
+        this.create.temp.operatetime;
+      this.create.getdataListParm2.parammaps.barid = this.create.temp.barid;
+      GetDataByName(this.create.getdataListParm2).then((response) => {
         if (response.data.list !== null) {
-          this.create.temp.thoweight = response.data.list[0].thoweight
+          this.create.temp.thoweight = response.data.list[0].thoweight;
         } else {
-          this.create.temp.thoweight = 0
+          this.create.temp.thoweight = 0;
         }
-      })
+      });
     },
     // 操作人
     getNoteTakerList() {
-      GetDataByName(this.create.getdataListParm).then(response => {
+      GetDataByName(this.create.getdataListParm).then((response) => {
         if (response.data.list !== null) {
           for (let i = 0; i < response.data.list.length; i++) {
-            response.data.list[i].myId = i
+            response.data.list[i].myId = i;
           }
-          this.create.noteTakerList = response.data.list
-          console.log('记录人数据', response.data.list)
-          console.log(this.create.noteTakerList)
+          this.create.noteTakerList = response.data.list;
+          console.log("记录人数据", response.data.list);
+          console.log(this.create.noteTakerList);
         } else {
-          this.create.noteTakerList = []
+          this.create.noteTakerList = [];
         }
-      })
+      });
     },
     blurFreshweight() {
-      if (this.create.temp.dryweight !== '' && this.create.temp.freshweight !== '') {
-        this.create.temp.actweight = parseFloat(this.create.temp.dryweight) / parseFloat(this.create.temp.freshweight)
-        this.create.temp.actweight = this.create.temp.actweight.toFixed(2)
+      if (
+        this.create.temp.dryweight !== "" &&
+        this.create.temp.freshweight !== ""
+      ) {
+        this.create.temp.actweight =
+          parseFloat(this.create.temp.dryweight) /
+          parseFloat(this.create.temp.freshweight);
+        this.create.temp.actweight = this.create.temp.actweight.toFixed(2);
       }
     },
     blurDryweight() {
-      if (this.create.temp.freshweight !== '' && this.create.temp.dryweight !== '') {
-        this.create.temp.actweight = parseFloat(this.create.temp.dryweight) / parseFloat(this.create.temp.freshweight)
-        this.create.temp.actweight = this.create.temp.actweight.toFixed(2)
+      if (
+        this.create.temp.freshweight !== "" &&
+        this.create.temp.dryweight !== ""
+      ) {
+        this.create.temp.actweight =
+          parseFloat(this.create.temp.dryweight) /
+          parseFloat(this.create.temp.freshweight);
+        this.create.temp.actweight = this.create.temp.actweight.toFixed(2);
       }
     },
     handleCreate() {
-      console.log('点击了新增')
-      this.resetTemp()
-      this.getNoteTakerList()
-      this.dialogFull = false
-      this.create.dialogStatus = 'create'
-      this.create.dialogFormVisible = true
+      console.log("点击了新增");
+      this.resetTemp();
+      this.getNoteTakerList();
+      this.dialogFull = false;
+      this.create.dialogStatus = "create";
+      this.create.dialogFormVisible = true;
     },
     createData() {
-      console.log('点击了新增保存')
-      this.isokDisable = true
+      console.log("点击了新增保存");
+      this.isokDisable = true;
       setTimeout(() => {
-        this.isokDisable = false
-      }, 1000)
-      this.$refs['temp'].validate(valid => {
+        this.isokDisable = false;
+      }, 1000);
+      this.$refs["temp"].validate((valid) => {
         if (valid) {
-          this.isokDisable = true
+          this.isokDisable = true;
           setTimeout(() => {
-            this.isokDisable = false
-          }, 1000)
-          const weight = /^\d+(\.\d{1,2})?$/
+            this.isokDisable = false;
+          }, 1000);
+          const weight = /^\d+(\.\d{1,2})?$/;
           // 鲜样重量/烘干重量
-          if (!weight.test(parseFloat(this.create.temp.freshweight)) || !weight.test(parseFloat(this.create.temp.dryweight))) {
-            this.$message({ type: 'error', message: '重量不可小于0,最多保留俩位小数', duration: 2000 })
-            return false
+          if (
+            !weight.test(parseFloat(this.create.temp.freshweight)) ||
+            !weight.test(parseFloat(this.create.temp.dryweight))
+          ) {
+            this.$message({
+              type: "error",
+              message: this.$t("premixedPlan.msg1"),
+              duration: 2000,
+            });
+            return false;
           }
-          if (this.create.temp.freshweight !== '' && this.create.temp.dryweight) {
-            if (parseFloat(this.create.temp.dryweight) > parseFloat(this.create.temp.freshweight)) {
-              this.$message({ type: 'error', message: '烘干重量不可大于鲜样重量', duration: 2000 })
-              return false
+          if (
+            this.create.temp.freshweight !== "" &&
+            this.create.temp.dryweight
+          ) {
+            if (
+              parseFloat(this.create.temp.dryweight) >
+              parseFloat(this.create.temp.freshweight)
+            ) {
+              this.$message({
+                type: "error",
+                message: "烘干重量不可大于鲜样重量",
+                duration: 2000,
+              });
+              return false;
             }
           }
-          this.requestParam.name = 'insertFtdry'
-          this.requestParam.parammaps = this.create.temp
-          if (this.create.temp.emp == '') { this.create.temp.emp = Cookies.get('employename') }
-          var url = 'authdata/ftdry/add'
-          postJson(url,this.requestParam).then(response => {
-            console.log('新增保存发送参数', this.requestParam)
-            if (response.msg !== 'fail') {
-              this.saveData()
+          this.requestParam.name = "insertFtdry";
+          this.requestParam.parammaps = this.create.temp;
+          if (this.create.temp.emp == "") {
+            this.create.temp.emp = Cookies.get("employename");
+          }
+          var url = "authdata/ftdry/add";
+          postJson(url, this.requestParam).then((response) => {
+            console.log("新增保存发送参数", this.requestParam);
+            if (response.msg !== "fail") {
+              this.saveData();
             } else {
-              const barid = new RegExp("key 'barid'")
+              const barid = new RegExp("key 'barid'");
               if (barid.test(response.data)) {
-                this.$message({ type: 'error', message: '该栏舍该班次今日配方干物质已存在,不可重复生成', duration: 2000 })
+                this.$message({
+                  type: "error",
+                  message: "该栏舍该班次今日配方干物质已存在,不可重复生成",
+                  duration: 2000,
+                });
               } else {
-                this.$notify({ title: this.$t('driver.saveFail'), message: response.data, type: 'warning', duration: 2000 })
+                this.$notify({
+                  title: this.$t("driver.saveFail"),
+                  message: response.data,
+                  type: "warning",
+                  duration: 2000,
+                });
               }
             }
-          })
+          });
         }
-      })
+      });
     },
     saveData() {
-      this.requestParam2.name = 'insertFtdryHistory'
-      this.create.temp.pastureid = Cookies.get('pastureid')
-      this.create.temp.changetime = parseTime(new Date(), '{y}-{m}-{d} {h}:{i}:{s}')
-      this.requestParam2.parammaps = this.create.temp
-      PostDataByName(this.requestParam2).then(response => {
-        console.log('新增保存发送参数', this.requestParam1)
-        if (response.msg !== 'fail') {
-          this.$notify({ title: this.$t('common.succes'), message: this.$t('driver.saveSuccess'), type: 'success', duration: 2000 })
-          this.create.dialogFormVisible = false
-          this.getList()
+      this.requestParam2.name = "insertFtdryHistory";
+      this.create.temp.pastureid = Cookies.get("pastureid");
+      this.create.temp.changetime = parseTime(
+        new Date(),
+        "{y}-{m}-{d} {h}:{i}:{s}"
+      );
+      this.requestParam2.parammaps = this.create.temp;
+      PostDataByName(this.requestParam2).then((response) => {
+        console.log("新增保存发送参数", this.requestParam1);
+        if (response.msg !== "fail") {
+          this.$notify({
+            title: this.$t("common.succes"),
+            message: this.$t("driver.saveSuccess"),
+            type: "success",
+            duration: 2000,
+          });
+          this.create.dialogFormVisible = false;
+          this.getList();
         } else {
-          this.$notify({ title: this.$t('driver.saveFail'), message: response.data, type: 'warning', duration: 2000 })
+          this.$notify({
+            title: this.$t("driver.saveFail"),
+            message: response.data,
+            type: "warning",
+            duration: 2000,
+          });
         }
-      })
+      });
     },
     createDataAgain() {
-      console.log('点击了新增保存')
-      this.isokDisable = true
+      console.log("点击了新增保存");
+      this.isokDisable = true;
       setTimeout(() => {
-        this.isokDisable = false
-      }, 1000)
-      this.$refs['temp'].validate(valid => {
+        this.isokDisable = false;
+      }, 1000);
+      this.$refs["temp"].validate((valid) => {
         if (valid) {
-          this.isokDisable = true
+          this.isokDisable = true;
           setTimeout(() => {
-            this.isokDisable = false
-          }, 1000)
-          const weight = /^\d+(\.\d{1,2})?$/
+            this.isokDisable = false;
+          }, 1000);
+          const weight = /^\d+(\.\d{1,2})?$/;
           // 鲜样重量/烘干重量
-          if (!weight.test(parseFloat(this.create.temp.freshweight)) || !weight.test(parseFloat(this.create.temp.dryweight))) {
-            this.$message({ type: 'error', message: '重量不可小于0,最多保留俩位小数', duration: 2000 })
-            return false
+          if (
+            !weight.test(parseFloat(this.create.temp.freshweight)) ||
+            !weight.test(parseFloat(this.create.temp.dryweight))
+          ) {
+            this.$message({
+              type: "error",
+              message: this.$t("premixedPlan.msg1"),
+              duration: 2000,
+            });
+            return false;
           }
-          if (this.create.temp.freshweight !== '' && this.create.temp.dryweight) {
-            if (parseFloat(this.create.temp.dryweight) > parseFloat(this.create.temp.freshweight)) {
-              this.$message({ type: 'error', message: '烘干重量不可大于鲜样重量', duration: 2000 })
-              return false
+          if (
+            this.create.temp.freshweight !== "" &&
+            this.create.temp.dryweight
+          ) {
+            if (
+              parseFloat(this.create.temp.dryweight) >
+              parseFloat(this.create.temp.freshweight)
+            ) {
+              this.$message({
+                type: "error",
+                message: "烘干重量不可大于鲜样重量",
+                duration: 2000,
+              });
+              return false;
             }
           }
-          this.requestParam.name = 'insertFtdry'
-          this.requestParam.parammaps = this.create.temp
-          if (this.create.temp.emp == '') { this.create.temp.emp = Cookies.get('employename') }
-          var url = 'authdata/ftdry/add'
-          postJson(url,this.requestParam).then(response => {
-            console.log('新增保存发送参数', this.requestParam)
-            if (response.msg !== 'fail') {
-              this.saveData()
-              this.resetTemp()
-              this.getList()
-              this.getNoteTakerList()
+          this.requestParam.name = "insertFtdry";
+          this.requestParam.parammaps = this.create.temp;
+          if (this.create.temp.emp == "") {
+            this.create.temp.emp = Cookies.get("employename");
+          }
+          var url = "authdata/ftdry/add";
+          postJson(url, this.requestParam).then((response) => {
+            console.log("新增保存发送参数", this.requestParam);
+            if (response.msg !== "fail") {
+              this.saveData();
+              this.resetTemp();
+              this.getList();
+              this.getNoteTakerList();
             } else {
-              const barid = new RegExp("key 'barid'")
+              const barid = new RegExp("key 'barid'");
               if (barid.test(response.data)) {
-                this.$message({ type: 'error', message: '该栏舍该班次今日配方干物质已存在,不可重复生成', duration: 2000 })
+                this.$message({
+                  type: "error",
+                  message: "该栏舍该班次今日配方干物质已存在,不可重复生成",
+                  duration: 2000,
+                });
               } else {
-                this.$notify({ title: this.$t('driver.saveFail'), message: response.data, type: 'warning', duration: 2000 })
+                this.$notify({
+                  title: this.$t("driver.saveFail"),
+                  message: response.data,
+                  type: "warning",
+                  duration: 2000,
+                });
               }
             }
-          })
+          });
         }
-      })
+      });
     },
 
     // 编辑
     handleUpdate(row) {
-      console.log('点击了编辑', row)
-      row.barid = String(row.barid)
-      this.create.temp = Object.assign({}, row)
-      this.create.temp.id = row.id
+      console.log("点击了编辑", row);
+      row.barid = String(row.barid);
+      this.create.temp = Object.assign({}, row);
+      this.create.temp.id = row.id;
 
-      this.getNoteTakerList()
-      this.dialogFull = false
-      this.create.dialogStatus = 'update'
-      this.create.dialogFormVisible = true
+      this.getNoteTakerList();
+      this.dialogFull = false;
+      this.create.dialogStatus = "update";
+      this.create.dialogFormVisible = true;
     },
     updateData() {
-      this.isokDisable = true
+      this.isokDisable = true;
       setTimeout(() => {
-        this.isokDisable = false
-      }, 1000)
-      this.$refs['temp'].validate(valid => {
+        this.isokDisable = false;
+      }, 1000);
+      this.$refs["temp"].validate((valid) => {
         if (valid) {
-          this.isokDisable = true
+          this.isokDisable = true;
           setTimeout(() => {
-            this.isokDisable = false
-          }, 1000)
-          const weight = /^\d+(\.\d{1,2})?$/
+            this.isokDisable = false;
+          }, 1000);
+          const weight = /^\d+(\.\d{1,2})?$/;
           // 鲜样重量/烘干重量
-          if (!weight.test(parseFloat(this.create.temp.freshweight)) || !weight.test(parseFloat(this.create.temp.dryweight))) {
-            this.$message({ type: 'error', message: '重量不可小于0,最多保留俩位小数', duration: 2000 })
-            return false
+          if (
+            !weight.test(parseFloat(this.create.temp.freshweight)) ||
+            !weight.test(parseFloat(this.create.temp.dryweight))
+          ) {
+            this.$message({
+              type: "error",
+              message: this.$t("premixedPlan.msg1"),
+              duration: 2000,
+            });
+            return false;
           }
-          if (this.create.temp.freshweight !== '' && this.create.temp.dryweight) {
-            if (parseFloat(this.create.temp.dryweight) > parseFloat(this.create.temp.freshweight)) {
-              this.$message({ type: 'error', message: '烘干重量不可大于鲜样重量', duration: 2000 })
-              return false
+          if (
+            this.create.temp.freshweight !== "" &&
+            this.create.temp.dryweight
+          ) {
+            if (
+              parseFloat(this.create.temp.dryweight) >
+              parseFloat(this.create.temp.freshweight)
+            ) {
+              this.$message({
+                type: "error",
+                message: this.$t("premixedPlan.msg2"),
+                duration: 2000,
+              });
+              return false;
             }
           }
-          this.requestParam.name = 'updateFtdry'
-          this.requestParam.parammaps = this.create.temp
-          if (this.create.temp.emp == '') { this.create.temp.emp = Cookies.get('employename') }
-          var url = 'authdata/ftdry/add'
-          postJson(url,this.requestParam).then(response => {
-            console.log('新增保存发送参数', this.requestParam)
-            if (response.msg !== 'fail') {
-              this.saveData()
-              this.getList()
+          this.requestParam.name = "updateFtdry";
+          this.requestParam.parammaps = this.create.temp;
+          if (this.create.temp.emp == "") {
+            this.create.temp.emp = Cookies.get("employename");
+          }
+          var url = "authdata/ftdry/add";
+          postJson(url, this.requestParam).then((response) => {
+            console.log("新增保存发送参数", this.requestParam);
+            if (response.msg !== "fail") {
+              this.saveData();
+              this.getList();
             } else {
-              this.$notify({ title: this.$t('driver.saveFail'), message: response.data, type: 'warning', duration: 2000 })
+              this.$notify({
+                title: this.$t("driver.saveFail"),
+                message: response.data,
+                type: "warning",
+                duration: 2000,
+              });
             }
-          })
+          });
         }
-      })
+      });
     },
 
     // 删除
     handleRowDelete(row) {
-      console.log('点击了行内删除')
-      MessageBox.confirm( this.$t('common.delMsg'), {
-        confirmButtonText: this.$t('common.confirm'), cancelButtonText: this.$t('common.cancel'), type: 'warning'
-      }).then(() => {
-        this.selectList = []
-        this.requestParam.name = 'deleteFtdry'
-        this.requestParam.parammaps = {}
-        this.requestParam.parammaps.pastureid = row.pastureid
-        this.requestParam.parammaps.id = row.id
-        PostDataByName(this.requestParam).then(response => {
-          if (response.msg === 'fail') {
-            this.$notify({ title: this.$t('common.delfail'), message: response.data, type: 'warning', duration: 2000 })
-          } else {
-            this.$notify({ title: this.$t('common.succes'),message: this.$t('common.delSuccess'), type: 'success', duration: 2000 })
-            this.getList()
-          }
-        })
-      }).catch(() => {
-        this.$message({ type: 'info', message: this.$t('common.cancelMsg') })
+      console.log("点击了行内删除");
+      MessageBox.confirm(this.$t("common.delMsg"), {
+        confirmButtonText: this.$t("common.confirm"),
+        cancelButtonText: this.$t("common.cancel"),
+        type: "warning",
       })
+        .then(() => {
+          this.selectList = [];
+          this.requestParam.name = "deleteFtdry";
+          this.requestParam.parammaps = {};
+          this.requestParam.parammaps.pastureid = row.pastureid;
+          this.requestParam.parammaps.id = row.id;
+          PostDataByName(this.requestParam).then((response) => {
+            if (response.msg === "fail") {
+              this.$notify({
+                title: this.$t("common.delfail"),
+                message: response.data,
+                type: "warning",
+                duration: 2000,
+              });
+            } else {
+              this.$notify({
+                title: this.$t("common.succes"),
+                message: this.$t("common.delSuccess"),
+                type: "success",
+                duration: 2000,
+              });
+              this.getList();
+            }
+          });
+        })
+        .catch(() => {
+          this.$message({ type: "info", message: this.$t("common.cancelMsg") });
+        });
     },
     handleSelectionChange(val) {
-      console.log('勾选数据', val)
-      this.selectList = val
+      console.log("勾选数据", val);
+      this.selectList = val;
     },
     form_delete() {
-      console.log('点击了删除')
+      console.log("点击了删除");
       if (this.selectList.length == 0) {
-        this.$message({ type: 'error', message: '请选择配方干物质', duration: 2000 })
+        this.$message({
+          type: "error",
+          message: this.$t("premixedPlan.msg3"),
+          duration: 2000,
+        });
       } else {
-        MessageBox.confirm(this.$t('message.msg29')+ this.selectList.length + this.$t('message.msg31'), {
-          confirmButtonText: this.$t('common.confirm'), cancelButtonText: this.$t('common.cancel'), type: 'warning'
-        }).then(() => {
-          console.log(this.selectList)
-          this.requestParam.common = { 'returnmap': '0' }
-          this.requestParam.data = []
-          this.requestParam.data[0] = { 'name': 'insertSpotList', 'resultmaps': { 'list': this.selectList }}
-          this.requestParam.data[0].children = []
-          this.requestParam.data[0].children[0] = { 'name': 'deleteFtdry', 'type': 'e', 'parammaps': {
-            id: '@insertSpotList.id',
-            pastureid: '@insertSpotList.pastureid'
-          }}
-          ExecDataByConfig(this.requestParam).then(response => {
-            console.log('删除保存发送参数', this.requestParam)
-            if (response.msg === 'fail') {
-              this.$notify({ title: this.$t('common.delfail'), message: response.data, type: 'warning', duration: 2000 })
+        MessageBox.confirm(
+          this.$t("message.msg29") +
+            this.selectList.length +
+            this.$t("message.msg31"),
+          {
+            confirmButtonText: this.$t("common.confirm"),
+            cancelButtonText: this.$t("common.cancel"),
+            type: "warning",
+          }
+        ).then(() => {
+          console.log(this.selectList);
+          this.requestParam.common = { returnmap: "0" };
+          this.requestParam.data = [];
+          this.requestParam.data[0] = {
+            name: "insertSpotList",
+            resultmaps: { list: this.selectList },
+          };
+          this.requestParam.data[0].children = [];
+          this.requestParam.data[0].children[0] = {
+            name: "deleteFtdry",
+            type: "e",
+            parammaps: {
+              id: "@insertSpotList.id",
+              pastureid: "@insertSpotList.pastureid",
+            },
+          };
+          ExecDataByConfig(this.requestParam).then((response) => {
+            console.log("删除保存发送参数", this.requestParam);
+            if (response.msg === "fail") {
+              this.$notify({
+                title: this.$t("common.delfail"),
+                message: response.data,
+                type: "warning",
+                duration: 2000,
+              });
             } else {
-              this.$notify({ title: '',message: this.$t('common.delSuccess'), type: 'success', duration: 2000 })
-              this.getList()
+              this.$notify({
+                title: "",
+                message: this.$t("common.delSuccess"),
+                type: "success",
+                duration: 2000,
+              });
+              this.getList();
             }
-          })
-        })
+          });
+        });
       }
     },
     // 改成多条,后端接口未改正确,先注释
-     handleCopy() {
-      console.log('点击了复制')
+    handleCopy() {
+      console.log("点击了复制");
       if (this.selectList.length == 0) {
-        this.$message({ type: 'error', message: '请选择配方干物质', duration: 2000 })
-      } else  {
-        MessageBox.confirm(this.$t('message.msg4'), {
-          confirmButtonText: this.$t('common.confirm'), cancelButtonText: this.$t('common.cancel'), type: 'warning'
-        }).then(() => {
-
-          var send_data = {
-            "common":{"returnmap":"0"},
-            "data":[
-              {
-                "name":"insertSpotList",
-                "resultmaps":{
-                  "list":this.selectList
-                },
-                "children":[
+        this.$message({
+          type: "error",
+          message: this.$t("premixedPlan.msg3"),
+          duration: 2000,
+        });
+      } else {
+        MessageBox.confirm(this.$t("message.msg4"), {
+          confirmButtonText: this.$t("common.confirm"),
+          cancelButtonText: this.$t("common.cancel"),
+          type: "warning",
+        })
+          .then(() => {
+            var send_data = {
+              common: { returnmap: "0" },
+              data: [
+                {
+                  name: "insertSpotList",
+                  resultmaps: {
+                    list: this.selectList,
+                  },
+                  children: [
                     {
-                      "name":"copyFtdry","type":"e",
-                      "parammaps":{
-                        "id": "@insertSpotList.id",
-                        "pastureid":"@insertSpotList.pastureid"
-                      }
-                    }
-                ]
-              }
-            ]
-          }
-          ExecDataByConfig(send_data).then(response => {
-            if (response.msg === 'fail') {
-              const barid = new RegExp("key 'barid'")
-              if (barid.test(response.data)) {
-                this.$notify({ type: 'warning', message: '该栏舍该班次今日配方干物质已存在,不可重复生成', duration: 2000 })
-                return
+                      name: "copyFtdry",
+                      type: "e",
+                      parammaps: {
+                        id: "@insertSpotList.id",
+                        pastureid: "@insertSpotList.pastureid",
+                      },
+                    },
+                  ],
+                },
+              ],
+            };
+            ExecDataByConfig(send_data).then((response) => {
+              if (response.msg === "fail") {
+                const barid = new RegExp("key 'barid'");
+                if (barid.test(response.data)) {
+                  this.$notify({
+                    type: "warning",
+                    message: this.$t("premixedPlan.msg4"),
+                    duration: 2000,
+                  });
+                  return;
+                }
+                this.$notify({
+                  title: this.$t("driver.saveFail"),
+                  message: response.data,
+                  type: "warning",
+                  duration: 2000,
+                });
+              } else {
+                this.$notify({
+                  title: this.$t("common.succes"),
+                  message: this.$t("driver.saveSuccess"),
+                  type: "success",
+                  duration: 2000,
+                });
+                this.getList();
               }
-              this.$notify({ title: this.$t('driver.saveFail'), message: response.data, type: 'warning', duration: 2000 })
-            } else {
-              this.$notify({ title: this.$t('common.succes'), message: this.$t('driver.saveSuccess'), type: 'success', duration: 2000 })
-              this.getList()
-            }
+            });
           })
-        }).catch(() => {
-          this.$message({ type: 'info', message: '已取消复制' })
-        })
+          .catch(() => {
+            this.$message({
+              type: "info",
+              message: this.$t("premixedPlan.msg5"),
+            });
+          });
       }
     },
 
-
-
     // 导出
     handleExport(item) {
       if (item == 1) {
-        console.log('点击了导出模板')
-        const requestParam = this.requestParam
-        const url = Cookies.get('url') + 'file/导入导出模板/栏舍生产/配方干物质导入模板.xlsx' // 请求下载文件的地址
-        console.log(url)
+        console.log("点击了导出模板");
+        const requestParam = this.requestParam;
+        const url =
+          Cookies.get("url") +
+          `file/导入导出模板/栏舍生产/${this.$t("premixedPlan.docname")}`; // 请求下载文件的地址
+        console.log(url);
         axios({
-          method: 'GET',
+          method: "GET",
           url: url,
           data: requestParam,
-          headers: { token: getToken(), optname: 'insertcustomdoc' },
-          responseType: 'blob'
-        }).then(res => {
-          if (!res) return
-          this.percentage = 99
+          headers: { token: getToken(), optname: "insertcustomdoc" },
+          responseType: "blob",
+        }).then((res) => {
+          if (!res) return;
+          this.percentage = 99;
           setTimeout(() => {
-            this.isPercentage = false
-          }, 2000)
+            this.isPercentage = false;
+          }, 2000);
           const blob = new Blob([res.data], {
-            type: 'application/octet-stream;charset=utf-8'
-          })
-          const url = window.URL.createObjectURL(blob)
-          const aLink = document.createElement('a')
-          aLink.style.display = 'none'
-          aLink.href = url
-          const docname = '配方干物质导入模板.xlsx'
-          aLink.setAttribute('download', docname) // 下载的文件
-          document.body.appendChild(aLink)
-          aLink.click()
-          document.body.removeChild(aLink)
-          window.URL.revokeObjectURL(url)
-        })
+            type: "application/octet-stream;charset=utf-8",
+          });
+          const url = window.URL.createObjectURL(blob);
+          const aLink = document.createElement("a");
+          aLink.style.display = "none";
+          aLink.href = url;
+          const docname = this.$t("premixedPlan.docname");
+          aLink.setAttribute("download", docname); // 下载的文件
+          document.body.appendChild(aLink);
+          aLink.click();
+          document.body.removeChild(aLink);
+          window.URL.revokeObjectURL(url);
+        });
       } else {
-        console.log('点击了导出数据')
-        this.download.getdataListParm.parammaps = this.table.getdataListParm.parammaps
-        if (this.download.getdataListParm.parammaps.inputDatetime !== '' && this.download.getdataListParm.parammaps.inputDatetime !== null) {
-          this.download.getdataListParm.parammaps.startTime = parseTime(this.download.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
-          this.download.getdataListParm.parammaps.stopTime = parseTime(this.download.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
+        console.log("点击了导出数据");
+        this.download.getdataListParm.parammaps =
+          this.table.getdataListParm.parammaps;
+        if (
+          this.download.getdataListParm.parammaps.inputDatetime !== "" &&
+          this.download.getdataListParm.parammaps.inputDatetime !== null
+        ) {
+          this.download.getdataListParm.parammaps.startTime = parseTime(
+            this.download.getdataListParm.parammaps.inputDatetime[0],
+            "{y}-{m}-{d}"
+          );
+          this.download.getdataListParm.parammaps.stopTime = parseTime(
+            this.download.getdataListParm.parammaps.inputDatetime[1],
+            "{y}-{m}-{d}"
+          );
         } else {
-          this.download.getdataListParm.parammaps.inputDatetime = ''
-          this.download.getdataListParm.parammaps.startTime = ''
-          this.download.getdataListParm.parammaps.stopTime = ''
+          this.download.getdataListParm.parammaps.inputDatetime = "";
+          this.download.getdataListParm.parammaps.startTime = "";
+          this.download.getdataListParm.parammaps.stopTime = "";
         }
-        GetDataByName(this.download.getdataListParm).then(response => {
+        GetDataByName(this.download.getdataListParm).then((response) => {
           if (response.data.list !== null) {
-            this.download.list = response.data.list
+            this.download.list = response.data.list;
           } else {
-            this.download.list = []
+            this.download.list = [];
           }
           var excelDatas = [
             {
-              tHeader: ['栏舍名称', '班次', '鲜样重量(g)', '烘干重量(g)', '理论干物质', '实际干物质', '操作人', '操作日期','是否剩料'],
-              filterVal: ['barname', 'timesstr', 'freshweight', 'dryweight', 'thoweight', 'actweight', 'emp', 'operatetime','excess_str'],
+              tHeader: this.$t("premixedPlan.tHeader"),
+              filterVal: [
+                "barname",
+                "timesstr",
+                "freshweight",
+                "dryweight",
+                "thoweight",
+                "actweight",
+                "emp",
+                "operatetime",
+                "excess_str",
+              ],
               tableDatas: this.download.list,
-              sheetName: 'Sheet1'
-            }
-          ]
-          json2excel(excelDatas, '配方干物质', true, 'xlsx')
-        })
+              sheetName: "Sheet1",
+            },
+          ];
+          json2excel(
+            excelDatas,
+            this.$t("premixedPlan.formName"),
+            true,
+            "xlsx"
+          );
+        });
       }
     },
 
     beforeImport(file) {
-      const isLt2M = file.size / 1024 / 1024 < 2
+      const isLt2M = file.size / 1024 / 1024 < 2;
       if (!isLt2M) {
-        this.$message.error(this.$t('dhedFormula.errMsg'))
+        this.$message.error(this.$t("dhedFormula.errMsg"));
       }
-      return isLt2M
+      return isLt2M;
     },
     handleImportSuccess(res, file) {
-      this.getList()
-      if (res.msg === 'ok') {
-        this.$message({ title: this.$t('common.succes'), message:this.$t('message.msg5') + res.data.success + this.$t('message.msg39'), type: 'success', duration: 2000 })
+      this.getList();
+      if (res.msg === "ok") {
+        this.$message({
+          title: this.$t("common.succes"),
+          message:
+            this.$t("message.msg5") +
+            res.data.success +
+            this.$t("message.msg39"),
+          type: "success",
+          duration: 2000,
+        });
         if (res.data.err_count > 0) {
-          this.$notify({ title:this.$t('message.msg37'), message: this.$t('message.msg38') + res.data.err_count + this.$t('message.msg39'), type: 'danger', duration: 2000 })
-           import('@/vendor/Export2Excel').then(excel => {
-             const list1 = res.data.result
-             const tHeader = ['栏舍名称', '班次', '鲜样重量(g)', '烘干重量(g)', '操作人', '操作日期','是否剩料(是/否)', '错误信息']
-             const filterVal = ['栏舍名称', '班次', '鲜样重量(g)', '烘干重量(g)', '操作人', '操作日期','是否剩料(是/否)', 'error_msg']
-             const data1 = this.formatJson(filterVal, list1)
-             excel.export_json_to_excel({ header: tHeader, data: data1, filename: '配方干物质导入报错信息', autoWidth: true, bookType: 'xlsx' })
-           })
+          this.$notify({
+            title: this.$t("message.msg37"),
+            message:
+              this.$t("message.msg38") +
+              res.data.err_count +
+              this.$t("message.msg39"),
+            type: "danger",
+            duration: 2000,
+          });
+          import("@/vendor/Export2Excel").then((excel) => {
+            const list1 = res.data.result;
+            const tHeader = this.$t("premixedPlan.tHeader");
+            const filterVal = this.$t("premixedPlan.filterVal");
+            const data1 = this.formatJson(filterVal, list1);
+            excel.export_json_to_excel({
+              header: tHeader,
+              data: data1,
+              filename: this.$t("premixedPlan.filename"),
+              autoWidth: true,
+              bookType: "xlsx",
+            });
+          });
         }
       } else {
-        this.$notify({ title:this.$t('message.msg37'), message: this.$t('message.msg40'), type: 'danger', duration: 2000 })
+        this.$notify({
+          title: this.$t("message.msg37"),
+          message: this.$t("message.msg40"),
+          type: "danger",
+          duration: 2000,
+        });
       }
     },
     formatJson(filterVal, jsonData) {
-      return jsonData.map(v =>
-        filterVal.map(j => {
-          if (j === 'timestamp') {
-            return parseTime(v[j])
+      return jsonData.map((v) =>
+        filterVal.map((j) => {
+          if (j === "timestamp") {
+            return parseTime(v[j]);
           } else {
-            return v[j]
+            return v[j];
           }
         })
-      )
+      );
     },
     handleHistoryRecord() {
-      console.log('点击历史记录')
-      this.dialogFull = false
-      this.historyRecord.dialogStatus = 'historyRecord'
-      this.historyRecord.dialogFormVisible = true
-      const vue = this
-      var myComponent = () => import('./historyRecord.vue')
-      return vue.historyRecord.myComponent = myComponent
-    }
-
-  }
-}
+      console.log("点击历史记录");
+      this.dialogFull = false;
+      this.historyRecord.dialogStatus = "historyRecord";
+      this.historyRecord.dialogFormVisible = true;
+      const vue = this;
+      var myComponent = () => import("./historyRecord.vue");
+      return (vue.historyRecord.myComponent = myComponent);
+    },
+  },
+};
 </script>

Some files were not shown because too many files changed in this diff