1
0

4 Коммитууд b1437613c7 ... 9d4595ef1e

Эзэн SHA1 Мессеж Огноо
  Shan9312 9d4595ef1e 配方干物质修改 7 сар өмнө
  Shan9312 1974d15386 8081发版 8 сар өмнө
  Shan9312 e84be2721e 英文bug修改 8 сар өмнө
  Shan9312 d458821138 英文更改 8 сар өмнө
51 өөрчлөгдсөн 11980 нэмэгдсэн , 6824 устгасан
  1. 3 4
      .env.development
  2. BIN
      dist-多语言-tmr-20250327.zip
  3. 53 53
      src/lang/en/langModule/InventoryManagement.js
  4. 1 1
      src/lang/en/langModule/common.js
  5. 0 1
      src/lang/en/langModule/dailyExecutionPlan.js
  6. 112 100
      src/lang/en/langModule/dashboard.js
  7. 125 133
      src/lang/en/langModule/defaultParameter.js
  8. 210 99
      src/lang/en/langModule/dhedFormula.js
  9. 52 61
      src/lang/en/langModule/driver.js
  10. 180 174
      src/lang/en/langModule/errorAnalysis.js
  11. 96 102
      src/lang/en/langModule/feedChart.js
  12. 83 88
      src/lang/en/langModule/feedingEfficiency.js
  13. 113 113
      src/lang/en/langModule/formulationEvaluation.js
  14. 82 81
      src/lang/en/langModule/menus.js
  15. 490 415
      src/lang/en/langModule/message.js
  16. 110 67
      src/lang/en/langModule/premixedPlan.js
  17. 45 62
      src/lang/zn/langModule/InventoryManagement.js
  18. 0 3
      src/lang/zn/langModule/common.js
  19. 108 99
      src/lang/zn/langModule/dashboard.js
  20. 1 1
      src/lang/zn/langModule/defaultParameter.js
  21. 52 75
      src/lang/zn/langModule/driver.js
  22. 6 2
      src/lang/zn/langModule/errorAnalysis.js
  23. 97 103
      src/lang/zn/langModule/feedChart.js
  24. 83 87
      src/lang/zn/langModule/feedingEfficiency.js
  25. 114 130
      src/lang/zn/langModule/formulationEvaluation.js
  26. 84 84
      src/lang/zn/langModule/menus.js
  27. 108 75
      src/lang/zn/langModule/premixedPlan.js
  28. 4 4
      src/utils/request.js
  29. 144 144
      src/views/basicData/defaultParameter/earlyWarning/index.vue
  30. 686 254
      src/views/basicData/equipmentTMR/index.vue
  31. 346 350
      src/views/basicData/feedTable/index.vue
  32. 1095 481
      src/views/basicData/groupColumn/index.vue
  33. 1 1
      src/views/basicData/leftoverManagement/index.vue
  34. 422 420
      src/views/dashboard/pasture/index.vue
  35. 1 1
      src/views/formulationPlan/dailyExecutionPlan/index.vue
  36. 404 404
      src/views/formulationPlan/dailyExecutionPlan/typePage/surplusMaterialPlan.vue
  37. 289 289
      src/views/formulationPlan/materialIssuancePlan/index.vue
  38. 451 187
      src/views/formulationPlan/pushMaterialPlan/index.vue
  39. 848 144
      src/views/formulationPlan/recipeTemplate/index.vue
  40. 136 130
      src/views/leftoverManagement/index.vue
  41. 352 166
      src/views/shedProduction/formulaDryMatter/historyRecord.vue
  42. 1137 489
      src/views/shedProduction/formulaDryMatter/index.vue
  43. 1478 0
      src/views/shedProduction/leftoverUse/index.vue
  44. 6 1
      src/views/statisticalAnalysis/errorAnalysis/group/tab1.vue
  45. 495 183
      src/views/statisticalAnalysis/errorAnalysis/group/tab2.vue
  46. 473 180
      src/views/statisticalAnalysis/errorAnalysis/group/tab3.vue
  47. 16 10
      src/views/statisticalAnalysis/errorAnalysis/pasture/index.vue
  48. 239 239
      src/views/statisticalAnalysis/feedingEfficiency/pasture/index.vue
  49. 224 224
      src/views/statisticalAnalysis/formulationEvaluation/index.vue
  50. 2 2
      src/views/statisticalAnalysis/inventoryManagement/pasture/index.vue
  51. 323 308
      src/views/statisticalAnalysis/processAnalysis/pasture/index.vue

+ 3 - 4
.env.development

@@ -3,11 +3,10 @@
 ENV = 'development'
 
 # base api
-# 测试线
-# VUE_APP_BASE_API = 'http://192.168.1.70:8082/'
-VUE_APP_BASE_API = 'http://kpttest.kptyun.com/'
+# 测试线'
+# VUE_APP_BASE_API = 'http://kpttest.kptyun.com/'
 # 白少后台本地
-# VUE_APP_BASE_API = 'http://192.168.1.56:80/'
+VUE_APP_BASE_API = 'http://192.168.1.79:8081/'
 # VUE_APP_BASE_API = 'http://192.168.1.93/'
 # vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
 # to control whether the babel-plugin-dynamic-import-node plugin is enabled.

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


+ 53 - 53
src/lang/en/langModule/InventoryManagement.js

@@ -1,57 +1,57 @@
-export default{
-  kctj:'Inventory Statistics',
-  yltj:"Feed Analysis",
-  jgfx:"Price Analysis",
-   silc:'feed name',
-   qc:'Beginning of Period',
-   qckc:"Beginning Inventory(kg)",
-   qcje:"Beginning Balance",
-   yl:"Usage",
-   xtckyl:"System Outward Weight(kg)",
-   rkylzl:"Inward Weight(kg)",
-   rgylzl:"Manual Feed Weight(kg)",
-   chzl:"Loss Weight(kg)",
-   qm:'End of Period',
-   qmkc:"End of Period Inventory(kg)",
-   qmje:"End of Period Amount($)",
-   ylfx:"Feed Analysis",
-   tjlx:"Type of Statistics",
-   wc:"Error",
-   sfcfxl:"Whether to Split the Small Materials",
-   rq:"Date",
-   tmrsbbh:"TMR Equipment Number",
-   lbxs:"List Display",
-   qhzs:"Switch Display",
-   tmrbcc:"TMRshift",
-   bcf: "Do Not Split",
+export default {
+  kctj: "Inventory Statistics",
+  yltj: "Feed Analysis",
+  jgfx: "Price Analysis",
+  silc: "feed name",
+  qc: "Beginning of Period",
+  qckc: "Beginning Inventory(kg)",
+  qcje: "Beginning Balance",
+  yl: "Usage",
+  xtckyl: "System Outward Weight(kg)",
+  rkylzl: "Inward Weight(kg)",
+  rgylzl: "Manual Feed Weight(kg)",
+  chzl: "Loss Weight(kg)",
+  qm: "End of Period",
+  qmkc: "End of Period Inventory(kg)",
+  qmje: "End of Period Amount($)",
+  ylfx: "Feed Analysis",
+  tjlx: "Type of Statistics",
+  wc: "Error",
+  sfcfxl: "Whether to Split the Small Materials",
+  rq: "Date",
+  tmrsbbh: "TMR Equipment Number",
+  lbxs: "List Display",
+  qhzs: "Switch Display",
+  tmrbcc: "TMRshift",
+  bcf: "Do Not Split",
   cf: "Split",
   ll: "Theory",
   sj: "Actual",
 
-    multiHeader:[['Feed Name', 'Beginning of Period', '', 'Usage', '', '', '', 'End of Period', '']],
-    multiHeader2 : [['', 'Initial Inventory(kg)', 'Initial Amount ($)', 'Inbound Weight (kg)', 'System Outbound Weight (kg)', 'Manual Material Usage Weight (kg)', 'Waste Weight', 'Final Inventory (kg)', 'Final Amount ($)']]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
+  multiHeader: [
+    [
+      "Feed Name",
+      "Beginning of Period",
+      "",
+      "Usage",
+      "",
+      "",
+      "",
+      "End of Period",
+      "",
+    ],
+  ],
+  multiHeader2: [
+    [
+      "",
+      "Initial Inventory(kg)",
+      "Initial Amount ($)",
+      "Inbound Weight (kg)",
+      "System Outbound Weight (kg)",
+      "Manual Material Usage Weight (kg)",
+      "Waste Weight",
+      "Final Inventory (kg)",
+      "Final Amount ($)",
+    ],
+  ],
+};

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

@@ -22,7 +22,7 @@ export default {
   requestMsg: "Request Timeout",
   logoIcon: require("../../../assets/images/logo-icon.jpg"),
   logoM: require("../../../assets/images/logo-en-m.png"),
-  relogo: "Log in again", //重新登陆
+  relogo: "Log in again", //Login again
   conLogo: "Confirm logout",
   watchMore: "see more", //   确认注销
   startTime: "Start Date",

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

@@ -38,7 +38,6 @@ export default {
   dyBan3: "Third Shift:",
   dyBan4: "Fourth Shift:",
   zztb: "Synchronizing",
-
   bcbl: "Shift Ratio(%)",
   dcczzd: "Single Vehicle Operating Weight",
   planTypeList: [

+ 112 - 100
src/lang/en/langModule/dashboard.js

@@ -1,106 +1,118 @@
 export default {
-  addDashboard: 'Add Dashboard',
-  dashboardName: 'Dashboard Name',
-  dashboardDesc: 'Dashboard Description',
-  addOrEditDashboard: 'Add or edit Dashboard',
-  addChart: 'Add Chart',
-  shareLink: 'Share Link',
-  emptyDashboardTip: 'Dashboard Is Empty,Go Create Your First Chart!',
-  dashboardNamePlaceholder: 'Please enter dashboard name',
-  dashboardDescPlaceholder: 'Please enter dashboard description.',
-  dashboardList: 'Dashboard List',
-  removeChartConfirm: 'Are you sure you want to remove chart from dashboard ?',
-  chartQueryException: 'Something wrong with chart {0}.',
-  deleteConfirm: 'Are you sure you want to delete dashboard: {0}?',
-  noMessage:'No messages notifications at the moment',
-  pureBlend:'Blended Feed Accuracy',
-  spreadAc:'Spreading Accuracy',
-  SpreadingCR:'Spreading Correctness Rate',
-  yestday:'Yesterday',
-  yestday30:'Mixture Accuracy of Mixed Feed in the Last 30 Days',
-  yestday30S:'Spreading Correctness Rate Over the Last 30 Days',
-  yestday30SD:'Spreading Deviation Over the Last 30 Days',
-  spreadSD:'Spreading Deviation',
-  mtime:'min',
-  todayTps:"Today's Plan Statistics",
-  StatisType:"Statistical Type",
-  typeAll:'All',
-  Fixed:'Fixed',
-  struck:'Spreader Truck',
-  bout:'Times',
-  cTrip:'Complete the Train',
-  pTrip:"Planned Train",
-  cWeight:"Completed Weight",
-  pWeight:"Planned Weight",
-  rWright:'Remaining Weight',
-  costSts:'Cost Statistics',
-  Export:"Export",
-  sTable:'Switch Table',
-  tripCp:'Weight Completion Rate',
-  tripCp1:"Train  Completion Rate",
-  tripCpFont:'14',
-  WeightP:'Weight completion rate',
-  taskT:"task progress",
-  table:{
-    date:"Date",
-    signOx:'Feed Cost per Cow',
-    feedCow:'Feed Cost per Kilogram of Milk',
-    PEWeight:'Planned Execution Weight(kg)',
-    FTWeight:'Formula Theoretical Weight(kg)',
-    PARate:'Planning Accuracy Rate',
-    PCWeight:"Planned Cancellation Weight(kg)",
-    PCancelWeight:"Planning Accuracy Rate (Excluding Canceled Weight)",
-    CNumP:"Correct Number in Plan",
-    CNumR:'Planning Correctness Rate',
-    PNum:"Planned Number",
+  addDashboard: "Add Dashboard",
+  dashboardName: "Dashboard Name",
+  dashboardDesc: "Dashboard Description",
+  addOrEditDashboard: "Add or edit Dashboard",
+  addChart: "Add Chart",
+  shareLink: "Share Link",
+  emptyDashboardTip: "Dashboard Is Empty,Go Create Your First Chart!",
+  dashboardNamePlaceholder: "Please enter dashboard name",
+  dashboardDescPlaceholder: "Please enter dashboard description.",
+  dashboardList: "Dashboard List",
+  removeChartConfirm: "Are you sure you want to remove chart from dashboard ?",
+  chartQueryException: "Something wrong with chart {0}.",
+  deleteConfirm: "Are you sure you want to delete dashboard: {0}?",
+  noMessage: "No messages notifications at the moment",
+  pureBlend: "Blended Feed Accuracy",
+  spreadAc: "Spreading Accuracy",
+  SpreadingCR: "Spreading Correctness Rate",
+  yestday: "Yesterday",
+  yestday30: "Mixture Accuracy of Mixed Feed in the Last 30 Days",
+  yestday30S: "Spreading Correctness Rate Over the Last 30 Days",
+  yestday30zq: "Spreading Correctness of Mixed Feed in the Last 30 Day",
+  yestday30SD: "Spreading Deviation Over the Last 30 Days",
+  spreadSD: "Spreading Deviation",
+  mtime: "min",
+  todayTps: "Today's Plan Statistics",
+  StatisType: "Statistical Type",
+  typeAll: "All",
+  Fixed: "Fixed",
+  struck: "Spreader Truck",
+  bout: "Times",
+  cTrip: "Complete the Train",
+  pTrip: "Planned Train",
+  cWeight: "Completed Weight",
+  pWeight: "Planned Weight",
+  rWright: "Remaining Weight",
+  costSts: "Cost Statistics",
+  Export: "Export",
+  sTable: "Switch Table",
+  tripCp: "Weight Completion Rate",
+  tripCp1: "Train  Completion Rate",
+  tripCpFont: "14",
+  WeightP: "Weight completion rate",
+  taskT: "task progress",
+  table: {
+    date: "Date",
+    signOx: "Feed Cost per Cow",
+    feedCow: "Feed Cost per Kilogram of Milk",
+    PEWeight: "Planned Execution Weight(kg)",
+    FTWeight: "Formula Theoretical Weight(kg)",
+    PARate: "Planning Accuracy Rate",
+    PCWeight: "Planned Cancellation Weight(kg)",
+    PCancelWeight: "Planning Accuracy Rate (Excluding Canceled Weight)",
+    CNumP: "Correct Number in Plan",
+    CNumR: "Planning Correctness Rate",
+    PNum: "Planned Number",
   },
-  feedCow:'Feed Cost per Kilogram of Milk',
-  tHeader:['Date', 'Feed Cost per Cow', 'Feed Cost per Kilogram of Milk'],
-  CostStatistics:'Cost Statistics',
-  feedCows:'Feed Cost per \n Kilogram of Milk',
-  signOxs:'Feed Cost \n per Cow',
-  timeTitle:'Real time monitoring',
-  monitMsg:"There are currently no trains in progress",
-  curVeh:"Current Vehicle",
-  Dweight:"Designed Weight",
-  AWeight: 'Actual Weight',
-  SWeight:'Starting Weight',
-  EWight:'Ending Weight',
-  yWeight:'Weight(kg)',
-  xTime:'Time',
-  veh:'Vehicle',
-  feed:'Forage',
-  fname:'Pens',
-  remark:"Description",
-  vehWeight:'Current Vehicle Load',
-  Pweight:"Planned Weight",
-  compaltRate:'Completion Rate',
-  planSta:'Planned Statistics',
-  cant:'Percentage',
-  miruTitle:'Dry Matter Intake (DMI) of Lactating Cows',
-  miruMilk:"Milk Yield \n  of Lactating Cows",
-  miruCow:"Feed Intake of Lactating Cows",
-  miruMilk1:"Milk Yield  of Lactating Cows(kg)",
-  miruCow1:"Dry Matter Intake (DMI) of Lactating Cows(kg)",
-  miruCowMilk:'Dry Matter  \n Intake Lactating Cows',
-  mixStatic:'Statistics of Actual Weight of Mixed Feed',
-  stockAlart:"Stock Alert",
-  stockTable:{
-    num:"Serial Number",
-    feedName:'Feed Name',
-    stockNum:'Inventory Quantity(Kg)',
-    lastDay:'Remaining Days of Use',
+  feedCow: "Feed Cost per Kilogram of Milk",
+  tHeader: ["Date", "Feed Cost per Cow", "Feed Cost per Kilogram of Milk"],
+  CostStatistics: "Cost Statistics",
+  feedCows: "Feed Cost per \n Kilogram of Milk",
+  signOxs: "Feed Cost \n per Cow",
+  timeTitle: "Real time monitoring",
+  monitMsg: "There are currently no trains in progress",
+  curVeh: "Current Vehicle",
+  Dweight: "Designed Weight",
+  AWeight: "Actual Weight",
+  SWeight: "Starting Weight",
+  EWight: "Ending Weight",
+  yWeight: "Weight(kg)",
+  xTime: "Time",
+  veh: "Vehicle",
+  feed: "Forage",
+  fname: "Pens",
+  remark: "Description",
+  vehWeight: "Current Vehicle Load",
+  Pweight: "Planned Weight",
+  compaltRate: "Completion Rate",
+  planSta: "Planned Statistics",
+  cant: "Percentage",
+  miruTitle: "Dry Matter Intake (DMI) of Lactating Cows",
+  miruMilk: "Milk Yield \n  of Lactating Cows",
+  miruCow: "Feed Intake of Lactating Cows",
+  miruMilk1: "Milk Yield  of Lactating Cows(kg)",
+  miruCow1: "Dry Matter Intake (DMI) of Lactating Cows(kg)",
+  miruCowMilk: "Dry Matter  \n Intake Lactating Cows",
+  mixStatic: "Statistics of Actual Weight of Mixed Feed",
+  stockAlart: "Stock Alert",
+  stockTable: {
+    num: "Serial Number",
+    feedName: "Feed Name",
+    stockNum: "Inventory Quantity(Kg)",
+    lastDay: "Remaining Days of Use",
   },
 
+  tHeader1: [
+    "Date",
+    "Planned Execution Weight(kg)",
+    "Formula Theoretical Weight(kg)",
+    "Planning Accuracy Rate",
+    "Planned Cancellation Weight(kg)",
+    "Planning Accuracy Rate (Excluding Canceled Weight)",
+    "Correct Number in Plan”",
+    "Planned Number",
+    "Planning Correctness Rate",
+  ],
+  sheetName1: "Planned Statistics",
 
+  tHeader2: [
+    "Date",
+    "Feed Intake of Lactating Cows(kg)",
+    "Milk Yield of Lactating Cows(kg)",
+  ],
+  sheetName2: "DMI of Lactating Cows",
 
-  tHeader1: ['Date', 'Planned Execution Weight(kg)', 'Formula Theoretical Weight(kg)', 'Planning Accuracy Rate', 'Planned Cancellation Weight(kg)', 'Planning Accuracy Rate (Excluding Canceled Weight)', 'Correct Number in Plan”', 'Planned Number', 'Planning Correctness Rate'],
-  sheetName1: 'Planned Statistics',
-
-  tHeader2: ['Date', 'Feed Intake of Lactating Cows(kg)', 'Milk Yield of Lactating Cows(kg)'],
-  sheetName2: 'DMI of Lactating Cows',
-
-  tHeader3: ['Date', 'Weight'],
-  sheetName3: 'Actual Weight Statistics'
-
-}
+  tHeader3: ["Date", "Weight"],
+  sheetName3: "Actual Weight Statistics",
+};

+ 125 - 133
src/lang/en/langModule/defaultParameter.js

@@ -1,135 +1,127 @@
-export default{
-
-name1:"Functional Parameters",
-name2:"Warning Parameters",
-//
-
-sfkqqytjh: "Can retrieve the previous day's plan:",
-sfkqqytjh1: "Can retrieve the next day's plan:",
-bcsl: "Number of Spare Vehicles:",
-zlxsdws: "Decimal places for weight:",
-blxsdws: "Decimal places for ratio:",
-sfqyslht: "Enable feed contract:",
-qyslsdnts: "Enable feed lock for cattle head count:",
-clzzcszltxbl: "Vehicle load exceeding weight reminder ratio (%):",
-clzdzczlzzbl: "Vehicle load exceeding weight prohibition ratio (%):",
-sfqybl: "Enable supplementary feed:",
-sfqysl: "Enable leftover feed:",
-slclxx: "Leftover feed processing options:",
-slfbfs: "Leftover feed allocation method:",
-slfbzbyl: "Leftover feed allocation ratio to raw material (%):",
-xlsfcz: "Does minor feed need to be weighed:",
-sfqysjtb: "Enable data synchronization:",
-rycsl: "Number of Spare Vehicles:",
-hlzql: "Mixing accuracy rate:",
-yxslsjwc: "Allowed error in spreading time (minutes):",
-jtymip: "Group Domain Name or IP",
-tmrrl: "TMR capacity upper limit (%):",
-tmrrl1: "TMR capacity lower limit (%):",
-yhlyxwc: "Pre-mixed feed allowable error:",
-yhtzys: "Pre-mixed feed jump delay:",
-hfmr: "Restore default",
-
-msg1: "1. Can retrieve the previous day's plan: If yes is selected, it means that after midnight on the current day, it is still possible to retrieve the feed from yesterday.",
-msg2: "2. Can retrieve the next day's plan: If yes is selected, it can be used when all the feed for the day is completed and it is necessary to prepare the feed for the next day.",
-msg3: "3. Number of shifts: Controls the number of shifts on pages such as pen formula and plan.",
-msg4: "4. Decimal places for weight: Controls the decimal places of weight on pages such as pen formula and feeding plan.",
-msg5: "5. Enable feed contract: If yes is selected, it enables the feed contract page in inventory management.",
-msg6: "6. Enable feed lock for cattle head count: After enabling, this field is displayed in the feed table of the formula template.",
-msg7: "7. Vehicle load exceeding weight reminder ratio: In the feeding plan, when the total weight allocated to the pen exceeds the vehicle's maximum weight multiplied by this ratio, a reminder is given. Only positive integers are allowed for input.",
-msg8: "8. Vehicle load exceeding weight prohibition ratio: In the feeding plan, when the total weight allocated to the pen exceeds the vehicle's maximum weight multiplied by this ratio, allocation is prohibited. Only positive integers are allowed for input.",
-msg9: "9. Enable supplementary feed: If yes is selected, this field is enabled in the pen formula.",
-msg10: "10. Enable leftover feed: If no is selected, the leftover feed plan is not available, and the amount of leftover feed does not affect the original plan.",
-msg11: "11. Leftover feed processing options: ①If converted to feed is selected, it is deducted by replacing the overall feed formula; ②If replace a certain feed is selected, this leftover feed replaces the corresponding feed in the feeding process until it is deducted; ③Do not process: No leftover feed calculation is made.",
-msg12: "12. Leftover feed allocation method: ①Top limit allocation: Calculated according to the percentage of the original feeding amount of the pen, the leftover feed is allocated to this value, and then allocated in sequence to fill the pen. If the leftover feed is not fully allocated, the remaining leftover feed is not counted.",
-msg121: "②Average allocation: The total leftover feed is allocated evenly. If the allocation value exceeds the percentage of the pen's raw material, the remaining value is accumulated to the pens that have not been fully allocated, and the final remaining leftover feed is not counted.",
-msg13: "13. Leftover feed allocation ratio to raw material: The amount of leftover feed to be allocated does not exceed the value calculated by this ratio, and is used in conjunction with the leftover feed allocation method. Only positive integers are allowed for input.",
-msg14: "14. Does minor feed need to be weighed: If yes is selected, the feed in the feed table can be selected for minor feed weighing, and the feeding plan can set whether to weigh in advance.",
-  msg15: "15. Enable data synchronization: After enabling, the data synchronization button is opened on the daily execution page, which is used for data docking with third-party systems.",
+export default {
+  name1: "Functional Parameters",
+  name2: "Warning Parameters",
+  //
+  sfkqqytjh: "Can retrieve the previous day's plan:",
+  sfkqqytjh1: "Can retrieve the next day's plan:",
+  bcsl: "Number of Spare Vehicles:",
+  zlxsdws: "Decimal places for weight:",
+  blxsdws: "Decimal places for ratio:",
+  sfqyslht: "Enable feed contract:",
+  qyslsdnts: "Enable feed lock for cattle head count:",
+  clzzcszltxbl: "Vehicle load exceeding weight reminder ratio (%):",
+  clzdzczlzzbl: "Vehicle load exceeding weight prohibition ratio (%):",
+  sfqybl: "Enable supplementary feed:",
+  sfqysl: "Enable leftover feed:",
+  slclxx: "Leftover feed processing options:",
+  slfbfs: "Leftover feed allocation method:",
+  slfbzbyl: "Leftover feed allocation ratio to raw material (%):",
+  xlsfcz: "Does minor feed need to be weighed:",
+  sfqysjtb: "Enable data synchronization:",
+  rycsl: "Number of Spare Vehicles:",
+  hlzql: "Mixing accuracy rate:",
+  yxslsjwc: "Allowed error in spreading time (minutes):",
+  jtymip: "Group Domain Name or IP",
+  tmrrl: "TMR capacity upper limit (%):",
+  tmrrl1: "TMR capacity lower limit (%):",
+  yhlyxwc: "Pre-mixed feed allowable error:",
+  yhtzys: "Pre-mixed feed jump delay:",
+  hfmr: "Restore default",
+  msg1: "1. Can retrieve the previous day's plan: If yes is selected, it means that after midnight on the current day, it is still possible to retrieve the feed from yesterday.",
+  msg2: "2. Can retrieve the next day's plan: If yes is selected, it can be used when all the feed for the day is completed and it is necessary to prepare the feed for the next day.",
+  msg3: "3. Number of shifts: Controls the number of shifts on pages such as pen formula and plan.",
+  msg4: "4. Decimal places for weight: Controls the decimal places of weight on pages such as pen formula and feeding plan.",
+  msg5: "5. Enable feed contract: If yes is selected, it enables the feed contract page in inventory management.",
+  msg6: "6. Enable feed lock for cattle head count: After enabling, this field is displayed in the feed table of the formula template.",
+  msg7: "7. Vehicle load exceeding weight reminder ratio: In the feeding plan, when the total weight allocated to the pen exceeds the vehicle's maximum weight multiplied by this ratio, a reminder is given. Only positive integers are allowed for input.",
+  msg8: "8. Vehicle load exceeding weight prohibition ratio: In the feeding plan, when the total weight allocated to the pen exceeds the vehicle's maximum weight multiplied by this ratio, allocation is prohibited. Only positive integers are allowed for input.",
+  msg9: "9. Enable supplementary feed: If yes is selected, this field is enabled in the pen formula.",
+  msg10:
+    "10. Enable leftover feed: If no is selected, the leftover feed plan is not available, and the amount of leftover feed does not affect the original plan.",
+  msg11:
+    "11. Leftover feed processing options: ①If converted to feed is selected, it is deducted by replacing the overall feed formula; ②If replace a certain feed is selected, this leftover feed replaces the corresponding feed in the feeding process until it is deducted; ③Do not process: No leftover feed calculation is made.",
+  msg12:
+    "12. Leftover feed allocation method: ①Top limit allocation: Calculated according to the percentage of the original feeding amount of the pen, the leftover feed is allocated to this value, and then allocated in sequence to fill the pen. If the leftover feed is not fully allocated, the remaining leftover feed is not counted.",
+  msg121:
+    "②Average allocation: The total leftover feed is allocated evenly. If the allocation value exceeds the percentage of the pen's raw material, the remaining value is accumulated to the pens that have not been fully allocated, and the final remaining leftover feed is not counted.",
+  msg13:
+    "13. Leftover feed allocation ratio to raw material: The amount of leftover feed to be allocated does not exceed the value calculated by this ratio, and is used in conjunction with the leftover feed allocation method. Only positive integers are allowed for input.",
+  msg14:
+    "14. Does minor feed need to be weighed: If yes is selected, the feed in the feed table can be selected for minor feed weighing, and the feeding plan can set whether to weigh in advance.",
+  msg15:
+    "15. Enable data synchronization: After enabling, the data synchronization button is opened on the daily execution page, which is used for data docking with third-party systems.",
 
   jhzqlyjz: "Plan Accuracy Early Warning Value (%):",
-
-slfpzb: "Remaining Material Allocation Proportion of the Original Mixture",
-
-pfzqlyjz: "Formula Accuracy Early Warning Value (%):",
-
-nqzqlyjz: "Herd Accuracy Early Warning Value (%):",
-
-cczqlyjz: "Train Accuracy Early Warning Value (%):",
-
-hlzdtzzqlyj: "Automatic Mixing Transfer Accuracy Early Warning Value (%):",
-
-hlzdtzzqlyj1: "Manual Mixing Transfer Accuracy Early Warning Value (%):",
-
-mrcapjz: "Lactating Cow Feed Intake Average Deviation Early Warning Value (kg):",
-
-mrcayjz: "Lactating Cow Milk Production Average Deviation Early Warning Value (kg):",
-
-slsjpccyjz: "Spreading Time Deviation Early Warning Value (min):",
-
-ccpjhlyjz: "Exceeding Average Mixing Time Early Warning Value (min):",
-
-ccpjzhlyjz: "Exceeding Average Conversion Rate Early Warning Value (%)",
-
-ccpjgjnslcb: "Exceeding Average Cost of Milk per Kilogram of Feed (%)",
-
-nlsllccyjz: "Cow Pen Remaining Material Rate Exceeding Early Warning Value (%):",
-
-kcyjts: "Inventory Early Warning Days:",
-
-tit1: "1. Plan Accuracy Early Warning Value: If the plan accuracy is below this early warning value, it will be included in the statistical report.",
-
-tit2: "2. Formula Accuracy Early Warning Value: If the formula accuracy is below this early warning value, it will be included in the statistical report.",
-
-tit3: "3. Herd Accuracy Early Warning Value: If the herd accuracy is below this early warning value, it will be included in the statistical report.",
-
-tit4: "4. Train Accuracy Early Warning Value: If the train accuracy is below this early warning value, it will be included in the statistical report.",
-
-tit5: "5. Automatic Mixing Transfer Accuracy Early Warning Value: If the automatic mixing transfer accuracy is below this early warning value, it will be included in the statistical report.",
-
-tit6: "6. Manual Mixing Transfer Accuracy Early Warning Value: If the manual mixing transfer accuracy is below this early warning value, it will be included in the statistical report.",
-
-tit7: "7. Lactating Cow Feed Intake Average Deviation Early Warning Value: If the average deviation of lactating cow feed intake is above this early warning value, it will be included in the statistical report.",
-
-tit8: "8. Lactating Cow Milk Production Average Deviation Early Warning Value: If the average deviation of lactating cow milk production is above this early warning value, it will be included in the statistical report.",
-
-tit9: "9. Spreading Time Deviation Early Warning Value: If the spreading time deviation is above this early warning value, it will be included in the statistical report.",
-
-tit10: "10. Exceeding Average Mixing Time Early Warning Value: If the average mixing time is above this early warning value, it will be included in the statistical report.",
-
-tit11: "11. Exceeding Average Conversion Rate Early Warning Value: If the average conversion rate is above this early warning value, it will be included in the statistical report.",
-tit12: "12. Exceeding Average Cost of Milk per Kilogram of Feed: If the average cost of milk per kilogram of feed is above this early warning value, it will be included in the statistical report.",
-
-tit13: "13. Cow Pen Remaining Material Rate Exceeding Early Warning Value: If the cow pen remaining material rate is above this early warning value, it will be included in the statistical report.",
-
-tit14: "14. Inventory Early Warning Days: The inventory early warning module is based on the set number of days for statistics. It limits positive integers.",
-
-qz: "Silage",
-
-zrlwl: "Total Daily Feed Intake",
-
-bcl: "Do Not Process",
-
-
-//
-emsg1: "1. Plan Accuracy Early Warning Value: If the plan accuracy rate falls below this threshold, it will be included in the statistical report.",
-emsg2: "2. Formula Accuracy Early Warning Value: If the formula accuracy rate falls below this threshold, it will be included in the statistical report.",
-emsg3: "3. Herd Accuracy Early Warning Value: If the herd accuracy rate falls below this threshold, it will be included in the statistical report.",
-emsg4: "4. Train Accuracy Early Warning Value: If the train accuracy rate falls below this threshold, it will be included in the statistical report.",
-emsg5: "5. Automatic Mixing Transfer Accuracy Early Warning Value: If the automatic mixing transfer accuracy rate falls below this threshold, it will be included in the statistical report.",
-emsg6: "6. Manual Mixing Transfer Accuracy Early Warning Value: If the manual mixing transfer accuracy rate falls below this threshold, it will be included in the statistical report.",
-emsg7: "7. Lactating Cow Feed Intake Average Deviation Early Warning Value: If the average deviation of lactating cow feed intake exceeds this threshold, it will be included in the statistical report.",
-emsg8: "8. Lactating Cow Milk Yield Average Deviation Early Warning Value: If the average deviation of lactating cow milk yield exceeds this threshold, it will be included in the statistical report.",
-emsg9: "9. Spreading Time Deviation Early Warning Value: If the spreading time deviation exceeds this threshold, it will be included in the statistical report.",
-emsg10: "10. Exceeding Average Mixing Time Early Warning Value: If the average mixing time exceeds this threshold, it will be included in the statistical report.",
-emsg11: "11. Exceeding Average Conversion Rate Early Warning Value: If the average conversion rate exceeds this threshold, it will be included in the statistical report.",
-emsg12: "12. Exceeding Average Cost of Milk per Kilogram of Feed: If the average cost of milk per kilogram of feed exceeds this threshold, it will be included in the statistical report.",
-emsg13: "13. Cow Pen Remaining Material Rate Exceeding Early Warning Value: If the cow pen remaining material rate exceeds this threshold, it will be included in the statistical report.",
-emsg14: "14. Inventory Early Warning Days: The inventory early warning module conducts statistics based on the set number of days. It is limited to positive integers.",
-
-
-config: "Are you sure you want to restore default settings?"
-
-
-
-}
+  slfpzb: "Remaining Material Allocation Proportion of the Original Mixture",
+  pfzqlyjz: "Formula Accuracy Early Warning Value (%):",
+  nqzqlyjz: "Herd Accuracy Early Warning Value (%):",
+  cczqlyjz: "Train Accuracy Early Warning Value (%):",
+  hlzdtzzqlyj: "Automatic Mixing Transfer Accuracy Early Warning Value (%):",
+  hlzdtzzqlyj1: "Manual Mixing Transfer Accuracy Early Warning Value (%):",
+  mrcapjz:
+    "Lactating Cow Feed Intake Average Deviation Early Warning Value (kg):",
+  mrcayjz:
+    "Lactating Cow Milk Production Average Deviation Early Warning Value (kg):",
+  slsjpccyjz: "Spreading Time Deviation Early Warning Value (min):",
+  ccpjhlyjz: "Exceeding Average Mixing Time Early Warning Value (min):",
+  ccpjzhlyjz: "Exceeding Average Conversion Rate Early Warning Value (%)",
+  ccpjgjnslcb: "Exceeding Average Cost of Milk per Kilogram of Feed (%)",
+  nlsllccyjz:
+    "Cow Pen Remaining Material Rate Exceeding Early Warning Value (%):",
+  kcyjts: "Inventory Early Warning Days:",
+  tit1: "1. Plan Accuracy Early Warning Value: If the plan accuracy is below this early warning value, it will be included in the statistical report.",
+  tit2: "2. Formula Accuracy Early Warning Value: If the formula accuracy is below this early warning value, it will be included in the statistical report.",
+  tit3: "3. Herd Accuracy Early Warning Value: If the herd accuracy is below this early warning value, it will be included in the statistical report.",
+  tit4: "4. Train Accuracy Early Warning Value: If the train accuracy is below this early warning value, it will be included in the statistical report.",
+  tit5: "5. Automatic Mixing Transfer Accuracy Early Warning Value: If the automatic mixing transfer accuracy is below this early warning value, it will be included in the statistical report.",
+  tit6: "6. Manual Mixing Transfer Accuracy Early Warning Value: If the manual mixing transfer accuracy is below this early warning value, it will be included in the statistical report.",
+  tit7: "7. Lactating Cow Feed Intake Average Deviation Early Warning Value: If the average deviation of lactating cow feed intake is above this early warning value, it will be included in the statistical report.",
+  tit8: "8. Lactating Cow Milk Production Average Deviation Early Warning Value: If the average deviation of lactating cow milk production is above this early warning value, it will be included in the statistical report.",
+  tit9: "9. Spreading Time Deviation Early Warning Value: If the spreading time deviation is above this early warning value, it will be included in the statistical report.",
+  tit10:
+    "10. Exceeding Average Mixing Time Early Warning Value: If the average mixing time is above this early warning value, it will be included in the statistical report.",
+  tit11:
+    "11. Exceeding Average Conversion Rate Early Warning Value: If the average conversion rate is above this early warning value, it will be included in the statistical report.",
+  tit12:
+    "12. Exceeding Average Cost of Milk per Kilogram of Feed: If the average cost of milk per kilogram of feed is above this early warning value, it will be included in the statistical report.",
+  tit13:
+    "13. Cow Pen Remaining Material Rate Exceeding Early Warning Value: If the cow pen remaining material rate is above this early warning value, it will be included in the statistical report.",
+  tit14:
+    "14. Inventory Early Warning Days: The inventory early warning module is based on the set number of days for statistics. It limits positive integers.",
+
+  qz: "Silage",
+  zrlwl: "Total Daily Feed Intake",
+  bcl: "Do Not Process",
+
+  //
+  emsg1:
+    "1. Plan Accuracy Early Warning Value: If the plan accuracy rate falls below this threshold, it will be included in the statistical report.",
+  emsg2:
+    "2. Formula Accuracy Early Warning Value: If the formula accuracy rate falls below this threshold, it will be included in the statistical report.",
+  emsg3:
+    "3. Herd Accuracy Early Warning Value: If the herd accuracy rate falls below this threshold, it will be included in the statistical report.",
+  emsg4:
+    "4. Train Accuracy Early Warning Value: If the train accuracy rate falls below this threshold, it will be included in the statistical report.",
+  emsg5:
+    "5. Automatic Mixing Transfer Accuracy Early Warning Value: If the automatic mixing transfer accuracy rate falls below this threshold, it will be included in the statistical report.",
+  emsg6:
+    "6. Manual Mixing Transfer Accuracy Early Warning Value: If the manual mixing transfer accuracy rate falls below this threshold, it will be included in the statistical report.",
+  emsg7:
+    "7. Lactating Cow Feed Intake Average Deviation Early Warning Value: If the average deviation of lactating cow feed intake exceeds this threshold, it will be included in the statistical report.",
+  emsg8:
+    "8. Lactating Cow Milk Yield Average Deviation Early Warning Value: If the average deviation of lactating cow milk yield exceeds this threshold, it will be included in the statistical report.",
+  emsg9:
+    "9. Spreading Time Deviation Early Warning Value: If the spreading time deviation exceeds this threshold, it will be included in the statistical report.",
+  emsg10:
+    "10. Exceeding Average Mixing Time Early Warning Value: If the average mixing time exceeds this threshold, it will be included in the statistical report.",
+  emsg11:
+    "11. Exceeding Average Conversion Rate Early Warning Value: If the average conversion rate exceeds this threshold, it will be included in the statistical report.",
+  emsg12:
+    "12. Exceeding Average Cost of Milk per Kilogram of Feed: If the average cost of milk per kilogram of feed exceeds this threshold, it will be included in the statistical report.",
+  emsg13:
+    "13. Cow Pen Remaining Material Rate Exceeding Early Warning Value: If the cow pen remaining material rate exceeds this threshold, it will be included in the statistical report.",
+  emsg14:
+    "14. Inventory Early Warning Days: The inventory early warning module conducts statistics based on the set number of days. It is limited to positive integers.",
+
+  config: "Are you sure you want to restore default settings?",
+};

+ 210 - 99
src/lang/en/langModule/dhedFormula.js

@@ -1,99 +1,210 @@
-export default{
-
-gwztj:"dry matter adjustment",
-plbj:"batch editing",
-lsjl:"Historical Record",
-rjntstb:"Software Data Synchronization",
-rjnts:"software headcount",
-xs:'coefficient(%)',
-xsts:"count  coefficients",
-bcbl:"Shift Ratio",
-blpf:"Supplement Formula",
-bczl:"Shift Weight",
-pfzl:"FormulaWeight",
-blzl:"Supplemental Feed Weigh",
-pfgwzzl:"FormulaDry Matter Weigh",
-swgwzl:"Feed Dry Matter Intake",
-cygwzl:"Sample Dry Matter Weight",
-rtwl:"daily feeding amount",
-hf:"Recovery",
-ls:"Pen:",
-lb:"Category",
-yl:"ge in Months",
-tz:"Weight(kg)",
-rzz:"Daily Weight Gain(kg)",
-tcc:"Parity",
-mrtst:"Average Lactation Days",
-hytst:"Pregnancy Duration",
-cnl:"Milk Production(kg)",
-rzl:"Milk Fat Percentage(%)",
-rzdbl:"Milk Protein Percentage(%)",
-rtl:"Lactose Percentage(%)",
-wd:"Temperature(℃)",
-pg:"Assessment",
-zb:"Indicator",
-bzsfx:"PSPS",
-dyczl1:"First Layer Weight(g)",
-dyczl2:"Second Layer Weight(g)",
-dyczl3:"Third Layer Weight(g)",
-dyczl4:"Fourth Layer Weight(g)",
-
-dycbfb1:"First Layer Percentage",
-dycbfb2:"Second Layer Percentage",
-dycbfb3:"Third Layer Percentage",
-dycbfb4:"Fourth Layer Percentage",
-
-swtwl:"feeding amount",
-swpfzl:'Feeding formula weight',
-blpfzl:'Supplementary Feed Formula Weight',
-bltwl:"Supplement Feed Amount",
-yypg:"Nutritional Assessment",
-dybbl1:"first shift ratio(%)",
-dybbl2:"second shift ratio(%)",
-dybbl3:"third shift ratio(%)",
-dybbl4:"fourth shift ratio(%)",
-dybzl1:"first shift weight",
-dybzl2:"second shift weight",
-dybzl3:"third shift weight",
-dybzl4:" fourth shift weight",
-swzbl:"total feeding ratio(%)",
-apfcx:"Inquiry by Formula",
-alscx:"Inquiry by Shed",
-
-lspf:"Error Message for Pen Formula Import",
-theader1:[
-  'Pens Name', 'Actual Cattle Number', 'Coefficient (%)', 'Formula Template', 'Supplementary Feed Formula', 'First Shift Proportion (%)', 'Second Shift Proportion (%)', 'Third Shift Proportion (%)', 'Error Message'
-],
-
-theader2:['Pens Name', 'Software Cattle Head Count', 'Actual Cattle Head Count', 'Coefficient (%)', 'Coefficient Head Count', 'Formula Template', 'Supplementary Feed Formula', 'First Shift Proportion (%)', 'First Shift Weight', 'Total Proportion', 'Daily Feeding Amount', 'Formula Weight', 'Supplementary Feed Weight', 'Formula Dry Matter'],
-
-theader3:['Pens Name', 'Software Cattle Head Count', 'Actual Cattle Head Count', 'Coefficient (%)', 'Coefficient Head Count', 'Formula Template', 'Supplementary Feed Formula', 'First Shift Proportion (%)', 'First Shift Weight','Second Shift Proportion (%)', "Second Shift Weight",'Total Proportion', 'Daily Feeding Amount', 'Formula Weight', 'Supplementary Feed Weight', 'Formula Dry Matter'],
-
-theader4:['Pens Name', 'Software Cattle Head Count', 'Actual Cattle Head Count', 'Coefficient (%)', 'Coefficient Head Count', 'Formula Template', 'Supplementary Feed Formula', 'First Shift Proportion (%)', 'First Shift Weight','Second Shift Proportion (%)', "Second Shift Weight","Third Shift Proportion (%)","Third Shift Weight",'Total Proportion', 'Daily Feeding Amount', 'Formula Weight', 'Supplementary Feed Weight', 'Formula Dry Matter'],
-
-theader5:['Pens Name', 'Software Cattle Head Count', 'Actual Cattle Head Count', 'Coefficient (%)', 'Coefficient Head Count', 'Formula Template', 'Supplementary Feed Formula', 'First Shift Proportion (%)', 'First Shift Weight','Second Shift Proportion (%)', "Second Shift Weight","Third Shift Proportion (%)","Third Shift Weight","Fourth Shift Proportion (%)","Fourth Shift Weight",'Total Proportion', 'Daily Feeding Amount', 'Formula Weight', 'Supplementary Feed Weight', 'Formula Dry Matter'],
-
-theader6:['Pens Name', 'Software Cattle Head Count', 'Actual Cattle Head Count', 'Coefficient (%)', 'Coefficient Head Count', 'Formula Template', 'Supplementary Feed Formula', 'First Shift Proportion (%)', 'First Shift Weight','Second Shift Proportion (%)', "Second Shift Weight","Third Shift Proportion (%)","Third Shift Weight","Fourth Shift Proportion (%)","Fourth Shift Weight","Fifth Shift Proportion (%)","Fifth Shift Weight",'Total Proportion', 'Daily Feeding Amount', 'Formula Weight', 'Supplementary Feed Weight', 'Formula Dry Matter'],
-
-theader7:['Pens Name', 'Software Cattle Head Count', 'Actual Cattle Head Count', 'Coefficient (%)', 'Coefficient Head Count', 'Formula Template', 'Supplementary Feed Formula', 'First Shift Proportion (%)', 'First Shift Weight','Second Shift Proportion (%)', "Second Shift Weight","Third Shift Proportion (%)","Third Shift Weight","Fourth Shift Proportion (%)","Fourth Shift Weight","Fifth Shift Proportion (%)","Fifth Shift Weight", "Sixth Shift Proportion (%)","Sixth Shift Weight",'Total Proportion', 'Daily Feeding Amount', 'Formula Weight', 'Supplementary Feed Weight', 'Formula Dry Matter'],
-
-errMsg:"The file size must not exceed 2MB"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
+export default {
+  gwztj: "dry matter adjustment",
+  plbj: "batch editing",
+  lsjl: "Historical Record",
+  rjntstb: "Software Data Synchronization",
+  rjnts: "software headcount",
+  xs: "coefficient(%)",
+  xsts: "count  coefficients",
+  bcbl: "Shift Ratio",
+  blpf: "Supplement Formula",
+  bczl: "Shift Weight",
+  pfzl: "FormulaWeight",
+  blzl: "Supplemental Feed Weigh",
+  pfgwzzl: "FormulaDry Matter Weigh",
+  swgwzl: "Feed Dry Matter Intake",
+  cygwzl: "Sample Dry Matter Weight",
+  rtwl: "daily feeding amount",
+  hf: "Recovery",
+  ls: "Pen:",
+  lb: "Category",
+  yl: "ge in Months",
+  tz: "Weight(kg)",
+  rzz: "Daily Weight Gain(kg)",
+  tcc: "Parity",
+  mrtst: "Average Lactation Days",
+  hytst: "Pregnancy Duration",
+  cnl: "Milk Production(kg)",
+  rzl: "Milk Fat Percentage(%)",
+  rzdbl: "Milk Protein Percentage(%)",
+  rtl: "Lactose Percentage(%)",
+  wd: "Temperature(℃)",
+  pg: "Assessment",
+  zb: "Indicator",
+  bzsfx: "PSPS",
+  dyczl1: "First Layer Weight(g)",
+  dyczl2: "Second Layer Weight(g)",
+  dyczl3: "Third Layer Weight(g)",
+  dyczl4: "Fourth Layer Weight(g)",
+
+  dycbfb1: "First Layer Percentage",
+  dycbfb2: "Second Layer Percentage",
+  dycbfb3: "Third Layer Percentage",
+  dycbfb4: "Fourth Layer Percentage",
+
+  swtwl: "feeding amount",
+  swpfzl: "Feeding formula weight",
+  blpfzl: "Supplementary Feed Formula Weight",
+  bltwl: "Supplement Feed Amount",
+  yypg: "Nutritional Assessment",
+  dybbl1: "first shift ratio(%)",
+  dybbl2: "second shift ratio(%)",
+  dybbl3: "third shift ratio(%)",
+  dybbl4: "fourth shift ratio(%)",
+  dybzl1: "first shift weight",
+  dybzl2: "second shift weight",
+  dybzl3: "third shift weight",
+  dybzl4: " fourth shift weight",
+  swzbl: "total feeding ratio(%)",
+  apfcx: "Inquiry by Formula",
+  alscx: "Inquiry by Shed",
+
+  lspf: "Error Message for Pen Formula Import",
+  theader1: [
+    "Pens Name",
+    "Actual Cattle Number",
+    "Coefficient (%)",
+    "Formula Template",
+    "Supplementary Feed Formula",
+    "First Shift Proportion (%)",
+    "Second Shift Proportion (%)",
+    "Third Shift Proportion (%)",
+    "Error Message",
+  ],
+
+  theader2: [
+    "Pens Name",
+    "Software Cattle Head Count",
+    "Actual Cattle Head Count",
+    "Coefficient (%)",
+    "Coefficient Head Count",
+    "Formula Template",
+    "Supplementary Feed Formula",
+    "First Shift Proportion (%)",
+    "First Shift Weight",
+    "Total Proportion",
+    "Daily Feeding Amount",
+    "Formula Weight",
+    "Supplementary Feed Weight",
+    "Formula Dry Matter",
+  ],
+
+  theader3: [
+    "Pens Name",
+    "Software Cattle Head Count",
+    "Actual Cattle Head Count",
+    "Coefficient (%)",
+    "Coefficient Head Count",
+    "Formula Template",
+    "Supplementary Feed Formula",
+    "First Shift Proportion (%)",
+    "First Shift Weight",
+    "Second Shift Proportion (%)",
+    "Second Shift Weight",
+    "Total Proportion",
+    "Daily Feeding Amount",
+    "Formula Weight",
+    "Supplementary Feed Weight",
+    "Formula Dry Matter",
+  ],
+
+  theader4: [
+    "Pens Name",
+    "Software Cattle Head Count",
+    "Actual Cattle Head Count",
+    "Coefficient (%)",
+    "Coefficient Head Count",
+    "Formula Template",
+    "Supplementary Feed Formula",
+    "First Shift Proportion (%)",
+    "First Shift Weight",
+    "Second Shift Proportion (%)",
+    "Second Shift Weight",
+    "Third Shift Proportion (%)",
+    "Third Shift Weight",
+    "Total Proportion",
+    "Daily Feeding Amount",
+    "Formula Weight",
+    "Supplementary Feed Weight",
+    "Formula Dry Matter",
+  ],
+
+  theader5: [
+    "Pens Name",
+    "Software Cattle Head Count",
+    "Actual Cattle Head Count",
+    "Coefficient (%)",
+    "Coefficient Head Count",
+    "Formula Template",
+    "Supplementary Feed Formula",
+    "First Shift Proportion (%)",
+    "First Shift Weight",
+    "Second Shift Proportion (%)",
+    "Second Shift Weight",
+    "Third Shift Proportion (%)",
+    "Third Shift Weight",
+    "Fourth Shift Proportion (%)",
+    "Fourth Shift Weight",
+    "Total Proportion",
+    "Daily Feeding Amount",
+    "Formula Weight",
+    "Supplementary Feed Weight",
+    "Formula Dry Matter",
+  ],
+
+  theader6: [
+    "Pens Name",
+    "Software Cattle Head Count",
+    "Actual Cattle Head Count",
+    "Coefficient (%)",
+    "Coefficient Head Count",
+    "Formula Template",
+    "Supplementary Feed Formula",
+    "First Shift Proportion (%)",
+    "First Shift Weight",
+    "Second Shift Proportion (%)",
+    "Second Shift Weight",
+    "Third Shift Proportion (%)",
+    "Third Shift Weight",
+    "Fourth Shift Proportion (%)",
+    "Fourth Shift Weight",
+    "Fifth Shift Proportion (%)",
+    "Fifth Shift Weight",
+    "Total Proportion",
+    "Daily Feeding Amount",
+    "Formula Weight",
+    "Supplementary Feed Weight",
+    "Formula Dry Matter",
+  ],
+
+  theader7: [
+    "Pens Name",
+    "Software Cattle Head Count",
+    "Actual Cattle Head Count",
+    "Coefficient (%)",
+    "Coefficient Head Count",
+    "Formula Template",
+    "Supplementary Feed Formula",
+    "First Shift Proportion (%)",
+    "First Shift Weight",
+    "Second Shift Proportion (%)",
+    "Second Shift Weight",
+    "Third Shift Proportion (%)",
+    "Third Shift Weight",
+    "Fourth Shift Proportion (%)",
+    "Fourth Shift Weight",
+    "Fifth Shift Proportion (%)",
+    "Fifth Shift Weight",
+    "Sixth Shift Proportion (%)",
+    "Sixth Shift Weight",
+    "Total Proportion",
+    "Daily Feeding Amount",
+    "Formula Weight",
+    "Supplementary Feed Weight",
+    "Formula Dry Matter",
+  ],
+
+  errMsg: "The file size must not exceed 2MB",
+  msg1: "Do you want to synchronize cattle headcount with the software?",
+  msg2: "Do you want to proceed with the recovery?",
+};

+ 52 - 61
src/lang/en/langModule/driver.js

@@ -1,64 +1,55 @@
-export default{
-  drivername:"Driver's Name",
-  drivercode:"Driver's Number",
-  enableList: [{ id: 1, name: 'Yes' }, { id: 0, name: 'No' }], // 是
-  
-  classname:"TMR Equipment Type",
-  rl:"Capacity(m³)",
-  clys:"Vehicle Color",
-  sjcjkbh:"DAQ Card Number",
-  tzys:"Jump Delay(s)",
-  tzys1:"Jump Delay",
-  sjjk:"Data Interface",
-  tmrsjjk:"TMR Data Interface",
-  zdsb:"Designated Equipment",
-
-  sbcode:"Equipment Number",
-  sbname:'Equipment Name',
-  sbtype:"Equipment Type",
-
-  equipmentTypeList: [{ id: '0', name: 'Equipment' }, { id: '6', name: 'Feed Pushcart' }, { id: '7', name: 'Manure Pusher' }],
-
-  scfl:"Livestock Parent Category",
-  scflcode:"Livestock Category Code",
-  scftype:"Livestock Category",
-  sclbfl:"Livestock Category Parent",
-
-
-  lsmc:"Pen Name",
-  lsbh:"Pen Number",
-  xzsstj:"Please Click to Select Search Criteria",
-  yxwcs:"Allowed Error Number(kg)",
-  tzzly:"Transition Weight Range",
-  tzys:"Jump Delay",
-  hqspanccode:"Get SAP Code",
-  hqudls:"Get UD Pen",
-  qrks:"Confirm Start",
-  udcode:"UD Code",
-  udname:"UD Name",
-
-
-  messageNote:"The current content has not been saved. Please click Cancel or Save to continue the operation.",
-
-  message1: 'Stall Name/Stall Number/Barn Type/Herds cannot be empty',
+export default {
+  drivername: "Driver's Name",
+  drivercode: "Driver's Number",
+  enableList: [
+    { id: 1, name: "Yes" },
+    { id: 0, name: "No" },
+  ], // 是
+
+  classname: "TMR Equipment Type",
+  rl: "Capacity(m³)",
+  clys: "Vehicle Color",
+  sjcjkbh: "DAQ Card Number",
+  tzys1: "Jump Delay(s)",
+  tzys: "Jump Delay",
+  sjjk: "Data Interface",
+  tmrsjjk: "TMR Data Interface",
+  zdsb: "Designated Equipment",
+
+  sbcode: "Equipment Number",
+  sbname: "Equipment Name",
+  sbtype: "Equipment Type",
+
+  equipmentTypeList: [
+    { id: "0", name: "Equipment" },
+    { id: "6", name: "Feed Pushcart" },
+    { id: "7", name: "Manure Pusher" },
+  ],
+
+  scfl: "Livestock Parent Category",
+  scflcode: "Livestock Category Code",
+  scftype: "Livestock Category",
+  sclbfl: "Livestock Category Parent",
+
+  lsmc: "Pen Name",
+  lsbh: "Pen Number",
+  xzsstj: "Please Click to Select Search Criteria",
+  yxwcs: "Allowed Error Number(kg)",
+  tzzly: "Transition Weight Range(kg)",
+  tzys: "Jump Delay",
+  hqspanccode: "Get SAP Code",
+  hqudls: "Get UD Pen",
+  qrks: "Confirm Start",
+  udcode: "UD Code",
+  udname: "UD Name",
+
+  messageNote:
+    "The current content has not been saved. Please click Cancel or Save to continue the operation.",
+  message1: "Stall Name/Stall Number/Barn Type/Herds cannot be empty",
   message2: "Stall Name cannot be empty",
   message3: "Stall Number cannot be empty",
 
-  qxzjsyxx:"Please select driver information",
-  saveFail: 'Save failed',
-  saveSuccess:"Success saved"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
+  qxzjsyxx: "Please select driver information",
+  saveFail: "Save failed",
+  saveSuccess: "Success saved",
+};

+ 180 - 174
src/lang/en/langModule/errorAnalysis.js

@@ -1,174 +1,180 @@
-export default{
-  sumName:"Summary Statistics",
-  hltj:'Mixing statistics',
-  sltj:"Feed spreading statistics",
-  accName:"Accuracy Analysis",
-  typeName:'Statistical Type',
-  tjBydate:'Statistics by Date',
-
-  Driver:'Driver',
-  feedName:'Formula Name',
-  isHouseName:"Pens Name",
-  animelName:"Livestock Category",
-  projname:'Number of Times the Vehicle Was Used ',
-  isFeed:"Feed",
-  isTrainNumber:"Shift",
-  tmrName:"TMR equipment",
-
-
-  hlStartTime:'Mixing Start Time',
-  hlEndTime:'Mixing End Time',
-  hl:'Mixing',
-  sl:"Spread",
-
-  date:'Date',
-  drivername:'Vehicle Name',
-  stratJl:'Start of Feeding Time',
-  endJl:"End of Feeding Time",
-  llzl:'Theoretical weight',
-  acWeight:'Actual Weight',
-  sljhczs:'Planned feed spreslwcading operation count',
-  slczl:"Feed spreading operation rate",
-  slsj:"Spreading Time",
-  flstartTime:"Material Distribution Start Time",
-  waitTime:'Waiting Time',
-slzdtzcs:'Automatic transition count for feed spreading',
-slsdzdtzcs:'Manual transition count for feed spreading',
-qxcs:'Cancellation Count',
-slzqs:'Correct feed spreading count',
-qcqxzql:"Correctness Rate Excluding Cancellations ",
-bzc:'Standard deviation',
-cz:"operation",
-sxlb:'Livestock categories',
-jshlczs:'Planned mixing operands',
-yhlczs:'Operands that have been blended',
-hlczl:'Mixing operation rate',
-hlzdtzcs:'Automatic Mixture transition count' ,
-hlsdzdtzcs:'Manual Mixture transition count',
-hlzqs:'Correct number of mixed materials',
-yclczs:'The count of operations for feed that has been spread',
-
-statisticalTypeList: [{ id: '7', name: 'Unclassified' }, { id: '0', name: 'Driver' }, { id: '1', name: 'Formula Name' }, { id: '2', name: 'Pens Name' }, { id: '3', name: 'Livestock Category' }, { id: '4', name: 'Number of Times the Vehicle Was Used ' }, { id: '5', name: 'TMR Name' }, { id: '6', name: 'Feed' }],
-planName:"Planning Statistics",
- day:"Day",
-month:"Month",
-confirm:"OK",
-feedName:'Formula Name',
-changeTable:'Switch Table',
-qxznf:'"Please Select Year',
-qxzz:"Please Select Week",
-nf:'Year',
-xztjcs:"Please Select Statistical Parameters",
-
-qxz:"Please Select",
-nqName:"Herd Accuracy Rate",
-
-jhzql:'Planning Accuracy Rate',
-jhzql1:"Planning Correctness Numbe",
-jhzqll:"Planning Accuracy Rate (Excluding Canceled Weight)",
-bfb:'Percentage',
-
-jhzxzl:'Planned Execution Weight(kg)',
-pfllzl:'Formula Theoretical Weight(kg)',
-jhqxzl:'Planned Cancellation Weight(kg)',
-jhs:"Planned Number",
-clzql:'Vehicle Accuracy Rate(weight)',
-jhzl:"Planned weight(kg)",
-skzl:'Actual Weight(kg)',
-zql:"Accuracy rate",
-hlqxcs:"Planned Mixture cancellation count",
-lsslsjtj:"Feed spreading time statistics in pens",
-tmrnames:'TMR Name',
-
-zdtzcs:"Automatic transition count",
-sdtzcs:'Manual transition count',
-zdtzsjzl:'Actual weight of automatic transition',
-zdtzzql:"Automatic transition accuracy rate",
-sdtzllzl:"Theoretical weight of manual transition",
-sdtzsjzl:"Actual weight of manual transition",
-sdtzzql:"Manual transition accuracy rate",
-zdtzllzl:'Theoretical weight of automatic transition',
-time:'Time',
-pen:'Pen',
-czNum:"Operation Number",
-wcz:"Error Value",
-planTime:"Planned time",
-startTime:"Start time",
-endTime:'End time',
-jsTime:'Mix time',
-stWeight:'Starting Weight',
-edWeight:'Ending Weight',
-isOK:'Is it up to standard',
-area:'Area',
-tzfs:'Transition method',
-ccms:'Description',
-sfytj:'Whether to Pre-calculate Statistics',
-one: 'First Shift',
-two: "Second Shift",
-three: "Third Shift",
-four: "Fourth Shift",
-five: "Fifth Shift",
-six: "Sixth Shift",
-
-sdtz:'Manual switch',
-zdtz:"Auto switch",
-qxtz:"Cancel switch",
-
-//
-hlwczs:"Mixing Tolerance Value",
-hlzqls:"Mixing Accuracy Rate",
-hlzql:"Mixing Correctness Rate",
-slwcz:"Spreading Tolerance Value",
-slzql:'Feed Spreading Accuracy Rate',
-hlsj:"'Mixing time'",
-hztjjsy:'Summary Statistics - Driver',
-hztjpfmc:'Summary Statistics - Formula Name',
-hztjwfl:'Summary Statistics - Unclassified',
-hztjlsmz:'Summary Statistics - Pen Name',
-hztjxslb:'Summary Statistics - Livestock Category',
-hztjcc:'Summary Statistics - Vehicle Number',
-hztjtmr:'Summary Statistics - TMR Name',
-hztjsl:'Summary Statistics - Feed',
-not:'Count',
-tzcs:'Transition count',
-
-ccxx: "Train Information",
-zdrq: "Scheduling Date",
-hlxx: "Mixture Information",
-jhzl: "Planned Weight",
-wcsj: "Completion Time",
-gcsj: "Process Time",
-ksdqzl: "Initial Reading Weight",
-zhdqzl: "Final Reading Weight",
-qlfs: "Material Collection Method",
-slxx: "Feed Spreading Information",
-kzt: "Monitoring Chart",
-
-sjzl:"Designed Weight",
-sjzl1:"Actual Weight",
-
-zqxxq:"Accuracy Details",
-pfxgjl: "Formula Modification Record",
-pfmbxgjl: "Formula Template Modification Record",
-
-zwsj:"No Data Available",
-
-msg1: "Adjust the query time for all the following charts?",
-msg2: "Please enter the year.",
-msg3: "Please enter the start week and end week for the query.",
-msg4: "Please enter the month.",
-wwc: "Incomplete",
-bfwc: "Partially Completed",
-qbwc: "Fully Completed",
-sfyhjh: "Is it a premix",
-yh: "Premix",
-fyh: "Not premixed",
-export: "Export",
-xs: "Coefficient (%)",
-bl: "Proportion (%)",
-cczl: "Train Weight",
-slzls: "Feed Weight (KG)",
-
-
-
-}
+export default {
+  sumName: "Summary Statistics",
+  hltj: "Mixing statistics",
+  sltj: "Feed spreading statistics",
+  accName: "Accuracy Analysis",
+  typeName: "Statistical Type",
+  tjBydate: "Statistics by Date",
+
+  Driver: "Driver",
+  feedName: "Formula Name",
+  isHouseName: "Pens Name",
+  animelName: "Livestock Category",
+  projname: "Number of Times the Vehicle Was Used ",
+  isFeed: "Feed",
+  isTrainNumber: "Shift",
+  tmrName: "TMR equipment",
+
+  hlStartTime: "Mixing Start Time",
+  hlEndTime: "Mixing End Time",
+  hl: "Mixing",
+  sl: "Spread",
+
+  date: "Date",
+  drivername: "Vehicle Name",
+  stratJl: "Start of Feeding Time",
+  endJl: "End of Feeding Time",
+  llzl: "Theoretical weight",
+  acWeight: "Actual Weight",
+  sljhczs: "Planned feed spreslwcading operation count",
+  slczl: "Feed spreading operation rate",
+  slsj: "Spreading Time",
+  flstartTime: "Material Distribution Start Time",
+  waitTime: "Waiting Time",
+
+  slzdtzcs: "Automatic transition count for feed spreading",
+  slsdzdtzcs: "Manual transition count for feed spreading",
+  qxcs: "Cancellation Count",
+  slzqs: "Correct feed spreading count",
+  qcqxzql: "Correctness Rate Excluding Cancellations ",
+  bzc: "Standard deviation",
+  cz: "operation",
+  sxlb: "Livestock categories",
+  jshlczs: "Planned mixing operands",
+  yhlczs: "Operands that have been blended",
+  hlczl: "Mixing operation rate",
+  hlzdtzcs: "Automatic Mixture transition count",
+  hlsdzdtzcs: "Manual Mixture transition count",
+  hlzqs: "Correct number of mixed materials",
+  yclczs: "The count of operations for feed that has been spread",
+
+  statisticalTypeList: [
+    { id: "7", name: "Unclassified" },
+    { id: "0", name: "Driver" },
+    { id: "1", name: "Formula Name" },
+    { id: "2", name: "Pens Name" },
+    { id: "3", name: "Livestock Category" },
+    { id: "4", name: "Number of Times the Vehicle Was Used " },
+    { id: "5", name: "TMR Name" },
+    { id: "6", name: "Feed" },
+  ],
+  planName: "Planning Statistics",
+  day: "Day",
+  month: "Month",
+  confirm: "OK",
+  feedName: "Formula Name",
+  changeTable: "Switch Table",
+  qxznf: '"Please Select Year',
+  qxzz: "Please Select Week",
+  nf: "Year",
+  xztjcs: "Please Select Statistical Parameters",
+
+  qxz: "Please Select",
+  nqName: "Herd Accuracy Rate",
+  jhzql: "Planning Accuracy Rate",
+  jhzql1: "Planning Correctness Numbe",
+  jhzqll: "Planning Accuracy Rate (Excluding Canceled Weight)",
+  bfb: "Percentage",
+
+  jhzxzl: "Planned Execution Weight(kg)",
+  pfllzl: "Formula Theoretical Weight(kg)",
+  jhqxzl: "Planned Cancellation Weight(kg)",
+  jhs: "Planned Number",
+  clzql: "Vehicle Accuracy Rate(weight)",
+  jhzl: "Planned weight(kg)",
+  skzl: "Actual Weight(kg)",
+  zql: "Accuracy rate",
+  hlqxcs: "Planned Mixture cancellation count",
+  lsslsjtj: "Feed spreading time statistics in pens",
+  tmrnames: "TMR Name",
+
+  zdtzcs: "Automatic transition count",
+  sdtzcs: "Manual transition count",
+  zdtzsjzl: "Actual weight of automatic transition",
+  zdtzzql: "Automatic transition accuracy rate",
+  sdtzllzl: "Theoretical weight of manual transition",
+  sdtzsjzl: "Actual weight of manual transition",
+  sdtzzql: "Manual transition accuracy rate",
+  zdtzllzl: "Theoretical weight of automatic transition",
+  time: "Time",
+  pen: "Pen",
+  czNum: "Operation Number",
+  wcz: "Error Value",
+  planTime: "Planned time",
+  startTime: "Start time",
+  endTime: "End time",
+  jsTime: "Mix time",
+  stWeight: "Starting Weight",
+  edWeight: "Ending Weight",
+  isOK: "Is it up to standard",
+  area: "Area",
+  tzfs: "Transition method",
+  ccms: "Description",
+  sfytj: "Whether to Pre-calculate Statistics",
+  one: "First Shift",
+  two: "Second Shift",
+  three: "Third Shift",
+  four: "Fourth Shift",
+  five: "Fifth Shift",
+  six: "Sixth Shift",
+
+  sdtz: "Manual switch",
+  zdtz: "Auto switch",
+  qxtz: "Cancel switch",
+
+  //
+  hlwczs: "Mixing Tolerance Value",
+  hlzqls: "Mixing Accuracy Rate",
+  hlzql: "Mixing Correctness Rate",
+  slwcz: "Spreading Tolerance Value",
+  slzql: "Feed Spreading Accuracy Rate",
+  hlsj: "'Mixing time'",
+  hztjjsy: "Summary Statistics - Driver",
+  hztjpfmc: "Summary Statistics - Formula Name",
+  hztjwfl: "Summary Statistics - Unclassified",
+  hztjlsmz: "Summary Statistics - Pen Name",
+  hztjxslb: "Summary Statistics - Livestock Category",
+  hztjcc: "Summary Statistics - Vehicle Number",
+  hztjtmr: "Summary Statistics - TMR Name",
+  hztjsl: "Summary Statistics - Feed",
+  not: "Count",
+  tzcs: "Transition count",
+
+  ccxx: "Train Information",
+  zdrq: "Scheduling Date",
+  hlxx: "Mixture Information",
+  jhzl: "Planned Weight",
+  wcsj: "Completion Time",
+  gcsj: "Process Time",
+  ksdqzl: "Initial Reading Weight",
+  zhdqzl: "Final Reading Weight",
+  qlfs: "Material Collection Method",
+  slxx: "Feed Spreading Information",
+  kzt: "Monitoring Chart",
+
+  sjzl: "Designed Weight",
+  sjzl1: "Actual Weight",
+
+  zqxxq: "Accuracy Details",
+  pfxgjl: "Formula Modification Record",
+  pfmbxgjl: "Formula Template Modification Record",
+
+  zwsj: "No Data Available",
+
+  msg1: "Adjust the query time for all the following charts?",
+  msg2: "Please enter the year.",
+  msg3: "Please enter the start week and end week for the query.",
+  msg4: "Please enter the month.",
+  wwc: "Incomplete",
+  bfwc: "Partially Completed",
+  qbwc: "Fully Completed",
+  sfyhjh: "Is it a premix",
+  yh: "Premix",
+  fyh: "Not premixed",
+  export: "Export",
+  xs: "Coefficient (%)",
+  bl: "Proportion (%)",
+  cczl: "Train Weight",
+  slzls: "Feed Weight (KG)",
+  pfzql: "Formula Accuracy",
+};

+ 96 - 102
src/lang/en/langModule/feedChart.js

@@ -1,104 +1,98 @@
-export default{
-  sldl:"Feed Category",
-  slflmc:"Feed Classification",
-  slflbh:"Feed Classification Code",
-  sldlflbh:'"Feed Category/Feed Classification/Feed Classification Code cannot be empty',
-  sldlno:"Feed Category cannot be empty",
-  slflno:"Feed Classification cannot be empty",
-  slbhno:"Feed Classification Code cannot be empty",
-  slfltszi:" Cannot contain special characters",
-  slflxx:"Please select feed classification",
+export default {
+  sldl: "Feed Category",
+  slflmc: "Feed Classification",
+  slflbh: "Feed Classification Code",
+  sldlflbh:
+    "Feed Category/Feed Classification/Feed Classification Code cannot be empty",
+  slflbh1: "/Feed Classification/Feed Classification Code cannot be empty",
+  sldlno: "Feed Category cannot be empty",
+  slflno: "Feed Classification cannot be empty",
+  slbhno: "Feed Classification Code cannot be empty",
+  slfltszi: " Cannot contain special characters",
+  slflxx: "Please select feed classification",
 
+  sllb: "Feed Type",
+  slly: "Feed Source",
+  sz: "Setting",
+  slk: "Feed Inventory",
+  hqudsl: "Acquire UD Feed",
+  wllx: "Material Type",
+  wybm: "Unique Code",
+  slly: "Feed Source",
+  yxwcs: "Permissible Error Weight (kg)",
+  bzdwzl: "Packing Unit Weight (kg)",
+  dj: "Unit Price",
+  jdq: "Relay Position",
+  wsy: "Without Upper Domain",
+  byzd: "Spare Field",
+  byzd1: "Spare Field 01",
+  byzd2: "Spare Field 02",
+  byzd3: "Spare Field 03",
+  yes: "Yes",
+  no: "No",
+  yyjz: "Nutritional Value",
+  gl: "Association",
+  jcxx: "Basic Information",
+  slmc: "Feed Name",
+  jhlx: "Plan Type",
+  spalh: "SAP Location",
+  spabm: "SAP Code:",
+  jbcs: "Mixing Parameters",
+  tzzly: "Jump Weight Domain (kg):",
+  tzys: "Jump Delay:",
+  qrks: "Confirm Start:",
+  sfqy: "Enable",
+  xkc: "Minor Ingredient Scale",
+  zgslh: "China Feed Number",
+  price: "Price",
+  ypsm: "Sample Description",
+  wgz: "Dry Matter (DM%)",
+  cdb1: "Crude Protein (CP%DM)",
+  gai: "Calcium (Ca%DM)",
+  lin: "Phosphorus (P%DM)",
+  cnjn: "Milk production net energy(MJ) ",
+  chf: "Crude Ash (%)",
+  cl: "Coarse Material",
+  glzt: "Association Status",
+  df: "Starch (%DM)",
+  zf: "Fat (%DM)",
+  qxgl: "Cancel Association",
+  jinyong: "Disabled",
+  wu: "None",
 
-sllb: "Feed Type",
-slly: "Feed Source",
-sz: "Setting",
-slk: "Feed Inventory",
-hqudsl: "Acquire UD Feed",
-wllx: "Material Type",
-wybm: "Unique Code",
-slly: "Feed Source" ,
-yxwcs: "Permissible Error Weight (kg)",
-bzdwzl: "Packing Unit Weight (kg)",
-dj: "Unit Price",
-jdq: "Relay Position",
-wsy: "Without Upper Domain",
-byzd: "Spare Field",
-byzd1: "Spare Field 01",
-byzd2: "Spare Field 02",
-byzd3: "Spare Field 03",
-yes: "Yes",
-no: "No",
-yyjz: "Nutritional Value",
-gl: "Association",
-jcxx: "Basic Information",
-slmc: "Feed Name",
-jhlx: "Plan Type",
-spalh: "SAP Location",
-spabm: "SAP Code:",
-jbcs: "Mixing Parameters",
-tzzly: "Jump Weight Domain (kg):",
-tzys: "Jump Delay:",
-qrks: "Confirm Start:",
-sfqy: "Enable",
-xkc: "Minor Ingredient Scale",
-zgslh: "China Feed Number",
-price: "Price",
-ypsm: "Sample Description",
-wgz: "Dry Matter (DM%)",
-cdb1: "Crude Protein (CP%DM)",
-gai: "Calcium (Ca%DM)",
-lin: "Phosphorus (P%DM)",
-cnjn: "Milk production net energy ",
-chf: "Crude Ash (%)",
-cl: "Coarse Material",
-glzt: "Association Status",
-df: "Starch (%DM)" ,
-zf: "Fat (%DM)",
-qxgl: "Cancel Association",
-
-
-bzdwzlqsrzs: "Please enter a positive integer for the packaging unit weight.",
-djbllwxs: "Please keep the unit price to two decimal places.",
-tzzl050: "Please enter an integer between 0 and 50 for the transfer weight range.",
-
-tHeader: [
-  "Feed Name",
-  "Feed Category",
-  "Unique Code",
-  "Feed Source",
-  "Plan Type",
-  "Allowed Error (kg)",
-  "Package Unit Weight (kg)",
-  "Unit Price",
-  "Jump Weight Range (kg)",
-  "Jump Delay",
-  "Confirm Start",
-  "Relay Position",
-  "Upper Limit",
-  "Reserved Field 01",
-  "Reserved Field 02",
-  "Reserved Field 03",
-],
-tHeader2: [
-  "Feed Name",
-  "Feed Category",
-  "Unique Code",
-  "Feed Source",
-  "Plan Type",
-  "Allowed Error (kg)",
-  "Package Unit Weight (kg)",
-  "Unit Price",
-  "Jump Weight Range (kg)",
-  "Jump Delay",
-  "Confirm Start",
-  "Relay Position",
-  "Upper Limit",
-  "Reserved Field 01",
-  "Reserved Field 02",
-  "Reserved Field 03",
-  "Error Message"
-]
-
-
-}
+  tHeader: [
+    "Feed Name",
+    "Feed Category",
+    "Unique Code",
+    "Feed Source",
+    "Plan Type",
+    "Allowed Error (kg)",
+    "Unit Price",
+    "Jump Weight Range (kg)",
+    "Jump Delay",
+    "Confirm Start",
+    "Upper Limit",
+    "Reserved Field 01",
+    "Reserved Field 02",
+    "Reserved Field 03",
+  ],
+  tHeader2: [
+    "Feed Name",
+    "Feed Category",
+    "Unique Code",
+    "Feed Source",
+    "Plan Type",
+    "Allowed Error (kg)",
+    // "Package Unit Weight (kg)",
+    "Unit Price",
+    "Jump Weight Range (kg)",
+    "Jump Delay",
+    "Confirm Start",
+    // "Relay Position",
+    "Upper Limit",
+    "Reserved Field 01",
+    "Reserved Field 02",
+    "Reserved Field 03",
+    "Error Message",
+  ],
+};

+ 83 - 88
src/lang/en/langModule/feedingEfficiency.js

@@ -1,93 +1,88 @@
-export default{
-  xltj:"Efficiency statistics",
-  nxpg:'Cattle Herd Assessment',
-  pf:"Formulation",
-  pfmb:"Formula Template",
-  sjnts:"Actual head count of cattle",
-  yhll:"Required mixing quantity(kg)",
-  sjhll:"Actual mixing quantity(kg)",
-  sll:"Feed Spreading Quantity(kg)",
-  pjhlsj:"Average mixing tim",
-  ztsll:"Leftover Feed Transfer (kg)",
-  zrsll:"Yesterday's leftover feed quantity(kg)",
-  sll:"Residual Feed Rate(%)",
-  tmrgwz:"TMR DM(%)",
-  pfgwzcsl:"Formulated dry matter intake(kg/head)",
-  sjgwzcsl:"Actual DMI(kg/head)",
-  csl:"Feed Intake Rate(%)",
-  pfllcb:"Formula Theoretical Cost (per head/$)",
-  pfcb:"Formulacost (per head/$)",
-  sjcb:"Actual cost(per head/$)",
-  cnl:"Milk yield(kg/head)",
-  slzhl:"FCR(%)",
-  gjnclcb:"Cost of feed per kilogram of milk",
-  tbcxsj:"Icon Inquiry Time",
-  gwzcsl:"DMI",
-  nlsll:"Cow Barn Leftover Rate",
-  hlsjtj:"Feed Mixing Time Statistics",
-  zhl:"Conversion Rate",
-  cbfx:"Cost Analysis",
-  zhdmb:"Best Template",
-  gjnclcb1:"cost of feed per kilogram of milk($)",
-  cxlb:"Livestock Categories",
-  bzsfx:"PSPS",
+export default {
+  xltj: "Efficiency statistics",
+  nxpg: "Cattle Herd Assessment",
+  pf: "Formulation",
+  pfmb: "Formula Template",
+  sjnts: "Actual head count of cattle",
+  yhll: "Required mixing quantity(kg)",
+  sjhll: "Actual mixing quantity(kg)",
+  sll: "Feed Spreading Quantity(kg)",
+  pjhlsj: "Average mixing tim",
+  ztsll: "Leftover Feed Transfer (kg)",
+  zrsll: "Yesterday's leftover feed quantity(kg)",
+  sll: "Residual Feed Rate(%)",
+  tmrgwz: "TMR DM(%)",
+  pfgwzcsl: "Formulated dry matter intake(kg/head)",
+  sjgwzcsl: "Actual DMI(kg/head)",
+  csl: "Feed Intake Rate(%)",
+  pfllcb: "Formula Theoretical Cost (per head/$)",
+  pfcb: "Formulacost (per head/$)",
+  sjcb: "Actual cost(per head/$)",
+  cnl: "Milk yield(kg/head)",
+  slzhl: "FCR(%)",
+  gjnclcb: "Cost of feed per kilogram of milk",
+  tbcxsj: "Icon Inquiry Time",
+  gwzcsl: "DMI",
+  nlsll: "Cow Barn Leftover Rate",
+  hlsjtj: "Feed Mixing Time Statistics",
+  zhl: "Conversion Rate",
+  cbfx: "Cost Analysis",
+  zhdmb: "Best Template",
+  gjnclcb1: "cost of feed per kilogram of milk($)",
+  cxlb: "Livestock Categories",
+  bzsfx: "PSPS",
 
+  bzs: "Penn State Sieve",
+  dczl1: "First Layer Weight",
+  dcbfb1: "First Layer Percentage",
+  dczl2: "Second Layer Weight",
+  dcbfb2: "Second Layer Percentage",
+  dczl3: "Third Layer Weight",
+  dcbfb3: "Third Layer Percentage",
+  dczl4: "fourh layer percentagth Layer Weight",
+  dcbfb4: "Fourth Layer Percentage”",
+  ckbz: "Reference Standard",
+  fbsfx: "Fecal Screenin",
 
-bzs:"Penn State Sieve",
-dczl1:"First Layer Weight",
-dcbfb1:"First Layer Percentage",
-dczl2:"Second Layer Weight",
-dcbfb2:"Second Layer Percentage",
-dczl3:"Third Layer Weight",
-dcbfb3:"Third Layer Percentage",
-dczl4:"fourh layer percentagth Layer Weight",
-dcbfb4:"Fourth Layer Percentage”",
-ckbz:"Reference Standard",
-fbsfx:"Fecal Screenin",
+  tkpl: "Body Condition Scoring",
+  czybs: "Sample Size for Spot Checks",
+  mrts: "DIM",
+  bzfs: "Standard Score",
+  bfb1: "1 points(Quantity, Percentage)",
+  bfb2: "2 points(Quantity, Percentage)",
+  bfb3: "3 points(Quantity, Percentage)",
+  bfb4: "4 points(Quantity, Percentage)",
+  bfb5: "5 points(Quantity, Percentage)",
+  bfb25: "2.5 point(Quantity, Percentage)",
+  bfb275: "2.75 points(Quantity, Percentage)",
+  bfb3: "3分(Quantity, Percentage)",
+  bfb325: "3.25points(Quantity, Percentage)",
+  bfb35: "3.5 points(Quantity, Percentage)",
+  bfb375: "3.75 points(Quantity, Percentage)",
+  bfb44: "4+ points(Quantity, Percentage)",
 
-tkpl:"Body Condition Scoring",
-czybs:"Sample Size for Spot Checks",
-mrts:"DIM",
-bzfs:"Standard Score",
-bfb1:'1 points(Quantity, Percentage)',
-bfb2:'2 points(Quantity, Percentage)',
-bfb3:'3 points(Quantity, Percentage)',
-bfb4:'4 points(Quantity, Percentage)',
-bfb5:'5 points(Quantity, Percentage)',
-bfb25:'2.5 point(Quantity, Percentage)',
-bfb275:"2.75 points(Quantity, Percentage)",
-bfb325:"3.25points(Quantity, Percentage)",
-bfb35:"3.5 points(Quantity, Percentage)",
-bfb375:"3.75 points(Quantity, Percentage)",
-bfb44:"4+ points(Quantity, Percentage)",
+  fbpf: "Fecal Scoring",
+  dcskff: "Export Time Range",
+  dc: "Yield per Unit",
+  jrsll: "Today's Leftover Material(kg)",
+  mrngwzcl: "Dry Matter Intake (DMI) of Lactating Cows",
+  mc: "Ranch",
+  mrngwzcl1: "Dry Matter Intake (DMI) of Lactating Cows (kg)",
+  sll1: "Leftover Feed Rate",
+  csl1: "Feed Intake(kg)",
+  cnl1: "Milk yield",
+  //
+  fenz: "min",
+  sjfz: "Time (min)",
+  mrncsl: "Lactating Cow Feed Intake",
+  xltj1: "Efficiency Statistics - Formula",
+  xltj2: "Efficiency Statistics - Formula",
+  xltj3: "Efficiency Statistics - Livestock Category",
+  xltj4: "Efficiency Statistics - Shift",
+  xltj5: "Feeding Efficiency - Herd Assessment",
+  fbs: "Fecal Sieve",
 
-fbpf:"Fecal Scoring",
-dcskff:"Export Time Range",
-dc:"Yield per Unit",
-jrsll:"Today's Leftover Material(kg)",
-mrngwzcl:"Dry Matter Intake (DMI) of Lactating Cows",
-mc:"Ranch",
-mrngwzcl1:"Dry Matter Intake (DMI) of Lactating Cows (kg)",
-sll1:"Leftover feed rate",
-csl1:"Feed Intake(kg)",
-cnl1:"Milk yield",
-
-
-//
-fenz:"min",
-sjfz:'Time (min)',
-mrncsl:"Lactating Cow Feed Intake",
-xltj1:"Efficiency Statistics - Formula",
-xltj2:'Efficiency Statistics - Formula',
-xltj3:'Efficiency Statistics - Livestock Category',
-xltj4:'Efficiency Statistics - Shift',
-xltj5:'Feeding Efficiency - Herd Assessment',
-fbs:"Fecal Sieve",
-
-slls:"Leftover Feed",
-slls1:"Feed Spreading Quantity",
+  slls: "Leftover Feed",
   zql: "Accuracy Rate",
-  cnl2:"Milk yield(kg)",
-
-
-  }
+  cnl2: "Milk yield(kg)",
+};

+ 113 - 113
src/lang/en/langModule/formulationEvaluation.js

@@ -1,115 +1,115 @@
-export default{
-  qsrpfmc:"Please enter the formula name",
-  xzls:'Please select the stall',
-  pfmbzb:"Formula Template/Indicator",
-  nts:"head count",
-  tmrl:"TMR Feed",
-  csl:"Feed Intake",
-  cnjn:"Milk production net energy ",
-
-
-   nnnldw:"Dairy Cow Energy Units(NND)",
-   cdb:"Crude Protein(g)",
-   pfl:"Formula Quantity",
-   l:"Phosphorus(g)",
-   cnjndm:"Milk production net energy(MCal/DM)",
-   zf:"Fat(%DM)",
-   df:'Starch(%DM)',
-   dnf:"NDF(%DM)",
-   clzdnf:"Neutral Detergent Fiber (NDF) in Forage(%DM)",
-   adf:'ADF(%DM)',
-   ca:'Calcium(%DM)',
-   lin:"Phosphorus(%DM)",
-   jcb:"Concentrate to Forage Ratio(%)",
-   lszb:"Pens/Indicator",
-   nnxq:"Cows Need",
-   gwz:"Dry Matter(kg)",
-   slzhl:"(4.0)Feed Conversion Efficiency(kg/DM)",
-
-
-   rlcb:"Daily Feed Cost($)",
-   gwzcb:"Cost per Dry Matter($/kg)",
-   rgjncb:"Cost per Kilogram of Milk per Day($)",
-   lssjjl:"History Log Time",
-   pfmbb:"Formula Template Table",
-   pflx:"Formula type",
-   sfqy:"Is Enabled",
-   ly:"source",
-   pfmc:"Formula Name",
-   remark:"note",
-cancel:'Cancel',
-search:'Search',
-add:"Add",
-pfsc:"Formula Upload",
-enter:"Import",
-out:"Export",
-outmb:"Export Template",
-outsj:"Export Data",
-pfjl:"Formula Records",
-xh:"Serial Number",
-pfbm:"Formula code",
-rl:"Bulk Density(kg/m³)",
-pfys:"Formula color",
-
-bbh:'version number',
-nqlb:"Cattle Herd Categories",
-tzzly:"Transition Weight Range(kg)",
-pfbqb:"Formula Detail Table",
-pfmc:"Formula name",
-cclx:"Livestock Category",
-
-del:"Delete",
-hcyhl:"Synthetic Premix",
-ggsx:"Change Order",
-save:'Save',
-slmc:"Feed Name",
-slzmc:"Feed Group Name",
-reset:"Weight",
-reset1:"Weight(KG)",
-jbys:"mixing delay",
-sfsdntbs:"Lock the Head Count Ratio",
-sort:"Order",
-hide:"Hide",
-fd:'Zoom In',
-sx:'Zoom Out',
-jbys:"mixing delay",
-yxyspc:"Allowable Time Delay Tolerance(min)",
-jlqtj:"Stop Before Feeding",
-slz:"feed group",
-bbsj:"Version Time",
-feed:"feed",
-xgsj:"modification time",
-xgyh:"modifying user",
-slmcdw:"Feed Name(kg)",
-slzhl1:"(3.5)Feed Conversion Efficiency(kg/DM)",
-shi:'Yes',
-fou:"No",
-tHeader:['Formula Name', 'Formula Code', 'Livestock Category', 'Formula Type', 'Source', 'Remarks', 'Is Enabled', 'Feed Group', 'Feed Name', 'Weight (kg)', 'Mixing Delay (min)', 'Is the Ratio of Cattle Heads Locked', 'Order'],
-tHeader1:[
-  'Formula Name', 'Livestock Category', 'Formula Type', 'Remarks', 'Feed Group', 'Feed Name', 'Weight (kg)', 'Mixing Delay (min)', 'Is the Ratio of Cattle Heads Locked', 'Error Message'
+export default {
+  qsrpfmc: "Please enter the formula name",
+  xzls: "Please select the stall",
+  pfmbzb: "Formula Template/Indicator",
+  nts: "head count",
+  tmrl: "TMR Feed",
+  csl: "Feed Intake",
+  cnjn: "Milk production net energy(MJ) ",
+
+  nnnldw: "Dairy Cow Energy Units(NND)",
+  cdb: "Crude Protein(g)",
+  pfl: "Formula Quantity",
+  l: "Phosphorus(g)",
+  cnjndm: "Milk production net energy(MCal/DM)",
+  zf: "Fat(%DM)",
+  df: "Starch(%DM)",
+  dnf: "NDF(%DM)",
+  clzdnf: "Neutral Detergent Fiber (NDF) in Forage(%DM)",
+  adf: "ADF(%DM)",
+  ca: "Calcium(%DM)",
+  lin: "Phosphorus(%DM)",
+  jcb: "Concentrate to Forage Ratio(%)",
+  lszb: "Pens/Indicator",
+  nnxq: "Cows Need",
+  gwz: "Dry Matter(kg)",
+  slzhl: "(4.0)Feed Conversion Efficiency(kg/DM)",
+
+  rlcb: "Daily Feed Cost($)",
+  gwzcb: "Cost per Dry Matter($/kg)",
+  rgjncb: "Cost per Kilogram of Milk per Day($)",
+  lssjjl: "History Log Time",
+  pfmbb: "Formula Template Table",
+  pflx: "Formula type",
+  sfqy: "Is Enabled",
+  ly: "source",
+  pfmc: "Formula Name",
+  remark: "note",
+  cancel: "Cancel",
+  search: "Search",
+  add: "Add",
+  pfsc: "Formula Upload",
+  enter: "Import",
+  out: "Export",
+  outmb: "Export Template",
+  outsj: "Export Data",
+  pfjl: "Formula Records",
+  xh: "Serial Number",
+  pfbm: "Formula code",
+  rl: "Bulk Density(kg/m³)",
+  pfys: "Formula color",
+
+  bbh: "version number",
+  nqlb: "Cattle Herd Categories",
+  tzzly: "Transition Weight Range(kg)",
+  pfbqb: "Formula Detail Table",
+  pfmc: "Formula name",
+  cclx: "Livestock Category",
+
+  del: "Delete",
+  hcyhl: "Synthetic Premix",
+  ggsx: "Change Order",
+  save: "Save",
+  slmc: "Feed Name",
+  slzmc: "Feed Group Name",
+  reset: "Weight",
+  reset1: "Weight(KG)",
+  jbys: "mixing delay",
+  sfsdntbs: "Lock the Head Count Ratio",
+  sort: "Order",
+  hide: "Hide",
+  fd: "Zoom In",
+  sx: "Zoom Out",
+  jbys: "mixing delay",
+  yxyspc: "Allowable Time Delay Tolerance(min)",
+  jlqtj: "Stop Before Feeding",
+  slz: "feed group",
+  bbsj: "Version Time",
+  feed: "feed",
+  xgsj: "modification time",
+  xgyh: "modifying user",
+  slmcdw: "Feed Name(kg)",
+  slzhl1: "(3.5)Feed Conversion Efficiency(kg/DM)",
+  shi: "Yes",
+  fou: "No",
+  tHeader: [
+    "Formula Name",
+    "Formula Code",
+    "Livestock Category",
+    "Formula Type",
+    "Source",
+    "Remarks",
+    "Is Enabled",
+    "Feed Group",
+    "Feed Name",
+    "Weight (kg)",
+    "Mixing Delay (min)",
+    "Is the Ratio of Cattle Heads Locked",
+    "Order",
+  ],
+  tHeader1: [
+    "Formula Name",
+    "Livestock Category",
+    "Formula Type",
+    "Remarks",
+    "Feed Group",
+    "Feed Name",
+    "Weight (kg)",
+    "Mixing Delay (min)",
+    "Is the Ratio of Cattle Heads Locked",
+    "Error Message",
   ],
 
-   cdb1:"Crude Protein(%DM)"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
+  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",
+};

+ 45 - 62
src/lang/zn/langModule/InventoryManagement.js

@@ -1,62 +1,45 @@
-export default{
-  kctj:'库存统计',
-  yltj:"用料分析",
-  jgfx:"价格分析",
- silc:'饲料名称',
-   qc:'期初',
-   qckc:"期初库存(kg)",
-   qcje:"期初金额(元)",
-   yl:"用量",
-   xtckyl:"系统出库重量(kg)",
-   rkylzl:"入库重量(kg)",
-   rgylzl:"人工用料重量(kg)",
-   chzl:"损耗重量(kg)",
-   qm:'期末',
-   qmkc:"期末库存(kg)",
-   qmje:"期末金额(元)",
-   ylfx:"用料分析",
-   tjlx:"统计类型",
-   wc:"误差",
-   sfcfxl:"是否拆分小料",
-   rq:"日期",
-   tmrsbbh:"TMR设备编号",
-   lbxs:"列表显示",
-   tjlx:"统计类型",
-   qhzs:"切换展示",
-   tmrbcc:"TMR班次",
-
-   bcf:"不拆分",
-   cf:"拆分",
-   ll:"理论",
-   sj:"实际",
-
-   multiHeader:[['饲料名称', '期初', '', '用量', '', '', '', '期末', '']],
-   multiHeader2 : [['', '期初库存(kg)', '期初金额(元)', '入库重量(kg)', '系统出库重量(kg)', '人工用料重量(kg)', '损耗重量', '期末库存(kg)', '期末金额(元)']]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
+export default {
+  kctj: "库存统计",
+  yltj: "用料分析",
+  jgfx: "价格分析",
+  silc: "饲料名称",
+  qc: "期初",
+  qckc: "期初库存(kg)",
+  qcje: "期初金额(元)",
+  yl: "用量",
+  xtckyl: "系统出库重量(kg)",
+  rkylzl: "入库重量(kg)",
+  rgylzl: "人工用料重量(kg)",
+  chzl: "损耗重量(kg)",
+  qm: "期末",
+  qmkc: "期末库存(kg)",
+  qmje: "期末金额(元)",
+  ylfx: "用料分析",
+  tjlx: "统计类型",
+  wc: "误差",
+  sfcfxl: "是否拆分小料",
+  rq: "日期",
+  tmrsbbh: "TMR设备编号",
+  lbxs: "列表显示",
+  qhzs: "切换展示",
+  tmrbcc: "TMR班次",
+  bcf: "不拆分",
+  cf: "拆分",
+  ll: "理论",
+  sj: "实际",
+
+  multiHeader: [["饲料名称", "期初", "", "用量", "", "", "", "期末", ""]],
+  multiHeader2: [
+    [
+      "",
+      "期初库存(kg)",
+      "期初金额(元)",
+      "入库重量(kg)",
+      "系统出库重量(kg)",
+      "人工用料重量(kg)",
+      "损耗重量",
+      "期末库存(kg)",
+      "期末金额(元)",
+    ],
+  ],
+};

+ 0 - 3
src/lang/zn/langModule/common.js

@@ -20,8 +20,6 @@ export default {
   deleteSuccess: "删除成功",
   openGuide: "开启新手引导",
   requestMsg: "请求超时",
-  // logoIcon: require('../../../assets/images/logo1.png'),
-  // logoM: require('../../../assets/images/logo_u3.png'),
   logoIcon: require("../../../assets/images/logo-icon.jpg"),
   logoM: require("../../../assets/images/logo-en-m.png"),
   relogo: "重新登陆", //重新登陆
@@ -32,7 +30,6 @@ export default {
   to: "至",
   reset: "重置",
   query: "查询",
-  //
   tableMsg: "给我一点时间",
   noMsg: "暂无数据",
   delMsg: "是否确认删除此信息?",

+ 108 - 99
src/lang/zn/langModule/dashboard.js

@@ -1,105 +1,114 @@
-
 export default {
-  addDashboard: '添加看板',
-  dashboardName: '看板名称',
-  dashboardDesc: '看板描述',
-  addOrEditDashboard: '添加或编辑看板',
-  addChart: '添加图表',
-  shareLink: '分享链接',
-  emptyDashboardTip: '看板空空如也, 去创建新的图表吧!',
-  dashboardNamePlaceholder: '请输入看板名称',
-  dashboardDescPlaceholder: '请输入看板描述.',
-  dashboardList: '看板列表',
-  removeChartConfirm: '确定要把该图表从仪表盘中移除 ?',
-  chartQueryException: '图表:{0} 查询语句异常',
-  deleteConfirm: '确定要删除{0}仪表盘吗?',
-  noMessage:'暂无消息通知',
-  pureBlend:'混合饲料准确率',
-  spreadAc:'撒料准确率',
-  SpreadingCR:'撒料正确率',
-  yestday:'昨日',
-  yestday30:'近30天混料准确率',
-  yestday30S:'近30天撒料正确率',
-  yestday30SD:'近30天撒料偏差',
-  spreadSD:'撒料偏差',
-  mtime:'分钟',
-  todayTps:'今日计划统计',
-  StatisType:"统计类型",
-  typeAll:'全部',
-  Fixed:'固定式',
-  struck:'抛料车',
-  bout:"次",
-  cTrip:"完成车次",
-  pTrip:"计划车次",
-  cWeight:'完成重量',
-  pWeight:"计划重量",
-  rWright:'剩余重量',
-  costSts:'成本统计',
-  Export:'导出',
-  sTable:'切换表格',
-  tripCp:'重量完成率',
-  tripCp1:"车次完成率",
-  tripCpFont:'20',
-  WeightP:'重量完成率',
-  taskT:"任务进度",
-  table:{
-    date:"日期",
-    signOx:'单头牛饲料成本',
-    feedCow:'公斤奶饲料成本(元)',
-    PEWeight:'计划执行重量(kg)',
-    FTWeight:'配方理论重量(kg)',
-    PARate:'计划准确率',
-    PCWeight:"计划取消重量(kg)",
-    PCancelWeight:"计划准确率(去除取消重量)",
-    CNumP:"计划正确数",
-    CNumR:'计划正确率',
-    PNum:"计划数",
+  addDashboard: "添加看板",
+  dashboardName: "看板名称",
+  dashboardDesc: "看板描述",
+  addOrEditDashboard: "添加或编辑看板",
+  addChart: "添加图表",
+  shareLink: "分享链接",
+  emptyDashboardTip: "看板空空如也, 去创建新的图表吧!",
+  dashboardNamePlaceholder: "请输入看板名称",
+  dashboardDescPlaceholder: "请输入看板描述.",
+  dashboardList: "看板列表",
+  removeChartConfirm: "确定要把该图表从仪表盘中移除 ?",
+  chartQueryException: "图表:{0} 查询语句异常",
+  deleteConfirm: "确定要删除{0}仪表盘吗?",
+  noMessage: "暂无消息通知",
+  pureBlend: "混合准确率",
+  spreadAc: "撒料准确率",
+  SpreadingCR: "撒料正确率",
+  yestday: "昨日",
+  yestday30: "近30天混料准确率",
+  yestday30S: "近30天撒料正确率",
+  yestday30zq: "近30天撒料准确率",
+  yestday30SD: "近30天撒料偏差",
+  spreadSD: "撒料偏差",
+  mtime: "分钟",
+  todayTps: "今日计划统计",
+  StatisType: "统计类型",
+  typeAll: "全部",
+  Fixed: "固定式",
+  struck: "抛料车",
+  bout: "次",
+  cTrip: "完成车次",
+  pTrip: "计划车次",
+  cWeight: "完成重量",
+  pWeight: "计划重量",
+  rWright: "剩余重量",
+  costSts: "成本统计",
+  Export: "导出",
+  sTable: "切换表格",
+  tripCp: "重量完成率",
+  tripCp1: "车次完成率",
+  tripCpFont: "20",
+  WeightP: "重量完成率",
+  taskT: "任务进度",
+  table: {
+    date: "日期",
+    signOx: "单头牛饲料成本",
+    feedCow: "公斤奶饲料成本(元)",
+    PEWeight: "计划执行重量(kg)",
+    FTWeight: "配方理论重量(kg)",
+    PARate: "计划准确率",
+    PCWeight: "计划取消重量(kg)",
+    PCancelWeight: "计划准确率(去除取消重量)",
+    CNumP: "计划正确数",
+    CNumR: "计划正确率",
+    PNum: "计划数",
   },
-  feedCow:'公斤奶饲料成本',
-  tHeader:['日期', '单头牛饲料成本', '公斤奶饲料成本(元)'],
-  CostStatistics:'成本统计',
-  feedCows:'公斤奶\n饲料成本(元)',
-  signOxs:'单头牛\n饲料成本(元)',
-  timeTitle:'实时监控',
-  monitMsg:"当前无正在进行中车次",
-  curVeh:"当前车辆",
-  Dweight:'设计重量',
-  AWeight:'实际重量',
-  SWeight:'开始重量',
-  EWight:'结束重量',
-  yWeight:'重量(kg)',
-  xTime:"时间",
-  veh:'车辆',
-  feed:'饲料',
-  fname:'栏舍',
-  remark:"描述",
-  vehWeight:'当前车辆载重',
-  Pweight:"计划重量",
-  compaltRate:"完成度",
-  planSta:"计划统计",
-  cant:'百分比',
-  miruTitle:'泌乳牛干物质采食量',
-  miruMilk:"泌乳牛产奶量",
-  miruCow:"泌乳牛采食量",
-  miruMilk1:"泌乳牛产奶量(kg)",
-  miruCow1:"乳牛干物质采食量(kg)",
-  miruCowMilk:'泌乳牛干\n物质采食量',
-  mixStatic:'混料实际重量统计',
-  stockAlart:"库存预警",
-  stockTable:{
-    num:"序号",
-    feedName:'饲料名称',
-    stockNum:'库存量(Kg)',
-    lastDay:'剩余使用天数',
+  feedCow: "公斤奶饲料成本",
+  tHeader: ["日期", "单头牛饲料成本", "公斤奶饲料成本(元)"],
+  CostStatistics: "成本统计",
+  feedCows: "公斤奶\n饲料成本(元)",
+  signOxs: "单头牛\n饲料成本(元)",
+  timeTitle: "实时监控",
+  monitMsg: "当前无正在进行中车次",
+  curVeh: "当前车辆",
+  Dweight: "设计重量",
+  AWeight: "实际重量",
+  SWeight: "开始重量",
+  EWight: "结束重量",
+  yWeight: "重量(kg)",
+  xTime: "时间",
+  veh: "车辆",
+  feed: "饲料",
+  fname: "栏舍",
+  remark: "描述",
+  vehWeight: "当前车辆载重",
+  Pweight: "计划重量",
+  compaltRate: "完成度",
+  planSta: "计划统计",
+  cant: "百分比",
+  miruTitle: "泌乳牛干物质采食量",
+  miruMilk: "泌乳牛产奶量",
+  miruCow: "泌乳牛采食量",
+  miruMilk1: "泌乳牛产奶量(kg)",
+  miruCow1: "乳牛干物质采食量(kg)",
+  miruCowMilk: "泌乳牛干\n物质采食量",
+  mixStatic: "混料实际重量统计",
+  stockAlart: "库存预警",
+  stockTable: {
+    num: "序号",
+    feedName: "饲料名称",
+    stockNum: "库存量(Kg)",
+    lastDay: "剩余使用天数",
   },
 
-  tHeader1: ['日期', '计划执行重量(kg)', '配方理论重量(kg)', '计划准确率', '计划取消重量(kg)', '计划准确率(去除取消重量)', '计划正确数', '计划数', '计划正确率'],
-  sheetName1: '计划统计',
-
-  tHeader2: ['日期', '泌乳牛采食量(kg)', '泌乳牛产奶量(kg)'],
-  sheetName2: '泌乳牛采食量',
+  tHeader1: [
+    "日期",
+    "计划执行重量(kg)",
+    "配方理论重量(kg)",
+    "计划准确率",
+    "计划取消重量(kg)",
+    "计划准确率(去除取消重量)",
+    "计划正确数",
+    "计划数",
+    "计划正确率",
+  ],
+  sheetName1: "计划统计",
 
-  tHeader3: ['日期', '重量'],
-  sheetName3: '混料实际重量统计'
+  tHeader2: ["日期", "泌乳牛采食量(kg)", "泌乳牛产奶量(kg)"],
+  sheetName2: "泌乳牛采食量",
 
-}
+  tHeader3: ["日期", "重量"],
+  sheetName3: "混料实际重量统计",
+};

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

@@ -54,7 +54,7 @@ export default {
 
   jhzqlyjz: "计划准确率预警值(%):",
   slfpzb: "剩料分配占比原混料",
-  pfzqlyjz: "配方名称预警值(%):",
+  pfzqlyjz: "配方准确预警值(%):",
   nqzqlyjz: "牛群准确率预警值(%):",
   cczqlyjz: "车次准确率预警值(%):",
   hlzdtzzqlyj: "混料自动跳转准确率预警值(%):",

+ 52 - 75
src/lang/zn/langModule/driver.js

@@ -1,76 +1,53 @@
-export default{
-  drivername:'驾驶员名称',
-  drivercode:'驾驶员编号',
-  enableList: [{ id: 1, name: '是' }, { id: 0,  
-name: '否' }], // 是
-  
-  classname:"TMR设备类型",
-  rl:"容量(m³)",
-  clys:"车辆颜色",
-  sjcjkbh:"数据采集卡编号",
-  tzys:"跳转延时(s)",
-  tzys1:"跳转延时",
-  sjjk:"数据接口",
-  tmrsjjk:"TMR数据接口",
-  zdsb:"指定设备",
-
-  sbcode:"设备编号",
-  sbname:'设备名称',
-  sbtype:"设备类型",
-
-  equipmentTypeList: [{ id: '0', name: '设备' }, { id: '6', name: '推料车' }, { id: '7', name: '推粪车' }],
-
-  scfl:"牲畜父类",
-  scflcode:"牲畜类别编号",
-  scftype:"牲畜类别",
-  sclbfl:"牲畜类别父类",
-
-
-  lsmc:"栏舍名称",
-  lsbh:"栏舍编号",
-  xzsstj:"请点击选择搜索条件",
-  yxwcs:"允许误差数(kg)",
-  tzzly:"跳转重量域",
-  tzys:"跳转延时",
-  hqspanccode:"获取SAP编码",
-  hqudls:"获取UD栏舍",
-  qrks:"确认开始",
-  udcode:"ud编码",
-  udname:"ud名称",
-
-  messageNote:"当前内容未保存,请点击取消或保存继续进行操作",
-  message1:'栏舍名称/栏舍编号/牛舍类型/牛群不能为空',
-  message2:"栏舍名称不能为空 ",
-  message3:"栏舍编号不能为空 ",
+export default {
+  drivername: "驾驶员名称",
+  drivercode: "驾驶员编号",
+  enableList: [
+    { id: 1, name: "是" },
+    { id: 0, name: "否" },
+  ], // 是
+
+  classname: "TMR设备类型",
+  rl: "容量(m³)",
+  clys: "车辆颜色",
+  sjcjkbh: "数据采集卡编号",
+  tzys1: "跳转延时(s)",
+  tzys: "跳转延时",
+  sjjk: "数据接口",
+  tmrsjjk: "TMR数据接口",
+  zdsb: "指定设备",
+
+  sbcode: "设备编号",
+  sbname: "设备名称",
+  sbtype: "设备类型",
+
+  equipmentTypeList: [
+    { id: "0", name: "设备" },
+    { id: "6", name: "推料车" },
+    { id: "7", name: "推粪车" },
+  ],
+
+  scfl: "牲畜父类",
+  scflcode: "牲畜类别编号",
+  scftype: "牲畜类别",
+  sclbfl: "牲畜类别父类",
+
+  lsmc: "栏舍名称",
+  lsbh: "栏舍编号",
+  xzsstj: "请点击选择搜索条件",
+  yxwcs: "允许误差数(kg)",
+  tzzly: "跳转重量域(kg)",
+  hqspanccode: "获取SAP编码",
+  hqudls: "获取UD栏舍",
+  qrks: "确认开始",
+  udcode: "ud编码",
+  udname: "ud名称",
+
+  messageNote: "当前内容未保存,请点击取消或保存继续进行操作",
+  message1: "栏舍名称/栏舍编号/牛舍类型/牛群不能为空",
+  message2: "栏舍名称不能为空 ",
+  message3: "栏舍编号不能为空 ",
   //
-  qxzjsyxx:"请选择驾驶员信息",
-  saveFail: '保存失败',
-  saveSuccess:"保存成功"
-
-
-
- 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
+  qxzjsyxx: "请选择驾驶员信息",
+  saveFail: "保存失败",
+  saveSuccess: "保存成功",
+};

+ 6 - 2
src/lang/zn/langModule/errorAnalysis.js

@@ -32,6 +32,7 @@ export default {
   slsj: "撒料时间",
   flstartTime: "发料开始时间",
   waitTime: "等待时间",
+
   slzdtzcs: "撒料自动跳转次数",
   slsdzdtzcs: "撒料手动跳转次数",
   qxcs: "取消次数",
@@ -69,12 +70,14 @@ export default {
   qxzz: "请选择周",
   nf: "年份",
   xztjcs: "请选择统计参数",
+
   qxz: "请选择",
   nqName: "牛群准确率",
   jhzql: "计划准确率",
   jhzql1: "计划正确率",
   jhzqll: "计划准确率(去除取消重量)",
   bfb: "百分比",
+
   jhzxzl: "计划执行重量(kg)",
   pfllzl: "配方理论重量(kg)",
   jhqxzl: "计划取消重量(kg)",
@@ -86,6 +89,7 @@ export default {
   hlqxcs: "混料计划取消次数",
   lsslsjtj: "栏舍撒料时间统计",
   tmrnames: "TMR名称",
+
   zdtzcs: "自动跳转次数",
   sdtzcs: "手动跳转次数",
   zdtzsjzl: "自动跳转实际重量",
@@ -125,7 +129,7 @@ export default {
   hlzql: "混料正确率",
   slwcz: "撒料误差值",
   slzql: "撒料准确率",
-  hlsj: "'混料时间'",
+  hlsj: "混料时间",
   hztjjsy: "汇总统计—驾驶员",
   hztjpfmc: "汇总统计—配方名称",
   hztjwfl: "汇总统计-无分类",
@@ -170,9 +174,9 @@ export default {
   yh: "预混",
   fyh: "非预混",
   export: "导出",
-
   xs: "系数(%)",
   bl: "比例(%)",
   cczl: "车次重量",
   slzls: "饲料重量(KG)",
+  pfzql: "配方准确率",
 };

+ 97 - 103
src/lang/zn/langModule/feedChart.js

@@ -1,103 +1,97 @@
-export default{
-   sldl:"饲料大类",
-   slflmc:"饲料分类",
-   slflbh:"饲料分类编号",
-   sldlflbh:'饲料大类/饲料分类/饲料分类编号不能为空',
-   slflbh:"饲料分类/饲料分类编号不能为空",
-   sldlno:"饲料大类不能为空",
-   slflno:"饲料分类不能为空",
-   slbhno:"饲料分类编号不能为空",
-   slfltszi:"不可输入特殊字符",
-   slflxx:"请选择饲料分类信息",
-
-   sllb:"饲料类别",
-   slly:"饲料来源",
-   sz:"设置",
-   slk:"饲料库",
-   hqudsl:"获取UD饲料",
-   wllx:"物料类型",
-   wybm:"唯一编码",
-   slly:"饲料来源",
-   yxwcs:"允许误差数(kg)",
-   bzdwzl:"包装单位重量(kg)",
-   dj:"单价",
-   jdq:"继电器位置",
-   wsy:"无上域",
-   byzd:"备用字段",
-   byzd1:"备用字段01",
-   byzd2:"备用字段02",
-   byzd3:"备用字段03",
-    yes:"是",
-    no:"否",
-    yyjz:"营养价值",
-    gl:"关联",
-    jcxx:"基础信息",
-    slmc:"饲料名称",
-    jhlx:"计划类型",
-    spalh:"SAP货位",
-    spabm:"SAP编码:",
-    jbcs:"搅拌参数",
-    tzzly:"跳转重量域(kg):",
-    tzys:"跳转延时:",
-    qrks:"确认开始:",
-    sfqy:"是否启用",
-    xkc:"小料秤",
-    zgslh:"中国饲料号",
-    price:"价格",
-    ypsm:"样品说明",
-    wgz:"干物质(DM%)",
-    cdb:"粗蛋白(CP%DM)",
-    gai:"钙(Ca%DM)",
-    lin:"磷(P%DM)",
-    cnjn:"产奶净能(%DM)",
-    chf:"粗灰分(Ash%)",
-    cl:"粗料",
-    glzt:"关联状态",
-    df:"淀粉(%DM",
-    zf:"脂肪(%DM)",
-    qxgl:"取消关联",
-
-    //
-    tHeader: [
-      '饲料名称', '饲料分类', '唯一编码',  '饲料来源', '计划类型', '允许误差数(kg)', '包装单位重量(kg)', '单价', '跳转重量域(kg)', '跳转延时', '确认开始', '继电器位置', '无上域', '备用字段01', '备用字段02', '备用字段03'
-    ],
-    tHeader2: [
-      '饲料名称', '饲料分类', '唯一编码', '计划类型', '允许误差数(kg)', '包装单位重量(kg)', '单价', '跳转重量域(kg)', '跳转延时', '确认开始', '继电器位置', '无上域', '备用字段01', '备用字段02', '备用字段03', '错误信息'
-    ],
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
+export default {
+  sldl: "饲料大类",
+  slflmc: "饲料分类",
+  slflbh: "饲料分类编号",
+  sldlflbh: "饲料大类/饲料分类/饲料分类编号不能为空",
+  slflbh1: "饲料分类/饲料分类编号不能为空",
+  sldlno: "饲料大类不能为空",
+  slflno: "饲料分类不能为空",
+  slbhno: "饲料分类编号不能为空",
+  slfltszi: "不可输入特殊字符",
+  slflxx: "请选择饲料分类信息",
+
+  sllb: "饲料类别",
+  slly: "饲料来源",
+  sz: "设置",
+  slk: "饲料库",
+  hqudsl: "获取UD饲料",
+  wllx: "物料类型",
+  wybm: "唯一编码",
+  slly: "饲料来源",
+  yxwcs: "允许误差数(kg)",
+  bzdwzl: "包装单位重量(kg)",
+  dj: "单价",
+  jdq: "继电器位置",
+  wsy: "无上域",
+  byzd: "备用字段",
+  byzd1: "备用字段01",
+  byzd2: "备用字段02",
+  byzd3: "备用字段03",
+  yes: "是",
+  no: "否",
+  yyjz: "营养价值",
+  gl: "关联",
+  jcxx: "基础信息",
+  slmc: "饲料名称",
+  jhlx: "计划类型",
+  spalh: "SAP货位",
+  spabm: "SAP编码:",
+  jbcs: "搅拌参数",
+  tzzly: "跳转重量域(kg):",
+  tzys: "跳转延时:",
+  qrks: "确认开始:",
+  sfqy: "是否启用",
+  xkc: "小料秤",
+  zgslh: "中国饲料号",
+  price: "价格",
+  ypsm: "样品说明",
+  wgz: "干物质(DM%)",
+  cdb: "粗蛋白(CP%DM)",
+  gai: "钙(Ca%DM)",
+  lin: "磷(P%DM)",
+  cnjn: "产奶净能(%DM)",
+  chf: "粗灰分(Ash%)",
+  cl: "粗料",
+  glzt: "关联状态",
+  df: "淀粉(%DM",
+  zf: "脂肪(%DM)",
+  qxgl: "取消关联",
+  jinyong: "禁用",
+  wu: "无",
+
+  tHeader: [
+    "饲料名称",
+    "饲料分类",
+    "唯一编码",
+    "饲料来源",
+    "计划类型",
+    "允许误差数(kg)",
+    "单价",
+    "跳转重量域(kg)",
+    "跳转延时",
+    "确认开始",
+    "无上域",
+    "备用字段01",
+    "备用字段02",
+    "备用字段03",
+  ],
+
+  tHeader2: [
+    "饲料名称",
+    "饲料分类",
+    "唯一编码",
+    "计划类型",
+    "允许误差数(kg)",
+    // "包装单位重量(kg)",
+    "单价",
+    "跳转重量域(kg)",
+    "跳转延时",
+    "确认开始",
+    // "继电器位置",
+    "无上域",
+    "备用字段01",
+    "备用字段02",
+    "备用字段03",
+    "错误信息",
+  ],
+};

+ 83 - 87
src/lang/zn/langModule/feedingEfficiency.js

@@ -1,92 +1,88 @@
-export default{
-xltj:"效率统计",
-nxpg:'牛群评估',
-pf:"配方",
-pfmb:"配方模版",
-sjnts:"实际牛头数",
-yhll:"应混料量(kg)",
-sjhll:"实际混料量(kg)",
-slls1:"撒料量(kg)",
-pjhlsj:"平均混料时间",
-ztsll:"转投剩料量(kg)",
-zrsll:"昨日剩料量(kg)",
-sll:"剩料率(%)",
-tmrgwz:"TMR干物质(%)",
-pfgwzcsl:"配方干物质采食量(kg/头)",
-sjgwzcsl:"实际干物质采食量(kg/头)",
-csl:"采食率(%)",
-pfllcb:"配方理论成本",
-pfcb:"配方成本(元/头)",
-sjcb:"实际成本(元/头)",
-cnl:"产奶量(kg/头)",
-slzhl:"饲料转化率(%)",
-gjnclcb:"公斤奶饲料成本",
-tbcxsj:"图表查询时间",
-gwzcsl:"干物质采食量",
-nlsll:"牛栏剩料率",
-hlsjtj:"混料时间统计",
-zhl:"转化率",
-cbfx:"成本分析",
-zhdmb:"最好的模版",
-gjnclcb1:"公斤奶饲料成本(元)",
-cxlb:"牲畜类别",
-bzsfx:"宾州筛分析",
+export default {
+  xltj: "效率统计",
+  nxpg: "牛群评估",
+  pf: "配方",
+  pfmb: "配方模版",
+  sjnts: "实际牛头数",
+  yhll: "应混料量(kg)",
+  sjhll: "实际混料量(kg)",
+  slls1: "撒料量(kg)",
+  pjhlsj: "平均混料时间",
+  ztsll: "转投剩料量(kg)",
+  zrsll: "昨日剩料量(kg)",
+  sll: "剩料率(%)",
+  tmrgwz: "TMR干物质(%)",
+  pfgwzcsl: "配方干物质采食量(kg/头)",
+  sjgwzcsl: "实际干物质采食量(kg/头)",
+  csl: "采食率(%)",
+  pfllcb: "配方理论成本",
+  pfcb: "配方成本(元/头)",
+  sjcb: "实际成本(元/头)",
+  cnl: "产奶量(kg/头)",
+  slzhl: "饲料转化率(%)",
+  gjnclcb: "公斤奶饲料成本",
+  tbcxsj: "图表查询时间",
+  gwzcsl: "干物质采食量",
+  nlsll: "牛栏剩料率",
+  hlsjtj: "混料时间统计",
+  zhl: "转化率",
+  cbfx: "成本分析",
+  zhdmb: "最好的模版",
+  gjnclcb1: "公斤奶饲料成本(元)",
+  cxlb: "牲畜类别",
+  bzsfx: "宾州筛分析",
 
-bzs:"宾州筛",
-dczl1:"第一层重量",
-dcbfb1:"第一层百分比",
-dczl2:"第二层重量",
-dcbfb2:"第二层百分比",
-dczl3:"第三层重量",
-dcbfb3:"第三层百分比",
-dczl4:"第四层重量",
-dcbfb4:"第四层百分比",
-ckbz:"参考标准",
-fbsfx:"粪便筛分析",
+  bzs: "宾州筛",
+  dczl1: "第一层重量",
+  dcbfb1: "第一层百分比",
+  dczl2: "第二层重量",
+  dcbfb2: "第二层百分比",
+  dczl3: "第三层重量",
+  dcbfb3: "第三层百分比",
+  dczl4: "第四层重量",
+  dcbfb4: "第四层百分比",
+  ckbz: "参考标准",
+  fbsfx: "粪便筛分析",
 
-tkpl:"体况评分",
-czybs:"抽查样本数",
-mrts:"泌乳天数",
-bzfs:"标准分数",
-bfb1:'1分(数量、百分比)',
-bfb2:'2分(数量、百分比)',
-bfb3:'3分(数量、百分比)',
-bfb4:'4分(数量、百分比)',
-bfb5:'5分(数量、百分比)',
-bfb25:'2.5-分(数量、百分比)',
-bfb275:"2.75分(数量、百分比)",
-bfb3:"3分(数量、百分比)",
-bfb325:"3.25分(数量、百分比)",
-bfb35:"3.5分(数量、百分比)",
-bfb375:"3.75分(数量、百分比)",
-bfb44:"4+分(数量、百分比)",
+  tkpl: "体况评分",
+  czybs: "抽查样本数",
+  mrts: "泌乳天数",
+  bzfs: "标准分数",
+  bfb1: "1分(数量、百分比)",
+  bfb2: "2分(数量、百分比)",
+  bfb3: "3分(数量、百分比)",
+  bfb4: "4分(数量、百分比)",
+  bfb5: "5分(数量、百分比)",
+  bfb25: "2.5-分(数量、百分比)",
+  bfb275: "2.75分(数量、百分比)",
+  bfb3: "3分(数量、百分比)",
+  bfb325: "3.25分(数量、百分比)",
+  bfb35: "3.5分(数量、百分比)",
+  bfb375: "3.75分(数量、百分比)",
+  bfb44: "4+分(数量、百分比)",
 
-fbpf:"粪便评分",
-dcskff:"导出时间范围",
-dc:"单产",
-jrsll:"今日剩料量(kg)",
-mrngwzcl:"泌乳牛干物质采食量",
-mc:"牧场",
-mrngwzcl1:"泌乳牛干物质采食量 (kg)",
-sll1:"剩料率",
-csl1:"采食量(kg)",
-cnl1:"产奶量",
-//
-fenz:"分钟",
-sjfz:'时间(分钟)',
-mrncsl:"泌乳牛采食量",
-xltj1:"效率统计-配方",
-xltj2:'效率统计-栏舍',
-xltj3:'效率统计-牲畜类别',
-xltj4:'效率统计-班次',
-xltj5:'饲喂效率—牛群评估',
-fbs:"粪便筛",
-
-slls:"剩料量",
-slls1:"撒料量", // “Leftover Feed” 剩料量
-//“Feed Spreading Quantity” 撒料量
+  fbpf: "粪便评分",
+  dcskff: "导出时间范围",
+  dc: "单产",
+  jrsll: "今日剩料量(kg)",
+  mrngwzcl: "泌乳牛干物质采食量",
+  mc: "牧场",
+  mrngwzcl1: "泌乳牛干物质采食量 (kg)",
+  sll1: "剩料率",
+  csl1: "采食量(kg)",
+  cnl1: "产奶量",
+  //
+  fenz: "分钟",
+  sjfz: "时间(分钟)",
+  mrncsl: "泌乳牛采食量",
+  xltj1: "效率统计-配方",
+  xltj2: "效率统计-栏舍",
+  xltj3: "效率统计-牲畜类别",
+  xltj4: "效率统计-班次",
+  xltj5: "饲喂效率—牛群评估",
+  fbs: "粪便筛",
 
+  slls: "剩料量",
   zql: "准确率",
-cnl2:'产奶量(kg)'
-
-}
+  cnl2: "产奶量(kg)",
+};

+ 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管理",
+  测试: "测试",
+  消息管理: "消息管理",
+  剩料配置: "剩料配置",
+};

+ 108 - 75
src/lang/zn/langModule/premixedPlan.js

@@ -1,79 +1,112 @@
-export default{
+export default {
+  xzcc: "新增车次",
+  jscc: "减少车次",
+  sx: "生效",
+  jy1: "禁用",
+  tmrbh: "TMR编号",
+  sljhccgs: "撒料计划车次跟随:",
+  zdjbl: "最大搅拌量(KG)",
+  hlzl: "混料重量",
+  fljhcsgs: "发料计划车次跟随",
+  time: "时间",
 
-xzcc:"新增车次",
-jscc:"减少车次",
-sx:"生效",
-jy1:"禁用",
-tmrbh:"TMR编号",
-sljhccgs:"撒料计划车次跟随:",
-zdjbl:"最大搅拌量(KG)",
-hlzl:"混料重量",
-fljhcsgs:"发料计划车次跟随",
-time:"时间:",
+  jy: "校验",
+  zdsc: "自动生成",
+  save: "保存",
+  qkyfls: "清空已分配栏舍",
+  bc: "班次",
+  lsjl: "历史记录",
+  ms: "描述",
+  zdzl: "最大重量",
+  hjzl: "合计重量",
+  pfmb: "模板配方",
+  wlxq: "物料详情",
+  xq: "详情",
+  sftqcfxl: "是否提前小料拆分",
+  rlzt: "容量状态",
+  sl: "撒料",
+  lsqc: "栏舍全称",
+  slzl: "饲料重量",
+  slc: "撒料车",
+  qxzzdscfa1: "请选择自动生成方式",
+  qxzzdscfa2: "清空计划并生成新计划",
+  qxzzdscfa3: "当前计划基础上继续生成计划",
+  jxsc: "继续生成",
+  cxsc: "重新生成",
+  weight: "重量",
+  zb: "占比",
+  wl: "物料",
+  fpsl: "分配撒料",
+  clrj: "车辆容积量",
+  rjl: "容积量",
+  qk: "清空",
+  tlc: "推料车",
+  status: "状态",
+  ls: "栏舍",
+  clbm: "车辆编码",
+  tljh: "推料计划",
 
-jy:"校验",
-zdsc:"自动生成",
-save:"保存",
-qkyfls:"清空已分配栏舍",
-bc:"班次",
-lsjl:"历史记录",
-ms:"描述",
-zdzl:"最大重量",
-hjzl:"合计重量",
-pfmb:"模板配方",
-wlxq:"物料详情",
-xq:"详情",
-sftqcfxl:"是否提前小料拆分",
-rlzt:"容量状态",
-sl:"撒料",
-lsqc:"栏舍全称",
-slzl:"饲料重量",
-slc:"撒料车",
-qxzzdscfa1:'请选择自动生成方式',
-qxzzdscfa2:"清空计划并生成新计划",
-qxzzdscfa3:"当前计划基础上继续生成计划",
-jxsc:"继续生成",
-cxsc:"重新生成",
-weight:"重量",
-zb:"占比",
-wl:"物料",
-fpsl:"分配撒料",
-clrj:"车辆容积量",
-rjl:"容积量",
-qk:"清空",
-tlc:"推料车",
-status:'状态',
-ls:"栏舍",
-clbm:"车辆编码",
-tljh:"推料计划",
+  jscc: "减少车次",
+  slclfs: "剩料处理方式",
+  ztls: "转投栏舍",
+  cci: "车次:",
+  lsname: "栏舍名称:",
 
-jscc:"减少车次",
-slclfs:"剩料处理方式",
-ztls:"转投栏舍",
-cci:"车次:",
-lsname:"栏舍名称:",
+  fuzhi: "复制",
+  taici: "胎次",
+  pjmrts: "平均泌乳天数",
+  hyts: "怀孕天数",
+  cnl: "产奶量(kg/头)",
+  jlr: "记录人",
+  sxsj: "生效时间",
+  sxrq: "生效日期",
+  jlr: "记录人:",
+  lsxx: "栏舍信息",
+  sxlb: "牲畜类别:",
+  nts: "牛头数:",
 
-fuzhi:'复制',
-taici:"胎次",
-pjmrts:"平均泌乳天数",
-hyts:"怀孕天数",
-cnl:"产奶量(kg/头)",
-jlr:"记录人",
-sxsj:"生效时间",
-sxrq:"生效日期",
-jlr:"记录人:",
-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: "操作人",
+};

+ 4 - 4
src/utils/request.js

@@ -16,8 +16,8 @@ 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 + ":8082"
+// if (reg.test(browserUrl)) {
+//   URL = window.location.protocol + "//" + browserUrl + ":8081/";
 // }
 
 Cookies.set("url", URL);
@@ -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,
       });

+ 144 - 144
src/views/basicData/defaultParameter/earlyWarning/index.vue

@@ -244,7 +244,7 @@
         class="save"
         :disabled="isokDisable"
         @click="handleSave"
-        >{{ $t('formulationEvaluation.save') }}</el-button
+        >{{ $t("formulationEvaluation.save") }}</el-button
       >
       <el-button
         v-if="isRoleEdit"
@@ -252,7 +252,7 @@
         :disabled="isokDisable"
         @click="handleRecovery"
       >
-        {{ $t('defaultParameter.hfmr') }}</el-button
+        {{ $t("defaultParameter.hfmr") }}</el-button
       >
     </div>
     <el-dialog
@@ -264,41 +264,41 @@
     >
       <div class="app-description dialogMinHeight">
         <div class="content">
-          {{ $t('defaultParameter.emsg1') }}
+          {{ $t("defaultParameter.emsg1") }}
           <br />
 
-          {{ $t('defaultParameter.emsg2') }}
+          {{ $t("defaultParameter.emsg2") }}
           <br />
-          {{ $t('defaultParameter.emsg3') }}
+          {{ $t("defaultParameter.emsg3") }}
           <br />
-          {{ $t('defaultParameter.emsg4') }}
+          {{ $t("defaultParameter.emsg4") }}
           <br />
-          {{ $t('defaultParameter.emsg5') }}
+          {{ $t("defaultParameter.emsg5") }}
           <br />
-          {{ $t('defaultParameter.emsg6') }}
+          {{ $t("defaultParameter.emsg6") }}
           <br />
-          {{ $t('defaultParameter.emsg7') }}
+          {{ $t("defaultParameter.emsg7") }}
           <br />
-          {{ $t('defaultParameter.emsg8') }}
+          {{ $t("defaultParameter.emsg8") }}
           <br />
-          {{ $t('defaultParameter.emsg9') }}
+          {{ $t("defaultParameter.emsg9") }}
           <br />
-          {{ $t('defaultParameter.emsg10') }}
+          {{ $t("defaultParameter.emsg10") }}
           <br />
-          {{ $t('defaultParameter.emsg11') }}
+          {{ $t("defaultParameter.emsg11") }}
           <br />
-          {{ $t('defaultParameter.emsg12') }}
+          {{ $t("defaultParameter.emsg12") }}
           <br />
-          {{ $t('defaultParameter.emsg13') }}
+          {{ $t("defaultParameter.emsg13") }}
           <br />
-          {{ $t('defaultParameter.emsg14') }}
+          {{ $t("defaultParameter.emsg14") }}
         </div>
       </div>
       <div slot="footer" class="dialog-footer">
         <el-button
           class="cancelClose"
           @click="description.dialogFormVisible = false"
-          >{{ $t('common.closed') }}</el-button
+          >{{ $t("common.closed") }}</el-button
         >
       </div>
     </el-dialog>
@@ -312,82 +312,82 @@ import {
   GetDataByNames,
   failproccess,
   checkButtons,
-  ExecDataByConfig
-} from '@/api/common'
-import Cookies from 'js-cookie'
-import { MessageBox } from 'element-ui'
+  ExecDataByConfig,
+} from "@/api/common";
+import Cookies from "js-cookie";
+import { MessageBox } from "element-ui";
 export default {
-  name: 'DefaultParameter',
+  name: "DefaultParameter",
   data() {
     return {
       isRoleEdit: [],
       planBeforeDayList: [
-        { id: '1', name: this.$t('supplier.yes') },
-        { id: '0', name: this.$t('supplier.no') }
+        { id: "1", name: this.$t("supplier.yes") },
+        { id: "0", name: this.$t("supplier.no") },
       ], // 是否可取前一天计划
       planNextDayList: [
-        { id: '1', name: this.$t('supplier.yes') },
-        { id: '0', name: this.$t('supplier.no') }
+        { id: "1", name: this.$t("supplier.yes") },
+        { id: "0", name: this.$t("supplier.no") },
       ], // 是否可取后一天计划
       isSupplementList: [
-        { id: '1', name: this.$t('supplier.yes') },
-        { id: '0', name: this.$t('supplier.no') }
+        { id: "1", name: this.$t("supplier.yes") },
+        { id: "0", name: this.$t("supplier.no") },
       ], // 是否启用补料
       isLeftoverMaterialList: [
-        { id: '1', name: this.$t('supplier.yes') },
-        { id: '0', name: this.$t('supplier.no') }
+        { id: "1", name: this.$t("supplier.yes") },
+        { id: "0", name: this.$t("supplier.no") },
       ], // 是否启用剩料
       decimalPlacesList: [
-        { id: '0', name: this.$t('supplier.zs') },
-        { id: '1', name: this.$t('supplier.xs1') },
-        { id: '2', name: this.$t('supplier.xs2') },
-        { id: '3', name: this.$t('supplier.xs3') }
+        { id: "0", name: this.$t("supplier.zs") },
+        { id: "1", name: this.$t("supplier.xs1") },
+        { id: "2", name: this.$t("supplier.xs2") },
+        { id: "3", name: this.$t("supplier.xs3") },
       ], // 日计划报表小数点位数
       isLockBullsList: [
-        { id: '1', name: this.$t('supplier.yes') },
-        { id: '0', name: this.$t('supplier.no') }
+        { id: "1", name: this.$t("supplier.yes") },
+        { id: "0", name: this.$t("supplier.no") },
       ], // 启用饲料锁定牛头数
       disposalList: [], // 剩料处理选项
       waterConditioningList: [
-        { id: '0', name: this.$t('defaultParameter.qz') },
-        { id: '1', name: this.$t('defaultParameter.bcl') },
-        { id: '2', name: this.$t('defaultParameter.bcl') }
+        { id: "0", name: this.$t("defaultParameter.qz") },
+        { id: "1", name: this.$t("defaultParameter.bcl") },
+        { id: "2", name: this.$t("defaultParameter.bcl") },
       ], // 水分调节选项
       priceCalculationList: [
-        { id: '1', name: this.$t('supplier.yes') },
-        { id: '0', name: this.$t('supplier.no') }
+        { id: "1", name: this.$t("supplier.yes") },
+        { id: "0", name: this.$t("supplier.no") },
       ], // 是否启用库存管理
       numberList: [
-        { id: '0', name: '1' },
-        { id: '1', name: '2' },
-        { id: '2', name: '3' },
-        { id: '3', name: '4' }
+        { id: "0", name: "1" },
+        { id: "1", name: "2" },
+        { id: "2", name: "3" },
+        { id: "3", name: "4" },
       ], // 班次数量
       feedontractList: [
-        { id: '1', name: this.$t('supplier.yes') },
-        { id: '0', name: this.$t('supplier.no') }
+        { id: "1", name: this.$t("supplier.yes") },
+        { id: "0", name: this.$t("supplier.no") },
       ], // 是否启用饲料合同
       leftoverMaterialList: [
-        { id: '0', name: this.$t('supplier.defb') },
-        { id: '1', name: this.$t('supplier.slfb') }
+        { id: "0", name: this.$t("supplier.defb") },
+        { id: "1", name: this.$t("supplier.slfb") },
       ],
       requestParams: [
         {
-          name: 'getRemainFeedList',
+          name: "getRemainFeedList",
           offset: 0,
           pagecount: 0,
-          parammaps: { pastureid: Cookies.get('pastureid') }
-        }
+          parammaps: { pastureid: Cookies.get("pastureid") },
+        },
       ],
       getdataListParm: {
-        name: 'getysoptList',
+        name: "getysoptList",
         page: 1,
         offset: 1,
         pagecount: 10,
-        returntype: 'Map',
+        returntype: "Map",
         parammaps: {
-          pastureid: Cookies.get('pastureid')
-        }
+          pastureid: Cookies.get("pastureid"),
+        },
       },
       tableKey: 0,
       listLoading: true,
@@ -396,59 +396,59 @@ export default {
       isokDisable: false,
       description: {
         dialogFormVisible: false,
-        dialogStatus: ''
+        dialogStatus: "",
       },
       textMap: {
-        description: this.$t('supplier.cssm')
+        description: this.$t("supplier.cssm"),
       },
-      requestParam: {}
-    }
+      requestParam: {},
+    };
   },
   created() {
-    this.getList()
-    this.getButtons()
-    this.getDownList()
+    this.getList();
+    this.getButtons();
+    this.getDownList();
   },
 
   methods: {
     getButtons() {
-      const Edit = 'DefaultParameter'
+      const Edit = "DefaultParameter";
       const isRoleEdit = checkButtons(
-        JSON.parse(sessionStorage.getItem('buttons')),
+        JSON.parse(sessionStorage.getItem("buttons")),
         Edit
-      )
-      this.isRoleEdit = isRoleEdit
+      );
+      this.isRoleEdit = isRoleEdit;
     },
     getDownList() {
       GetDataByNames(this.requestParams).then((response) => {
-        this.disposalList = response.data.getRemainFeedList.list
-      })
+        this.disposalList = response.data.getRemainFeedList.list;
+      });
     },
     getList() {
-      this.listLoading = true
+      this.listLoading = true;
       GetDataByName(this.getdataListParm).then((response) => {
-        console.log('table1数据', response.data.list)
+        console.log("table1数据", response.data.list);
         if (response.data.list !== null) {
-          this.createTemp = response.data.list[0]
+          this.createTemp = response.data.list[0];
         } else {
-          this.list = []
+          this.list = [];
         }
         setTimeout(() => {
-          this.listLoading = false
-        }, 100)
-      })
+          this.listLoading = false;
+        }, 100);
+      });
     },
     handleSave() {
-      console.log('点击了保存')
-      this.isokDisable = true
+      console.log("点击了保存");
+      this.isokDisable = true;
       setTimeout(() => {
-        this.isokDisable = false
-      }, 1000)
-      this.requestParam.common = { returnmap: '0' }
-      this.requestParam.data = []
+        this.isokDisable = false;
+      }, 1000);
+      this.requestParam.common = { returnmap: "0" };
+      this.requestParam.data = [];
       this.requestParam.data[0] = {
-        name: 'updatesysopt',
-        type: 'e',
+        name: "updatesysopt",
+        type: "e",
         parammaps: {
           pastureid: this.createTemp.pastureid,
           isGetLastPlan: this.createTemp.isGetLastPlan,
@@ -466,92 +466,92 @@ export default {
           times: this.createTemp.times,
           isEnableContract: this.createTemp.isEnableContract,
           remainOptDis: this.createTemp.remainOptDis,
-          remainOptRate: this.createTemp.remainOptRate
-        }
-      }
+          remainOptRate: this.createTemp.remainOptRate,
+        },
+      };
       this.requestParam.data[1] = {
-        name: 'updateFPbyFTChangeALL',
-        type: 'e',
+        name: "updateFPbyFTChangeALL",
+        type: "e",
         parammaps: {
-          pastureid: this.createTemp.pastureid
-        }
-      }
+          pastureid: this.createTemp.pastureid,
+        },
+      };
 
       ExecDataByConfig(this.requestParam).then((response) => {
-        console.log('保存发送参数', this.requestParam)
-        if (response.msg !== 'fail') {
+        console.log("保存发送参数", this.requestParam);
+        if (response.msg !== "fail") {
           this.$notify({
-            title: this.$t('common.succes'),
-            message: this.$t('driver.saveSuccess'),
-            type: 'success',
-            duration: 2000
-          })
-          this.getList()
+            title: this.$t("common.succes"),
+            message: this.$t("driver.saveSuccess"),
+            type: "success",
+            duration: 2000,
+          });
+          this.getList();
         } else {
           this.$notify({
-            title: this.$t('driver.saveFail'),
+            title: this.$t("driver.saveFail"),
             message: response.data,
-            type: 'warning',
-            duration: 2000
-          })
+            type: "warning",
+            duration: 2000,
+          });
         }
-      })
+      });
     },
     handleRecovery() {
-      console.log('点击了恢复默认')
-      this.isokDisable = true
+      console.log("点击了恢复默认");
+      this.isokDisable = true;
       setTimeout(() => {
-        this.isokDisable = false
-      }, 1000)
-      MessageBox.confirm(this.$t('defaultParameter.config'), {
-        confirmButtonText: this.$t('common.confirm'),
-        cancelButtonText: this.$t('common.cancel'),
-        type: 'warning'
+        this.isokDisable = false;
+      }, 1000);
+      MessageBox.confirm(this.$t("defaultParameter.config"), {
+        confirmButtonText: this.$t("common.confirm"),
+        cancelButtonText: this.$t("common.cancel"),
+        type: "warning",
       }).then(() => {
-        this.requestParam.common = { returnmap: '0' }
-        this.requestParam.data = []
+        this.requestParam.common = { returnmap: "0" };
+        this.requestParam.data = [];
         this.requestParam.data[0] = {
-          name: 'updatesysoptinit',
-          type: 'e',
+          name: "updatesysoptinit",
+          type: "e",
           parammaps: {
-            pastureid: this.createTemp.pastureid
-          }
-        }
+            pastureid: this.createTemp.pastureid,
+          },
+        };
         this.requestParam.data[1] = {
-          name: 'updateFPbyFTChangeALL',
-          type: 'e',
+          name: "updateFPbyFTChangeALL",
+          type: "e",
           parammaps: {
-            pastureid: this.createTemp.pastureid
-          }
-        }
+            pastureid: this.createTemp.pastureid,
+          },
+        };
 
         ExecDataByConfig(this.requestParam).then((response) => {
-          console.log('保存发送参数', this.requestParam)
-          if (response.msg !== 'fail') {
+          console.log("保存发送参数", this.requestParam);
+          if (response.msg !== "fail") {
             this.$notify({
-              title: this.$t('common.succes'),
-              message: this.$t('driver.saveSuccess'),
-              type: 'success',
-              duration: 2000
-            })
-            this.getList()
+              title: this.$t("common.succes"),
+              message: this.$t("driver.saveSuccess"),
+              type: "success",
+              duration: 2000,
+            });
+            this.getList();
           } else {
             this.$notify({
-              title: this.$t('driver.saveFail'),
+              title: this.$t("driver.saveFail"),
               message: response.data,
-              type: 'warning',
-              duration: 2000
-            })
+              type: "warning",
+              duration: 2000,
+            });
           }
-        })
-      })
+        });
+      });
     },
     handleDescription() {
-      this.description.dialogStatus = 'description'
-      this.description.dialogFormVisible = true
-    }
-  }
-}
+      this.description.dialogStatus = "description";
+      this.description.dialogFormVisible = true;
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
 .app-description {

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 686 - 254
src/views/basicData/equipmentTMR/index.vue


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 346 - 350
src/views/basicData/feedTable/index.vue


+ 1095 - 481
src/views/basicData/groupColumn/index.vue

@@ -1,45 +1,162 @@
 <template>
   <div class="app-container">
     <div class="search">
-      <el-input v-model="table.getdataListParm.parammaps.bname" :placeholder="$t('driver.lsmc')" style="width: 180px;" class="filter-item" clearable />
-      <el-input v-model="table.getdataListParm.parammaps.bcode" :placeholder="$t('driver.lsbh')" style="width: 180px;" class="filter-item" clearable />
-      <el-select v-model="table.getdataListParm.parammaps.enable" filterable :placeholder="$t('formulationEvaluation.sfqy')" class="filter-item" style="width: 120px;" clearable>
-        <el-option v-for="item in enableList" :key="item.id" :label="item.name" :value="item.id" />
+      <el-input
+        v-model="table.getdataListParm.parammaps.bname"
+        :placeholder="$t('driver.lsmc')"
+        style="width: 180px"
+        class="filter-item"
+        clearable
+      />
+      <el-input
+        v-model="table.getdataListParm.parammaps.bcode"
+        :placeholder="$t('driver.lsbh')"
+        style="width: 180px"
+        class="filter-item"
+        clearable
+      />
+      <el-select
+        v-model="table.getdataListParm.parammaps.enable"
+        filterable
+        :placeholder="$t('formulationEvaluation.sfqy')"
+        class="filter-item"
+        style="width: 120px"
+        clearable
+      >
+        <el-option
+          v-for="item in enableList"
+          :key="item.id"
+          :label="item.name"
+          :value="item.id"
+        />
       </el-select>
       <div ref="selectInput" class="filter-item selectInput">
-        <el-input type="text" name="" value="" :placeholder="$t('driver.xzsstj')" class="Input" />
-        <i v-if="arrowDown" icon="el-icon-arrow-down" class="el-icon-arrow-down" />
+        <el-input
+          type="text"
+          name=""
+          value=""
+          :placeholder="$t('driver.xzsstj')"
+          class="Input"
+        />
+        <i
+          v-if="arrowDown"
+          icon="el-icon-arrow-down"
+          class="el-icon-arrow-down"
+        />
         <i v-if="arrowUp" icon="el-icon-arrow-up" class="el-icon-arrow-up" />
         <ul v-if="arrowUp" class="selectUl">
-          <li><a>{{$t('driver.yxwcs')}}</a><el-input v-model="table.getdataListParm.parammaps.allowratio" type="text" style="width: 245px;" /></li>
-          <li><a>{{$t('driver.tzzly')}}</a><el-input v-model="table.getdataListParm.parammaps.autozone" type="text" style="width: 245px;" /></li>
           <li>
-            <a>{{$t('driver.tzys')}}</a>
-            <el-select v-model="table.getdataListParm.parammaps.autosecond" filterable class="filter-item" style="width: 245px;" clearable>
-              <el-option v-for="item in jumpDelayList" :key="item.value" :label="item.label" :value="item.value" />
+            <a>{{ $t("driver.yxwcs") }}</a
+            ><el-input
+              v-model="table.getdataListParm.parammaps.allowratio"
+              type="text"
+              style="width: 245px"
+            />
+          </li>
+          <li>
+            <a>{{ $t("driver.tzzly") }}</a
+            ><el-input
+              v-model="table.getdataListParm.parammaps.autozone"
+              type="text"
+              style="width: 245px"
+            />
+          </li>
+          <li>
+            <a>{{ $t("driver.tzys1") }}</a>
+            <el-select
+              v-model="table.getdataListParm.parammaps.autosecond"
+              filterable
+              class="filter-item"
+              style="width: 245px"
+              clearable
+            >
+              <el-option
+                v-for="item in jumpDelayList"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
             </el-select>
           </li>
           <li>
-            <div style="float: right;">
-              <el-button class="downminCancel" @click="arrowUp=false;arrowDown=true;">{{$t('formulationEvaluation.cancel')}}</el-button>
-              <el-button class="miniPrimary" @click="form_search">{{$t('formulationEvaluation.search')}}</el-button>
+            <div style="float: right">
+              <el-button
+                class="downminCancel"
+                @click="
+                  arrowUp = false;
+                  arrowDown = true;
+                "
+                >{{ $t("formulationEvaluation.cancel") }}</el-button
+              >
+              <el-button class="miniPrimary" @click="form_search">{{
+                $t("formulationEvaluation.search")
+              }}</el-button>
             </div>
           </li>
         </ul>
       </div>
-      <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" style="float:left;" class="success" icon="el-icon-plus" @click="handleCreate">{{$t('formulationEvaluation.add')}}</el-button>
-      <el-button v-if="isRoleEdit" style="float:left;" class="danger" icon="el-icon-delete" @click="form_delete">{{$t('formulationEvaluation.del')}}</el-button>
-      <el-button v-if="isOrder && isRoleEdit" style="float:left;" icon="el-icon-sort" class="success" @click="handleChangeOrder">{{$t('formulationEvaluation.ggsx')}}</el-button>
-       <div v-else style="float:left;margin-left: 10px;">
-        <el-button v-if="isRoleEdit" icon="el-icon-folder-checked" class="success" @click="saveChangeOrder">{{$t('formulationEvaluation.save')}}</el-button>
-        <el-button v-if="isRoleEdit" icon="el-icon-close" class="sortCancel" @click="cancelChangeOrder">{{$t('formulationEvaluation.cancel')}}</el-button>
+      <el-button
+        v-if="isRoleEdit"
+        style="float: left"
+        class="success"
+        icon="el-icon-plus"
+        @click="handleCreate"
+        >{{ $t("formulationEvaluation.add") }}</el-button
+      >
+      <el-button
+        v-if="isRoleEdit"
+        style="float: left"
+        class="danger"
+        icon="el-icon-delete"
+        @click="form_delete"
+        >{{ $t("formulationEvaluation.del") }}</el-button
+      >
+      <el-button
+        v-if="isOrder && isRoleEdit"
+        style="float: left"
+        icon="el-icon-sort"
+        class="success"
+        @click="handleChangeOrder"
+        >{{ $t("formulationEvaluation.ggsx") }}</el-button
+      >
+      <div v-else style="float: left; margin-left: 10px">
+        <el-button
+          v-if="isRoleEdit"
+          icon="el-icon-folder-checked"
+          class="success"
+          @click="saveChangeOrder"
+          >{{ $t("formulationEvaluation.save") }}</el-button
+        >
+        <el-button
+          v-if="isRoleEdit"
+          icon="el-icon-close"
+          class="sortCancel"
+          @click="cancelChangeOrder"
+          >{{ $t("formulationEvaluation.cancel") }}</el-button
+        >
       </div>
-      <el-button v-if="isRoleEdit && sapUpload.isSap" class="success" icon="el-icon-plus" @click="handleGetSapCode">{{$t('driver.hqspanccode')}}</el-button>
-      <el-button v-if="isRoleEdit && ispalyUd" class="success" icon="el-icon-plus" @click="handleGetUd">{{$t('driver.hqudls')}}</el-button>
+      <el-button
+        v-if="isRoleEdit && sapUpload.isSap"
+        class="success"
+        icon="el-icon-plus"
+        @click="handleGetSapCode"
+        >{{ $t("driver.hqspanccode") }}</el-button
+      >
+      <el-button
+        v-if="isRoleEdit && ispalyUd"
+        class="success"
+        icon="el-icon-plus"
+        @click="handleGetUd"
+        >{{ $t("driver.hqudls") }}</el-button
+      >
     </div>
     <div class="table">
       <u-table
@@ -52,7 +169,7 @@
         border
         fit
         highlight-current-row
-        style="width: 100%;"
+        style="width: 100%"
         :row-style="rowStyle"
         :cell-style="cellStyle"
         class="elTable table-fixed"
@@ -61,751 +178,1248 @@
         :max-height="myHeight"
       >
         <el-table-column type="selection" align="center" width="50" />
-        <el-table-column :label="$t('formulationEvaluation.xh')" type="index" align="center" width="50" />
-        <el-table-column  :label="$t('errorAnalysis.isHouseName')"  min-width="130px" align="center">
+        <el-table-column
+          :label="$t('formulationEvaluation.xh')"
+          type="index"
+          align="center"
+          width="50"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.isHouseName')"
+          min-width="130px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span v-if="scope.row.NoEdit">{{ scope.row.bname }}</span>
-            <el-input v-if="scope.row.Edit" v-model="scope.row.bname" type="textarea" :autosize="{ minRows: 1.3, maxRows: 4}" style="width:95%;padding:10px 0;" maxlength="32" />
+            <el-input
+              v-if="scope.row.Edit"
+              v-model="scope.row.bname"
+              type="textarea"
+              :autosize="{ minRows: 1.3, maxRows: 4 }"
+              style="width: 95%; padding: 10px 0"
+              maxlength="32"
+            />
           </template>
         </el-table-column>
-        <el-table-column :label="$t('driver.lsbh')" min-width="130px" align="center">
+        <el-table-column
+          :label="$t('driver.lsbh')"
+          min-width="130px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span v-if="scope.row.NoEdit">{{ scope.row.bcode }}</span>
-            <el-input v-if="scope.row.Edit" v-model="scope.row.bcode"
-:placeholder="$t('supplier.zf1')" type="textarea" :autosize="{ minRows: 1.3, maxRows: 4}" maxlength="32" style="width:95%;padding:10px 0;" />
+            <el-input
+              v-if="scope.row.Edit"
+              v-model="scope.row.bcode"
+              :placeholder="$t('supplier.zf1')"
+              type="textarea"
+              :autosize="{ minRows: 1.3, maxRows: 4 }"
+              maxlength="32"
+              style="width: 95%; padding: 10px 0"
+            />
           </template>
         </el-table-column>
-        <el-table-column :label="$t('driver.yxwcs')" min-width="150px" align="center">
+        <el-table-column
+          :label="$t('driver.yxwcs')"
+          min-width="150px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span v-if="scope.row.NoEdit">{{ scope.row.allowratio }}</span>
-            <el-input v-if="scope.row.Edit" v-model="scope.row.allowratio" style="width:95%;padding:10px 0;" />
+            <el-input
+              v-if="scope.row.Edit"
+              v-model="scope.row.allowratio"
+              style="width: 95%; padding: 10px 0"
+            />
           </template>
         </el-table-column>
-        <el-table-column :label="$t('driver.tzzly')" min-width="150px" align="center">
+        <el-table-column
+          :label="$t('driver.tzzly')"
+          min-width="150px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span v-if="scope.row.NoEdit">{{ scope.row.autozone }}</span>
-            <el-input v-if="scope.row.Edit" v-model="scope.row.autozone" :disabled="scope.row.autosecond=='0'" style="width:95%;padding:10px 0;" />
+            <el-input
+              v-if="scope.row.Edit"
+              v-model="scope.row.autozone"
+              :disabled="scope.row.autosecond == '0'"
+              style="width: 95%; padding: 10px 0"
+            />
           </template>
         </el-table-column>
-        <el-table-column :label="$t('driver.tzys')" min-width="150px" align="center">
+        <el-table-column
+          :label="$t('driver.tzys1')"
+          min-width="150px"
+          align="center"
+        >
           <template slot-scope="scope">
             <span v-if="scope.row.NoEdit">{{ scope.row.autosecondname }}</span>
-            <el-select v-if="scope.row.Edit" v-model="scope.row.autosecond" filterable class="filter-item" style="width: 95%;padding:10px 0;" @change="changeAutosecond">
-              <el-option v-for="item in jumpDelayList" :key="item.value" :label="item.label" :value="item.value" />
+            <el-select
+              v-if="scope.row.Edit"
+              v-model="scope.row.autosecond"
+              filterable
+              class="filter-item"
+              style="width: 95%; padding: 10px 0"
+              @change="changeAutosecond"
+            >
+              <el-option
+                v-for="item in jumpDelayList"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
               <!-- <el-option v-for="item in jumpDelayList" :key="item.label" :label="item.label" :value="item.label" /> -->
             </el-select>
           </template>
         </el-table-column>
-        <el-table-column :label="$t('errorAnalysis.pen')" min-width="150px" align="center">
+        <!-- <el-table-column :label="$t('errorAnalysis.pen')" min-width="150px" align="center">
           <template slot-scope="scope">
             <span v-if="scope.row.NoEdit">{{ scope.row.KTEXT }}</span>
             <el-select v-if="scope.row.Edit" v-model="scope.row.AUFNR" filterable class="filter-item" style="width: 95%;padding:10px 0;">
               <el-option v-for="item in cattleorderList" :key="item.AUFNR" :label="item.KTEXT" :value="item.AUFNR" />
             </el-select>
           </template>
-        </el-table-column>
-        <el-table-column :label="$t('driver.qrks')" min-width="110px" align="center">
+        </el-table-column> -->
+        <el-table-column
+          :label="$t('driver.qrks')"
+          min-width="110px"
+          align="center"
+        >
           <template slot-scope="scope">
-            <el-switch v-model="scope.row.isstart" :disabled="scope.row.NoEdit==true" active-color="#13ce66" inactive-color="#ff4949" :active-value="1" :inactive-value="0" @change="handleConfirmStartChange(scope.$index, scope.row)" />
+            <el-switch
+              v-model="scope.row.isstart"
+              :disabled="scope.row.NoEdit == true"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="1"
+              :inactive-value="0"
+              @change="handleConfirmStartChange(scope.$index, scope.row)"
+            />
           </template>
         </el-table-column>
-        <el-table-column :label="$t('formulationEvaluation.sfqy')" min-width="110px" align="center">
+        <el-table-column
+          :label="$t('formulationEvaluation.sfqy')"
+          min-width="110px"
+          align="center"
+        >
           <template slot-scope="scope">
-            <el-switch v-model="scope.row.enable" :disabled="scope.row.NoEdit==true" active-color="#13ce66" inactive-color="#ff4949" :active-value="1" :inactive-value="0" @change="handleEnableChange(scope.$index, scope.row)" />
+            <el-switch
+              v-model="scope.row.enable"
+              :disabled="scope.row.NoEdit == true"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="1"
+              :inactive-value="0"
+              @change="handleEnableChange(scope.$index, scope.row)"
+            />
           </template>
         </el-table-column>
-        <el-table-column :label="$t('driver.udcode')" min-width="110px" align="center">
+        <el-table-column
+          :label="$t('driver.udcode')"
+          min-width="110px"
+          align="center"
+        >
           <template slot-scope="scope">
-            <span>{{scope.row.udcode}}</span>
+            <span>{{ scope.row.udcode }}</span>
           </template>
         </el-table-column>
-        <el-table-column :label="$t('driver.udname')" min-width="110px" align="center">
+        <el-table-column
+          :label="$t('driver.udname')"
+          min-width="110px"
+          align="center"
+        >
           <template slot-scope="scope">
-            <span>{{scope.row.udname}}</span>
+            <span>{{ scope.row.udname }}</span>
           </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-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="row.isCreate" :disabled="isokDisable" icon="el-icon-folder-checked" class="miniSuccess" @click="createData(row)" />
+            <el-button
+              v-if="row.isCreate"
+              :disabled="isokDisable"
+              icon="el-icon-folder-checked"
+              class="miniSuccess"
+              @click="createData(row)"
+            />
             <span v-if="row.isCreate" class="centerSpan">|</span>
-            <el-button v-if="row.isCreate" class="minCancel" icon="el-icon-close" @click="createCancel(row)" />
+            <el-button
+              v-if="row.isCreate"
+              class="minCancel"
+              icon="el-icon-close"
+              @click="createCancel(row)"
+            />
             <!-- 编辑 -->
-            <el-button v-if="row.isUpdate && isRoleEdit" class="miniSuccess" icon="el-icon-edit-outline" @click="handleUpdate(row)" />
+            <el-button
+              v-if="row.isUpdate && isRoleEdit"
+              class="miniSuccess"
+              icon="el-icon-edit-outline"
+              @click="handleUpdate(row)"
+            />
             <span v-if="row.isUpdate && isRoleEdit" class="centerSpan">|</span>
-            <el-button v-if="row.isUpdate && isRoleEdit" class="miniDanger" icon="el-icon-delete" @click="handleRowDelete(row)" />
+            <el-button
+              v-if="row.isUpdate && isRoleEdit"
+              class="miniDanger"
+              icon="el-icon-delete"
+              @click="handleRowDelete(row)"
+            />
             <!-- 编辑保存 -->
-            <el-button v-if="row.isUpdateSave" :disabled="isokDisable" icon="el-icon-folder-checked" class="miniSuccess" @click="updateData(row)" />
+            <el-button
+              v-if="row.isUpdateSave"
+              :disabled="isokDisable"
+              icon="el-icon-folder-checked"
+              class="miniSuccess"
+              @click="updateData(row)"
+            />
             <span v-if="row.isUpdateSave" class="centerSpan">|</span>
-            <el-button v-if="row.isUpdateSave" class="minCancel" icon="el-icon-close" @click="updateCancel(row)" />
+            <el-button
+              v-if="row.isUpdateSave"
+              class="minCancel"
+              icon="el-icon-close"
+              @click="updateCancel(row)"
+            />
           </template>
         </el-table-column>
       </u-table>
-      <span v-if="table.listLoading == false" style="margin-right: 30px;margin-top: 10px;font-size: 14px;">{{$t('processAnalysis.total')}}{{ table.total }}{{$t('processAnalysis.tiao')}}</span>
+      <span
+        v-if="table.listLoading == false"
+        style="margin-right: 30px; margin-top: 10px; font-size: 14px"
+        >{{ $t("processAnalysis.total") }}{{ table.total
+        }}{{ $t("processAnalysis.tiao") }}</span
+      >
       <!-- <pagination v-show="table.total>=0" :total="table.total" :page.sync="table.getdataListParm.offset" :limit.sync="table.getdataListParm.pagecount" @pagination="getList" /> -->
     </div>
     <!-- 获取SAP编码 -->
-    <el-dialog :fullscreen="dialogFull" :visible.sync="sapCode2.dialogFormVisible" :close-on-click-modal="false" width="50%">
+    <el-dialog
+      :fullscreen="dialogFull"
+      :visible.sync="sapCode2.dialogFormVisible"
+      :close-on-click-modal="false"
+      width="50%"
+    >
       <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[sapCode2.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="sapCode2" :rules="sapCode2.rules" :model="sapCode2.temp" label-position="right" label-width="155px" style="width: 100%;margin:0 auto 50px">
+        <el-form
+          ref="sapCode2"
+          :rules="sapCode2.rules"
+          :model="sapCode2.temp"
+          label-position="right"
+          label-width="155px"
+          style="width: 100%; margin: 0 auto 50px"
+        >
           <el-row>
             <el-col :span="18">
-              <el-form-item :label="$t('dailyExecutionPlan.sjfw')"   prop="inputDatetime">
-                <el-date-picker v-model="sapCode2.temp.inputDatetime"  class="inputDatetime filter-item" type="daterange" :range-separator="$t('common.to')"  :start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" style="width: 100%;" :clearable="false" />
+              <el-form-item
+                :label="$t('dailyExecutionPlan.sjfw')"
+                prop="inputDatetime"
+              >
+                <el-date-picker
+                  v-model="sapCode2.temp.inputDatetime"
+                  class="inputDatetime filter-item"
+                  type="daterange"
+                  :range-separator="$t('common.to')"
+                  :start-placeholder="$t('common.startTime')"
+                  :end-placeholder="$t('common.endTime')"
+                  style="width: 100%"
+                  :clearable="false"
+                />
               </el-form-item>
             </el-col>
           </el-row>
         </el-form>
         <div slot="footer" class="dialog-footer">
-          <el-button class="cancelClose" @click="sapCode2.dialogFormVisible = false;getList()">{{$t('common.closed')}}</el-button>
-          <el-button v-if="sapCode2.dialogStatus==='sapCode2' && isRoleEdit" class="save" :disabled="isokDisable" @click="sapCodeData2()">{{$t('errorAnalysis.confirm')}}</el-button>
+          <el-button
+            class="cancelClose"
+            @click="
+              sapCode2.dialogFormVisible = false;
+              getList();
+            "
+            >{{ $t("common.closed") }}</el-button
+          >
+          <el-button
+            v-if="sapCode2.dialogStatus === 'sapCode2' && isRoleEdit"
+            class="save"
+            :disabled="isokDisable"
+            @click="sapCodeData2()"
+            >{{ $t("errorAnalysis.confirm") }}</el-button
+          >
         </div>
       </div>
     </el-dialog>
   </div>
-
 </template>
 
 <script>
-import { GetDataByName, GetDataByNames, PostDataByName, failproccess, ExecDataByConfig, checkButtons,postJson } from '@/api/common'
-import Cookies from 'js-cookie'
-import draggable from 'vuedraggable'
-import Sortable from 'sortablejs'
-import { parseTime } from '@/utils/index.js'
-import Pagination from '@/components/Pagination'
-import { MessageBox } from 'element-ui'
+import {
+  GetDataByName,
+  GetDataByNames,
+  PostDataByName,
+  failproccess,
+  ExecDataByConfig,
+  checkButtons,
+  postJson,
+} from "@/api/common";
+import Cookies from "js-cookie";
+import draggable from "vuedraggable";
+import Sortable from "sortablejs";
+import { parseTime } from "@/utils/index.js";
+import Pagination from "@/components/Pagination";
+import { MessageBox } from "element-ui";
 export default {
-  name: 'GroupColumn',
-  components: { Pagination,draggable },
+  name: "GroupColumn",
+  components: { Pagination, draggable },
   data() {
     return {
       dialogFull: false,
       isRoleEdit: [],
       requestParams: [
-        { name: 'getDictByName', offset: 0, pagecount: 0, params: ['跳转延时'] },
-        { name: 'getBarClass', offset: 0, pagecount: 0, parammaps: {pastureid: Cookies.get('pastureid')} },
-        { name: 'getScopeherd', offset: 0, pagecount: 0, parammaps: {pastureid: Cookies.get('pastureid')} },
-        { name: 'getCattleorder', offset: 0, pagecount: 0, parammaps: {pastureid: Cookies.get('pastureid')} }
+        {
+          name: "getDictByName",
+          offset: 0,
+          pagecount: 0,
+          params: ["跳转延时"],
+        },
+        {
+          name: "getBarClass",
+          offset: 0,
+          pagecount: 0,
+          parammaps: { pastureid: Cookies.get("pastureid") },
+        },
+        {
+          name: "getScopeherd",
+          offset: 0,
+          pagecount: 0,
+          parammaps: { pastureid: Cookies.get("pastureid") },
+        },
+        {
+          name: "getCattleorder",
+          offset: 0,
+          pagecount: 0,
+          parammaps: { pastureid: Cookies.get("pastureid") },
+        },
+      ],
+      enableList: [
+        { id: "1", name: this.$t("supplier.yes") },
+        { id: "0", name: this.$t("supplier.no") },
       ],
-      enableList: [{ id: '1',
-name:this.$t('supplier.yes')}, { id: '0',  
-name:this.$t('supplier.no') }],
       jumpDelayList: [],
-      barClassList:[],
-      scopeherdList:[],
-      cattleorderList:[],
+      barClassList: [],
+      scopeherdList: [],
+      cattleorderList: [],
       table: {
         getdataListParm: {
-          name: 'getBarList',
+          name: "getBarList",
           page: 1,
           offset: 1,
-          pagecount: '',
-          returntype: 'Map',
+          pagecount: "",
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            bcode: '',
-            bname: '',
-            allowratio: '',
-            autozone: '',
-            autosecond: '',
-            enable: ''
-          }
+            pastureid: Cookies.get("pastureid"),
+            bcode: "",
+            bname: "",
+            allowratio: "",
+            autozone: "",
+            autosecond: "",
+            enable: "",
+          },
         },
         tableKey: 0,
         list: [],
         total: 0,
         listLoading: true,
-        temp: {}
+        temp: {},
       },
-      sapCode2:{
+      sapCode2: {
         dialogFormVisible: false,
-        dialogStatus: '',
-        materialtypeList:[],
-        temp:{
-          inputDatetime: [parseTime(new Date(), '{y}-{m}-{d}'), parseTime(new Date(), '{y}-{m}-{d}')],
-          sapMaterialtype:'',
+        dialogStatus: "",
+        materialtypeList: [],
+        temp: {
+          inputDatetime: [
+            parseTime(new Date(), "{y}-{m}-{d}"),
+            parseTime(new Date(), "{y}-{m}-{d}"),
+          ],
+          sapMaterialtype: "",
         },
         rules: {
-          inputDatetime :[{required: true, message: this.$t('hardwareTest.bt'), trigger: 'blur' }]
-        }
+          inputDatetime: [
+            {
+              required: true,
+              message: this.$t("hardwareTest.bt"),
+              trigger: "blur",
+            },
+          ],
+        },
       },
       textMap: {
-        sapCode2: '获取SAP编码',
+        sapCode2: "获取SAP编码",
       },
-      sapUpload:{
+      sapUpload: {
         getdataListParm: {
-          name: 'getSysoptEnable',
+          name: "getSysoptEnable",
           page: 1,
           offset: 1,
           pagecount: 1,
-          returntype: 'Map',
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            inforname: 'xdmyBarSync'
-          }
+            pastureid: Cookies.get("pastureid"),
+            inforname: "xdmyBarSync",
+          },
         },
-        isSap: false
+        isSap: false,
       },
       requestParam: {},
       isokDisable: false,
       selectList: [],
       arrowDown: true,
       arrowUp: false,
-      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
-      cellStyle: { padding: 0 + 'px' },
+      rowStyle: { maxHeight: 30 + "px", height: 30 + "px" },
+      cellStyle: { padding: 0 + "px" },
       dropState: false,
       isOrder: true,
       ispalyUd: true,
-      myHeight:document.documentElement.clientHeight - 85- 150
-    }
+      myHeight: document.documentElement.clientHeight - 85 - 150,
+    };
   },
 
   created() {
-    this.getIspalyUd()
-    this.getList()
-    this.getDownList()
-    this.getButtons()
-    this.getIsSap()
+    this.getIspalyUd();
+    this.getList();
+    this.getDownList();
+    this.getButtons();
+    this.getIsSap();
   },
   mounted() {
-    document.addEventListener('click', (e) => {
+    document.addEventListener("click", (e) => {
       if (this.$refs.selectInput !== undefined) {
         if (!this.$refs.selectInput.contains(e.target)) {
-          this.arrowDown = true
-          this.arrowUp = false
+          this.arrowDown = true;
+          this.arrowUp = false;
         } else {
-          this.arrowDown = false
-          this.arrowUp = true
+          this.arrowDown = false;
+          this.arrowUp = true;
         }
       }
-    })
+    });
   },
   methods: {
     getIsSap() {
-      GetDataByName(this.sapUpload.getdataListParm).then(response => {
+      GetDataByName(this.sapUpload.getdataListParm).then((response) => {
         // console.log()
-        if(response.data.list !== null){
-          if(response.data.list[0].inforvalue == 1){
-            this.sapUpload.isSap = true
-          }else{
-            this.sapUpload.isSap = false
+        if (response.data.list !== null) {
+          if (response.data.list[0].inforvalue == 1) {
+            this.sapUpload.isSap = true;
+          } else {
+            this.sapUpload.isSap = false;
           }
-          console.log(this.sapUpload.isSap)
+          console.log(this.sapUpload.isSap);
         }
-      })
+      });
     },
     getButtons() {
-      const Edit = 'GroupColumn'
-      const isRoleEdit = checkButtons(JSON.parse(sessionStorage.getItem('buttons')), Edit)
-      console.log(isRoleEdit,'hss------')
-      this.isRoleEdit = isRoleEdit
+      const Edit = "GroupColumn";
+      const isRoleEdit = checkButtons(
+        JSON.parse(sessionStorage.getItem("buttons")),
+        Edit
+      );
+      console.log(isRoleEdit, "hss------");
+      this.isRoleEdit = isRoleEdit;
     },
     getDownList() {
-      GetDataByNames(this.requestParams).then(response => {
-        this.jumpDelayList = response.data.getDictByName.list
-        this.barClassList = response.data.getBarClass.list
-        this.scopeherdList = response.data.getScopeherd.list
-        this.cattleorderList = response.data.getCattleorder.list
-      })
+      GetDataByNames(this.requestParams).then((response) => {
+        this.jumpDelayList = response.data.getDictByName.list;
+        this.barClassList = response.data.getBarClass.list;
+        this.scopeherdList = response.data.getScopeherd.list;
+        this.cattleorderList = response.data.getCattleorder.list;
+      });
     },
     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) {
           for (let i = 0; i < response.data.list.length; i++) {
-            this.$set(response.data.list[i], 'Edit', false) // 编辑
-            this.$set(response.data.list[i], 'NoEdit', true) // 不可编辑/输入
-            this.$set(response.data.list[i], 'isCreate', false) // 新增操作
-            this.$set(response.data.list[i], 'isUpdate', true) // 编辑操作
-            this.$set(response.data.list[i], 'isUpdateSave', false) // 编辑保存
+            this.$set(response.data.list[i], "Edit", false); // 编辑
+            this.$set(response.data.list[i], "NoEdit", true); // 不可编辑/输入
+            this.$set(response.data.list[i], "isCreate", false); // 新增操作
+            this.$set(response.data.list[i], "isUpdate", true); // 编辑操作
+            this.$set(response.data.list[i], "isUpdateSave", false); // 编辑保存
           }
-          this.table.list = response.data.list
-          this.table.pageNum = response.data.pageNum
-          this.table.pageSize = response.data.pageSize
+          this.table.list = response.data.list;
+          this.table.pageNum = response.data.pageNum;
+          this.table.pageSize = response.data.pageSize;
         } else {
-          this.table.list = []
+          this.table.list = [];
         }
-        this.table.total = response.data.total
+        this.table.total = response.data.total;
         setTimeout(() => {
-          this.table.listLoading = false
-        }, 100)
-      })
+          this.table.listLoading = false;
+        }, 100);
+      });
     },
     handleEnableChange() {
-      console.log('点击了是否启用')
+      console.log("点击了是否启用");
     },
     handleConfirmStartChange() {
-      console.log('点击了确认开始')
+      console.log("点击了确认开始");
     },
     form_search() {
-      console.log('点击了查询')
-      this.table.getdataListParm.offset = 1
-      this.getList()
-      this.arrowDown = true
-      this.arrowUp = false
+      console.log("点击了查询");
+      this.table.getdataListParm.offset = 1;
+      this.getList();
+      this.arrowDown = true;
+      this.arrowUp = false;
     },
     handleRefresh() {
-      console.log('点击了重置')
-      this.table.getdataListParm.parammaps.bcode = ''
-      this.table.getdataListParm.parammaps.bname = ''
-      this.table.getdataListParm.parammaps.allowratio = ''
-      this.table.getdataListParm.parammaps.autozone = ''
-      this.table.getdataListParm.parammaps.autosecond = ''
-      this.table.getdataListParm.parammaps.enable = ''
-      this.table.getdataListParm.offset = 1
-      this.getList()
+      console.log("点击了重置");
+      this.table.getdataListParm.parammaps.bcode = "";
+      this.table.getdataListParm.parammaps.bname = "";
+      this.table.getdataListParm.parammaps.allowratio = "";
+      this.table.getdataListParm.parammaps.autozone = "";
+      this.table.getdataListParm.parammaps.autosecond = "";
+      this.table.getdataListParm.parammaps.enable = "";
+      this.table.getdataListParm.offset = 1;
+      this.getList();
     },
 
     changeAutosecond(item) {
-      this.table.temp.autosecondname = this.jumpDelayList.find(obj => obj.value === item).label
-      console.log(this.table.temp.autosecondname)
+      this.table.temp.autosecondname = this.jumpDelayList.find(
+        (obj) => obj.value === item
+      ).label;
+      console.log(this.table.temp.autosecondname);
     },
     handleCreate() {
-      console.log('点击了新增')
+      console.log("点击了新增");
       // 编辑true/不可编辑false
       // 新增操true,编辑false,编辑保存false
       for (let i = 0; i < this.table.list.length; i++) {
         if (this.table.list[i].Edit == true) {
-          this.$message({ type: 'error', message: this.$t('driver.messageNote'), duration: 2000 })
-          return false
+          this.$message({
+            type: "error",
+            message: this.$t("driver.messageNote"),
+            duration: 2000,
+          });
+          return false;
         }
       }
-      this.table.temp.autosecondname = ''
-      this.table.list.unshift({ 'myId': (new Date()).valueOf(), 'Edit': true, 'NoEdit': false, 'isCreate': true, 'isUpdate': false, 'isUpdateSave': false, 'enable': 1, 'isstart': 1, 'bname': '', 'bcode': '', 'allowratio': '', 'autozone': '', 'autosecond': '0', 'autosecondname': '禁用','scopeherdid':'','classid':'' })
+      this.table.temp.autosecondname = "";
+      this.table.list.unshift({
+        myId: new Date().valueOf(),
+        Edit: true,
+        NoEdit: false,
+        isCreate: true,
+        isUpdate: false,
+        isUpdateSave: false,
+        enable: 1,
+        isstart: 1,
+        bname: "",
+        bcode: "",
+        allowratio: "",
+        autozone: "",
+        autosecond: "0",
+        autosecondname: this.$t("feedChart.jinyong"),
+        scopeherdid: "",
+        classid: "",
+      });
     },
     createData(row) {
-      console.log('点击了新增保存', row)
-      this.table.temp.pastureid = Cookies.get('pastureid')
-      this.table.temp.bcode = row.bcode
-      this.table.temp.bname = row.bname
-      this.table.temp.allowratio = row.allowratio
-      this.table.temp.autozone = row.autozone
-      this.table.temp.autosecond = row.autosecond
-      if (this.table.temp.autosecondname == '') {
-        this.table.temp.autosecondname = row.autosecondname
+      console.log("点击了新增保存", row);
+      this.table.temp.pastureid = Cookies.get("pastureid");
+      this.table.temp.bcode = row.bcode;
+      this.table.temp.bname = row.bname;
+      this.table.temp.allowratio = row.allowratio;
+      this.table.temp.autozone = row.autozone;
+      this.table.temp.autosecond = row.autosecond;
+      if (this.table.temp.autosecondname == "") {
+        this.table.temp.autosecondname = row.autosecondname;
       } else {
-        this.table.temp.autosecondname = this.table.temp.autosecondname
+        this.table.temp.autosecondname = this.table.temp.autosecondname;
       }
-      this.table.temp.AUFNR = row.AUFNR
-      this.table.temp.isstart = row.isstart
-      this.table.temp.enable = row.enable
+      this.table.temp.AUFNR = row.AUFNR;
+      this.table.temp.isstart = row.isstart;
+      this.table.temp.enable = row.enable;
       // 检验用户名称/角色是否为空
-      if (this.table.temp.bname == '' && this.table.temp.bcode == '') {
-        this.$message({ type: 'error', message: this.$t('driver.message1'), duration: 2000 })
-        return false
-      }else if (this.table.temp.bname == '') {
-        this.$message({ type: 'error', message: this.$t('driver.message2'), duration: 2000 })
-        return false
-      } else if (this.table.temp.bcode == '') {
-        this.$message({ type: 'error', message: this.$t('driver.message3'), duration: 2000 })
-        return false
+      if (this.table.temp.bname == "" && this.table.temp.bcode == "") {
+        this.$message({
+          type: "error",
+          message: this.$t("driver.message1"),
+          duration: 2000,
+        });
+        return false;
+      } else if (this.table.temp.bname == "") {
+        this.$message({
+          type: "error",
+          message: this.$t("driver.message2"),
+          duration: 2000,
+        });
+        return false;
+      } else if (this.table.temp.bcode == "") {
+        this.$message({
+          type: "error",
+          message: this.$t("driver.message3"),
+          duration: 2000,
+        });
+        return false;
       }
 
       // if (this.table.temp.bcode.length > 8) {
       //   this.$message({ type: 'error', message: '栏舍编号请输入1-8位数字', duration: 2000 })
       //   return false
       // }
-      if (this.table.temp.allowratio !== '') {
-        console.log(this.table.temp.allowratio)
-        const allowratio = /^[0-9]\d*$/
+      if (this.table.temp.allowratio !== "") {
+        console.log(this.table.temp.allowratio);
+        const allowratio = /^[0-9]\d*$/;
         if (!allowratio.test(parseFloat(this.table.temp.allowratio))) {
-          this.$message({ type: 'error', message: this.$t('message.msg254'), duration: 2000 })
-          return false
+          this.$message({
+            type: "error",
+            message: this.$t("message.msg254"),
+            duration: 2000,
+          });
+          return false;
         }
       } else {
-        this.table.temp.allowratio = '0'
+        this.table.temp.allowratio = "0";
       }
-      if (this.table.temp.autozone !== '') {
-        console.log(this.table.temp.autozone)
-        const autozone = /^(\d|[1-9]\d|1[0-1]\d|120)$/
+      if (this.table.temp.autozone !== "") {
+        console.log(this.table.temp.autozone);
+        const autozone = /^(\d|[1-9]\d|1[0-1]\d|120)$/;
         if (!autozone.test(parseFloat(this.table.temp.autozone))) {
-          this.$message({ type: 'error', message: this.$t('message.msg255'), duration: 2000 })
-          return false
+          this.$message({
+            type: "error",
+            message: this.$t("message.msg255"),
+            duration: 2000,
+          });
+          return false;
         }
       } else {
-        this.table.temp.autozone = '0'
+        this.table.temp.autozone = "0";
       }
-      const pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]")
+      const pattern = new RegExp(
+        "[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"
+      );
       if (pattern.test(this.table.temp.eqcode)) {
-        this.$message({ type: 'error', message: this.$t('message.msg236'), duration: 2000 })
-        return false
+        this.$message({
+          type: "error",
+          message: this.$t("message.msg236"),
+          duration: 2000,
+        });
+        return false;
       }
       if (pattern.test(this.table.temp.tname)) {
-        this.$message({ type: 'error', message: this.$t('message.msg237'), duration: 2000 })
-        return false
+        this.$message({
+          type: "error",
+          message: this.$t("message.msg237"),
+          duration: 2000,
+        });
+        return false;
       }
-      this.isokDisable = true
+      this.isokDisable = true;
       setTimeout(() => {
-        this.isokDisable = false
-      }, 1000)
-      this.requestParam.name = 'insertBar'
-      this.requestParam.parammaps = this.table.temp
-      PostDataByName(this.requestParam).then(response => {
-        console.log('新增保存发送参数', this.requestParam)
-        if (response.msg !== 'fail') {
-          this.$notify({ title: this.$t('common.succes'), message: this.$t('driver.saveSuccess'), type: 'success', duration: 2000 })
-          this.getList()
+        this.isokDisable = false;
+      }, 1000);
+      this.requestParam.name = "insertBar";
+      this.requestParam.parammaps = this.table.temp;
+      PostDataByName(this.requestParam).then((response) => {
+        console.log("新增保存发送参数", this.requestParam);
+        if (response.msg !== "fail") {
+          this.$notify({
+            title: this.$t("common.succes"),
+            message: this.$t("driver.saveSuccess"),
+            type: "success",
+            duration: 2000,
+          });
+          this.getList();
         } else {
-          const isRepeat = new RegExp('Duplicate entry :bar_bcode')
+          const isRepeat = new RegExp("Duplicate entry :bar_bcode");
           if (isRepeat.test(response.data)) {
-            this.$notify({ type: 'error', message: this.$t('message.msg256'), duration: 2000 })
-            return false
+            this.$notify({
+              type: "error",
+              message: this.$t("message.msg256"),
+              duration: 2000,
+            });
+            return false;
           }
-          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,
+          });
         }
-      })
+      });
     },
     createCancel(row) {
-      console.log('点击了新增取消')
+      console.log("点击了新增取消");
       for (let i = 0; i < this.table.list.length; i++) {
         if (row.myId === this.table.list[i].myId) {
-          var listIndex = this.table.list.indexOf(this.table.list[i])
+          var listIndex = this.table.list.indexOf(this.table.list[i]);
         }
         if (listIndex > -1) {
-          this.table.list.splice(listIndex, 1)
-          return
+          this.table.list.splice(listIndex, 1);
+          return;
         }
       }
     },
     handleUpdate(row) {
-      console.log('点击了编辑', row)
+      console.log("点击了编辑", row);
       for (let i = 0; i < this.table.list.length; i++) {
         if (this.table.list[i].Edit == true) {
-          this.$message({ type: 'error', message: this.$t('driver.messageNote'), duration: 2000 })
-          return false
+          this.$message({
+            type: "error",
+            message: this.$t("driver.messageNote"),
+            duration: 2000,
+          });
+          return false;
         }
       }
       // 编辑true,不可编辑false
-      row.Edit = true
-      row.NoEdit = false
+      row.Edit = true;
+      row.NoEdit = false;
       // 新增false,编辑false,编辑保存true
-      row.isCreate = false
-      row.isUpdate = false
-      row.isUpdateSave = true
-      row.autosecond = String(row.autosecond)
-      this.table.temp.autosecondname = row.autosecondname
-      this.table.temp.autosecond = row.autosecond
+      row.isCreate = false;
+      row.isUpdate = false;
+      row.isUpdateSave = true;
+      row.autosecond = String(row.autosecond);
+      this.table.temp.autosecondname = row.autosecondname;
+      this.table.temp.autosecond = row.autosecond;
     },
     updateData(row) {
-      console.log('点击了编辑保存', row)
-      this.table.temp.pastureid = Cookies.get('pastureid')
-      this.table.temp.bcode = row.bcode
-      this.table.temp.bname = row.bname
-      this.table.temp.allowratio = row.allowratio
-      this.table.temp.autozone = row.autozone
-      this.table.temp.autosecond = row.autosecond
-      this.table.temp.autosecondname = this.table.temp.autosecondname
-      this.table.temp.isstart = row.isstart
-      this.table.temp.enable = row.enable
-      this.table.temp.id = row.id
-      this.table.temp.AUFNR = row.AUFNR
+      console.log("点击了编辑保存", row);
+      this.table.temp.pastureid = Cookies.get("pastureid");
+      this.table.temp.bcode = row.bcode;
+      this.table.temp.bname = row.bname;
+      this.table.temp.allowratio = row.allowratio;
+      this.table.temp.autozone = row.autozone;
+      this.table.temp.autosecond = row.autosecond;
+      this.table.temp.autosecondname = this.table.temp.autosecondname;
+      this.table.temp.isstart = row.isstart;
+      this.table.temp.enable = row.enable;
+      this.table.temp.id = row.id;
+      this.table.temp.AUFNR = row.AUFNR;
       // 检验用户名称/角色是否为空
-      if (this.table.temp.bname == '' && this.table.temp.bcode == '') {
-        this.$message({ type: 'error', message: this.$t('message.msg257'), duration: 2000 })
-        return false
-      }else if (this.table.temp.bname == '') {
-        this.$message({ type: 'error', message: this.$t('driver.message2'), duration: 2000 })
-        return false
-      } else if (this.table.temp.bcode == '') {
-        this.$message({ type: 'error', message: this.$t('driver.message3'), duration: 2000 })
-        return false
+      if (this.table.temp.bname == "" && this.table.temp.bcode == "") {
+        this.$message({
+          type: "error",
+          message: this.$t("message.msg257"),
+          duration: 2000,
+        });
+        return false;
+      } else if (this.table.temp.bname == "") {
+        this.$message({
+          type: "error",
+          message: this.$t("driver.message2"),
+          duration: 2000,
+        });
+        return false;
+      } else if (this.table.temp.bcode == "") {
+        this.$message({
+          type: "error",
+          message: this.$t("driver.message3"),
+          duration: 2000,
+        });
+        return false;
       }
-      if (this.table.temp.allowratio !== '') {
-        console.log(this.table.temp.allowratio)
-        const allowratio = /^[0-9]\d*$/
+      if (this.table.temp.allowratio !== "") {
+        console.log(this.table.temp.allowratio);
+        const allowratio = /^[0-9]\d*$/;
         if (!allowratio.test(parseFloat(this.table.temp.allowratio))) {
-          this.$message({ type: 'error', message: this.$t('message.msg254'), duration: 2000 })
-          return false
+          this.$message({
+            type: "error",
+            message: this.$t("message.msg254"),
+            duration: 2000,
+          });
+          return false;
         }
       } else {
-        this.table.temp.allowratio = '0'
+        this.table.temp.allowratio = "0";
       }
-      if (this.table.temp.autozone !== '') {
-        console.log(this.table.temp.autozone)
-        const autozone = /^(\d|[1-9]\d|1[0-1]\d|120)$/
+      if (this.table.temp.autozone !== "") {
+        console.log(this.table.temp.autozone);
+        const autozone = /^(\d|[1-9]\d|1[0-1]\d|120)$/;
         if (!autozone.test(parseFloat(this.table.temp.autozone))) {
-          this.$message({ type: 'error', message: this.$t('message.msg255'), duration: 2000 })
-          return false
+          this.$message({
+            type: "error",
+            message: this.$t("message.msg255"),
+            duration: 2000,
+          });
+          return false;
         }
       } else {
-        this.table.temp.autozone = '0'
+        this.table.temp.autozone = "0";
       }
-      const pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]")
+      const pattern = new RegExp(
+        "[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"
+      );
       if (pattern.test(this.table.temp.eqcode)) {
-        this.$message({ type: 'error', message: this.$t('message.msg236'), duration: 2000 })
-        return false
+        this.$message({
+          type: "error",
+          message: this.$t("message.msg236"),
+          duration: 2000,
+        });
+        return false;
       }
       if (pattern.test(this.table.temp.tname)) {
-        this.$message({ type: 'error', message: this.$t('message.msg237'), duration: 2000 })
-        return false
+        this.$message({
+          type: "error",
+          message: this.$t("message.msg237"),
+          duration: 2000,
+        });
+        return false;
       }
-      this.isokDisable = true
+      this.isokDisable = true;
       setTimeout(() => {
-        this.isokDisable = false
-      }, 1000)
-      this.requestParam.name = 'updateBar'
-      this.requestParam.parammaps = this.table.temp
-      PostDataByName(this.requestParam).then(response => {
-        console.log('新增保存发送参数', this.requestParam)
-        if (response.msg !== 'fail') {
-          this.$notify({ title: this.$t('common.succes'), message: this.$t('driver.saveSuccess'), type: 'success', duration: 2000 })
-          this.getList()
+        this.isokDisable = false;
+      }, 1000);
+      this.requestParam.name = "updateBar";
+      this.requestParam.parammaps = this.table.temp;
+      PostDataByName(this.requestParam).then((response) => {
+        console.log("新增保存发送参数", this.requestParam);
+        if (response.msg !== "fail") {
+          this.$notify({
+            title: this.$t("common.succes"),
+            message: this.$t("driver.saveSuccess"),
+            type: "success",
+            duration: 2000,
+          });
+          this.getList();
         } else {
-          const isRepeat = new RegExp('Duplicate entry :bar_bcode')
+          const isRepeat = new RegExp("Duplicate entry :bar_bcode");
           if (isRepeat.test(response.data)) {
-            this.$notify({ type: 'error', message: this.$t('message.msg256'), duration: 2000 })
-            return false
+            this.$notify({
+              type: "error",
+              message: this.$t("message.msg256"),
+              duration: 2000,
+            });
+            return false;
           }
-          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,
+          });
         }
-      })
+      });
     },
     updateCancel(row) {
-      console.log('点击了编辑取消')
+      console.log("点击了编辑取消");
       // 编辑false,不可编辑true
-      row.Edit = false
-      row.NoEdit = true
+      row.Edit = false;
+      row.NoEdit = true;
       // 新增false,编辑true,编辑保存false
-      row.isCreate = false
-      row.isUpdate = true
-      row.isUpdateSave = false
-      this.getList()
+      row.isCreate = false;
+      row.isUpdate = true;
+      row.isUpdateSave = false;
+      this.getList();
     },
     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 = {}
-        this.requestParam.common = { 'returnmap': '0' }
-        this.requestParam.data = []
-        this.requestParam.data[0] = { 'name': 'checkDeleteBar', 'type': 'v', 'parammaps': {
-          'pastureid': row.pastureid,
-          'id': row.id
-        }}
-        this.requestParam.data[1] = { 'name': 'deleteBar', 'type': 'e', 'parammaps': {
-          'pastureid': row.pastureid,
-          'id': row.id
-        }}
-        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()
-          }
-        })
-      }).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 = {};
+          this.requestParam.common = { returnmap: "0" };
+          this.requestParam.data = [];
+          this.requestParam.data[0] = {
+            name: "checkDeleteBar",
+            type: "v",
+            parammaps: {
+              pastureid: row.pastureid,
+              id: row.id,
+            },
+          };
+          this.requestParam.data[1] = {
+            name: "deleteBar",
+            type: "e",
+            parammaps: {
+              pastureid: row.pastureid,
+              id: row.id,
+            },
+          };
+          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();
+            }
+          });
+        })
+        .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: this.$t('message.msg258'), duration: 2000 })
+        this.$message({
+          type: "error",
+          message: this.$t("message.msg258"),
+          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 = {}
-          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': 'checkDeleteBar', 'type': 'v', 'parammaps': {
-            id: '@insertSpotList.id',
-            pastureid: '@insertSpotList.pastureid'
-          }}
-          this.requestParam.data[0].children[1] = { 'name': 'deleteBar', '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 = {};
+          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: "checkDeleteBar",
+            type: "v",
+            parammaps: {
+              id: "@insertSpotList.id",
+              pastureid: "@insertSpotList.pastureid",
+            },
+          };
+          this.requestParam.data[0].children[1] = {
+            name: "deleteBar",
+            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();
             }
-          })
-        })
+          });
+        });
       }
     },
     handleChangeOrder() {
-      this.isOrder = false
-      this.rowDrop()
+      this.isOrder = false;
+      this.rowDrop();
     },
 
     saveChangeOrder() {
       // 保存顺序
-      var sortArr = []
+      var sortArr = [];
       for (let i = 0; i < this.table.list.length; i++) {
-        var obj = {}
-        obj.sort = i + 1
-        obj.id = this.table.list[i].id
-        obj.pastureid = this.table.list[i].pastureid
-        sortArr.push(obj)
+        var obj = {};
+        obj.sort = i + 1;
+        obj.id = this.table.list[i].id;
+        obj.pastureid = this.table.list[i].pastureid;
+        sortArr.push(obj);
       }
-      this.requestParam = {}
-      this.requestParam.common = { 'returnmap': '0' }
-      this.requestParam.data = []
-      this.requestParam.data[0] = { 'name': 'insertSpotList', 'resultmaps': { 'list': sortArr }}
-      this.requestParam.data[0].children = []
-      this.requestParam.data[0].children[0] = { 'name': 'updateBarSort', 'type': 'e', 'parammaps': {
-        id: '@insertSpotList.id',
-        pastureid: '@insertSpotList.pastureid',
-        sort: '@insertSpotList.sort'
-      }}
-      this.table.listLoading = true
-      ExecDataByConfig(this.requestParam).then(response => {
-        console.log('顺序切换保存发送参数', this.requestParam)
-        this.table.listLoading = false
-        if (response.msg === 'fail') {
-          this.$notify({ title: this.$t('message.msg51'), message: response.data, type: 'warning', duration: 2000 })
+      this.requestParam = {};
+      this.requestParam.common = { returnmap: "0" };
+      this.requestParam.data = [];
+      this.requestParam.data[0] = {
+        name: "insertSpotList",
+        resultmaps: { list: sortArr },
+      };
+      this.requestParam.data[0].children = [];
+      this.requestParam.data[0].children[0] = {
+        name: "updateBarSort",
+        type: "e",
+        parammaps: {
+          id: "@insertSpotList.id",
+          pastureid: "@insertSpotList.pastureid",
+          sort: "@insertSpotList.sort",
+        },
+      };
+      this.table.listLoading = true;
+      ExecDataByConfig(this.requestParam).then((response) => {
+        console.log("顺序切换保存发送参数", this.requestParam);
+        this.table.listLoading = false;
+        if (response.msg === "fail") {
+          this.$notify({
+            title: this.$t("message.msg51"),
+            message: response.data,
+            type: "warning",
+            duration: 2000,
+          });
         } else {
-          this.$notify({ title: '', message: this.$t('message.msg50'), type: 'success', duration: 2000 })
-          this.getList()
-          this.isOrder = true
+          this.$notify({
+            title: "",
+            message: this.$t("message.msg50"),
+            type: "success",
+            duration: 2000,
+          });
+          this.getList();
+          this.isOrder = true;
         }
-      })
+      });
     },
     cancelChangeOrder() {
       // 取消顺序
-      this.getList()
-      this.isOrder = true
+      this.getList();
+      this.isOrder = true;
     },
 
-     // 行拖拽
+    // 行拖拽
     rowDrop() {
-      console.log(document.querySelector('#table .el-table__body-wrapper tbody'))
-      const tbody = document.querySelector('#table .el-table__body-wrapper tbody')
-      const that = this
+      console.log(
+        document.querySelector("#table .el-table__body-wrapper tbody")
+      );
+      const tbody = document.querySelector(
+        "#table .el-table__body-wrapper tbody"
+      );
+      const that = this;
       var sortable = Sortable.create(tbody, {
         disabled: that.dropState,
         onChoose({ newIndex, oldIndex }) {
-          console.log(that.isOrder, 'that.isOrder == false')
-          console.log(that.dropState, 'that.dropState')
+          console.log(that.isOrder, "that.isOrder == false");
+          console.log(that.dropState, "that.dropState");
           if (that.dropState == true || that.isOrder == true) {
-            sortable.destroy()
+            sortable.destroy();
           }
         },
         onEnd({ newIndex, oldIndex }) {
-          const currRow = that.table.list.splice(oldIndex, 1)[0]
-          that.table.list.splice(newIndex, 0, currRow)
-          console.log('currRow', currRow)
-          console.log('oldIndex', oldIndex)
-          console.log('索引newIndex', newIndex)
-          console.log('拖动数据', currRow)
-          console.log('上', that.table.list[newIndex - 1])
-          console.log('下', that.table.list[newIndex + 1])
-        }
-      })
+          const currRow = that.table.list.splice(oldIndex, 1)[0];
+          that.table.list.splice(newIndex, 0, currRow);
+          console.log("currRow", currRow);
+          console.log("oldIndex", oldIndex);
+          console.log("索引newIndex", newIndex);
+          console.log("拖动数据", currRow);
+          console.log("上", that.table.list[newIndex - 1]);
+          console.log("下", that.table.list[newIndex + 1]);
+        },
+      });
     },
-    handleGetSapCode(){
-        this.dialogFull = false
-        this.sapCode2.dialogStatus = 'sapCode2'
-        this.sapCode2.dialogFormVisible = true
+    handleGetSapCode() {
+      this.dialogFull = false;
+      this.sapCode2.dialogStatus = "sapCode2";
+      this.sapCode2.dialogFormVisible = true;
     },
-    sapCodeData2(){
-      this.$refs['sapCode2'].validate(valid => {
+    sapCodeData2() {
+      this.$refs["sapCode2"].validate((valid) => {
         if (valid) {
-          let url = 'authdata/sap/bar'
+          let url = "authdata/sap/bar";
           let data = {
-            startTime:parseTime(this.sapCode2.temp.inputDatetime[0],'{y}-{m}-{d}'),
-            endTime:parseTime(this.sapCode2.temp.inputDatetime[1],'{y}-{m}-{d}'),
-            pastureId:Cookies.get('pastureid')
-          }
-          postJson(url,data).then(response => {
-            if (response.msg !== 'fail') {
-              this.$notify({ title: this.$t('common.succes'), message: this.$t('driver.saveSuccess'), type: 'success', duration: 2000 })
-              this.sapCode2.dialogFormVisible = false
-              this.getList()
+            startTime: parseTime(
+              this.sapCode2.temp.inputDatetime[0],
+              "{y}-{m}-{d}"
+            ),
+            endTime: parseTime(
+              this.sapCode2.temp.inputDatetime[1],
+              "{y}-{m}-{d}"
+            ),
+            pastureId: Cookies.get("pastureid"),
+          };
+          postJson(url, data).then((response) => {
+            if (response.msg !== "fail") {
+              this.$notify({
+                title: this.$t("common.succes"),
+                message: this.$t("driver.saveSuccess"),
+                type: "success",
+                duration: 2000,
+              });
+              this.sapCode2.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,
+              });
             }
-          })
+          });
         }
-      })
+      });
     },
-    getIspalyUd(){
-      let url = 'authdata/GetDataByName'
+    getIspalyUd() {
+      let url = "authdata/GetDataByName";
       let data = {
-        "name":"getSysoptEnable","page":1,"offset":1,"pagecount":1,"returntype":"Map",
-        "parammaps":{"pastureid":Cookies.get('pastureid'),"inforname":"gmUdSync"}
-      }
-      postJson(url,data).then(response => {
-        if (response.msg !== 'fail') {
-          if(response.data.list[0].inforvalue == 0){
-            this.ispalyUd = false
-          }else{
-            this.ispalyUd = true
+        name: "getSysoptEnable",
+        page: 1,
+        offset: 1,
+        pagecount: 1,
+        returntype: "Map",
+        parammaps: {
+          pastureid: Cookies.get("pastureid"),
+          inforname: "gmUdSync",
+        },
+      };
+      postJson(url, data).then((response) => {
+        if (response.msg !== "fail") {
+          if (response.data.list[0].inforvalue == 0) {
+            this.ispalyUd = false;
+          } else {
+            this.ispalyUd = true;
           }
         } else {
-          this.$notify({ title:this.$t('message.msg14'), message: response.data, type: 'warning', duration: 2000 })
+          this.$notify({
+            title: this.$t("message.msg14"),
+            message: response.data,
+            type: "warning",
+            duration: 2000,
+          });
         }
-      })
+      });
     },
-    handleGetUd(){
-      MessageBox.confirm(this.$t('message.msg343'), {
-        confirmButtonText: this.$t('common.confirm'), cancelButtonText: this.$t('common.cancel'), type: 'warning'
+    handleGetUd() {
+      MessageBox.confirm(this.$t("message.msg343"), {
+        confirmButtonText: this.$t("common.confirm"),
+        cancelButtonText: this.$t("common.cancel"),
+        type: "warning",
       }).then(() => {
-        let url = 'authdata/gm/udbar'
+        let url = "authdata/gm/udbar";
         let data = {
-          pastureId:Cookies.get('pastureid')
-        }
-        postJson(url,data).then(response => {
-          if (response.msg !== 'fail') {
-            this.$notify({ title: this.$t('common.succes'), message: this.$t('driver.saveSuccess'), type: 'success', duration: 2000 })
-            this.getList()
+          pastureId: Cookies.get("pastureid"),
+        };
+        postJson(url, data).then((response) => {
+          if (response.msg !== "fail") {
+            this.$notify({
+              title: this.$t("common.succes"),
+              message: this.$t("driver.saveSuccess"),
+              type: "success",
+              duration: 2000,
+            });
+            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,
+            });
           }
-        })
-      })
-    }
-  }
-}
+        });
+      });
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
-  .search{margin-top:10px;}
+.search {
+  margin-top: 10px;
+}
 
-  $width:350px;
-  $left:325px;
-  .selectInput{
+$width: 350px;
+$left: 325px;
+.selectInput {
+  position: relative;
+  display: inline-block;
+  .Input {
+    width: $width;
     position: relative;
-    display: inline-block;
-    .Input{width: $width;position: relative;}
-    .el-icon-arrow-down{width: 30px;height: 30px;position: absolute;left: $left;top:10px;color:#C0C4CC;}
-    .el-icon-arrow-up{width: 30px;height: 30px;position: absolute;left: $left;top:10px;color:#C0C4CC;}
-    .selectUl{
-      z-index: 111;width: $width;background: #fff;border: 1px solid #E4E7ED;box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);margin: -1px 0 0 0;padding: 6px 0; margin: 0;box-sizing: border-box;position: absolute;
-      li{
-        list-style: none;font-size: 14px; padding: 0 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #606266; height: 50px; line-height: 50px; box-sizing: border-box; cursor: pointer;
-        a{float:left;width: 80px;}
-        a:hover{color: rgba(0, 204, 102, 0.71); font-weight: 700;}
+  }
+  .el-icon-arrow-down {
+    width: 30px;
+    height: 30px;
+    position: absolute;
+    left: $left;
+    top: 10px;
+    color: #c0c4cc;
+  }
+  .el-icon-arrow-up {
+    width: 30px;
+    height: 30px;
+    position: absolute;
+    left: $left;
+    top: 10px;
+    color: #c0c4cc;
+  }
+  .selectUl {
+    z-index: 111;
+    width: $width;
+    background: #fff;
+    border: 1px solid #e4e7ed;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+    margin: -1px 0 0 0;
+    padding: 6px 0;
+    margin: 0;
+    box-sizing: border-box;
+    position: absolute;
+    li {
+      list-style: none;
+      font-size: 14px;
+      padding: 0 10px;
+      white-space: nowrap;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      color: #606266;
+      height: 50px;
+      line-height: 50px;
+      box-sizing: border-box;
+      cursor: pointer;
+      a {
+        float: left;
+        width: 80px;
+      }
+      a:hover {
+        color: rgba(0, 204, 102, 0.71);
+        font-weight: 700;
       }
     }
   }
-
- </style>
+}
+</style>

+ 1 - 1
src/views/basicData/leftoverManagement/index.vue

@@ -181,7 +181,7 @@
       },
       // 点击删除
       handleDelete(index, row) {
-        this.$confirm('确定删除当前剩料信息吗?', this.$t('message.msg111'), {
+        this.$confirm('确定删除当前剩料信息吗?', '提示', {
           confirmButtonText: '确定',
           cancelButtonText: '取消',
           type: 'warning'

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 422 - 420
src/views/dashboard/pasture/index.vue


+ 1 - 1
src/views/formulationPlan/dailyExecutionPlan/index.vue

@@ -4193,7 +4193,7 @@ export default {
     handleRowSort(row) {
       this.$prompt(this.$t("message.msg206"), this.$t("message.msg207"), {
         inputPlaceholder: this.$t("message.msg208"),
-        confirmButtonText: "确定",
+        confirmButtonText: this.$t("common.confirm"),
         cancelButtonText: this.$t("common.cancel"),
         inputPattern: /^\d+$/,
         inputErrorMessage: this.$t("message.msg209"),

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 404 - 404
src/views/formulationPlan/dailyExecutionPlan/typePage/surplusMaterialPlan.vue


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 289 - 289
src/views/formulationPlan/materialIssuancePlan/index.vue


+ 451 - 187
src/views/formulationPlan/pushMaterialPlan/index.vue

@@ -1,16 +1,37 @@
- <template>
+<template>
   <div class="app-container">
     <div class="search">
-      <el-time-picker v-model="table.parammaps.date" style="width: 250px;" value-format="HH:mm:ss" />
-      <el-input v-model="table.parammaps.eqCode" :placeholder="$t('premixedPlan.clbm')" style="width: 180px;" class="filter-item" clearable />
+      <el-time-picker
+        v-model="table.parammaps.date"
+        style="width: 250px"
+        value-format="HH:mm:ss"
+      />
+      <el-input
+        v-model="table.parammaps.eqCode"
+        :placeholder="$t('premixedPlan.clbm')"
+        style="width: 180px"
+        class="filter-item"
+        clearable
+      />
       <!-- <el-select v-model="table.getdataListParm.parammaps.enable" filterable :placeholder="$t('formulationEvaluation.sfqy')" class="filter-item" style="width: 120px;" clearable>
         <el-option v-for="item in enableList" :key="item.id" :label="item.name" :value="item.id" />
       </el-select> -->
-      <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>
+      <el-button class="successBorder" @click="form_search">{{
+        $t("common.query")
+      }}</el-button>
     </div>
     <div class="operation">
-      <el-button v-if="isRoleEdit" class="success" icon="el-icon-plus" style="float: left;" @click="handleCreate">{{$t('formulationEvaluation.add')}}</el-button>
+      <el-button
+        v-if="isRoleEdit"
+        class="success"
+        icon="el-icon-plus"
+        style="float: left"
+        @click="handleCreate"
+        >{{ $t("formulationEvaluation.add") }}</el-button
+      >
     </div>
     <div class="table">
       <el-table
@@ -22,7 +43,7 @@
         border
         fit
         highlight-current-row
-        style="width: 100%;"
+        style="width: 100%"
         :row-style="rowStyle"
         :cell-style="cellStyle"
         class="elTable table-fixed"
@@ -30,46 +51,144 @@
         :max-height="myHeight"
       >
         <el-table-column type="selection" width="50" />
-        <el-table-column :key="1" :label="$t('formulationEvaluation.xh')" align="center" type="index" width="50px" class-name="small-padding fixed-width" fixed="left" />
-        <el-table-column :label="$t('premixedPlan.tlc')" min-width="100px" align="center" class-name="small-padding fixed-width" fixed="left" prop="tname" />
-        <el-table-column :label="$t('premixedPlan.time')"   min-width="100px" align="center" prop="date" />
-        <el-table-column :label="$t('formulationEvaluation.remark')" min-width="100px" align="center" prop="remark" />
-        <el-table-column :label="$t('errorAnalysis.pen')" min-width="100px" align="center" prop="bname" />
-        <el-table-column :label="$t('premixedPlan.status')" min-width="90px" align="center">
+        <el-table-column
+          :key="1"
+          :label="$t('formulationEvaluation.xh')"
+          align="center"
+          type="index"
+          width="50px"
+          class-name="small-padding fixed-width"
+          fixed="left"
+        />
+        <el-table-column
+          :label="$t('premixedPlan.tlc')"
+          min-width="100px"
+          align="center"
+          class-name="small-padding fixed-width"
+          fixed="left"
+          prop="tname"
+        />
+        <el-table-column
+          :label="$t('premixedPlan.time')"
+          min-width="100px"
+          align="center"
+          prop="date"
+        />
+        <el-table-column
+          :label="$t('formulationEvaluation.remark')"
+          min-width="100px"
+          align="center"
+          prop="remark"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.pen')"
+          min-width="100px"
+          align="center"
+          prop="bname"
+        />
+        <el-table-column
+          :label="$t('premixedPlan.status')"
+          min-width="90px"
+          align="center"
+        >
           <template slot-scope="scope">
-            <el-switch v-model="scope.row.enable" :disabled="scope.row.NoEdit==true" active-color="#13ce66" inactive-color="#ff4949" :active-value="1" :inactive-value="0" @change="handleEnableChange(scope.$index, scope.row)" />
+            <el-switch
+              v-model="scope.row.enable"
+              :disabled="scope.row.NoEdit == true"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="1"
+              :inactive-value="0"
+              @change="handleEnableChange(scope.$index, scope.row)"
+            />
           </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-button v-if="isRoleEdit" class="miniDanger" icon="el-icon-delete" @click="handleRowDelete(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)"
+            />
+            <el-button
+              v-if="isRoleEdit"
+              class="miniDanger"
+              icon="el-icon-delete"
+              @click="handleRowDelete(row)"
+            />
           </template>
         </el-table-column>
       </el-table>
-      <span v-if="table.listLoading == false" style="margin-right: 30px;margin-top: 10px;font-size: 14px;">{{$t('processAnalysis.total')}}{{ table.total }}{{$t('processAnalysis.tiao')}}</span>
+      <span
+        v-if="table.listLoading == false"
+        style="margin-right: 30px; margin-top: 10px; font-size: 14px"
+        >{{ $t("processAnalysis.total") }}{{ table.total
+        }}{{ $t("processAnalysis.tiao") }}</span
+      >
     </div>
-     <el-dialog :fullscreen="dialogFull" :visible.sync="create.dialogFormVisible" :close-on-click-modal="false" width="50%">
+    <el-dialog
+      :fullscreen="dialogFull"
+      :visible.sync="create.dialogFormVisible"
+      :close-on-click-modal="false"
+      width="50%"
+    >
       <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" />
-            {{$t('premixedPlan.tljh')}}
+            <span
+              style="
+                display: inline-block;
+                width: 3px;
+                height: 20px;
+                margin-right: 5px;
+                float: left;
+                margin-top: 2px;
+              "
+            />
+            {{ $t("premixedPlan.tljh") }}
           </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="155px" style="width: 100%;margin:0 auto 50px">
+        <el-form
+          ref="temp"
+          :rules="create.rules"
+          :model="create.temp"
+          label-position="right"
+          label-width="155px"
+          style="width: 100%; margin: 0 auto 50px"
+        >
           <el-row>
             <el-col :span="12">
               <el-form-item :label="$t('premixedPlan.tlc')" prop="tmrId">
-                <el-select v-model="create.temp.tmrId" filterable placeholder="推料车" class="filter-item" style="width: 100%;">
-                  <el-option v-for="item in tmrList" :key="item.id" :label="item.tname" :value="item.id" />
+                <el-select
+                  v-model="create.temp.tmrId"
+                  filterable
+                  :placeholder="$t('premixedPlan.tlc')"
+                  class="filter-item"
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="item in tmrList"
+                    :key="item.id"
+                    :label="item.tname"
+                    :value="item.id"
+                  />
                 </el-select>
               </el-form-item>
             </el-col>
@@ -77,22 +196,48 @@
           <el-row>
             <el-col :span="12">
               <el-form-item :label="$t('premixedPlan.time')" prop="date">
-                <el-time-picker v-model="create.temp.date" style="width: 100%;" value-format="HH:mm:ss" />
+                <el-time-picker
+                  v-model="create.temp.date"
+                  style="width: 100%"
+                  value-format="HH:mm:ss"
+                />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="12">
-              <el-form-item :label="$t('formulationEvaluation.remark')" prop="remark">
-                <el-input ref="remark" v-model="create.temp.remark" class="filter-item" placeholder="备注" type="text" style="width: 100%;" />
+              <el-form-item
+                :label="$t('formulationEvaluation.remark')"
+                prop="remark"
+              >
+                <el-input
+                  ref="remark"
+                  v-model="create.temp.remark"
+                  class="filter-item"
+                  :placeholder="$t('formulationEvaluation.remark')"
+                  type="text"
+                  style="width: 100%"
+                />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="12">
               <el-form-item :label="$t('premixedPlan.ls')" prop="barId">
-                <el-select v-model="create.temp.barId" multiple  filterable :placeholder="$t('errorAnalysis.pen')" class="filter-item" style="width: 100%;">
-                  <el-option v-for="item in barList" :key="item.id" :label="item.bname" :value="item.id" />
+                <el-select
+                  v-model="create.temp.barId"
+                  multiple
+                  filterable
+                  :placeholder="$t('errorAnalysis.pen')"
+                  class="filter-item"
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="item in barList"
+                    :key="item.id"
+                    :label="item.bname"
+                    :value="item.id"
+                  />
                 </el-select>
               </el-form-item>
             </el-col>
@@ -100,38 +245,63 @@
           <el-row>
             <el-col :span="12">
               <el-form-item :label="$t('premixedPlan.status')" prop="enable">
-                <el-switch v-model="create.temp.enable" active-color="#13ce66" inactive-color="#ff4949" :active-value="1" :inactive-value="0"  />
+                <el-switch
+                  v-model="create.temp.enable"
+                  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 class="save" @click="create.dialogStatus = 'create' ? createData():updateData()" :disabled="isokDisable" >{{$t('errorAnalysis.confirm')}}</el-button>
+          <el-button
+            class="cancelClose"
+            @click="
+              create.dialogFormVisible = false;
+              getList();
+            "
+            >{{ $t("common.closed") }}</el-button
+          >
+          <el-button
+            class="save"
+            @click="
+              create.dialogStatus = 'create' ? createData() : updateData()
+            "
+            :disabled="isokDisable"
+            >{{ $t("errorAnalysis.confirm") }}</el-button
+          >
         </div>
       </div>
     </el-dialog>
-
   </div>
 </template>
 
 <script>
-import { GetDataByName, postJson,getJson, formatNum, checkButtons } from '@/api/common'
-import { parseTime} from '@/utils/index.js'
-import { MessageBox } from 'element-ui'
-import Cookies from 'js-cookie'
-import axios from 'axios'
-import { getToken } from '@/utils/auth'
+import {
+  GetDataByName,
+  postJson,
+  getJson,
+  formatNum,
+  checkButtons,
+} from "@/api/common";
+import { parseTime } from "@/utils/index.js";
+import { MessageBox } from "element-ui";
+import Cookies from "js-cookie";
+import axios from "axios";
+import { getToken } from "@/utils/auth";
 
 export default {
-  name: 'PushMaterialPlan',
+  name: "PushMaterialPlan",
   data() {
     return {
       table: {
         parammaps: {
-          pastureid: Cookies.get('pastureid'),
-          date:'',
-          eqCode:''
+          pastureid: Cookies.get("pastureid"),
+          date: "",
+          eqCode: "",
         },
         tableKey: 0,
         list: [],
@@ -140,213 +310,307 @@ export default {
       },
       create: {
         dialogFormVisible: false,
-        dialogStatus: '',
-        temp: { pastureId: Cookies.get('pastureid'), tmrId: '',date: '',remark: '',barId: '',enable: ''},
+        dialogStatus: "",
+        temp: {
+          pastureId: Cookies.get("pastureid"),
+          tmrId: "",
+          date: "",
+          remark: "",
+          barId: "",
+          enable: "",
+        },
         rules: {
-          tmrId: [{ required: true, message: this.$t('hardwareTest.bt'), trigger: 'blur' }],
-          date: [{ required: true, message: this.$t('hardwareTest.bt'), trigger: 'blur' }],
-          remark: [{ required: true, message: this.$t('hardwareTest.bt'), trigger: 'blur' }],
-          barId: [{ required: true, message: this.$t('hardwareTest.bt'), trigger: 'blur' }],
-          enable: [{ required: true, message: this.$t('hardwareTest.bt'), trigger: 'blur' }]
-        }
+          tmrId: [
+            {
+              required: true,
+              message: this.$t("hardwareTest.bt"),
+              trigger: "blur",
+            },
+          ],
+          date: [
+            {
+              required: true,
+              message: this.$t("hardwareTest.bt"),
+              trigger: "blur",
+            },
+          ],
+          remark: [
+            {
+              required: true,
+              message: this.$t("hardwareTest.bt"),
+              trigger: "blur",
+            },
+          ],
+          barId: [
+            {
+              required: true,
+              message: this.$t("hardwareTest.bt"),
+              trigger: "blur",
+            },
+          ],
+          enable: [
+            {
+              required: true,
+              message: this.$t("hardwareTest.bt"),
+              trigger: "blur",
+            },
+          ],
+        },
       },
       dialogFull: false,
-      tmrList:[],
-      barList:[],
+      tmrList: [],
+      barList: [],
       isRoleEdit: [],
       selectList: [],
       isokDisable: false,
-      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
-      cellStyle: { padding: 0 + 'px' },
-      myHeight: document.documentElement.clientHeight - 85- 150,
-    }
+      rowStyle: { maxHeight: 30 + "px", height: 30 + "px" },
+      cellStyle: { padding: 0 + "px" },
+      myHeight: document.documentElement.clientHeight - 85 - 150,
+    };
   },
   created() {
-    this.getButtons()
-    this.getTMR_barList()
-    this.getList()
-
+    this.getButtons();
+    this.getTMR_barList();
+    this.getList();
   },
 
   methods: {
     getButtons() {
-      const Edit = 'PushMaterialPlan'
-      const isRoleEdit = checkButtons(JSON.parse(sessionStorage.getItem('buttons')), Edit)
-      this.isRoleEdit = isRoleEdit
+      const Edit = "PushMaterialPlan";
+      const isRoleEdit = checkButtons(
+        JSON.parse(sessionStorage.getItem("buttons")),
+        Edit
+      );
+      this.isRoleEdit = isRoleEdit;
     },
     getTMR_barList() {
-      let url = '/authdata/GetDataByName'
+      let url = "/authdata/GetDataByName";
       let data = {
-        name: 'getTMRList', page: 1, offset: 1,
+        name: "getTMRList",
+        page: 1,
+        offset: 1,
         parammaps: {
-          pastureid: Cookies.get('pastureid'),eqtype:'1'
-        }
-      }
-      postJson(url,data).then(response => {
+          pastureid: Cookies.get("pastureid"),
+          eqtype: "1",
+        },
+      };
+      postJson(url, data).then((response) => {
         if (response.data.list !== null) {
-          this.tmrList = response.data.list
+          this.tmrList = response.data.list;
         } else {
-          this.tmrList = []
+          this.tmrList = [];
         }
-      })
-      let url2 = '/authdata/GetDataByName'
+      });
+      let url2 = "/authdata/GetDataByName";
       let data2 = {
-        name: 'getBarList', page: 1, offset: 1,
+        name: "getBarList",
+        page: 1,
+        offset: 1,
         parammaps: {
-          pastureid: Cookies.get('pastureid')
-        }
-      }
-      postJson(url2,data2).then(response => {
+          pastureid: Cookies.get("pastureid"),
+        },
+      };
+      postJson(url2, data2).then((response) => {
         if (response.data.list !== null) {
-          this.barList = response.data.list
+          this.barList = response.data.list;
         } else {
-          this.barList = []
+          this.barList = [];
         }
-      })
+      });
     },
     getList() {
-      this.table.listLoading = true
-      let url = '/authdata/tmrequipment'
-      let data = '?pastureId='+ Cookies.get('pastureid') +'&offset=1' + '&page=50'+'&date='+this.table.parammaps.date +'&eqCode='+this.table.parammaps.eqCode
-      getJson(url,data).then(response => {
-        console.log('table数据', response.data.list)
+      this.table.listLoading = true;
+      let url = "/authdata/tmrequipment";
+      let data =
+        "?pastureId=" +
+        Cookies.get("pastureid") +
+        "&offset=1" +
+        "&page=50" +
+        "&date=" +
+        this.table.parammaps.date +
+        "&eqCode=" +
+        this.table.parammaps.eqCode;
+      getJson(url, data).then((response) => {
+        console.log("table数据", response.data.list);
         if (response.data.list !== null) {
-          this.table.list = response.data.data
+          this.table.list = response.data.data;
         } else {
-          this.table.list = []
+          this.table.list = [];
         }
-        this.table.total = response.data.count
+        this.table.total = response.data.count;
         setTimeout(() => {
-          this.table.listLoading = false
-        }, 100)
-      })
+          this.table.listLoading = false;
+        }, 100);
+      });
     },
-     // 新增
+    // 新增
     handleCreate() {
-      this.resetTemp()
-      this.dialogFull = false
-      this.create.dialogStatus = 'create'
-      this.create.dialogFormVisible = true
+      this.resetTemp();
+      this.dialogFull = false;
+      this.create.dialogStatus = "create";
+      this.create.dialogFormVisible = true;
     },
     resetTemp() {
-      this.create.temp.tmrId = ''
-      this.create.temp.pastureId = Cookies.get('pastureid')
-      this.create.temp.date = ''
-      this.create.temp.remark = ''
-      this.create.temp.barId = ''
-      this.create.temp.enable = 1
+      this.create.temp.tmrId = "";
+      this.create.temp.pastureId = Cookies.get("pastureid");
+      this.create.temp.date = "";
+      this.create.temp.remark = "";
+      this.create.temp.barId = "";
+      this.create.temp.enable = 1;
     },
-    createData(){
-      this.isokDisable = true
+    createData() {
+      this.isokDisable = true;
       setTimeout(() => {
-        this.isokDisable = false
-      }, 1000)
-      this.$refs['temp'].validate(valid => {
+        this.isokDisable = false;
+      }, 1000);
+      this.$refs["temp"].validate((valid) => {
         if (valid) {
-          let url = '/authdata/tmrequipment/edit'
-          let data = this.create.temp
-          data.barId = this.create.temp.barId.join()
+          let url = "/authdata/tmrequipment/edit";
+          let data = this.create.temp;
+          data.barId = this.create.temp.barId.join();
           // data.date = parseTime(this.create.temp.date,'{h}:{i}:{s}')
-          postJson(url,data).then(response => {
-            if(response.msg == 'fail'){
-              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.create.dialogFormVisible = false
-              this.getList()
+          postJson(url, data).then((response) => {
+            if (response.msg == "fail") {
+              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.create.dialogFormVisible = false;
+              this.getList();
             }
-          })
+          });
         }
-      })
+      });
     },
     // 编辑
     handleUpdate(row) {
-      this.create.temp = Object.assign({},row)
-      this.create.temp.barId = row.barId.split(',')
-      this.dialogFull = false
-      this.create.dialogStatus = 'create'
-      this.create.dialogFormVisible = true
+      this.create.temp = Object.assign({}, row);
+      this.create.temp.barId = row.barId.split(",");
+      this.dialogFull = false;
+      this.create.dialogStatus = "create";
+      this.create.dialogFormVisible = true;
     },
     updateData(row) {
-      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) {
-          let url = '/authdata/tmrequipment/edit'
-          let data = this.create.temp
-          data.barId = this.create.temp.barId.join()
+          let url = "/authdata/tmrequipment/edit";
+          let data = this.create.temp;
+          data.barId = this.create.temp.barId.join();
           // data.date = parseTime(this.create.temp.date,'{h}:{i}:{s}')
-          postJson(url,data).then(response => {
-            if(response.msg == 'fail'){
-              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.create.dialogFormVisible = false
-              this.getList()
+          postJson(url, data).then((response) => {
+            if (response.msg == "fail") {
+              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.create.dialogFormVisible = false;
+              this.getList();
             }
-          })
+          });
         }
-      })
+      });
     },
-    handleRowDelete(row){
-      let url = '/authdata/tmrequipment/del'
-      let data = {}
-      data.id = row.id
-      postJson(url,data).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()
+    handleRowDelete(row) {
+      let url = "/authdata/tmrequipment/del";
+      let data = {};
+      data.id = row.id;
+      postJson(url, data).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();
         }
-      })
+      });
     },
     handleSelect(val) {
-      console.log('勾选数据', val)
-      this.selectList = val
+      console.log("勾选数据", val);
+      this.selectList = val;
     },
-    handleEnableChange(index,row) {
-      console.log('点击了是否启用')
-      let url = '/authdata/tmrequipment/edit'
-      let data = row
+    handleEnableChange(index, row) {
+      console.log("点击了是否启用");
+      let url = "/authdata/tmrequipment/edit";
+      let data = row;
       // data.barId = row.barId.join()
       // data.date = parseTime(this.create.temp.date,'{h}:{i}:{s}')
-      postJson(url,data).then(response => {
-        if(response.msg == 'fail'){
-          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.create.dialogFormVisible = false
-          this.getList()
+      postJson(url, data).then((response) => {
+        if (response.msg == "fail") {
+          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.create.dialogFormVisible = false;
+          this.getList();
         }
-      })
+      });
     },
 
     form_search() {
-      console.log('点击了查询')
-      this.getList()
+      console.log("点击了查询");
+      this.getList();
     },
-    handleRefresh(){
-      this.table.parammaps.date = ''
-      this.table.parammaps.eqCode = ''
-    }
-  }
-}
+    handleRefresh() {
+      this.table.parammaps.date = "";
+      this.table.parammaps.eqCode = "";
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
-  .search {
-    clear: both;
-  }
+.search {
+  clear: both;
+}
 
-  .table {
-    margin-top: 10px;
-  }
-  .el-tag{margin-right: 5px;}
+.table {
+  margin-top: 10px;
+}
+.el-tag {
+  margin-right: 5px;
+}
 </style>
 <style lang="scss">
-  .red-row{
-    background: #fde2e2 !important;
-  }
+.red-row {
+  background: #fde2e2 !important;
+}
 </style>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 848 - 144
src/views/formulationPlan/recipeTemplate/index.vue


+ 136 - 130
src/views/leftoverManagement/index.vue

@@ -1,30 +1,29 @@
 <template>
   <div class="container">
     <div class="header-box">
-      <p> 剩料计划</p>
-      <el-button type="primary" plain class="add-btn" @click="dialogVisible = true">新 增</el-button>
+      <p>剩料计划</p>
+      <el-button
+        type="primary"
+        plain
+        class="add-btn"
+        @click="dialogVisible = true"
+        >新 增</el-button
+      >
     </div>
 
     <div class="table">
       <el-table
-       element-loading-text="给我一点时间"
+        element-loading-text="给我一点时间"
         :data="tableData"
         border
         fit
         highlight-current-row
-        style="width: 100%;"
+        style="width: 100%"
         class="elTable table-fixed"
-        >
-        <el-table-column
-          label="序号"
-          width="60"
-          type="index"
-          >
+      >
+        <el-table-column label="序号" width="60" type="index">
         </el-table-column>
-        <el-table-column
-          label="替代方案"
-          prop="name"
-          width="180">
+        <el-table-column label="替代方案" prop="name" width="180">
         </el-table-column>
         <el-table-column label="操作">
           <template slot-scope="scope">
@@ -32,146 +31,153 @@
               size="mini"
               class="miniSuccess"
               icon="el-icon-edit-outline"
-              @click="handleEdit(scope.$index, scope.row)"></el-button>
+              @click="handleEdit(scope.$index, scope.row)"
+            ></el-button>
             <el-button
               size="mini"
               type="danger"
               icon="el-icon-delete"
-              @click="handleDelete(scope.$index, scope.row)"></el-button>
+              @click="handleDelete(scope.$index, scope.row)"
+            ></el-button>
           </template>
         </el-table-column>
       </el-table>
       <!--  -->
       <el-pagination
-      class="page"
-      @size-change="handleSizeChange"
-      @current-change="handleCurrentChange"
-      :current-page.sync="currentPage1"
-      :page-size="100"
-      layout="total, prev, pager, next"
-      :total="1000">
-    </el-pagination>
-     </div>
-
-     <!-- 新增删除提示 -->
-     <el-dialog
-        title="剩料新增"
-        :visible.sync="dialogVisible"
-        width="30%"
-       >
-        <div>
-          <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
-            <el-form-item label="替代方案" prop="name">
-              <el-select v-model="ruleForm.name" placeholder="请选择替代方案">
-                <el-option label="日料" value="1"></el-option>
-                <el-option label="豆bo" value="2"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-form>
-        </div>
-        <span slot="footer" class="dialog-footer">
-          <el-button class="add-btn" @click="dialogVisible = false">取 消</el-button>
-          <el-button class="add-btn" type="primary" @click="dialogVisible = false">确 定</el-button>
-        </span>
-      </el-dialog>
+        class="page"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :current-page.sync="currentPage1"
+        :page-size="100"
+        layout="total, prev, pager, next"
+        :total="1000"
+      >
+      </el-pagination>
+    </div>
 
+    <!-- 新增删除提示 -->
+    <el-dialog title="剩料新增" :visible.sync="dialogVisible" width="30%">
+      <div>
+        <el-form
+          :model="ruleForm"
+          :rules="rules"
+          ref="ruleForm"
+          label-width="100px"
+          class="demo-ruleForm"
+        >
+          <el-form-item label="替代方案" prop="name">
+            <el-select v-model="ruleForm.name" placeholder="请选择替代方案">
+              <el-option label="日料" value="1"></el-option>
+              <el-option label="豆bo" value="2"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button class="add-btn" @click="dialogVisible = false"
+          >取 消</el-button
+        >
+        <el-button class="add-btn" type="primary" @click="dialogVisible = false"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-  import {
-    GetDataByName,
-    GetDataByNames
-  } from '@/api/common'
-  import Cookies from 'js-cookie'
-  import {
-    MessageBox
-  } from 'element-ui'
-  export default {
-    name: 'LeftoverManagement',
-    data() {
-      return {
-        tableData: [{
-          id:1,
-          num: '1',
-          name: '日粮',
-        }, {
-          id:2,
-          num: '2',
-          name: '豆泊',
-        }, {
-          id:3,
-          num: '3',
-          name: '日粮',
-        }],
-        currentPage1: 1,
-        dialogVisible:false,
-        //
-        ruleForm: {
-          name: '',
+import { GetDataByName, GetDataByNames } from "@/api/common";
+import Cookies from "js-cookie";
+import { MessageBox } from "element-ui";
+export default {
+  name: "LeftoverManagement",
+  data() {
+    return {
+      tableData: [
+        {
+          id: 1,
+          num: "1",
+          name: "日粮",
         },
-        rules:{
-          name: [
-            { required: true, message: '请选择替代方案', trigger: 'change' }
-          ]
-        }
-      }
-    },
-    created() {},
-    methods: {
-      handleEdit(index, row) {
-        console.log(index, row);
-        // 获取当前数据,点击编辑
-        this.ruleForm = row;
-        this.dialogVisible = true;
+        {
+          id: 2,
+          num: "2",
+          name: "豆泊",
+        },
+        {
+          id: 3,
+          num: "3",
+          name: "日粮",
+        },
+      ],
+      currentPage1: 1,
+      dialogVisible: false,
+      //
+      ruleForm: {
+        name: "",
+      },
+      rules: {
+        name: [
+          { required: true, message: "请选择替代方案", trigger: "change" },
+        ],
       },
-      handleDelete(index, row) {
-        console.log(index, row);
-        this.$confirm('确定删除当前剩料配置吗?', this.$t('message.msg111'), {
-          confirmButtonText: '确定',
-          cancelButtonText: this.$t('common.cancel'),
-          type: 'warning'
-        }).then(() => {
+    };
+  },
+  created() {},
+  methods: {
+    handleEdit(index, row) {
+      console.log(index, row);
+      // 获取当前数据,点击编辑
+      this.ruleForm = row;
+      this.dialogVisible = true;
+    },
+    handleDelete(index, row) {
+      console.log(index, row);
+      this.$confirm("确定删除当前剩料配置吗?", this.$t("message.msg111"), {
+        confirmButtonText: this.$t("common.confirm"),
+        cancelButtonText: this.$t("common.cancel"),
+        type: "warning",
+      })
+        .then(() => {
           this.$message({
-            type: 'success',
-            message: '删除成功!'
+            type: "success",
+            message: "删除成功!",
           });
-        }).catch(() => {
+        })
+        .catch(() => {
           this.$message({
-            type: 'info',
-            message: this.$t('common.cancelMsg')
+            type: "info",
+            message: this.$t("common.cancelMsg"),
           });
-        })
-      },
-      //
-      handleSizeChange(val) {
-        console.log(`每页 ${val} 条`);
-      },
-      handleCurrentChange(val) {
-        console.log(`当前页: ${val}`);
-      }
-
+        });
     },
-
-  }
+    //
+    handleSizeChange(val) {
+      console.log(`每页 ${val} 条`);
+    },
+    handleCurrentChange(val) {
+      console.log(`当前页: ${val}`);
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>
-  .header-box{
-    display: flex;
-    justify-content: space-between;
-  }
+.header-box {
+  display: flex;
+  justify-content: space-between;
+}
 
-  .container{
-    padding: 15px;
-    min-height:600px;
-    margin-left:10px;
-    .add-btn{
-      width:90px;
-      height:40px;
-    }
-    .page{
-      margin-top:20px;
-    }
+.container {
+  padding: 15px;
+  min-height: 600px;
+  margin-left: 10px;
+  .add-btn {
+    width: 90px;
+    height: 40px;
+  }
+  .page {
+    margin-top: 20px;
   }
+}
 </style>

+ 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>

+ 1478 - 0
src/views/shedProduction/leftoverUse/index.vue

@@ -0,0 +1,1478 @@
+<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="至"
+        start-placeholder="开始日期"
+        end-placeholder="结束日期"
+        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.ftid" filterable placeholder="栏舍名称" 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="record" filterable placeholder="记录" class="filter-item" style="width: 150px;" @change="changeRecord">
+        <el-option v-for="item in recordList" :key="item.id" :label="item.name" :value="item.id" />
+      </el-select>
+      <el-select v-if="record== '1'" v-model="table.getdataListParm.parammaps.eqcode" filterable placeholder="TMR编号" class="filter-item" style="width: 120px;" clearable>
+        <el-option v-for="item in TMRNumberList" :key="item.id" :label="item.tname" :value="item.eqcode" />
+      </el-select> -->
+      <el-button class="successBorder" @click="form_search">查询</el-button>
+      <!-- <el-button class="successBorder" @click="handleRefresh">重置</el-button> -->
+    </div>
+    <div class="operation" v-if="record == '0'">
+      <el-button
+        v-if="isRoleEdit"
+        icon="el-icon-plus"
+        class="success"
+        @click="handleCreate"
+        >新增</el-button
+      >
+      <el-button
+        v-if="isRoleEdit"
+        icon="el-icon-delete"
+        class="danger"
+        @click="form_delete"
+        >删除</el-button
+      >
+      <el-button
+        v-if="isRoleEdit"
+        class="success"
+        icon="el-icon-upload2"
+        @click="handleSAPUpload"
+        >SAP上传</el-button
+      >
+      <!-- <el-button v-if="dataSynchronization.isDataSynchronization && isRoleEdit" class="success" @click="handleDataUpload">数据上传</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;">导入</el-button>
+      </el-upload>
+      <el-dropdown style="float: right;margin-right: 10px;">
+        <el-button class="export" icon="el-icon-upload2">导出</el-button>
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item  @click.native="handleExport(1)">导出模板</el-dropdown-item>
+          <el-dropdown-item @click.native="handleExport(2)">导出数据</el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown> -->
+    </div>
+    <div class="operation" v-else>
+      <el-button
+        v-if="dataSynchronization.isDataSynchronization && isRoleEdit"
+        class="success"
+        @click="handleDataUpload"
+        >数据上传</el-button
+      >
+      <el-button
+        style="float: right; margin-right: 10px"
+        class="export"
+        icon="el-icon-upload2"
+        @click="handleExport(3)"
+        >导出</el-button
+      >
+    </div>
+    <!-- 剩料使用 table -->
+    <div class="table">
+      <el-table
+        :key="table.tableKey"
+        v-loading="table.listLoading"
+        element-loading-text="给我一点时间"
+        :data="table.list"
+        border
+        fit
+        highlight-current-row
+        style="width: 100%"
+        :row-style="rowStyle"
+        :cell-style="cellStyle"
+        class="elTable table-fixed"
+        :header-cell-style="{ 'text-align': 'center' }"
+        @selection-change="handleSelectionChange"
+        :max-height="myHeight"
+      >
+        <el-table-column type="selection" align="left" width="50" />
+        <el-table-column label="序号" align="left" type="index" width="50px">
+          <template slot-scope="scope">
+            <span>{{
+              scope.$index + (table.pageNum - 1) * table.pageSize + 1
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="栏舍名称"
+          min-width="120px"
+          align="left"
+          prop="barname"
+        />
+        <el-table-column
+          label="配方名称"
+          min-width="120px"
+          align="left"
+          prop="ftname"
+        />
+        <el-table-column
+          label="剩料使用时间"
+          min-width="150px"
+          align="left"
+          prop="date"
+        />
+        <el-table-column
+          label="班次"
+          min-width="90px"
+          align="left"
+          prop="timesstr"
+        />
+        <el-table-column
+          label="替代方案"
+          min-width="100px"
+          align="left"
+          prop="surplus"
+        />
+        <el-table-column
+          label="替代重量(Kg)"
+          min-width="100px"
+          align="left"
+          prop="weight"
+        />
+        <el-table-column
+          label="操作"
+          align="left"
+          width="100"
+          class-name="small-padding fixed-width"
+          fixed="right"
+        >
+          <template slot-scope="{ row }">
+            <!-- <el-button v-if="isRoleEdit" :disabled="row.emp == '设备采集'" class="miniSuccess" icon="el-icon-edit-outline" @click="handleUpdate(row)" />
+            <span v-if="isRoleEdit" class="centerSpan">|</span> -->
+            <el-button
+              v-if="isRoleEdit"
+              :disabled="row.emp == '设备采集'"
+              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"
+      />
+    </div>
+
+    <!-- 新增/编辑 -->
+    <el-dialog
+      :fullscreen="dialogFull"
+      :visible.sync="create.dialogFormVisible"
+      :close-on-click-modal="false"
+      v-if="create.dialogFormVisible"
+      width="40%"
+    >
+      <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;
+              "
+            />
+            {{ textMap[create.dialogStatus] }}
+          </span>
+          <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-row v-if="create.dialogStatus == 'create'">
+            <el-col :span="20">
+              <el-form-item label="栏舍名称:" prop="barid">
+                <el-select
+                  ref="ftid"
+                  v-model="create.temp.barid"
+                  :disabled="create.dialogStatus == 'update'"
+                  filterable
+                  placeholder="栏舍名称"
+                  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-row>
+          <el-row v-else>
+            <el-col :span="20">
+              <el-form-item label="栏舍名称:" prop="barname">
+                <el-input
+                  ref="barname"
+                  v-model="create.temp.barname"
+                  disabled
+                  class="filter-item"
+                  placeholder=""
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <!-- TODO: -->
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="配方名称:">
+                <el-input
+                  v-model="create.temp.ftname"
+                  class="filter-item"
+                  placeholder="配方名称"
+                  disabled
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="剩料使用时间:" prop="date">
+                <el-date-picker
+                  v-model="create.temp.date"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  style="width: 100%"
+                  :picker-options="pickerOptions"
+                  placeholder="剩料使用时间"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="20">
+              <el-form-item label="班次:">
+                <el-select
+                  ref="times"
+                  v-model="create.temp.times"
+                  filterable
+                  placeholder="班次"
+                  :disabled="create.dialogStatus == 'update'"
+                  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="20">
+              <el-form-item label="替代方案:" prop="surplus">
+                <el-select
+                  style="width: 100%"
+                  v-model="create.temp.surplus"
+                  filterable
+                  clearable
+                  placeholder="替代方案"
+                  class="filter-item"
+                  @change="handlegetSurplus"
+                >
+                  <el-option
+                    v-for="item in tableData"
+                    :key="item.id"
+                    :label="item.surplus"
+                    :value="item.surplus"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="替代重量(Kg):" prop="weight">
+                <el-input
+                  ref="weight"
+                  v-model="create.temp.weight"
+                  class="filter-item"
+                  placeholder="替代重量"
+                  type="number"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+          <el-button
+            class="cancelClose"
+            @click="
+              create.dialogFormVisible = false;
+              getList();
+            "
+            >关闭</el-button
+          >
+          <el-button
+            v-if="
+              create.dialogStatus === 'create' ||
+              create.dialogStatus === 'update'
+            "
+            class="save"
+            :disabled="isokDisable"
+            @click="
+              create.dialogStatus === 'create' ? createData() : updateData()
+            "
+            >确认</el-button
+          >
+        </div>
+      </div>
+    </el-dialog>
+
+    <!-- sap上传 -->
+    <el-dialog
+      title="SAP上传"
+      :destroy-on-close="true"
+      :visible.sync="sapUpload.dialogFormVisible"
+      :close-on-click-modal="false"
+      width="40%"
+    >
+      <div class="sapUpload">
+        <el-form
+          ref="sapUpload"
+          :rules="sapUpload.rules"
+          :model="sapUpload.temp"
+          label-position="right"
+          label-width="100px"
+          style="width: 100%; margin: 0 auto 50px"
+        >
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="时间:" prop="date">
+                <el-date-picker
+                  v-model="sapUpload.temp.date"
+                  :clearable="false"
+                  class="filter-item"
+                  type="date"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div slot="footer" class="dialog-footer" style="bottom: 20px">
+          <el-button
+            class="cancelClose"
+            @click="
+              sapUpload.dialogFormVisible = false;
+              getList();
+            "
+            >取消</el-button
+          >
+          <el-button
+            class="save"
+            :disabled="isokDisable"
+            @click="sapUploadData()"
+            >确认</el-button
+          >
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  GetDataByName,
+  PostDataByName,
+  getSurplus,
+  GetDataByNames,
+  checkButtons,
+  postJson2,
+  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: "MaterialRemainingRecord",
+  components: { Pagination },
+  data() {
+    return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() > Date.now() - 8.64e6; //如果没有后面的-8.64e6就是不可以选择今天的
+        },
+      },
+      enterTime: "",
+      tableData: [],
+      sapUpload: {
+        dialogFormVisible: false,
+        dialogStatus: "",
+        temp: {
+          date: parseTime(new Date(), "{y}-{m}-{d}"),
+        },
+        rules: {
+          date: [
+            { required: true, message: "原剩料所属时间必填", trigger: "blur" },
+          ],
+        },
+        getdataListParm: {
+          name: "getSysoptEnable",
+          page: 1,
+          offset: 1,
+          pagecount: 1,
+          returntype: "Map",
+          parammaps: {
+            pastureid: Cookies.get("pastureid"),
+            inforname: "sapupload",
+          },
+        },
+        isSap: false,
+      },
+      dialogFull: false,
+      isRoleEdit: [],
+      getParmas: {
+        name: "getFPList",
+        page: 1,
+        offset: 1,
+        pagecount: 0,
+        returntype: "Map",
+        parammaps: {
+          pastureid: Cookies.get("pastureid"),
+          ftname: "",
+        },
+      },
+      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: "getTMRListEnableType",
+          offset: 0,
+          pagecount: 0,
+          parammaps: { pastureid: Cookies.get("pastureid"), eqtype: "1" },
+        },
+      ],
+      houseNameList: [], // 栏舍名称
+      frequencyList: [], // 收集
+      recordList: [
+        { id: "0", name: "手动记录" },
+        { id: "1", name: "TMR设备自动记录" },
+      ],
+      record: "0",
+      table: {
+        getdataListParm: {
+          name: "getWasteuse",
+          page: 1,
+          offset: 1,
+          pagecount: parseInt(Cookies.get("pageCount")),
+          returntype: "Map",
+          parammaps: {
+            pastureId: Cookies.get("pastureid"),
+            ftid: "",
+            startdate: "",
+            enddate: "",
+            inputDatetime: "",
+          },
+        },
+        tableKey: 0,
+        list: [],
+        total: 0,
+        listLoading: true,
+        temp: {},
+        tableKey2: 0,
+        listLoading2: false,
+        list2: [],
+      },
+
+      // 新增/编辑
+      create: {
+        dialogFormVisible: false,
+        dialogStatus: "",
+        temp: {
+          pastureId: Cookies.get("pastureid"),
+          operatetime: parseTime(new Date(), "{y}-{m}-{d} {h}:{i}"),
+          emp: Cookies.get("employename"),
+          ftid: "",
+          ftname: "",
+          weight: "",
+          times: "1",
+          surplusId: "",
+          surplus: "",
+        },
+        rules: {
+          ftid: [
+            {
+              type: "string",
+              required: true,
+              message: "必填",
+              trigger: "blur",
+            },
+          ],
+          weight: [
+            {
+              type: "string",
+              required: true,
+              message: "必填",
+              trigger: "blur",
+            },
+          ],
+          times: [
+            {
+              type: "string",
+              required: true,
+              message: "必填",
+              trigger: "blur",
+            },
+          ],
+          ftname: [
+            {
+              type: "string",
+              required: true,
+              message: "必填",
+              trigger: "blur",
+            },
+          ],
+          surplus: [
+            {
+              type: "string",
+              required: true,
+              message: "必填",
+              trigger: "blur",
+            },
+          ],
+          date: [
+            {
+              type: "string",
+              required: true,
+              message: "必填",
+              trigger: "blur",
+            },
+          ],
+          barid: [
+            {
+              type: "string",
+              required: true,
+              message: "必填",
+              trigger: "blur",
+            },
+          ],
+        },
+        getdataListParm: {
+          name: "getBarfeedremainEmpHis",
+          page: 1,
+          offset: 1,
+          pagecount: 10,
+          returntype: "Map",
+          parammaps: {
+            pastureid: Cookies.get("pastureid"),
+          },
+        },
+        noteTakerList: [], // 记录人
+      },
+      textMap: {
+        create: "新增",
+        update: "编辑",
+      },
+
+      requestParam: {},
+      download: {
+        getdataListParm: {
+          name: "getBarfeedremainList",
+          page: 1,
+          offset: 1,
+          pagecount: 0,
+          returntype: "Map",
+          parammaps: {
+            pastureid: Cookies.get("pastureid"),
+            ftid: "",
+            startdate: "",
+            enddate: "",
+            inputDatetime: "",
+          },
+        },
+        list: [],
+      },
+      dataSynchronization: {
+        dialogFormVisible: false,
+        dialogStatus: "",
+        getdataListParm: {
+          name: "getSysoptEnable",
+          page: 1,
+          offset: 1,
+          pagecount: 1,
+          returntype: "Map",
+          parammaps: {
+            pastureid: Cookies.get("pastureid"),
+            inforname: "wgSap",
+          },
+        },
+        isDataSynchronization: false,
+      },
+      isokDisable: false,
+      selectList: [],
+      rowStyle: { maxHeight: 30 + "px", height: 30 + "px" },
+      cellStyle: { padding: 0 + "px" },
+      myHeight: document.documentElement.clientHeight - 85 - 150 - 45,
+      url: "authdata/ImportExcel",
+    };
+  },
+  computed: {
+    // 设置请求头
+    headers() {
+      return {
+        token: getToken(),
+      };
+    },
+    uploadData() {
+      return {
+        name: "checkbarname,checktimes,insertBarfeedremainUpload",
+        importParams:
+          "栏舍名称,配方名称,原剩料所属时间,剩料量(kg),干物质,班次收集(一天/第一班/第二班/第三班),收集时间,操作人",
+        sheetname: "Sheet1",
+        // 登录牧场
+        pastureid: Cookies.get("pastureid"),
+        // 日期参数
+        dateParams: "原剩料所属时间",
+        // 必填参数
+        requiredParams:
+          "栏舍名称,剩料量(kg),班次收集(一天/第一班/第二班/第三班)",
+        // 为数值的参数
+        numParams: "剩料量(kg)",
+      };
+    },
+    // 设置上传地址
+    uploadExcelUrl() {
+      // return Cookies.get('url') + 'authdata/ImportExcel'
+      return Cookies.get("url") + "authdata/ImportExcel";
+    },
+    // let url = 'authdata/ImportExcel';
+  },
+  created() {
+    console.log(document.querySelector("html").getAttribute("domain"), "7777");
+    this.getDataSynchronization();
+    this.getList();
+    this.getDownList();
+    this.getButtons();
+    this.getLeftTable();
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.enterTime = Date.now();
+    });
+  },
+  beforeUnmount() {
+    const stayTime = Math.round((Date.now() - this.enterTime) / 1000);
+    window._hmt?.push([
+      "_trackEvent",
+      "PageStay",
+      "Duration",
+      this.$route.path,
+      stayTime,
+    ]);
+  },
+  methods: {
+    // 获取剩料列表
+    async getLeftTable() {
+      const { data } = await getSurplus(Cookies.get("pastureid"));
+      console.log(data, "table");
+      this.tableData = data;
+    },
+    // 获取替代方案的名字
+    handlegetSurplus(val) {
+      const id = this.tableData.find((item) => {
+        return item.surplus == val;
+      }).id;
+      this.create.temp.surplusId = id;
+      console.log(id, "surplus");
+    },
+    // 点击sap上传
+    handleSAPUpload() {
+      this.sapUpload.dialogStatus = "sapUpload";
+      this.sapUpload.dialogFormVisible = true;
+    },
+    sapUploadData() {
+      this.$refs["sapUpload"].validate((valid) => {
+        if (valid) {
+          const url = "authdata/xdmy/sap/wasteuse";
+          const data = {
+            pastureId: Cookies.get("pastureid"),
+            date: parseTime(this.sapUpload.temp.date, "{y}-{m}-{d}"),
+          };
+          const loading = this.$loading({
+            lock: true,
+            text: "Loading",
+            spinner: "el-icon-loading",
+            background: "rgba(0, 0, 0, 0.7)",
+          });
+
+          postJson(url, data).then((response) => {
+            setTimeout(() => {
+              loading.close();
+            }, 1000);
+            if (response.msg == "ok") {
+              this.$notify({
+                title: "",
+                message: "成功",
+                type: "success",
+                duration: 2000,
+              });
+              this.sapUpload.dialogFormVisible = false;
+              this.getList();
+            } else {
+              this.$notify({
+                title: "失败",
+                message: response.data,
+                type: "warning",
+                duration: 2000,
+              });
+            }
+          });
+        }
+      });
+    },
+
+    getDataSynchronization() {
+      GetDataByName(this.dataSynchronization.getdataListParm).then(
+        (response) => {
+          // console.log(response.data.list[0])
+          if (response.data.list && response.data.list[0].inforvalue == 0) {
+            this.dataSynchronization.isDataSynchronization = false;
+          } else {
+            this.dataSynchronization.isDataSynchronization = true;
+          }
+        }
+      );
+    },
+    getButtons() {
+      const Edit = "MaterialRemainingRecord";
+      const isRoleEdit = checkButtons(
+        JSON.parse(sessionStorage.getItem("buttons")),
+        Edit
+      );
+      this.isRoleEdit = isRoleEdit;
+    },
+    getDownList() {
+      GetDataByNames(this.requestParams).then((response) => {
+        this.houseNameList = response.data.getBarListEnable.list;
+        this.TMRNumberList = response.data.getTMRListEnableType.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);
+          }
+          // this.frequencyList.unshift({id:'0',name:"一天"})
+        } else {
+          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();
+      }
+    },
+    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();
+      }
+    },
+
+    getList() {
+      this.table.listLoading = true;
+      if (
+        this.table.getdataListParm.parammaps.inputDatetime !== "" &&
+        this.table.getdataListParm.parammaps.inputDatetime !== null
+      ) {
+        this.table.getdataListParm.parammaps.startdate = parseTime(
+          this.table.getdataListParm.parammaps.inputDatetime[0],
+          "{y}-{m}-{d}"
+        );
+        this.table.getdataListParm.parammaps.enddate = parseTime(
+          this.table.getdataListParm.parammaps.inputDatetime[1],
+          "{y}-{m}-{d}"
+        );
+      } else {
+        this.table.getdataListParm.parammaps.inputDatetime = "";
+        this.table.getdataListParm.parammaps.startdate = "";
+        this.table.getdataListParm.parammaps.enddate = "";
+      }
+      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;
+        } else {
+          this.table.list = [];
+        }
+        setTimeout(() => {
+          this.table.listLoading = false;
+        }, 100);
+      });
+    },
+    changeRecord(item) {
+      if (item == "0") {
+        this.table.getdataListParm.name = "getBarfeedremainList";
+      } else {
+        this.table.getdataListParm.name = "getRemainplanrecord";
+      }
+      this.table.getdataListParm.offset = 1;
+      this.getList();
+    },
+    form_search() {
+      console.log("点击了查询");
+      this.table.getdataListParm.offset = 1;
+      this.getList();
+    },
+    handleRefresh() {
+      console.log("点击了重置");
+      this.table.getdataListParm.parammaps.ftid = "";
+      this.table.getdataListParm.parammaps.startdate = "";
+      this.table.getdataListParm.parammaps.enddate = "";
+      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} {h}:{i}"),
+        emp: Cookies.get("employename"),
+        ftid: "",
+        ftname: "",
+        weight: "",
+        times: "1",
+        date: "",
+      };
+    },
+    blurEmp(item) {
+      this.create.temp.emp = item.target.value;
+    },
+    // 栏舍名称
+    changeBar(item) {
+      this.create.temp.ftname = this.houseNameList.find(
+        (obj) => obj.id === item
+      ).bname;
+      this.create.temp.ftid = item;
+      this.getParmas.parammaps.barid = item;
+      this.chooseftname();
+    },
+    // 根据栏舍选择配方名称
+    chooseftname() {
+      GetDataByName(this.getParmas).then((res) => {
+        const { data } = res;
+        const ftname = data.list.length && data.list[0].ftname;
+        this.$set(this.create.temp, "ftname", ftname);
+        // this.create.temp.ftname = ftname;
+        console.log(this.create.temp.ftname, ftname, "配方名字");
+      });
+    },
+
+    getNoteTakerList() {
+      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;
+          }
+          this.create.noteTakerList = response.data.list;
+          console.log("记录人数据", response.data.list);
+          console.log(this.create.noteTakerList);
+        } else {
+          this.create.noteTakerList = [];
+        }
+      });
+    },
+    handleCreate() {
+      console.log("点击了新增", this.create);
+
+      this.dialogFull = false;
+      this.resetTemp();
+      this.getNoteTakerList();
+      this.create.dialogStatus = "create";
+      this.create.dialogFormVisible = true;
+    },
+    createData() {
+      console.log("点击了新增保存");
+      console.log(this.create.temp, "发送数据");
+      this.isokDisable = true;
+      setTimeout(() => {
+        this.isokDisable = false;
+      }, 1000);
+      this.$refs["temp"].validate((valid) => {
+        if (valid) {
+          this.isokDisable = true;
+          setTimeout(() => {
+            this.isokDisable = false;
+          }, 1000);
+          const weight = /^\d+(\.\d{1,2})?$/;
+          // 剩料量
+          if (!weight.test(parseFloat(this.create.temp.weight))) {
+            this.$message({
+              type: "error",
+              message: "剩料量请输入自然数并保留两位小数",
+              duration: 2000,
+            });
+            return false;
+          }
+          this.requestParam.name = "insertWasteuse";
+          this.requestParam.parammaps = this.create.temp;
+
+          if (this.create.temp.emp == "") {
+            this.create.temp.emp = Cookies.get("employename");
+          }
+          console.log("新增保存发送参数", this.requestParam);
+          PostDataByName(this.requestParam).then((response) => {
+            if (response.msg !== "fail") {
+              this.$notify({
+                title: "成功",
+                message: "保存成功",
+                type: "success",
+                duration: 2000,
+              });
+              this.create.dialogFormVisible = false;
+              this.getList();
+            } else {
+              const ftid = new RegExp("key 'ftid'");
+              if (ftid.test(response.data)) {
+                this.$message({
+                  type: "error",
+                  message: "该栏舍该班次收集今日剩料量已存在,不可重复生成",
+                  duration: 2000,
+                });
+              } else {
+                this.$notify({
+                  title: "保存失败",
+                  message: response.data,
+                  type: "warning",
+                  duration: 2000,
+                });
+              }
+            }
+          });
+        }
+      });
+    },
+
+    // 编辑
+    handleUpdate(row) {
+      console.log("点击了编辑", row);
+      console.log(this.frequencyList, "frequencyList");
+      this.dialogFull = false;
+      row.ftid = String(row.ftid);
+      this.create.temp = Object.assign({}, row);
+      this.create.temp.id = row.id;
+
+      this.getNoteTakerList();
+      this.create.dialogStatus = "update";
+      this.create.dialogFormVisible = true;
+    },
+    updateData() {
+      this.isokDisable = true;
+      setTimeout(() => {
+        this.isokDisable = false;
+      }, 1000);
+      this.$refs["temp"].validate((valid) => {
+        if (valid) {
+          this.isokDisable = true;
+          setTimeout(() => {
+            this.isokDisable = false;
+          }, 1000);
+          const weight = /^\d+(\.\d{1,2})?$/;
+          // 剩料量
+          if (!weight.test(parseFloat(this.create.temp.weight))) {
+            this.$message({
+              type: "error",
+              message: "剩料量请输入自然数并保留两位小数",
+              duration: 2000,
+            });
+            return false;
+          }
+          this.requestParam.name = "editWasteuse";
+          this.requestParam.parammaps = this.create.temp;
+          if (this.create.temp.emp == "") {
+            this.create.temp.emp = Cookies.get("employename");
+          }
+          PostDataByName(this.requestParam).then((response) => {
+            console.log("新增保存发送参数", this.requestParam);
+            if (response.msg !== "fail") {
+              this.$notify({
+                title: "成功",
+                message: "保存成功",
+                type: "success",
+                duration: 2000,
+              });
+              this.create.dialogFormVisible = false;
+              this.getList();
+            } else {
+              this.$notify({
+                title: "保存失败",
+                message: response.data,
+                type: "warning",
+                duration: 2000,
+              });
+            }
+          });
+        }
+      });
+    },
+
+    // 删除
+    handleRowDelete(row, type) {
+      console.log("点击了行内删除");
+      MessageBox.confirm("是否确认删除此信息?", {
+        confirmButtonText: "确认",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.selectList = [];
+          this.requestParam.name = "delWasteuse";
+          this.requestParam.parammaps = {};
+          this.requestParam.parammaps.pastureId = row.pastureid;
+          if (type == 1) {
+            this.requestParam.parammaps.id = row;
+          } else {
+            this.requestParam.parammaps.id = row.id;
+          }
+
+          PostDataByName(this.requestParam).then((response) => {
+            if (response.msg === "fail") {
+              this.$notify({
+                title: "删除失败",
+                message: response.data,
+                type: "warning",
+                duration: 2000,
+              });
+            } else {
+              this.$notify({
+                title: "成功",
+                message: "删除成功",
+                type: "success",
+                duration: 2000,
+              });
+              this.getList();
+            }
+          });
+        })
+        .catch(() => {
+          this.$message({ type: "info", message: "已取消删除" });
+        });
+    },
+    handleSelectionChange(val) {
+      console.log("勾选数据", val);
+      this.selectList = val;
+    },
+    form_delete(type) {
+      console.log("点击了删除++++++++");
+      if (this.selectList.length == 0) {
+        this.$message({
+          type: "error",
+          message: "请选择栏舍剩料记录",
+          duration: 2000,
+        });
+      } else {
+        const ids = this.selectList.map((item) => {
+          return item.id;
+        });
+        this.handleRowDelete(ids.toString(), 1);
+      }
+    },
+    // 复制
+    handleCopy() {
+      console.log("点击了复制");
+      if (this.selectList.length == 0) {
+        this.$message({
+          type: "error",
+          message: "请选择栏舍剩料记录",
+          duration: 2000,
+        });
+      } else if (this.selectList.length == 1) {
+        MessageBox.confirm("是否确认复制此信息?", {
+          confirmButtonText: "确认",
+          cancelButtonText: "取消",
+          type: "warning",
+        })
+          .then(() => {
+            this.requestParam.name = "copybarfeedremain";
+            this.requestParam.parammaps = {};
+            this.requestParam.parammaps.pastureid =
+              this.selectList[0].pastureid;
+            this.requestParam.parammaps.id = this.selectList[0].id;
+            PostDataByName(this.requestParam).then((response) => {
+              if (response.msg === "fail") {
+                const ftid = new RegExp("key 'ftid'");
+                if (ftid.test(response.data)) {
+                  this.$notify({
+                    type: "warning",
+                    message: "该栏舍该班次收集今日剩料量已存在,不可重复生成",
+                    duration: 2000,
+                  });
+                  return;
+                }
+                this.$notify({
+                  title: "保存失败",
+                  message: response.data,
+                  type: "warning",
+                  duration: 2000,
+                });
+              } else {
+                this.$notify({
+                  title: "成功",
+                  message: "保存成功",
+                  type: "success",
+                  duration: 2000,
+                });
+                this.getList();
+              }
+            });
+          })
+          .catch(() => {
+            this.$message({ type: "info", message: "已取消复制" });
+          });
+      } else {
+        this.$message({
+          type: "error",
+          message: "请选择一条栏舍剩料记录",
+          duration: 2000,
+        });
+      }
+    },
+    // 导出
+    handleExport(item) {
+      if (item == 1) {
+        console.log("点击了导出模板");
+        console.log("点击了导出模板");
+        const requestParam = this.requestParam;
+        const url = Cookies.get("url") + "authdata/barfeedremain/excel"; // 请求下载文件的地址
+        console.log(url);
+        axios({
+          method: "POST",
+          url: url,
+          data: requestParam,
+          headers: { token: getToken(), optname: "insertcustomdoc" },
+          responseType: "blob",
+        }).then((res) => {
+          if (!res) return;
+          this.percentage = 99;
+          setTimeout(() => {
+            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);
+        });
+      } else {
+        console.log("点击了导出数据", item, this.record);
+        if (this.record == "0") {
+          this.download.getdataListParm.name = "getBarfeedremainList";
+        } else {
+          this.download.getdataListParm.name = "getRemainplanrecord";
+        }
+        this.download.getdataListParm.parammaps =
+          this.table.getdataListParm.parammaps;
+        if (
+          this.download.getdataListParm.parammaps.inputDatetime !== "" &&
+          this.download.getdataListParm.parammaps.inputDatetime !== null
+        ) {
+          this.download.getdataListParm.parammaps.startdate = parseTime(
+            this.download.getdataListParm.parammaps.inputDatetime[0],
+            "{y}-{m}-{d}"
+          );
+          this.download.getdataListParm.parammaps.enddate = parseTime(
+            this.download.getdataListParm.parammaps.inputDatetime[1],
+            "{y}-{m}-{d}"
+          );
+        } else {
+          this.download.getdataListParm.parammaps.inputDatetime = "";
+          this.download.getdataListParm.parammaps.startdate = "";
+          this.download.getdataListParm.parammaps.enddate = "";
+        }
+        GetDataByName(this.download.getdataListParm).then((response) => {
+          if (response.data.list !== null) {
+            this.download.list = response.data.list;
+          } else {
+            this.download.list = [];
+          }
+          if (item == 2) {
+            var excelDatas1 = [
+              {
+                tHeader: [
+                  "栏舍名称",
+                  "配方名称",
+                  "原剩料所属时间",
+                  "剩料量(kg)",
+                  "班次(收集)",
+                  "收集时间",
+                  "操作人",
+                ],
+                filterVal: [
+                  "ftname",
+                  "ftname",
+                  "date",
+                  "weight",
+                  "timesstr",
+                  "operatetime",
+                  "emp",
+                ],
+                tableDatas: this.download.list,
+                sheetName: "Sheet1",
+              },
+            ];
+            json2excel(excelDatas1, "栏舍剩料记录-手动记录", true, "xlsx");
+          } else {
+            var excelDatas2 = [
+              {
+                tHeader: [
+                  "TMR设备编号",
+                  "TMR设备名称",
+                  "TMR设备类型",
+                  "栏舍名称",
+                  "收集时间",
+                  "剩料重量(kg)",
+                  "开始重量(kg)",
+                  "结束重量(kg)",
+                  "驾驶员",
+                ],
+                filterVal: [
+                  "eqcode",
+                  "eqname",
+                  "tclassname",
+                  "ftname",
+                  "createtime",
+                  "weight",
+                  "beginweight",
+                  "endweight",
+                  "driver",
+                ],
+                tableDatas: this.download.list,
+                sheetName: "Sheet1",
+              },
+            ];
+            json2excel(
+              excelDatas2,
+              "栏舍剩料记录-TMR设备自动记录",
+              true,
+              "xlsx"
+            );
+          }
+        });
+      }
+    },
+
+    beforeImport(file) {
+      const isLt2M = file.size / 1024 / 1024 < 2;
+      if (!isLt2M) {
+        this.$message.error("上传文件大小不能超过 2MB!");
+      }
+      return isLt2M;
+    },
+    handleImportSuccess(res, file) {
+      this.getList();
+      if (res.msg === "ok") {
+        this.$message({
+          title: "成功",
+          message: "导入成功:" + res.data.success + "条!",
+          type: "success",
+          duration: 2000,
+        });
+        if (res.data.err_count > 0) {
+          this.$notify({
+            title: "失败",
+            message: "导入失败:" + res.data.err_count + "条!",
+            type: "danger",
+            duration: 2000,
+          });
+          import("@/vendor/Export2Excel").then((excel) => {
+            const list1 = res.data.result;
+            const tHeader = [
+              "栏舍名称",
+              "配方名称",
+              "原剩料所属时间",
+              "剩料量(kg)",
+              "干物质",
+              "班次(收集)",
+              "收集时间",
+              "操作人",
+              "错误信息",
+            ];
+            const filterVal = [
+              "栏舍名称",
+              "配方名称",
+              "原剩料所属时间",
+              "剩料量(kg)",
+              "干物质",
+              "班次(收集)",
+              "收集时间",
+              "操作人",
+              "error_msg",
+            ];
+            const data1 = this.formatJson(filterVal, list1);
+            excel.export_json_to_excel({
+              header: tHeader,
+              data: data1,
+              filename: "栏舍剩料记录导入报错信息",
+              autoWidth: true,
+              bookType: "xlsx",
+            });
+          });
+        }
+      } else {
+        this.$notify({
+          title: "失败",
+          message: "上传失败",
+          type: "danger",
+          duration: 2000,
+        });
+      }
+    },
+    formatJson(filterVal, jsonData) {
+      return jsonData.map((v) =>
+        filterVal.map((j) => {
+          if (j === "timestamp") {
+            return parseTime(v[j]);
+          } else {
+            return v[j];
+          }
+        })
+      );
+    },
+    handleDataUpload() {
+      let a = Cookies.get("url");
+      let b = a.search(8081);
+      let c = a.substring(0, a.search(8081)) + "8082";
+      let d = a.substring(0, a.lastIndexOf("/"));
+      console.log(d);
+      let url = "";
+      if (b == -1) {
+        url = d + ":8082";
+      } else {
+        url = c;
+      }
+      console.log(url, "url");
+      let _url = url + "/authdata/surplus/push";
+      let data = {
+        date: parseTime(new Date(), "{y}-{m}-{d}"),
+        pastureId: Cookies.get("pastureid"),
+      };
+      console.log(_url, "_url");
+      postJson2(_url, data).then((response) => {
+        if (response.msg == "ok") {
+          this.$notify({
+            title: "",
+            message: response.data,
+            type: "success",
+            duration: 2000,
+          });
+        } else {
+          this.$notify({
+            title: "上传失败",
+            message: response.data,
+            type: "warning",
+            duration: 2000,
+          });
+        }
+      });
+    },
+  },
+};
+</script>

+ 6 - 1
src/views/statisticalAnalysis/errorAnalysis/group/tab1.vue

@@ -3584,7 +3584,12 @@ export default {
             sheetName: this.$t("errorAnalysis.hltj"),
           },
         ];
-        json2excel(excelDatasTabChart5, "混料统计", true, "xlsx");
+        json2excel(
+          excelDatasTabChart5,
+          this.$t("errorAnalysis.hltj"),
+          true,
+          "xlsx"
+        );
       } else if (item == "chart6") {
         console.log("混料计划取消次数导出");
         var excelDatasTabChart5 = [

+ 495 - 183
src/views/statisticalAnalysis/errorAnalysis/group/tab2.vue

@@ -2,30 +2,122 @@
   <div class="app-container">
     <div class="search">
       <div>
-        <el-date-picker v-model="table.getdataListParm.parammaps.inputDatetime" :clearable="false" style="width: 250px;float: left;margin-bottom: 10px;" class="inputDatetime filter-item" type="daterange" :range-separator="$t('common.to')"  :start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" :picker-options="pickerOptions" />
-        <el-button style="float: left;margin-bottom: 10px;" class="el-icon-arrow-left elIconArrowLeft" :disabled="Beforedisabled" @click="handleBefore" />
-        <el-button style="float: left;margin-bottom: 10px;" class="el-icon-arrow-right elIconArrowRight" :disabled="Nextdisabled" @click="handleNext" />
+        <el-date-picker
+          v-model="table.getdataListParm.parammaps.inputDatetime"
+          :clearable="false"
+          style="width: 250px; float: left; margin-bottom: 10px"
+          class="inputDatetime filter-item"
+          type="daterange"
+          :range-separator="$t('common.to')"
+          :start-placeholder="$t('common.startTime')"
+          :end-placeholder="$t('common.endTime')"
+          :picker-options="pickerOptions"
+        />
+        <el-button
+          style="float: left; margin-bottom: 10px"
+          class="el-icon-arrow-left elIconArrowLeft"
+          :disabled="Beforedisabled"
+          @click="handleBefore"
+        />
+        <el-button
+          style="float: left; margin-bottom: 10px"
+          class="el-icon-arrow-right elIconArrowRight"
+          :disabled="Nextdisabled"
+          @click="handleNext"
+        />
       </div>
-      <div style="clear: both;">
-        <el-select v-model="table.getdataListParm.parammaps.pastureid"
-:placeholder="$t('supplier.mc')" class="filter-item" style="width: 120px;float: left;">
-          <el-option v-for="item in pastureList" :key="item.pastureid" :label="item.pasturename" :value="item.pastureid" />
+      <div style="clear: both">
+        <el-select
+          v-model="table.getdataListParm.parammaps.pastureid"
+          :placeholder="$t('supplier.mc')"
+          class="filter-item"
+          style="width: 120px; float: left"
+        >
+          <el-option
+            v-for="item in pastureList"
+            :key="item.pastureid"
+            :label="item.pasturename"
+            :value="item.pastureid"
+          />
         </el-select>
-        <el-input v-model="table.getdataListParm.parammaps.tmrtname" style="width: 110px;float: left;"  :placeholder="$t('processAnalysis.tmrName')"   class="filter-item" clearable />
-        <el-input v-model="table.getdataListParm.parammaps.projname" style="width: 100px;float: left;" :placeholder="$t('errorAnalysis.projname')"  class="filter-item" clearable />
-        <el-select v-model="table.getdataListParm.parammaps.times" style="width: 100px;float: left;" filterable :placeholder="$t('errorAnalysis.isTrainNumber')"  class="filter-item" clearable>
-          <el-option v-for="item in frequencyList" :key="item.id" :label="item.name" :value="item.id" />
+        <el-input
+          v-model="table.getdataListParm.parammaps.tmrtname"
+          style="width: 110px; float: left"
+          :placeholder="$t('processAnalysis.tmrName')"
+          class="filter-item"
+          clearable
+        />
+        <el-input
+          v-model="table.getdataListParm.parammaps.projname"
+          style="width: 100px; float: left"
+          :placeholder="$t('errorAnalysis.projname')"
+          class="filter-item"
+          clearable
+        />
+        <el-select
+          v-model="table.getdataListParm.parammaps.times"
+          style="width: 100px; float: left"
+          filterable
+          :placeholder="$t('errorAnalysis.isTrainNumber')"
+          class="filter-item"
+          clearable
+        >
+          <el-option
+            v-for="item in frequencyList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          />
         </el-select>
-        <el-input v-model="table.getdataListParm.parammaps.templetname" style="width: 120px;float: left;" placeholder="配方名称" class="filter-item" clearable />
-        <el-select v-model="table.getdataListParm.parammaps.buttontype" style="width: 120px;float: left;" filterable :placeholder="$t('errorAnalysis.tzfs')"class="filter-item" clearable>
-          <el-option v-for="item in jumpModeList" :key="item.id" :label="item.name" :value="item.id" />
+        <el-input
+          v-model="table.getdataListParm.parammaps.templetname"
+          style="width: 120px; float: left"
+          placeholder="配方名称"
+          class="filter-item"
+          clearable
+        />
+        <el-select
+          v-model="table.getdataListParm.parammaps.buttontype"
+          style="width: 120px; float: left"
+          filterable
+          :placeholder="$t('errorAnalysis.tzfs')"
+          class="filter-item"
+          clearable
+        >
+          <el-option
+            v-for="item in jumpModeList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          />
         </el-select>
-        <el-select v-model="table.getdataListParm.parammaps.isuse" style="width: 120px;float: left;" filterable placeholder="上传状态" class="filter-item" clearable>
-          <el-option v-for="item in isuseList" :key="item.id" :label="item.name" :value="item.id" />
+        <el-select
+          v-model="table.getdataListParm.parammaps.isuse"
+          style="width: 120px; float: left"
+          filterable
+          placeholder="上传状态"
+          class="filter-item"
+          clearable
+        >
+          <el-option
+            v-for="item in isuseList"
+            :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="export" style="float: right;margin-right: 10px;margin-bottom:10px;" @click="handleExport">{{$t('dashboard.Export')}}</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>
+        <el-button
+          class="export"
+          style="float: right; margin-right: 10px; margin-bottom: 10px"
+          @click="handleExport"
+          >{{ $t("dashboard.Export") }}</el-button
+        >
       </div>
     </div>
 
@@ -38,270 +130,490 @@
         border
         fit
         highlight-current-row
-        style="width: 100%;"
+        style="width: 100%"
         :row-style="rowStyle"
         :cell-style="cellStyle"
         class="elTable table-fixed"
         :height="myHeight2"
       >
-        <el-table-column :label="$t('feedingEfficiency.mc')"min-width="90px" align="center" prop="牧场" />
-        <el-table-column :label="$t('errorAnalysis.date')" min-width="70px" align="center" prop="日期" />
-        <el-table-column :label="$t('errorAnalysis.tmrnames')" min-width="70px" align="center" prop="TMR名称" />
-        <el-table-column :label="$t('errorAnalysis.projname')" min-width="50px" align="center" prop="车次" />
-        <el-table-column :label="$t('errorAnalysis.isTrainNumber')"  min-width="50px" align="center" prop="班次" />
-        <el-table-column  :label="$t('errorAnalysis.feedName')"  min-width="90px" align="center" prop="配方名称" />
-        <el-table-column :label="$t('errorAnalysis.isFeed')"  min-width="70px" align="center" prop="饲料" />
-        <el-table-column  :label="$t('errorAnalysis.llzl')"  min-width="55px" align="center" prop="理论重量" />
-        <el-table-column  :label="$t('errorAnalysis.acWeight')"  min-width="55px" align="center" prop="实际重量" />
-        <el-table-column :label="$t('errorAnalysis.wcz')" min-width="45px" align="center" prop="误差值" />
-        <el-table-column :label="$t('errorAnalysis.zql')" min-width="45px" align="center" prop="准确率" />
-        <el-table-column :label="$t('errorAnalysis.planTime')"  min-width="55px" align="center" prop="计划时间" />
-        <el-table-column :label="$t('errorAnalysis.startTime')"  min-width="55px" align="center" prop="开始时间" />
-        <el-table-column :label="$t('errorAnalysis.endTime')"  min-width="55px" align="center" prop="结束时间" />
-        <el-table-column :label="$t('errorAnalysis.jsTime')"  min-width="55px" align="center" prop="搅拌时间" />
-        <el-table-column :label="$t('errorAnalysis.tzfs')"  min-width="55px" align="center" prop="跳转方式" />
-        <el-table-column :label="$t('errorAnalysis.stWeight')"  min-width="55px" align="center" prop="开始重量" />
-        <el-table-column :label="$t('errorAnalysis.edWeight')"  min-width="55px" align="center" prop="结束重量" />
+        <el-table-column
+          :label="$t('feedingEfficiency.mc')"
+          min-width="90px"
+          align="center"
+          prop="牧场"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.date')"
+          min-width="70px"
+          align="center"
+          prop="日期"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.tmrnames')"
+          min-width="70px"
+          align="center"
+          prop="TMR名称"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.projname')"
+          min-width="50px"
+          align="center"
+          prop="车次"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.isTrainNumber')"
+          min-width="50px"
+          align="center"
+          prop="班次"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.feedName')"
+          min-width="90px"
+          align="center"
+          prop="配方名称"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.isFeed')"
+          min-width="70px"
+          align="center"
+          prop="饲料"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.llzl')"
+          min-width="55px"
+          align="center"
+          prop="理论重量"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.acWeight')"
+          min-width="55px"
+          align="center"
+          prop="实际重量"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.wcz')"
+          min-width="45px"
+          align="center"
+          prop="误差值"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.zql')"
+          min-width="45px"
+          align="center"
+          prop="准确率"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.planTime')"
+          min-width="55px"
+          align="center"
+          prop="计划时间"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.startTime')"
+          min-width="55px"
+          align="center"
+          prop="开始时间"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.endTime')"
+          min-width="55px"
+          align="center"
+          prop="结束时间"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.jsTime')"
+          min-width="55px"
+          align="center"
+          prop="搅拌时间"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.tzfs')"
+          min-width="55px"
+          align="center"
+          prop="跳转方式"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.stWeight')"
+          min-width="55px"
+          align="center"
+          prop="开始重量"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.edWeight')"
+          min-width="55px"
+          align="center"
+          prop="结束重量"
+        />
       </el-table>
     </div>
   </div>
 </template>
 
 <script>
-import echarts from 'echarts'
+import echarts from "echarts";
 
-require('echarts/theme/macarons')
-import { GetDataByName, GetReportform, GetDataByNames } from '@/api/common'
-import Cookies from 'js-cookie'
-import { parseTime } from '@/utils/index.js'
-import Pagination from '@/components/Pagination'
-import { json2excel } from '@/utils/index.js'
-import { MessageBox } from 'element-ui'
+require("echarts/theme/macarons");
+import { GetDataByName, GetReportform, GetDataByNames } from "@/api/common";
+import Cookies from "js-cookie";
+import { parseTime } from "@/utils/index.js";
+import Pagination from "@/components/Pagination";
+import { json2excel } from "@/utils/index.js";
+import { MessageBox } from "element-ui";
 export default {
-  name: 'Tab2',
+  name: "Tab2",
   components: { Pagination },
   data() {
     return {
       Beforedisabled: false,
       Nextdisabled: false,
-      pickerMinDate: '',
+      pickerMinDate: "",
       pickerOptions: {
         onPick: ({ maxDate, minDate }) => {
-          this.pickerMinDate = minDate.getTime()
+          this.pickerMinDate = minDate.getTime();
           if (maxDate) {
-            this.pickerMinDate = ''
+            this.pickerMinDate = "";
           }
         },
         // 限制不能选择今天之后的日期
         disabledDate: (time) => {
-          if (this.pickerMinDate !== '') {
-            const one = 31 * 24 * 3600 * 1000
-            const minTime = this.pickerMinDate - one
-            let maxTime = this.pickerMinDate + one
+          if (this.pickerMinDate !== "") {
+            const one = 31 * 24 * 3600 * 1000;
+            const minTime = this.pickerMinDate - one;
+            let maxTime = this.pickerMinDate + one;
             if (maxTime > new Date()) {
-              maxTime = new Date()
+              maxTime = new Date();
             }
-            return time.getTime() < minTime || time.getTime() > maxTime
+            return time.getTime() < minTime || time.getTime() > maxTime;
           }
-          return time.getTime() > Date.now()
-        }
+          return time.getTime() > Date.now();
+        },
       },
       requestParams: [
-        { name: 'getPastureListJT', offset: 0, pagecount: 0, parammaps: { pastureid: Cookies.get('pastureid'), pasturename: '' }}
+        {
+          name: "getPastureListJT",
+          offset: 0,
+          pagecount: 0,
+          parammaps: { pastureid: Cookies.get("pastureid"), pasturename: "" },
+        },
       ],
       pastureList: [], // 牧场
       // 班次
       maxTime: {
         getMaxTimesParm: {
-          name: 'getSysoptEnable',
+          name: "getSysoptEnable",
           page: 1,
           offset: 1,
           pagecount: 1,
-          returntype: 'Map',
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            inforname: 'times'
-          }
-        }
+            pastureid: Cookies.get("pastureid"),
+            inforname: "times",
+          },
+        },
       },
       frequencyList: [],
-      jumpModeList: [{ id: '0', name:this.$t('errorAnalysis.sdtz') }, { id: '1',  name:this.$t('errorAnalysis.zdtz') }],
-      isuseList: [{ id: '0',  name:this.$t('errorAnalysis.wwc')}, { id: '2', name:this.$t('errorAnalysis.bfwc')}, { id: '1',  name:this.$t('errorAnalysis.qbwc') }],
+      jumpModeList: [
+        { id: "0", name: this.$t("errorAnalysis.sdtz") },
+        { id: "1", name: this.$t("errorAnalysis.zdtz") },
+      ],
+      isuseList: [
+        { id: "0", name: this.$t("errorAnalysis.wwc") },
+        { id: "2", name: this.$t("errorAnalysis.bfwc") },
+        { id: "1", name: this.$t("errorAnalysis.qbwc") },
+      ],
       table: {
         getdataListParm: {
-          name: 'getStatisticsHL',
+          name: "getStatisticsHL",
           page: 1,
           offset: 1,
-          pagecount: '',
-          returntype: 'Map',
+          pagecount: "",
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            startTime: parseTime(new Date(), '{y}-{m}-{d}'),
-            stopTime: parseTime(new Date(), '{y}-{m}-{d}'),
+            pastureid: Cookies.get("pastureid"),
+            startTime: parseTime(new Date(), "{y}-{m}-{d}"),
+            stopTime: parseTime(new Date(), "{y}-{m}-{d}"),
             inputDatetime: [new Date(), new Date()],
-            tmrtname: '',
-            projname: '',
-            times: '',
-            buttontype: '',
-            templetname: ''
-          }
+            tmrtname: "",
+            projname: "",
+            times: "",
+            buttontype: "",
+            templetname: "",
+          },
         },
         tableKey: 1,
         list: [],
         total: 0,
         listLoading: true,
-        temp: {}
+        temp: {},
       },
 
-      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
-      cellStyle: { padding: 0 + 'px' },
-      myHeight2: document.documentElement.clientHeight - 85 - 210
-    }
+      rowStyle: { maxHeight: 30 + "px", height: 30 + "px" },
+      cellStyle: { padding: 0 + "px" },
+      myHeight2: document.documentElement.clientHeight - 85 - 210,
+    };
   },
   created() {
-    this.getTimeFn()
-    this.getDownList()
-    this.getIsDisplay()
+    this.getTimeFn();
+    this.getDownList();
+    this.getIsDisplay();
   },
   activated() {
-    this.getDownList()
-    this.getIsDisplay()
+    this.getDownList();
+    this.getIsDisplay();
   },
   methods: {
     getTimeFn() {
-      const that = this
-      const start = new Date()
-      const end = new Date()
-      const start2 = new Date()
-      const end2 = new Date()
-      start2.setTime(start2.getTime() - 3600 * 1000 * 24 * 1)
-      end2.setTime(end2.getTime() - 3600 * 1000 * 24 * 1)
-      that.table.getdataListParm.parammaps.inputDatetime = [start2, end2]
-      that.table.getdataListParm.parammaps.startTime = parseTime(start2, '{y}-{m}-{d}')
-      that.table.getdataListParm.parammaps.stopTime = parseTime(end2, '{y}-{m}-{d}')
+      const that = this;
+      const start = new Date();
+      const end = new Date();
+      const start2 = new Date();
+      const end2 = new Date();
+      start2.setTime(start2.getTime() - 3600 * 1000 * 24 * 1);
+      end2.setTime(end2.getTime() - 3600 * 1000 * 24 * 1);
+      that.table.getdataListParm.parammaps.inputDatetime = [start2, end2];
+      that.table.getdataListParm.parammaps.startTime = parseTime(
+        start2,
+        "{y}-{m}-{d}"
+      );
+      that.table.getdataListParm.parammaps.stopTime = parseTime(
+        end2,
+        "{y}-{m}-{d}"
+      );
     },
     getIsDisplay() {
-      GetDataByName(this.maxTime.getMaxTimesParm).then(response => {
+      GetDataByName(this.maxTime.getMaxTimesParm).then((response) => {
         if (response.data.list[0].inforvalue == 1) {
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }]
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }]
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+          ];
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+          ];
         } else if (response.data.list[0].inforvalue == 2) {
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }, { id: '2', name: this.$t('errorAnalysis.two'), }]
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }, { id: '2', name: this.$t('errorAnalysis.two'), }]
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+            { id: "2", name: this.$t("errorAnalysis.two") },
+          ];
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+            { id: "2", name: this.$t("errorAnalysis.two") },
+          ];
         } else if (response.data.list[0].inforvalue == 3) {
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }, { id: '2', name: this.$t('errorAnalysis.two'), }, { id: '3', name: this.$t('errorAnalysis.three'), }]
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }, { id: '2', name: this.$t('errorAnalysis.two'), }, { id: '3', name: this.$t('errorAnalysis.three'), }]
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }, { id: '2', name: this.$t('errorAnalysis.two'), }, { id: '3', name: this.$t('errorAnalysis.three'), }]
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+            { id: "2", name: this.$t("errorAnalysis.two") },
+            { id: "3", name: this.$t("errorAnalysis.three") },
+          ];
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+            { id: "2", name: this.$t("errorAnalysis.two") },
+            { id: "3", name: this.$t("errorAnalysis.three") },
+          ];
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+            { id: "2", name: this.$t("errorAnalysis.two") },
+            { id: "3", name: this.$t("errorAnalysis.three") },
+          ];
         } else if (response.data.list[0].inforvalue == 4) {
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }, { id: '2', name: this.$t('errorAnalysis.two'), }, { id: '3', name: this.$t('errorAnalysis.three'), }, { id: '4', name: this.$t('errorAnalysis.four'), }]
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }, { id: '2', name: this.$t('errorAnalysis.two'), }, { id: '3', name: this.$t('errorAnalysis.three'), }, { id: '4', name: this.$t('errorAnalysis.four'), }]
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+            { id: "2", name: this.$t("errorAnalysis.two") },
+            { id: "3", name: this.$t("errorAnalysis.three") },
+            { id: "4", name: this.$t("errorAnalysis.four") },
+          ];
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+            { id: "2", name: this.$t("errorAnalysis.two") },
+            { id: "3", name: this.$t("errorAnalysis.three") },
+            { id: "4", name: this.$t("errorAnalysis.four") },
+          ];
         }
-      })
+      });
     },
     getDownList() {
-      GetDataByNames(this.requestParams).then(response => {
-        this.pastureList = response.data.getPastureListJT.list
-        this.table.getdataListParm.parammaps.pastureid = response.data.getPastureListJT.list[0].pastureid
-        this.getList()
-      })
+      GetDataByNames(this.requestParams).then((response) => {
+        this.pastureList = response.data.getPastureListJT.list;
+        this.table.getdataListParm.parammaps.pastureid =
+          response.data.getPastureListJT.list[0].pastureid;
+        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.table.total = response.data.total
+          this.table.list = response.data.list;
+          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() {
-      this.table.getdataListParm.name = 'getStatisticsHL'
-      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
-        console.log(this.table.getdataListParm.parammaps.inputDatetime)
-        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}')
+      this.table.getdataListParm.name = "getStatisticsHL";
+      if (
+        this.table.getdataListParm.parammaps.inputDatetime !== "" &&
+        this.table.getdataListParm.parammaps.inputDatetime !== null
+      ) {
+        console.log(this.table.getdataListParm.parammaps.inputDatetime);
+        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() {
-      this.table.getdataListParm.parammaps.tmrtname = ''
-      this.table.getdataListParm.parammaps.projname = ''
-      this.table.getdataListParm.parammaps.times = ''
-      this.table.getdataListParm.parammaps.templetname = ''
-      this.table.getdataListParm.parammaps.buttontype = ''
-      this.getList()
+      this.table.getdataListParm.parammaps.tmrtname = "";
+      this.table.getdataListParm.parammaps.projname = "";
+      this.table.getdataListParm.parammaps.times = "";
+      this.table.getdataListParm.parammaps.templetname = "";
+      this.table.getdataListParm.parammaps.buttontype = "";
+      this.getList();
     },
     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))
+      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
+          )
+        );
         if (stop > Date.now() - 8.64e7) {
-          this.Nextdisabled = true
-          this.Beforedisabled = false
+          this.Nextdisabled = true;
+          this.Beforedisabled = false;
         } else {
-          this.Nextdisabled = false
-          this.Beforedisabled = false
+          this.Nextdisabled = false;
+          this.Beforedisabled = false;
         }
-        this.table.getdataListParm.parammaps.inputDatetime.length = 0
-        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
-        this.$forceUpdate()
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0;
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop);
+        this.$forceUpdate();
       }
-      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}')
-      this.getList()
+      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}"
+      );
+      this.getList();
     },
     handleNext() {
-      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
-        var start2 = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1))
-        var stop2 = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1))
+      if (
+        this.table.getdataListParm.parammaps.inputDatetime !== "" &&
+        this.table.getdataListParm.parammaps.inputDatetime !== null
+      ) {
+        var start2 = new Date(
+          this.table.getdataListParm.parammaps.inputDatetime[0].setDate(
+            this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1
+          )
+        );
+        var stop2 = new Date(
+          this.table.getdataListParm.parammaps.inputDatetime[1].setDate(
+            this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1
+          )
+        );
         if (stop2 > Date.now() - 8.64e7) {
-          this.Nextdisabled = true
-          this.Beforedisabled = false
+          this.Nextdisabled = true;
+          this.Beforedisabled = false;
         } else {
-          this.Nextdisabled = false
-          this.Beforedisabled = false
+          this.Nextdisabled = false;
+          this.Beforedisabled = false;
         }
-        this.table.getdataListParm.parammaps.inputDatetime.length = 0
-        this.table.getdataListParm.parammaps.inputDatetime.push(start2, stop2)
-        this.$forceUpdate()
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0;
+        this.table.getdataListParm.parammaps.inputDatetime.push(start2, stop2);
+        this.$forceUpdate();
       }
-      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}')
-      this.getList()
+      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}"
+      );
+      this.getList();
     },
     handleExport() {
       var excelDatasTab2 = [
         {
-          tHeader: ['日期', 'TMR名称', '车次', '班次', '配方名称', '饲料', '理论重量', '实际重量', '误差值', '准确率', '计划时间', '开始时间', '结束时间', ' 跳转方式', '开始重量', '结束重量', '搅拌时间'],
-          filterVal: ['日期', 'TMR名称', '车次', '班次', '配方名称', '饲料', '理论重量', '实际重量', '误差值', '准确率', '计划时间', '开始时间', '结束时间', '跳转方式', '开始重量', '结束重量', '搅拌时间'],
+          tHeader: [
+            "日期",
+            "TMR名称",
+            "车次",
+            "班次",
+            "配方名称",
+            "饲料",
+            "理论重量",
+            "实际重量",
+            "误差值",
+            "准确率",
+            "计划时间",
+            "开始时间",
+            "结束时间",
+            " 跳转方式",
+            "开始重量",
+            "结束重量",
+            "搅拌时间",
+          ],
+          filterVal: [
+            "日期",
+            "TMR名称",
+            "车次",
+            "班次",
+            "配方名称",
+            "饲料",
+            "理论重量",
+            "实际重量",
+            "误差值",
+            "准确率",
+            "计划时间",
+            "开始时间",
+            "结束时间",
+            "跳转方式",
+            "开始重量",
+            "结束重量",
+            "搅拌时间",
+          ],
           tableDatas: this.table.list,
-          sheetName: this.$t('errorAnalysis.hltj')
-        }
-      ]
-      json2excel(excelDatasTab2, '混料统计', true, 'xlsx')
-    }
-  }
-}
+          sheetName: this.$t("errorAnalysis.hltj"),
+        },
+      ];
+      json2excel(excelDatasTab2, this.$t("errorAnalysis.hltj"), true, "xlsx");
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>
-  /deep/ .el-table th>.cell{
-    padding-left: 0 !important;;
-    padding-right: 0 !important;;
-  }
-  /deep/ .el-table td>.cell{
-    padding-left: 0 !important;;
-    padding-right: 0 !important;;
-  }
+/deep/ .el-table th > .cell {
+  padding-left: 0 !important;
+  padding-right: 0 !important;
+}
+/deep/ .el-table td > .cell {
+  padding-left: 0 !important;
+  padding-right: 0 !important;
+}
 </style>

+ 473 - 180
src/views/statisticalAnalysis/errorAnalysis/group/tab3.vue

@@ -2,31 +2,135 @@
   <div class="app-content">
     <div class="search">
       <div>
-        <el-date-picker v-model="table.getdataListParm.parammaps.inputDatetime" :clearable="false" style="width: 250px;float: left;margin-bottom: 10px;" class="inputDatetime filter-item" type="daterange" :range-separator="$t('common.to')"  :start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" :picker-options="pickerOptions" />
-        <el-button style="float: left;margin-bottom: 10px;" :disabled="Beforedisabled" class="el-icon-arrow-left elIconArrowLeft" @click="handleBefore" />
-        <el-button style="float: left;margin-bottom: 10px;" :disabled="Nextdisabled" class="el-icon-arrow-right elIconArrowRight" @click="handleNext" />
+        <el-date-picker
+          v-model="table.getdataListParm.parammaps.inputDatetime"
+          :clearable="false"
+          style="width: 250px; float: left; margin-bottom: 10px"
+          class="inputDatetime filter-item"
+          type="daterange"
+          :range-separator="$t('common.to')"
+          :start-placeholder="$t('common.startTime')"
+          :end-placeholder="$t('common.endTime')"
+          :picker-options="pickerOptions"
+        />
+        <el-button
+          style="float: left; margin-bottom: 10px"
+          :disabled="Beforedisabled"
+          class="el-icon-arrow-left elIconArrowLeft"
+          @click="handleBefore"
+        />
+        <el-button
+          style="float: left; margin-bottom: 10px"
+          :disabled="Nextdisabled"
+          class="el-icon-arrow-right elIconArrowRight"
+          @click="handleNext"
+        />
       </div>
-      <div style="clear: both; margin-top: 10px;">
-        <el-select v-model="table.getdataListParm.parammaps.pastureid"
-:placeholder="$t('supplier.mc')" class="filter-item" style="width: 110px;float: left;">
-          <el-option v-for="item in pastureList" :key="item.pastureid" :label="item.pasturename" :value="item.pastureid" />
+      <div style="clear: both; margin-top: 10px">
+        <el-select
+          v-model="table.getdataListParm.parammaps.pastureid"
+          :placeholder="$t('supplier.mc')"
+          class="filter-item"
+          style="width: 110px; float: left"
+        >
+          <el-option
+            v-for="item in pastureList"
+            :key="item.pastureid"
+            :label="item.pasturename"
+            :value="item.pastureid"
+          />
         </el-select>
-        <el-input v-model="table.getdataListParm.parammaps.tmrtname" style="width: 110px;float: left;"  :placeholder="$t('processAnalysis.tmrName')"   class="filter-item" clearable />
-        <el-input v-model="table.getdataListParm.parammaps.projname" style="width: 110px;float: left;" :placeholder="$t('errorAnalysis.projname')"  class="filter-item" clearable />
-        <el-select v-model="table.getdataListParm.parammaps.times" style="width: 110px;float: left;" filterable :placeholder="$t('errorAnalysis.isTrainNumber')"  class="filter-item" clearable>
-          <el-option v-for="item in frequencyList" :key="item.id" :label="item.name" :value="item.id" />
+        <el-input
+          v-model="table.getdataListParm.parammaps.tmrtname"
+          style="width: 110px; float: left"
+          :placeholder="$t('processAnalysis.tmrName')"
+          class="filter-item"
+          clearable
+        />
+        <el-input
+          v-model="table.getdataListParm.parammaps.projname"
+          style="width: 110px; float: left"
+          :placeholder="$t('errorAnalysis.projname')"
+          class="filter-item"
+          clearable
+        />
+        <el-select
+          v-model="table.getdataListParm.parammaps.times"
+          style="width: 110px; float: left"
+          filterable
+          :placeholder="$t('errorAnalysis.isTrainNumber')"
+          class="filter-item"
+          clearable
+        >
+          <el-option
+            v-for="item in frequencyList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          />
         </el-select>
-        <el-input v-model="table.getdataListParm.parammaps.templetname" style="width: 110px;float: left;" placeholder="配方名称" class="filter-item" clearable />
-        <el-input v-model="table.getdataListParm.parammaps.fname" style="width: 110px;float: left;" :placeholder="$t('errorAnalysis.isHouseName')"  class="filter-item" clearable />
-        <el-select v-model="table.getdataListParm.parammaps.buttontype" style="width: 110px;float: left;" filterable :placeholder="$t('errorAnalysis.tzfs')"class="filter-item" clearable>
-          <el-option v-for="item in jumpModeList" :key="item.id" :label="item.name" :value="item.id" />
+        <el-input
+          v-model="table.getdataListParm.parammaps.templetname"
+          style="width: 110px; float: left"
+          placeholder="配方名称"
+          class="filter-item"
+          clearable
+        />
+        <el-input
+          v-model="table.getdataListParm.parammaps.fname"
+          style="width: 110px; float: left"
+          :placeholder="$t('errorAnalysis.isHouseName')"
+          class="filter-item"
+          clearable
+        />
+        <el-select
+          v-model="table.getdataListParm.parammaps.buttontype"
+          style="width: 110px; float: left"
+          filterable
+          :placeholder="$t('errorAnalysis.tzfs')"
+          class="filter-item"
+          clearable
+        >
+          <el-option
+            v-for="item in jumpModeList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          />
         </el-select>
-        <el-select v-model="table.getdataListParm.parammaps.isuse" style="width: 110px;float: left;" filterable placeholder="上传状态" class="filter-item" clearable>
-          <el-option v-for="item in isuseList" :key="item.id" :label="item.name" :value="item.id" />
+        <el-select
+          v-model="table.getdataListParm.parammaps.isuse"
+          style="width: 110px; float: left"
+          filterable
+          placeholder="上传状态"
+          class="filter-item"
+          clearable
+        >
+          <el-option
+            v-for="item in isuseList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          />
         </el-select>
-        <el-button class="successBorder" style="float:left;" @click="form_search">{{$t('common.query')}}</el-button>
-        <el-button class="successBorder" style="float:left;" @click="handleRefresh">{{$t('common.reset')}}</el-button>
-        <el-button class="export" style="float: right;margin-right: 10px;margin-bottom:10px;" @click="handleExport">{{$t('dashboard.Export')}}</el-button>
+        <el-button
+          class="successBorder"
+          style="float: left"
+          @click="form_search"
+          >{{ $t("common.query") }}</el-button
+        >
+        <el-button
+          class="successBorder"
+          style="float: left"
+          @click="handleRefresh"
+          >{{ $t("common.reset") }}</el-button
+        >
+        <el-button
+          class="export"
+          style="float: right; margin-right: 10px; margin-bottom: 10px"
+          @click="handleExport"
+          >{{ $t("dashboard.Export") }}</el-button
+        >
       </div>
     </div>
     <div class="table">
@@ -38,29 +142,109 @@
         border
         fit
         highlight-current-row
-        style="width: 100%;"
+        style="width: 100%"
         :row-style="rowStyle"
         :cell-style="cellStyle"
         class="elTable table-fixed"
         :height="myHeight2"
       >
-        <el-table-column :label="$t('feedingEfficiency.mc')"min-width="55px" align="center" prop="牧场" />
-        <el-table-column :label="$t('errorAnalysis.date')" min-width="55px" align="center" prop="日期" />
-        <el-table-column :label="$t('errorAnalysis.tmrnames')" min-width="55px" align="center" prop="TMR名称" />
-        <el-table-column :label="$t('errorAnalysis.projname')" min-width="55px" align="center" prop="车次" />
-        <el-table-column :label="$t('errorAnalysis.isTrainNumber')"  min-width="55px" align="center" prop="班次" />
-        <el-table-column  :label="$t('errorAnalysis.feedName')"  min-width="55px" align="center" prop="配方名称" />
-        <el-table-column :label="$t('errorAnalysis.pen')" min-width="55px" align="center" prop="栏舍" />
-        <el-table-column  :label="$t('errorAnalysis.llzl')"  min-width="55px" align="center" prop="理论重量" />
-        <el-table-column  :label="$t('errorAnalysis.acWeight')"  min-width="55px" align="center" prop="实际重量" />
-        <el-table-column :label="$t('errorAnalysis.wcz')" min-width="55px" align="center" prop="误差值" />
-        <el-table-column :label="$t('errorAnalysis.zql')" min-width="55px" align="center" prop="准确率" />
-        <el-table-column :label="$t('errorAnalysis.startTime')"  min-width="55px" align="center" prop="开始时间" />
-        <el-table-column :label="$t('errorAnalysis.endTime')"  min-width="55px" align="center" prop="结束时间" />
+        <el-table-column
+          :label="$t('feedingEfficiency.mc')"
+          min-width="55px"
+          align="center"
+          prop="牧场"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.date')"
+          min-width="55px"
+          align="center"
+          prop="日期"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.tmrnames')"
+          min-width="55px"
+          align="center"
+          prop="TMR名称"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.projname')"
+          min-width="55px"
+          align="center"
+          prop="车次"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.isTrainNumber')"
+          min-width="55px"
+          align="center"
+          prop="班次"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.feedName')"
+          min-width="55px"
+          align="center"
+          prop="配方名称"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.pen')"
+          min-width="55px"
+          align="center"
+          prop="栏舍"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.llzl')"
+          min-width="55px"
+          align="center"
+          prop="理论重量"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.acWeight')"
+          min-width="55px"
+          align="center"
+          prop="实际重量"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.wcz')"
+          min-width="55px"
+          align="center"
+          prop="误差值"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.zql')"
+          min-width="55px"
+          align="center"
+          prop="准确率"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.startTime')"
+          min-width="55px"
+          align="center"
+          prop="开始时间"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.endTime')"
+          min-width="55px"
+          align="center"
+          prop="结束时间"
+        />
         <!-- <el-table-column :label="$t('errorAnalysis.jsTime')"  min-width="70px" align="center" prop="搅拌时间" /> -->
-        <el-table-column :label="$t('errorAnalysis.tzfs')"  min-width="55px" align="center" prop="跳转方式" />
-        <el-table-column :label="$t('errorAnalysis.stWeight')"  min-width="55px" align="center" prop="开始重量" />
-        <el-table-column :label="$t('errorAnalysis.edWeight')"  min-width="55px" align="center" prop="结束重量" />
+        <el-table-column
+          :label="$t('errorAnalysis.tzfs')"
+          min-width="55px"
+          align="center"
+          prop="跳转方式"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.stWeight')"
+          min-width="55px"
+          align="center"
+          prop="开始重量"
+        />
+        <el-table-column
+          :label="$t('errorAnalysis.edWeight')"
+          min-width="55px"
+          align="center"
+          prop="结束重量"
+        />
       </el-table>
       <!-- <pagination v-show="tab3.table.total>=0" :total="tab3.table.total" :page.sync="tab3.table.getdataListParm.offset" :limit.sync="tab3.table.getdataListParm.pagecount" @pagination="getTab3List" /> -->
     </div>
@@ -68,237 +252,346 @@
 </template>
 
 <script>
-import echarts from 'echarts'
+import echarts from "echarts";
 
-require('echarts/theme/macarons')
-import { GetDataByName, GetReportform, GetDataByNames } from '@/api/common'
-import Cookies from 'js-cookie'
-import { parseTime } from '@/utils/index.js'
-import Pagination from '@/components/Pagination'
-import { json2excel } from '@/utils/index.js'
-import { MessageBox } from 'element-ui'
+require("echarts/theme/macarons");
+import { GetDataByName, GetReportform, GetDataByNames } from "@/api/common";
+import Cookies from "js-cookie";
+import { parseTime } from "@/utils/index.js";
+import Pagination from "@/components/Pagination";
+import { json2excel } from "@/utils/index.js";
+import { MessageBox } from "element-ui";
 export default {
-  name: 'Tab2',
+  name: "Tab2",
   components: { Pagination },
   data() {
     return {
       Beforedisabled: false,
       Nextdisabled: false,
-      pickerMinDate: '',
+      pickerMinDate: "",
       pickerOptions: {
         onPick: ({ maxDate, minDate }) => {
-          this.pickerMinDate = minDate.getTime()
+          this.pickerMinDate = minDate.getTime();
           if (maxDate) {
-            this.pickerMinDate = ''
+            this.pickerMinDate = "";
           }
         },
         // 限制不能选择今天之后的日期
         disabledDate: (time) => {
-          if (this.pickerMinDate !== '') {
-            const one = 31 * 24 * 3600 * 1000
-            const minTime = this.pickerMinDate - one
-            let maxTime = this.pickerMinDate + one
+          if (this.pickerMinDate !== "") {
+            const one = 31 * 24 * 3600 * 1000;
+            const minTime = this.pickerMinDate - one;
+            let maxTime = this.pickerMinDate + one;
             if (maxTime > new Date()) {
-              maxTime = new Date()
+              maxTime = new Date();
             }
-            return time.getTime() < minTime || time.getTime() > maxTime
+            return time.getTime() < minTime || time.getTime() > maxTime;
           }
-          return time.getTime() > Date.now()
-        }
+          return time.getTime() > Date.now();
+        },
       },
       requestParams: [
-        { name: 'getPastureListJT', offset: 0, pagecount: 0, parammaps: { pastureid: Cookies.get('pastureid'), pasturename: '' }}
+        {
+          name: "getPastureListJT",
+          offset: 0,
+          pagecount: 0,
+          parammaps: { pastureid: Cookies.get("pastureid"), pasturename: "" },
+        },
       ],
       pastureList: [], // 牧场
       // 班次
       maxTime: {
         getMaxTimesParm: {
-          name: 'getSysoptEnable',
+          name: "getSysoptEnable",
           page: 1,
           offset: 1,
           pagecount: 1,
-          returntype: 'Map',
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            inforname: 'times'
-          }
-        }
+            pastureid: Cookies.get("pastureid"),
+            inforname: "times",
+          },
+        },
       },
-      jumpModeList: [{ id: '0', name:this.$t('errorAnalysis.sdtz') }, { id: '1',  name:this.$t('errorAnalysis.zdtz') }],
+      jumpModeList: [
+        { id: "0", name: this.$t("errorAnalysis.sdtz") },
+        { id: "1", name: this.$t("errorAnalysis.zdtz") },
+      ],
       frequencyList: [],
-      isuseList: [{ id: '0',  name:this.$t('errorAnalysis.wwc')}, { id: '2', name:this.$t('errorAnalysis.bfwc')}, { id: '1',  name:this.$t('errorAnalysis.qbwc') }],
+      isuseList: [
+        { id: "0", name: this.$t("errorAnalysis.wwc") },
+        { id: "2", name: this.$t("errorAnalysis.bfwc") },
+        { id: "1", name: this.$t("errorAnalysis.qbwc") },
+      ],
       table: {
         getdataListParm: {
-          name: 'getStatisticsSL',
+          name: "getStatisticsSL",
           page: 1,
           offset: 1,
-          pagecount: '',
-          returntype: 'Map',
+          pagecount: "",
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            startTime: parseTime(new Date(), '{y}-{m}-{d}'),
-            stopTime: parseTime(new Date(), '{y}-{m}-{d}'),
+            pastureid: Cookies.get("pastureid"),
+            startTime: parseTime(new Date(), "{y}-{m}-{d}"),
+            stopTime: parseTime(new Date(), "{y}-{m}-{d}"),
             inputDatetime: [new Date(), new Date()],
-            tmrtname: '',
-            projname: '',
-            times: '',
-            templetname: '',
-            fname: '',
-            buttontype: '',
-            isuse: ''
-          }
+            tmrtname: "",
+            projname: "",
+            times: "",
+            templetname: "",
+            fname: "",
+            buttontype: "",
+            isuse: "",
+          },
         },
         tableKey: 1,
         list: [],
         total: 0,
         listLoading: true,
-        temp: {}
+        temp: {},
       },
-      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
-      cellStyle: { padding: 0 + 'px' },
-      myHeight2: document.documentElement.clientHeight - 85 - 210
-    }
+      rowStyle: { maxHeight: 30 + "px", height: 30 + "px" },
+      cellStyle: { padding: 0 + "px" },
+      myHeight2: document.documentElement.clientHeight - 85 - 210,
+    };
   },
   create() {
-    this.getDownList()
-    this.getIsDisplay()
+    this.getDownList();
+    this.getIsDisplay();
   },
   activated() {
-    this.getTimeFn()
-    this.getDownList()
-    this.getIsDisplay()
+    this.getTimeFn();
+    this.getDownList();
+    this.getIsDisplay();
   },
   methods: {
     getTimeFn() {
-      const that = this
-      const start = new Date()
-      const end = new Date()
-      const start2 = new Date()
-      const end2 = new Date()
-      start2.setTime(start2.getTime() - 3600 * 1000 * 24 * 1)
-      end2.setTime(end2.getTime() - 3600 * 1000 * 24 * 1)
-      that.table.getdataListParm.parammaps.inputDatetime = [start2, end2]
-      that.table.getdataListParm.parammaps.startTime = parseTime(start2, '{y}-{m}-{d}')
-      that.table.getdataListParm.parammaps.stopTime = parseTime(end2, '{y}-{m}-{d}')
+      const that = this;
+      const start = new Date();
+      const end = new Date();
+      const start2 = new Date();
+      const end2 = new Date();
+      start2.setTime(start2.getTime() - 3600 * 1000 * 24 * 1);
+      end2.setTime(end2.getTime() - 3600 * 1000 * 24 * 1);
+      that.table.getdataListParm.parammaps.inputDatetime = [start2, end2];
+      that.table.getdataListParm.parammaps.startTime = parseTime(
+        start2,
+        "{y}-{m}-{d}"
+      );
+      that.table.getdataListParm.parammaps.stopTime = parseTime(
+        end2,
+        "{y}-{m}-{d}"
+      );
     },
     getIsDisplay() {
-      GetDataByName(this.maxTime.getMaxTimesParm).then(response => {
+      GetDataByName(this.maxTime.getMaxTimesParm).then((response) => {
         if (response.data.list[0].inforvalue == 1) {
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }]
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+          ];
         } else if (response.data.list[0].inforvalue == 2) {
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }, { id: '2', name: this.$t('errorAnalysis.two'), }]
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+            { id: "2", name: this.$t("errorAnalysis.two") },
+          ];
         } else if (response.data.list[0].inforvalue == 3) {
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }, { id: '2', name: this.$t('errorAnalysis.two'), }, { id: '3', name: this.$t('errorAnalysis.three'), }]
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+            { id: "2", name: this.$t("errorAnalysis.two") },
+            { id: "3", name: this.$t("errorAnalysis.three") },
+          ];
         } else if (response.data.list[0].inforvalue == 4) {
-          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one'), }, { id: '2', name: this.$t('errorAnalysis.two'), }, { id: '3', name: this.$t('errorAnalysis.three'), }, { id: '4', name: this.$t('errorAnalysis.four'), }]
+          this.frequencyList = [
+            { id: "1", name: this.$t("errorAnalysis.one") },
+            { id: "2", name: this.$t("errorAnalysis.two") },
+            { id: "3", name: this.$t("errorAnalysis.three") },
+            { id: "4", name: this.$t("errorAnalysis.four") },
+          ];
         }
-      })
+      });
     },
     getDownList() {
-      GetDataByNames(this.requestParams).then(response => {
-        this.pastureList = response.data.getPastureListJT.list
-        this.table.getdataListParm.parammaps.pastureid = response.data.getPastureListJT.list[0].pastureid
-        this.getList()
-      })
+      GetDataByNames(this.requestParams).then((response) => {
+        this.pastureList = response.data.getPastureListJT.list;
+        this.table.getdataListParm.parammaps.pastureid =
+          response.data.getPastureListJT.list[0].pastureid;
+        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.table.total = response.data.total
+          this.table.list = response.data.list;
+          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() {
-      this.table.getdataListParm.name = 'getStatisticsSL'
-      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}')
+      this.table.getdataListParm.name = "getStatisticsSL";
+      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() {
-      this.table.getdataListParm.parammaps.tmrtname = ''
-      this.table.getdataListParm.parammaps.projname = ''
-      this.table.getdataListParm.parammaps.times = ''
-      this.table.getdataListParm.parammaps.templetname = ''
-      this.table.getdataListParm.parammaps.buttontype = ''
-      this.table.getdataListParm.parammaps.fname = ''
-      this.getList()
+      this.table.getdataListParm.parammaps.tmrtname = "";
+      this.table.getdataListParm.parammaps.projname = "";
+      this.table.getdataListParm.parammaps.times = "";
+      this.table.getdataListParm.parammaps.templetname = "";
+      this.table.getdataListParm.parammaps.buttontype = "";
+      this.table.getdataListParm.parammaps.fname = "";
+      this.getList();
     },
     handleExport() {
       var excelDatasTab3 = [
         {
-          tHeader: ['日期', 'TMR名称', '车次', '班次', '配方名称', '栏舍', '理论重量', '实际重量', '误差值', '准确率', '开始时间', '结束时间', '跳转方式', '开始重量', '结束重量', '搅拌时间'],
-          filterVal: ['日期', 'TMR名称', '车次', '班次', '配方名称', '栏舍', '理论重量', '实际重量', '误差值', '准确率', '开始时间', '结束时间', '跳转方式', '开始重量', '结束重量', '搅拌时间'],
+          tHeader: [
+            "日期",
+            "TMR名称",
+            "车次",
+            "班次",
+            "配方名称",
+            "栏舍",
+            "理论重量",
+            "实际重量",
+            "误差值",
+            "准确率",
+            "开始时间",
+            "结束时间",
+            "跳转方式",
+            "开始重量",
+            "结束重量",
+            "搅拌时间",
+          ],
+          filterVal: [
+            "日期",
+            "TMR名称",
+            "车次",
+            "班次",
+            "配方名称",
+            "栏舍",
+            "理论重量",
+            "实际重量",
+            "误差值",
+            "准确率",
+            "开始时间",
+            "结束时间",
+            "跳转方式",
+            "开始重量",
+            "结束重量",
+            "搅拌时间",
+          ],
           tableDatas: this.tab3.table.list,
-          sheetName: '撒料统计'
-        }
-      ]
-      json2excel(excelDatasTab3, '撒料统计', true, 'xlsx')
+          sheetName: this.$t("errorAnalysis.sltj"),
+        },
+      ];
+      json2excel(excelDatasTab3, this.$t("errorAnalysis.sltj"), true, "xlsx");
     },
     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))
+      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
+          )
+        );
         if (stop > Date.now() - 8.64e7) {
-          this.Nextdisabled = true
-          this.Beforedisabled = false
+          this.Nextdisabled = true;
+          this.Beforedisabled = false;
         } else {
-          this.Nextdisabled = false
-          this.Beforedisabled = false
+          this.Nextdisabled = false;
+          this.Beforedisabled = false;
         }
-        this.table.getdataListParm.parammaps.inputDatetime.length = 0
-        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
-        this.$forceUpdate()
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0;
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop);
+        this.$forceUpdate();
       }
-      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}')
-      this.getList()
+      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}"
+      );
+      this.getList();
     },
     handleNext() {
-      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
-        var start2 = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1))
-        var stop2 = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1))
+      if (
+        this.table.getdataListParm.parammaps.inputDatetime !== "" &&
+        this.table.getdataListParm.parammaps.inputDatetime !== null
+      ) {
+        var start2 = new Date(
+          this.table.getdataListParm.parammaps.inputDatetime[0].setDate(
+            this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1
+          )
+        );
+        var stop2 = new Date(
+          this.table.getdataListParm.parammaps.inputDatetime[1].setDate(
+            this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1
+          )
+        );
         if (stop2 > Date.now() - 8.64e7) {
-          this.Nextdisabled = true
-          this.Beforedisabled = false
+          this.Nextdisabled = true;
+          this.Beforedisabled = false;
         } else {
-          this.Nextdisabled = false
-          this.Beforedisabled = false
+          this.Nextdisabled = false;
+          this.Beforedisabled = false;
         }
-        this.table.getdataListParm.parammaps.inputDatetime.length = 0
-        this.table.getdataListParm.parammaps.inputDatetime.push(start2, stop2)
-        this.$forceUpdate()
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0;
+        this.table.getdataListParm.parammaps.inputDatetime.push(start2, stop2);
+        this.$forceUpdate();
       }
-      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}')
-      this.getList()
-    }
-
-  }
-}
+      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}"
+      );
+      this.getList();
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>
-  /deep/ .el-table th>.cell{
-    padding-left: 0 !important;;
-    padding-right: 0 !important;;
-  }
-  /deep/ .el-table td>.cell{
-    padding-left: 0 !important;;
-    padding-right: 0 !important;;
-  }
+/deep/ .el-table th > .cell {
+  padding-left: 0 !important;
+  padding-right: 0 !important;
+}
+/deep/ .el-table td > .cell {
+  padding-left: 0 !important;
+  padding-right: 0 !important;
+}
 </style>

+ 16 - 10
src/views/statisticalAnalysis/errorAnalysis/pasture/index.vue

@@ -18,7 +18,7 @@
           <el-input v-if="tab.isLivestockType" v-model="tab.table.getdataListParm.parammaps.fname" class="filter-item" style="width: 140px;" :placeholder="$t('errorAnalysis.animelName')"  />
           <el-input v-if="tab.isTrainNumber" v-model="tab.table.getdataListParm.parammaps.projname" class="filter-item" style="width: 100px;" :placeholder="$t('errorAnalysis.projname')"  />
           <el-input v-if="tab.isFeed" v-model="tab.table.getdataListParm.parammaps.fname" class="filter-item" style="width: 140px;" :placeholder="$t('errorAnalysis.isFeed')"  />
-          <el-select v-if="tab.isTrainNumber" v-model="tab.table.getdataListParm.parammaps.times" filterable :placeholder="$t('errorAnalysis.isTrainNumber')"  class="filter-item" style="width: 120px;" clearable>
+          <el-select v-if="tab.isTrainNumber" v-model="tab.table.getdataListParm.parammaps.times" filterable :placeholder="$t('errorAnalysis.isTrainNumber')"  class="filter-item" style="width: 120px;" clearable   @change="handleTimes">
             <el-option v-for="item in tab2.frequencyList" :key="item.id" :label="item.name" :value="item.id" />
           </el-select>
           <el-input v-if="tab.isTrainNumber" v-model="tab.table.getdataListParm.parammaps.fname" class="filter-item" style="width: 100px;"  :placeholder="$t('processAnalysis.tmrName')"   />
@@ -304,7 +304,7 @@
             </el-col>
             <el-col :span="12">
               <div class="grid-content">
-                <h4>{{$t('errorAnalysis.feedName')}}</h4>
+                <h4>{{$t('errorAnalysis.pfzql')}}</h4>
                 <div v-if="tab.chart1.isChart" class="button">
                   <div class="chartButton">
                     <my-select ref="tenantselect" :model="tab.chart1.getdataListParm.parammaps.statisticsList" :option="tab.chart1.statisticsList" :value="'name'" :label="'name'" style="width: 150px;margin-right: 5px;float: left;" :placeholder="$t('errorAnalysis.xztjcs')" @searchSelect="changeStatisticChart1" />
@@ -698,7 +698,7 @@
         </div>
       </div>
       </el-tab-pane>
-      <el-tab-pane :label="$t('errorAnalysis.hltj')"name="second">
+      <el-tab-pane :label="$t('errorAnalysis.hltj')" name="second">
         <div class="search" ref="myHeightSecond">
           <el-date-picker v-model="tab2.table.getdataListParm.parammaps.inputDatetime" :clearable="false" class="inputDatetime filter-item" type="daterange" :range-separator="$t('common.to')"  :start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" style="width: 250px;" :picker-options="pickerOptions3" />
           <!-- <el-date-picker v-model="tab2.table.getdataListParm.parammaps.inputDatetime2" :clearable="false" style="width: 140px;margin-top: 5px;" type="date" :placeholder="$t('dailyExecutionPlan.xzrq')"  > </el-date-picker> -->
@@ -708,7 +708,7 @@
             <el-option v-for="(item,index) in tab2.TMRNameList" :key="index" :label="item.tmrloadname" :value="item.tmrloadname" />
           </el-select>
           <el-input v-model="tab2.table.getdataListParm.parammaps.projname" style="margin-top: 5px;width: 110px;" :placeholder="$t('errorAnalysis.projname')"  class="filter-item" clearable />
-          <el-select v-model="tab2.table.getdataListParm.parammaps.times" style="margin-top: 5px;width: 110px;" filterable :placeholder="$t('errorAnalysis.isTrainNumber')"  class="filter-item" clearable>
+          <el-select v-model="tab2.table.getdataListParm.parammaps.times" style="margin-top: 5px;width: 110px;" filterable :placeholder="$t('errorAnalysis.isTrainNumber')"  class="filter-item" clearable @change="handleTimes">
             <el-option v-for="item in tab2.frequencyList" :key="item.id" :label="item.name" :value="item.id" />
           </el-select>
           <el-input v-model="tab2.table.getdataListParm.parammaps.templetname" style="margin-top: 5px;width: 110px;" :placeholder="$t('errorAnalysis.feedName')"  class="filter-item" clearable />
@@ -805,7 +805,7 @@
             <el-option v-for="(item,index) in tab3.TMRNameList" :key="index" :label="item.tmrloadname" :value="item.tmrloadname" />
           </el-select>
           <el-input v-model="tab3.table.getdataListParm.parammaps.projname" style="margin-top: 5px;width: 150px;" :placeholder="$t('errorAnalysis.projname')"  class="filter-item" clearable />
-          <el-select v-model="tab3.table.getdataListParm.parammaps.times" style="margin-top: 5px;width: 100px;" filterable :placeholder="$t('errorAnalysis.isTrainNumber')"  class="filter-item" clearable>
+          <el-select v-model="tab3.table.getdataListParm.parammaps.times" style="margin-top: 5px;width: 100px;" filterable :placeholder="$t('errorAnalysis.isTrainNumber')"  class="filter-item" clearable @change="handleTimes">
             <el-option v-for="item in tab3.frequencyList" :key="item.id" :label="item.name" :value="item.id" />
           </el-select>
           <el-input v-model="tab3.table.getdataListParm.parammaps.templetname" style="margin-top: 5px;width: 110px;" :placeholder="$t('errorAnalysis.feedName')"  class="filter-item" clearable />
@@ -5123,6 +5123,12 @@ export default {
         this.tab.table2.getdataListParm.offset = 1
         this.getTabList2()
       }
+    },
+     // 班次
+    handleTimes(time) {
+      console.log(time, "time");
+      this.tab.table.getdataListParm.parammaps.times = time;
+      this.tab.table2.getdataListParm.parammaps.times = time;
     },
     // 按日期统计
     changeChecked() {
@@ -7214,7 +7220,7 @@ export default {
               'field4'
             ],
             tableDatas: this.tab.chart5.table.list,
-            sheetName: '混料统计'
+             sheetName:this.$t('errorAnalysis.hltj')
           }
         ]
         json2excel(
@@ -7407,7 +7413,7 @@ export default {
       //     tHeader: ['日期', 'TMR名称', '车次', '班次', '配方名称', '饲料', '理论重量', '实际重量', '误差值', '准确率', '计划时间', '开始时间', '结束时间', ' 跳转方式', '开始重量', '结束重量', '搅拌时间'],
       //     filterVal: ['日期', 'TMR名称', '车次', '班次', '配方名称', '饲料', '理论重量', '实际重量', '误差值', '准确率', '计划时间', '开始时间', '结束时间', '跳转方式', '开始重量', '结束重量', '搅拌时间'],
       //     tableDatas: this.tab2.table.list,
-      //      sheetName: '混料统计'
+      //       sheetName:this.$t('errorAnalysis.hltj')
       //   }
       // ]
       // json2excel(excelDatasTab2, '混料统计', true, 'xlsx')
@@ -7504,7 +7510,7 @@ export default {
               'barname'
             ],
             tableDatas: exportList,
-            sheetName: '混料统计'
+             sheetName:this.$t('errorAnalysis.hltj')
           }
         ]
         json2excel(excelDatasTab2, this.$t('errorAnalysis.hltj'), true, 'xlsx')
@@ -8343,7 +8349,7 @@ export default {
             }
             sums[index] =
               sums[index].toFixed(4) +
-              '(干物质量:' +
+              this.$t('message.msg352') +
               this.modificationRecordTemp.lastdate +
               ')'
           } else {
@@ -8379,7 +8385,7 @@ export default {
             }
             sums[index] =
               sums[index].toFixed(4) +
-              '(干物质量:' +
+              this.$t('message.msg352') +
               this.modificationRecordTemp.currentdate +
               ')'
           } else {

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 239 - 239
src/views/statisticalAnalysis/feedingEfficiency/pasture/index.vue


+ 224 - 224
src/views/statisticalAnalysis/formulationEvaluation/index.vue

@@ -69,7 +69,7 @@
         class="successBorder"
         style="margin-left: 10px"
         @click="form_search"
-        >{{ $t('common.query') }}</el-button
+        >{{ $t("common.query") }}</el-button
       >
     </div>
     <div class="search" />
@@ -264,7 +264,7 @@
           </el-table-column>
         </el-table-column>
         <el-table-column
-          :label="$t('formulationEvaluation.cnjn')"
+          :label="$t('formulationEvaluation.cnjndm')"
           align="center"
         >
           <el-table-column
@@ -1270,10 +1270,10 @@
           class="cancelClose"
           style="right: 20px"
           @click="
-            see.dialogFormVisible = false
-            $route.params.tname = ''
+            see.dialogFormVisible = false;
+            $route.params.tname = '';
           "
-          >{{ $t('common.closed') }}</el-button
+          >{{ $t("common.closed") }}</el-button
         >
       </div>
     </el-dialog>
@@ -1403,7 +1403,7 @@
         </div>
         <div class="table2 detailDialog">
           <div class="recipeTemplateF">
-            <p>{{ $t('formulationEvaluation.pfbqb') }}</p>
+            <p>{{ $t("formulationEvaluation.pfbqb") }}</p>
           </div>
           <el-table
             :key="details.table2.tableKey"
@@ -1456,10 +1456,10 @@
             >
               <template slot-scope="scope">
                 <span v-if="scope.row.islockcount == '0'">{{
-                  $t('feedChart.no')
+                  $t("feedChart.no")
                 }}</span>
                 <span v-if="scope.row.islockcount == '1'">{{
-                  $t('feedChart.yes')
+                  $t("feedChart.yes")
                 }}</span>
               </template>
             </el-table-column>
@@ -1480,7 +1480,7 @@
           class="cancelClose"
           style="right: 20px"
           @click="details.dialogFormVisible = false"
-          >{{ $t('common.closed') }}</el-button
+          >{{ $t("common.closed") }}</el-button
         >
       </div>
     </el-dialog>
@@ -1488,54 +1488,54 @@
 </template>
 
 <script>
-import { GetDataByName, postJson } from '@/api/common'
-import Cookies from 'js-cookie'
-import Pagination from '@/components/Pagination'
-import { parseTime } from '@/utils/index.js'
+import { GetDataByName, postJson } from "@/api/common";
+import Cookies from "js-cookie";
+import Pagination from "@/components/Pagination";
+import { parseTime } from "@/utils/index.js";
 export default {
-  name: 'FormulationEvaluation',
+  name: "FormulationEvaluation",
   components: { Pagination },
   filters: {
     keepTreeNum(value) {
-      value = Number(value)
-      return value.toFixed(3)
-    }
+      value = Number(value);
+      return value.toFixed(3);
+    },
   },
   data() {
     return {
       dialogFull: false,
       searchList: [
-        { id: '0', name: this.$t('dhedFormula.apfcx') },
-        { id: '1', name: this.$t('dhedFormula.alscx') }
+        { id: "0", name: this.$t("dhedFormula.apfcx") },
+        { id: "1", name: this.$t("dhedFormula.alscx") },
       ],
       formulaList: [],
       fenceHouseList: [],
       table: {
         getdataListParm: {
-          name: 'judgenurFTReport',
+          name: "judgenurFTReport",
           page: 1,
           offset: 1,
-          pagecount: parseInt(Cookies.get('pageCount')),
-          returntype: 'Map',
+          pagecount: parseInt(Cookies.get("pageCount")),
+          returntype: "Map",
           parammaps: {
-            pastureid: Cookies.get('pastureid'),
-            startTime: parseTime(new Date(), '{y}-{m}-{d}'),
-            stopTime: parseTime(new Date(), '{y}-{m}-{d}'),
+            pastureid: Cookies.get("pastureid"),
+            startTime: parseTime(new Date(), "{y}-{m}-{d}"),
+            stopTime: parseTime(new Date(), "{y}-{m}-{d}"),
             inputDatetime: [new Date(), new Date()],
-            search: '0',
-            templetid: '',
-            barid: ''
-          }
+            search: "0",
+            templetid: "",
+            barid: "",
+          },
         },
         tableKey: 1,
         list: [],
         total: 0,
         listLoading: true,
-        temp: {}
+        temp: {},
       },
       see: {
         dialogFormVisible: false,
-        dialogStatus: '',
+        dialogStatus: "",
         temp: {},
         rules: {},
         table: {
@@ -1544,23 +1544,23 @@ export default {
           total: 0,
           listLoading: true,
           getdataListParm: {
-            name: 'judgenurFTReport',
+            name: "judgenurFTReport",
             page: 1,
             offset: 1,
             pagecount: 0,
-            returntype: 'Map',
+            returntype: "Map",
             parammaps: {
-              name: 'judgenurBarBmReport',
-              name1: 'judgenurBarHSL'
-            }
-          }
-        }
+              name: "judgenurBarBmReport",
+              name1: "judgenurBarHSL",
+            },
+          },
+        },
       },
       details: {
         dialogFormVisible: false,
-        dialogStatus: '',
+        dialogStatus: "",
         temp: {
-          maxDate: ''
+          maxDate: "",
         },
         rules: {},
         table1: {
@@ -1569,16 +1569,16 @@ export default {
           total: 0,
           listLoading: true,
           getdataListParm: {
-            name: 'getFTListDateHis',
+            name: "getFTListDateHis",
             page: 1,
             offset: 1,
             pagecount: 10,
-            returntype: 'Map',
+            returntype: "Map",
             parammaps: {
-              pastureid: '',
-              id: ''
-            }
-          }
+              pastureid: "",
+              id: "",
+            },
+          },
         },
         table2: {
           tableKey: 0,
@@ -1586,339 +1586,339 @@ export default {
           total: 0,
           listLoading: true,
           getdataListParm: {
-            name: 'getFTdetailListDate',
+            name: "getFTdetailListDate",
             page: 1,
             offset: 1,
             pagecount: 10,
-            returntype: 'Map',
+            returntype: "Map",
             parammaps: {
-              pastureid: '',
-              ftid: '',
-              date: '',
-              version: ''
-            }
-          }
+              pastureid: "",
+              ftid: "",
+              date: "",
+              version: "",
+            },
+          },
         },
         maxDate: {
           getdataListParm: {
-            name: 'getFTMaxDate',
+            name: "getFTMaxDate",
             page: 1,
             offset: 1,
             pagecount: 10,
-            returntype: 'Map',
+            returntype: "Map",
             parammaps: {
-              pastureid: ''
-            }
-          }
-        }
+              pastureid: "",
+            },
+          },
+        },
       },
       textMap: {
-        see: '',
-        details: this.$t('message.msg63')
+        see: "",
+        details: this.$t("message.msg63"),
       },
-      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
-      cellStyle: { padding: 0 + 'px' }
-    }
+      rowStyle: { maxHeight: 30 + "px", height: 30 + "px" },
+      cellStyle: { padding: 0 + "px" },
+    };
   },
 
   created() {
     if (
-      this.$route.params.tname !== '' &&
+      this.$route.params.tname !== "" &&
       this.$route.params.tname !== undefined &&
       this.$route.params.startTime !== undefined &&
       this.$route.params.stopTime !== undefined
     ) {
       console.log(
         this.table.getdataListParm.parammaps.inputDatetime,
-        'this.table.getdataListParm.parammaps.inputDatetime'
-      )
+        "this.table.getdataListParm.parammaps.inputDatetime"
+      );
       this.table.getdataListParm.parammaps.startTime =
-        this.$route.params.startTime
+        this.$route.params.startTime;
       this.table.getdataListParm.parammaps.stopTime =
-        this.$route.params.stopTime
-      this.textMap.see = this.$t('message.msg62') + this.$route.params.tname
+        this.$route.params.stopTime;
+      this.textMap.see = this.$t("message.msg62") + this.$route.params.tname;
       setTimeout(() => {
-        this.dialogFull = false
-        this.see.dialogStatus = 'see'
-        this.see.dialogFormVisible = true
-      }, 500)
-      this.see.table.getdataListParm.parammaps.ftid = this.$route.params.ftid
+        this.dialogFull = false;
+        this.see.dialogStatus = "see";
+        this.see.dialogFormVisible = true;
+      }, 500);
+      this.see.table.getdataListParm.parammaps.ftid = this.$route.params.ftid;
       this.see.table.getdataListParm.parammaps.pastureid =
-        this.$route.params.pastureid
+        this.$route.params.pastureid;
       this.see.table.getdataListParm.parammaps.startTime =
-        this.table.getdataListParm.parammaps.startTime
+        this.table.getdataListParm.parammaps.startTime;
       this.see.table.getdataListParm.parammaps.stopTime =
-        this.table.getdataListParm.parammaps.stopTime
-      this.getListSee()
+        this.table.getdataListParm.parammaps.stopTime;
+      this.getListSee();
     }
-    this.getList()
-    this.getformulaList()
-    this.getfenceHouseList()
+    this.getList();
+    this.getformulaList();
+    this.getfenceHouseList();
   },
 
   methods: {
     getformulaList() {
-      const url = 'authdata/GetDataByName'
-      const data = {}
-      data.name = 'getBarListEnable'
-      data.parammaps = {}
-      data.parammaps.pastureid = Cookies.get('pastureid')
+      const url = "authdata/GetDataByName";
+      const data = {};
+      data.name = "getBarListEnable";
+      data.parammaps = {};
+      data.parammaps.pastureid = Cookies.get("pastureid");
       postJson(url, data).then((response) => {
         if (response.data.list !== null) {
-          this.formulaList = response.data.list
+          this.formulaList = response.data.list;
         } else {
-          this.formulaList = []
+          this.formulaList = [];
         }
-      })
+      });
     },
     getfenceHouseList() {
-      const url = 'authdata/GetDataByName'
-      const data = {}
-      data.name = 'getFeedTempletName'
+      const url = "authdata/GetDataByName";
+      const data = {};
+      data.name = "getFeedTempletName";
       postJson(url, data).then((response) => {
         if (response.data.list !== null) {
-          this.fenceHouseList = response.data.list
+          this.fenceHouseList = response.data.list;
         } else {
-          this.fenceHouseList = []
+          this.fenceHouseList = [];
         }
-      })
+      });
     },
     getList() {
-      this.table.listLoading = true
+      this.table.listLoading = true;
       GetDataByName(this.table.getdataListParm).then((response) => {
-        console.log('table数据', response.data.list)
+        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.pageNum = 0
-          this.table.pageSize = 0
-          this.table.total = 0
+          this.table.list = [];
+          this.table.pageNum = 0;
+          this.table.pageSize = 0;
+          this.table.total = 0;
         }
         setTimeout(() => {
-          this.table.listLoading = false
-        }, 100)
-      })
+          this.table.listLoading = false;
+        }, 100);
+      });
     },
     form_search() {
-      if (this.table.getdataListParm.parammaps.search == '0') {
-        this.table.getdataListParm.parammaps.barid = ''
+      if (this.table.getdataListParm.parammaps.search == "0") {
+        this.table.getdataListParm.parammaps.barid = "";
       } else {
-        this.table.getdataListParm.parammaps.templetid = ''
-        console.log(this.table.getdataListParm.parammaps.barid)
+        this.table.getdataListParm.parammaps.templetid = "";
+        console.log(this.table.getdataListParm.parammaps.barid);
       }
-      this.getList()
+      this.getList();
     },
     changeDate() {
       if (
-        this.table.getdataListParm.parammaps.inputDatetime !== '' &&
+        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}'
-        )
+          "{y}-{m}-{d}"
+        );
         this.table.getdataListParm.parammaps.stopTime = parseTime(
           this.table.getdataListParm.parammaps.inputDatetime[1],
-          '{y}-{m}-{d}'
-        )
-        this.getList()
+          "{y}-{m}-{d}"
+        );
+        this.getList();
       }
     },
     handleBefore() {
       if (
-        this.table.getdataListParm.parammaps.inputDatetime !== '' &&
+        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()
+        );
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0;
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop);
+        this.$forceUpdate();
       }
       this.table.getdataListParm.parammaps.startTime = parseTime(
         this.table.getdataListParm.parammaps.inputDatetime[0],
-        '{y}-{m}-{d}'
-      )
+        "{y}-{m}-{d}"
+      );
       this.table.getdataListParm.parammaps.stopTime = parseTime(
         this.table.getdataListParm.parammaps.inputDatetime[1],
-        '{y}-{m}-{d}'
-      )
-      this.getList()
+        "{y}-{m}-{d}"
+      );
+      this.getList();
     },
     handleNext() {
       if (
-        this.table.getdataListParm.parammaps.inputDatetime !== '' &&
+        this.table.getdataListParm.parammaps.inputDatetime !== "" &&
         this.table.getdataListParm.parammaps.inputDatetime !== null
       ) {
         var start2 = new Date(
           this.table.getdataListParm.parammaps.inputDatetime[0].setDate(
             this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1
           )
-        )
+        );
         var stop2 = 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(start2, stop2)
-        this.$forceUpdate()
+        );
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0;
+        this.table.getdataListParm.parammaps.inputDatetime.push(start2, stop2);
+        this.$forceUpdate();
       }
       this.table.getdataListParm.parammaps.startTime = parseTime(
         this.table.getdataListParm.parammaps.inputDatetime[0],
-        '{y}-{m}-{d}'
-      )
+        "{y}-{m}-{d}"
+      );
       this.table.getdataListParm.parammaps.stopTime = parseTime(
         this.table.getdataListParm.parammaps.inputDatetime[1],
-        '{y}-{m}-{d}'
-      )
-      this.getList()
+        "{y}-{m}-{d}"
+      );
+      this.getList();
     },
     tableCellStyle({ row, column, rowIndex, columnIndex }) {
       if (columnIndex === 0) {
         return {
-          textDecoration: 'underline'
-        }
+          textDecoration: "underline",
+        };
       }
       return {
-        textDecoration: 'none'
-      }
+        textDecoration: "none",
+      };
     },
     clickFormulaTemplateIndex(row) {
-      console.log('点击了配方模板/指标')
-      this.dialogFull = false
-      this.details.dialogStatus = 'details'
-      this.details.dialogFormVisible = true
-      this.details.table1.getdataListParm.parammaps.pastureid = row.pastureid
-      this.details.table1.getdataListParm.parammaps.id = row.ftid
+      console.log("点击了配方模板/指标");
+      this.dialogFull = false;
+      this.details.dialogStatus = "details";
+      this.details.dialogFormVisible = true;
+      this.details.table1.getdataListParm.parammaps.pastureid = row.pastureid;
+      this.details.table1.getdataListParm.parammaps.id = row.ftid;
 
-      this.details.maxDate.getdataListParm.parammaps.pastureid = row.pastureid
-      this.getMaxDate()
+      this.details.maxDate.getdataListParm.parammaps.pastureid = row.pastureid;
+      this.getMaxDate();
     },
 
     getMaxDate() {
       GetDataByName(this.details.maxDate.getdataListParm).then((response) => {
         if (response.data.list !== null) {
-          this.details.temp.maxDate = response.data.list[0].maxdate
+          this.details.temp.maxDate = response.data.list[0].maxdate;
         } else {
-          this.details.temp.maxDate = ''
+          this.details.temp.maxDate = "";
         }
         this.details.table1.getdataListParm.parammaps.date =
-          this.details.temp.maxDate
+          this.details.temp.maxDate;
         this.details.table2.getdataListParm.parammaps.date =
-          this.details.temp.maxDate
+          this.details.temp.maxDate;
 
-        this.getListDetails1()
-      })
+        this.getListDetails1();
+      });
     },
     changeMaxDate(item) {
       this.details.table1.getdataListParm.parammaps.date =
-        this.details.temp.maxDate
-      this.getListDetails1()
+        this.details.temp.maxDate;
+      this.getListDetails1();
     },
     getListDetails1() {
-      this.details.table1.listLoading = true
+      this.details.table1.listLoading = true;
       GetDataByName(this.details.table1.getdataListParm).then((response) => {
-        console.log('table数据', response.data.list)
+        console.log("table数据", response.data.list);
         if (response.data.list !== null) {
-          this.details.table1.list = response.data.list
-          this.details.table1.pageNum = response.data.pageNum
-          this.details.table1.pageSize = response.data.pageSize
-          this.details.table1.total = response.data.total
+          this.details.table1.list = response.data.list;
+          this.details.table1.pageNum = response.data.pageNum;
+          this.details.table1.pageSize = response.data.pageSize;
+          this.details.table1.total = response.data.total;
 
           this.details.table2.getdataListParm.parammaps.pastureid =
-            this.details.table1.list[0].pastureid
+            this.details.table1.list[0].pastureid;
           this.details.table2.getdataListParm.parammaps.ftid =
-            this.details.table1.list[0].id
+            this.details.table1.list[0].id;
           this.details.table2.getdataListParm.parammaps.version =
-            this.details.table1.list[0].version
-          this.getListDetails2()
+            this.details.table1.list[0].version;
+          this.getListDetails2();
         } else {
-          this.details.table1.list = []
-          this.details.table2.list = []
-          this.details.table1.pageNum = 0
-          this.details.table1.pageSize = 0
-          this.details.table1.total = 0
+          this.details.table1.list = [];
+          this.details.table2.list = [];
+          this.details.table1.pageNum = 0;
+          this.details.table1.pageSize = 0;
+          this.details.table1.total = 0;
         }
         setTimeout(() => {
-          this.details.table1.listLoading = false
-        }, 100)
-      })
+          this.details.table1.listLoading = false;
+        }, 100);
+      });
     },
     getListDetails2() {
-      this.details.table2.listLoading = true
+      this.details.table2.listLoading = true;
       GetDataByName(this.details.table2.getdataListParm).then((response) => {
-        console.log('table数据', response.data.list)
+        console.log("table数据", response.data.list);
         if (response.data.list !== null) {
-          this.details.table2.list = response.data.list
-          this.details.table2.pageNum = response.data.pageNum
-          this.details.table2.pageSize = response.data.pageSize
-          this.details.table2.total = response.data.total
+          this.details.table2.list = response.data.list;
+          this.details.table2.pageNum = response.data.pageNum;
+          this.details.table2.pageSize = response.data.pageSize;
+          this.details.table2.total = response.data.total;
         } else {
-          this.details.table2.list = []
-          this.details.table2.pageNum = 0
-          this.details.table2.pageSize = 0
-          this.details.table2.total = 0
+          this.details.table2.list = [];
+          this.details.table2.pageNum = 0;
+          this.details.table2.pageSize = 0;
+          this.details.table2.total = 0;
         }
         setTimeout(() => {
-          this.details.table2.listLoading = false
-        }, 100)
-      })
+          this.details.table2.listLoading = false;
+        }, 100);
+      });
     },
     clickFormulaHurdlesIndex(row) {
-      console.log('点击了栏舍/指标')
-      this.$router.push('/formulationPlan/DhedFormula')
+      console.log("点击了栏舍/指标");
+      this.$router.push("/formulationPlan/DhedFormula");
     },
     form_see(row) {
-      console.log(this.$t('pushingplan.watch'), row)
-      this.dialogFull = false
-      this.textMap.see = this.$t('message.msg62') + row.tname
-      this.see.dialogStatus = 'see'
-      this.see.dialogFormVisible = true
-      this.see.table.getdataListParm.parammaps.ftid = row.ftid
-      this.see.table.getdataListParm.parammaps.pastureid = row.pastureid
+      console.log(this.$t("pushingplan.watch"), row);
+      this.dialogFull = false;
+      this.textMap.see = this.$t("message.msg62") + row.tname;
+      this.see.dialogStatus = "see";
+      this.see.dialogFormVisible = true;
+      this.see.table.getdataListParm.parammaps.ftid = row.ftid;
+      this.see.table.getdataListParm.parammaps.pastureid = row.pastureid;
       this.see.table.getdataListParm.parammaps.startTime =
-        this.table.getdataListParm.parammaps.startTime
+        this.table.getdataListParm.parammaps.startTime;
       this.see.table.getdataListParm.parammaps.stopTime =
-        this.table.getdataListParm.parammaps.stopTime
-      this.getListSee()
+        this.table.getdataListParm.parammaps.stopTime;
+      this.getListSee();
     },
     getListSee() {
-      this.see.table.listLoading = true
-      const url = 'authdata/GETNurJudgeRport'
-      const data = this.see.table.getdataListParm
+      this.see.table.listLoading = true;
+      const url = "authdata/GETNurJudgeRport";
+      const data = this.see.table.getdataListParm;
       postJson(url, data).then((response) => {
         if (response.data !== null) {
-          console.log('table数据', response.data)
-          this.see.table.list = response.data
-          this.see.table.pageNum = response.data.pageNum
-          this.see.table.pageSize = response.data.pageSize
-          this.see.table.total = response.data.total
+          console.log("table数据", response.data);
+          this.see.table.list = response.data;
+          this.see.table.pageNum = response.data.pageNum;
+          this.see.table.pageSize = response.data.pageSize;
+          this.see.table.total = response.data.total;
         } else {
-          this.see.table.list = []
-          this.see.table.pageNum = 0
-          this.see.table.pageSize = 0
-          this.see.table.total = 0
+          this.see.table.list = [];
+          this.see.table.pageNum = 0;
+          this.see.table.pageSize = 0;
+          this.see.table.total = 0;
         }
         setTimeout(() => {
-          this.see.table.listLoading = false
-        }, 100)
-      })
-    }
-  }
-}
+          this.see.table.listLoading = false;
+        }, 100);
+      });
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
 .search {

+ 2 - 2
src/views/statisticalAnalysis/inventoryManagement/pasture/index.vue

@@ -78,9 +78,9 @@
           </el-select>
           <el-button class="successBorder" @click="form_search('second')">{{$t('common.query')}}</el-button>
           <el-button class="export" style="float: right;margin-right: 5px;margin-top:10px;" icon="el-icon-upload2" @click="handleExport('tab2')">{{$t('dashboard.Export')}}</el-button>
-          <el-button class="export" style="float: right;margin-right: 5px;margin-top:10px;" icon="el-icon-upload2" @click="handlesWitch()">{{
+          <!-- <el-button class="export" style="float: right;margin-right: 5px;margin-top:10px;" icon="el-icon-upload2" @click="handlesWitch()">{{
             $t('InventoryManagement.qhzs')
-          }}</el-button>
+          }}</el-button> -->
         </div>
 
         <div v-if="isTable1">

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 323 - 308
src/views/statisticalAnalysis/processAnalysis/pasture/index.vue


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно