Quellcode durchsuchen

部分新需求

cz vor 1 Jahr
Ursprung
Commit
4a81b1a32d
62 geänderte Dateien mit 1788 neuen und 519 gelöschten Zeilen
  1. 56 122
      src/components/PDF/paymentPDF.vue
  2. 15 43
      src/components/PDF/purchasePDFOne.vue
  3. 18 52
      src/components/PDF/purchasePDFOneNew.vue
  4. 5 5
      src/components/contractCom/contractDetails.vue
  5. 1 1
      src/components/contractCom/contractDetailsOne.vue
  6. 2 2
      src/components/contractCom/productContract.vue
  7. 2 2
      src/components/contractCom/selectContract.vue
  8. 1 1
      src/components/contractCom/selectPurchase.vue
  9. 1 1
      src/components/detailCom/profitSettlementEHSD/index.vue
  10. 1 1
      src/components/headerBar/header-bar.vue
  11. 1 1
      src/components/process/EHSD/ContractChange.vue
  12. 7 7
      src/components/process/EHSD/Purchase.vue
  13. 5 5
      src/components/process/EHSD/PurchaseChange.vue
  14. 8 7
      src/components/process/PurchasePayment.vue
  15. 330 0
      src/components/process/SF/AfterSales.vue
  16. 3 2
      src/components/process/SF/Contract.vue
  17. 2 2
      src/components/process/SF/ContractChange.vue
  18. 12 1
      src/components/process/SF/DiscussPrice.vue
  19. 2 2
      src/components/process/SF/Purchase.vue
  20. 2 2
      src/components/process/SF/PurchaseChange.vue
  21. 60 11
      src/components/process/SF/ReturnGood.vue
  22. 2 2
      src/components/process/SendPurchase.vue
  23. 1 1
      src/views/EHSD/procurement/handoverSlipEHSD/index.vue
  24. 4 4
      src/views/EHSD/procurement/profitBudgetEHSD/index.vue
  25. 1 1
      src/views/EHSD/procurement/profitSettlementEHSD/index.vue
  26. 35 9
      src/views/EHSD/procurement/purchasedEHSD/index.vue
  27. 1 1
      src/views/EHSD/procurement/purchasedEHSD/selectPurchased.vue
  28. 7 1
      src/views/EHSD/procurement/returnGood/index.vue
  29. 5 0
      src/views/EHSD/productLibrary/companyProduct/index.vue
  30. 14 3
      src/views/EHSD/productLibrary/waitCreateProduct/index.vue
  31. 27 11
      src/views/EHSD/saleContract/dailyReport/index.vue
  32. 412 0
      src/views/EHSD/saleContract/dailyReport/monthIndex.vue
  33. 4 0
      src/views/EHSD/saleContract/priceSheetEHSD/index.vue
  34. 1 1
      src/views/EHSD/saleContract/priceSheetForeign/index.vue
  35. 416 0
      src/views/EHSD/saleContract/salesThemeAnalysis/index.vue
  36. 108 57
      src/views/JST/order/index.vue
  37. 9 6
      src/views/MES/productionOrder/index.vue
  38. 71 27
      src/views/MES/reportDetail/index.vue
  39. 2 2
      src/views/connect/E-mail/mail/com/right.vue
  40. 14 52
      src/views/connect/E-mail/mail/com/right/contract/pi.vue
  41. 1 1
      src/views/customer/portrait/com/LatestProgress.vue
  42. 1 1
      src/views/finance/fundManage/accountStatement/index.vue
  43. 1 1
      src/views/finance/fundManage/flow/index.vue
  44. 9 1
      src/views/process/processApproval/index.vue
  45. 2 2
      src/views/publicModule/contractTemplate/index.vue
  46. 1 1
      src/views/purchaseManage/purchaseManage/alreadyPurchase/index.vue
  47. 3 3
      src/views/purchaseManage/purchaseManage/purchaseDocumentary/index.vue
  48. 1 1
      src/views/purchaseManage/purchasePayment/invoice/index.vue
  49. 1 1
      src/views/purchaseManage/purchasePayment/paymentBill/index.vue
  50. 7 1
      src/views/purchaseSales/outAndInWarehouse/manualDelivery/index.vue
  51. 5 1
      src/views/purchaseSales/outAndInWarehouse/manualWarehousing/index.vue
  52. 3 0
      src/views/purchaseSales/outAndInWarehouse/waitingForDelivery/index.vue
  53. 26 8
      src/views/salesMange/afterSales/index.vue
  54. 4 3
      src/views/salesMange/saleContract/claim/index.vue
  55. 3 3
      src/views/salesMange/saleContract/contract/index.vue
  56. 1 1
      src/views/salesMange/saleContract/middle/index.vue
  57. 1 1
      src/views/salesMange/saleContract/priceSheet/index.vue
  58. 3 3
      src/views/salesMange/saleContract/salesDocumentary/index.vue
  59. 2 2
      src/views/salesMange/salesMange/performance/index.vue
  60. 2 2
      src/views/salesMange/salesMange/profitSettlement/index.vue
  61. 27 17
      src/views/salesMange/shipmentMange/packing/index.vue
  62. 16 17
      src/views/systemTenant/tenant/deptTenant/index.vue

+ 56 - 122
src/components/PDF/paymentPDF.vue

@@ -3,19 +3,15 @@
     <div id="pdfDom" style="width: 776px">
       <div style="padding: 60px; font-size: 12px !important; color: black">
         <div style="font-size: 16px; text-align: center; padding: 8px">
-          <span
-            >采购付款 (
-            {{ dictValueLabel(printDetails.type, payMethod) }})</span
-          >
+          <span>采购付款 (
+            {{ dictValueLabel(printDetails.type, payMethod) }})</span>
         </div>
         <div style="padding: 8px 0">
           <span>创建时间: {{ printDetails.createTime }}</span>
         </div>
         <div style="border: 1px solid black">
           <div style="display: flex; border-bottom: 1px solid black">
-            <div
-              style="width: 150px; border-right: 1px solid black; padding: 8px"
-            >
+            <div style="width: 150px; border-right: 1px solid black; padding: 8px">
               创建人
             </div>
             <div style="width: calc(100% - 150px); padding: 8px">
@@ -23,9 +19,7 @@
             </div>
           </div>
           <div style="display: flex; border-bottom: 1px solid black">
-            <div
-              style="width: 150px; border-right: 1px solid black; padding: 8px"
-            >
+            <div style="width: 150px; border-right: 1px solid black; padding: 8px">
               创建人部门
             </div>
             <div style="width: calc(100% - 150px); padding: 8px">
@@ -33,111 +27,88 @@
             </div>
           </div>
           <div style="display: flex; border-bottom: 1px solid black">
-            <div
-              style="
+            <div style="
                 width: 150px;
                 border-right: 1px solid black;
                 padding: 4px 8px;
                 display: flex;
                 align-items: center;
-              "
-            >
+              ">
               费用明细
             </div>
             <div style="width: calc(100% - 150px)">
               <div style="border-bottom: 1px solid black; display: flex">
-                <div
-                  style="
+                <div style="
                     width: 120px;
                     padding: 4px 8px;
                     border-right: 1px solid black;
                     text-align: center;
-                  "
-                >
-                  采购合同
+                  ">
+                  采购订单
                 </div>
-                <div
-                  style="
+                <div style="
                     width: calc(100% - 340px);
                     padding: 4px 8px;
                     border-right: 1px solid black;
                     text-align: center;
-                  "
-                >
+                  ">
                   款项说明
                 </div>
-                <div
-                  style="
+                <div style="
                     width: 80px;
                     padding: 4px 8px;
                     border-right: 1px solid black;
                     text-align: center;
-                  "
-                >
+                  ">
                   货币
                 </div>
                 <div style="width: 140px; padding: 4px 8px; text-align: center">
                   付款金额
                 </div>
               </div>
-              <template
-                v-if="
+              <template v-if="
                   printDetails.payDetailVoList &&
                   printDetails.payDetailVoList.length > 0
-                "
-              >
-                <div
-                  v-for="(item, index) in printDetails.payDetailVoList"
-                  :key="index"
-                >
-                  <div
-                    :style="
+                ">
+                <div v-for="(item, index) in printDetails.payDetailVoList" :key="index">
+                  <div :style="
                       index + 1 !== printDetails.payDetailVoList.length
                         ? 'border-bottom: 1px solid black;  display: flex'
                         : ' display: flex'
-                    "
-                  >
-                    <div
-                      style="
+                    ">
+                    <div style="
                         width: 120px;
                         padding: 4px 8px;
                         border-right: 1px solid black;
                         display: flex;
                         align-items: center;
-                      "
-                    >
+                      ">
                       {{ item.purchaseCode }}
                     </div>
-                    <div
-                      style="
+                    <div style="
                         width: calc(100% - 340px);
                         padding: 4px 8px;
                         border-right: 1px solid black;
                         display: flex;
                         align-items: center;
-                      "
-                    >
+                      ">
                       {{ item.remark }}
                     </div>
-                    <div
-                      style="
+                    <div style="
                         width: 80px;
                         padding: 4px 8px;
                         border-right: 1px solid black;
                         display: flex;
                         align-items: center;
-                      "
-                    >
+                      ">
                       人民币
                     </div>
-                    <div
-                      style="
+                    <div style="
                         width: 140px;
                         padding: 4px 8px;
                         display: flex;
                         align-items: center;
-                      "
-                    >
+                      ">
                       {{ item.money }}
                     </div>
                   </div>
@@ -146,28 +117,22 @@
             </div>
           </div>
           <div style="display: flex; border-bottom: 1px solid black">
-            <div
-              style="width: 150px; border-right: 1px solid black; padding: 8px"
-            >
+            <div style="width: 150px; border-right: 1px solid black; padding: 8px">
               总报销金额
             </div>
             <div style="width: calc(100% - 150px); display: flex">
-              <div
-                style="
+              <div style="
                   width: calc(100% - 140px);
                   padding: 8px;
                   border-right: 1px solid black;
-                "
-              >
+                ">
                 {{ NumberToChinese(computeMoney()) }}
               </div>
               <div style="width: 140px; padding: 8px">{{ computeMoney() }}</div>
             </div>
           </div>
           <div style="display: flex; border-bottom: 1px solid black">
-            <div
-              style="width: 150px; border-right: 1px solid black; padding: 8px"
-            >
+            <div style="width: 150px; border-right: 1px solid black; padding: 8px">
               单据数量
             </div>
             <div style="width: calc(100% - 150px); padding: 8px">
@@ -175,47 +140,39 @@
             </div>
           </div>
           <div style="display: flex; border-bottom: 1px solid black">
-            <div
-              style="
+            <div style="
                 width: 150px;
                 border-right: 1px solid black;
                 padding: 0 8px;
                 display: flex;
                 align-items: center;
-              "
-            >
+              ">
               收款信息
             </div>
             <div style="width: calc(100% - 150px)">
               <div style="border-bottom: 1px solid black; display: flex">
-                <div
-                  style="
+                <div style="
                     width: 19%;
                     padding: 0 8px;
                     border-right: 1px solid black;
                     text-align: center;
-                  "
-                >
+                  ">
                   支付方式
                 </div>
-                <div
-                  style="
+                <div style="
                     width: 27%;
                     padding: 0 8px;
                     border-right: 1px solid black;
                     text-align: center;
-                  "
-                >
+                  ">
                   收款方户名
                 </div>
-                <div
-                  style="
+                <div style="
                     width: 27%;
                     padding: 0 8px;
                     border-right: 1px solid black;
                     text-align: center;
-                  "
-                >
+                  ">
                   开户行
                 </div>
                 <div style="width: 27%; padding: 0 8px; text-align: center">
@@ -223,56 +180,46 @@
                 </div>
               </div>
               <div style="display: flex">
-                <div
-                  style="
+                <div style="
                     width: 19%;
                     padding: 0 8px;
                     border-right: 1px solid black;
                     display: flex;
                     align-items: center;
-                  "
-                >
+                  ">
                   {{ dictValueLabel(printDetails.payType, fundsPaymentMethod) }}
                 </div>
-                <div
-                  style="
+                <div style="
                     width: 27%;
                     padding: 0 8px;
                     border-right: 1px solid black;
                     display: flex;
                     align-items: center;
-                  "
-                >
+                  ">
                   {{ printDetails.name }}
                 </div>
-                <div
-                  style="
+                <div style="
                     width: 27%;
                     padding: 0 8px;
                     border-right: 1px solid black;
                     display: flex;
                     align-items: center;
-                  "
-                >
+                  ">
                   {{ printDetails.openingBank }}
                 </div>
-                <div
-                  style="
+                <div style="
                     width: 27%;
                     padding: 0 8px;
                     display: flex;
                     align-items: center;
-                  "
-                >
+                  ">
                   {{ printDetails.accountOpening }}
                 </div>
               </div>
             </div>
           </div>
           <div style="display: flex; border-bottom: 1px solid black">
-            <div
-              style="width: 150px; border-right: 1px solid black; padding: 8px"
-            >
+            <div style="width: 150px; border-right: 1px solid black; padding: 8px">
               电子发票(PDF/JPG)
             </div>
             <div style="width: calc(100% - 150px); padding: 8px">
@@ -280,37 +227,26 @@
             </div>
           </div>
           <div style="display: flex">
-            <div
-              style="
+            <div style="
                 width: 150px;
                 border-right: 1px solid black;
                 padding: 4px 8px;
                 display: flex;
                 align-items: center;
-              "
-            >
+              ">
               审批流程
             </div>
             <div style="width: calc(100% - 150px)">
-              <template
-                v-if="
+              <template v-if="
                   printDetails.recordList && printDetails.recordList.length > 0
-                "
-              >
-                <div
-                  v-for="(item, index) in printDetails.recordList"
-                  :key="index"
-                >
-                  <div
-                    :style="
+                ">
+                <div v-for="(item, index) in printDetails.recordList" :key="index">
+                  <div :style="
                       index + 1 !== printDetails.recordList.length
                         ? 'border-bottom: 1px solid black; padding: 4px 8px; display: flex'
                         : 'padding: 4px 8px; display: flex'
-                    "
-                  >
-                    <div
-                      style="width: calc(100% - 120px); word-wrap: break-word"
-                    >
+                    ">
+                    <div style="width: calc(100% - 120px); word-wrap: break-word">
                       <span>{{ item.nodeName }}: </span>
                       <span style="padding-left: 4px">{{
                         item.processedUser
@@ -326,9 +262,7 @@
         </div>
         <div style="padding-top: 16px">
           <span>打印时间: {{ presentTime }}</span>
-          <span style="padding-left: 32px"
-            >打印人: {{ useUserStore().user.nickName }}</span
-          >
+          <span style="padding-left: 32px">打印人: {{ useUserStore().user.nickName }}</span>
         </div>
       </div>
     </div>

+ 15 - 43
src/components/PDF/purchasePDFOne.vue

@@ -3,17 +3,10 @@
     <div id="pdfDom" ref="pdfDom" style="width: 840px" v-loading="loading">
       <div style="display: flex; align-items: center">
         <div>
-          <img
-            :src="pdfData.companyPic"
-            alt=""
-            fit="scale-down"
-            style="height: 60px; width: 60px"
-          />
+          <img :src="pdfData.companyPic" alt="" fit="scale-down" style="height: 60px; width: 60px" />
         </div>
         <div style="padding: 10px 30px" class="center-class">
-          <div
-            style="font-size: 16px; color: rgb(132, 151, 176); font-weight: 700"
-          >
+          <div style="font-size: 16px; color: rgb(132, 151, 176); font-weight: 700">
             {{ pdfData.buyCorporationName }}
           </div>
           <div>
@@ -29,11 +22,8 @@
           </div>
         </div>
       </div>
-      <div
-        style="margin-top: 30px; font-size: 16px; font-weight: 700"
-        class="center-class"
-      >
-        采购合同
+      <div style="margin-top: 30px; font-size: 16px; font-weight: 700" class="center-class">
+        采购订单
       </div>
       <div style="margin: 10px 0px 20px 0px" class="center-class">
         {{ pdfData.code }}
@@ -61,21 +51,14 @@
           <td style="width: 15%" class="center-class">单价</td>
           <td style="width: 17%" class="center-class">总价</td>
         </tr>
-        <template
-          v-if="
+        <template v-if="
             pdfData.ehsdPurchaseProductList &&
             pdfData.ehsdPurchaseProductList.length > 0
-          "
-        >
+          ">
           <tr v-for="item in pdfData.ehsdPurchaseProductList" :key="item.id">
             <td style="width: 15%" class="center-class">
-              <img
-                :src="item.fileList[0].fileUrl"
-                alt=""
-                fit="scale-down"
-                style="height: 60px; width: 60px"
-                v-if="item.fileList && item.fileList.length > 0"
-              />
+              <img :src="item.fileList[0].fileUrl" alt="" fit="scale-down" style="height: 60px; width: 60px"
+                   v-if="item.fileList && item.fileList.length > 0" />
             </td>
 
             <td style="width: 20%" class="center-class">
@@ -95,26 +78,18 @@
             </td>
           </tr>
         </template>
-        <template
-          v-if="
+        <template v-if="
             pdfData.purchaseProjectList &&
             pdfData.purchaseProjectList.length > 0
-          "
-        >
+          ">
           <tr>
             <td colspan="5" style="text-align: right">
-              <div
-                v-for="(item, index) in pdfData.purchaseProjectList"
-                :key="item.id"
-              >
+              <div v-for="(item, index) in pdfData.purchaseProjectList" :key="item.id">
                 {{ item.payName }}:
               </div>
             </td>
             <td class="center-class">
-              <div
-                v-for="(item, index) in pdfData.purchaseProjectList"
-                :key="item.id"
-              >
+              <div v-for="(item, index) in pdfData.purchaseProjectList" :key="item.id">
                 {{ pdfData.currency }}
                 {{ moneyFormat(item.amount, 2) }}
               </div>
@@ -232,17 +207,14 @@
           <td class="center-class">出货时间</td>
           <td class="center-class">出货数量</td>
         </tr>
-        <template
-          v-if="
+        <template v-if="
             pdfData.purchaseArrivalList &&
             pdfData.purchaseArrivalList.length > 0
-          "
-        >
+          ">
           <tr v-for="item in pdfData.purchaseArrivalList" :key="item.id">
             <td>{{ item.productName }}</td>
             <td>
-              <span v-if="item.arrivalTime"
-                >{{ item.arrivalTime.slice(0, 10) }}
+              <span v-if="item.arrivalTime">{{ item.arrivalTime.slice(0, 10) }}
               </span>
             </td>
             <td>{{ item.quantity }}</td>

+ 18 - 52
src/components/PDF/purchasePDFOneNew.vue

@@ -4,13 +4,7 @@
       <table style="width: 100%" class="table">
         <tr>
           <td style="width: 15%">
-            <img
-              :src="pdfData.companyPic"
-              alt=""
-              fit="scale-down"
-              style="height: 60px; width: 60px"
-              v-if="pdfData.companyPic && isShowImg"
-            />
+            <img :src="pdfData.companyPic" alt="" fit="scale-down" style="height: 60px; width: 60px" v-if="pdfData.companyPic && isShowImg" />
           </td>
           <td colspan="5">
             <div style="font-size: 16px; color: #8497b0; font-weight: 700">
@@ -30,11 +24,8 @@
           </td>
         </tr>
         <tr>
-          <td
-            colspan="6"
-            style="padding-top: 30px; font-size: 16px; font-weight: 700"
-          >
-            采购合同
+          <td colspan="6" style="padding-top: 30px; font-size: 16px; font-weight: 700">
+            采购订单
           </td>
         </tr>
         <tr>
@@ -68,21 +59,14 @@
           <td style="width: 16%">单价</td>
           <td style="width: 17%">总价</td>
         </tr>
-        <template
-          v-if="
+        <template v-if="
             pdfData.ehsdPurchaseProductList &&
             pdfData.ehsdPurchaseProductList.length > 0
-          "
-        >
+          ">
           <tr v-for="item in pdfData.ehsdPurchaseProductList" :key="item.id">
             <td>
-              <img
-                :src="item.fileList[0].fileUrl"
-                alt=""
-                fit="scale-down"
-                style="height: 60px; width: 60px"
-                v-if="item.fileList && item.fileList.length > 0 && isShowImg"
-              />
+              <img :src="item.fileList[0].fileUrl" alt="" fit="scale-down" style="height: 60px; width: 60px"
+                   v-if="item.fileList && item.fileList.length > 0 && isShowImg" />
             </td>
 
             <td>
@@ -98,26 +82,18 @@
             <td>{{ pdfData.currency }} {{ moneyFormat(item.amount, 2) }}</td>
           </tr>
         </template>
-        <template
-          v-if="
+        <template v-if="
             pdfData.purchaseProjectList &&
             pdfData.purchaseProjectList.length > 0
-          "
-        >
+          ">
           <tr>
             <td colspan="5" style="text-align: right">
-              <div
-                v-for="(item, index) in pdfData.purchaseProjectList"
-                :key="item.id"
-              >
+              <div v-for="(item, index) in pdfData.purchaseProjectList" :key="item.id">
                 {{ item.payName }}:
               </div>
             </td>
             <td>
-              <div
-                v-for="(item, index) in pdfData.purchaseProjectList"
-                :key="item.id"
-              >
+              <div v-for="(item, index) in pdfData.purchaseProjectList" :key="item.id">
                 {{ pdfData.currency }}
                 {{ moneyFormat(item.amount, 2) }}
               </div>
@@ -215,19 +191,16 @@
           <td colspan="2">出货时间</td>
           <td colspan="2">出货数量</td>
         </tr>
-        <template
-          v-if="
+        <template v-if="
             pdfData.purchaseArrivalList &&
             pdfData.purchaseArrivalList.length > 0
-          "
-        >
+          ">
           <tr v-for="item in pdfData.purchaseArrivalList" :key="item.id">
             <td colspan="2">
               {{ item.productName }}
             </td>
             <td colspan="2">
-              <span v-if="item.arrivalTime"
-                >{{ item.arrivalTime.slice(0, 10) }}
+              <span v-if="item.arrivalTime">{{ item.arrivalTime.slice(0, 10) }}
               </span>
             </td>
             <td colspan="2">{{ item.quantity }}</td>
@@ -240,20 +213,13 @@
             <div style="height: 20px"></div>
           </td>
         </tr>
-        <template
-          v-for="item in pdfData.ehsdPurchaseProductListOne"
-          :key="item.id"
-        >
+        <template v-for="item in pdfData.ehsdPurchaseProductListOne" :key="item.id">
           <tr>
             <td colspan="6" style="font-weight: 700">{{ item.productName }}</td>
           </tr>
           <tr>
             <td colspan="6" style="text-align: left">
-              <div
-                v-if="item.remark"
-                style="width: 720px; overflow: auto"
-                class="img"
-              >
+              <div v-if="item.remark" style="width: 720px; overflow: auto" class="img">
                 <div v-html="getHtmlStr(item.remark)"></div>
               </div>
               <div v-else style="height: 15px"></div>
@@ -379,8 +345,8 @@ const exportExcel = () => {
   setTimeout(() => {
     $("#pdfDom").table2excel({
       exclude: ".noExl",
-      sheetName: `采购合同${pdfData.value.code}`,
-      filename: `采购合同${pdfData.value.code}`,
+      sheetName: `采购订单${pdfData.value.code}`,
+      filename: `采购订单${pdfData.value.code}`,
       exclude_img: false,
       exclude_links: false,
       exclude_inputs: true,

+ 5 - 5
src/components/contractCom/contractDetails.vue

@@ -1,8 +1,8 @@
 <template>
   <div style="background: #fff; padding: 0 20px">
     <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick" @tab-change="handleChange" stretch>
-      <el-tab-pane label="销售合同" name="first"></el-tab-pane>
-      <el-tab-pane label="采购合同" name="second"></el-tab-pane>
+      <el-tab-pane label="销售订单" name="first"></el-tab-pane>
+      <el-tab-pane label="采购订单" name="second"></el-tab-pane>
       <el-tab-pane label="交易明细" name="third"></el-tab-pane>
       <el-tab-pane label="外销跟单" name="four"> </el-tab-pane>
       <el-tab-pane label="预算表" name="five" v-if="isShowSalesFinancemanArrange">
@@ -183,7 +183,7 @@ const handleItemClick = (item) => {
       id: currentItem.value.flowId,
       processType: 20,
       random: proxy.random(),
-      flowName: "销售合同详情",
+      flowName: "销售订单详情",
 
       businessId: currentItem.value.id,
     };
@@ -209,7 +209,7 @@ const pushProcessApproval = (row) => {
       id: row.flowId,
       processType: 20,
       random: proxy.random(),
-      flowName: "销售合同详情",
+      flowName: "销售订单详情",
 
       businessId: row.id,
     },
@@ -226,7 +226,7 @@ const pushProcessApproval = (row) => {
 //       id: row.flowId,
 //       processType: 20,
 //       random: proxy.random(),
-//       flowName: "销售合同详情",
+//       flowName: "销售订单详情",
 //
 //       businessId: row.id,
 //     },

+ 1 - 1
src/components/contractCom/contractDetailsOne.vue

@@ -2,7 +2,7 @@
   <div style="background: #fff; padding: 0 20px">
     <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick" @tab-change="handleChange" stretch>
       <el-tab-pane label="样品单" name="first"></el-tab-pane>
-      <el-tab-pane label="采购合同" name="second"></el-tab-pane>
+      <el-tab-pane label="采购订单" name="second"></el-tab-pane>
       <el-tab-pane label="交易明细" name="third"></el-tab-pane>
     </el-tabs>
     <div class="content-box" v-if="activeName !== 'third'">

+ 2 - 2
src/components/contractCom/productContract.vue

@@ -386,7 +386,7 @@ const newContract = () => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "contract_flow",
-      flowName: "销售合同审批流程",
+      flowName: "销售订单审批流程",
       random: proxy.random(),
     },
   });
@@ -647,7 +647,7 @@ const clickAlteration = (row) => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "contract_update_flow",
-      flowName: "销售合同变更流程",
+      flowName: "销售订单变更流程",
       random: proxy.random(),
       businessId: row.id,
     },

+ 2 - 2
src/components/contractCom/selectContract.vue

@@ -378,7 +378,7 @@ const newContract = () => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "contract_flow",
-      flowName: "销售合同审批流程",
+      flowName: "销售订单审批流程",
       random: proxy.random(),
     },
   });
@@ -639,7 +639,7 @@ const clickAlteration = (row) => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "contract_update_flow",
-      flowName: "销售合同变更流程",
+      flowName: "销售订单变更流程",
       random: proxy.random(),
       businessId: row.id,
     },

+ 1 - 1
src/components/contractCom/selectPurchase.vue

@@ -306,7 +306,7 @@ const handleChange = (row) => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "purchase_update_flow",
-      flowName: "采购合同变更",
+      flowName: "采购订单变更",
       random: proxy.random(),
       businessId: row.id,
       submitType,

+ 1 - 1
src/components/detailCom/profitSettlementEHSD/index.vue

@@ -18,7 +18,7 @@
           <el-table-column label="退税金额" prop="refundableAmount" width="140" />
           <el-table-column label="其他收入" prop="otherIncomeAmount" width="140" />
         </el-table-column>
-        <el-table-column label="采购合同金额" prop="sumPurchaseContractMoney" width="140" />
+        <el-table-column label="采购订单金额" prop="sumPurchaseContractMoney" width="140" />
         <el-table-column label="支出">
           <el-table-column label="已付货款" prop="accountPaid" width="140" />
           <el-table-column label="代理费" prop="agencyFee" width="140" />

+ 1 - 1
src/components/headerBar/header-bar.vue

@@ -354,7 +354,7 @@
             <div class="text">
               {{item.type==1?item.shipmentTime:item.arrivalTime}}单号为
               &nbsp;<span class="code" @click="openDetails(item)">{{item.code}}</span>&nbsp;
-              <span v-if="item.type==1">销售合同需出货,请及时跟进。</span><span v-if="item.type==2">采购合同将到货,请及时跟进。</span>
+              <span v-if="item.type==1">销售订单需出货,请及时跟进。</span><span v-if="item.type==2">采购订单将到货,请及时跟进。</span>
             </div>
           </div>
         </div>

+ 1 - 1
src/components/process/EHSD/ContractChange.vue

@@ -1664,7 +1664,7 @@ const clickDelete = (index) => {
   changeWaitQuantity();
 };
 
-// 判断当前用户有无销售合同页面权限
+// 判断当前用户有无销售订单页面权限
 const isHave = ref(false);
 if (userInfo.permissions && userInfo.permissions.includes("contract")) {
   isHave.value = true;

+ 7 - 7
src/components/process/EHSD/Purchase.vue

@@ -5,7 +5,7 @@
         <div>
           <el-button type="primary" v-if="
               route.query.processType==30 || !route.query.processType
-            " @click="clickCopy">复制采购合同</el-button>
+            " @click="clickCopy">复制采购订单</el-button>
         </div>
       </template>
       <template #buyer>
@@ -507,7 +507,7 @@
       </template>
     </el-dialog>
 
-    <el-dialog v-if="copyContract" v-model="copyContract" title="采购合同选择" width="90%" append-to-body>
+    <el-dialog v-if="copyContract" v-model="copyContract" title="采购订单选择" width="90%" append-to-body>
       <SelectPurchase @select="selectPurchase"></SelectPurchase>
     </el-dialog>
   </div>
@@ -1263,7 +1263,7 @@ defineExpose({
 const getAssociationData = (type, id) => {
   if (type && id) {
     if (type == 1) {
-      auxiliaryData.value[0].label = "关联销售合同";
+      auxiliaryData.value[0].label = "关联销售订单";
       proxy.post("/contract/detail", { id }).then((res) => {
         contractData.value = [
           {
@@ -1288,7 +1288,7 @@ const getAssociationData = (type, id) => {
   }
 };
 
-// 判断当前用户有无销售合同页面权限
+// 判断当前用户有无销售订单页面权限
 const isHave = ref(false);
 if (userInfo.permissions && userInfo.permissions.includes("contract")) {
   isHave.value = true;
@@ -1432,7 +1432,7 @@ onMounted(() => {
         formData.data[key] = res[key];
       }
       remarkEditor.value.changeHtml(formData.data.remark);
-      // 回显关联销售合同
+      // 回显关联销售订单
       if (route.query && route.query.submitType === "10") {
         getAssociationData(
           formData.data.dataResource,
@@ -1674,7 +1674,7 @@ const getStyle = (text) => {
 const emit = defineEmits(["auxiliaryChange"]);
 let auxiliaryData = ref([
   {
-    label: "关联销售合同",
+    label: "关联销售订单",
     data: [],
   },
   {
@@ -1870,7 +1870,7 @@ const selectPurchase = (businessId) => {
         }
       }
       remarkEditor.value.changeHtml(formData.data.remark);
-      // 回显关联销售合同
+      // 回显关联销售订单
       if (route.query && route.query.submitType === "10") {
         getAssociationData(
           formData.data.dataResource,

+ 5 - 5
src/components/process/EHSD/PurchaseChange.vue

@@ -1234,7 +1234,7 @@ defineExpose({
 const getAssociationData = (type, id) => {
   if (type && id) {
     if (type == 1) {
-      auxiliaryData.value[0].label = "关联销售合同";
+      auxiliaryData.value[0].label = "关联销售订单";
       proxy.post("/contract/detail", { id }).then((res) => {
         contractData.value = [
           {
@@ -1258,7 +1258,7 @@ const getAssociationData = (type, id) => {
     }
   }
 };
-// 判断当前用户有无销售合同页面权限
+// 判断当前用户有无销售订单页面权限
 const isHave = ref(false);
 if (userInfo.permissions && userInfo.permissions.includes("contract")) {
   isHave.value = true;
@@ -1384,7 +1384,7 @@ onMounted(() => {
         formData.data[key] = res[key];
       }
       remarkEditor.value.changeHtml(formData.data.remark);
-      // 回显关联销售合同
+      // 回显关联销售订单
       if (route.query && route.query.submitType === "10") {
         getAssociationData(
           formData.data.dataResource,
@@ -1459,7 +1459,7 @@ onMounted(() => {
         formData.data[key] = res[key];
       }
       remarkEditor.value.changeHtml(formData.data.remark);
-      // 回显关联销售合同
+      // 回显关联销售订单
       if (route.query && route.query.submitType === "10") {
         getAssociationData(
           formData.data.dataResource,
@@ -1713,7 +1713,7 @@ const getStyle = (text) => {
 const emit = defineEmits(["auxiliaryChange"]);
 let auxiliaryData = ref([
   {
-    label: "关联销售合同",
+    label: "关联销售订单",
     data: [],
   },
   {

+ 8 - 7
src/components/process/PurchasePayment.vue

@@ -21,18 +21,18 @@
         <div style="width: 100%">
           <el-button type="primary" @click="clickAdd()" v-if="!judgeStatus()">添加行</el-button>
           <el-table :data="formData.data.payDetailList" style="width: 100%; margin-top: 16px">
-            <el-table-column label="采购合同" width="220">
+            <el-table-column label="采购订单" width="220">
               <template #default="{ row, $index }">
                 <div style="width: 100%">
                   <el-form-item :prop="'payDetailList.' + $index + '.purchaseId'" :rules="rules.purchaseId" :inline-message="true" class="margin-b-0">
-                    <el-select v-model="row.purchaseId" placeholder="请选择采购合同" filterable style="width: 100%" @change="changePurchaseId(row, true)">
+                    <el-select v-model="row.purchaseId" placeholder="请选择采购订单" filterable style="width: 100%" @change="changePurchaseId(row, true)">
                       <el-option v-for="item in contractList" :key="item.value" :label="item.label" :value="item.value" />
                     </el-select>
                   </el-form-item>
                 </div>
               </template>
             </el-table-column>
-            <el-table-column prop="amount" label="合同金额" width="140" />
+            <el-table-column prop="amount" label="订单金额" width="140" />
             <el-table-column prop="sumPayMoney" label="已付款金额" width="140" />
             <el-table-column prop="sumInvoiceMoney" label="已收发票金额" width="140" />
             <el-table-column label="付款金额" width="180">
@@ -308,7 +308,7 @@ const rules = ref({
   payType: [{ required: true, message: "请选择付款方式", trigger: "change" }],
   // accountManagementId: [{ required: true, message: "请选择付款账户", trigger: "change" }],
   purchaseId: [
-    { required: true, message: "请选择采购合同", trigger: "change" },
+    { required: true, message: "请选择采购订单", trigger: "change" },
   ],
   money: [{ required: true, message: "请输入付款金额", trigger: "blur" }],
   name: [{ required: true, message: "请输入户名", trigger: "blur" }],
@@ -360,7 +360,7 @@ const changeSupply = async (val) => {
             return {
               value: item.id,
               label: item.code,
-              amount: item.amount,
+              payableAmount: item.payableAmount,
               sumPayMoney: item.sumPayMoney,
               sumInvoiceMoney: item.sumInvoiceMoney,
             };
@@ -406,8 +406,9 @@ const changeAccount = (val) => {
 };
 const changePurchaseId = (row, status) => {
   let data = contractList.value.filter((item) => item.value === row.purchaseId);
+  console.log(data, "sss");
   if (data && data.length > 0) {
-    row.amount = data[0].amount;
+    row.amount = data[0].payableAmount;
     row.sumPayMoney = data[0].sumPayMoney;
     row.sumInvoiceMoney = data[0].sumInvoiceMoney;
   } else {
@@ -542,7 +543,7 @@ defineExpose({
 });
 let auxiliaryData = ref([
   {
-    label: "关联销售合同",
+    label: "关联销售订单",
     data: [],
   },
   {

+ 330 - 0
src/components/process/SF/AfterSales.vue

@@ -0,0 +1,330 @@
+<template>
+  <div style="width: 100%; padding: 0px 15px">
+    <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="formDom" v-loading="submitLoading">
+      <template #btn>
+        <div style="width:100%;display:flex">
+          <div style="width:calc(100% - 105px)">
+            <el-form-item label="订单号" prop="contractCode" class="margin-b-0">
+              <el-input disabled v-model="formData.data.contractCode" placeholder="请选择"></el-input>
+            </el-form-item>
+          </div>
+          <el-button type="primary" style="width:88px;margin-left:15px" @click="openMaterial = true" plain>选择产品</el-button>
+        </div>
+      </template>
+
+      <template #image>
+        <div style="width:100%">
+          <img v-if="formData.data.fileUrl" :src="formData.data.fileUrl" class="pic" @click="openImg(formData.data.fileUrl)" />
+        </div>
+      </template>
+    </byForm>
+    <el-dialog v-model="openMaterial" title="选择订单产品" width="80%" append-to-body>
+      <SelectContractProduct @selectProduct="handleSelect"></SelectContractProduct>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="openMaterial = false">取消</el-button>
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+
+</template>
+
+<script setup>
+import byForm from "@/components/byForm/index";
+import SelectContractProduct from "@/views/salesMange/afterSales/SelectContractProduct.vue";
+import { useRoute } from "vue-router";
+const { proxy } = getCurrentInstance();
+const route = useRoute();
+// 接收父组件的传值
+const props = defineProps({
+  queryData: Object,
+});
+const userList = ref([]);
+const afterSalesType = computed(
+  () => proxy.useUserStore().allDict["after_sales_type"]
+);
+const openMaterial = ref(false);
+const formData = reactive({
+  data: {
+    afterSalesDetailList: [],
+  },
+});
+const formOption = reactive({
+  inline: true,
+  labelWidth: 110,
+  itemWidth: 100,
+  rules: [],
+});
+const rules = ref({
+  contractCode: [{ required: true, message: "请选择订单", trigger: "blur" }],
+  type: [{ required: true, message: "请选择售后类型", trigger: "change" }],
+  remark: [{ required: true, message: "请输入售后说明", trigger: "blur" }],
+  contactName: [
+    { required: true, message: "请输入客户联系人", trigger: "blur" },
+  ],
+  contactWay: [
+    { required: true, message: "请输入客户联系方式", trigger: "blur" },
+  ],
+  userId: [{ required: true, message: "请选择售后人员", trigger: "change" }],
+  quantity: [{ required: true, message: "请输入售后数量", trigger: "blur" }],
+  openingBank: [{ required: true, message: "请输入开户行", trigger: "blur" }],
+  accountName: [{ required: true, message: "请输入户名", trigger: "blur" }],
+  accountOpening: [{ required: true, message: "请输入账号", trigger: "blur" }],
+});
+const formConfig = computed(() => {
+  return [
+    {
+      type: "title",
+      title: "售后产品",
+      haveLine: false,
+    },
+    {
+      type: "slot",
+      slotName: "btn",
+      // prop: "code",
+      label: "",
+      itemWidth: 50,
+      disabled: true,
+    },
+    {
+      type: "number",
+      prop: "quantity",
+      label: "售后数量",
+      precision: 0,
+      min: 0,
+      controls: false,
+      itemWidth: 50,
+    },
+    {
+      type: "input",
+      itemType: "text",
+      prop: "productCode",
+      label: "产品编码",
+      itemWidth: 50,
+      disabled: true,
+    },
+    {
+      type: "input",
+      itemType: "text",
+      prop: "productName",
+      label: "产品名称",
+      itemWidth: 50,
+      disabled: true,
+    },
+    {
+      type: "input",
+      itemType: "text",
+      prop: "size",
+      label: "尺寸 (cm)",
+      itemWidth: 50,
+      disabled: true,
+    },
+    {
+      type: "input",
+      itemType: "text",
+      prop: "productColor",
+      label: "颜色",
+      itemWidth: 50,
+      disabled: true,
+    },
+    {
+      type: "slot",
+      slotName: "image",
+      label: "产品图片",
+      itemWidth: 100,
+    },
+    {
+      type: "title",
+      title: "基本信息",
+      haveLine: true,
+    },
+    {
+      type: "select",
+      prop: "type",
+      label: "售后类型",
+      required: true,
+      itemWidth: 50,
+      data: afterSalesType.value,
+      disabled: false,
+    },
+    {
+      type: "select",
+      prop: "userId",
+      label: "售后人员",
+      itemWidth: 50,
+      filterable: true,
+      data: userList.value,
+      disabled: false,
+    },
+    {
+      type: "input",
+      itemType: "text",
+      prop: "contactName",
+      label: "客户联系人",
+      disabled: false,
+      itemWidth: 50,
+    },
+    {
+      type: "input",
+      itemType: "text",
+      prop: "contactWay",
+      label: "客户联系方式",
+      disabled: false,
+      itemWidth: 50,
+    },
+    {
+      type: "input",
+      itemType: "textarea",
+      prop: "remark",
+      label: "售后说明",
+      required: true,
+      itemWidth: 50,
+    },
+    {
+      type: "title",
+      title: "客户账户信息",
+      haveLine: true,
+    },
+    {
+      type: "input",
+      itemType: "text",
+      prop: "openingBank",
+      label: "开户行",
+      required: true,
+      itemWidth: 50,
+    },
+    {
+      type: "input",
+      itemType: "text",
+      prop: "accountName",
+      label: "户名",
+      required: true,
+      itemWidth: 50,
+    },
+    {
+      type: "input",
+      itemType: "text",
+      prop: "accountOpening",
+      label: "账号",
+      required: true,
+      itemWidth: 50,
+    },
+  ];
+});
+
+const formDom = ref(null);
+const judgeStatus = () => {
+  if (route.query.processType == 20 || route.query.processType == 10) {
+    return true;
+  }
+  if (props.queryData.recordList && props.queryData.recordList.length > 0) {
+    let data = props.queryData.recordList.filter(
+      (item) => item.status === 2 && item.nodeType !== 1
+    );
+    if (data && data.length > 0) {
+      return true;
+    }
+  }
+  return false;
+};
+
+const handleSubmit = async () => {
+  let flag = await formDom.value.handleSubmit(() => {});
+  if (flag) {
+  } else {
+  }
+  return flag;
+};
+
+const handleSelect = (row) => {
+  formData.data = {
+    contractCode: row.contractCode,
+    productCode: row.productCode,
+    productName: row.productName,
+    productColor: row.productColor,
+    size: `${row.productLength}*${row.productWidth}*${row.productHeight}`,
+    contractId: row.contractId,
+    type: "",
+    userId: proxy.useUserStore().user.userId,
+    contactName: "",
+    contactWay: "",
+    remark: "",
+    status: "",
+    contractProductId: row.id,
+    productId: row.productId,
+    quantity: null,
+  };
+  proxy
+    .post("/fileInfo/getList", { businessIdList: [row.productId] })
+    .then((res) => {
+      if (res[row.productId] && res[row.productId].length > 0) {
+        let list = res[row.productId].filter((x) => x.businessType == "0");
+        console.log(list);
+        if (list && list.length > 0) {
+          formData.data.fileUrl = list[0].fileUrl;
+        }
+      }
+    });
+  openMaterial.value = false;
+  proxy.msgTip("选择成功");
+};
+
+const getDict = () => {
+  proxy
+    .get("/tenantUser/list", {
+      pageNum: 1,
+      pageSize: 10000,
+      companyId: proxy.useUserStore().user.companyId,
+    })
+    .then((res) => {
+      userList.value = res.rows.map((item) => {
+        return {
+          label: item.nickName,
+          value: item.userId,
+        };
+      });
+    });
+};
+getDict();
+
+const getAllData = (businessId) => {
+  if (businessId) {
+    proxy.post("/afterSales/detail", { id: businessId }).then((res) => {
+      formData.data = res;
+      formData.data.size = `${res.productLength}*${res.productWidth}*${res.productHeight}`;
+      proxy
+        .post("/fileInfo/getList", { businessIdList: [res.productId] })
+        .then((fileRes) => {
+          if (fileRes[res.productId] && fileRes[res.productId].length > 0) {
+            let list = fileRes[res.productId].filter(
+              (x) => x.businessType == "0"
+            );
+            if (list && list.length > 0) {
+              formData.data.fileUrl = list[0].fileUrl;
+            }
+          }
+        });
+    });
+  }
+};
+
+onMounted(() => {
+  formOption.disabled = judgeStatus();
+  if (route.query.businessId && route.query.processType) {
+    getAllData(route.query.businessId);
+  }
+});
+
+const getFormData = () => {
+  return proxy.deepClone(formData.data);
+};
+// 向父组件暴露
+defineExpose({
+  getFormData,
+  handleSubmit,
+});
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 3 - 2
src/components/process/SF/Contract.vue

@@ -345,11 +345,11 @@
                           </div>
                         </template>
                         <template #reference>
-                          <div style="margin-left:10px;cursor:pointer;position:relative;top:4px">
+                          <!-- <div style="margin-left:10px;cursor:pointer;position:relative;top:4px">
                             <el-icon :size="20" color="#85c1a6">
                               <WarningFilled />
                             </el-icon>
-                          </div>
+                          </div> -->
                         </template>
                       </el-popover>
                     </div>
@@ -1862,6 +1862,7 @@ const getPriceSheetData = (id) => {
       rowId: uuidv4(),
     }));
     changeProductPrice();
+    totalAmount();
     getFileData();
     let productIds = formData.data.contractProductList.map((x) => x.productId);
     const productAllFile = await proxy.getFileData({

+ 2 - 2
src/components/process/SF/ContractChange.vue

@@ -343,11 +343,11 @@
                           </div>
                         </template>
                         <template #reference>
-                          <div style="margin-left:10px;cursor:pointer;position:relative;top:4px">
+                          <!-- <div style="margin-left:10px;cursor:pointer;position:relative;top:4px">
                             <el-icon :size="20" color="#85c1a6">
                               <WarningFilled />
                             </el-icon>
-                          </div>
+                          </div> -->
                         </template>
                       </el-popover>
                     </div>

+ 12 - 1
src/components/process/SF/DiscussPrice.vue

@@ -355,6 +355,18 @@ const formConfig = computed(() => {
   return [
     {
       type: "title1",
+      title: "基本信息",
+    },
+    {
+      type: "input",
+      prop: "code",
+      label: "报价单号",
+      disabled: true,
+      itemWidth: 50,
+      // isShow: formData.data.code ? true : false,
+    },
+    {
+      type: "title1",
       title: "商品信息",
     },
     {
@@ -1026,7 +1038,6 @@ const getAllData = (businessId) => {
         getAll: true,
       })
       .then((res) => {
-        console.log(res, "saa");
         if (res && res[formData.data.id]) {
           formData.data.discussFileList = res[formData.data.id]
             .filter((x) => x.businessType == "10")

+ 2 - 2
src/components/process/SF/Purchase.vue

@@ -203,11 +203,11 @@
                           </div>
                         </template>
                         <template #reference>
-                          <div style="margin-left:10px;cursor:pointer;position:relative;top:4px">
+                          <!-- <div style="margin-left:10px;cursor:pointer;position:relative;top:4px">
                             <el-icon :size="20" color="#85c1a6">
                               <WarningFilled />
                             </el-icon>
-                          </div>
+                          </div> -->
                         </template>
                       </el-popover>
                     </div>

+ 2 - 2
src/components/process/SF/PurchaseChange.vue

@@ -203,11 +203,11 @@
                           </div>
                         </template>
                         <template #reference>
-                          <div style="margin-left:10px;cursor:pointer;position:relative;top:4px">
+                          <!-- <div style="margin-left:10px;cursor:pointer;position:relative;top:4px">
                             <el-icon :size="20" color="#85c1a6">
                               <WarningFilled />
                             </el-icon>
-                          </div>
+                          </div> -->
                         </template>
                       </el-popover>
                     </div>

+ 60 - 11
src/components/process/SF/ReturnGood.vue

@@ -22,7 +22,7 @@
                 <div v-else></div>
               </template>
             </el-table-column>
-            <el-table-column prop="productCode" label="物料编码" width="160" />
+            <el-table-column prop="productCode" label="物料编码" width="190" />
             <el-table-column prop="productName" label="物料名称" min-width="200" />
             <el-table-column label="尺寸 (cm)" width="140">
               <template #default="{ row, $index }">
@@ -37,10 +37,21 @@
                 <el-form-item :prop="'purchaseBackDetailsList.' + $index + '.quantity'" :rules="rules.quantity" :inline-message="true"
                               class="margin-b-0">
                   <el-input-number onmousewheel="return false;" v-model="row.quantity" placeholder="请输入" style="width: 100%" :precision="0"
-                                   :controls="false" :min="0" />
+                                   :controls="false" :min="0" @change="totalAmount()" />
                 </el-form-item>
               </template>
             </el-table-column>
+            <el-table-column prop="price" label="单价" width="100">
+              <!-- <template #default="{ row, $index }">
+                <el-form-item :prop="'purchaseBackDetailsList.' + $index + '.price'" :rules="rules.price" :inline-message="true"
+                              class="margin-b-0">
+                  <el-input-number onmousewheel="return false;" v-model="row.price" placeholder="请输入" style="width: 100%" :precision="0"
+                                   :controls="false" :min="0" />
+                </el-form-item>
+              </template> -->
+            </el-table-column>
+
+            <el-table-column prop="amount" label="小计" width="110" />
             <el-table-column prop="remark" label="退货原因" min-width="200">
               <template #default="{ row, $index }">
                 <el-form-item :prop="'purchaseBackDetailsList.' + $index + '.remark'" :rules="row.quantity?rules.remark:''" :inline-message="true"
@@ -95,6 +106,16 @@ const formConfig = computed(() => {
       haveLine: false,
     },
     {
+      type: "treeSelect",
+      prop: "companyId",
+      label: "业务公司",
+      data: proxy.useUserStore().allDict["tree_company_data"],
+      propsTreeLabel: "deptName",
+      propsTreeValue: "deptId",
+      itemWidth: 50,
+      disabled: true,
+    },
+    {
       type: "slot",
       slotName: "btn",
       // prop: "code",
@@ -130,15 +151,6 @@ const formConfig = computed(() => {
       disabled: true,
     },
     {
-      type: "treeSelect",
-      prop: "companyId",
-      label: "业务公司",
-      data: proxy.useUserStore().allDict["tree_company_data"],
-      propsTreeLabel: "deptName",
-      propsTreeValue: "deptId",
-      itemWidth: 50,
-    },
-    {
       type: "title",
       title: "退货明细",
       haveLine: true,
@@ -148,6 +160,18 @@ const formConfig = computed(() => {
       slotName: "details",
       label: "",
     },
+    {
+      type: "title",
+      title: "退货金额",
+      haveLine: true,
+    },
+    {
+      type: "input",
+      prop: "amount",
+      label: "退货金额",
+      itemWidth: 25,
+      disabled: true,
+    },
   ];
 });
 
@@ -171,8 +195,29 @@ const getAllFileData = () => {
     filePathAtt: "fileUrl",
   });
 };
+
+const totalAmount = () => {
+  let money = 0;
+  if (
+    formData.data.purchaseBackDetailsList &&
+    formData.data.purchaseBackDetailsList.length > 0
+  ) {
+    for (let i = 0; i < formData.data.purchaseBackDetailsList.length; i++) {
+      formData.data.purchaseBackDetailsList[i].amount = parseFloat(
+        Number(formData.data.purchaseBackDetailsList[i].quantity) *
+          Number(formData.data.purchaseBackDetailsList[i].price)
+      ).toFixed(2);
+      money = parseFloat(
+        Number(money) + Number(formData.data.purchaseBackDetailsList[i].amount)
+      ).toFixed(2);
+    }
+  }
+  formData.data.amount = money;
+};
+
 const handleSelect = (row) => {
   formData.data = {
+    companyId: proxy.useUserStore().user.companyId,
     code: row.code,
     supplierName: row.supplyName,
     purchaseAmount: row.amount,
@@ -192,6 +237,8 @@ const handleSelect = (row) => {
         productHeight: x.productHeight,
         purchaseQuantity: x.quantity,
         quantity: null,
+        price: x.price,
+        amount: "",
         remark: "",
       })
     );
@@ -249,6 +296,7 @@ const getAllData = (businessId) => {
     proxy.post("/purchaseBack/detail", { id: businessId }).then((res) => {
       formData.data = res;
       getAllFileData();
+      totalAmount();
     });
   }
 };
@@ -258,6 +306,7 @@ onMounted(() => {
   if (route.query.businessId && route.query.processType) {
     getAllData(route.query.businessId);
   }
+  formData.data.companyId = proxy.useUserStore().user.companyId;
 });
 
 const getFormData = () => {

+ 2 - 2
src/components/process/SendPurchase.vue

@@ -683,7 +683,7 @@ const judgeStatus = () => {
 // 获取用户信息并赋默认值
 const userInfo = useUserStore().user;
 const contractData = ref([]);
-// 判断当前用户有无采购合同页面权限
+// 判断当前用户有无采购订单页面权限
 const isHave = ref(false);
 if (
   useUserStore().permissions &&
@@ -716,7 +716,7 @@ onMounted(() => {
     formData.data.dataResource = "1"; //外销合同采购
     contractData.value = JSON.parse(props.queryData.arr);
     auxiliaryData.value.unshift({
-      label: "关联销售合同",
+      label: "关联销售订单",
       data: [],
     });
     getAuxiliaryData();

+ 1 - 1
src/views/EHSD/procurement/handoverSlipEHSD/index.vue

@@ -217,7 +217,7 @@ const clickPurchase = (row) => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "ehsd_purchase_flow",
-      flowName: "销售合同采购审批",
+      flowName: "销售订单采购审批",
       random: proxy.random(),
 
       ids: ids,

+ 4 - 4
src/views/EHSD/procurement/profitBudgetEHSD/index.vue

@@ -66,7 +66,7 @@
                               </div>
                             </template>
                           </el-table-column>
-                          <el-table-column label="销售合同金额">
+                          <el-table-column label="销售订单金额">
                             <template #default="scope">
                               <div>
                                 <span v-if="scope.$index>0 && getIsTop(row.grossProfitInfoListOne,scope,'contractAmount')"
@@ -82,7 +82,7 @@
                               </div>
                             </template>
                           </el-table-column>
-                          <el-table-column label="采购合同金额">
+                          <el-table-column label="采购订单金额">
                             <template #default="scope">
                               <div>
                                 <span v-if="scope.$index>0 && getIsTop(row.grossProfitInfoListOne,scope,'purchaseAmount')"
@@ -993,14 +993,14 @@ const optionTwo = reactive({
         ${params[0].axisValue}
         <br/> 
         ${params[0].seriesName}:${params[0].data} 
-        <br/> 销售合同金额:${
+        <br/> 销售订单金额:${
           showRowData.value.grossProfitInfoList[params[0].dataIndex + 1]
             .contractCurrency
         } ${
           showRowData.value.grossProfitInfoList[params[0].dataIndex + 1]
             .contractAmount
         }
-        <br/> 采购合同金额:CNY ${
+        <br/> 采购订单金额:CNY ${
           showRowData.value.grossProfitInfoList[params[0].dataIndex + 1]
             .purchaseAmount
         }`;

+ 1 - 1
src/views/EHSD/procurement/profitSettlementEHSD/index.vue

@@ -73,7 +73,7 @@
             <div> {{ moneyFormat(row.otherIncomeAmount ,2) }}</div>
           </template>
         </el-table-column>
-        <el-table-column label="采购合同金额" prop="sumPurchaseContractMoney" width="120">
+        <el-table-column label="采购订单金额" prop="sumPurchaseContractMoney" width="120">
           <template #default="{ row }">
             <div> {{ moneyFormat(row.sumPurchaseContractMoney ,2) }}</div>
           </template>

+ 35 - 9
src/views/EHSD/procurement/purchasedEHSD/index.vue

@@ -260,25 +260,51 @@ const config = computed(() => {
     {
       attrs: {
         label: "供应商",
-        prop: "sellCorporationId",
+        prop: "supplyName",
         "min-width": 220,
       },
-      render(type) {
-        return proxy.dictValueLabel(type, supplierList.value);
+      // render(type) {
+      //   return proxy.dictValueLabel(type, supplierList.value);
+      // },
+    },
+    {
+      attrs: {
+        label: "采购金额 (¥)",
+        prop: "amount",
+        width: 110,
+      },
+      render(val) {
+        return proxy.moneyFormat(val, 2);
       },
     },
     {
       attrs: {
-        label: "采购金额",
-        slot: "amount",
-        width: 140,
+        label: "退货金额",
+        prop: "backAmount",
+        width: 110,
+      },
+      render(val) {
+        return proxy.moneyFormat(val, 2);
+      },
+    },
+    {
+      attrs: {
+        label: "应付金额",
+        prop: "payableAmount",
+        width: 110,
+      },
+      render(val) {
+        return proxy.moneyFormat(val, 2);
       },
     },
     {
       attrs: {
         label: "已付款金额",
-        slot: "sumPayMoney",
-        width: 140,
+        prop: "sumPayMoney",
+        width: 110,
+      },
+      render(val) {
+        return proxy.moneyFormat(val, 2);
       },
     },
     {
@@ -523,7 +549,7 @@ const handleChange = (row) => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "purchase_update_flow",
-      flowName: "采购合同变更",
+      flowName: "采购订单变更",
       random: proxy.random(),
       businessId: row.id,
       submitType,

+ 1 - 1
src/views/EHSD/procurement/purchasedEHSD/selectPurchased.vue

@@ -339,7 +339,7 @@ const handleChange = (row) => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "purchase_update_flow",
-      flowName: "采购合同变更",
+      flowName: "采购订单变更",
       random: proxy.random(),
       businessId: row.id,
       submitType,

+ 7 - 1
src/views/EHSD/procurement/returnGood/index.vue

@@ -176,7 +176,7 @@ const config = computed(() => {
   return [
     {
       attrs: {
-        label: "售后单号",
+        label: "退货单号",
         prop: "code",
         slot: "code",
       },
@@ -204,6 +204,12 @@ const config = computed(() => {
     },
     {
       attrs: {
+        label: "退货金额",
+        prop: "amount",
+      },
+    },
+    {
+      attrs: {
         label: "退货时间",
         prop: "createTime",
       },

+ 5 - 0
src/views/EHSD/productLibrary/companyProduct/index.vue

@@ -1043,6 +1043,11 @@ const submitForm = () => {
     if (!formData.data.fileList.length > 0) {
       return proxy.msgTip("请上传图片", 2);
     }
+
+    if (!formData.data.prodFileList.length > 0) {
+      return proxy.msgTip("请上传生产plt文件", 2);
+    }
+
     let checkNum = 0;
     for (let i = 0; i < formData.data.productCustomInfoList.length; i++) {
       const ele = formData.data.productCustomInfoList[i];

+ 14 - 3
src/views/EHSD/productLibrary/waitCreateProduct/index.vue

@@ -349,9 +349,14 @@ const config = computed(() => {
     // },
     {
       attrs: {
-        label: "报价单号",
+        label: "对内报价单号",
+        prop: "quotationCode",
+      },
+    },
+    {
+      attrs: {
+        label: "对外报价单号",
         prop: "extQuotationCode",
-        // width: 150,
       },
     },
     // {
@@ -571,6 +576,7 @@ const formConfig = computed(() => {
       propsTreeLabel: "deptName",
       propsTreeValue: "deptId",
       itemWidth: 50,
+      disabled: true,
     },
     {
       type: "treeSelect",
@@ -897,6 +903,10 @@ const submitForm = () => {
     if (!formData.data.fileList.length > 0) {
       return proxy.msgTip("请上传图片", 2);
     }
+    if (!formData.data.prodFileList.length > 0) {
+      return proxy.msgTip("请上传生产plt文件", 2);
+    }
+
     let checkNum = 0;
     for (let i = 0; i < formData.data.productCustomInfoList.length; i++) {
       const ele = formData.data.productCustomInfoList[i];
@@ -948,9 +958,10 @@ const getDtl = (row) => {
   modalType.value = "add";
   formData.data = {
     definition: "1",
+
     extQuotationProductId: row.id,
     ...row,
-    companyId: "",
+    companyId: proxy.useUserStore().user.companyId,
     productClassifyId: "",
     name: "",
     customCode: row.productCode,

+ 27 - 11
src/views/EHSD/saleContract/dailyReport/index.vue

@@ -2,7 +2,7 @@
   <div class="pageIndexClass">
     <div style="background-color: #fff; padding: 15px 15px 0">
 
-      <el-tabs v-model="sourceList.pagination.current" type="card" class="demo-tabs" @tab-change="changeCurrent">
+      <!-- <el-tabs v-model="sourceList.pagination.current" type="card" class="demo-tabs" @tab-change="changeCurrent">
         <el-tab-pane label="日报表" name="日报表"></el-tab-pane>
         <el-tab-pane label="月报表" name="月报表"></el-tab-pane>
         <el-tab-pane label="其他" name="其他"></el-tab-pane>
@@ -22,11 +22,23 @@
           <el-button  v-if="sourceList.pagination.current == '其他'" @click="onReset()">重置</el-button>
           <el-button type="primary" @click="exportExcel">导出Excel</el-button>
         </el-form-item>
+      </el-form> -->
+
+      <el-form :inline="true" :model="sourceList.pagination">
+        <el-form-item label="日期">
+          <el-date-picker v-model="sourceList.pagination.beginTime" type="date" placeholder="开始日期" value-format="YYYY-MM-DD"
+                          @change="handleChangeDate" :clearable="false" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="onQuery" class="query">搜索</el-button>
+          <el-button @click="onReset()">重置</el-button>
+          <el-button type="primary" @click="exportExcel">导出Excel</el-button>
+        </el-form-item>
       </el-form>
     </div>
     <div style="background:#fff;padding:15px;margin-top:10px">
       <!-- 如果是日报表,则所有列宽度平均 -->
-      <el-table v-if="sourceList.pagination.current == '日报表'" :data="sourceList.data" :height="tableHeight" style="width: 100%" v-loading="loading" border id="my-table">
+      <el-table :data="sourceList.data" :height="tableHeight" style="width: 100%" v-loading="loading" border id="my-table">
         <el-table-column prop="groupName" label="组别" fixed="left" />
         <el-table-column prop="saleUserName" label="业务员" fixed="left" />
 
@@ -108,7 +120,7 @@
         <el-table-column prop="ranking" label="排名" align="center" fixed="right" />
       </el-table>
       <!-- 否则,使用固定值 -->
-      <el-table v-else :data="sourceList.data" :height="tableHeight" style="width: 100%" v-loading="loading" border id="my-table">
+      <!-- <el-table v-else :data="sourceList.data" :height="tableHeight" style="width: 100%" v-loading="loading" border id="my-table">
         <el-table-column prop="groupName" label="组别" width="110" fixed="left" />
         <el-table-column prop="saleUserName" label="业务员" width="80" fixed="left" />
 
@@ -188,7 +200,7 @@
           </template>
         </el-table-column>
         <el-table-column prop="ranking" label="排名" width="60" align="center" fixed="right" />
-      </el-table>
+      </el-table> -->
     </div>
   </div>
 </template>
@@ -203,7 +215,7 @@ import { nextTick } from "vue";
 const { proxy } = getCurrentInstance();
 const tableHeight = ref(0);
 const getTableHeight = () => {
-  tableHeight.value = window.innerHeight - 150 - 79 - 55;
+  tableHeight.value = window.innerHeight - 150 - 79;
 };
 getTableHeight();
 window.addEventListener("resize", () => {
@@ -265,7 +277,6 @@ const onQuery = () => {
 };
 
 const changeCurrent = (val) => {
-  console.log(val);
   switch (val) {
     // case "本周":
     //   sourceList.value.pagination.beginTime = weekBegin.value;
@@ -287,13 +298,18 @@ const changeCurrent = (val) => {
   onQuery();
 };
 
-const onReset = (val='其他') => {
-  sourceList.value.pagination.current = val;
-  sourceList.value.pagination.beginTime = beginTime.value;
-  sourceList.value.pagination.endTime = endTime.value;
+const onReset = () => {
+  sourceList.value.pagination.beginTime = today.value + " 00:00:00";
+  sourceList.value.pagination.endTime = today.value + " 23:59:59";
+  onQuery();
+};
+onReset();
+
+const handleChangeDate = (val) => {
+  sourceList.value.pagination.beginTime = val + " 00:00:00";
+  sourceList.value.pagination.endTime = val + " 23:59:59";
   onQuery();
 };
-onReset('月报表');
 
 // const nowYearMonth = ref(moment().format("YYYY-MM"));
 const disabledFn = (date) => {

+ 412 - 0
src/views/EHSD/saleContract/dailyReport/monthIndex.vue

@@ -0,0 +1,412 @@
+<template>
+  <div class="pageIndexClass">
+    <div style="background-color: #fff; padding: 15px 15px 0">
+
+      <!-- <el-tabs v-model="sourceList.pagination.current" type="card" class="demo-tabs" @tab-change="changeCurrent">
+        <el-tab-pane label="日报表" name="日报表"></el-tab-pane>
+        <el-tab-pane label="月报表" name="月报表"></el-tab-pane>
+        <el-tab-pane label="其他" name="其他"></el-tab-pane>
+      </el-tabs>
+      <el-form :inline="true" :model="sourceList.pagination">
+        <el-form-item label="其他" v-if="sourceList.pagination.current == '其他'">
+          <el-date-picker v-model="sourceList.pagination.beginTime" type="date" placeholder="开始日期" value-format="YYYY-MM-DD 00:00:00"
+                          :disabled-date="disabledFn" />
+          <div style="padding:0 10px">
+            -
+          </div>
+          <el-date-picker v-model="sourceList.pagination.endTime" type="date" placeholder="结束日期" value-format="YYYY-MM-DD 23:59:59"
+                          :disabled-date="disabledFn" />
+        </el-form-item>
+        <el-form-item>
+          <el-button  v-if="sourceList.pagination.current == '其他'" type="primary" @click="onQuery" class="query">搜索</el-button>
+          <el-button  v-if="sourceList.pagination.current == '其他'" @click="onReset()">重置</el-button>
+          <el-button type="primary" @click="exportExcel">导出Excel</el-button>
+        </el-form-item>
+      </el-form> -->
+
+      <el-form :inline="true" :model="sourceList.pagination">
+        <el-form-item label="月份">
+          <el-date-picker v-model="sourceList.pagination.beginTime" type="month" placeholder="开始日期" value-format="YYYY-MM" @change="handleChangeDate"
+                          :clearable="false" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="onQuery" class="query">搜索</el-button>
+          <el-button @click="onReset()">重置</el-button>
+          <el-button type="primary" @click="exportExcel">导出Excel</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+    <div style="background:#fff;padding:15px;margin-top:10px">
+      <!-- 如果是日报表,则所有列宽度平均 -->
+      <el-table :data="sourceList.data" :height="tableHeight" style="width: 100%" v-loading="loading" border id="my-table">
+        <el-table-column prop="groupName" label="组别" fixed="left" />
+        <el-table-column prop="saleUserName" label="业务员" fixed="left" />
+
+        <template v-if="dayList && dayList.length>0">
+          <el-table-column v-for="col in dayList" :key="col" :label="col" align="center">
+            <el-table-column prop="address" label="系统" min-width="" align="right">
+              <template #default="{ row, $index }">
+                <div style="width: 100%" :class="today==col?'isToday':''" v-if="row[col] && row[col].sumContractAmount">
+                  {{moneyFormat(row[col].sumContractAmount,2)}}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="address" label="聚水潭" min-width="" align="right">
+              <template #default="{ row, $index }">
+                <div style="width: 100%" :class="today==col?'isToday':''" v-if="row[col] && row[col].sumJstAmount">
+                  {{moneyFormat(row[col].sumJstAmount,2)}}
+                </div>
+              </template>
+            </el-table-column>
+          </el-table-column>
+        </template>
+
+        <el-table-column align="right" fixed="right">
+          <template #header>
+            <div>
+              系统
+              <br>
+              月累计
+            </div>
+          </template>
+          <template #default="{ row, $index }">
+            <div style="width: 100%">
+              {{moneyFormat(row.sumContractAmount,2)}}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="right" fixed="right">
+          <template #header>
+            <div>
+              聚水潭
+              <br>
+              月累计
+            </div>
+          </template>
+          <template #default="{ row, $index }">
+            <div style="width: 100%">
+              {{moneyFormat(row.sumJstAmount,2)}}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="right" fixed="right">
+          <template #header>
+            <div>
+              合计
+              <br>
+              月累计
+            </div>
+          </template>
+          <template #default="{ row, $index }">
+            <div style="width: 100%">
+              {{moneyFormat(row.sumAmount,2)}}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="月目标" align="right" fixed="right">
+          <template #default="{ row, $index }">
+            <div style="width: 100%">
+              {{moneyFormat(row.targetAmount,2)}}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="月达成率" align="right" fixed="right">
+          <template #default="{ row, $index }">
+            <div style="width: 100%">
+              {{moneyFormat(row.finishRate,2)}} %
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="ranking" label="排名" align="center" fixed="right" />
+      </el-table>
+      <!-- 否则,使用固定值 -->
+      <!-- <el-table v-else :data="sourceList.data" :height="tableHeight" style="width: 100%" v-loading="loading" border id="my-table">
+        <el-table-column prop="groupName" label="组别" width="110" fixed="left" />
+        <el-table-column prop="saleUserName" label="业务员" width="80" fixed="left" />
+
+        <template v-if="dayList && dayList.length>0">
+          <el-table-column v-for="col in dayList" :key="col" :label="col" align="center">
+            <el-table-column prop="address" label="系统" min-width="100" align="right">
+              <template #default="{ row, $index }">
+                <div style="width: 100%" :class="today==col?'isToday':''" v-if="row[col] && row[col].sumContractAmount">
+                  {{moneyFormat(row[col].sumContractAmount,2)}}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="address" label="聚水潭" min-width="100" align="right">
+              <template #default="{ row, $index }">
+                <div style="width: 100%" :class="today==col?'isToday':''" v-if="row[col] && row[col].sumJstAmount">
+                  {{moneyFormat(row[col].sumJstAmount,2)}}
+                </div>
+              </template>
+            </el-table-column>
+          </el-table-column>
+        </template>
+
+        <el-table-column width="columnWithWidth" align="right" fixed="right">
+          <template #header>
+            <div>
+              系统
+              <br>
+              月累计
+            </div>
+          </template>
+          <template #default="{ row, $index }">
+            <div style="width: 100%">
+              {{moneyFormat(row.sumContractAmount,2)}}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column width="95" align="right" fixed="right">
+          <template #header>
+            <div>
+              聚水潭
+              <br>
+              月累计
+            </div>
+          </template>
+          <template #default="{ row, $index }">
+            <div style="width: 100%">
+              {{moneyFormat(row.sumJstAmount,2)}}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column width="95" align="right" fixed="right">
+          <template #header>
+            <div>
+              合计
+              <br>
+              月累计
+            </div>
+          </template>
+          <template #default="{ row, $index }">
+            <div style="width: 100%">
+              {{moneyFormat(row.sumAmount,2)}}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="月目标" width="90" align="right" fixed="right">
+          <template #default="{ row, $index }">
+            <div style="width: 100%">
+              {{moneyFormat(row.targetAmount,2)}}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="月达成率" width="90" align="right" fixed="right">
+          <template #default="{ row, $index }">
+            <div style="width: 100%">
+              {{moneyFormat(row.finishRate,2)}} %
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="ranking" label="排名" width="60" align="center" fixed="right" />
+      </el-table> -->
+    </div>
+  </div>
+</template>
+
+<script setup>
+import byTable from "@/components/byTable/index";
+import { getMonthBetween } from "@/utils/date.js";
+import moment from "moment";
+import FileSaver from "file-saver";
+import * as XLSX from "xlsx";
+import { nextTick } from "vue";
+const { proxy } = getCurrentInstance();
+const tableHeight = ref(0);
+const getTableHeight = () => {
+  tableHeight.value = window.innerHeight - 150 - 79;
+};
+getTableHeight();
+window.addEventListener("resize", () => {
+  getTableHeight();
+});
+const today = ref(moment().format("yyyy-MM-DD"));
+const beginTime = ref(
+  moment().startOf("month").format("yyyy-MM-DD") + " 00:00:00"
+);
+const endTime = ref(moment().endOf("month").format("YYYY-MM-DD") + " 23:59:59");
+const weekBegin = ref(
+  moment().startOf("week").format("yyyy-MM-DD") + " 00:00:00"
+);
+const weekEnd = ref(moment().endOf("week").format("yyyy-MM-DD") + " 23:59:59");
+const sourceList = ref({
+  data: [],
+  pagination: {
+    pageNum: 1,
+    pageSize: 10,
+    beginTime: "",
+    endTime: "",
+    // current: "本月",
+    current: "",
+  },
+});
+
+const columnWithWidth = undefined;
+const loading = ref(false);
+const getList = (req) => {
+  sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
+  console.log(sourceList.value.pagination, "123123");
+  loading.value = true;
+  proxy
+    .post("/deptPerf/monthlyReporting", sourceList.value.pagination)
+    .then((res) => {
+      sourceList.value.data = res;
+      setTimeout(() => {
+        loading.value = false;
+      }, 500);
+    });
+};
+
+const dayList = ref([]);
+const onQuery = () => {
+  loading.value = true;
+  if (
+    sourceList.value.pagination.beginTime &&
+    sourceList.value.pagination.endTime
+  ) {
+    dayList.value = getMonthBetween(
+      sourceList.value.pagination.beginTime.slice(0, 10),
+      sourceList.value.pagination.endTime.slice(0, 10)
+    );
+    nextTick(() => {
+      setTimeout(() => scrollIntoEle(), 1000);
+    });
+  }
+  getList();
+};
+
+const changeCurrent = (val) => {
+  switch (val) {
+    // case "本周":
+    //   sourceList.value.pagination.beginTime = weekBegin.value;
+    //   sourceList.value.pagination.endTime = weekEnd.value;
+    //   break;
+    case "日报表":
+      sourceList.value.pagination.beginTime = today.value + " 00:00:00";
+      sourceList.value.pagination.endTime = today.value + " 23:59:59";
+      break;
+    case "月报表":
+      sourceList.value.pagination.beginTime = beginTime.value;
+      sourceList.value.pagination.endTime = endTime.value;
+      break;
+    case "其他":
+      sourceList.value.pagination.beginTime = beginTime.value;
+      sourceList.value.pagination.endTime = endTime.value;
+      break;
+  }
+  onQuery();
+};
+
+const onReset = () => {
+  sourceList.value.pagination.beginTime = beginTime.value;
+  sourceList.value.pagination.endTime = endTime.value;
+  onQuery();
+};
+onReset();
+
+const handleChangeDate = (val) => {
+  sourceList.value.pagination.beginTime =
+    moment(val).startOf("month").format("yyyy-MM-DD") + " 00:00:00";
+  sourceList.value.pagination.endTime =
+    moment(val).endOf("month").format("YYYY-MM-DD") + " 23:59:59";
+  onQuery();
+};
+
+// const nowYearMonth = ref(moment().format("YYYY-MM"));
+const disabledFn = (date) => {
+  if (
+    moment(date).isBefore(beginTime.value) ||
+    moment(date).isAfter(endTime.value)
+  ) {
+    return true;
+  } else {
+    return false;
+  }
+};
+
+const scrollIntoEle = () => {
+  let eles = document.querySelectorAll(".isToday");
+  if (eles && eles[0]) {
+    eles[0].scrollIntoView({
+      // behavior: "smooth",
+      block: "start",
+      inline: "start",
+    });
+  }
+};
+
+const exportExcel = () => {
+  proxy.msgTip("正在导出,请稍后", 2);
+  const wb = XLSX.utils.table_to_book(document.querySelector("#my-table")); // 关联dom节点
+  // 设置百分比列的单元格样式
+  const percentStyle = {
+    font: { bold: true },
+    fill: { fgColor: { rgb: "FFFF00" } },
+    border: { top: { style: "thin" }, bottom: { style: "thin" } },
+  };
+
+  if (wb.Sheets.Sheet1) {
+    // 达成率单元格的key开头
+    let cellKey = "";
+    for (const key in wb.Sheets.Sheet1) {
+      let value = wb.Sheets.Sheet1[key];
+      if (value && value.v == "月达成率") {
+        cellKey = key.match(/[a-zA-Z]+/g)[0];
+      }
+      // key有包含cellKey的
+      if (cellKey && key.includes(cellKey)) {
+        // 单元格的样式
+        wb.Sheets.Sheet1[key].s = percentStyle;
+        // 用于指定单元格中显示值的格式,例如日期格式、百分比格式等
+        wb.Sheets.Sheet1[key].z = "0.00%";
+      }
+    }
+  }
+  const wbout = XLSX.write(wb, {
+    bookType: "xlsx",
+    bookSST: true,
+    type: "array",
+  });
+  try {
+    FileSaver.saveAs(
+      new Blob([wbout], {
+        type: "application/octet-stream",
+      }),
+      "销售报表.xlsx"
+    );
+  } catch (e) {
+    console.log(e, wbout);
+  }
+  return wbout;
+};
+</script>
+
+<style lang="scss" scoped>
+:deep(
+    .el-table .el-table__header-wrapper th,
+    .el-table .el-table__fixed-header-wrapper th
+  ) {
+  height: auto !important;
+}
+:deep(.el-table th.el-table__cell) {
+  background: #fff !important;
+}
+:deep(.el-table .el-table__cell) {
+  padding: 0 !important;
+}
+:deep(.el-table .cell) {
+  padding: 0 6px !important;
+  font-size: 12px !important;
+}
+.query {
+  background: #20b2aa;
+  color: #fff;
+  border: 1px solid #20b2aa;
+}
+.isToday {
+  // background: red !important;
+  // color: #fff !important;
+  color: #409eff;
+}
+</style>

+ 4 - 0
src/views/EHSD/saleContract/priceSheetEHSD/index.vue

@@ -2293,6 +2293,7 @@ const handleSubmit = (type) => {
         iele.quotationProductBomList.push({
           materialId: iele.rawMaterialId,
           type: 1,
+          quantity: 1,
         });
         if (iele.packAsk) {
           iele.packAsk = iele.packAsk.join(",");
@@ -2615,6 +2616,7 @@ const handleSubmitOne = () => {
           iele.quotationProductBomList.push({
             materialId: iele.rawMaterialId,
             type: 1,
+            quantity: 1,
           });
           if (iele.packAsk) {
             iele.packAsk = iele.packAsk.join(",");
@@ -2655,6 +2657,7 @@ const handleSubmitYiJia = () => {
           iele.quotationProductBomList.push({
             materialId: iele.rawMaterialId,
             type: 1,
+            quantity: 1,
           });
           if (iele.packAsk) {
             iele.packAsk = iele.packAsk.join(",");
@@ -2987,6 +2990,7 @@ const confirmSubmit = () => {
           iele.quotationProductBomList.push({
             materialId: iele.rawMaterialId,
             type: 1,
+            quantity: 1,
           });
           if (iele.packAsk) {
             iele.packAsk = iele.packAsk.join(",");

+ 1 - 1
src/views/EHSD/saleContract/priceSheetForeign/index.vue

@@ -447,7 +447,7 @@ const config = computed(() => {
     {
       attrs: {
         label: "操作",
-        width: 200,
+        width: 220,
         slot: "btn",
         align: "right",
         fixed: "right",

+ 416 - 0
src/views/EHSD/saleContract/salesThemeAnalysis/index.vue

@@ -0,0 +1,416 @@
+<template>
+  <div class="pageIndexClass">
+    <div>
+      <byTable :source="sourceList.data" :pagination="sourceList.pagination" :config="config" :loading="loading" highlight-current-row
+               :selectConfig="selectConfig" :action-list="[
+              
+        ]" @get-list="getList">
+      </byTable>
+    </div>
+    <el-dialog :title="modalType == 'add' ? '添加店铺' : '编辑店铺'" v-model="dialogVisible" width="500px" destroy-on-close>
+      <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="formDom" v-loading="submitLoading">
+      </byForm>
+      <template #footer>
+        <el-button @click="dialogVisible = false" size="defualt">取 消</el-button>
+        <el-button type="primary" @click="submitForm()" size="defualt" :loading="submitLoading">
+          确 定
+        </el-button>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import byTable from "@/components/byTable/index";
+import byForm from "@/components/byForm/index";
+const { proxy } = getCurrentInstance();
+const jstShopStatus = computed(
+  () => proxy.useUserStore().allDict["jst_status"]
+);
+const loading = ref(false);
+const submitLoading = ref(false);
+const sourceList = ref({
+  data: [],
+  pagination: {
+    total: 3,
+    pageNum: 1,
+    pageSize: 10,
+    keyword: "",
+    produceStatus: "",
+    staDeliveryPeriod: "",
+    endDeliveryPeriod: "",
+    beginTime: "",
+    endTime: "",
+  },
+});
+const treeData = ref([]);
+const dialogVisible = ref(false);
+const modalType = ref("add");
+const selectConfig = computed(() => [
+  {
+    label: "订单状态",
+    prop: "productionProcessesId",
+    data: jstShopStatus.value,
+  },
+  {
+    type: "time",
+    label: "订单时间",
+    placeholder: "开始日期",
+    prop: "staDeliveryPeriod",
+    placeholderOne: "结束日期",
+    propOne: "endDeliveryPeriod",
+  },
+]);
+const config = computed(() => {
+  return [
+    {
+      attrs: {
+        label: "内部订单号",
+        prop: "aa",
+      },
+    },
+    {
+      attrs: {
+        label: "多标签",
+        prop: "aa",
+      },
+    },
+    {
+      attrs: {
+        label: "订单类型",
+        prop: "aa",
+      },
+    },
+    {
+      attrs: {
+        label: "线上订单号",
+        prop: "aa",
+      },
+    },
+    {
+      attrs: {
+        label: "订单状态",
+        prop: "aa",
+      },
+    },
+    {
+      attrs: {
+        label: "分销商",
+        prop: "aa",
+      },
+    },
+    {
+      attrs: {
+        label: "店铺",
+        prop: "aa",
+      },
+    },
+    {
+      attrs: {
+        label: "买家昵称",
+        prop: "aa",
+      },
+    },
+    {
+      attrs: {
+        label: "买家留言",
+        prop: "aa",
+      },
+    },
+    {
+      attrs: {
+        label: "卖家备注",
+        prop: "aa",
+      },
+    },
+    {
+      attrs: {
+        label: "订单日期",
+        prop: "aa",
+      },
+    },
+
+    {
+      attrs: {
+        label: "发货日期",
+        prop: "aa",
+      },
+    },
+    {
+      attrs: {
+        label: "确认收货日期",
+        prop: "aa",
+      },
+    },
+
+    {
+      attrs: {
+        label: "业务员",
+        prop: "processesName",
+      },
+    },
+    {
+      attrs: {
+        label: "收件人姓名",
+        prop: "quantity",
+      },
+    },
+    {
+      attrs: {
+        label: "省",
+        prop: "userName",
+      },
+    },
+    {
+      attrs: {
+        label: "市",
+        prop: "createTime",
+      },
+    },
+    {
+      attrs: {
+        label: "区县",
+        prop: "orderCode",
+      },
+    },
+    {
+      attrs: {
+        label: "快递公司",
+        prop: "pic",
+      },
+    },
+    {
+      attrs: {
+        label: "快递单号",
+        prop: "productCode",
+      },
+    },
+    {
+      attrs: {
+        label: "店铺站点",
+        prop: "productName",
+      },
+    },
+    {
+      attrs: {
+        label: "订单来源",
+        slot: "size",
+      },
+    },
+    {
+      attrs: {
+        label: "店铺编号",
+        prop: "productColor",
+      },
+    },
+    {
+      attrs: {
+        label: "商品编码",
+        prop: "productColor",
+      },
+    },
+    {
+      attrs: {
+        label: "款式编码",
+        prop: "productColor",
+      },
+    },
+
+    {
+      attrs: {
+        label: "原始线上单号",
+        prop: "productColor",
+      },
+    },
+    {
+      attrs: {
+        label: "商品名称",
+        prop: "productColor",
+      },
+    },
+    {
+      attrs: {
+        label: "店铺商品编码",
+        prop: "productColor",
+      },
+    },
+    {
+      attrs: {
+        label: "基本售价",
+        prop: "productColor",
+      },
+    },
+    {
+      attrs: {
+        label: "销售单价",
+        prop: "productColor",
+      },
+    },
+    {
+      attrs: {
+        label: "销售数量",
+        prop: "productColor",
+      },
+    },
+    {
+      attrs: {
+        label: "销售金额",
+        prop: "productColor",
+      },
+    },
+
+    // {
+    //   attrs: {
+    //     label: "操作",
+    //     width: "100",
+    //     align: "center",
+    //     fixed: "right",
+    //   },
+    //   renderHTML(row) {
+    //     return [
+    //       {
+    //         attrs: {
+    //           label: "完成订单",
+    //           type: "primary",
+    //           text: true,
+    //         },
+    //         el: "button",
+    //         click() {
+    //           getDtl(row);
+    //         },
+    //       },
+    //     ];
+    //   },
+    // },
+  ];
+});
+const formData = reactive({
+  data: {},
+});
+const formOption = reactive({
+  inline: true,
+  labelWidth: 100,
+  itemWidth: 100,
+});
+const formDom = ref(null);
+const formConfig = computed(() => {
+  return [
+    {
+      type: "input",
+      prop: "code",
+      label: "店铺编号",
+      itemWidth: 100,
+      disabled: false,
+    },
+    {
+      type: "input",
+      prop: "name",
+      label: "店铺名称",
+      itemWidth: 100,
+      disabled: false,
+    },
+    {
+      type: "treeSelect",
+      prop: "deptId",
+      label: "负责部门",
+      data: treeData.value,
+      propsTreeLabel: "deptName",
+      propsTreeValue: "deptId",
+      itemWidth: 100,
+      disabled: false,
+    },
+  ];
+});
+const rules = ref({
+  deptId: [{ required: true, message: "请选择负责部门", trigger: "change" }],
+  name: [{ required: true, message: "请输入店铺名称", trigger: "blur" }],
+  code: [{ required: true, message: "请输入店铺编号", trigger: "blur" }],
+});
+
+const getList = async (req) => {
+  sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
+  loading.value = true;
+  proxy
+    .post("/productionReportingDetail/page", sourceList.value.pagination)
+    .then((res) => {
+      sourceList.value.data = res.rows;
+      sourceList.value.pagination.total = res.total;
+      setTimeout(() => {
+        loading.value = false;
+      }, 200);
+
+      // const productIds = sourceList.value.data.map((x) => x.productId);
+      // proxy.getFileData({
+      //   businessIdList: productIds,
+      //   data: sourceList.value.data,
+      //   att: "productId",
+      //   businessType: "0",
+      //   fileAtt: "fileList",
+      //   filePathAtt: "fileUrl",
+      // });
+    });
+};
+
+const openModal = () => {
+  dialogVisible.value = true;
+  modalType.value = "add";
+  formData.data = {
+    definition: "2",
+    fileList: [],
+  };
+  if (currencyData.value && currencyData.value.length > 0) {
+    formData.data.currency = currencyData.value[0].dictKey;
+    formData.data.costCurrency = currencyData.value[0].dictKey;
+  }
+};
+
+const submitForm = () => {
+  formDom.value.handleSubmit((valid) => {
+    submitLoading.value = true;
+    proxy.post("/shopInfo/" + modalType.value, formData.data).then(
+      (res) => {
+        proxy.msgTip("操作成功", 1);
+        dialogVisible.value = false;
+        submitLoading.value = false;
+        getList();
+      },
+      (err) => {
+        submitLoading.value = false;
+      }
+    );
+  });
+};
+
+const getDtl = (row) => {
+  modalType.value = "edit";
+  proxy.post("/shopInfo/detail", { id: row.id }).then((res) => {
+    formData.data = res;
+    dialogVisible.value = true;
+  });
+};
+
+getList();
+
+const processesData = ref([]);
+const getProcesses = () => {
+  proxy
+    .post("/productionProcesses/page", { pageNum: 1, pageSize: 9999 })
+    .then((res) => {
+      processesData.value = res.rows.map((x) => ({
+        ...x,
+        label: x.name,
+        value: x.id,
+      }));
+    });
+};
+getProcesses();
+</script>
+
+<style lang="scss" scoped>
+::v-deep(.el-progress__text) {
+  font-size: 14px !important;
+}
+.content {
+  padding: 20px;
+}
+</style>

+ 108 - 57
src/views/JST/order/index.vue

@@ -8,30 +8,40 @@
 
         <template #code="{ item }">
           <div>
-            <span class="el-click" @click="handleGetDtl(item)">{{ item.oid }}</span>
+            <span class="el-click" @click="handleGetDtl(item,true)">{{ item.oid }}</span>
           </div>
         </template>
 
       </byTable>
     </div>
-    <el-dialog :title="'商品详情'" v-model="dialogVisible" width="1000px" destroy-on-close>
+    <el-dialog :title="'订单详情'" v-model="dialogVisible" width="1000px" destroy-on-close>
       <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="formDom" v-loading="submitLoading">
         <template #details>
           <div style="width:100%">
             <el-table :data="formData.data.items">
               <el-table-column prop="shopSkuId" label="商品编码" width="170" />
               <el-table-column prop="name" label="商品名称" />
-              <el-table-column prop="price" label="单价" width="100" />
+              <el-table-column prop="price" label="单价" width="150">
+                <template #default="{ row, $index }">
+                  <div style="width: 100%">
+                    <el-form-item :prop="'items.' + $index + '.price'" :rules="rules.price" :inline-message="true" class="margin-b-0 wid100">
+                      <el-input-number onmousewheel="return false;" v-model="row.price" placeholder="请输入" style="width: 100%" :precision="2"
+                                       :controls="false" :min="0" @change="totalAmount" />
+                    </el-form-item>
+                  </div>
+                </template>
+              </el-table-column>
               <el-table-column prop="qty" label="数量" width="100" />
+              <el-table-column prop="amount" label="小计" width="100" />
             </el-table>
           </div>
         </template>
       </byForm>
       <template #footer>
         <el-button @click="dialogVisible = false" size="defualt" v-debounce>关闭</el-button>
-        <!-- <el-button type="primary" @click="submitForm()" size="defualt" v-debounce :loading="submitLoading">
-          确 定
-        </el-button> -->
+        <el-button type="primary" @click="submitForm()" size="defualt" v-if="!isDetails" v-debounce :loading="submitLoading">
+          保 存
+        </el-button>
       </template>
     </el-dialog>
   </div>
@@ -151,52 +161,52 @@ const config = computed(() => {
         width: 160,
       },
     },
-    // {
-    //   attrs: {
-    //     label: "操作",
-    //     width: "120",
-    //     align: "center",
-    //     fixed: "right",
-    //   },
-    //   renderHTML(row) {
-    //     return [
-    //       {
-    //         attrs: {
-    //           label: "修改",
-    //           type: "primary",
-    //           text: true,
-    //         },
-    //         el: "button",
-    //         click() {
-    //           getDtl(row);
-    //         },
-    //       },
-    //       {
-    //         attrs: {
-    //           label: "删除",
-    //           type: "danger",
-    //           text: true,
-    //         },
-    //         el: "button",
-    //         click() {
-    //           proxy
-    //             .msgConfirm()
-    //             .then((res) => {
-    //               proxy
-    //                 .post("/shopInfo/delete", {
-    //                   id: row.id,
-    //                 })
-    //                 .then((res) => {
-    //                   proxy.msgTip("删除成功", 1);
-    //                   getList();
-    //                 });
-    //             })
-    //             .catch((err) => {});
-    //         },
-    //       },
-    //     ];
-    //   },
-    // },
+    {
+      attrs: {
+        label: "操作",
+        width: "80",
+        align: "center",
+        fixed: "right",
+      },
+      renderHTML(row) {
+        return [
+          {
+            attrs: {
+              label: "修改",
+              type: "primary",
+              text: true,
+            },
+            el: "button",
+            click() {
+              handleGetDtl(row);
+            },
+          },
+          // {
+          //   attrs: {
+          //     label: "删除",
+          //     type: "danger",
+          //     text: true,
+          //   },
+          //   el: "button",
+          //   click() {
+          //     proxy
+          //       .msgConfirm()
+          //       .then((res) => {
+          //         proxy
+          //           .post("/shopInfo/delete", {
+          //             id: row.id,
+          //           })
+          //           .then((res) => {
+          //             proxy.msgTip("删除成功", 1);
+          //             getList();
+          //           });
+          //       })
+          //       .catch((err) => {});
+          //   },
+          // },
+        ];
+      },
+    },
   ];
 });
 const formData = reactive({
@@ -211,6 +221,10 @@ const formDom = ref(null);
 const formConfig = computed(() => {
   return [
     {
+      type: "title1",
+      title: "商品明细",
+    },
+    {
       type: "slot",
       prop: "name",
       slotName: "details",
@@ -218,12 +232,21 @@ const formConfig = computed(() => {
       itemWidth: 100,
       disabled: false,
     },
+    // {
+    //   type: "title1",
+    //   title: "应付金额",
+    // },
+    // {
+    //   type: "input",
+    //   prop: "payAmount",
+    //   label: "应付金额",
+    //   itemWidth: 25,
+    //   disabled: true,
+    // },
   ];
 });
 const rules = ref({
-  deptId: [{ required: true, message: "请选择负责部门", trigger: "change" }],
-  name: [{ required: true, message: "请输入店铺名称", trigger: "blur" }],
-  code: [{ required: true, message: "请输入店铺编号", trigger: "blur" }],
+  price: [{ required: true, message: "请输入单价", trigger: "blur" }],
 });
 
 const getDeptData = () => {
@@ -265,10 +288,35 @@ const openModal = () => {
   }
 };
 
+const totalAmount = () => {
+  let money = 0;
+  if (formData.data.items && formData.data.items.length > 0) {
+    for (let i = 0; i < formData.data.items.length; i++) {
+      formData.data.items[i].amount = parseFloat(
+        Number(formData.data.items[i].qty) *
+          Number(formData.data.items[i].price)
+      ).toFixed(2);
+      money = parseFloat(
+        Number(money) + Number(formData.data.items[i].amount)
+      ).toFixed(2);
+    }
+  }
+  // formData.data.payAmount = money;
+};
+
 const submitForm = () => {
   formDom.value.handleSubmit((valid) => {
     submitLoading.value = true;
-    proxy.post("/shopInfo/" + modalType.value, formData.data).then(
+    const data = {
+      id: formData.data.id,
+      payAmount: formData.data.payAmount,
+      items: formData.data.items.map((x) => ({
+        id: x.id,
+        price: x.price,
+        amount: x.amount,
+      })),
+    };
+    proxy.post("/jstOrderInfo/edit", data).then(
       (res) => {
         proxy.msgTip("操作成功", 1);
         dialogVisible.value = false;
@@ -290,8 +338,11 @@ const getDtl = (row) => {
   });
 };
 
-const handleGetDtl = (row) => {
+const isDetails = ref(false);
+const handleGetDtl = (row, flag = false) => {
+  isDetails.value = flag;
   proxy.post("/jstOrderInfo/detail", { id: row.id }).then((res) => {
+    console.log(res, "saa");
     formData.data = res;
     dialogVisible.value = true;
   });

+ 9 - 6
src/views/MES/productionOrder/index.vue

@@ -191,16 +191,16 @@
                   <div v-else></div>
                 </template>
               </el-table-column>
-              <el-table-column prop="productCnName" label="商品名称" min-width="130" />
-              <el-table-column prop="productCode" label="商品编码" width="130" />
-              <el-table-column label="尺寸 (cm)" width="150">
+              <el-table-column prop="productCnName" label="商品名称" min-width="150" />
+              <el-table-column prop="productCode" label="商品编码" width="200" />
+              <el-table-column label="尺寸 (cm)" width="130">
                 <template #default="{ row, $index }">
                   <div style="width: 100%">
                     {{row.productLength}} * {{row.productWidth}} * {{row.productHeight}}
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column prop="productColor" label="颜色" width="100" />
+              <el-table-column prop="productColor" label="颜色" width="150" />
               <!-- <el-table-column label="设计图稿" width="80">
                 <template #default="{ row, $index }">
                   <div style="width: 100%">
@@ -213,7 +213,7 @@
                   </div>
                 </template>
               </el-table-column> -->
-              <el-table-column label="生产plt文件" width="140">
+              <el-table-column label="生产plt文件" width="220">
                 <template #default="{ row, $index }">
                   <div style="width:100%">
                     <div v-if="row.isShowProductFile &&row.fileListOne && row.fileListOne.length > 0">
@@ -228,7 +228,7 @@
 
                 </template>
               </el-table-column>
-              <el-table-column label="数量" width="150" prop="quantity" />
+              <el-table-column label="数量" width="100" prop="quantity" />
               <el-table-column label="备注" min-width="200" prop="remark" />
             </el-table>
           </div>
@@ -1179,4 +1179,7 @@ const submitConfirm = (type) => {
   padding: 4px;
   color: #fff;
 }
+:deep(.bom-table .el-table__body-wrapper .el-table__body .el-table__row) {
+  background: #f4f4f5 !important;
+}
 </style>

+ 71 - 27
src/views/MES/reportDetail/index.vue

@@ -6,23 +6,18 @@
               
         ]" @get-list="getList">
 
-        <template #list="{ item }">
-          <div style="width:100%">
-            <span v-for="(product ,index) in item.produceOrderDetailList" style="margin-right:15px">
-              <el-popover placement="top-start" :width="300" trigger="hover">
-                <div>
-                  <div>产品编码:{{product.productCode}}</div>
-                  <div>产品名称:{{product.productName}}</div>
-                  <div>产品尺寸:{{product.productLength}}cm*{{product.productWidth}}cm*{{product.productHeight}}cm</div>
-                </div>
-                <template #reference>
-                  <el-progress type="circle" :percentage="(Number(product.finishQuantity) / Number(product.quantity))*100" width="60"
-                               :status="(Number(product.finishQuantity) / Number(product.quantity))*100 == 100 ? 'success' : ''" />
-                </template>
-              </el-popover>
-
-            </span>
+        <template #pic="{ item }">
+          <div v-if="item.fileUrl">
+            <img :src="item.fileUrl" class="pic" @click="openImg(item.fileUrl)" />
+          </div>
+          <div v-else></div>
+        </template>
 
+        <template #size="{ item }">
+          <div v-if="item.productLength && item.productWidth && item.productHeight">
+            <span>{{ item.productLength }}</span>*
+            <span>{{ item.productWidth }}</span>*
+            <span>{{ item.productHeight }}</span>
           </div>
         </template>
 
@@ -89,43 +84,82 @@ const selectConfig = computed(() => [
 ]);
 const config = computed(() => {
   return [
+    // {
+    //   attrs: {
+    //     label: "任务编号",
+    //     prop: "orderCode",
+    //     // width: 150,
+    //   },
+    // },
     {
       attrs: {
-        label: "任务编号",
-        prop: "orderCode",
-        // width: 150,
+        label: "工序",
+        prop: "processesName",
+        width: 100,
       },
     },
     {
       attrs: {
         label: "报工数量",
         prop: "quantity",
-        // width: 160,
+        width: 100,
       },
     },
     {
       attrs: {
         label: "报工人",
         prop: "userName",
-        // width: 160,
+        width: 140,
       },
     },
     {
       attrs: {
         label: "报工时间",
         prop: "createTime",
+        width: 160,
+      },
+    },
+    {
+      attrs: {
+        label: "订单号",
+        prop: "orderCode",
+        width: 130,
+      },
+    },
+    {
+      attrs: {
+        label: "产品图片",
+        slot: "pic",
+        width: 100,
+      },
+    },
+    {
+      attrs: {
+        label: "产品编码",
+        prop: "productCode",
         // width: 160,
       },
     },
     {
       attrs: {
-        label: "工序名称",
-        prop: "processesName",
-        // width: 120,
+        label: "产品名称",
+        prop: "productName",
+        // "min-width": 200,
+      },
+    },
+    {
+      attrs: {
+        label: "产品尺寸 (cm)",
+        slot: "size",
+        // width: 160,
+      },
+    },
+    {
+      attrs: {
+        label: "产品颜色",
+        prop: "productColor",
+        // width: 160,
       },
-      // render(val) {
-      //   return proxy.dictValueLabel(val, statusData.value);
-      // },
     },
 
     // {
@@ -207,6 +241,16 @@ const getList = async (req) => {
       setTimeout(() => {
         loading.value = false;
       }, 200);
+
+      const productIds = sourceList.value.data.map((x) => x.productId);
+      proxy.getFileData({
+        businessIdList: productIds,
+        data: sourceList.value.data,
+        att: "productId",
+        businessType: "0",
+        fileAtt: "fileList",
+        filePathAtt: "fileUrl",
+      });
     });
 };
 

+ 2 - 2
src/views/connect/E-mail/mail/com/right.vue

@@ -3,13 +3,13 @@
     <!-- <el-radio-group v-model="headRadio" size="mini">
       <el-radio-button label="1">合同制作</el-radio-button>
       <el-radio-button label="2">单证</el-radio-button>
-      <el-radio-button label="3">采购合同</el-radio-button>
+      <el-radio-button label="3">采购订单</el-radio-button>
       <el-radio-button label="4">网盘资料</el-radio-button>
     </el-radio-group> -->
     <el-tabs v-model="headRadio" style="font-size: 13px" stretch>
       <el-tab-pane label="合同制作" name="1"> </el-tab-pane>
       <el-tab-pane label="单证" name="2"> </el-tab-pane>
-      <el-tab-pane label="采购合同" name="3"> </el-tab-pane>
+      <el-tab-pane label="采购订单" name="3"> </el-tab-pane>
       <el-tab-pane label="网盘资料" name="4"> </el-tab-pane>
     </el-tabs>
     <div v-show="headRadio === '1'">

+ 14 - 52
src/views/connect/E-mail/mail/com/right/contract/pi.vue

@@ -1,47 +1,22 @@
 <template>
   <div>
-    <el-button type="primary" size="mini" class="btn" @click="handleMakeNew"
-      >制作合同</el-button
-    >
+    <el-button type="primary" size="mini" class="btn" @click="handleMakeNew">制作合同</el-button>
     <div style="margin: 10px 0; display: flex; align-items: center">
-      <el-input
-        class="input_content"
-        placeholder="请输入内容"
-        v-model="sourceList.pagination.keyword"
-        style="width: 50%"
-        clearable
-        size="small"
-      ></el-input>
-      <el-select
-        v-model="sourceList.pagination.status"
-        clearable
-        filterable
-        style="width: 40%; margin-left: 10px"
-        size="small"
-      >
-        <el-option
-          v-for="(item, index) in statusData"
-          :key="index"
-          :value="item.value"
-          :label="item.label"
-        ></el-option>
+      <el-input class="input_content" placeholder="请输入内容" v-model="sourceList.pagination.keyword" style="width: 50%" clearable
+                size="small"></el-input>
+      <el-select v-model="sourceList.pagination.status" clearable filterable style="width: 40%; margin-left: 10px" size="small">
+        <el-option v-for="(item, index) in statusData" :key="index" :value="item.value" :label="item.label"></el-option>
       </el-select>
       <div style="text-align: center; width: 10%">
-        <el-icon style="cursor: pointer" @click="getData"><Search /></el-icon>
+        <el-icon style="cursor: pointer" @click="getData">
+          <Search />
+        </el-icon>
       </div>
     </div>
-    <el-table
-      :data="sourceList.data"
-      style="width: 100%; margin-top: 10px"
-      v-loading="loading"
-      :height="tableHeight"
-    >
+    <el-table :data="sourceList.data" style="width: 100%; margin-top: 10px" v-loading="loading" :height="tableHeight">
       <el-table-column prop="code" label="单号" width="130" fixed="left">
         <template #default="{ row }">
-          <div
-            style="cursor: pointer; color: #409eff"
-            @click="handleClickContractCode(row)"
-          >
+          <div style="cursor: pointer; color: #409eff" @click="handleClickContractCode(row)">
             {{ row.code }}
           </div>
         </template>
@@ -53,12 +28,7 @@
           <div>{{ row.currency }} {{ moneyFormat(row.amount, 2) }}</div>
         </template>
       </el-table-column>
-      <el-table-column
-        prop="status"
-        label="状态"
-        width="80"
-        :formatter="getStatus"
-      />
+      <el-table-column prop="status" label="状态" width="80" :formatter="getStatus" />
       <!-- <el-table-column label="操作" width="60" fixed="right" align="center">
         <template #default="{ row }">
           <el-button type="primary" text
@@ -67,16 +37,8 @@
         </template>
       </el-table-column> -->
     </el-table>
-    <el-pagination
-      style="margin-top: 10px"
-      v-model:current-page="sourceList.pagination.pageNum"
-      :page-size="10"
-      layout="total, prev, pager, next"
-      :total="sourceList.pagination.total"
-      prev-text="上一页"
-      next-text="下一页"
-      @current-change="handleCurrentChange"
-    />
+    <el-pagination style="margin-top: 10px" v-model:current-page="sourceList.pagination.pageNum" :page-size="10" layout="total, prev, pager, next"
+                   :total="sourceList.pagination.total" prev-text="上一页" next-text="下一页" @current-change="handleCurrentChange" />
   </div>
 </template>
   
@@ -150,7 +112,7 @@ const handleMakeNew = () => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "contract_flow",
-      flowName: "销售合同审批流程",
+      flowName: "销售订单审批流程",
       random: proxy.random(),
     },
   });

+ 1 - 1
src/views/customer/portrait/com/LatestProgress.vue

@@ -47,7 +47,7 @@ const props = defineProps({
 const { proxy } = getCurrentInstance();
 const loading = ref(false);
 const progressList = ref([]);
-// 判断当前用户有无销售合同页面权限
+// 判断当前用户有无销售订单页面权限
 const isHave = ref(false);
 if (
   useUserStore().permissions &&

+ 1 - 1
src/views/finance/fundManage/accountStatement/index.vue

@@ -296,7 +296,7 @@ const config = computed(() => {
     },
     {
       attrs: {
-        label: "关联销售合同",
+        label: "关联销售订单",
         slot: "contractCodes",
         width: 160,
       },

+ 1 - 1
src/views/finance/fundManage/flow/index.vue

@@ -366,7 +366,7 @@ const config = computed(() => {
     },
     {
       attrs: {
-        label: "关联销售合同",
+        label: "关联销售订单",
         slot: "contractCodes",
         width: 160,
       },

+ 9 - 1
src/views/process/processApproval/index.vue

@@ -16,7 +16,7 @@
           <DiscussPrice ref="makeDom" :queryData="queryData.data"></DiscussPrice>
         </template>
 
-        <!-- 销售合同 -->
+        <!-- 销售订单 -->
         <Contract ref="makeDom" :queryData="queryData.data" v-else-if="flowForm.flowKey == 'contract_flow' || flowForm.flowKey == 'sample_flow'">
         </Contract>
 
@@ -24,6 +24,10 @@
         <ContractChange ref="makeDom" :queryData="queryData.data"
                         v-else-if="flowForm.flowKey == 'contract_update_flow' || flowForm.flowKey == 'sample_update_flow' "></ContractChange>
 
+        <!-- 售后 -->
+        <AfterSales ref="makeDom" :queryData="queryData.data" v-else-if="flowForm.flowKey == 'after_sales_flow'">
+        </AfterSales>
+
         <!-- 申购 -->
         <Subscribe ref="makeDom" :queryData="queryData.data" v-else-if="flowForm.flowKey == 'subscribe_flow'"></Subscribe>
 
@@ -155,6 +159,8 @@ import DiscussPrice from "@/components/process/SF/DiscussPrice";
 import Contract from "@/components/process/SF/Contract";
 import ContractChange from "@/components/process/SF/ContractChange";
 
+import AfterSales from "@/components/process/SF/AfterSales";
+
 import Subscribe from "@/components/process/SF/Subscribe";
 import Purchase from "@/components/process/SF/Purchase";
 import PurchaseChange from "@/components/process/SF/PurchaseChange";
@@ -327,6 +333,8 @@ const skipPage = () => {
     purchase_flow: "Purchase",
     pay_flow: "Payment",
     purchase_back_flow: "ReturnGood",
+    discuss_price_flow: "PriceSheetEHSD",
+    after_sales_flow: "AfterSales",
   };
   const useTagsStore = useTagsViewStore();
   useTagsStore.delVisitedView(router.currentRoute.value);

+ 2 - 2
src/views/publicModule/contractTemplate/index.vue

@@ -40,11 +40,11 @@ const companyList = ref([]);
 const typeData = ref([
   {
     dictKey: 1,
-    dictValue: "销售合同",
+    dictValue: "销售订单",
   },
   {
     dictKey: 2,
-    dictValue: "采购合同",
+    dictValue: "采购订单",
   },
 ]);
 

+ 1 - 1
src/views/purchaseManage/purchaseManage/alreadyPurchase/index.vue

@@ -274,7 +274,7 @@ const config = computed(() => {
     },
     {
       attrs: {
-        label: "关联销售合同",
+        label: "关联销售订单",
         prop: "contractCode",
         slot: "contractCode",
       },

+ 3 - 3
src/views/purchaseManage/purchaseManage/purchaseDocumentary/index.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="content">
     <el-form :inline="true" :model="sourceList.pagination" class="demo-form-inline">
-      <el-form-item label="采购合同号:" prop="code">
-        <el-input v-model="sourceList.pagination.code" placeholder="请输入采购合同号" />
+      <el-form-item label="采购订单号:" prop="code">
+        <el-input v-model="sourceList.pagination.code" placeholder="请输入采购订单号" />
       </el-form-item>
       <el-form-item label="采购员:" prop="userId">
         <el-select v-model="sourceList.pagination.userId" placeholder="请选择业务员">
@@ -50,7 +50,7 @@
         <template #header>
           <el-row>
             <el-col :span="4">
-              <span>采购合同号: </span>
+              <span>采购订单号: </span>
               <span style="cursor: pointer; color: #66b1ff">
                 {{ item.code }}
               </span>

+ 1 - 1
src/views/purchaseManage/purchasePayment/invoice/index.vue

@@ -15,7 +15,7 @@
       <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="submit">
         <template #information>
           <el-table :data="formData.data.invoiceDetailsList" style="width: 100%; margin-top: 16px">
-            <el-table-column prop="code" label="采购合同" min-width="140" />
+            <el-table-column prop="code" label="采购订单" min-width="140" />
             <el-table-column prop="amount" label="合同金额" width="120" />
             <el-table-column prop="sumInvoiceMoney" label="已收发票金额" width="120" />
             <el-table-column label="关联金额" width="140">

+ 1 - 1
src/views/purchaseManage/purchasePayment/paymentBill/index.vue

@@ -96,7 +96,7 @@ const config = computed(() => {
     },
     {
       attrs: {
-        label: "采购合同号",
+        label: "采购订单号",
         prop: "code",
         width: 200,
       },

+ 7 - 1
src/views/purchaseSales/outAndInWarehouse/manualDelivery/index.vue

@@ -44,6 +44,7 @@
                   (row) => dictKeyValue(row.productUnit, materialUnitData)
                 " /> -->
               <el-table-column prop="stockQuantity" label="库存数量" width="100" />
+              <el-table-column prop="availableQuantity" label="可用库存" width="100" />
               <el-table-column label="出库数量" width="140">
                 <template #default="{ row, $index }">
                   <div style="width: 100%">
@@ -323,7 +324,11 @@ const getDict = () => {
   });
 
   proxy
-    .post("produceOrder/page", { pageNum: 1, pageSize: 9999 })
+    .post("produceOrder/page", {
+      pageNum: 1,
+      pageSize: 9999,
+      neProduceStatus: "10,99",
+    })
     .then((res) => {
       produceOrder.value = res.rows.map((x) => ({
         label: x.code,
@@ -552,6 +557,7 @@ const selectGood = (row) => {
     productWidth: row.productWidth,
     productHeight: row.productHeight,
     stockQuantity: row.quantity,
+    availableQuantity: row.availableQuantity || 0,
     quantity: null,
   });
   proxy.msgTip("选择成功");

+ 5 - 1
src/views/purchaseSales/outAndInWarehouse/manualWarehousing/index.vue

@@ -290,7 +290,11 @@ const getDict = () => {
   });
 
   proxy
-    .post("produceOrder/page", { pageNum: 1, pageSize: 9999 })
+    .post("produceOrder/page", {
+      pageNum: 1,
+      pageSize: 9999,
+      neProduceStatus: "10,99",
+    })
     .then((res) => {
       produceOrder.value = res.rows.map((x) => ({
         label: x.code,

+ 3 - 0
src/views/purchaseSales/outAndInWarehouse/waitingForDelivery/index.vue

@@ -62,6 +62,8 @@
                     </div>
                   </template>
                 </el-table-column>
+
+                <el-table-column label="可用库存" prop="availableQuantity" width="100" />
                 <el-table-column label="需出库数量" prop="needQuantity" width="100" />
                 <el-table-column label="待出库数量" prop="waitQuantity" width="100" />
                 <el-table-column label="已出库数量" prop="receiptQuantity" width="100" />
@@ -491,6 +493,7 @@ const clickOperation = (row) => {
     warehouseId: "",
     stockWaitDetailsList: row.stockWaitDetailsList.map((x) => ({
       ...x,
+      availableQuantity: x.availableQuantity || 0,
       needQuantity: x.quantity,
       quantity: null,
     })),

+ 26 - 8
src/views/salesMange/afterSales/index.vue

@@ -79,7 +79,7 @@
 <script setup>
 import byTable from "@/components/byTable/index";
 import byForm from "@/components/byForm/index";
-import SelectContractProduct from "./SelectContractProduct.vue";
+import SelectContractProduct from "@/views/salesMange/afterSales/SelectContractProduct.vue";
 
 const { proxy } = getCurrentInstance();
 const loading = ref(false);
@@ -418,9 +418,17 @@ const getDict = () => {
 getDict();
 getList();
 const clickAdd = (type) => {
-  formOption.disabled = false;
-  formData.data = {};
-  dialogVisible.value = true;
+  // formOption.disabled = false;
+  // formData.data = {};
+  // dialogVisible.value = true;
+  proxy.$router.replace({
+    path: "/platform_manage/process/processApproval",
+    query: {
+      flowKey: "after_sales_flow",
+      flowName: "售后流程",
+      random: proxy.random(),
+    },
+  });
 };
 
 const handleSelect = (row) => {
@@ -457,10 +465,20 @@ const handleSelect = (row) => {
 };
 
 const getDtl = (row) => {
-  formOption.disabled = true;
-  formData.data = row;
-  formData.data.size = `${row.productLength}*${row.productWidth}*${row.productHeight}`;
-  dialogVisible.value = true;
+  proxy.$router.push({
+    path: "/platform_manage/process/processApproval",
+    query: {
+      flowKey: "after_sales_flow",
+      id: row.flowId,
+      processType: 20,
+      businessId: row.id,
+      // submitType,
+    },
+  });
+  // formOption.disabled = true;
+  // formData.data = row;
+  // formData.data.size = `${row.productLength}*${row.productWidth}*${row.productHeight}`;
+  // dialogVisible.value = true;
 };
 </script>
   

+ 4 - 3
src/views/salesMange/saleContract/claim/index.vue

@@ -215,11 +215,12 @@ const config = computed(() => {
     {
       attrs: {
         label: "操作",
-        width: "140",
-        align: "right",
+        width: "100",
+        align: "center",
+        fixed: "right",
       },
       renderHTML(row) {
-        [
+        return [
           row.isClaim != 1
             ? {
                 attrs: {

+ 3 - 3
src/views/salesMange/saleContract/contract/index.vue

@@ -498,7 +498,7 @@ const newContract = () => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "contract_flow",
-      flowName: "销售合同审批流程",
+      flowName: "销售订单审批流程",
       random: proxy.random(),
     },
   });
@@ -576,7 +576,7 @@ const pushProcessApproval = (row) => {
       id: row.flowId,
       processType: 20,
       random: proxy.random(),
-      flowName: "销售合同详情",
+      flowName: "销售订单详情",
     },
   });
   return;
@@ -598,7 +598,7 @@ const clickAlteration = (row) => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "contract_update_flow",
-      flowName: "销售合同变更流程",
+      flowName: "销售订单变更流程",
       contractId: row.id,
       random: proxy.random(),
     },

+ 1 - 1
src/views/salesMange/saleContract/middle/index.vue

@@ -470,7 +470,7 @@ const pushProcessApproval = (row) => {
       id: row.flowId,
       processType: 20,
       random: proxy.random(),
-      flowName: "销售合同详情",
+      flowName: "销售订单详情",
     },
   });
   return;

+ 1 - 1
src/views/salesMange/saleContract/priceSheet/index.vue

@@ -693,7 +693,7 @@ const generateContract = (row) => {
     path: "/platform_manage/process/processApproval",
     query: {
       flowKey: "contract_flow",
-      flowName: "销售合同审批流程",
+      flowName: "销售订单审批流程",
       random: proxy.random(),
       priceSheetId: row.id,
     },

+ 3 - 3
src/views/salesMange/saleContract/salesDocumentary/index.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="content">
     <el-form :inline="true" :model="sourceList.pagination" class="demo-form-inline">
-      <el-form-item label="销售合同号:" prop="code">
-        <el-input v-model="sourceList.pagination.code" placeholder="请输入销售合同号" />
+      <el-form-item label="销售订单号:" prop="code">
+        <el-input v-model="sourceList.pagination.code" placeholder="请输入销售订单号" />
       </el-form-item>
       <el-form-item label="业务员:" prop="userId">
         <el-select v-model="sourceList.pagination.userId" placeholder="请选择业务员">
@@ -50,7 +50,7 @@
         <template #header>
           <el-row>
             <el-col :span="4">
-              <span>销售合同号: </span>
+              <span>销售订单号: </span>
               <span style="cursor: pointer; color: #66b1ff">
                 {{ item.code }}
               </span>

+ 2 - 2
src/views/salesMange/salesMange/performance/index.vue

@@ -34,14 +34,14 @@
           <el-table-column label="业务员">
             <el-table-column label="" prop="userName" width="120" />
           </el-table-column>
-          <el-table-column label="销售合同金额">
+          <el-table-column label="销售订单金额">
             <el-table-column label="" prop="contractAmount" width="120" />
           </el-table-column>
           <el-table-column label="收入">
             <el-table-column label="合同到账" prop="contractArrival" width="120" />
             <el-table-column label="其他收入" prop="otherIncome" width="120" />
           </el-table-column>
-          <el-table-column label="采购合同金额">
+          <el-table-column label="采购订单金额">
             <el-table-column label="" prop="purchaseAmount" width="120" />
           </el-table-column>
           <el-table-column label="支出">

+ 2 - 2
src/views/salesMange/salesMange/profitSettlement/index.vue

@@ -22,7 +22,7 @@
         <el-table-column label="业务员">
           <el-table-column label="" prop="userName" width="120" />
         </el-table-column>
-        <el-table-column label="销售合同金额">
+        <el-table-column label="销售订单金额">
           <el-table-column label="" width="120">
             <template #default="{ row }">
               <div>
@@ -48,7 +48,7 @@
             </template>
           </el-table-column>
         </el-table-column>
-        <el-table-column label="采购合同金额">
+        <el-table-column label="采购订单金额">
           <el-table-column label="" width="120">
             <template #default="{ row }">
               <div>

+ 27 - 17
src/views/salesMange/shipmentMange/packing/index.vue

@@ -127,7 +127,7 @@
                 </el-form-item>
               </el-col>
             </el-row>
-            <el-form-item label="选择合同" prop="contractIds">
+            <el-form-item label="选择销售订单" prop="contractIds">
               <el-select v-model="formData.data.contractIds" placeholder="请选择" @change="handleChangeContract" filterable style="width: 100%" multiple>
                 <el-option v-for="item in contractData" :label="item.code" :value="item.id">
                 </el-option>
@@ -249,7 +249,7 @@
                 </el-form-item>
               </el-col>
             </el-row>
-            <el-form-item label="选择合同" prop="contractIds">
+            <el-form-item label="选择销售订单" prop="contractIds">
               <el-select v-model="formData.data.contractIds" placeholder="请选择" @change="handleChangeContract" filterable style="width: 100%" multiple>
                 <el-option v-for="item in contractData" :label="item.code" :value="item.id">
                 </el-option>
@@ -451,15 +451,23 @@
               ">
               <div style="padding: 8px 0; width: 100%" v-html="getStyle(packDetail.remark)"></div>
             </div>
-            <div style="width: 50%; padding-left: 4px">
-              <div style="font-weight: 700">总箱数</div>
-              <div>{{ packDetail.packQuantity }}</div>
-              <div style="font-weight: 700">总毛重(KG)</div>
-              <div>{{ packDetail.roughWeight }}</div>
-              <div style="font-weight: 700">总净重(KG)</div>
-              <div>{{ packDetail.netWeight }}</div>
-              <div style="font-weight: 700">总体积(m³)</div>
-              <div>{{ (packDetail.volume / 1000000).toFixed(4) }}</div>
+            <div style="width: 50%; padding-left: 4px;display:flex;flex-wrap:wrap">
+              <div style="width:50%">
+                <div style="font-weight: 700">总箱数</div>
+                <div>{{ packDetail.packQuantity }}</div>
+              </div>
+              <div style="width:50%">
+                <div style="font-weight: 700">总毛重(KG)</div>
+                <div>{{ packDetail.roughWeight }}</div>
+              </div>
+              <div style="width:50%">
+                <div style="font-weight: 700">总净重(KG)</div>
+                <div>{{ packDetail.netWeight }}</div>
+              </div>
+              <div style="width:50%">
+                <div style="font-weight: 700">总体积(m³)</div>
+                <div>{{ (packDetail.volume / 1000000).toFixed(4) }}</div>
+              </div>
             </div>
           </div>
         </div>
@@ -471,13 +479,13 @@
         </div>
         <table class="three" cellspacing="0" cellpadding="0" border="0" style="width: 100%; border-bottom: 0">
           <thead>
-            <th style="text-align: center; width: 10%">货物描述</th>
-            <th style="text-align: center; width: 10%">订单编号</th>
+            <th style="text-align: center; width: 12%">货物描述</th>
+            <th style="text-align: center; width: 12%">订单编号</th>
             <th style="text-align: center; width: 10%">供应商</th>
             <th style="text-align: center; width: 10%">图片</th>
             <th style="text-align: center; width: 10%">入箱数量</th>
-            <th style="text-align: center; width: 10%">总箱数</th>
-            <th style="text-align: center; width: 10%">总数量</th>
+            <th style="text-align: center; width: 8%">总箱数</th>
+            <th style="text-align: center; width: 8%">总数量</th>
             <th style="text-align: center; width: 10%">总净重(KG)</th>
             <th style="text-align: center; width: 10%">总毛重(KG)</th>
             <th style="text-align: center; width: 10%">总体积(m³)</th>
@@ -574,7 +582,9 @@ let dialogVisible = ref(false);
 let dialogVisibleOne = ref(false);
 let modalType = ref("add");
 let rules = ref({
-  contractIds: [{ required: true, message: "请选择合同", trigger: "change" }],
+  contractIds: [
+    { required: true, message: "请选择销售订单", trigger: "change" },
+  ],
   packQuantity: [{ required: true, message: "请输入箱数", trigger: "blur" }],
   netWeight: [{ required: true, message: "请输入净重", trigger: "blur" }],
   roughWeight: [{ required: true, message: "请输入毛重", trigger: "blur" }],
@@ -625,7 +635,7 @@ const config = computed(() => {
     },
     {
       attrs: {
-        label: "合同号",
+        label: "订单号",
         prop: "codeAPName",
         slot: "code",
         width: 150,

+ 16 - 17
src/views/systemTenant/tenant/deptTenant/index.vue

@@ -202,28 +202,27 @@ const formConfig = computed(() => {
     //   clearable: true,
     //   itemWidth: 50,
     // },
-
     {
       type: "input",
       prop: "jstDistributor",
       label: "聚水潭分销商",
     },
-    {
-      type: "select",
-      prop: "nature",
-      label: "性质",
-      data: [
-        {
-          label: "销售",
-          value: "0",
-        },
-        {
-          label: "生产",
-          value: "1",
-        },
-      ],
-      isShow: formData.data.type == 3,
-    },
+    // {
+    //   type: "select",
+    //   prop: "nature",
+    //   label: "性质",
+    //   data: [
+    //     {
+    //       label: "销售",
+    //       value: "0",
+    //     },
+    //     {
+    //       label: "生产",
+    //       value: "1",
+    //     },
+    //   ],
+    //   isShow: formData.data.type == 3,
+    // },
     {
       type: "slot",
       prop: "orderNum",