From 29b413387460cd532f6d9f045c82faad9a2c1e85 Mon Sep 17 00:00:00 2001
From: gaoluyang <gaoluyang@rengu.cc>
Date: 星期二, 11 二月 2025 17:58:03 +0800
Subject: [PATCH] 原材料下单页面迁移

---
 src/views/index.vue                                    |    4 
 src/components/materialOrder/dataLookVisible.vue       |  162 ++
 src/assets/index_image/index-1.svg                     |   36 
 src/components/materialOrder/showInfo.vue              |   62 
 src/assets/index_image/index-3.svg                     |   40 
 src/assets/index_image/index-0.svg                     |   35 
 src/views/business/rawMaterialInspection/index.vue     |    6 
 src/components/materialOrder/downFileDialog.vue        |   79 +
 src/router/index.js                                    |   15 
 src/components/materialOrder/unPassRetestResult.vue    |   57 
 src/utils/file.js                                      |   61 
 src/views/business/materialOrder/index.vue             | 1318 +++++++++++++++++
 src/assets/index_image/index-img1.png                  |    0 
 src/components/materialOrder/filesLookVisible.vue      |  224 ++
 src/assets/index_image/index-2.svg                     |   29 
 src/views/business/materialOrder/customsInspection.vue | 2055 ++++++++++++++++++++++++++
 package.json                                           |    4 
 src/utils/date.js                                      |   54 
 src/assets/index_image/index-tip.svg                   |    5 
 src/components/materialOrder/printDialog.vue           |  342 ++++
 20 files changed, 4,582 insertions(+), 6 deletions(-)

diff --git a/package.json b/package.json
index 392d7db..b36963d 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,9 @@
     "js-beautify": "1.13.0",
     "js-cookie": "3.0.1",
     "jsencrypt": "3.0.0-rc.1",
+    "mammoth": "^1.9.0",
     "nprogress": "0.2.0",
+    "print-js": "^1.6.0",
     "quill": "2.0.2",
     "screenfull": "5.0.2",
     "sortablejs": "1.10.2",
@@ -73,6 +75,8 @@
     "eslint": "7.15.0",
     "eslint-plugin-vue": "7.2.0",
     "lint-staged": "10.5.3",
+    "postcss": "^8.5.2",
+    "postcss-loader": "^8.1.1",
     "runjs": "4.4.2",
     "sass": "1.32.13",
     "sass-loader": "10.1.1",
diff --git a/src/assets/index_image/index-0.svg b/src/assets/index_image/index-0.svg
new file mode 100644
index 0000000..11130cc
--- /dev/null
+++ b/src/assets/index_image/index-0.svg
@@ -0,0 +1,35 @@
+<svg width="56" height="56" viewBox="0 0 56 56" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2005_2)">
+<rect x="4.12708" y="0.143372" width="47.8167" height="47.5224" rx="12" fill="white"/>
+</g>
+<rect x="5.67254" y="1.97473" width="46.4545" height="46.1686" rx="12" fill="url(#paint0_linear_2005_2)"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M35.7324 24.2329C35.9755 24.259 36.2165 24.2981 36.4553 24.3503C36.6942 24.4024 36.9295 24.4673 37.1614 24.5449C37.3933 24.6225 37.6202 24.7124 37.8424 24.8146C38.0646 24.9167 38.2806 25.0306 38.4905 25.1561C38.7003 25.2816 38.9029 25.4181 39.098 25.5655C39.2932 25.7129 39.4798 25.8704 39.658 26.038C39.8362 26.2056 40.0048 26.3823 40.1639 26.5681V14.9371C40.1639 14.8435 40.1593 14.7501 40.1502 14.6569C40.141 14.5638 40.1273 14.4713 40.1091 14.3795C40.0909 14.2877 40.0682 14.197 40.041 14.1074C40.0139 14.0178 39.9824 13.9298 39.9467 13.8433C39.9109 13.7568 39.871 13.6723 39.8269 13.5897C39.7828 13.5072 39.7348 13.427 39.6829 13.3491C39.6309 13.2713 39.5753 13.1962 39.516 13.1238C39.4567 13.0515 39.394 12.9822 39.3278 12.916C39.2617 12.8498 39.1925 12.787 39.1203 12.7276C39.048 12.6682 38.973 12.6125 38.8952 12.5605C38.8175 12.5085 38.7374 12.4605 38.6549 12.4163C38.5725 12.3722 38.488 12.3322 38.4017 12.2964C38.3153 12.2606 38.2273 12.229 38.1379 12.2019C38.0484 12.1747 37.9578 12.152 37.8661 12.1337C37.7744 12.1154 37.682 12.1017 37.589 12.0926C37.4959 12.0834 37.4026 12.0788 37.3091 12.0788H18.9172C18.8237 12.0788 18.7304 12.0834 18.6373 12.0926C18.5442 12.1017 18.4518 12.1154 18.36 12.1337C18.2683 12.152 18.1777 12.1747 18.0882 12.2019C17.9987 12.2291 17.9107 12.2606 17.8243 12.2964C17.7379 12.3323 17.6534 12.3723 17.571 12.4164C17.4885 12.4606 17.4083 12.5087 17.3306 12.5607C17.2528 12.6128 17.1778 12.6685 17.1055 12.7279C17.0332 12.7873 16.964 12.8501 16.8978 12.9164C16.8317 12.9826 16.769 13.0519 16.7097 13.1243C16.6504 13.1967 16.5947 13.2719 16.5428 13.3498C16.4909 13.4276 16.4428 13.5079 16.3988 13.5905C16.3547 13.6731 16.3148 13.7576 16.2791 13.8442C16.2433 13.9307 16.2119 14.0188 16.1847 14.1084C16.1576 14.198 16.135 14.2888 16.1168 14.3806C16.0986 14.4725 16.0849 14.565 16.0758 14.6582C16.0667 14.7514 16.0621 14.8448 16.0622 14.9385V33.3501C16.0622 33.4438 16.0668 33.5372 16.0759 33.6304C16.0851 33.7235 16.0988 33.8161 16.1171 33.9079C16.1353 33.9997 16.158 34.0905 16.1852 34.1801C16.2124 34.2697 16.2438 34.3577 16.2797 34.4442C16.3154 34.5307 16.3554 34.6153 16.3995 34.6978C16.4436 34.7804 16.4917 34.8606 16.5436 34.9385C16.5956 35.0163 16.6513 35.0914 16.7106 35.1638C16.77 35.2362 16.8327 35.3054 16.8989 35.3716C16.9651 35.4378 17.0343 35.5006 17.1066 35.56C17.1789 35.6194 17.254 35.6751 17.3318 35.7271C17.4096 35.7791 17.4897 35.8271 17.5722 35.8712C17.6547 35.9153 17.7392 35.9553 17.8256 35.9911C17.912 36.0269 18 36.0583 18.0895 36.0855C18.179 36.1126 18.2697 36.1353 18.3614 36.1535C18.4532 36.1718 18.5456 36.1854 18.6386 36.1946C18.7317 36.2037 18.825 36.2082 18.9186 36.2082H30.6025C30.4142 36.0489 30.2351 35.8798 30.0652 35.701C29.8953 35.5221 29.7356 35.3346 29.5861 35.1384C29.4365 34.9421 29.2981 34.7383 29.1708 34.527C29.0434 34.3157 28.9279 34.098 28.8242 33.8741C28.7205 33.6502 28.6293 33.4213 28.5505 33.1874C28.4717 32.9535 28.4058 32.7161 28.3529 32.475C28.2999 32.234 28.2602 31.9908 28.2337 31.7454C28.2071 31.5 28.194 31.2539 28.1943 31.0071C28.1943 27.2426 31.2417 24.1941 35.0011 24.1941C35.2456 24.1938 35.4894 24.2067 35.7324 24.2329Z" fill="url(#paint1_linear_2005_2)"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M20.9402 16.7728C20.9605 16.7237 20.9854 16.677 21.0149 16.6328C21.0444 16.5886 21.0779 16.5478 21.1155 16.5102C21.153 16.4726 21.1938 16.4391 21.238 16.4095C21.2821 16.38 21.3287 16.3551 21.3777 16.3347C21.4268 16.3144 21.4773 16.2991 21.5294 16.2887C21.5815 16.2783 21.634 16.2731 21.6871 16.2731H34.5408C34.5939 16.2731 34.6465 16.2783 34.6985 16.2887C34.7506 16.2991 34.8012 16.3144 34.8502 16.3347C34.8992 16.3551 34.9458 16.38 34.99 16.4095C35.0341 16.4391 35.0749 16.4726 35.1125 16.5102C35.15 16.5478 35.1835 16.5886 35.213 16.6328C35.2425 16.677 35.2674 16.7237 35.2877 16.7727C35.308 16.8218 35.3234 16.8725 35.3337 16.9246C35.3441 16.9767 35.3493 17.0293 35.3493 17.0825C35.3493 17.1356 35.3441 17.1882 35.3337 17.2404C35.3234 17.2925 35.308 17.3431 35.2877 17.3922C35.2674 17.4413 35.2425 17.4879 35.213 17.5321C35.1835 17.5763 35.15 17.6172 35.1125 17.6548C35.0749 17.6923 35.0341 17.7259 34.99 17.7554C34.9458 17.7849 34.8992 17.8099 34.8502 17.8302C34.8012 17.8505 34.7506 17.8659 34.6985 17.8763C34.6465 17.8866 34.5939 17.8918 34.5408 17.8918H21.6871C21.634 17.8918 21.5815 17.8866 21.5294 17.8763C21.4773 17.8659 21.4268 17.8505 21.3777 17.8302C21.3287 17.8099 21.2821 17.7849 21.238 17.7554C21.1938 17.7259 21.153 17.6923 21.1155 17.6548C21.0779 17.6172 21.0444 17.5763 21.0149 17.5321C20.9854 17.4879 20.9605 17.4413 20.9402 17.3922C20.9199 17.3431 20.9046 17.2925 20.8942 17.2404C20.8839 17.1882 20.8787 17.1356 20.8787 17.0825C20.8787 17.0293 20.8839 16.9767 20.8942 16.9246C20.9046 16.8725 20.9199 16.8218 20.9402 16.7728Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M28.039 21.9784C28.0186 22.0275 27.9937 22.0742 27.9643 22.1184C27.9348 22.1625 27.9013 22.2034 27.8637 22.241C27.8262 22.2786 27.7854 22.3121 27.7412 22.3417C27.6971 22.3712 27.6505 22.3961 27.6014 22.4164C27.5524 22.4368 27.5019 22.4521 27.4498 22.4625C27.3977 22.4729 27.3452 22.4781 27.2921 22.4781H21.6871C21.634 22.4781 21.5815 22.4729 21.5294 22.4625C21.4773 22.4521 21.4268 22.4368 21.3777 22.4164C21.3287 22.3961 21.2821 22.3712 21.238 22.3417C21.1938 22.3121 21.153 22.2786 21.1155 22.241C21.0779 22.2034 21.0444 22.1625 21.0149 22.1184C20.9854 22.0742 20.9605 22.0275 20.9402 21.9784C20.9199 21.9293 20.9046 21.8787 20.8942 21.8266C20.8839 21.7745 20.8787 21.7219 20.8787 21.6687C20.8787 21.6156 20.8839 21.5629 20.8942 21.5108C20.9046 21.4587 20.9199 21.4081 20.9402 21.359C20.9605 21.3099 20.9854 21.2633 21.0149 21.2191C21.0444 21.1749 21.0779 21.134 21.1155 21.0964C21.153 21.0588 21.1938 21.0253 21.238 20.9958C21.2821 20.9662 21.3287 20.9413 21.3777 20.921C21.4268 20.9006 21.4773 20.8853 21.5294 20.8749C21.5815 20.8646 21.634 20.8594 21.6871 20.8594H27.2921C27.3452 20.8594 27.3977 20.8646 27.4498 20.8749C27.5019 20.8853 27.5524 20.9006 27.6014 20.921C27.6505 20.9413 27.6971 20.9662 27.7412 20.9958C27.7854 21.0253 27.8262 21.0588 27.8637 21.0964C27.9013 21.134 27.9348 21.1749 27.9643 21.2191C27.9937 21.2633 28.0186 21.3099 28.039 21.359C28.0593 21.4081 28.0746 21.4587 28.085 21.5108C28.0953 21.5629 28.1005 21.6156 28.1005 21.6687C28.1005 21.7219 28.0953 21.7745 28.085 21.8266C28.0746 21.8787 28.0593 21.9293 28.039 21.9784Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M35.0013 36.2034C37.868 36.2034 40.1916 33.8768 40.1916 31.0069C40.1916 28.1369 37.868 25.8104 35.0013 25.8104C32.1347 25.8104 29.8108 28.137 29.8108 31.0069C29.8108 33.8768 32.1347 36.2034 35.0013 36.2034Z" fill="url(#paint2_linear_2005_2)"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M37.1379 33.4866C37.097 33.5035 37.0549 33.5163 37.0116 33.5249C36.9682 33.5335 36.9244 33.5378 36.8802 33.5378C36.836 33.5378 36.7922 33.5335 36.7489 33.5249C36.7055 33.5163 36.6634 33.5035 36.6225 33.4866C36.5817 33.4698 36.5428 33.4491 36.506 33.4245C36.4692 33.4 36.4351 33.3722 36.4038 33.341L34.5234 31.4592C34.4564 31.3921 34.4059 31.3142 34.3718 31.2256C34.3377 31.137 34.3231 31.0453 34.3278 30.9504V28.2597C34.3278 28.2154 34.3321 28.1715 34.3407 28.1281C34.3494 28.0846 34.3621 28.0425 34.3791 28.0016C34.396 27.9606 34.4167 27.9218 34.4413 27.8849C34.4659 27.8481 34.4938 27.8141 34.5251 27.7827C34.5564 27.7514 34.5904 27.7235 34.6272 27.6989C34.664 27.6743 34.7028 27.6535 34.7437 27.6365C34.7845 27.6196 34.8267 27.6068 34.87 27.5982C34.9134 27.5895 34.9572 27.5852 35.0015 27.5852C35.0457 27.5852 35.0895 27.5895 35.1329 27.5982C35.1763 27.6068 35.2184 27.6196 35.2593 27.6365C35.3001 27.6535 35.339 27.6743 35.3757 27.6989C35.4125 27.7235 35.4465 27.7514 35.4778 27.7827C35.5091 27.8141 35.537 27.8481 35.5616 27.8849C35.5862 27.9218 35.6069 27.9606 35.6239 28.0016C35.6408 28.0425 35.6536 28.0846 35.6622 28.1281C35.6708 28.1715 35.6751 28.2154 35.6751 28.2597V30.7039L37.3566 32.3873C37.3878 32.4187 37.4156 32.4528 37.4401 32.4896C37.4645 32.5264 37.4852 32.5653 37.5021 32.6062C37.5189 32.6471 37.5316 32.6893 37.5402 32.7327C37.5488 32.7761 37.5531 32.8199 37.5531 32.8641C37.5531 32.9084 37.5488 32.9522 37.5402 32.9956C37.5316 33.039 37.5189 33.0811 37.5021 33.122C37.4852 33.1629 37.4645 33.2018 37.4401 33.2386C37.4156 33.2755 37.3878 33.3096 37.3566 33.341C37.3253 33.3722 37.2912 33.4 37.2544 33.4245C37.2176 33.4491 37.1788 33.4698 37.1379 33.4866Z" fill="white"/>
+<defs>
+<filter id="filter0_d_2005_2" x="0.127075" y="0.143372" width="55.8167" height="55.5223" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="4"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.862745 0 0 0 0 0.870588 0 0 0 0 0.929412 0 0 0 1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2005_2"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2005_2" result="shape"/>
+</filter>
+<linearGradient id="paint0_linear_2005_2" x1="8.21777" y1="5.01184" x2="47.9203" y2="46.5991" gradientUnits="userSpaceOnUse">
+<stop stop-color="#6C9BFF" stop-opacity="0.2"/>
+<stop offset="0.925" stop-color="#6C9BFF" stop-opacity="0"/>
+</linearGradient>
+<linearGradient id="paint1_linear_2005_2" x1="28.1131" y1="12.0788" x2="28.1131" y2="36.2082" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FD5F1C"/>
+<stop offset="1" stop-color="#F3A00D"/>
+</linearGradient>
+<linearGradient id="paint2_linear_2005_2" x1="35.0012" y1="25.8104" x2="35.0012" y2="36.2034" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FD5F1C"/>
+<stop offset="1" stop-color="#F3A00D"/>
+</linearGradient>
+</defs>
+</svg>
diff --git a/src/assets/index_image/index-1.svg b/src/assets/index_image/index-1.svg
new file mode 100644
index 0000000..cb69211
--- /dev/null
+++ b/src/assets/index_image/index-1.svg
@@ -0,0 +1,36 @@
+<svg width="57" height="56" viewBox="0 0 57 56" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_1975_1517)">
+<rect x="4.97668" y="0.143372" width="47.8167" height="47.5223" rx="12" fill="white"/>
+</g>
+<rect x="6.52209" y="1.97479" width="46.4546" height="46.1686" rx="12" fill="url(#paint0_linear_1975_1517)"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M39.8137 27.6419V13.3541C39.8137 12.6282 39.2775 12.1434 38.4689 12.1434H18.3214C17.5158 12.1434 16.9767 12.6282 16.9767 13.3541V33.9366C16.9767 34.6625 17.5128 35.1473 18.3214 35.1473H31.3527C30.6818 34.3009 30.2775 33.2107 30.2775 32.1205C30.2775 29.0937 32.964 26.6722 36.3215 26.6722C37.5314 26.6722 38.7385 27.0365 39.6789 27.6419H39.8137Z" fill="url(#paint1_linear_1975_1517)"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M35.6506 17.5917C35.6506 17.956 35.381 18.1971 34.9797 18.1971H21.5441C21.1398 18.1971 20.8732 17.956 20.8732 17.5917C20.8732 17.2274 21.1427 16.9863 21.5441 16.9863H34.9797C35.384 16.9863 35.6506 17.2274 35.6506 17.5917Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M35.6506 23.6453C35.6506 24.0096 35.381 24.2507 34.9797 24.2507H21.5441C21.1398 24.2507 20.8732 24.0096 20.8732 23.6453C20.8732 23.2837 21.1427 23.04 21.5441 23.04H34.9797C35.384 23.04 35.6506 23.2811 35.6506 23.6453Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M20.8761 29.699C20.8761 29.3347 21.1456 29.0936 21.4122 29.0936H28.5313C28.8009 29.0936 29.0675 29.3347 29.0675 29.699C29.0675 30.0633 28.7979 30.3044 28.5313 30.3044H21.4122C21.1427 30.3044 20.8761 30.0633 20.8761 29.699Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M36.3068 36.1411C38.9523 36.2188 40.9767 34.2741 40.9767 32.0294C40.9621 29.7285 38.967 27.99 36.6613 27.9177C33.966 27.8347 32.0529 29.7847 31.9796 31.8606C31.8888 34.3223 34.0246 36.0741 36.3068 36.1411Z" fill="url(#paint2_linear_1975_1517)"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M35.1495 34.0036L33.503 32.4982C33.503 32.4982 33.2218 32.1205 33.5616 31.8446C33.9044 31.566 34.2413 31.8446 34.2413 31.8446L35.4776 32.9776L38.7062 30.0178C38.7062 30.0178 39.0284 29.7446 39.3859 30.0499C39.7462 30.358 39.4298 30.6928 39.4298 30.6928L35.8204 33.9928C35.5743 34.2178 35.3575 34.1937 35.1495 34.0036Z" fill="white"/>
+<defs>
+<filter id="filter0_d_1975_1517" x="0.976685" y="0.143372" width="55.8167" height="55.5223" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="4"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.862745 0 0 0 0 0.870588 0 0 0 0 0.929412 0 0 0 1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1975_1517"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1975_1517" result="shape"/>
+</filter>
+<linearGradient id="paint0_linear_1975_1517" x1="9.06733" y1="5.0119" x2="48.7698" y2="46.5993" gradientUnits="userSpaceOnUse">
+<stop stop-color="#6C9BFF" stop-opacity="0.2"/>
+<stop offset="0.925" stop-color="#6C9BFF" stop-opacity="0"/>
+</linearGradient>
+<linearGradient id="paint1_linear_1975_1517" x1="28.3952" y1="12.1434" x2="28.3952" y2="35.1473" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FD5F1C"/>
+<stop offset="1" stop-color="#F3A00D"/>
+</linearGradient>
+<linearGradient id="paint2_linear_1975_1517" x1="36.4768" y1="27.9152" x2="36.4768" y2="36.1433" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FD5F1C"/>
+<stop offset="1" stop-color="#F3A00D"/>
+</linearGradient>
+</defs>
+</svg>
diff --git a/src/assets/index_image/index-2.svg b/src/assets/index_image/index-2.svg
new file mode 100644
index 0000000..0ee6e0a
--- /dev/null
+++ b/src/assets/index_image/index-2.svg
@@ -0,0 +1,29 @@
+<svg width="57" height="56" viewBox="0 0 57 56" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2005_3)">
+<rect x="4.82629" y="0.143372" width="47.8167" height="47.5223" rx="12" fill="white"/>
+</g>
+<rect x="6.3717" y="1.97479" width="46.4546" height="46.1686" rx="12" fill="url(#paint0_linear_2005_3)"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M28.8263 36.1434C35.459 36.1434 40.8263 30.7761 40.8263 24.1434C40.8263 17.5106 35.459 12.1434 28.8263 12.1434C22.1936 12.1434 16.8263 17.5106 16.8263 24.1434C16.8263 30.7761 22.1936 36.1434 28.8263 36.1434Z" fill="url(#paint1_linear_2005_3)"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M28.8917 27.8961C29.6772 27.8961 30.3317 28.5288 30.3317 29.2925C30.3317 30.0779 29.6772 30.6888 28.8917 30.6888C28.1063 30.6888 27.4517 30.0561 27.4517 29.2925C27.4517 28.5288 28.0844 27.8961 28.8917 27.8961Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M28.87 26.7615C28.6736 26.7615 28.5209 26.6306 28.4773 26.4561C28.15 25.9106 27.7573 24.3179 27.5173 22.4197C27.3427 21.0888 27.2991 19.867 27.3427 19.0597C27.3427 18.9942 27.3209 18.907 27.3209 18.8415C27.3209 18.0124 28.0191 17.3361 28.87 17.3361C29.4154 17.3361 29.8954 17.6197 30.1791 18.0342C30.2445 18.0779 30.2882 18.1652 30.3318 18.3179C30.3973 18.4924 30.4191 18.667 30.4191 18.8415V18.9506C30.5063 19.7797 30.4409 21.0233 30.2663 22.4197C30.0263 24.3615 29.6118 25.9761 29.2627 26.4997C29.1973 26.6524 29.0445 26.7615 28.87 26.7615Z" fill="white"/>
+<defs>
+<filter id="filter0_d_2005_3" x="0.826294" y="0.143372" width="55.8167" height="55.5223" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="4"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.862745 0 0 0 0 0.870588 0 0 0 0 0.929412 0 0 0 1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2005_3"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2005_3" result="shape"/>
+</filter>
+<linearGradient id="paint0_linear_2005_3" x1="8.91693" y1="5.0119" x2="48.6194" y2="46.5993" gradientUnits="userSpaceOnUse">
+<stop stop-color="#6C9BFF" stop-opacity="0.2"/>
+<stop offset="0.925" stop-color="#6C9BFF" stop-opacity="0"/>
+</linearGradient>
+<linearGradient id="paint1_linear_2005_3" x1="28.8263" y1="12.1434" x2="28.8263" y2="36.1434" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FD5F1C"/>
+<stop offset="1" stop-color="#F3A00D"/>
+</linearGradient>
+</defs>
+</svg>
diff --git a/src/assets/index_image/index-3.svg b/src/assets/index_image/index-3.svg
new file mode 100644
index 0000000..950711b
--- /dev/null
+++ b/src/assets/index_image/index-3.svg
@@ -0,0 +1,40 @@
+<svg width="57" height="56" viewBox="0 0 57 56" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2005_4)">
+<rect x="4.6759" y="0.143372" width="47.8167" height="47.5223" rx="12" fill="white"/>
+</g>
+<rect x="6.22131" y="1.97479" width="46.4546" height="46.1686" rx="12" fill="url(#paint0_linear_2005_4)"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M18.2898 36.1024C18.1608 36.0752 18.0355 36.0351 17.9139 35.982C17.7924 35.9289 17.6769 35.8639 17.5675 35.7869C17.4581 35.7099 17.3569 35.6225 17.2639 35.5245C17.1708 35.4266 17.0877 35.32 17.0145 35.2049C16.9414 35.0897 16.8796 34.9682 16.8292 34.8402C16.7787 34.7123 16.7406 34.5804 16.7148 34.4446C16.6891 34.3087 16.6761 34.1715 16.6759 34.033V16.7809C16.6759 16.6424 16.6887 16.5051 16.7144 16.3692C16.7401 16.2333 16.7781 16.1014 16.8285 15.9733C16.8789 15.8453 16.9406 15.7237 17.0138 15.6085C17.0869 15.4933 17.17 15.3867 17.2631 15.2887C17.3562 15.1907 17.4575 15.1032 17.5669 15.0262C17.6764 14.9493 17.7919 14.8843 17.9136 14.8312C18.0352 14.7782 18.1605 14.7382 18.2897 14.7111C18.4188 14.6841 18.5492 14.6706 18.6808 14.6706H22.675V17.1967H25.0749V14.6711H32.2754V17.1972H34.6763V14.6716H38.671C38.8026 14.6716 38.933 14.6852 39.0621 14.7122C39.1912 14.7392 39.3166 14.7793 39.4382 14.8323C39.5599 14.8853 39.6754 14.9503 39.7849 15.0273C39.8943 15.1043 39.9956 15.1918 40.0887 15.2898C40.1817 15.3877 40.2649 15.4943 40.338 15.6096C40.4111 15.7248 40.4729 15.8464 40.5233 15.9744C40.5736 16.1024 40.6117 16.2344 40.6374 16.3703C40.663 16.5062 40.6759 16.6434 40.6759 16.782V34.0341C40.6756 34.1726 40.6626 34.3097 40.6368 34.4455C40.6109 34.5812 40.5728 34.7131 40.5223 34.841C40.4719 34.9688 40.41 35.0903 40.3369 35.2054C40.2637 35.3205 40.1806 35.427 40.0876 35.5249C39.9945 35.6228 39.8933 35.7102 39.7839 35.7871C39.6746 35.8641 39.5591 35.9291 39.4376 35.9821C39.3161 36.0352 39.1908 36.0753 39.0618 36.1024C38.9328 36.1296 38.8026 36.1432 38.671 36.1434H18.6808C18.5492 36.1432 18.4189 36.1295 18.2898 36.1024Z" fill="url(#paint1_linear_2005_4)"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M32.1848 31.5297V28.8917H20.6567V31.5297H32.1848Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M36.6958 27.309V24.671H20.6567V27.309H36.6958Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M33.6884 23.0882V20.4503H20.6567V23.0882H33.6884Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M25.0753 12.1434V14.6695H22.6755V12.1434H25.0753Z" fill="url(#paint2_linear_2005_4)"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M34.6757 12.1434V14.6695H32.2759V12.1434H34.6757Z" fill="url(#paint3_linear_2005_4)"/>
+<defs>
+<filter id="filter0_d_2005_4" x="0.675903" y="0.143372" width="55.8167" height="55.5223" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="4"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.862745 0 0 0 0 0.870588 0 0 0 0 0.929412 0 0 0 1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2005_4"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2005_4" result="shape"/>
+</filter>
+<linearGradient id="paint0_linear_2005_4" x1="8.76654" y1="5.0119" x2="48.469" y2="46.5993" gradientUnits="userSpaceOnUse">
+<stop stop-color="#6C9BFF" stop-opacity="0.2"/>
+<stop offset="0.925" stop-color="#6C9BFF" stop-opacity="0"/>
+</linearGradient>
+<linearGradient id="paint1_linear_2005_4" x1="28.6759" y1="14.6706" x2="28.6759" y2="36.1434" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FD5F1C"/>
+<stop offset="1" stop-color="#F3A00D"/>
+</linearGradient>
+<linearGradient id="paint2_linear_2005_4" x1="23.8754" y1="12.1434" x2="23.8754" y2="14.6695" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FD5F1C"/>
+<stop offset="1" stop-color="#F3A00D"/>
+</linearGradient>
+<linearGradient id="paint3_linear_2005_4" x1="33.4758" y1="12.1434" x2="33.4758" y2="14.6695" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FD5F1C"/>
+<stop offset="1" stop-color="#F3A00D"/>
+</linearGradient>
+</defs>
+</svg>
diff --git a/src/assets/index_image/index-img1.png b/src/assets/index_image/index-img1.png
new file mode 100644
index 0000000..864f380
--- /dev/null
+++ b/src/assets/index_image/index-img1.png
Binary files differ
diff --git a/src/assets/index_image/index-tip.svg b/src/assets/index_image/index-tip.svg
new file mode 100644
index 0000000..4fc5a12
--- /dev/null
+++ b/src/assets/index_image/index-tip.svg
@@ -0,0 +1,5 @@
+<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M10.2789 3.62915C11.0487 2.29582 12.9732 2.29582 13.743 3.62915L20.6712 15.6292C21.441 16.9625 20.4788 18.6292 18.9392 18.6292H5.08278C3.54318 18.6292 2.58093 16.9625 3.35073 15.6292L10.2789 3.62915Z" fill="#FF3838"/>
+<rect x="11.011" y="5.88599" width="2" height="6.9216" rx="1" fill="white"/>
+<circle cx="12.011" cy="14.5852" r="1" fill="white"/>
+</svg>
diff --git a/src/components/materialOrder/dataLookVisible.vue b/src/components/materialOrder/dataLookVisible.vue
new file mode 100644
index 0000000..79aceca
--- /dev/null
+++ b/src/components/materialOrder/dataLookVisible.vue
@@ -0,0 +1,162 @@
+<template>
+  <div>
+    <el-dialog title="鏁版嵁鏌ョ湅" :visible.sync="isShow" width="80%" @closed="$emit('closeDataLook')">
+      <ul class="tab">
+        <li v-for="(m,i) in dataVisibleTitle" :key="i" :class="{active:i===dataVisibleIndex}" @click="handleDataVisibleTab(m,i)">{{m.label}}</li>
+      </ul>
+      <div style="height: 70vh;overflow-y: auto;">
+        <ValueTable ref="ValueTableDataLook" :url="$api.insOrder.selectSampleAndProductByOrderId"
+                    :key="upIndex"
+                    :componentData="componentDataDataLook"/>
+      </div>
+    </el-dialog>
+    <un-pass-retest-result :retestVisible="retestVisible" :retestInfo="retestInfo" @closeRetestLook="closeRetestLook" v-if="retestVisible"></un-pass-retest-result>
+  </div>
+</template>
+
+<script>
+import ValueTable from "@/components/Table/value-table.vue";
+import UnPassRetestResult from "./unPassRetestResult.vue";
+
+export default {
+  name: "dataLookVisible",
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {UnPassRetestResult, ValueTable},
+  props: {
+    dataDialogVisible: {
+      type: Boolean,
+      default: () => false
+    },
+    dataLookInfo: {
+      type: Object,
+      default: () => {}
+    },
+  },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      upIndex: 0,
+      isShow: this.dataDialogVisible,
+      dataVisibleTitle: [
+        {
+          label: '杩涘巶妫�楠�',
+          value: 0
+        },
+        {
+          label: '瀛e害妫�楠�',
+          value: 1
+        },
+      ],
+      dataVisibleIndex: 0, // 鏁版嵁鏌ョ湅tab鏍忛�夋嫨鍊�
+      // 琛ㄦ牸鏁版嵁
+      componentDataDataLook: { // 鏁扮粍鏌ョ湅鐨則able鏁版嵁
+        entity: {
+          id: null,
+        },
+        isIndex: false,
+        showSelect: false,
+        select: false,
+        do: [
+          {
+            id: '',
+            font: '涓嶅悎鏍煎娴嬫煡鐪�',
+            type: 'text',
+            method: 'getRetestResult',
+            disabFun: (row, index) =>  {
+              return row.insResult!=0
+            }
+          }
+        ],
+        tagField: {
+          insState: {
+            select: []
+          },
+          insResult: {
+            select: [{
+              value: 1,
+              label: '鍚堟牸',
+              type: 'success'
+            },{
+              value: 0,
+              label: '涓嶅悎鏍�',
+              type: 'danger'
+            },{
+              value: 3,
+              label: '涓嶅垽瀹�',
+              type: ''
+            }]
+          }
+        },
+        selectField: {},
+        requiredAdd: [],
+        requiredUp: []
+      },
+      retestVisible: false,
+      retestInfo: []
+    }
+  },
+  mounted() {
+    this.refreshTable()
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    // 鍒囨崲鏁版嵁鏌ョ湅tab鏍�
+    handleDataVisibleTab (m, i) {
+      this.dataVisibleIndex = i
+      this.refreshTable()
+    },
+    // 鏌ヨ鍥炶皟
+    refreshTable(e) {
+      if (this.dataVisibleIndex === 0) {
+        this.componentDataDataLook.entity.id = this.dataLookInfo.enterOrderId
+      } else {
+        this.componentDataDataLook.entity.id = this.dataLookInfo.quarterOrderId
+      }
+      this.$nextTick(() => {
+        this.$refs['ValueTableDataLook'].selectList(e)
+      })
+    },
+    // 鏌ョ湅涓嶅悎鏍煎娴嬬粨鏋�
+    getRetestResult (row) {
+      this.$axios.get(this.$api.insOrder.getRetestResult+'?insProductId='+row.insProductId).then(res => {
+        if (res.code == 201) return
+        this.retestVisible = true
+        this.retestInfo = res.data
+      })
+    },
+    closeRetestLook () {
+      this.retestVisible = false
+    },
+  },
+}
+</script>
+
+<style scoped>
+.tab {
+  list-style-type: none;
+  display: flex;
+  margin-bottom: 12px;
+}
+
+.tab li {
+  line-height: 24px;
+  padding: 6px 14px;
+  font-size: 14px;
+  color: #333333;
+  border: 1px solid #EEEEEE;
+  cursor: pointer;
+}
+
+.tab li:nth-child(1) {
+  border-radius: 8px 0 0 8px;
+}
+
+.tab li:nth-child(2) {
+  border-radius: 0 8px 8px 0;
+}
+
+.tab li.active {
+  border-color: #3A7BFA;
+  color: #3A7BFA;
+}
+</style>
diff --git a/src/components/materialOrder/downFileDialog.vue b/src/components/materialOrder/downFileDialog.vue
new file mode 100644
index 0000000..6ff5627
--- /dev/null
+++ b/src/components/materialOrder/downFileDialog.vue
@@ -0,0 +1,79 @@
+<template>
+  <div>
+    <el-dialog title="鎶ュ憡鏌ョ湅涓嬭浇" :visible.sync="isShow" width="500px" @closed="$emit('closeDownFileDialog')">
+      <div style="margin-bottom: 18px">
+        <span style="font-size: 16px;">杩涘巶妫�楠屾姤鍛婁笅杞�</span>
+        <i class="el-icon-paperclip" style="color:#409EFF;margin-left: 6px"></i>
+        <el-link :underline="false" style="vertical-align: bottom;font-size: 16px;"
+                 :disabled="!downLoadInfo.enterUrls && !downLoadInfo.enterUrl"
+                 type="primary" @click="downLoad0">鏌ョ湅</el-link>
+      </div>
+      <div>
+        <span  style="font-size: 16px;">瀛e害妫�楠屾姤鍛婁笅杞�</span>
+        <i class="el-icon-paperclip" style="color:#409EFF;margin-left: 6px"></i>
+        <el-link :underline="false" style="vertical-align: bottom;font-size: 16px;"
+                 :disabled="!downLoadInfo.quarterUrls && !downLoadInfo.quarterUrl"
+                 type="primary" @click="downLoad1">鏌ョ湅</el-link>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import ValueTable from "@/components/Table/value-table.vue";
+
+export default {
+  name: "downFileDialog",
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {ValueTable},
+  props: {
+    downFileDialogVisible: {
+      type: Boolean,
+      default: () => false
+    },
+    downLoadInfo: {
+      type: Object,
+      default: () => {}
+    },
+  },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      isShow: this.downFileDialogVisible,
+    }
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    // 杩涘巶妫�楠屾姤鍛婁笅杞�
+    downLoad0 () {
+      let url = this.downLoadInfo.enterUrlS ? this.downLoadInfo.enterUrlS : this.downLoadInfo.enterUrl
+      if(url){
+        url = url.split('.')[0]+'.pdf'
+        const link = document.createElement('a');
+        link.href = this.javaApi + url;
+        link.target = '_blank';
+        document.body.appendChild(link);
+        link.click();
+      }
+    },
+    // 瀛e害妫�楠屾姤鍛婁笅杞�
+    downLoad1 () {
+      let url = this.downLoadInfo.quarterUrlS ? this.downLoadInfo.quarterUrlS : this.downLoadInfo.quarterUrl
+      if(url){
+        url = url.split('.')[0]+'.pdf'
+        const link = document.createElement('a');
+        link.href = this.javaApi + url;
+        link.target = '_blank';
+        document.body.appendChild(link);
+        link.click();
+      }
+    }
+  },
+}
+</script>
+
+<style scoped>
+>>> .el-dialog {
+  height: 160px;
+}
+</style>
diff --git a/src/components/materialOrder/filesLookVisible.vue b/src/components/materialOrder/filesLookVisible.vue
new file mode 100644
index 0000000..2ab086f
--- /dev/null
+++ b/src/components/materialOrder/filesLookVisible.vue
@@ -0,0 +1,224 @@
+<template>
+  <div>
+    <el-dialog title="闄勪欢鏌ョ湅" :visible.sync="isShow" width="80%" @closed="$emit('closeFilesLook')">
+      <div style="display: flex;justify-content: space-between;">
+        <ul class="tab">
+          <li v-for="(m,i) in dataVisibleTitle" :key="i" :class="{active:i===dataVisibleIndex}" @click="handleDataVisibleTab(m,i)">{{m.label}}</li>
+        </ul>
+        <el-upload :action="action"
+                   :auto-upload="true"
+                   :data="{orderId: dataVisibleIndex === 0 ? filesLookInfo.enterOrderId : filesLookInfo.quarterOrderId}"
+                   :on-success="handleSuccessUp" :show-file-list="false"
+                   accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' :headers="headers"
+                   :before-upload="beforeUpload"
+                   style="width: 80px !important;"
+                   :on-error="onError" ref='upload'>
+          <el-button size="small" type="primary" style="height: 38px">闄勪欢涓婁紶</el-button>
+        </el-upload>
+      </div>
+      <div style="height: 70vh;overflow-y: auto;" v-if="filesDialogVisible">
+        <ValueTable ref="fileList"
+                    :url="$api.insOrderPlan.getFileList"
+                    :delUrl="$api.insOrderPlan.delfile"
+                    class="value-table"
+                    :key="upIndex"
+                    :componentData="componentData"/>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import ValueTable from "@/components/Table/value-table.vue";
+import file from "@/utils/file";
+
+export default {
+  name: "filesLookVisible",
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {ValueTable},
+  props: {
+    filesDialogVisible: {
+      type: Boolean,
+      default: () => false
+    },
+    filesLookInfo: {
+      type: Object,
+      default: () => {}
+    },
+  },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      upIndex: 0,
+      isShow: this.filesDialogVisible,
+      dataVisibleTitle: [
+        {
+          label: '杩涘巶妫�楠�',
+          value: 0
+        },
+        {
+          label: '瀛e害妫�楠�',
+          value: 1
+        },
+      ],
+      dataVisibleIndex: 0, // tab鏍忛�夋嫨鍊�
+      componentData: {
+        entity: {
+          insOrderId:''
+        },
+        isIndex: true,
+        showSelect: false,
+        select: false,
+        sort: false,
+        init:false,
+        do: [
+          {
+            id: 'parent',
+            font: '涓嬭浇',
+            type: 'text',
+            method: 'handleDown'
+          },{
+            id: 'delete',
+            font: '鍒犻櫎',
+            type: 'text',
+            method: 'doDiy',
+          }
+        ],
+        isPage: false,
+        linkEvent: {},
+        tagField: {
+          type:{
+            select:[
+              {
+                value: 1,
+                label: '鍥剧墖'
+              },
+              {
+                value: 2,
+                label: '鏂囦欢'
+              }
+            ]
+          }
+        },
+        currentId: '',
+        selectField: {},
+        requiredAdd: [],
+        requiredUp: []
+      },
+
+    }
+  },
+  mounted() {
+    this.refreshTable()
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    // 鍒囨崲鏁版嵁鏌ョ湅tab鏍�
+    handleDataVisibleTab (m, i) {
+      this.dataVisibleIndex = i
+      this.refreshTable()
+    },
+    // 鏌ヨ鍥炶皟
+    refreshTable(e) {
+      if (this.dataVisibleIndex === 0) {
+        this.componentData.entity.insOrderId = this.filesLookInfo.enterOrderId
+      } else {
+        this.componentData.entity.insOrderId = this.filesLookInfo.quarterOrderId
+      }
+      this.$nextTick(() => {
+        this.$refs['fileList'].selectList(e)
+      })
+    },
+    handleDown(row){
+      this.$axios.post(this.$api.insOrderPlan.downFile, {
+        id: row.id,
+      }).then(res => {
+        if (res.code === 200) {
+          let url = '';
+          if(res.data.type==1){
+            url = this.javaApi+'/img/'+res.data.fileUrl
+            file.downloadIamge(url,row.fileName)
+          }else{
+            url = this.javaApi+'/word/'+res.data.fileUrl
+            const link = document.createElement('a');
+            link.href = url;
+            link.download = row.fileName;
+            link.click();
+          }
+        }
+      }).catch(error => {
+
+      })
+    },
+    handleSuccessUp(response, ) {
+      this.upLoading = false;
+      if (response.code == 200) {
+        this.$message.success('涓婁紶鎴愬姛');
+        this.$refs.fileList.selectList()
+      }
+    },
+    beforeUpload(file) {
+      let flag = true
+      if (this.dataVisibleIndex === 0 && !this.filesLookInfo.enterOrderId) {
+        this.$message.warning('娌℃湁鐩稿簲鐨勬楠屼换鍔�')
+        return
+      } else if (this.dataVisibleIndex === 1 && !this.filesLookInfo.quarterOrderId) {
+        this.$message.warning('娌℃湁鐩稿簲鐨勬楠屼换鍔�')
+        return
+      }
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+        this.$refs.upload.clearFiles()
+        flag = false
+      }
+      if (!flag) {
+        return Promise.reject(flag); //姝g‘鐨勭粓姝�
+      }
+    },
+    onError(err, file, fileList) {
+      this.$message.error('涓婁紶澶辫触')
+      this.$refs.upload.clearFiles()
+    },
+  },
+  computed: {
+    headers() {
+      return {
+        'token': sessionStorage.getItem('token')
+      }
+    },
+    action() {
+      return this.javaApi + this.$api.insOrderPlan.uploadFile
+    }
+  },
+}
+</script>
+
+<style scoped>
+.tab {
+  list-style-type: none;
+  display: flex;
+  margin-bottom: 12px;
+}
+
+.tab li {
+  line-height: 24px;
+  padding: 6px 14px;
+  font-size: 14px;
+  color: #333333;
+  border: 1px solid #EEEEEE;
+  cursor: pointer;
+}
+
+.tab li:nth-child(1) {
+  border-radius: 8px 0 0 8px;
+}
+
+.tab li:nth-child(2) {
+  border-radius: 0 8px 8px 0;
+}
+
+.tab li.active {
+  border-color: #3A7BFA;
+  color: #3A7BFA;
+}
+</style>
diff --git a/src/components/materialOrder/printDialog.vue b/src/components/materialOrder/printDialog.vue
new file mode 100644
index 0000000..9889033
--- /dev/null
+++ b/src/components/materialOrder/printDialog.vue
@@ -0,0 +1,342 @@
+<template>
+  <div>
+    <el-dialog title="鏍囩鎵撳嵃" :visible.sync="isShow" width="600px" top="5vh" @close="$emit('closePrintDialog')">
+      <div style="width:100%;height: 400px;overflow-y: auto;text-align: left">
+        <div class="dia_body">
+          <el-checkbox
+            style="margin: 10px 5px;"
+            :indeterminate="isIndeterminate"
+            v-model="checkAll"
+            @change="handleCheckAllChange">鍏ㄩ��</el-checkbox>
+          <el-checkbox-group @change="changePrintCode()" v-model="checkIndexList">
+            <el-card class="box-card" v-for="(item, i) in barcodeData" :key="i" style="margin-bottom: 15px; font-size: 16px !important;">
+              <el-checkbox :label="i" :key="i" style="position: relative;top:0;left:10px"><br></el-checkbox>
+              <div>
+                <div class="titleH1" style="text-align: center; margin-bottom: 2px;font-size: 16px">妫�娴嬩腑蹇冩牱鍝佹爣璇嗗崱</div>
+                <div style="text-align: center;">
+                  <barcode :value="item.barcode" :height="34" :width="2" :displayValue="false"></barcode>
+                </div>
+                <div style="margin-left: 20px;text-align: left">
+                  <div class="item">
+                    <span class="full-title">鏉愭枡鍚嶇О</span>:
+                    <span class="info">{{ item.sampleName }}</span>
+                  </div>
+                  <div class="item">
+                    <span class="full-title">鏉愭枡鍘傚</span>:
+                    <span class="info">{{ item.supplierName }}</span>
+                  </div>
+                  <div class="item2">
+                    <span class="full-title">瑙勬牸鍨嬪彿</span>:
+                    <span class="info">{{ item.partDesc }}</span>
+                  </div>
+                  <div class="item">
+                    <span class="full-title">濮旀墭鏃ユ湡</span>:
+                    <span class="info">{{ item.sendTime }}</span>
+                  </div>
+                  <div class="item">
+                    <span class="full-title">濮旀墭浜�</span>:
+                    <span class="info2">{{ item.prepareUser }}</span>
+                    <span class="full-title">妫�娴嬬紪鍙�</span>:
+                    <span class="info">{{ item.entrustCode }}</span>
+                  </div>
+                  <div class="item">
+                    <span class="full-title">鏍峰搧鏁伴噺</span>:
+                    <span class="info2">{{ item.sampleNumber }}</span>
+                    <span class="full-title">鏍峰搧鏍囪瘑</span>:
+                    <span class="info">{{ item.color }}</span>
+                  </div>
+                  <div style="font-weight: bold;display: flex;align-items: center;">
+                    <span class="full-title">鏍峰搧鐘舵��</span>:
+                    <el-radio-group v-model="item.labelStatus" style="margin-top: 7px;margin-left: 4px;" v-removeAriaHidden>
+                      <el-radio label="0" style="font-weight: bold;margin-right: 7px;">寰呮</el-radio>
+                      <el-radio label="1" style="font-weight: bold;margin-right: 7px;">鍦ㄦ</el-radio>
+                      <el-radio label="2" style="font-weight: bold;margin-right: 7px;">宸叉</el-radio>
+                    </el-radio-group>
+                    <span>
+                      <el-radio style="margin-left: 14px;margin-top: 3px;"
+                                @click.native.prevent="changeIsLeave(item)"
+                                :label="true" size="small" v-model="item.isLeave">鐣欐牱</el-radio>
+                    </span>
+                  </div>
+                </div>
+              </div>
+            </el-card>
+          </el-checkbox-group>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-row>
+          <el-button @click="$emit('closePrintDialog')">鍙� 娑�</el-button>
+          <el-button type="primary" @click="submitPrint">鎵� 鍗�</el-button>
+        </el-row>
+      </span>
+    </el-dialog>
+    <div class="el-dialog-body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 20px;right: 10px;z-index: 99999;">
+      <div id="printOrder" class="printOrder" ref="printOrder">
+        <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i" style="font-size: 0.29cm !important;font-weight: 700;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;">
+          <div>
+            <div class="titleH1" style="text-align: center;margin-bottom: 1px">妫�娴嬩腑蹇冩牱鍝佹爣璇嗗崱</div>
+            <div style="text-align: center;">
+              <barcode :value="item.barcode" :height="22" :width="1.6" :displayValue="false"></barcode>
+            </div>
+            <div style="margin-left: 12px;text-align: left">
+              <div class="item">
+                <span class="full-title4">鏉愭枡鍚嶇О:</span>
+                <span class="info4">{{ item.sampleName }}</span>
+              </div>
+              <div class="item">
+                <span class="full-title2">鏉愭枡鍘傚</span>:
+                <span class="info">{{ item.supplierName }}</span>
+              </div>
+              <div class="item2">
+                <span class="full-title4">瑙勬牸鍨嬪彿:</span>
+                <span class="info4">{{ item.partDesc }}</span>
+              </div>
+              <div class="item">
+                <span class="full-title2">濮旀墭鏃ユ湡</span>:
+                <span class="info">{{ item.sendTime }}</span>
+              </div>
+              <div class="item">
+                <span class="full-title2">濮旀墭浜�</span>:
+                <span class="info3">{{ item.prepareUser }}</span>
+                <span class="full-title2">妫�娴嬬紪鍙�</span>:
+                <span class="info">{{ item.entrustCode }}</span>
+              </div>
+              <div class="item">
+                <span class="full-title2">鏍峰搧鏁伴噺</span>:
+                <span class="info3">{{ item.sampleNumber }}</span>
+                <span class="full-title2">鏍峰搧鏍囪瘑</span>:
+                <span class="info">{{ item.color }}</span>
+              </div>
+              <div>
+                <span class="full-title2">鏍峰搧鐘舵��</span>:
+                <span style="white-space: nowrap;margin-left: 2px">
+                  寰呮<span class="scor" v-if="item.labelStatus!='0'"></span><span class="checked" v-if="item.labelStatus=='0'">鈭�</span>
+                  鍦ㄦ<span class="scor" v-if="item.labelStatus!='1'"></span><span class="checked" v-if="item.labelStatus=='1'">鈭�</span>
+                  宸叉<span class="scor" v-if="item.labelStatus!='2'"></span><span class="checked" v-if="item.labelStatus=='2'">鈭�</span>
+                  鐣欐牱<span class="scor" v-if="!item.isLeave"></span><span class="checked" v-if="item.isLeave">鈭�</span>
+                </span>
+              </div>
+            </div>
+          </div>
+        </el-card>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import PrintJS from "print-js";
+
+export default {
+  name: "printDialog",
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {},
+  props: {
+    printDialog: {
+      type: Boolean,
+      default: () => false
+    },
+  },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      isShow: this.printDialog,
+      loadPint:false,
+      isIndeterminate:false, // 澶氶�夋鏍峰紡
+      checkAll: false,
+      checkIndexList:[], // 閫夋嫨瑕佹墦鍗扮殑鏁版嵁
+      barcodeData: [],
+      printLoading: false,
+      checkDataList: []
+    }
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    // 鑾峰彇瑕佹墦鍗扮殑鏁版嵁
+    getLabelPrinting(selection){
+      try {
+        this.loadPint = true;
+        let ids = []
+        selection.map(m=> {
+          ids.push(m.id)
+        })
+        this.$axios.post(this.$api.materialInspection.printLabel,{
+          ids: ids
+        },{
+          headers: {
+            'Content-Type': 'application/json'
+          },
+          noQs:true
+        }).then(res => {
+          if (res.code === 200 && res.data.length > 0) {
+            res.data.forEach(item => {
+              console.log('item---', item)
+              item.sendTime = item.sendTime && item.sendTime.substring(0, 10)
+              item.sampleNumber = item.qtyArrived + item.buyUnitMeas
+              this.$set(item, 'barcode', item.entrustCode)
+              this.$set(item, 'isLeave', item.labelStatus === '2')
+            })
+            this.barcodeData = res.data
+          }
+        })
+      } catch (e) {
+        console.log('鑾峰彇瑕佹墦鍗扮殑鏁版嵁---', e)
+      }
+
+    },
+    changeIsLeave (item) {
+      const index = this.barcodeData.findIndex(val => val.entrustCode === item.entrustCode)
+      if (index > -1) {
+        this.barcodeData[index].isLeave = !this.barcodeData[index].isLeave
+      }
+    },
+    // 鍏ㄩ�夊閫夋鍥炶皟
+    handleCheckAllChange(val) {
+      if(val){
+        for(var i=0;i<this.barcodeData.length;i++){
+          this.checkIndexList.push(i)
+        }
+        this.checkDataList = this.barcodeData
+      }else{
+        this.checkIndexList = []
+        this.checkDataList = []
+      }
+      this.isIndeterminate = false;
+    },
+    changeType (type) {
+      type = type === '1' ? '0' : '1'
+    },
+    //閫夋嫨瑕佹墦鍗扮殑浜岀淮鐮�
+    changePrintCode(){
+      let indexList = this.checkIndexList
+      let arr = []
+      indexList.forEach(i=>{
+        if (i !== undefined) {
+          arr.push(this.barcodeData[i])
+        }
+      })
+      console.log('arr---', arr)
+      this.checkDataList = arr
+    },
+    // 鎻愪氦鎵撳嵃
+    submitPrint(){
+      if(this.checkDataList.length < 1){
+        this.$message.warning("璇烽�夋嫨瑕佹墦鍗扮殑鏉″舰鐮�")
+        return
+      }
+      this.printDialogVisible = false;
+      PrintJS({
+        targetStyles: ["*"], // 浣跨敤dom鐨勬墍鏈夋牱寮忥紝寰堥噸瑕�
+        printable: 'printOrder',//椤甸潰
+        type: "html",//鏂囨。绫诲瀷
+        maxWidth:360,
+        header: '',
+        style:
+          `@page {
+            margin: 0.4cm;
+            margin-right: 0.4cm;
+            margin-top: 0.4cm;
+            margin-bottom: 0.4cm;
+            padding-bottom: 0px;
+            size: 400px 75px collapse;
+          }
+          html{
+            zoom:100%;
+
+          }
+          @media print{
+            width: 400px;
+            height: 75px;
+            margin:0;
+          }`,
+        onPrintDialogClose: this.erexcel=false,
+        font_size: '0.29cm',
+      });
+    },
+  },
+  watch:{
+    printDialog(newVal){
+      if(!newVal){
+        this.barcodeData = []
+        this.checkIndexList = []
+        this.checkDataList = []
+        this.isIndeterminate = true;
+      }
+    }
+  },
+}
+</script>
+
+<style scoped>
+.item {
+  margin-bottom: 4px;
+}
+.item2 {
+  margin-bottom: 8px;
+  vertical-align: top;
+}
+.full-title {
+  display: inline-block;
+  width: 80px;
+  text-align-last: justify;
+}
+.full-title2 {
+  display: inline-block;
+  width: 50px;
+  text-align-last: justify;
+}
+.full-title4 {
+  display: inline-block;
+  width: 53px;
+  text-align-last: justify;
+  vertical-align: top;
+}
+.info {
+  margin-left: 2px;
+}
+.info2 {
+  margin-left: 2px;
+  margin-right: 30px;
+  width: 80px;
+  display: inline-block;
+}
+.info3 {
+  margin-left: 2px;
+  margin-right: 30px;
+  width: 50px;
+  display: inline-block;
+}
+.info4 {
+  display: inline-block;
+  margin-left: 2px;
+  white-space: normal;
+  width: 260px;
+}
+.checkboxInfo {
+  display: inline-block;
+  margin-left: 10px;
+}
+.scor{
+  width: 0.06cm;
+  height: 0.06cm;
+  border-radius: 1px;
+  border: 1px solid #000;
+  display: inline-block;
+  margin-right: 14px;
+  margin-left: 4px;
+}
+.checked {
+  margin-right: 14px;
+  margin-left: 4px;
+}
+>>> .el-checkbox {
+  margin-right: 10px;
+}
+>>> .el-card {
+  border: none;
+}
+>>>.el-card__body {
+  padding: 4px 2px 6px 14px;
+}
+</style>
diff --git a/src/components/materialOrder/showInfo.vue b/src/components/materialOrder/showInfo.vue
new file mode 100644
index 0000000..1a902e7
--- /dev/null
+++ b/src/components/materialOrder/showInfo.vue
@@ -0,0 +1,62 @@
+<template>
+  <div>
+    <el-dialog title="浜т笟閾句俊鎭�" :visible.sync="isShow" width="600px" @close="$parent.showInfoDialog = false">
+      <div class="info" v-for="item in infoLIst" :key="item.fieldNameCn">
+        <span class="title">{{item.fieldNameCn}}</span>锛�
+        <span class="information">{{item.fieldNameValue}}</span>
+      </div>
+      <div class="info" v-if="infoLIst.length === 0">
+        <span>鏆傛棤浜т笟閾炬暟鎹�</span>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "showInfo",
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {},
+  props: {
+    showInfoDialog: {
+      type: Boolean,
+      default: () => false
+    },
+  },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      isShow: this.showInfoDialog,
+      infoLIst: []
+    }
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    getInfo (id) {
+      console.log('id----', id)
+      this.$axios.get(this.$api.rawMaterialOrder.getIndustryChain + '?id=' + id).then(res => {
+        if (res.code === 200 && res.data !== null) {
+          this.infoLIst = JSON.parse(res.data)
+          console.log('this.infoLIst----', this.infoLIst)
+        }
+      })
+    }
+  },
+}
+</script>
+
+<style scoped>
+.info {
+  margin: 6px 0;
+}
+.title {
+  display: inline-block;
+  width: 100px;
+  text-align-last: justify;
+  font-size: 16px;
+  font-weight: 600;
+}
+.information {
+  font-size: 16px;
+}
+</style>
diff --git a/src/components/materialOrder/unPassRetestResult.vue b/src/components/materialOrder/unPassRetestResult.vue
new file mode 100644
index 0000000..22f0f7a
--- /dev/null
+++ b/src/components/materialOrder/unPassRetestResult.vue
@@ -0,0 +1,57 @@
+<template>
+  <div>
+    <el-dialog
+      title="涓嶅悎鏍煎娴嬫煡鐪�"
+      :visible.sync="isShow"
+      @closed="$emit('closeRetestLook')"
+      width="40%">
+      <el-table
+        :data="retestInfo"
+        border
+        style="width: 100%">
+        <el-table-column type="index" label="澶嶆祴娆℃暟" align="center" width="100">
+        </el-table-column>
+        <el-table-column prop="tell" label="璇曢獙瑕佹眰" width="120">
+        </el-table-column>
+        <el-table-column prop="lastValue" label="妫�楠岀粨鏋�" width="120">
+        </el-table-column>
+        <el-table-column prop="insResult" label="缁撴灉鍒ゅ畾">
+          <template slot-scope="scope">
+            <el-tag type="danger" v-if="scope.row.insResult === 0" disable-transitions>涓嶅悎鏍�</el-tag>
+            <el-tag type="success" v-if="scope.row.insResult === 1" disable-transitions>鍚堟牸</el-tag>
+            <el-tag v-if="scope.row.insResult === 3" disable-transitions>涓嶅垽瀹�</el-tag>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "unPassRetestResult",
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {},
+  props: {
+    retestVisible: {
+      type: Boolean,
+      default: () => false
+    },
+    retestInfo: {
+      type: Array,
+      default: () => []
+    }
+  },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      isShow: this.retestVisible,
+    }
+  },
+  // 鏂规硶闆嗗悎
+  methods: {},
+}
+</script>
+
+<style scoped>
+</style>
diff --git a/src/router/index.js b/src/router/index.js
index c157664..ff5cbc1 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -93,9 +93,24 @@
 // 鍔ㄦ�佽矾鐢憋紝鍩轰簬鐢ㄦ埛鏉冮檺鍔ㄦ�佸幓鍔犺浇
 export const dynamicRoutes = [
   {
+    // 鍘熸潗鏂欐姤妫�
     path: '/business/rawMaterialInspection',
     component: Layout,
+  },
+  {
+    // 鍘熸潗鏂欐楠屼笅鍗�
+    path: '/business/materialOrder',
+    component: Layout,
     hidden: true,
+    children: [
+      {
+        // 閾滃崟涓濅笅鍗�
+        path: '/customsInspection',
+        component: () => import('@/views/business/materialOrder/customsInspection'),
+        name: '閾滃崟涓濅笅鍗�',
+        meta: { title: '閾滃崟涓濅笅鍗�', activeMenu: '/business/materialOrder' }
+      }
+    ]
   },
   {
     path: '/system/user-auth',
diff --git a/src/utils/date.js b/src/utils/date.js
new file mode 100644
index 0000000..3f4a780
--- /dev/null
+++ b/src/utils/date.js
@@ -0,0 +1,54 @@
+/**
+ * 鑾峰彇骞存湀鏃�
+ */
+export function getYearAndMonthAndDays(date=new Date()) {
+  let year = date.getFullYear()
+  let month = date.getMonth() + 1
+  if (month < 10) {
+    month = '0' + month + '-'
+  } else {
+    month = month + '-'
+  }
+  year = year + '-'
+  let days = date.getDate()
+  if (days < 10) {
+    days = '0' + days
+  } else {
+    days = days
+  }
+  return (year + month + days)
+}
+/**
+ * 鏃ユ湡鏍煎紡鍖�
+ */
+export function dateFormat(date, format = 'yyyy-MM-dd hh:mm:ss') {
+  if (date !== 'Invalid Date') {
+    var o = {
+      'M+': date.getMonth() + 1, // month
+      'd+': date.getDate(), // day
+      'h+': date.getHours(), // hour
+      'm+': date.getMinutes(), // minute
+      's+': date.getSeconds(), // second
+      'q+': Math.floor((date.getMonth() + 3) / 3), // quarter
+      S: date.getMilliseconds() // millisecond
+    }
+    if (/(y+)/.test(format)) {
+      format = format.replace(
+        RegExp.$1,
+        (date.getFullYear() + '').substr(4 - RegExp.$1.length)
+      )
+    }
+    for (var k in o) {
+      if (new RegExp('(' + k + ')').test(format)) {
+        format = format.replace(
+          RegExp.$1,
+          RegExp.$1.length === 1
+            ? o[k]
+            : ('00' + o[k]).substr(('' + o[k]).length)
+        )
+      }
+    }
+    return format
+  }
+  return ''
+}
\ No newline at end of file
diff --git a/src/utils/file.js b/src/utils/file.js
new file mode 100644
index 0000000..c3a3e7b
--- /dev/null
+++ b/src/utils/file.js
@@ -0,0 +1,61 @@
+import { convertToHtml } from 'mammoth';
+import Vue from 'vue'
+
+export default {
+  async convertFileToHtml(url) {
+    var xhr = new XMLHttpRequest();
+    xhr.open('GET', Vue.prototype.javaApi+url, true);//鑾峰彇鏂囦欢娴佺殑鎺ュ彛
+    xhr.send();
+    xhr.responseType = "blob";//涓嶈兘婕�
+    let xhrPromise = new Promise((resolve, reject) => {
+      xhr.onload = async function () {
+        if (this.status === 200) {
+          // 杩斿洖鐨勬枃浠舵祦锛岃浆鎹㈡垚blob瀵硅薄
+          var blob = new Blob([this.response],{ type:'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
+          // 浣跨敤mammoth灏哤ord杞崲涓篐TML
+          let reader = new FileReader();
+          reader.readAsArrayBuffer(blob);
+          let htmlContentPromise = new Promise((resolve, reject) => {
+            reader.onload = async function () {
+              var arrayBuffer = xhr.response; //arrayBuffer
+              const result = await convertToHtml({ arrayBuffer: arrayBuffer })
+              let html = result.value.replace(/飪�/g, '')
+              .replace('<h1>', '<h1 style="text-align: center;">')
+              .replace(/<table>/g, '<table style="border-collapse: collapse;border: 1px solid #000;">')
+              .replace(/<tr>/g, '<tr style="height: 30px;">')
+              .replace(/<td>/g, '<td style="border: 1px solid #000;">')
+              .replace(/<p>/g, '<p style="text-indent: 2em;">')
+              .replace(/<a [^>]*>/g, "")
+              .replace(/<\/a>/g, "")
+              // .replace(/em/g, "cm");
+              resolve(html)
+            };
+          })
+          resolve(await htmlContentPromise)
+        }
+
+      }
+    })
+    return await xhrPromise
+  },
+  downloadIamge(imgsrc, name) {//涓嬭浇鍥剧墖鍦板潃鍜屽浘鐗囧悕
+    var image = new Image();
+    // 瑙e喅璺ㄥ煙 Canvas 姹℃煋闂
+    image.setAttribute("crossOrigin", "anonymous");
+    image.onload = function() {
+      var canvas = document.createElement("canvas");
+      canvas.width = image.width;
+      canvas.height = image.height;
+      var context = canvas.getContext("2d");
+      context.drawImage(image, 0, 0, image.width, image.height);
+      var url = canvas.toDataURL("image/png"); //寰楀埌鍥剧墖鐨刡ase64缂栫爜鏁版嵁
+
+      var a = document.createElement("a"); // 鐢熸垚涓�涓猘鍏冪礌
+      var event = new MouseEvent("click"); // 鍒涘缓涓�涓崟鍑讳簨浠�
+      a.download = name || "photo"; // 璁剧疆鍥剧墖鍚嶇О
+      a.href = url; // 灏嗙敓鎴愮殑URL璁剧疆涓篴.href灞炴��
+      a.dispatchEvent(event); // 瑙﹀彂a鐨勫崟鍑讳簨浠�
+    };
+    image.src = imgsrc;
+  }
+};
diff --git a/src/views/business/materialOrder/customsInspection.vue b/src/views/business/materialOrder/customsInspection.vue
new file mode 100644
index 0000000..b51607c
--- /dev/null
+++ b/src/views/business/materialOrder/customsInspection.vue
@@ -0,0 +1,2055 @@
+<template>
+  <div class="ins_order_add">
+    <div>
+      <el-row class="title">
+        <el-col :span="active > 1 && isShowTab ? 5 : 6" style="padding-left: 20px;text-align: left;">閲囪喘璁㈠崟淇℃伅</el-col>
+        <el-col v-if="active > 1 && isShowTab" :span="4" style="text-align: left;margin-top: 12px">
+          <ul class="tab">
+            <li v-for="(m,i) in dataTitle" :key="i" :class="{active:i===dataIndex}" @click="handleDataTab(m,i)">{{m.label}}</li>
+          </ul>
+        </el-col>
+        <el-col :span="active > 1  && isShowTab ? 15 : 18" style="text-align: right;">
+          <el-select v-show="active==1" v-model="template" placeholder="涓嬪崟妯℃澘" size="medium" style="margin-right: 10px;"
+                     @change="selectInsOrderTemplateById">
+            <el-option v-for="(a, ai) in templates" :key="ai" :label="a.name" :value="a.id">
+              <span style="float: left">{{ a.name }}</span>
+              <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px"
+                 @click.stop="handleDelete(a)"></i>
+            </el-option>
+          </el-select>
+          <el-button v-show="active==1" size="medium" @click="templateDia=true">
+            <span style="color: #3A7BFA;">淇濆瓨妯℃澘</span>
+          </el-button>
+          <el-button v-show="active==1 && addObj.orderType === '杩涘巶妫�楠�'" :loading="noNeedCheckLoad" size="medium" type="primary" @click="noNeedCheck">鍏嶆</el-button>
+          <el-button v-show="active==1" :loading="saveLoad" size="medium" type="primary" @click="save">鎻愪氦</el-button>
+          <el-button size="medium" @click="$parent.playOrder(0)">
+            <span style="color: #3A7BFA;">杩斿洖</span>
+          </el-button>
+        </el-col>
+      </el-row>
+    </div>
+    <div class="search">
+      <el-form ref="addObj" :inline="true" :model="addObj" :rules="addObjRules" label-width="120px">
+        <el-row>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="閲囪喘璁㈠崟鍙�:">
+              <el-input v-model="addObj.orderNo" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="濮旀墭鍗曚綅:">
+              <el-input v-model="addObj.company" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="鎺ユ敹鏃堕棿:">
+              <el-date-picker
+                v-model="addObj.receiverDate"
+                disabled
+                placeholder="閫夋嫨鏃ユ湡"
+                size="small"
+                style="width: 100%;"
+                type="date"
+                value-format="yyyy-MM-dd">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="闆朵欢鍙�:">
+              <el-input v-model="addObj.partNo" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="鏍峰搧鍚嶇О:">
+              <el-input v-model="addObj.sample" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="鏍峰搧鎬绘暟:">
+              <el-input v-model="addObj.qtyArrived" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="鎶ユ浜�:">
+              <el-input v-model="addObj.declareUser" class="addObj-info" clearable disabled size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="鎵规鍙�:">
+              <el-input v-model="addObj.updateBatchNo" class="addObj-info" clearable disabled size="small"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="鍗曚綅:" prop="buyUnitMeas">
+              <el-input v-model="addObj.buyUnitMeas" class="addObj-info" disabled size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="鎶芥鏁伴噺:" prop="testQuantity">
+              <el-input v-model="addObj.testQuantity" :disabled="active > 1" class="addObj-info"
+                        clearable
+                        placeholder="璇峰~鍐欐娊妫�鏁伴噺" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="妫�楠岀被鍒�:" prop="orderType">
+              <el-select v-model="addObj.orderType" :disabled="active>1 || orderType===1" clearable size="small" style="width: 100%">
+                <el-option v-for="(a, ai) in checkType" :key="ai" :label="a.label" :value="a.value"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="瑙勬牸鍨嬪彿:" placeholder="璇峰~鍐�" prop="partDetail">
+              <el-tooltip :content="addObj.partDetail" :disabled="!addObj.partDetail">
+                <el-input v-model="addObj.partDetail" :disabled="active > 1" class="addObj-info" size="small"></el-input>
+              </el-tooltip>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="绱ф�ョ▼搴�:" placeholder="璇烽�夋嫨" prop="type">
+              <el-select v-model="addObj.type" :disabled="active>1" class="addObj-info" clearable size="small" style="width: 100%">
+                <el-option v-for="(a, ai) in types" :key="ai" :label="a.label" :value="a.value"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="绾﹀畾鏃堕棿:" prop="appointed">
+              <el-date-picker
+                v-model="addObj.appointed"
+                :disabled="active > 1"
+                format="yyyy-MM-dd"
+                placeholder="閫夋嫨鏃ユ湡"
+                size="small"
+                style="width: 100%"
+                type="date"
+                value-format="yyyy-MM-dd">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="addObj-form-item" label="澶囨敞:">
+              <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable
+                        size="small" type="textarea"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+    <div>
+      <div style="display: flex;flex-direction: row;justify-content: space-between;padding: 5px 0;">
+        <div v-if="active==1" style="display: flex;background: transparent;">
+          <div class="search_thing">
+            <div class="search_label">鏍峰搧鍨嬪彿锛�</div>
+            <div class="search_input">
+              <el-select v-model="model" :placeholder="active>1 ? '' : '璇疯緭鍏�'"
+                         allow-create clearable default-first-option filterable
+                         size="small"
+                         @change="changeModel">
+                <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value">
+                </el-option>
+              </el-select>
+            </div>
+          </div>
+          <div class="search_thing">
+            <div class="search_label">妫�楠屾爣鍑嗭細</div>
+            <div class="search_input">
+              <el-select v-model="standardMethodListId" :loading="methodLoad"
+                         :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable size="small"
+                         @change="changeStandardMethodListId" @focus="methodFocus">
+                <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id">
+                </el-option>
+              </el-select>
+            </div>
+          </div>
+        </div>
+        <div class="search_thing">
+          <el-button v-show="active==1" :disabled="sampleList.length === 2" size="medium" type="primary" @click="handleSplitCountNum">鎷嗗垎</el-button>
+        </div>
+      </div>
+
+      <el-table ref="sampleTable" :data="sampleList"
+                border class="el-table sampleTable"
+                highlight-current-row
+                max-height="400px" style="margin-top: 10px;"
+                tooltip-effect="dark"
+                @selection-change="selectSample" @row-click="rowClick">
+        <el-table-column v-if="active==1" :selectable="selectable" type="selection" width="65"></el-table-column>
+        <el-table-column align="center" label="搴忓彿" prop="index" type="index" width="65"></el-table-column>
+        <el-table-column align="center" label="鏍峰搧鍚嶇О" min-width="100" prop="sample">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.sample" :disabled="active>1 || scope.$index !== 0" size="small" @change="(val)=>changeValue(val, 'sample')"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="鏍峰搧缂栧彿" min-width="140" prop="sampleCode">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.sampleCode" :disabled="active>1 || scope.$index !== 0" clearable placeholder="涓嶅~鍐欏垯绯荤粺鑷姩鐢熸垚"
+                      size="small"
+                      @change="(val)=>changeValue(val, 'sampleCode')"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="鏍峰搧鍨嬪彿" min-width="100" prop="model">
+          <template slot-scope="scope">
+            <el-select v-model="scope.row.model" :disabled="active>1 || scope.$index !== 0" allow-create default-first-option filterable
+                       placeholder="鏍峰搧鍨嬪彿" size="small" style="width: 100%;" @change="handleChangeModel">
+              <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value">
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="!(active>1)" align="center" label="鍨嬪彿鍙傛暟" prop="modelNum" width="130">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.modelNum" :disabled="active>1|| scope.$index !== 0" clearable placeholder="闈炲繀濉�"
+                      size="small"
+                      @input="methodChange(scope.row.standardMethodListId, scope.row)"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="妫�楠屾爣鍑�" min-width="100" prop="standardMethodListId">
+          <template slot-scope="scope">
+            <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model==null||active>1|| scope.$index !== 0"
+                       :loading="methodLoad" clearable placeholder="妫�楠屾爣鍑�" size="small"
+                       style="width: 100%;" @change="(value)=>methodChange(value, scope.row)" @clear="productList = []" @focus="methodFocus">
+              <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id">
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="addObj.mating==1" align="center" label="閰嶅鏍峰搧鍚嶇О" prop="joinName" width="140">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.joinName" :autosize="{ minRows: 1, maxRows: 1}" size="small"
+                      type="textarea"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="addObj.mating==1" align="center" label="閰嶅鏍峰搧鍨嬪彿" prop="joinModel" width="140">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.joinModel" :autosize="{ minRows: 1, maxRows: 1}" size="small"
+                      type="textarea"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="addObj.mating==1" align="center" label="閰嶅鏍峰搧鏁伴噺" prop="joinNum" width="140">
+          <template slot-scope="scope">
+            <el-input-number v-model="scope.row.joinNum" :controls="false" :max="100" :min="1" :precision="0"
+                             size="small" style="width: 80%;"></el-input-number>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="寰呮椤规暟閲�" prop="quantity" width="105">
+          <template slot-scope="scope">
+            <el-select v-model="scope.row.quantity" :disabled="active>1|| scope.$index !== 0 || sampleList.length > 1" clearable
+                       size="small">
+              <el-option v-for="item in quantityList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-table ref="productTable" v-loading="getProductLoad" :data="productList"
+                :row-class-name="tableRowClassName" border
+                class="el-table"
+                max-height="400px"
+                style="margin-bottom: 10px;"
+                tooltip-effect="dark"
+                @select="selectOne"
+                @selection-change="selectProduct"
+                @select-all="handleAll">
+        <el-table-column v-if="active==1" :selectable="selectable" type="selection" width="65"></el-table-column>
+        <el-table-column label="妫�楠岄」" min-width="140" prop="inspectionItem" show-overflow-tooltip>
+          <template slot="header" slot-scope="scope">
+            <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px">
+              <span>妫�楠岄」</span>
+              <el-input
+                v-if="active==1"
+                v-model="inspectionItem"
+                placeholder="璇疯緭鍏�"
+                size="mini"
+                @input="searchFilterList"/>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="妫�楠岄」瀛愰」" min-width="140" prop="inspectionItemSubclass"
+                         show-overflow-tooltip>
+          <template slot="header" slot-scope="scope">
+            <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px">
+              <span>妫�楠岄」瀛愰」</span>
+              <el-input
+                v-if="active==1"
+                v-model="inspectionItemSubclass"
+                placeholder="璇疯緭鍏�"
+                size="mini"
+                @input="searchFilterList"/>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="瑕佹眰鍊�" min-width="220px" prop="ask">
+          <template slot-scope="scope">
+            <el-input v-if="active==1&&isAskOnlyRead" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="瑕佹眰鍊�"
+                      size="small" type="textarea"
+                      @change="e=>requestChange(e,scope.row)"></el-input>
+            <span v-else>
+              <template >{{ scope.row.ask }}</template>
+            </span>
+          </template>
+        </el-table-column>
+        <el-table-column label="瑕佹眰鎻忚堪" min-width="220px" prop="tell">
+          <template slot-scope="scope">
+            <el-input v-if="active==1&&isAskOnlyRead" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="瑕佹眰鎻忚堪"
+                      size="small" type="textarea"
+                      @change="e=>requestChange(e,scope.row,'tell')"></el-input>
+            <span v-else>
+                <template >{{ scope.row.tell }}</template>
+              </span>
+          </template>
+        </el-table-column>
+        <el-table-column label="鏉′欢" min-width="140" prop="radius" show-overflow-tooltip></el-table-column>
+        <el-table-column label="璇曢獙鏂规硶" min-width="120" prop="methodS" show-overflow-tooltip>
+          <template slot="header" slot-scope="scope">
+            <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px">
+              <span>璇曢獙鏂规硶</span>
+              <el-input
+                v-if="active==1"
+                v-model="methodS"
+                placeholder="璇疯緭鍏�"
+                size="mini"
+                @input="searchFilterList"/>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="璁¢噺鍗曚綅" prop="unit" show-overflow-tooltip width="100"></el-table-column>
+        <el-table-column label="鍗曚环" prop="price" show-overflow-tooltip width="100"></el-table-column>
+        <el-table-column label="鍖洪棿" min-width="120" prop="section" show-overflow-tooltip></el-table-column>
+        <el-table-column :filter-method="filterHandler" :filters="filters" label="瀛愬疄楠屽" min-width="130" prop="sonLaboratory"
+                         show-overflow-tooltip></el-table-column>
+      </el-table>
+    </div>
+    <!--鐗规畩鍊煎鐞嗘-->
+    <el-dialog :before-close="beforeClose" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
+               :visible.sync="bsm1DiaAll"
+               min-width="400px"
+               title="妫�娴嬪埌鐗规畩椤癸紝璇蜂綔鍑轰互涓嬮�夋嫨">
+      <div v-for="(item, index) in bsm1DiaList" :key="item.id" class="body" style="max-height: 60vh;">
+        <span>{{item.inspectionItem}}</span>
+        <el-row v-if="item.bsm1">
+          <el-col :span="24" class="search_thing" style="height: initial;margin: 5px 0;">
+            <div class="search_label" style="width: 80px;"><span class="required-span">* </span>閫夐」锛�</div>
+            <div class="search_input">
+              <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)">
+                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a" style="margin-bottom: 2px;margin-top: 2px;"></el-radio>
+              </el-radio-group>
+            </div>
+          </el-col>
+          <el-col :span="24" class="search_thing" style="height: initial;margin: 5px 0;">
+            <div class="search_label" style="width: 80px;">瑕佹眰鍊硷細</div>
+            <div class="search_input">
+              <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)">
+                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai"
+                          :label="a">{{JSON.parse(item.bsmRow.askCopy)[ai]}}</el-radio>
+              </el-radio-group>
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-row>
+          <el-button :loading="saveLoad" type="primary" @click="save1">纭� 瀹�</el-button>
+        </el-row>
+      </span>
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false"
+               :show-close="false" :visible.sync="bsm3Dia"
+               title="鍖洪棿鍊煎~鍐�" width="800px">
+      <el-table :data="editTable" height="80vh" style="width: 100%">
+        <!-- inspectionItemList -->
+        <el-table-column label="妫�楠岄」" prop="inspectionItemList" width="180">
+        </el-table-column>
+        <el-table-column label="鏍峰搧缂栧彿" prop="sampleCode" width="180">
+        </el-table-column>
+        <el-table-column label="鏍峰搧鍨嬪彿" prop="model" width="180">
+        </el-table-column>
+        <el-table-column label="璇嗗埆绗﹀彿" prop="symbolItem">
+        </el-table-column>
+        <el-table-column label="璇嗗埆绗﹀��" prop="value">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.value" placeholder="璇疯緭鍏�" size="small" @input="inputValueHandler(scope.row,scope.$index)"></el-input>
+          </template>
+        </el-table-column>
+      </el-table>
+      <span slot="footer" class="dialog-footer">
+        <el-row>
+          <el-button @click="bsm3Dia=false">鍙� 娑�</el-button>
+          <el-button :loading="saveLoad" type="primary" @click="save0">纭� 瀹�</el-button>
+        </el-row>
+      </span>
+    </el-dialog>
+    <el-dialog
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :show-close="false"
+      :visible.sync="dialogVisible"
+      title="鎻愮ず"
+      width="32%">
+      <span>{{ dialogMessage }}</span>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="$parent.playOrder(0)">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :show-close="false"
+      :visible.sync="dialogVisible2"
+      title="鎻愮ず"
+      width="32%">
+      <span>{{ dialogMessage2 }}</span>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="dialogVisible2 = false">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog :visible.sync="templateDia" title="淇濆瓨妯℃澘" width="400px">
+      <div v-if="templateDia" class="body" style="display: flex;align-items: center;">
+        <div class="search_label" style="width: 90px;"><span class="required-span">* </span>妯℃澘鍚嶇О锛�</div>
+        <div class="search_input">
+          <el-input v-model="templateName" clearable size="small"></el-input>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="templateDia = false">鍙� 娑�</el-button>
+        <el-button :loading="templateLoading" type="primary" @click="addTemplateDia">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :show-close="false"
+      :visible.sync="noNeedCheckDia"
+      title="鍏嶆鎻愮ず"
+      width="32%">
+      <span>纭鍏嶆褰撳墠妫�楠屽崟锛�</span>
+      <span slot="footer" class="dialog-footer">
+        <el-button :loading="noNeedCheckLoad" type="primary" @click="handleNoNeedCheck">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import ValueTable from "@/components/Table/value-table.vue";
+
+export default {
+  name: "CustomsInspection",
+  components: {
+    ValueTable,
+  },
+  props: {
+    active: {
+      type: Number,
+      default: () => 0
+    },
+    customsInspection: {
+      type: Object,
+      default: () => {}
+    },
+    currentId: {
+      type: Number,
+      default: () => 0
+    },
+    orderType: {
+      type: Number,
+      default: () => 0
+    },
+    isReport: {
+      type: Number,
+      default: () => null
+    }
+  },
+  data() {
+    return {
+      editTable:[], // 鍖洪棿鐗规畩鍊煎~鍐�
+      template: null,
+      saveLoad: false, // 淇濆瓨鎸夐挳loading
+      noNeedCheckLoad: false, // 鍏嶆鎸夐挳loading
+      addObj: {
+        orderNo: null, // 閲囪喘璁㈠崟鍙�
+        declareUser: null, // 鎶ユ浜�
+        userId: null,
+        type: '0', // 绱ф�ョ▼搴�
+        code: null,
+        remark: null,
+        otcCode: null,
+        mating: 0,
+        updateBatchNo: '', // 鎵瑰彿
+        partNo: '', // 闆朵欢鍙�
+        sample: null, // 鏍峰搧鍚嶇О
+        qtyArrived: '', // 鏍峰搧鎬绘暟
+        testQuantity: '', // 鎶芥鏁伴噺
+        company: '涓ぉ绉戞妧瑁呭鐢电紗鏈夐檺鍏徃', // 濮旀墭鍗曚綅
+        companyId: '1233268751', // 濮旀墭鍗曚綅id
+        receiverDate: '', // 鎺ユ敹鏃堕棿
+        appointed: '', // 绾﹀畾鏃堕棿
+        buyUnitMeas: '', // 鍗曚綅
+        partDetail: '', // 瑙勬牸鍨嬪彿
+        formType: 'Inspection application', // 鏉ユ牱鏂瑰紡
+        laboratory: null,
+        sampleType: null,
+        unit: null,
+        model: null,
+        method: null,
+        processing: 1,
+        isLeave: 0,
+        orderType: null, // 妫�楠岀被鍨�
+        send: 1,
+        engineering: null,
+        engineeringEn: null,
+        production: null,
+        productionEn: null,
+        typeSource: 1,
+        ifsInventoryId: '',
+        sampleStatus: 'In good condition',
+      },
+      addObjRules: { // 琛ㄥ崟鏍¢獙瑙勫垯
+        testQuantity: [
+          { required: true, message: '璇峰~鍐欐娊妫�鏁伴噺', trigger: 'blur' }
+        ],
+        partDetail: [
+          { required: true, message: '璇峰~鍐欓浂浠舵弿杩�', trigger: 'blur' }
+        ],
+        orderType: [
+          { required: true, message: '璇烽�夋嫨妫�楠岀被鍒�', trigger: 'change' }
+        ],
+        type: [
+          { required: true, message: '璇烽�夋嫨绱ф�ョ▼搴�', trigger: 'change' }
+        ],
+        appointed: [
+          { required: true, message: '璇烽�夋嫨绾﹀畾鏃堕棿', trigger: 'change' }
+        ]
+      },
+      sample: {
+        sampleCode: null,
+        laboratory: null,
+        sampleType: null,
+        sample: null,
+        model: null,
+        modelNum: null,
+        quantity: null,
+        isLeave: 0,
+        unit: null
+      },
+      type: [],
+      list: [],
+      selectTree: null,
+      sampleList: [], // 鏍峰搧琛ㄦ牸鏁版嵁
+      sampleIds: [],
+      count: 1,
+      productList: [], // 妫�楠岄」琛ㄦ牸鏁版嵁
+      productList0: [],
+      productIds: [],
+      productListSelected: [],
+      getProductLoad: false,
+      models: [],
+      methods: [],
+      methodLoad: false,
+      filters: [],
+      currentMethod: null,
+      isAskOnlyRead: false,
+      sampleId: null,
+      // total: 0,
+      totalArr: [],
+      model: null,
+      standardMethodListId: null,
+      inspectionItem:null,
+      inspectionItemSubclass:null,
+      methodS:null,
+      codeLevel: '', // 鏍峰搧鎵�鍦ㄧ骇鍒�
+      selectTreeTem: '', // 鏍峰搧鐖剁骇
+      checkType: [], // 妫�楠岀被鍨嬮�夐」鏁版嵁
+      dialogVisible: false,
+      dialogVisible2: false,
+      dialogMessage: '',
+      dialogMessage2: '',
+      templateDia: false, // 淇濆瓨妯$増寮规
+      templateLoading: false, // 淇濆瓨妯$増寮规纭鎸夐挳loading
+      templateName: '', // 淇濆瓨妯$増鍚嶇О
+      templates: [], // 妯$増涓嬫媺妗嗘暟鎹�
+      quantityList: [
+        { label: 1, value: 1},
+        { label: 2, value: 2},
+        { label: 3, value: 3},
+        { label: 4, value: 4},
+        { label: 5, value: 5},
+        { label: 6, value: 6},
+        { label: 7, value: 7},
+        { label: 8, value: 8},
+      ],
+      types: [], // 绱ф�ョ▼搴︿笅鎷夋
+      dataTitle: [
+        {
+          label: '杩涘巶妫�楠�',
+          value: 0
+        },
+        {
+          label: '瀛e害妫�楠�',
+          value: 1
+        },
+      ],
+      dataIndex: 0,
+      isShowTab: false,
+      symbolList:['RTS'],
+      bsm3Dia: false, // 鍖洪棿鍊煎~鍐欏脊妗�
+      bsmRow: {},
+      bsm1: false,
+      bsm1Val: null,
+      bsm1DiaAll: false,
+      bsm1DiaList: [],
+      bsm2Val: null,
+      bsm2Dia: false,
+      bsm2Val2: [],
+      bsm2Val3: [],
+      noNeedCheckDia: false,
+    }
+  },
+  watch: {
+    sampleList() {
+      this.addObj.method = null
+      // this.productList = []
+    },
+    productList: {
+      deep: true,
+      handler(val) {
+        if (val && val.length > 0) {
+          let arr = [];
+          val.forEach(item => {
+            if (item.sonLaboratory && !arr.find(a => a.value == item.sonLaboratory)) {
+              arr.push({
+                text: item.sonLaboratory,
+                value: item.sonLaboratory
+              })
+            }
+          })
+          this.filters = arr
+        }
+      }
+    },
+    'addObj.sample'(val) {
+      this.model = null
+      this.standardMethodListId = null
+    },
+    'addObj.qtyArrived'(val) {
+      this.model = null
+      this.standardMethodListId = null
+    }
+  },
+  mounted() {
+    this.getUserNow() // 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅
+    this.selectCheckType() // 鏌ヨ妫�楠岀被鍨�
+    this.selectStandardMethods() // 鑾峰彇妫�楠屾爣鍑嗕笅鎷夋鏁版嵁
+    this.selectEnumByCategoryForType() // 鑾峰彇绱ф�ョ▼搴︿笅鎷夋
+    this.getInfo() // 鑾峰彇鏁版嵁
+  },
+  methods: {
+    save1 () {
+      if (this.bsm1DiaList.length > 0) {
+        this.bsm1DiaList.forEach(item => {
+          if (!item.bsm1Val) {
+            throw this.$message.error('鐗规畩椤圭洰蹇呴』澶勭悊')
+          }
+        })
+      }
+      this.bsm1DiaAll = false
+    },
+    beforeClose(done) {
+      if (this.bsm1DiaList.length > 0) {
+        this.bsm1DiaList.forEach(item => {
+          if (!item.bsm1Val) {
+            throw this.$message.error('鐗规畩椤圭洰蹇呴』澶勭悊')
+          }
+        })
+      }
+      done()
+    },
+    //鐗规畩鍊煎~鍐欏鐞�
+    inputValueHandler(row,index){
+      if(row){
+        const nextIndex = index+1
+        for (let i = nextIndex; i < this.editTable.length; i++) {
+          const element = this.editTable[i];
+          if(element.model==row.model&&row.symbolItem==element.symbolItem){
+            this.editTable[i].value = row.value
+          }
+        }
+      }
+    },
+    // 鏌ョ湅鏃跺垏鎹ab鏍�
+    handleDataTab (m, i) {
+      this.dataIndex = i
+      this.getInfo()
+    },
+    // 鑾峰彇鏁版嵁
+    getInfo () {
+      if (this.active === 2) {
+        let orderId = ''
+        if (!this.customsInspection.enterOrderId && this.customsInspection.quarterOrderId) {
+          this.isShowTab = false
+          orderId = this.customsInspection.quarterOrderId
+        } else if (!this.customsInspection.quarterOrderId && this.customsInspection.enterOrderId) {
+          this.isShowTab = false
+          orderId = this.customsInspection.enterOrderId
+        } else if (this.customsInspection.enterOrderId && this.customsInspection.quarterOrderId) {
+          this.isShowTab = true
+          orderId = this.dataIndex === 0 ? this.customsInspection.enterOrderId : this.customsInspection.quarterOrderId
+        } else if (!this.customsInspection.enterOrderId && !this.customsInspection.quarterOrderId) {
+          this.isShowTab = false
+          orderId = this.isReport === 1 ? this.customsInspection.insOrderId : this.customsInspection.id
+        }
+        // 鏌ョ湅
+        // 璇锋眰鎺ュ彛锛屽洖鏄炬暟鎹�
+        this.$axios.post(this.$api.insOrder.getInsOrder, {
+          orderId: orderId
+        }).then(res => {
+          if (res.code === 200) {
+            this.addObj = {
+              ...res.data.insOrder
+            }
+            this.addObj.orderNo = res.data.insOrderTemplate.orderNo
+            this.addObj.partNo = res.data.insOrderTemplate.partNo
+            this.addObj.partDetail = res.data.insOrder.partDetail
+            this.addObj.qtyArrived = res.data.insOrderTemplate.qtyArrived
+            this.addObj.receiverDate = res.data.insOrderTemplate.receiverDate
+            this.addObj.declareUser = res.data.insOrderTemplate.declareUser
+            this.addObj.testQuantity = res.data.insOrderTemplate.testQuantity
+            this.addObj.buyUnitMeas = res.data.insOrderTemplate.buyUnitMeas
+            this.addObj.updateBatchNo = res.data.insOrderTemplate.updateBatchNo
+            this.addObj.type = String(this.addObj.type)
+            this.sampleList = this.HaveJson(res.data.sampleProduct)
+            this.getProNum()
+            this.$nextTick(() => {
+              this.$refs.sampleTable.doLayout()
+              if (this.sampleList.length > 0) { // 鏌ョ湅鏃跺鏋滄湁鏍峰搧榛樿閫変腑绗竴鏉�
+                this.productList = this.sampleList[0].insProduct
+                this.$refs.sampleTable.setCurrentRow(this.sampleList[0], true)
+                this.rowClick(this.sampleList[0])
+              }
+            })
+          }
+        })
+      } else {
+        this.$axios.get(this.$api.rawMaterialOrder.notificationRawOrder+'?ifsInventoryId='+this.customsInspection.id).then(res => {
+          if (res.code === 200) {
+            if (res.data === 1) {
+              this.dialogVisible2 = true
+              this.dialogMessage2 = '褰撳墠鎵规鐨勬牱鍝佸凡妫�楠岃繃, 鍙互鍏嶆'
+            } else if (res.data === 2) {
+              this.dialogVisible2 = true
+              this.dialogMessage2 = '褰撳墠鎵规鐨勬牱鍝佸凡瓒�20鍚�, 闇�瑕佸绾у娆℃楠�'
+            }
+          }
+        })
+        // 鎶ユ娴佺▼
+        this.$axios.get(this.$api.materialInspection.selectStandardTreeListByPartNo+'?partNo='+this.customsInspection.partNo).then(res => {
+          if (res.code === 200) {
+            this.addObj.sample = res.data.label
+            this.codeLevel = res.data.code
+            this.addObj.qtyArrived = this.customsInspection.qtyArrived
+            this.addObj.partNo = this.customsInspection.partNo
+            this.addObj.partDetail = this.customsInspection.partDesc
+            this.addObj.receiverDate = this.customsInspection.receiverDate
+            this.addObj.orderNo = this.customsInspection.orderNo
+            this.addObj.declareUser = this.customsInspection.declareUser
+            this.addObj.testQuantity = this.customsInspection.testQuantity
+            this.addObj.buyUnitMeas = this.customsInspection.buyUnitMeas
+            this.addObj.updateBatchNo = this.customsInspection.updateBatchNo
+            if (this.orderType === 1) {
+              this.addObj.orderType = 'Quarterly inspection'
+            }
+            const str = res.data.treeName.split('-')
+            this.selectTreeTem = str.join(' - ')
+            this.selectTree = str.join(' - ')
+            this.addListInfo(this.codeLevel, res.data) // 鍘熸潗鏂欐牱鍝佹槸鍥哄畾鐨勶紝灏遍粯璁よ祴鍊间竴鏉℃暟鎹紝鍙媶鍒�
+            this.selectInsOrderTemplate() // 鍘熸潗鏂欐ā鏉垮垪琛ㄦ煡璇�
+          } else {
+            this.dialogVisible = true
+            this.dialogMessage = res.message
+          }
+        }).catch(err => {
+          console.log('err---', err)
+        })
+      }
+    },
+    // 鏌ヨ妯℃澘-鍙嶆樉妯℃澘
+    selectInsOrderTemplateById(e) {
+      this.$axios.get(this.$api.materialInspection.selectRawMaterOrderTemplateById + '?id=' + e).then(res => {
+        if (res.code == 201) return
+        let obj = JSON.parse(res.data)
+        this.sampleList = obj.sampleList;
+        this.productList = obj.sampleList[0].insProduct
+        this.selectTree = obj.selectTree
+        this.rowClick(this.sampleList[0])
+      })
+    },
+    // 淇濆瓨妯℃澘
+    addTemplateDia() {
+      if (this.templateName) {
+        const sampleList = this.HaveJson(this.sampleList)
+        sampleList.forEach(item => {
+          item.insProduct = this.productList
+        })
+        this.templateLoading = true;
+        this.$axios.post(this.$api.materialInspection.addRawMaterOrderTemplate, {
+          partNo: this.addObj.partNo,
+          name: this.templateName,
+          thing: JSON.stringify({
+            // addObj: this.addObj,
+            sampleList: sampleList,
+            selectTree:this.selectTree
+          })
+        }, {
+          headers: {
+            'Content-Type': 'application/json'
+          }
+        }).then(res => {
+          if (res.code == 201) return
+          this.templateLoading = false;
+          this.templateDia = false;
+          this.$message.success('淇濆瓨鎴愬姛')
+          this.selectInsOrderTemplate()
+          this.templateName = ''
+        })
+      } else {
+        this.$message.error('璇峰~鍐欐ā鏉垮悕绉�')
+      }
+    },
+    // 鍒犻櫎妯℃澘--璋冪敤鎺ュ彛
+    handleDelete(row) {
+      this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      }).then(() => {
+        this.$axios.post(this.$api.materialInspection.delRawMaterOrderTemplate, {
+          id: row.id
+        }).then(res => {
+          if (res.code === 201) {
+            return
+          }
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.selectInsOrderTemplate()
+        }).catch(e => {
+          this.$message.error('鍒犻櫎澶辫触')
+        })
+      }).catch(() => {})
+    },
+    // 鏌ヨ妯℃澘鍒楄〃
+    selectInsOrderTemplate() {
+      this.$axios.get(this.$api.materialInspection.selectRawMaterOrderTemplate+'?partNo='+this.addObj.partNo).then(res => {
+        if (res.code == 201) return
+        this.templates = res.data
+      })
+    },
+    // 鎷嗗垎
+    handleSplitCountNum () {
+      this.sample.joinName = null
+      this.sample.joinModel = null
+      this.sample.joinNum = 1
+      // 涓ゆ潯鏁版嵁淇濇寔涓�鑷�
+      this.sample.sample = this.sampleList[0].sample
+      this.sample.model = this.sampleList[0].model
+      this.sample.unit = this.sampleList[0].unit
+      this.sample.modelNum = this.sampleList[0].modelNum
+      this.sample.standardMethodListId = this.sampleList[0].standardMethodListId
+      this.sample.insProduct = []
+      this.sample.id = this.count
+      this.sample.childSampleList = []
+      this.sample.insulating = null
+      this.sample.sheath = null
+      this.sampleList.push(this.HaveJson(this.sample))
+      this.sampleList.forEach(item => {
+        item.quantity = 1
+      })
+      this.count++
+      this.computationalPairing(this.sampleList.length)
+    },
+    // 妫�楠岄」鍒楄〃绛涢��
+    searchFilterList () {
+      const vtw = {
+        inspectionItem: this.inspectionItem, // 妫�楠岄」
+        inspectionItemSubclass: this.inspectionItemSubclass, // 妫�楠岄」瀛愰」
+        methodS: this.methodS, // 璇曢獙鏂规硶
+      }
+      const isHaveValue = Object.values(vtw).some(item => {
+        return item
+      })
+      this.changeProductList0()
+      if (isHaveValue) {
+        for(let i in vtw) {
+          if (vtw[i]) {
+            this.productList = this.productList0.filter((item) => {
+              return item[i] && item[i].includes(vtw[i])
+            })
+          }
+        }
+      } else {
+        // 娌℃湁鏌ヨ鏉′欢鏃舵覆鏌撴墍鏈夋暟鎹�
+        this.productList = this.productList0
+      }
+    },
+    containsValue(str) {
+      if(str){
+        let symbolItem = ''
+        this.symbolList.some(value =>{
+          if(str.includes(value)){
+            symbolItem  = value
+            return true
+          }
+        })
+        return symbolItem
+      }
+    },
+    // 鎻愪氦鎶ユ鍥炶皟
+    save() {
+      this.$refs['addObj'].validate((valid) => {
+        if (valid) {
+          if (!this.sampleList.every(m => m.standardMethodListId)) {
+            this.$message.error('璇烽�夋嫨妫�楠屾爣鍑�')
+            return
+          }
+          if (!this.sampleList.every(m => m.quantity)) {
+            this.$message.error('璇烽�夋嫨寰呮椤规暟閲�')
+            return
+          }
+          const sampleList = this.HaveJson(this.sampleList)
+          sampleList.forEach(item => {
+            item.insProduct = this.productList
+          })
+          this.getTotal(sampleList)
+          let projectNum = this.totalArr.filter(a => a.state == 1).length
+          if(projectNum==0){
+            this.$confirm('妫�楠岄」鐩负绌猴紝鏄惁纭鎻愪氦?', "鎻愮ず", {
+              confirmButtonText: "纭畾",
+              cancelButtonText: "鍙栨秷",
+              type: "warning"
+            }).then(() => {
+              this.saveMethod(sampleList)
+            }).catch(() => {})
+          }else{
+            let isRTS = this.totalArr.find(a => a.ask != null && this.symbolList.find(b=>a.ask.includes(b)) && a.state == 1)
+            if (isRTS) {
+              this.editTable = this.handleData(sampleList,this.containsValue, 0)
+              this.editTable.forEach(item => {
+                item.value = item.modelNum
+              })
+              this.bsm3Dia = true;
+              return
+            }
+            this.saveMethod(sampleList)
+          }
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    // 鎻愪氦鍖洪棿鍊�
+    save0(){
+      if(this.editTable.every(m=>m.value)){
+        this.sampleList.forEach(item => {
+          item.insProduct = this.productList
+        })
+        let sampleList = this.handleData(this.HaveJson(this.sampleList),this.handleAsk,1)
+        sampleList.forEach(a => {
+          a.insProduct = a.insProduct.filter(b=>b.state === 1)
+        })
+        this.saveMethod(sampleList)
+      }else{
+        this.$message.error('璇峰~鍐欒瘑鍒鍊�')
+      }
+    },
+    noNeedCheck () {
+      this.$refs['addObj'].validate((valid) => {
+        if (valid) {
+          if (!this.sampleList.every(m => m.standardMethodListId)) {
+            this.$message.error('璇烽�夋嫨妫�楠屾爣鍑�')
+            return
+          }
+          // 妫�楠岀被鍨嬩负杩涘巶妫�楠屾椂鍙�夋嫨鍏嶆锛屼絾涓嶈兘閫夋嫨妫�楠岄」
+          const sampleList = this.HaveJson(this.sampleList)
+          sampleList.forEach(item => {
+            item.insProduct = this.productList
+          })
+          this.getTotal(sampleList)
+          let projectNum = this.totalArr.filter(a => a.state == 1).length
+          if (projectNum!=0){
+            this.$message.error('鍏嶆涓嶅彲閫夋嫨妫�楠岄」')
+            return
+          }
+          this.noNeedCheckDia = true
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    handleNoNeedCheck () {
+      // 妫�楠岀被鍨嬩负杩涘巶妫�楠屾椂鍙�夋嫨鍏嶆锛屼絾涓嶈兘閫夋嫨妫�楠岄」
+      const sampleList = this.HaveJson(this.sampleList)
+      sampleList.forEach(item => {
+        item.insProduct = this.productList
+      })
+      this.getTotal(sampleList)
+      const pairing = []
+      let trees = this.selectTree.split(" - ")
+      if (trees.length < 3) {
+        this.$message.error('鏈�夋嫨瀵硅薄')
+        return
+      }
+      this.addObj.factory = trees[0]
+      this.addObj.laboratory = trees[1]
+      this.addObj.sampleType = trees[2]
+      if ((trees[3] === undefined || trees[3] === '') || trees.length === 4) {
+        this.addObj.sample = trees[2]
+      } else {
+        this.addObj.sample = trees[3]
+      }
+      this.addObj.model = (trees[4] == undefined ? null : trees[4])
+      this.addObj.ifsInventoryId = this.customsInspection.id
+      this.noNeedCheckLoad = true
+      this.$axios.post(this.$api.rawMaterialOrder.addExemptionOrder, {
+        str: JSON.stringify({
+          insOrder: this.addObj,
+          list: JSON.stringify(sampleList.map(a => {
+            if (a.modelNum) {
+              // 鏍规嵁x鍙峰垽鏂瀷鍙峰弬鏁颁笌鏍峰搧鍨嬪彿鐨勬嫾鎺ヤ綅缃�
+              // 渚嬪脳4锛屽氨涓�500ML脳4锛�4脳锛屽氨涓�4脳500ML
+              const index = a.modelNum.indexOf('脳')
+              if (index === 0) {
+                a.model = a.model + a.modelNum
+              } else if (index === -1) {
+                a.model = a.model + '-' + a.modelNum
+              } else {
+                a.model = a.modelNum + a.model
+              }
+            } else {
+              a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
+            }
+            a.insProduct = a.insProduct.filter(b=>b.state === 1)
+            return a
+          })),
+          pairing: JSON.stringify(pairing)
+        })
+      }).then(res => {
+        this.noNeedCheckLoad = false
+        if (res.code == 201) return
+        this.noNeedCheckDia = false
+        this.$message.success('宸叉彁浜�')
+        this.$parent.playOrder(0)
+      }).catch(e=>{
+        this.noNeedCheckLoad = false
+      })
+    },
+    saveMethod(sampleList){
+      const pairing = []
+      let trees = this.selectTree.split(" - ")
+      if (trees.length < 3) {
+        this.$message.error('鏈�夋嫨瀵硅薄')
+        return
+      }
+      this.addObj.factory = trees[0]
+      this.addObj.laboratory = trees[1]
+      this.addObj.sampleType = trees[2]
+      if ((trees[3] === undefined || trees[3] === '') || trees.length === 4) {
+        this.addObj.sample = trees[2]
+      } else {
+        this.addObj.sample = trees[3]
+      }
+      this.addObj.model = (trees[4] == undefined ? null : trees[4])
+      this.addObj.ifsInventoryId = this.customsInspection.id
+      this.saveLoad = true
+      this.$axios.post(this.$api.insOrder.addInsOrder, {
+        str: JSON.stringify({
+          insOrder: this.addObj,
+          list: JSON.stringify(sampleList.map(a => {
+            if (a.modelNum) {
+              // 鏍规嵁x鍙峰垽鏂瀷鍙峰弬鏁颁笌鏍峰搧鍨嬪彿鐨勬嫾鎺ヤ綅缃�
+              // 渚嬪脳4锛屽氨涓�500ML脳4锛�4脳锛屽氨涓�4脳500ML
+              const index = a.modelNum.indexOf('脳')
+              if (index === 0) {
+                a.model = a.model + a.modelNum
+              } else if (index === -1) {
+                a.model = a.model + '-' + a.modelNum
+              } else {
+                a.model = a.modelNum + a.model
+              }
+            } else {
+              a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
+            }
+            a.insProduct = a.insProduct.filter(b=>b.state === 1)
+            return a
+          })),
+          pairing: JSON.stringify(pairing)
+        })
+      }).then(res => {
+        this.saveLoad = false
+        if (res.code == 201) return
+        this.$message.success('宸叉彁浜�')
+        this.bsm3Dia = false;
+        this.$parent.playOrder(0)
+      }).catch(e=>{
+        this.saveLoad = false
+      })
+    },
+    handleAsk(ask,symbolItem, value) {
+      try{
+        let code = [">", "<", "=", "锛�", "锛�", "鈮�", "鈮�", "卤", "*", "/"];
+        let code2 = ['+', '*', '/', '-']
+        if (ask.includes('&')) {
+          // 澶氫釜鏉′欢
+          let arr0 = ask.split('&')
+          let arr1 = []
+          arr0.forEach(m => {
+            let index = code.findIndex(b => m.includes(b))
+            if (index > -1) {
+              let arr = m.split(code[index]).filter(b => !!b)
+              let num = eval(this.replaceAll(arr[0], symbolItem, value))
+              m = code[index] + '' + num
+              arr1.push(m)
+            }
+          })
+          return arr1.join('&')
+        } else if (ask.includes('锝�') || ask.includes('~')) {
+          let arr0 = []
+          if (ask.includes('锝�')) {
+            arr0 = ask.split('锝�')
+          } else {
+            arr0 = ask.split('~')
+          }
+          // 澶氫釜鏉′欢
+          let arr1 = []
+          arr0.forEach(m => {
+            m = m.replace(symbolItem, value)
+            const index = code2.findIndex(b => m.includes(b))
+            if (index > -1) {
+              m = eval(m)
+            }
+            arr1.push(m)
+          })
+          return arr1.join('锝�')
+        } else {
+          // 鍗曚釜鏉′欢
+          let index = code.findIndex(b => ask.includes(b))
+          if (index > -1) {
+            let arr = ask.split(code[index]).filter(b => !!b)
+            let num = eval(this.replaceAll(arr[0], symbolItem, value))
+            return code[index] + '' + num
+          }
+        }
+      }catch(e){}
+    },
+    handleData(sampleList,calBack,type){
+      let editTable = []
+      sampleList.forEach(item => {
+        let obj = {
+          sampleCode:item.sampleCode,
+          model:item.model,
+          symbolList:[],
+          sampleId:item.id,
+          modelNum:item.modelNum,
+        }
+        if (item.insProduct && item.insProduct.length > 0) {
+          item.insProduct.forEach(a => {
+            if (a.state == 1) {
+              if(type==0){
+                let str = calBack(a.ask)
+                str&&obj.symbolList.push({
+                  symbolItem:str,
+                  inspectionItem:a.inspectionItem,
+                })
+              }else if(type==1){
+                let arr = this.editTable.filter(b => b.sampleId == item.id)
+                for (var i=0;i<arr.length;i++){
+                  if(a.ask){
+                    if(a.ask.includes(arr[i].symbolItem)){
+                      let ask = calBack(a.ask, arr[i].symbolItem,arr[i].value)
+                      if (ask) {
+                        a.ask = ask
+                      }
+                      let tell = this.handleAsk(a.tell, arr[i].symbolItem,arr[i].value)
+                      if (tell) {
+                        a.tell = tell
+                      }
+                    }
+                  }else{
+                    this.$message.error('瑕佹眰鍊间负绌猴紝闇�瑕佸幓鏍囧噯搴撶淮鎶わ紒')
+                  }
+                }
+              }
+            }
+          })
+        }
+        // 鍏夌氦甯﹂」鐩�
+        if (item.bushing && item.bushing.length > 0) {
+          item.bushing.forEach(a => {
+            if (a.fiber && a.fiber.length > 0) {
+              a.fiber.forEach(b => {
+                if (b.productList && b.productList.length > 0) {
+                  b.productList.forEach(c => {
+                    if (c.state == 1) {
+                      if(type==0){
+                        let str = calBack(c.ask)
+                        str&&obj.symbolList.push({
+                          symbolItem:str,
+                          inspectionItem:c.inspectionItem,
+                        })
+                      }else if(type==1){
+                        let arr = this.editTable.filter(b => b.sampleId == item.id)
+                        arr.forEach(f => {
+                          if(c.ask.includes(f.symbolItem)){
+                            let ask = calBack(c.ask, f.symbolItem,f.value)
+                            if (ask) {
+                              c.ask = ask
+                            }
+                            let tell = this.handleTell(c.tell, f.symbolItem,f.value)
+                            if (tell) {
+                              c.tell = tell
+                            }
+                          }
+                        })
+                      }
+                    }
+                  })
+                }
+              })
+            }
+            if (a.fibers && a.fibers.length > 0) {
+              a.fibers.forEach(b => {
+                if (b.productList && b.productList.length > 0) {
+                  b.productList.forEach(c => {
+                    if (c.state == 1) {
+                      if(type==0){
+                        let str = calBack(c.ask)
+                        str&&obj.symbolList.push({
+                          symbolItem:str,
+                          inspectionItem:c.inspectionItem,
+                        })
+                      }else if(type==1){
+                        // let ask = calBack(c.ask, c.rts)
+                        // if (ask && c.state == 1) {
+                        //   c.ask = csk
+                        // }
+                        let arr = this.editTable.filter(b => b.sampleId == item.id)
+                        arr.forEach(f => {
+                          if(c.ask.includes(f.symbolItem)){
+                            let ask = calBack(c.ask, f.symbolItem,f.value)
+                            if (ask) {
+                              c.ask = ask
+                            }
+                            let tell = this.handleTell(c.tell, f.symbolItem,f.value)
+                            if (tell) {
+                              c.tell = tell
+                            }
+                          }
+                        })
+                      }
+                    }
+                  })
+                }
+                if (b.fiber && b.fiber.length > 0) {
+                  b.fiber.forEach(c => {
+                    if (c.productList && c.productList.length > 0) {
+                      c.productList.forEach(d => {
+                        if (d.state == 1) {
+                          if(type==0){
+                            let str = calBack(d.ask)
+                            str&&obj.symbolList.push({
+                              symbolItem:str,
+                              inspectionItem:d.inspectionItem,
+                            })
+                          }else if(type==1){
+                            // let ask = calBack(d.ask, d.rts)
+                            // if (ask && d.state == 1) {
+                            //   d.ask = ask
+                            // }
+                            let arr = this.editTable.filter(b => b.sampleId == item.id)
+                            arr.forEach(f => {
+                              if(d.ask.includes(f.symbolItem)){
+                                let ask = calBack(d.ask, f.symbolItem,f.value)
+                                if (ask) {
+                                  d.ask = ask
+                                }
+                                let tell = this.handleTell(d.tell, f.symbolItem,f.value)
+                                if (tell) {
+                                  d.tell = tell
+                                }
+                              }
+                            })
+                          }
+                        }
+                      })
+                    }
+                  })
+                }
+              })
+            }
+          })
+        }
+        if(type==0){
+          editTable.push(obj)
+        }
+      })
+      if(type==0){
+        editTable.forEach(a => {
+          a.symbolList.forEach(b => {
+            let arr = a.symbolList.filter(c => c.symbolItem == b.symbolItem);
+            b.inspectionItemList = arr.map(c => c.inspectionItem).join(',')
+          })
+        })
+        editTable.forEach(a => {
+          let mySet = new Set();
+          a.symbolList = a.symbolList.filter(b =>{
+            let num0 = mySet.size;
+            mySet.add(b.symbolItem);
+            let num1 = mySet.size;
+            if(num0!=num1){
+              return true;
+            }else{
+              return false
+            }
+          })
+        })
+        let editTableNew = []
+        editTable.forEach(a => {
+          a.symbolList.forEach(b => {
+            let obj = {
+              sampleCode:a.sampleCode,
+              model:a.model,
+              symbolItem:b.symbolItem,
+              sampleId:a.sampleId,
+              value:null,
+              inspectionItemList:b.inspectionItemList,
+              modelNum:a.modelNum,
+            }
+            editTableNew.push(obj)
+          })
+        })
+        return editTableNew
+      }else{
+        return sampleList
+      }
+    },
+    handleTell(tell, symbolItem, value) {
+      try {
+        return this.replaceAll(tell, symbolItem, value)
+      } catch (e) {
+      }
+    },
+    replaceAll(str,find,value) {
+      if (str === undefined) {
+        return str
+      }
+      return str.replaceAll(find, value);
+    },
+    // 澶勭悊鎵�閫夋嫨鐨勬楠岄」锛屽湪鎻愪氦鏃跺垽鏂湁娌℃湁閫夋嫨妫�楠岄」
+    getTotal(sampleList) {
+      this.totalArr = []
+      // this.total = 0;
+      this.productList.forEach(item => {
+
+      })
+      sampleList.forEach(item => {
+        if (item.insProduct && item.insProduct.length > 0) {
+          item.insProduct.forEach(a => {
+            this.totalArr.push(a)
+          })
+        }
+        if (item.bushing && item.bushing.length > 0) {
+          item.bushing.forEach(a => {
+            if (a.fiber && a.fiber.length > 0) {
+              a.fiber.forEach(b => {
+                if (b.productList && b.productList.length > 0) {
+                  b.productList.forEach(c => {
+                    this.totalArr.push(c)
+                  })
+                }
+              })
+            }
+            if (a.fibers && a.fibers.length > 0) {
+              a.fibers.forEach(b => {
+                if (b.productList && b.productList.length > 0) {
+                  b.productList.forEach(c => {
+                    this.totalArr.push(c)
+                  })
+                }
+                if (b.fiber && b.fiber.length > 0) {
+                  b.fiber.forEach(c => {
+                    if (c.productList && c.productList.length > 0) {
+                      c.productList.forEach(d => {
+                        this.totalArr.push(d)
+                      })
+                    }
+                  })
+                }
+              })
+            }
+          })
+        }
+      })
+      let mySet = new Set();
+      let arr0 = this.totalArr.filter(item => {
+        if (item.state == 1) {
+          let num1 = mySet.size
+          if (item.manHourGroup === '' || !item.manHourGroup) {
+            return true
+          } else {
+            mySet.add(item.manHourGroup)
+            let num2 = mySet.size
+            if (num2 > num1) {
+              return true
+            } else {
+              return false
+            }
+          }
+        }
+      })
+      // arr0.forEach(item => {
+      //   this.total += Number(item.price)
+      // })
+      let arr1 = this.totalArr.filter(item => item.state == 1)
+      let mySet0 = new Set();
+      this.sonLaboratoryList = []
+      arr1.forEach(item => {
+        let num1 = mySet0.size
+        mySet0.add(item.sonLaboratory)
+        let num2 = mySet0.size
+        if(num2>num1){
+          this.sonLaboratoryList.push({
+            label:item.sonLaboratory,
+            value:item.sonLaboratory,
+          })
+        }
+      })
+    },
+    selectCheckType() {
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "妫�楠岀被鍨�"
+      }).then(res => {
+        this.checkType = res.data
+      })
+    },
+    // 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅
+    getUserNow() {
+      this.$axios.get(this.$api.user.getUserNow).then(res => {
+        let selects = res.data
+        if (selects == null) return
+        this.addObj.userId = selects.id
+        this.addObj.code = selects.code
+        this.addObj.production = '/'
+        this.addObj.productionEn = '/'
+      })
+    },
+    // 鑾峰彇妫�楠屾爣鍑嗕笅鎷夋鏁版嵁
+    selectStandardMethods() {
+      this.$axios.get(this.$api.standardTree.selectStandardMethodEnum).then(res => {
+        this.methods = res.data
+      })
+    },
+    getProNum() {
+      this.$refs.sampleTable.doLayout()
+    },
+    methodFocus() {
+      // 鑱氱劍妫�楠屾爣鍑嗛�夋嫨妗嗭紝鑾峰彇妫�楠屾爣鍑嗘暟鎹�
+      this.selectsStandardMethodByFLSSM()
+    },
+    selectsStandardMethodByFLSSM() {
+      this.methodLoad = true
+      this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, {
+        tree: this.selectTree
+      }).then(res => {
+        this.methodLoad = false
+        try {
+          if (res.data.standardMethodList.length == 0 && this.selectTree.split('-').length == 5) {
+            let arr = this.selectTree.split('-')
+            let arr0 = arr.slice(0, arr.length - 1)
+            let selectTree = arr0.join('-').substring(0, arr0.join('-').length - 1)
+            this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, {
+              tree: selectTree
+            }).then(ress => {
+              this.methods = ress.data.standardMethodList
+            })
+          } else {
+            this.methods = res.data.standardMethodList
+          }
+        } catch (e) {}
+      })
+    },
+    // 璧嬪�肩涓�鏉¢粯璁ゆ暟鎹�
+    addListInfo (codeLevel, data) {
+      this.sampleList = []
+      this.productList = []
+      this.sample.model = this.addObj.model
+      this.sample.joinName = null
+      this.sample.joinModel = null
+      this.sample.joinNum = 1
+      this.sample.sample = this.addObj.sample
+      this.sample.unit = this.addObj.unit
+      this.sample.standardMethodListId = null
+      this.sample.insProduct = []
+      this.sample.id = this.count
+      this.sample.childSampleList = []
+      this.sample.insulating = null
+      this.sample.sheath = null
+      this.sample.quantity = 1
+      if (codeLevel === '[5]') {
+        this.sample.model = this.addObj.sample
+      } else if (codeLevel === '[4]') {
+        this.models = data.children2
+      } else if (codeLevel === '[3]') {
+        this.models = data.children1
+      }
+      this.sampleList.push(this.HaveJson(this.sample))
+      this.computationalPairing(this.sampleList.length)
+      this.count++
+    },
+    // 閫夋嫨妫�楠岄」鐨勫洖璋�
+    selectProduct(val) {
+      this.productListSelected = val
+      this.productIds = []
+      val.forEach(a => {
+        this.productIds.push(a.id)
+      })
+    },
+    selectSample(val) {
+      this.sampleIds = []
+      val.forEach(a => {
+        this.sampleIds.push(a.id)
+      })
+    },
+    // 閫変腑琛ㄦ牸琛岀殑鍥炶皟
+    rowClick(row, column, event) {
+      this.currentMethod = row
+      let obj = this.methods.find(a => a.id == this.currentMethod.standardMethodListId)
+      if (obj && obj.code == '鎶�鏈姹�') {
+        this.isAskOnlyRead = true
+      } else {
+        this.isAskOnlyRead = false
+      }
+      this.sampleId = row.id
+      if (this.active !== 1) {
+        this.sampleIds = []
+        this.sampleIds.push(row.id)
+      }
+      // this.productList = row.insProduct
+      if (this.productList !== null) {
+        setTimeout(() => {
+          this.productList.forEach(a => {
+            if (a.state == 1) this.toggleSelection(a)
+          })
+        }, 200)
+      }
+    },
+    toggleSelection(row) {
+      this.$refs.productTable.toggleRowSelection(row, true);
+    },
+    permute(nums) {
+      const result = [];
+      function backtrack(temp, nums) {
+        if (temp.length === 2) {
+          result.push([...temp]);
+          return;
+        }
+        for (let i = 0; i < nums.length; i++) {
+          if (temp.includes(nums[i])) continue;
+          // 閬垮厤閲嶅鏁板瓧
+          if (temp.length > 0 && nums[i] < temp[temp.length - 1]) continue; // 瑙勫畾椤哄簭锛岄伩鍏嶉噸澶嶇粍鍚�
+          temp.push(nums[i]);
+          backtrack(temp, nums);
+          temp.pop();
+        }
+      }
+      backtrack([], nums);
+      return result;
+    },
+    computationalPairing(n) {
+      const nums = [];
+      for (let i = 1; i <= n; i++) {
+        nums.push(i);
+      }
+      this.bsm2Val3 = this.HaveJson(this.permute(nums))
+    },
+    tableRowClassName({row, rowIndex}) {
+      if (row.state === 0) {
+        return '';
+      }
+      return 'warning-row';
+    },
+    // 淇敼鏍峰搧鍚嶇О
+    changeValue (val, string) {
+      if (this.sampleList.length > 1) {
+        // 鏈変袱鏉℃牱鍝佹椂锛岀浜屾潯鏍峰搧淇℃伅鍜岀涓�鏉′繚鎸佷竴鑷�
+        this.sampleList.forEach(item => {
+          item[string] = val
+        })
+      }
+    },
+    // 閫夋嫨妫�楠屾爣鍑嗗洖璋�
+    methodChange(val, row) {
+      if (val === null || val === '') return
+      if (this.sampleList.length > 1) {
+        // 鏈変袱鏉℃牱鍝佹椂锛岀浜屾潯鏍峰搧淇℃伅鍜岀涓�鏉′繚鎸佷竴鑷�
+        this.sampleList.forEach(item => {
+          item.standardMethodListId = val
+          item.modelNum = row.modelNum
+        })
+      }
+      this.currentMethod = row
+      let obj = this.methods.find(a => a.id == this.currentMethod.standardMethodListId)
+      if (obj && obj.code == '鎶�鏈姹�') {
+        this.isAskOnlyRead = true
+      } else {
+        this.isAskOnlyRead = false
+      }
+      this.getProductLoad = true
+      let selectTreeList = this.selectTree.split(" - ")
+      this.addObj.model&&(selectTreeList[selectTreeList.length - 1] = this.addObj.model)
+      this.$axios.post(this.$api.standardTree.selectStandardProductList, {
+        model: this.addObj.model?this.addObj.model:row.model,
+        modelNum: row.modelNum,
+        standardMethodListId: val,
+        factory: selectTreeList.join(" - "),
+        partNo: this.addObj.partNo,
+        ifsInventoryId: this.customsInspection.id
+      }, {
+        headers: {
+          'Content-Type': 'application/json'
+        }
+      }).then(res => {
+        this.getProductLoad = false
+        if (res.code === 200) {
+          res.data.forEach(a => {
+            a.state = 0
+          })
+          this.productList = this.HaveJson(res.data)
+          this.productList0 = JSON.parse(JSON.stringify(this.productList))
+          this.$refs.sampleTable.setCurrentRow(row)
+          setTimeout(() => {
+            this.productList.forEach(a => {
+              if (a.state == 1) this.toggleSelection(a)
+            })
+          }, 200)
+        }
+      }).catch(err => {
+        console.log('err-',err)
+      })
+    },
+    // 閫夋嫨鏍峰搧鍨嬪彿鐨勫洖璋�
+    changeModel() {
+      this.sampleList.forEach(a => {
+        let obj = this.sampleIds.find(b => b == a.id)
+        if (obj) {
+          a.model = this.model
+        }
+      })
+    },
+    // 閫夋嫨妫�楠屾爣鍑嗙殑鍥炶皟
+    changeStandardMethodListId() {
+      this.sampleList.forEach(a => {
+        let obj = this.sampleIds.find(b => b == a.id)
+        if (obj) {
+          a.standardMethodListId = this.standardMethodListId
+          this.methodChange(this.standardMethodListId, a)
+        }
+      })
+    },
+    // 鎷兼帴鏍峰搧鏍戠殑瀛楃涓�
+    handleChangeModel(e) {
+      if (this.sampleList.length > 1) {
+        this.sampleList.forEach(item => {
+          item.model = e
+        })
+      }
+      this.productList = []
+      let num = this.selectTreeTem.split('-').length;
+      if (num != 5) {
+        this.selectTree = this.selectTreeTem + ' - ' + e
+      } else {
+        let arr = this.selectTreeTem.split(' - ')
+        let arr0 = arr.slice(0, arr.length - 1)
+        this.selectTree = arr0.join(' - ') + '- ' + e
+      }
+    },
+    selectEnumByCategoryForType() {
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "绱ф�ョ▼搴�"
+      }).then(res => {
+        this.types = res.data
+      })
+    },
+    // 瑕佹眰鍊煎彉鍖栨椂
+    requestChange(e, row) {
+      this.sampleList.map(item => {
+        if (this.sampleIds.indexOf(item.id) > -1) {
+          item.insProduct.map(m => {
+            if (m.id == row.id) {
+              m.ask = e;
+            }
+            return m;
+          })
+        }
+        return item
+      })
+    },
+    selectable() {
+      if (this.active > 1) {
+        return false
+      } else {
+        return true
+      }
+    },
+    // 鍏ㄩ�夌壒娈婂�煎鐞嗘閫夋嫨瑕佹眰鍊肩殑鍥炶皟
+    upBsmAll (item) {
+      const i = this.bsm1DiaList.findIndex(obj => obj.id === item.id)
+      if (i > -1) {
+        // 鎵惧埌鐩稿簲鐨勬楠岄」璧嬪��
+        this.bsm1DiaList[i].bsm1Val = item.bsm1Val
+        let sections = this.bsm1DiaList[i].bsmRow.sectionCopy && JSON.parse(this.bsm1DiaList[i].bsmRow.sectionCopy);
+        let asks = this.bsm1DiaList[i].bsmRow.askCopy && JSON.parse(this.bsm1DiaList[i].bsmRow.askCopy);
+        let tells = this.bsm1DiaList[i].bsmRow.tellCopy && JSON.parse(this.bsm1DiaList[i].bsmRow.tellCopy);
+        // let manHours = this.bsm1DiaList[i].bsmRow.manHourCopy && JSON.parse(this.bsm1DiaList[i].bsmRow.manHourCopy);
+        // let prices = this.bsm1DiaList[i].bsmRow.priceCopy && JSON.parse(this.bsm1DiaList[i].bsmRow.priceCopy);
+        for (var a in sections) {
+          if (this.bsm1DiaList[i].bsm1Val === sections[a]) {
+            this.productList.forEach(p => {
+              // 灏嗛�夋嫨濂界殑瑕佹眰鍊艰祴鍊煎埌鍒楄〃閲�
+              if (p.id === this.bsm1DiaList[i].bsmRow.id) {
+                p.section = sections[a]
+                p.ask = asks[a]
+                p.tell = tells[a]
+                // p.manHour = manHours[a]
+                // p.price = prices[a]
+              }
+            })
+            break
+          }
+        }
+      }
+      this.changeProductList0()
+      this.currentMethod.insProduct = this.productList0
+    },
+    // 鍗曢�夐�夋嫨妫�楠岄」鐨勫洖璋�
+    selectOne(selection, row) {
+      this.bsm1DiaList = []
+      row.state = row.state == 1 ? 0 : 1
+      if(row.section === null) {
+        row.section = ""
+      }
+      if (row.sectionCopy === undefined && row.section) {
+        if (row.section.indexOf('[') > -1) {
+          this.$set(row, 'sectionCopy', row.section)
+        }
+      }
+      if (row.ask.includes('[')) {
+        this.$set(row, 'askCopy', row.ask)
+      }
+      if (row.tell.includes('[')) {
+        this.$set(row, 'tellCopy', row.tell)
+      }
+      // if (row.manHour.includes('[')) {
+      //   this.$set(row, 'manHourCopy', row.manHour)
+      // }
+      // if (row.price.includes('[')) {
+      //   this.$set(row, 'priceCopy', row.price)
+      // }
+      let arr = this.productList.filter(m=>m.state==1&&row.sectionCopy&&row.sectionCopy.includes(m.sectionCopy)&&m.ask&&m.sectionCopy.indexOf('[')==-1)
+      if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.sectionCopy !== undefined && row.state === 1&&arr.length==0) {
+        if (row.sectionCopy.indexOf('[') > -1) {
+          row.bsmRow = this.HaveJson(row)
+        }
+        row.bsm1 = true
+        this.bsm1DiaList.push(row)
+        this.bsm1DiaAll = true
+      } else if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.state === 0&&arr.length==0) {
+        row.bsm1 = false
+      }else if(arr.length>0){
+        try{
+          row.bsmRow = this.HaveJson(row)
+          let section = arr[0].section
+          let arr0 = JSON.parse(row.section)
+          let arr1 = JSON.parse(row.ask)
+          // let arr2 = JSON.parse(row.manHour)
+          // let arr3 = JSON.parse(row.price)
+          let arr4 = JSON.parse(row.tell)
+          let index = arr0.indexOf(section)
+          row.section = section
+          row.ask = arr1[index]
+          // row.manHour = arr2[index]
+          // row.price = arr3[index]
+          row.tell = arr4[index]
+        } catch(e) {}
+      }
+      this.sampleList.map(item => {
+        if (this.sampleIds.indexOf(item.id) > -1) {
+          item.insProduct.map(m => {
+            if (m.id == row.id) {
+              m.state = row.state;
+            }
+            return m;
+          })
+        }
+        return item
+      })
+      this.changeProductList0()
+      this.currentMethod.insProduct = this.productList0
+      this.getProNum()
+    },
+    handleAll(e) {
+      if (e.length > 0) {
+        this.productList.map(m => {
+          if(e.find(a=>a.id == m.id)){
+            m.state = 1
+          }
+          return m
+        })
+      } else {
+        this.productList.map(m => {
+          m.state = 0
+          return m
+        })
+      }
+      this.bsmRow3 = [];
+      this.bsm1DiaList = []
+      this.productList.forEach(p => {
+        if (p.sectionCopy === undefined && p.section) {
+          if (p.section.indexOf('[') > -1) {
+            this.$set(p, 'sectionCopy', p.section)
+          }
+        }
+        if (p.ask.includes('[')) {
+          this.$set(p, 'askCopy', p.ask)
+        }
+        if (p.tell.includes('[')) {
+          this.$set(p, 'tellCopy', p.tell)
+        }
+        // if (p.manHour.includes('[')) {
+        //   this.$set(p, 'manHourCopy', p.manHour)
+        // }
+        // if (p.price.includes('[')) {
+        //   this.$set(p, 'priceCopy', p.price)
+        // }
+        if (p.bsm === '1' && p.sectionCopy !== '' && p.sectionCopy !== null && p.sectionCopy !== undefined && p.state === 1) {
+          if (p.sectionCopy.indexOf('[') > -1) {
+            p.bsmRow = this.HaveJson(p)
+          }
+          p.bsm1 = true
+          this.bsm1DiaList.push(p)
+          this.bsm1DiaAll = true
+        } else if (p.bsm === '1' && p.sectionCopy !== '' && p.sectionCopy !== null && p.state === 0) {
+          p.bsm1 = false
+        }
+      })
+      if (e.length > 0) {
+        this.sampleList.map(item => {
+          if (this.sampleIds.indexOf(item.id) > -1) {
+            item.insProduct.map(m => {
+              m.state = 1
+              return m;
+            })
+          }
+          return item
+        })
+      } else {
+        this.sampleList.map(item => {
+          if (this.sampleIds.indexOf(item.id) > -1) {
+            item.insProduct.map(m => {
+              m.state = 0
+              return m;
+            })
+          }
+          return item
+        })
+      }
+      this.changeProductList0()
+      this.currentMethod.insProduct = this.productList0
+      this.getProNum()
+      this.$nextTick(() => {
+        this.$refs.productTable.doLayout()
+      })
+    },
+    changeProductList0(){
+      this.productList0.forEach(a=>{
+        let obj = this.productList.find(m => m.id == a.id)
+        if(obj){
+          a.state = obj.state
+          a.section = obj.section
+          a.ask = obj.ask
+          // a.manHour = obj.manHour
+          // a.price = obj.price
+          a.tell = obj.tell
+        }
+        if(a.state == 0&&a.bsmRow){
+          a = this.HaveJson(a.bsmRow)
+        }
+      })
+    },
+    filterHandler(value, row, column) {
+      const property = column['property'];
+      return row[property] === value;
+    },
+  }
+}
+</script>
+
+<style scoped>
+.addObj-form-item {
+  width: 100%;
+}
+.ins_order_add {
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+  overflow-x: hidden;
+}
+
+.ins_order_add::-webkit-scrollbar {
+  width: 0;
+}
+
+.title {
+  height: 60px;
+  line-height: 60px;
+}
+
+.search {
+  width: calc(100% - 40px);
+  background-color: #fff;
+  padding: 5px 40px 5px 0;
+}
+
+.search_thing {
+  display: flex;
+  align-items: center;
+  height: 50px;
+}
+
+.search_label {
+  width: 120px;
+  font-size: 14px;
+  text-align: right;
+}
+
+.search_input {
+  width: calc(100% - 120px);
+}
+
+.node_i {
+  color: orange;
+  font-size: 18px;
+}
+
+.el-select-dropdown__item {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.pairing {
+  text-align: center;
+  line-height: 36px;
+  margin: 3px 0;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  border-radius: 4px;
+}
+
+.askRts {
+  width: 100px;
+  font-size: 12px;
+  border-top: 0;
+  border-left: 0;
+  border-right: 0;
+  border-bottom: 2px solid rgba(0, 0, 0, 0.3);
+  text-align: center;
+  background-color: rgba(0, 0, 0, 0.1);
+  outline: none;
+  border-radius: 2px;
+  line-height: 24px;
+  margin-top: 5px;
+}
+.circulateTable {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+.opticalProject {
+  width: 38%;
+}
+.temperatureList {
+  width: 60%;
+}
+.temperatureListTitle {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+  line-height: 30px;
+}
+>>> .el-form-item__content {
+  text-align: left;
+  width: 65%;
+}
+.ins_order_add .el-input-group__append,
+.el-input-group__prepend {
+  padding: 0 10px;
+}
+
+.ins_order_add .el-tree-node__content {
+  height: 32px;
+  font-size: 14px;
+  border-radius: 2px;
+}
+
+.ins_order_add .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
+  color: #3A7BFA;
+}
+
+.ins_order_add .has-gutter .el-table__cell .cell {
+  line-height: 30px;
+  background-color: #fafafa;
+}
+
+.ins_order_add .has-gutter .el-table__cell {
+  background-color: #fafafa !important;
+}
+
+.ins_order_add .el-table__row .cell {
+  font-size: 12px;
+}
+
+.ins_order_add .el-table .warning-row .cell {
+  color: #3A7BFA;
+}
+.tab {
+  list-style-type: none;
+  display: flex;
+}
+
+.tab li {
+  line-height: 24px;
+  padding: 6px 14px;
+  font-size: 14px;
+  color: #333333;
+  border: 1px solid #EEEEEE;
+  cursor: pointer;
+}
+
+.tab li:nth-child(1) {
+  border-radius: 8px 0 0 8px;
+}
+
+.tab li:nth-child(2) {
+  border-radius: 0 8px 8px 0;
+}
+
+.tab li.active {
+  border-color: #3A7BFA;
+  color: #3A7BFA;
+  background-color: #ffffff;
+
+}
+
+</style>
diff --git a/src/views/business/materialOrder/index.vue b/src/views/business/materialOrder/index.vue
new file mode 100644
index 0000000..6d2c997
--- /dev/null
+++ b/src/views/business/materialOrder/index.vue
@@ -0,0 +1,1318 @@
+<template>
+  <div class="app-container">
+    <div style="width: 100%;height: 100%;">
+      <div>
+        <el-row class="title">
+          <el-col :span="12" style="text-align: left;">鍘熸潗鏂欐楠屼笅鍗�</el-col>
+          <el-col :span="12" style="text-align: right;">
+            <el-button v-show="tabIndex === 3 || tabIndex === 2" :loading="outLoading" size="small" type="primary" @click="handleOut">瀵煎嚭</el-button>
+            <el-button v-if="tabIndex === 0" size="small" type="primary" @click="copper">閾滄潗鏂欎笅鍗�</el-button>
+            <el-button v-if="tabIndex !== 0" size="small" type="primary" @click="openPrint">鏍囩鎵撳嵃</el-button>
+          </el-col>
+        </el-row>
+      </div>
+      <div class="search">
+        <el-form :model="entity" ref="entity" size="small" :inline="true">
+          <el-row>
+            <el-form-item label="鎵瑰彿" prop="menuName">
+              <el-input v-model="entity.updateBatchNo" clearable placeholder="璇疯緭鍏�"
+                        size="small"
+                        @keyup.enter.native="refreshTable">
+              </el-input>
+            </el-form-item>
+            <el-form-item label="濮旀墭缂栧彿" prop="menuName">
+              <el-input v-model="entity.entrustCode" clearable placeholder="璇疯緭鍏�"
+                        size="small"
+                        @keyup.enter.native="refreshTable">
+              </el-input>
+            </el-form-item>
+            <el-form-item label="闆朵欢鍙�" prop="menuName">
+              <el-input v-model="entity.partNo" clearable placeholder="璇疯緭鍏�"
+                        size="small"
+                        @keyup.enter.native="refreshTable">
+              </el-input>
+            </el-form-item>
+            <el-form-item label="闆朵欢鎻忚堪" prop="menuName">
+              <el-input v-model="entity.partDesc" clearable placeholder="璇疯緭鍏�"
+                        size="small"
+                        @keyup.enter.native="refreshTable">
+              </el-input>
+            </el-form-item>
+            <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 4" :icon="!more?'el-icon-arrow-down':'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more=!more">{{!more?'鏇村':'鏀惰捣'}}</el-button>
+            <el-button icon="el-icon-search" size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
+            <el-button icon="el-icon-refresh" size="small" @click="refresh()">閲� 缃�</el-button>
+          </el-row>
+          <el-row>
+            <el-form-item label="渚涘簲鍟嗗悕绉�" prop="menuName" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
+              <el-input v-model="entity.supplierName" clearable placeholder="璇疯緭鍏�"
+                        size="small"
+                        @keyup.enter.native="refreshTable">
+              </el-input>
+            </el-form-item>
+            <el-form-item label="鏍峰搧鍨嬪彿" prop="menuName" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
+              <el-input v-model="entity.sampleModel" clearable placeholder="璇疯緭鍏�"
+                        size="small"
+                        @keyup.enter.native="refreshTable">
+              </el-input>
+            </el-form-item>
+            <el-form-item label="妫�楠岀姸鎬�" prop="menuName" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
+              <el-select v-model="entity.inspectStatus" clearable
+                         size="small" style="width: 100%;" @change="refreshTable()">
+                <el-option v-for="(a, i) in inspectStatusList" :key="i" :label="a.label" :value="a.value"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="涓嬪彂鏃堕棿" prop="menuName" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
+              <el-date-picker
+                v-model="entity.date"
+                end-placeholder="缁撴潫鏃ユ湡"
+                format="yyyy-MM-dd"
+                placeholder="閫夋嫨鏃ユ湡"
+                range-separator="鑷�"
+                size="small"
+                start-placeholder="寮�濮嬫棩鏈�"
+                style="width: 100%;"
+                type="daterange"
+                value-format="yyyy-MM-dd">
+              </el-date-picker>
+            </el-form-item>
+          </el-row>
+        </el-form>
+      </div>
+      <div class="table">
+        <ul class="tab">
+          <li v-for="(m,i) in tabList" :key="m.value" :class="{active:m.value===tabIndex}" @click="handleTab(m)">{{m.label}}</li>
+        </ul>
+        <!--寰呬笅鍗�-->
+<!--        <ValueTable v-show="tabIndex === 0" :key="'a'+ upIndex"-->
+<!--                    ref="ValueTable"-->
+<!--                    :componentData="componentData"-->
+<!--                    :style="getStyle()"-->
+<!--                    :tableRowClassName="changeRowClass"-->
+<!--                    :url="$api.materialInspection.getPurchaseOrder" />-->
+        <!--妫�楠屼腑-->
+<!--        <ValueTable v-show="tabIndex === 1" :key="'b'+ upIndex"-->
+<!--                    ref="ValueTable1"-->
+<!--                    :componentData="componentData1"-->
+<!--                    :style="getStyle()"-->
+<!--                    :tableRowClassName="changeRowClass"-->
+<!--                    :url="$api.materialInspection.getIfsByStateOne" />-->
+<!--        &lt;!&ndash;宸叉楠�&ndash;&gt;-->
+<!--        <ValueTable v-show="tabIndex === 2" :key="'c'+ upIndex"-->
+<!--                    ref="ValueTable2"-->
+<!--                    :componentData="componentData2"-->
+<!--                    :style="getStyle()"-->
+<!--                    :tableRowClassName="changeRowClass"-->
+<!--                    :url="$api.materialInspection.getIfsByOver" />-->
+<!--        &lt;!&ndash;鍏ㄩ儴&ndash;&gt;-->
+<!--        <ValueTable v-if="tabIndex === 3" :key="'d'+ upIndex"-->
+<!--                    ref="ValueTable3"-->
+<!--                    :componentData="componentData3"-->
+<!--                    :style="getStyle()"-->
+<!--                    :url="$api.materialInspection.getIfsByAll" />-->
+<!--        &lt;!&ndash;瀛e害妫�楠�&ndash;&gt;-->
+<!--        <ValueTable v-show="tabIndex === 4" :key="'e'+ upIndex"-->
+<!--                    ref="ValueTable4"-->
+<!--                    :componentData="componentData4"-->
+<!--                    :style="getStyle()"-->
+<!--                    :tableRowClassName="changeRowClass"-->
+<!--                    :url="$api.materialInspection.getIfsByQuarter" />-->
+      </div>
+    </div>
+<!--    <div v-if="active >0 && isCopper == 0" style="width: 100%;height: 100%;">-->
+<!--      <CustomsInspection v-if="active >0&& isCopper == 0" :active="active"-->
+<!--                         :currentId="currentId"-->
+<!--                         :customsInspection="customsInspection" :orderType="orderType" />-->
+<!--    </div>-->
+<!--    <div v-if="active >0 && isCopper == 1" style="width: 100%;height: 100%;">-->
+<!--      <CopperOrder v-if="active >0 && isCopper == 1" :active="active" :currentId="currentId"></CopperOrder>-->
+<!--    </div>-->
+    <!-- 纭鍏嶆寮规 -->
+    <el-dialog :visible.sync="exemptionVisible" title="纭鍏嶆" width="42%">
+      <div style="display: flex">
+        <span style="width: 90px; line-height: 32px">瑙勬牸鍨嬪彿锛�</span>
+        <el-input v-model="exemptionInfo.partDetail" clearable placeholder="璇疯緭鍏�"
+                  size="small"
+                  @keyup.enter.native="refreshTable"></el-input>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-row>
+          <el-button @click="exemptionVisible = false">鍙� 娑�</el-button>
+          <el-button :loading="exemptionLoading" type="primary" @click="submitExemption">纭� 瀹�</el-button>
+        </el-row>
+      </span>
+    </el-dialog>
+    <!-- 鎾ら攢鎶ユ -->
+    <el-dialog :visible.sync="declareDialogVisible" title="鎶ユ鎾ら攢" width="30%">
+      <p style="font-size:16px;color:#333333">鎵瑰彿<span
+        style="color:#34BD66">{{this.insOrderRow.updateBatchNo}}</span>鐨勪俊鎭槸鍚�<span style="color: #FF4902">鎾ら攢鎶ユ</span></p>
+      <span slot="footer" class="dialog-footer">
+					<el-row>
+						<el-button @click="declareDialogVisible = false">鍙� 娑�</el-button>
+						<el-button :loading="upLoad" type="primary" @click="submitDeclare">纭� 瀹�</el-button>
+					</el-row>
+				</span>
+    </el-dialog>
+    <!-- 鎾ら攢涓嬪崟 -->
+    <el-dialog :visible.sync="quashDialogVisible" title="涓嬪崟鎾ら攢" width="30%">
+      <el-button size="small" type="primary" @click="cancelQuashOrder('enterOrderId')">鎾ら攢杩涘巶妫�楠屼笅鍗�</el-button>
+      <el-button size="small" type="primary" @click="cancelQuashOrder('quarterOrderId')">鎾ら攢瀛e害妫�楠屼笅鍗�</el-button>
+      <span slot="footer" class="dialog-footer">
+        <el-row>
+          <el-button @click="quashDialogVisible = false">鍙� 娑�</el-button>
+        </el-row>
+      </span>
+    </el-dialog>
+    <!-- 淇敼濮旀墭缂栧彿寮规 -->
+    <el-dialog :visible.sync="entrustCodeVisible" title="鎻愮ず" width="30%">
+      <el-input v-model="entrustCodeInfo.entrustCode"></el-input>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="entrustCodeVisible = false">鍙� 娑�</el-button>
+        <el-button :loading="submitCodeLoading" type="primary" @click="submitCode">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <!--鏍囩鎵撳嵃寮规-->
+    <print-dialog v-if="printDialog" ref="printDialog"
+                  :printDialog="printDialog"
+                  @closePrintDialog="closePrintDialog"></print-dialog>
+    <!--鏁版嵁鏌ョ湅寮规-->
+    <data-look-visible v-if="dataDialogVisible" ref="dataDialogVisible"
+                       :dataDialogVisible="dataDialogVisible"
+                       :dataLookInfo="dataLookInfo" @closeDataLook="closeDataLook"></data-look-visible>
+    <!--闄勪欢鏌ョ湅寮规-->
+    <files-look-visible v-if="filesDialogVisible" ref="filesDialogVisible"
+                        :filesDialogVisible="filesDialogVisible"
+                        :filesLookInfo="filesLookInfo" @closeFilesLook="closeFilesLook"></files-look-visible>
+    <!--鎶ュ憡涓嬭浇寮规-->
+    <down-file-dialog v-if="downFileDialogVisible" ref="downFileDialogVisible"
+                      :downFileDialogVisible="downFileDialogVisible"
+                      :downLoadInfo="downLoadInfo" @closeDownFileDialog="closeDownFileDialog"></down-file-dialog>
+    <!--浜т笟閾句俊鎭煡鐪�-->
+    <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>
+    <!--妫�楠屼换鍔′俊鎭煡鐪�-->
+    <el-dialog :visible.sync="InspectInfoDialog" title="鏁版嵁鏌ョ湅" width="400px" @closed="closeInsInfoDialog">
+      <div style="margin-bottom: 8px">
+        <span style="font-size: 16px;">杩涘巶妫�楠屽師濮嬫暟鎹�</span>
+        <el-link :disabled="!insInfo.enterOrderId" :underline="false"
+                 style="vertical-align: bottom;margin-left: 6px"
+                 type="primary" @click="viewInsInfo0">鏌ョ湅</el-link>
+      </div>
+      <div>
+        <span  style="font-size: 16px;">瀛e害妫�楠屽師濮嬫暟鎹�</span>
+        <el-link :disabled="!insInfo.quarterOrderId" :underline="false"
+                 style="vertical-align: bottom;margin-left: 6px"
+                 type="primary" @click="viewInsInfo1">鏌ョ湅</el-link>
+      </div>
+    </el-dialog>
+<!--    <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"-->
+<!--                :sonLaboratory="'鍘熸潗鏂�'" :state="state"-->
+<!--                :typeSource="typeSource"-->
+<!--                @goback="goback" @refreshView="refreshView"/>-->
+  </div>
+</template>
+
+<script>
+import ValueTable from "@/components/Table/value-table.vue";
+import CustomsInspection from "./customsInspection.vue";
+import PrintDialog from "@/components/materialOrder/printDialog.vue";
+import ShowInfo from "@/components/materialOrder/showInfo.vue";
+import DataLookVisible from "@/components/materialOrder/dataLookVisible.vue";
+import FilesLookVisible from "@/components/materialOrder/filesLookVisible.vue";
+import DownFileDialog from "@/components/materialOrder/downFileDialog.vue";
+// import CopperOrder from "@/components/materialOrder/copper-order.vue";
+// import Inspection from "../do/b1-inspect-order-plan/Inspection.vue";
+
+export default {
+  name: "b1-material-inspection-order",
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {
+    // Inspection,
+    // CopperOrder,
+    DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog, CustomsInspection, ValueTable},
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      isShowIFS: false,
+      entityEmpty: {},
+      entity: {
+        updateBatchNo: null,
+        entrustCode: null,
+        partDesc: null,
+        supplierName: null,
+        sampleModel: null,
+        partNo: null,
+        inspectStatus: null,
+        date: null,
+        beginDeclareDate: null,
+        endDeclareDate: null,
+      },
+      componentData: { // 琛ㄦ牸鏁版嵁
+        entity: {
+          updateBatchNo: null,
+          partDesc: null,
+          state: 0,
+          isInspect: 1,
+          partNo: null
+        },
+        isIndex: true,
+        showSelect: false,
+        select: false,
+        selectMethod:'selectMethod',
+        do: [
+          {
+            font: '涓嬪崟',
+            type: 'text',
+            method: 'playOrder',
+          },
+          {
+            font: '鍏嶆',
+            type: 'text',
+            method: 'exemption',
+          },
+          {
+            font: '鎾ら攢鎶ユ',
+            type: 'text',
+            method: 'cancelDeclare',
+          },
+          // {
+          //   font: '浜т笟閾�',
+          //   type: 'text',
+          //   method: 'openInfoDialog',
+          // }
+        ],
+        tagField: {
+          isExpire: {
+            select: [{
+              value: 1,
+              label: '杩囨湡鐗╂枡',
+              type: 'warning'
+            }]
+          },
+        },
+        selectField: {},
+        requiredAdd: [],
+        requiredUp: []
+      },
+      componentData1: {
+        entity: {
+          orderBy: {
+            field: 'entrustCode',
+            order: 'desc'
+          },
+          updateBatchNo: null,
+          entrustCode: null,
+          partDesc: null,
+          state: 1,
+          orderState: 1,
+          partNo: null
+        },
+        isIndex: true,
+        showSelect: true,
+        select: true,
+        selectMethod:'selectMethod',
+        do: [
+          // {
+          //   font: '瀛e害妫�楠�',
+          //   type: 'text',
+          //   method: 'playOrderSec',
+          //   disabFun: (row, index) => {
+          //     return row.isQuarter == 0
+          //   }
+          // },
+          {
+            id: 'dataLook',
+            font: '鏁版嵁鏌ョ湅',
+            type: 'text',
+            method: 'handleDataLook',
+          },
+          {
+            font: '闄勪欢鏌ョ湅',
+            type: 'text',
+            method: 'handleFileLook',
+          },
+          {
+            font: '鎾ら攢涓嬪崟',
+            type: 'text',
+            method: 'cancelOrder',
+          },
+          // {
+          //   font: '浜т笟閾�',
+          //   type: 'text',
+          //   method: 'openInfoDialog',
+          // }
+        ],
+        linkEvent: {
+          sampleName: {
+            method: 'selectAllByOne'
+          },
+          entrustCode: {
+            method: 'changeEntrustCode'
+          }
+        },
+        tagField: {
+          inspectStatus: {
+            select: [{
+              value: 0,
+              label: '妫�楠屼腑',
+              type: 'warning'
+            },{
+              value: 1,
+              label: '鍚堟牸',
+              type: 'success'
+            },{
+              value: 2,
+              label: '涓嶅悎鏍�',
+              type: 'danger'
+            },{
+              value: 3,
+              label: '鏈笅鍗�',
+              type: 'info'
+            }]
+          },
+          isExpire: {
+            select: [{
+              value: 1,
+              label: '杩囨湡鐗╂枡',
+              type: 'warning'
+            }]
+          },
+        },
+        selectField: {},
+        requiredAdd: [],
+        requiredUp: []
+      },
+      componentData2: {
+        entity: {
+          orderBy: {
+            field: 'entrustCode',
+            order: 'desc'
+          },
+          updateBatchNo: null,
+          entrustCode: null,
+          partDesc: null,
+          sampleModel: null,
+          state: 2,
+          orderState: 4,
+          supplierName: '',
+          partNo: null,
+          beginDeclareDate: null,
+          endDeclareDate: null,
+        },
+        isIndex: true,
+        showSelect: true,
+        select: true,
+        selectMethod:'selectMethod',
+        do: [
+          {
+            font: '瀛e害妫�楠�',
+            type: 'text',
+            method: 'playOrderSec',
+            disabFun: (row, index) => {
+              return row.isQuarter == 0
+            }
+          },
+          {
+            id: 'dataLook',
+            font: '鏁版嵁鏌ョ湅',
+            type: 'text',
+            method: 'handleDataLook',
+          },
+          {
+            font: '闄勪欢鏌ョ湅',
+            type: 'text',
+            method: 'handleFileLook',
+          },{
+            id: 'download',
+            font: '鎶ュ憡涓嬭浇',
+            type: 'text',
+            method: 'download',
+          },
+          // {
+          //   font: '浜т笟閾�',
+          //   type: 'text',
+          //   method: 'openInfoDialog',
+          // },
+          {
+            id: '',
+            font: '鍘熷璁板綍',
+            type: 'text',
+            method: 'viewInspectInfo',
+            disabFun: (row, index) => {
+              return row.sampleName === null
+            }
+          },
+          {
+            id: '',
+            font: '鏀捐',
+            type: 'text',
+            method: 'goPass',
+            disabFun: (row, index) => {
+              return row.inspectStatus != 2
+            }
+          },
+          {
+            id: '',
+            font: '瀛e害鎾ら攢',
+            type: 'text',
+            method: 'repealQuarter',
+            disabFun: (row, index) => {
+              return row.quarterOrderId == null || row.quarterReportId != null
+            }
+          }
+        ],
+        linkEvent: {
+          sampleName: {
+            method: 'selectAllByOne'
+          },
+          entrustCode: {
+            method: 'changeEntrustCode'
+          }
+        },
+        tagField: {
+          inspectStatus: {
+            select: [{
+              value: 0,
+              label: '妫�楠屼腑',
+              type: 'warning'
+            },{
+              value: 1,
+              label: '鍚堟牸',
+              type: 'success'
+            },{
+              value: 2,
+              label: '涓嶅悎鏍�',
+              type: 'danger'
+            },{
+              value: 3,
+              label: '鏈笅鍗�',
+              type: 'info'
+            },{
+              value: 4,
+              label: '璁╂鏀捐',
+              type: 'info'
+            }]
+          },
+          isExemption: {
+            select: [{
+              value: 1,
+              label: '鍏嶆',
+              type: 'success'
+            }]
+          },
+          isExpire: {
+            select: [{
+              value: 1,
+              label: '杩囨湡鐗╂枡',
+              type: 'warning'
+            }]
+          },
+        },
+        selectField: {},
+        requiredAdd: [],
+        requiredUp: []
+      },
+      componentData4: {
+        entity: {
+          orderBy: {
+            field: 'entrustCode',
+            order: 'desc'
+          },
+          updateBatchNo: null,
+          entrustCode: null,
+          partDesc: null,
+          sampleModel: null,
+          supplierName: '',
+          partNo: null,
+          beginDeclareDate: null,
+          endDeclareDate: null,
+        },
+        isIndex: true,
+        showSelect: true,
+        select: true,
+        selectMethod:'selectMethod',
+        do: [
+          {
+            font: '瀛e害妫�楠�',
+            type: 'text',
+            method: 'playOrderSec',
+            disabFun: (row, index) => {
+              return row.isQuarter == 0
+            }
+          },
+          {
+            id: 'dataLook',
+            font: '鏁版嵁鏌ョ湅',
+            type: 'text',
+            method: 'handleDataLook',
+          },
+          {
+            font: '闄勪欢鏌ョ湅',
+            type: 'text',
+            method: 'handleFileLook',
+          },{
+            id: 'download',
+            font: '鎶ュ憡涓嬭浇',
+            type: 'text',
+            method: 'download',
+          },
+          // {
+          //   font: '浜т笟閾�',
+          //   type: 'text',
+          //   method: 'openInfoDialog',
+          // },
+          {
+            id: '',
+            font: '鍘熷璁板綍',
+            type: 'text',
+            method: 'viewInspectInfo',
+            disabFun: (row, index) => {
+              return row.sampleName === null
+            }
+          },
+          // {
+          //   id: '',
+          //   font: '鏀捐',
+          //   type: 'text',
+          //   method: 'goPass',
+          //   disabFun: (row, index) => {
+          //     return row.inspectStatus != 2
+          //   }
+          // },
+          {
+            id: '',
+            font: '瀛e害鎾ら攢',
+            type: 'text',
+            method: 'repealQuarter',
+            disabFun: (row, index) => {
+              return row.quarterOrderId == null || row.quarterReportId != null
+            }
+          }
+        ],
+        linkEvent: {
+          sampleName: {
+            method: 'selectAllByOne'
+          },
+          entrustCode: {
+            method: 'changeEntrustCode'
+          }
+        },
+        tagField: {
+          inspectStatus: {
+            select: [{
+              value: 0,
+              label: '妫�楠屼腑',
+              type: 'warning'
+            },{
+              value: 1,
+              label: '鍚堟牸',
+              type: 'success'
+            },{
+              value: 2,
+              label: '涓嶅悎鏍�',
+              type: 'danger'
+            },{
+              value: 3,
+              label: '鏈笅鍗�',
+              type: 'info'
+            },{
+              value: 4,
+              label: '璁╂鏀捐',
+              type: 'info'
+            }]
+          },
+          isExemption: {
+            select: [{
+              value: 1,
+              label: '鍏嶆',
+              type: 'success'
+            }]
+          },
+          isExpire: {
+            select: [{
+              value: 1,
+              label: '杩囨湡鐗╂枡',
+              type: 'warning'
+            }]
+          },
+        },
+        selectField: {},
+        requiredAdd: [],
+        requiredUp: []
+      },
+      componentData3: {
+        entity: {
+          orderBy: {
+            field: 'entrustCode',
+            order: 'desc'
+          },
+          updateBatchNo: null,
+          entrustCode: null,
+          partDesc: null,
+          sampleModel: null,
+          isInspect: 1,
+          supplierName: '',
+          partNo: null,
+          beginDeclareDate: null,
+          endDeclareDate: null,
+        },
+        isIndex: true,
+        showSelect: true,
+        select: true,
+        selectMethod:'selectMethod',
+        do: [
+          {
+            id: 'dataLook',
+            font: '鏁版嵁鏌ョ湅',
+            type: 'text',
+            method: 'handleDataLook',
+          },
+          {
+            font: '闄勪欢鏌ョ湅',
+            type: 'text',
+            method: 'handleFileLook',
+          },
+          // {
+          //   font: '浜т笟閾�',
+          //   type: 'text',
+          //   method: 'openInfoDialog',
+          // }
+        ],
+        linkEvent: {
+          sampleName: {
+            method: 'selectAllByOne'
+          },
+          entrustCode: {
+            method: 'changeEntrustCode'
+          }
+        },
+        tagField: {
+          inspectStatus: {
+            select: [{
+              value: 0,
+              label: '妫�楠屼腑',
+              type: 'warning'
+            },{
+              value: 1,
+              label: '鍚堟牸',
+              type: 'success'
+            },{
+              value: 2,
+              label: '涓嶅悎鏍�',
+              type: 'danger'
+            },{
+              value: 3,
+              label: '鏈笅鍗�',
+              type: 'info'
+            },{
+              value: 4,
+              label: '璁╂鏀捐',
+              type: ''
+            }]
+          },
+          isExemption: {
+            select: [{
+              value: 1,
+              label: '鍏嶆',
+              type: 'success'
+            }]
+          },
+          isExpire: {
+            select: [{
+              value: 1,
+              label: '杩囨湡鐗╂枡',
+              type: 'warning'
+            }]
+          },
+        },
+        selectField: {},
+        requiredAdd: [],
+        requiredUp: []
+      },
+      tabList: [
+        {
+          label: '寰呬笅鍗�',
+          value: 0
+        },
+        {
+          label: '妫�楠屼腑',
+          value: 1
+        },
+        {
+          label: '宸叉楠�',
+          value: 2
+        },
+        {
+          label: '瀛e害妫�楠�',
+          value: 4
+        },
+        {
+          label: '鍏ㄩ儴',
+          value: 3
+        }
+      ],
+      more:false,
+      upIndex: 0,
+      tabIndex: 0,
+      multipleSelection:[],
+      entityCopy: {},
+      entityCopy1: {},
+      entityCopy2: {},
+      entityCopy3: {},
+      entityCopy4: {},
+      active: 0, //1锛氫笅鍗曪紝2锛氭煡鐪�
+      orderType: 0, //0锛氬師鏉愭枡涓嬪崟锛�1锛氬搴︽楠屼笅鍗�
+      currentId: null,
+      customsInspection: {},
+      btnLoading: false,
+      quashDialogVisible: false, // 鎾ら攢涓嬪崟鎻愰啋寮规
+      declareDialogVisible: false, // 鎾ら攢鎶ユ鎻愰啋寮规
+      insOrderRow:{},
+      upLoad: false,
+      filesDialogVisible: false, // 闄勪欢鏌ョ湅寮规
+      printDialog: false, // 鏍囩鎵撳嵃寮规
+      showInfoDialog: false, // 浜т笟閾句俊鎭煡鐪�
+      dataDialogVisible: false, // 鏁版嵁鏌ョ湅寮规
+      dataLookInfo: {}, // 鏁版嵁鏌ョ湅寮规鏁版嵁
+      filesLookInfo: {}, // 闄勪欢鏌ョ湅寮规鏁版嵁
+      downFileDialogVisible: false, // 鎶ュ憡涓嬭浇寮规
+      downLoadInfo: {}, // 鎶ュ憡涓嬭浇寮规
+      entrustCodeVisible: false, // 淇敼濮旀墭缂栧彿寮规
+      entrustCodeInfo: {},
+      submitCodeLoading: false,
+      exemptionVisible: false, // 鍏嶆纭寮规
+      exemptionLoading: false,
+      exemptionInfo: {},
+      inspectStatusList: [
+        {label: '妫�楠屼腑', value: 0},
+        {label: '鍚堟牸', value: 1},
+        {label: '涓嶅悎鏍�', value: 2},
+        {label: '鏈笅鍗�', value: 3},
+        {label: '璁╂鏀捐', value: 4},
+      ],
+      state: 0,
+      orderId: 0,
+      inspectorList: [],//妫�楠屼汉鍛樺垪琛�
+      InspectionKey: 1,
+      typeSource: null,// 0:鎴愬搧涓嬪崟锛�1锛氬師鏉愭枡涓嬪崟, 2: 閾滃崟涓濅笅鍗�
+      InspectInfoDialog: false, // 鏁版嵁鏌ョ湅寮规
+      insInfo: {},
+      isCopper: null,
+      outLoading:false
+    }
+  },
+  mounted () {
+    this.entityEmpty = this.HaveJson(this.entity)
+    this.entityCopy = this.HaveJson(this.componentData.entity)
+    this.entityCopy1 = this.HaveJson(this.componentData1.entity)
+    this.entityCopy2 = this.HaveJson(this.componentData2.entity)
+    this.entityCopy3 = this.HaveJson(this.componentData3.entity)
+    this.getPower()
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    // 鑾峰彇鏉冮檺
+    getPower(){
+      let power = JSON.parse(sessionStorage.getItem('power'))
+      let getIFS = false
+      for (var i = 0; i < power.length; i++) {
+        if (power[i].menuMethod == 'getIfsByAll') { // 鑾峰彇IFS鐨勬潈闄�
+          getIFS = true
+        }
+      }
+      if (!getIFS) {
+        this.tabList.splice(-1, 1)
+      }
+    },
+    // 鏌ョ湅妫�楠屾暟鎹�
+    viewInspectInfo (row) {
+      //褰撳墠妫�楠屼换鍔$殑妫�楠屼汉鍒楄〃
+      let inspectorList = []
+      if(row.userName){
+        inspectorList = row.userName.split(',')
+      }
+      let user = JSON.parse(localStorage.getItem('user'))
+      if(user){
+        inspectorList.push(user.name)
+      }
+      this.inspectorList = inspectorList
+      this.insInfo = row
+      this.InspectInfoDialog = true
+    },
+    closeInsInfoDialog () {
+      this.InspectInfoDialog = false
+    },
+    // 鐩存帴鏀捐
+    goPass (row) {
+      this.$confirm('鏄惁鏀捐褰撳墠鏁版嵁?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        this.$axios.post(this.$api.materialInspection.concessionRelease+'?ifsInventoryId='+row.id).then(res => {
+          if (res.code === 200) {
+            this.$message({
+              type: 'success',
+              message: '鏀捐鎴愬姛!'
+            });
+            this.refresh()
+          }
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'error',
+          message: '鏀捐澶辫触'
+        });
+      });
+    },
+    // 瀛e害鎾ら攢
+    repealQuarter(row) {
+      this.$confirm('鏄惁鎾ら攢瀛e害涓嬪崟?', "璀﹀憡", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      }).then(() => {
+        this.$axios.post(this.$api.rawMaterialOrder.repealQuarterRawOrder + '?quarterOrderId=' + row.quarterOrderId).then(res => {
+          if (res.code === 200) {
+            this.$message.success('鎾ら攢鎴愬姛')
+            this.refreshTable('page')
+          }
+        })
+      }).catch(() => {})
+    },
+    viewInsInfo0 () {
+      this.state = 3;
+      this.typeSource = this.insInfo.typeSource
+      this.orderId = this.insInfo.enterOrderId
+      this.InspectInfoDialog = false
+    },
+    viewInsInfo1 () {
+      this.state = 3;
+      this.typeSource = this.insInfo.typeSource
+      this.orderId = this.insInfo.quarterOrderId
+      this.InspectInfoDialog = false
+    },
+    goback() {
+      this.state = 0
+      this.refreshTable('page')
+    },
+    // 鍒锋柊椤甸潰
+    refreshView () {
+      this.InspectionKey++
+    },
+    // 閾滄潗鏂欎笅鍗�
+    copper () {
+      this.$router.push({ path: "/business/materialOrder/customsInspection" });
+    },
+    // 鎵撳紑鏍囩鎵撳嵃寮规
+    openPrint () {
+      if (this.multipleSelection.length > 0) {
+        this.printDialog = true
+        this.$nextTick(() => {
+          let selection = this.multipleSelection
+          this.$refs.printDialog.getLabelPrinting(selection)
+        })
+      } else {
+        this.$message.error('璇烽�夋嫨闇�瑕佹墦鍗扮殑鏁版嵁')
+      }
+    },
+    // 鍏抽棴鏍囩鎵撳嵃寮规
+    closePrintDialog () {
+      this.printDialog = false
+    },
+    // 鏌ヨ鍥炶皟
+    refreshTable(e) {
+      if (this.tabIndex === 0) {
+        this.componentData.entity.updateBatchNo = this.entity.updateBatchNo
+        this.componentData.entity.partDesc = this.entity.partDesc
+        this.componentData.entity.partNo = this.entity.partNo
+        this.$refs['ValueTable'].selectList(e)
+      } else if (this.tabIndex === 1) {
+        this.componentData1.entity.updateBatchNo = this.entity.updateBatchNo
+        this.componentData1.entity.entrustCode = this.entity.entrustCode
+        this.componentData1.entity.partDesc = this.entity.partDesc
+        this.componentData1.entity.partNo = this.entity.partNo
+        this.$refs['ValueTable1'].selectList(e)
+      }  else if (this.tabIndex === 2) {
+        this.componentData2.entity.updateBatchNo = this.entity.updateBatchNo
+        this.componentData2.entity.entrustCode = this.entity.entrustCode
+        this.componentData2.entity.partDesc = this.entity.partDesc
+        this.componentData2.entity.supplierName = this.entity.supplierName
+        this.componentData2.entity.sampleModel = this.entity.sampleModel
+        this.componentData2.entity.partNo = this.entity.partNo
+        this.componentData2.entity.inspectStatus = this.entity.inspectStatus
+        if (this.entity.date!==null) {
+          this.componentData2.entity.beginDeclareDate = this.entity.date[0] + ' 00:00:00'
+          this.componentData2.entity.endDeclareDate = this.entity.date[1] + ' 23:59:59'
+        } else {
+          this.componentData2.entity.beginDeclareDate = ''
+          this.componentData2.entity.endDeclareDate = ''
+        }
+        this.$refs['ValueTable2'].selectList(e)
+      }  else if (this.tabIndex === 4) {
+        this.componentData4.entity.updateBatchNo = this.entity.updateBatchNo
+        this.componentData4.entity.entrustCode = this.entity.entrustCode
+        this.componentData4.entity.partDesc = this.entity.partDesc
+        this.componentData4.entity.supplierName = this.entity.supplierName
+        this.componentData4.entity.sampleModel = this.entity.sampleModel
+        this.componentData4.entity.partNo = this.entity.partNo
+        this.componentData4.entity.inspectStatus = this.entity.inspectStatus
+        if (this.entity.date!==null) {
+          this.componentData4.entity.beginDeclareDate = this.entity.date[0] + ' 00:00:00'
+          this.componentData4.entity.endDeclareDate = this.entity.date[1] + ' 23:59:59'
+        } else {
+          this.componentData4.entity.beginDeclareDate = ''
+          this.componentData4.entity.endDeclareDate = ''
+        }
+        this.$refs['ValueTable4'].selectList(e)
+      } else {
+        this.componentData3.entity.updateBatchNo = this.entity.updateBatchNo
+        this.componentData3.entity.entrustCode = this.entity.entrustCode
+        this.componentData3.entity.partDesc = this.entity.partDesc
+        this.componentData3.entity.supplierName = this.entity.supplierName
+        this.componentData3.entity.sampleModel = this.entity.sampleModel
+        this.componentData3.entity.partNo = this.entity.partNo
+        this.componentData3.entity.inspectStatus = this.entity.inspectStatus
+        if (this.entity.date!==null) {
+          this.componentData3.entity.beginDeclareDate = this.entity.date[0] + ' 00:00:00'
+          this.componentData3.entity.endDeclareDate = this.entity.date[1] + ' 23:59:59'
+        } else {
+          this.componentData3.entity.beginDeclareDate = ''
+          this.componentData3.entity.endDeclareDate = ''
+        }
+        this.$nextTick(()=> {
+          this.$refs['ValueTable3'].selectList(e)
+        })
+      }
+    },
+    // 閲嶇疆
+    refresh() {
+      this.entity = this.HaveJson(this.entityEmpty)
+      if (this.tabIndex === 0) {
+        this.componentData.entity = this.HaveJson(this.entityCopy)
+      } else if (this.tabIndex === 1) {
+        this.componentData1.entity = this.HaveJson(this.entityCopy1)
+      } else if (this.tabIndex === 2) {
+        this.componentData2.entity = this.HaveJson(this.entityCopy2)
+      }  else if (this.tabIndex === 4) {
+        this.componentData4.entity = this.HaveJson(this.entityCopy4)
+      } else {
+        this.componentData3.entity = this.HaveJson(this.entityCopy3)
+      }
+      this.refreshTable()
+    },
+    // 涓嬪崟
+    playOrder(num) {
+      if (typeof num === "number") {
+        this.active = num
+      } else {
+        this.active = 1
+        this.orderType = 0
+        this.isCopper = 0
+        this.customsInspection = num
+      }
+      if (num === 0) {
+        this.refreshTable('page')
+      }
+    },
+    // 瀛e害妫�楠屼笅鍗�
+    playOrderSec (row) {
+      if (typeof row === "number") {
+        this.active = row
+      } else {
+        this.active = 1
+        this.orderType = 1
+        this.isCopper = 0
+        this.customsInspection = row
+      }
+      if (row === 0) {
+        this.refreshTable('page')
+      }
+    },
+    // 鎵撳紑鍏嶆寮规
+    exemption (row) {
+      this.exemptionVisible = true
+      this.exemptionInfo = row
+      this.$set(this.exemptionInfo, 'partDetail', row.partDesc)
+    },
+    // 鎻愪氦鍏嶆淇℃伅
+    submitExemption () {
+      this.exemptionLoading = true
+      this.$axios.post(this.$api.rawMaterialOrder.rawOrderRelease, {
+        ifsInventoryId: this.exemptionInfo.id,
+        partDetail: this.exemptionInfo.partDetail
+      }, {
+        headers: {
+          'Content-Type': 'application/json'
+        },
+        noQs: true
+      }).then(res => {
+        if (res.code === 200) {
+          this.exemptionVisible = false
+          this.$message.success('鎿嶄綔鎴愬姛')
+          this.refresh()
+        }
+        this.exemptionLoading = false
+      }).catch(err => {
+        console.log(err)
+        this.exemptionLoading = false
+      })
+    },
+    // 鎵撳紑鎾ら攢鎶ユ寮规
+    cancelDeclare (row) {
+      this.declareDialogVisible = true
+      this.insOrderRow = row
+    },
+    // 鎻愪氦鎾ら攢鎶ユ鐢宠
+    submitDeclare () {
+      this.$axios.post(this.$api.rawMaterialOrder.revokeInspectionReport, {
+        id: this.insOrderRow.id
+      }).then(res => {
+        if (res.code === 200) {
+          this.declareDialogVisible = false
+          this.refreshTable('page')
+          this.$message.success("鎾ら攢鎶ユ鎴愬姛")
+        }
+      }).catch(err => {
+        console.log(err)
+      })
+    },
+    // 鎵撳紑鎾ら攢涓嬪崟鐨勫脊妗�
+    cancelOrder (row) {
+      if (row.enterOrderId && row.quarterOrderId) {
+        this.quashDialogVisible = true
+      } else if (row.enterOrderId && !row.quarterOrderId) {
+        this.$confirm('鏄惁鎾ら攢杩涘巶涓嬪崟?', "璀﹀憡", {
+          confirmButtonText: "纭畾",
+          cancelButtonText: "鍙栨秷",
+          type: "warning"
+        }).then(() => {
+          this.$axios.post(this.$api.rawMaterialOrder.repealEnterRawOrder + '?enterOrderId=' + row.enterOrderId).then(res => {
+            if (res.code === 200) {
+              this.$message.success('鎾ら攢鎴愬姛')
+              this.refreshTable('page')
+            }
+          })
+        }).catch(() => {})
+      } else if (!row.enterOrderId && row.quarterOrderId) {
+        this.$confirm('鏄惁鎾ら攢瀛e害涓嬪崟?', "璀﹀憡", {
+          confirmButtonText: "纭畾",
+          cancelButtonText: "鍙栨秷",
+          type: "warning"
+        }).then(() => {
+          this.$axios.post(this.$api.rawMaterialOrder.repealQuarterRawOrder + '?quarterOrderId=' + row.quarterOrderId).then(res => {
+            if (res.code === 200) {
+              this.$message.success('鎾ら攢鎴愬姛')
+              this.refreshTable('page')
+            }
+          })
+        }).catch(() => {})
+      }
+      this.insOrderRow = row
+    },
+    cancelQuashOrder (type) {
+      console.log('type---', type)
+      const url = type === 'enterOrderId' ? this.$api.rawMaterialOrder.repealEnterRawOrder : this.$api.rawMaterialOrder.repealQuarterRawOrder
+      const name = type === 'enterOrderId' ? 'enterOrderId' : 'quarterOrderId'
+      const paramInfo = type === 'enterOrderId' ? this.insOrderRow.enterOrderId : this.insOrderRow.quarterOrderId
+      this.$confirm('鏄惁鎾ら攢褰撳墠鏁版嵁?', "璀﹀憡", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      }).then(() => {
+        this.$axios.post(url + `?${name}=` + paramInfo).then(res => {
+          if (res.code === 200) {
+            this.$message.success('鎾ら攢鎴愬姛')
+            this.refreshTable('page')
+          }
+        })
+      }).catch(() => {})
+    },
+    // 鐐瑰嚮鏍峰搧鍚嶇О鏌ョ湅璇︽儏
+    selectAllByOne(row) {
+      this.currentId = row.insOrderId
+      this.isCopper = row.isCopper
+      if (this.isCopper == 1) {
+        this.currentId = row.enterOrderId
+      }
+      this.customsInspection = row
+      this.active = 2;
+    },
+    // 鏁版嵁鏌ョ湅
+    handleDataLook(row) {
+      this.dataDialogVisible = true;
+      this.dataLookInfo = row
+    },
+    // 鍏抽棴鏁版嵁鏌ョ湅寮规
+    closeDataLook () {
+      this.dataDialogVisible = false
+    },
+    // 闄勪欢鏌ョ湅
+    handleFileLook (row) {
+      this.filesDialogVisible = true
+      this.filesLookInfo = row
+    },
+    // 鍏抽棴闄勪欢鏌ョ湅寮规
+    closeFilesLook () {
+      this.filesDialogVisible = false
+    },
+    // 闄勪欢涓嬭浇
+    handleDown(row){
+      this.$axios.post(this.$api.insOrderPlan.downFile, {
+        id: row.id,
+      }).then(res => {
+        if (res.code === 200) {
+          let url = '';
+          if(res.data.type==1){
+            url = this.javaApi+'/img/'+res.data.fileUrl
+            file.downloadIamge(url,row.fileName)
+          }else{
+            url = this.javaApi+'/word/'+res.data.fileUrl
+            const link = document.createElement('a');
+            link.href = url;
+            link.download = row.fileName;
+            link.click();
+          }
+        }
+      }).catch(error => {
+
+      })
+    },
+    // 鎶ュ憡涓嬭浇
+    download(row) {
+      this.downFileDialogVisible = true
+      this.downLoadInfo = row
+    },
+    // 鍏抽棴鎶ュ憡涓嬭浇寮规
+    closeDownFileDialog () {
+      this.downFileDialogVisible = false
+    },
+    // 鏌ョ湅浜т笟閾句俊鎭�
+    openInfoDialog (row) {
+      this.showInfoDialog = true
+      this.$nextTick(() => {
+        this.$refs.showInfoDialog.getInfo(row.id)
+      })
+    },
+    // 淇敼濮旀墭缂栧彿
+    changeEntrustCode (row) {
+      this.entrustCodeVisible = true
+      this.entrustCodeInfo = {...row}
+    },
+    // 瀵煎嚭
+    handleOut(){
+      let entity = this.tabIndex === 3 ? {...this.componentData3.entity} : {...this.componentData2.entity}
+      delete entity.orderBy
+      this.outLoading = true
+      this.$axios.post(this.$api.rawMaterialOrder.rawAllExport,{
+        entity:entity
+      },{
+        headers: {
+          'Content-Type': 'application/json'
+        }
+        ,responseType: "blob"}).then(res => {
+        this.outLoading = false
+        this.$message.success('瀵煎嚭鎴愬姛')
+        const blob = new Blob([res],{ type: 'application/octet-stream' });
+        const url = URL.createObjectURL(blob);
+        const link = document.createElement('a');
+        link.href = url;
+        link.download = '鍘熸潗鏂欐娴嬩俊鎭鍑�.xlsx';
+        link.click();
+      })
+    },
+    submitCode () {
+      this.submitCodeLoading = true
+      try {
+        this.$axios.post(this.$api.insOrderPlan.updateEntrustCode, {
+          id: this.entrustCodeInfo.id,
+          entrustCode: this.entrustCodeInfo.entrustCode,
+        }, {
+          headers: {
+            'Content-Type': 'application/json'
+          }
+        }).then(res => {
+          if (res.code === 200) {
+            this.entrustCodeVisible = false
+            this.$message.success('淇敼鎴愬姛')
+          }
+          this.submitCodeLoading = false
+        })
+      } catch (e) {
+        this.submitCodeLoading = false
+      }
+    },
+    // 鍒囨崲涓嬪崟tab琛ㄦ牸
+    handleTab(m) {
+      this.tabIndex = m.value;
+      if (this.tabIndex === 0) {
+        this.componentData.entity.updateBatchNo = this.entity.updateBatchNo
+        this.componentData.entity.partDesc = this.entity.partDesc
+      } else if (this.tabIndex === 1) {
+        this.componentData1.entity.updateBatchNo = this.entity.updateBatchNo
+        this.componentData1.entity.entrustCode = this.entity.entrustCode
+        this.componentData1.entity.partDesc = this.entity.partDesc
+      }  else if (this.tabIndex === 4) {
+        this.componentData4.entity.updateBatchNo = this.entity.updateBatchNo
+        this.componentData4.entity.entrustCode = this.entity.entrustCode
+        this.componentData4.entity.partDesc = this.entity.partDesc
+      } else {
+        this.componentData2.entity.updateBatchNo = this.entity.updateBatchNo
+        this.componentData2.entity.entrustCode = this.entity.entrustCode
+        this.componentData2.entity.partDesc = this.entity.partDesc
+      }
+      this.refreshTable()
+    },
+    // 琛ㄦ牸閫夋嫨鏂规硶
+    selectMethod(val){
+      this.multipleSelection = val
+    },
+    changeRowClass({row, rowIndex}) {
+      if (row.isFirst == 1) {
+        return 'highlight-danger-row-border'
+      }
+      return ''
+    },
+    getStyle(){
+      return 'height: calc(100% - '+(this.more?'94':'44')+'px)'
+    }
+  },
+}
+</script>
+
+<style scoped>
+.app-container {
+  padding-top: 0;
+}
+.title {
+  height: 60px;
+  line-height: 60px;
+}
+.tab {
+  list-style-type: none;
+  display: flex;
+  margin-bottom: 12px;
+  margin-top: 0;
+  padding-left: 0;
+}
+
+.tab li {
+  line-height: 24px;
+  padding: 6px 14px;
+  font-size: 14px;
+  color: #333333;
+  border: 1px solid #EEEEEE;
+  cursor: pointer;
+}
+
+.tab li:nth-child(1) {
+  border-radius: 8px 0 0 8px;
+}
+
+.tab li:nth-child(5) {
+  border-radius: 0 8px 8px 0;
+}
+
+.tab li.active {
+  border-color: #3A7BFA;
+  color: #3A7BFA;
+}
+</style>
diff --git a/src/views/business/rawMaterialInspection/index.vue b/src/views/business/rawMaterialInspection/index.vue
index 4eaa8af..7d35fd0 100644
--- a/src/views/business/rawMaterialInspection/index.vue
+++ b/src/views/business/rawMaterialInspection/index.vue
@@ -4,7 +4,7 @@
       <el-row class="title">
         <el-col :span="12" style="text-align: left;">鍘熸潗鏂欐姤妫�</el-col>
         <el-col :span="12" style="text-align: right;">
-          <el-button v-show="tabIndex === 4" :loading="outLoading" size="medium" type="primary" @click="handleDown">瀵煎嚭</el-button>
+          <el-button v-show="tabIndex === 4" :loading="outLoading" size="small" type="primary" @click="handleDown">瀵煎嚭</el-button>
           <el-button v-if="isShowIFS && tabIndex === 0" :loading="btnLoading" size="small" type="primary" @click="openIFS">鑾峰彇IFS璁㈠崟</el-button>
           <el-button v-if="tabIndex === 0" size="small" type="primary" @click="declareS">鎶ユ</el-button>
           <el-button v-if="tabIndex === 0" size="small" type="primary" @click="addDeclare">鏂板鎶ユ淇℃伅</el-button>
@@ -37,11 +37,9 @@
                       @keyup.enter.native="refreshTable">
             </el-input>
           </el-form-item>
-<!--          <div class="search_thing" style="padding-left: 30px;">-->
-            <el-button v-if="tabIndex === 3 || tabIndex === 4" :icon="!more?'el-icon-arrow-down':'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more=!more">{{!more?'鏇村':'鏀惰捣'}}</el-button>
+          <el-button v-if="tabIndex === 3 || tabIndex === 4" :icon="!more?'el-icon-arrow-down':'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more=!more">{{!more?'鏇村':'鏀惰捣'}}</el-button>
           <el-button size="small" icon="el-icon-search" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
           <el-button size="small" @click="refresh()" icon="el-icon-refresh">閲� 缃�</el-button>
-<!--          </div>-->
         </el-row>
         <el-row>
           <el-form-item label="妫�楠岀姸鎬�" prop="menuName" v-if="(tabIndex === 3 || tabIndex === 4) && more">
diff --git a/src/views/index.vue b/src/views/index.vue
index 88ee360..db59dcc 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -587,7 +587,7 @@
   width: 100%;
   margin-top: 20px;
   display: flex;
-  align-items: start;
+  align-items: flex-start;
   justify-content: space-between;
 }
 >>>.el-calendar__header {
@@ -667,7 +667,7 @@
 }
 .list3-item-title{
   display: flex;
-  align-items: start;
+  align-items: flex-start;
   margin-bottom: 10px;
 }
 .list3-item-info{

--
Gitblit v1.9.3