Bläddra i källkod

采购订单组件优化:注释自动获取批次号代码,调整标签页样式和表格显示逻辑,添加仓库管理员ID获取逻辑

yusheng 9 månader sedan
förälder
incheckning
e4f7ac9f7a

+ 1 - 1
src/components/addDoc/getCode.vue

@@ -119,7 +119,7 @@
         this.form.type1 = '';
       },
       async type1Change(val) {
-        this.form.code = await getCode(val);
+        // this.form.code = await getCode(val);
       },
       /* 保存编辑 */
       save() {

+ 1 - 1
src/views/purchasingManage/purchaseOrder/components/inventoryTable.vue

@@ -1408,7 +1408,7 @@
             );
           }
           this.$set(parasm, 'supplierMark', this.supplierMark);
-          this.$set(parasm, 'batchNo', await getCode('1900101420390125570'));
+          // this.$set(parasm, 'batchNo', await getCode('1900101420390125570'));
           if (item.purchaseOrigins?.length > 0) {
             item.purchaseOrigins = item.purchaseOrigins.map((val) => val + '');
           }

+ 41 - 14
src/views/purchasingManage/purchaseOrder/index.vue

@@ -9,8 +9,9 @@
               :key="item.key"
               :class="{ active: activeComp == item.key }"
               @click="activeComp = item.key"
+              style="height: 42px;line-height: 38px;"
             >
-             <el-badge :value="toDoReminder[item.reminder]||0" class="item">
+              <el-badge :value="toDoReminder[item.reminder] || 0" class="item">
                 {{ item.name }}
               </el-badge>
             </li>
@@ -177,23 +178,26 @@
           </div>
         </div>
         <div v-if="activeComp == 'outsourceSend'">
-          <outSourceSend  @getToDoReminder="getToDoReminder"></outSourceSend>
+          <outSourceSend @getToDoReminder="getToDoReminder"></outSourceSend>
         </div>
         <div v-if="activeComp == 'invoice'">
-          <invoice  @getToDoReminder="getToDoReminder"></invoice>
+          <invoice @getToDoReminder="getToDoReminder"></invoice>
         </div>
         <div v-if="activeComp == 'invoiceConfirm'">
-          <invoiceConfirm  @getToDoReminder="getToDoReminder"></invoiceConfirm>
+          <invoiceConfirm @getToDoReminder="getToDoReminder"></invoiceConfirm>
         </div>
 
         <div v-if="activeComp == 'returnorder'" class="returnorder">
-          <return-goods  @getToDoReminder="getToDoReminder"></return-goods>
+          <return-goods @getToDoReminder="getToDoReminder"></return-goods>
         </div>
         <div v-if="activeComp == 'exceptionList'">
-          <exceptionList :relationType="2"  @getToDoReminder="getToDoReminder"> </exceptionList>
+          <exceptionList :relationType="2" @getToDoReminder="getToDoReminder">
+          </exceptionList>
         </div>
         <div v-if="activeComp == 'accountstatement'">
-          <accountstatement  @getToDoReminder="getToDoReminder"></accountstatement>
+          <accountstatement
+            @getToDoReminder="getToDoReminder"
+          ></accountstatement>
         </div>
       </div>
     </el-card>
@@ -314,13 +318,33 @@
       return {
         activeComp: 'saleorder',
         tabOptions: [
-          { key: 'saleorder', name: '采购订单' ,reminder: 'purchaseOrderNum'},
-          { key: 'outsourceSend', name: '委外发货单' ,reminder: 'outsourcingDeliveryNoteNum'},
-          { key: 'invoice', name: '收货单',reminder: 'receiptNum' },
-          { key: 'invoiceConfirm', name: '收货确认单',reminder: 'receiptConfirmationFormNum' },
-          { key: 'exceptionList', name: '异常列表',reminder: 'purchaseExceptionListNum' },
-          { key: 'returnorder', name: '退货单',reminder: 'purchaseReturnOrderNum' },
-          { key: 'accountstatement', name: '对账单' ,reminder: 'purchaseStatementAccountNum'}
+          { key: 'saleorder', name: '采购订单', reminder: 'purchaseOrderNum' },
+          {
+            key: 'outsourceSend',
+            name: '委外发货单',
+            reminder: 'outsourcingDeliveryNoteNum'
+          },
+          { key: 'invoice', name: '收货单', reminder: 'receiptNum' },
+          {
+            key: 'invoiceConfirm',
+            name: '收货确认单',
+            reminder: 'receiptConfirmationFormNum'
+          },
+          {
+            key: 'exceptionList',
+            name: '异常列表',
+            reminder: 'purchaseExceptionListNum'
+          },
+          {
+            key: 'returnorder',
+            name: '退货单',
+            reminder: 'purchaseReturnOrderNum'
+          },
+          {
+            key: 'accountstatement',
+            name: '对账单',
+            reminder: 'purchaseStatementAccountNum'
+          }
         ],
 
         selection: [], //单选中集合
@@ -728,4 +752,7 @@
   .el-icon-arrow-down {
     font-size: 12px;
   }
+  :deep(.el-badge__content.is-fixed) {
+    top: 4px;
+  }
 </style>

+ 2 - 2
src/views/purchasingManage/purchaseOrder/outSourceSend/components/inventoryTable.vue

@@ -276,7 +276,7 @@
   import tabMixins from '@/mixins/tableColumnsMixin';
   import { getFile } from '@/api/system/file';
   // import fileMain from '@/components/addDoc/index.vue';
-  import { getCode } from '@/components/addDoc/api/index.js';
+  // import { getCode } from '@/components/addDoc/api/index.js';
   import { lbjtList } from '@/enum/dict.js';
   import { levelList } from '@/enum/dict.js';
   import { changeCount } from '@/BIZComponents/setProduct.js';
@@ -936,7 +936,7 @@
               item.packageDispositionList[0].conversionUnit
             );
           }
-          this.$set(parasm, 'batchNo', await getCode('1900101420390125570'));
+          // this.$set(parasm, 'batchNo', await getCode('1900101420390125570'));
           if (item.purchaseOrigins?.length > 0) {
             item.purchaseOrigins = item.purchaseOrigins.map((val) => val + '');
           }

+ 60 - 45
src/views/purchasingManage/purchasePlanManage/components/inventoryTable.vue

@@ -64,8 +64,15 @@
             v-model="row.productName"
             placeholder="请输入"
             style="width: 60%; margin-right: 10px"
-            :disabled="!!row.productCode"
+            v-if="!row.productCode"
           ></el-input>
+          <div
+            v-else
+            style="width: 60%; margin-right: 10px"
+            class="ellipsis-single"
+            :title="row.productName"
+            >{{ row.productName }}</div
+          >
           <el-button
             size="small"
             type="primary"
@@ -79,22 +86,15 @@
           <el-input v-model="scope.row.batchNo" v-no-chinese></el-input>
         </el-form-item>
       </template>
-      <template v-slot:productCode="scope">
-        <el-form-item
-          style="margin-bottom: 20px"
-          :prop="'datasource.' + scope.$index + '.productCode'"
-        >
-          <el-input v-model="scope.row.productCode" disabled></el-input>
-        </el-form-item>
-      </template>
-      <template v-slot:productCategoryName="scope">
+
+      <!-- <template v-slot:productCategoryName="scope">
         <el-form-item
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.productCategoryName'"
         >
           <el-input v-model="scope.row.productCategoryName" disabled></el-input>
         </el-form-item>
-      </template>
+      </template> -->
       <template v-slot:totalCount="scope">
         <el-form-item
           style="margin-bottom: 20px"
@@ -118,12 +118,11 @@
         <el-form-item
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.productBrand'"
+          v-if="!scope.row.productCode"
         >
-          <el-input
-            v-model="scope.row.productBrand"
-            :disabled="!!scope.row.productCode"
-          ></el-input>
+          <el-input v-model="scope.row.productBrand"></el-input>
         </el-form-item>
+        <div v-else>{{ scope.row.productBrand }}</div>
       </template>
       <template v-slot:brand="scope">
         <el-form-item
@@ -138,36 +137,35 @@
         <el-form-item
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.modelType'"
+          v-if="!scope.row.productCode"
         >
-          <el-input
-            v-model="scope.row.modelType"
-            :disabled="!!scope.row.productCode"
-          ></el-input>
+          <el-input v-model="scope.row.modelType"></el-input>
         </el-form-item>
+        <div v-else>{{ scope.row.modelType }}</div>
       </template>
 
       <template v-slot:specification="scope">
         <el-form-item
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.specification'"
+          v-if="!scope.row.productCode"
         >
-          <el-input
-            v-model="scope.row.specification"
-            :disabled="!!scope.row.productCode"
-          ></el-input>
+          <el-input v-model="scope.row.specification"></el-input>
         </el-form-item>
+        <div v-else>{{ scope.row.specification }}</div>
       </template>
       <template v-slot:measuringUnit="scope">
         <el-form-item
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.measuringUnit'"
+          v-if="!scope.row.productCode"
         >
           <el-input
             v-model="scope.row.measuringUnit"
             placeholder="请输入"
-            :disabled="!!scope.row.productCode"
           ></el-input>
         </el-form-item>
+        <div v-else>{{ scope.row.measuringUnit }}</div>
       </template>
       <template v-slot:remark="scope">
         <el-form-item
@@ -310,23 +308,7 @@
           </el-select>
         </el-form-item>
       </template>
-      <template v-slot:singleWeight="scope">
-        <el-form-item
-          style="margin-bottom: 20px"
-          :rules="{
-            required: false,
-            trigger: 'change'
-          }"
-          :prop="'datasource.' + scope.$index + '.singleWeight'"
-        >
-          <el-input
-            :disabled="isContractId"
-            v-model="scope.row.singleWeight"
-            @input="changeCount(scope.row, scope.$index)"
-            placeholder="请输入"
-          ></el-input>
-        </el-form-item>
-      </template>
+
       <template v-slot:supplierName="scope">
         <el-form-item
           style="margin-bottom: 20px"
@@ -355,6 +337,7 @@
             clearable
             v-model="scope.row.provenance"
             multiple
+            :isOne="scope.$index==0"
           >
           </DictSelection>
         </el-form-item>
@@ -598,14 +581,16 @@
             width: 150,
             prop: 'productCategoryName',
             label: '分类',
-            slot: 'productCategoryName',
+            showOverflowTooltip: true,
+
             align: 'center'
           },
           {
             width: 140,
             prop: 'productCode',
             label: '编码',
-            slot: 'productCode',
+            showOverflowTooltip: true,
+
             align: 'center'
           },
           {
@@ -614,6 +599,8 @@
             label: '名称',
             slot: 'productName',
             headerSlot: 'headerProductName',
+            showOverflowTooltip: true,
+
             align: 'center'
           },
           {
@@ -621,12 +608,14 @@
             prop: 'taskName',
             label: '工序',
             slot: 'taskName',
+            showOverflowTooltip: true,
             align: 'center'
           },
           {
             width: 110,
             prop: 'batchNo',
             label: '批次号',
+            showOverflowTooltip: true,
             slot: 'batchNo',
             align: 'center'
           },
@@ -642,11 +631,13 @@
             width: 150,
             prop: 'reqTotalCount',
             label: '需求数量',
+            showOverflowTooltip: true,
             align: 'center'
           },
           {
             width: 150,
             prop: 'purchaseCount',
+            showOverflowTooltip: true,
             label: '数量',
             slot: 'purchaseCount',
             headerSlot: 'headerTotalCount',
@@ -655,6 +646,7 @@
           {
             width: 150,
             prop: 'purchaseUnit',
+            showOverflowTooltip: true,
             label: '单位',
             slot: 'purchaseUnit',
             align: 'center'
@@ -670,13 +662,14 @@
             width: 90,
             prop: 'totalCount',
             label: '计量数量',
-            // slot: 'totalCount',
-            // headerSlot: 'headerTotalCount',
+            showOverflowTooltip: true,
+
             align: 'center'
           },
           {
             width: 100,
             prop: 'measuringUnit',
+            showOverflowTooltip: true,
             label: '计量单位',
             slot: 'measuringUnit',
             align: 'center'
@@ -685,6 +678,7 @@
           {
             minWidth: 120,
             prop: 'goodsLevel',
+            showOverflowTooltip: true,
             label: '物品级别',
             slot: 'goodsLevel',
             align: 'center'
@@ -693,6 +687,7 @@
             width: 200,
             prop: 'warehouseId',
             label: '入库仓库',
+            showOverflowTooltip: true,
             slot: 'warehouseId',
             headerSlot: 'headerWarehouseId',
             align: 'center'
@@ -700,6 +695,7 @@
           {
             width: 80,
             prop: 'availableCountBase',
+            showOverflowTooltip: true,
             label: '库存数量',
             slot: 'availableCountBase',
             align: 'center'
@@ -714,6 +710,7 @@
           {
             width: 120,
             prop: 'totalWeight',
+            showOverflowTooltip: true,
             label: '重量',
             slot: 'totalWeight',
             align: 'center'
@@ -722,6 +719,7 @@
             width: 160,
             prop: 'arrivalWay',
             label: '到货方式',
+            showOverflowTooltip: true,
             slot: 'arrivalWay',
             headerSlot: 'headerArrivalWay',
             align: 'center'
@@ -730,6 +728,7 @@
             width: 170,
             prop: 'expectReceiveDate',
             label: '到货日期',
+            showOverflowTooltip: true,
             slot: 'expectReceiveDate',
             headerSlot: 'headerExpectReceiveDate',
             align: 'center'
@@ -739,6 +738,7 @@
             width: 180,
             prop: 'supplierName',
             label: '供应商',
+            showOverflowTooltip: true,
             slot: 'supplierName',
             // headerSlot: 'headerSupplierName',
             align: 'center'
@@ -747,6 +747,7 @@
           {
             width: 130,
             prop: 'brand',
+            showOverflowTooltip: true,
             label: '品牌',
             slot: 'brand',
             align: 'center'
@@ -756,24 +757,28 @@
             width: 160,
             prop: 'technicalDrawings',
             label: '图纸附件',
+            showOverflowTooltip: true,
             slot: 'technicalDrawings'
           },
           {
             width: 160,
             prop: 'files',
             label: '附件',
+            showOverflowTooltip: true,
             slot: 'files'
           },
           {
             width: 150,
             prop: 'productBrand',
             label: '牌号',
+            showOverflowTooltip: true,
             slot: 'productBrand',
             align: 'center'
           },
           {
             width: 130,
             prop: 'modelType',
+            showOverflowTooltip: true,
             label: '型号',
             slot: 'modelType',
             align: 'center'
@@ -783,6 +788,7 @@
             width: 120,
             prop: 'specification',
             label: '规格',
+            showOverflowTooltip: true,
             slot: 'specification',
             align: 'center'
           },
@@ -790,11 +796,13 @@
             width: 160,
             prop: 'modelKey',
             label: '机型',
+            showOverflowTooltip: true,
             slot: 'modelKey',
             align: 'center'
           },
           {
             width: 160,
+            showOverflowTooltip: true,
             prop: 'colorKey',
             label: '颜色',
             slot: 'colorKey',
@@ -828,6 +836,7 @@
             width: 220,
             prop: 'remark',
             label: '备注',
+            showOverflowTooltip: true,
             slot: 'remark',
             align: 'center'
           },
@@ -1329,4 +1338,10 @@
   ::v-deep .time-form .el-table tr {
     background-color: #ffffff;
   }
+  .ellipsis-single {
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: inline-block;
+  }
 </style>

+ 4 - 1
src/views/saleManage/saleOrder/index.vue

@@ -5,7 +5,7 @@
         <div class="switch_left">
           <ul>
             <li
-           
+               style="height: 42px;line-height: 38px;"
               v-for="item in tabOptions"
               :key="item.key"
               :class="{ active: activeComp == item.key }"
@@ -1009,4 +1009,7 @@
   .el-icon-arrow-down {
     font-size: 12px;
   }
+  :deep(.el-badge__content.is-fixed){
+    top: 4px;
+  }
 </style>

+ 11 - 4
src/views/saleManage/saleOrder/invoice/components/addInvoiceDialog.vue

@@ -199,14 +199,12 @@
   import fileUpload from '@/components/upload/fileUpload';
   import dictMixins from '@/mixins/dictMixins';
   import parentList from '@/views/saleManage/contact/components/parentList.vue';
-  import {
-    getSaleOrderDetails
-  } from '@/api/saleManage/saleorder';
+  import { getSaleOrderDetails } from '@/api/saleManage/saleorder';
   import taskInfoTable from './taskInfoTable.vue';
   import {
     addSendInformation,
     UpdateSendInformation,
-    getSendSaleOrderrecordDetailSplit,
+    getSendSaleOrderrecordDetailSplit
   } from '@/api/saleManage/saleordersendrecord';
   import { getPSaleEntrustedReceiveDetailAPI } from '@/api/saleManage/entrustedReceive';
   import inventoryTable from './inventoryTable.vue';
@@ -223,6 +221,7 @@
   import { carBookPageListAPI } from '@/api/transportManager/carBook';
   import { projectsGetByIdAPI } from '@/api/pro';
   import { parameterGetByCode } from '@/api/main/index.js';
+  import { getWarehouseListByIds } from '@/api/purchasingManage/returnGoods';
 
   export default {
     mixins: [dictMixins],
@@ -769,6 +768,13 @@
         const data = await getSendSaleOrderrecordDetailSplit(
           this.businessId || res
         );
+        let storemanIds = '';
+        let ids = data.productList.map((item) => item.warehouseId);
+        if (ids?.length) {
+          let warehouseList = await getWarehouseListByIds(ids || []);
+          storemanIds = warehouseList.map((item) => item.ownerId);
+        }
+
         this.processSubmitDialogFlag = true;
 
         this.$nextTick(() => {
@@ -788,6 +794,7 @@
             variables: {
               businessCode: data.docNo,
               businessName: data.contactName,
+              storemanIds: storemanIds.toString(),
               businessType: '销售发货单'
             }
           };

+ 1 - 1
src/views/saleManage/saleOrder/invoice/components/inventoryTable.vue

@@ -32,6 +32,7 @@
             icon="el-icon-plus"
             class="ele-btn-icon"
             @click="handParent()"
+            v-if="isShowAdd && needProduce != 4"
           >
             新增
           </el-button>
@@ -74,7 +75,6 @@
         </el-form-item>
       </template>
 
-
       <template v-slot:batchNo="scope">
         <el-form-item :prop="'datasource.' + scope.$index + '.batchNo'">
           <el-input v-model="scope.row.batchNo" v-no-chinese></el-input>

+ 13 - 3
src/views/saleManage/saleOrder/invoice/index.vue

@@ -254,6 +254,8 @@
   import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
   import tabMixins from '@/mixins/tableColumnsMixin';
   import { enterprisePage } from '@/api/contractManage/contractBook';
+  import { getSendSaleOrderrecordDetailSplit } from '@/api/saleManage/saleordersendrecord';
+  import { getWarehouseListByIds } from '@/api/purchasingManage/returnGoods';
 
   export default {
     mixins: [dictMixins, tabMixins],
@@ -471,8 +473,7 @@
       /* 刷新表格 */
       reload(where) {
         this.$refs.table.reload({ page: 1, where });
-        this.$emit('getToDoReminder')
-
+        this.$emit('getToDoReminder');
       },
 
       //新增编辑
@@ -534,7 +535,15 @@
         const dataId = this.selection.map((v) => v.id);
         this.remove(dataId);
       },
-      sendSubmit(res) {
+      async sendSubmit(res) {
+        const data = await getSendSaleOrderrecordDetailSplit(res.id);
+        let storemanIds = '';
+        let ids = data.productList.map((item) => item.warehouseId);
+        if (ids?.length) {
+          let warehouseList = await getWarehouseListByIds(ids || []);
+          storemanIds = warehouseList.map((item) => item.ownerId);
+        }
+
         this.processSubmitDialogFlag = true;
         this.$nextTick(() => {
           let params = {
@@ -554,6 +563,7 @@
             variables: {
               businessCode: res.docNo,
               businessName: res.contactName,
+              storemanIds: storemanIds.toString(),
               businessType: '销售发货单'
             }
           };

+ 4 - 0
src/views/salesServiceManagement/index.vue

@@ -10,6 +10,7 @@
                 :key="item.key"
                 :class="{ active: activeComp == item.key }"
                 @click="hander(item.key)"
+                style="height: 42px; line-height: 38px"
               >
                 <el-badge
                   :value="toDoReminder[item.reminder] || 0"
@@ -146,4 +147,7 @@
       padding-top: 15px;
     }
   }
+  :deep(.el-badge__content.is-fixed) {
+    top: 4px;
+  }
 </style>