فهرست منبع

Merge remote-tracking branch 'origin/master'

Z 2 سال پیش
والد
کامیت
15ef8cbb3b
26فایلهای تغییر یافته به همراه328 افزوده شده و 153 حذف شده
  1. BIN
      dist.rar
  2. 11 3
      src/api/classifyManage/index.js
  3. 1 0
      src/views/bpm/handleTask/components/businessOpportunity/addOpportunityDialog.vue
  4. 17 14
      src/views/bpm/handleTask/components/businessOpportunity/opportunityDetailDialog.vue
  5. 33 6
      src/views/bpm/handleTask/components/businessOpportunity/submit.vue
  6. 1 0
      src/views/bpm/handleTask/components/contractBook/addDialog.vue
  7. 3 2
      src/views/bpm/handleTask/components/contractBook/detailDialog.vue
  8. 24 14
      src/views/bpm/handleTask/components/contractBook/inventoryTable.vue
  9. 6 4
      src/views/bpm/handleTask/components/contractBook/inventoryTabledetail.vue
  10. 1 0
      src/views/bpm/handleTask/components/contractBook/submit.vue
  11. 36 6
      src/views/bpm/handleTask/components/inoutBound/detailDialog.vue
  12. 51 54
      src/views/bpm/handleTask/components/materialPlan/detailDialog.vue
  13. 3 4
      src/views/bpm/handleTask/components/materialPlan/timeDialog.vue
  14. 2 2
      src/views/bpm/handleTask/components/purchaseOrder/detailDialog.vue
  15. 26 15
      src/views/bpm/handleTask/components/purchaseOrder/invoice/detailDialog.vue
  16. 4 4
      src/views/bpm/handleTask/components/purchaseOrder/returnGoods/addReturnGoodsDialog.vue
  17. 2 2
      src/views/bpm/handleTask/components/purchaseOrder/returnGoods/submit.vue
  18. 1 0
      src/views/bpm/handleTask/components/quotation/addDialog.vue
  19. 6 4
      src/views/bpm/handleTask/components/quotation/detailDialog.vue
  20. 2 2
      src/views/bpm/handleTask/components/saleOrder/detailDialog.vue
  21. 3 2
      src/views/bpm/handleTask/components/saleOrder/inventoryTable.vue
  22. 2 2
      src/views/bpm/handleTask/components/saleOrder/invoice/addInvoiceDialog.vue
  23. 2 2
      src/views/bpm/handleTask/components/saleOrder/invoice/detailDialog.vue
  24. 1 1
      src/views/bpm/handleTask/components/saleOrder/invoice/product-list.vue
  25. 1 1
      src/views/bpm/handleTask/components/saleOrder/returnGoods/detailDialog.vue
  26. 89 9
      src/views/bpm/stockManagement/add.vue

BIN
dist.rar


+ 11 - 3
src/api/classifyManage/index.js

@@ -91,7 +91,15 @@ export async function getOutInBySourceBizNo(id) {
 }
 // 质检
 export async function updateOutInRecord(data) {
-  const res = await request.post(`wms/outin/updateOutInRecord`,data);
+  const res = await request.post(`wms/outin/updateOutInRecord`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+// 质检wuliao
+export async function updateMaterialById(data) {
+  const res = await request.post(`wms/outin/updateMaterialById`, data);
   if (res.data.code == 0) {
     return res.data.data;
   }
@@ -99,7 +107,7 @@ export async function updateOutInRecord(data) {
 }
 // 质检员反馈
 export async function uploadQualityFile(data) {
-  const res = await request.post(`wms/outin/uploadQualityFile`,data);
+  const res = await request.post(`wms/outin/uploadQualityFile`, data);
   if (res.data.code == 0) {
     return res.data.data;
   }
@@ -107,7 +115,7 @@ export async function uploadQualityFile(data) {
 }
 // 根据code查询detail
 export async function getDetailByCode(data) {
-  const res = await request.post(`wms/outin/getDetailByCode`,data);
+  const res = await request.post(`wms/outin/getDetailByCode`, data);
   if (res.data.code == 0) {
     return res.data.data;
   }

+ 1 - 0
src/views/bpm/handleTask/components/businessOpportunity/addOpportunityDialog.vue

@@ -108,6 +108,7 @@
     </el-form>
     <headerTitle title="产品清单"></headerTitle>
     <inventoryTable
+      :isCustomerMark="false"
       ref="inventoryTable"
       :isDeliveryDeadline="false"
       :isGuaranteePeriod="false"

+ 17 - 14
src/views/bpm/handleTask/components/businessOpportunity/opportunityDetailDialog.vue

@@ -30,15 +30,15 @@
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item label="赢单率:" prop="winRate">
-            {{ detailData.winRate + '%' }}
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item label="预算:" prop="budget">
-            {{ detailData.budget + '万元' }}
-          </el-form-item>
-        </el-col>
+            <el-form-item label="赢单率:" prop="winRate">
+              {{detailData.winRate? detailData.winRate + '%' : '' }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="预算:" prop="budget">
+              {{ detailData.budget? detailData.budget + '万元':'' }}
+            </el-form-item>
+          </el-col>
         <el-col :span="8">
           <el-form-item label="预计结单日期:" prop="expectedClosingDate">
             {{ detailData.expectedClosingDate }}
@@ -76,18 +76,20 @@
 
     <inventoryTable
     pageName="businessOpportunity"
-      v-if="['productionSupervisorApprove1','technicianApprove','techLeaderApprove','productionSupervisorApprove2'].includes(taskDefinitionKey)"
+      v-if="['productionSupervisorApprove1','technicianApprove','techLeaderApprove','productionSupervisorApprove2','salesManagerApprove'].includes(taskDefinitionKey)"
       ref="inventoryTable"
       :taskDefinitionKey=taskDefinitionKey
       :isDeliveryDeadline="false"
       :isGuaranteePeriod="false"
+      :isCustomerMark="false"
     ></inventoryTable>
 
     <inventoryTabledetail
-     v-if="!['productionSupervisorApprove1','technicianApprove','techLeaderApprove','productionSupervisorApprove2'].includes(taskDefinitionKey)"
+     v-if="!['productionSupervisorApprove1','technicianApprove','techLeaderApprove','productionSupervisorApprove2','salesManagerApprove'].includes(taskDefinitionKey)"
       ref="inventoryTabledetailRef"
       :isDeliveryDeadline="false"
       :isGuaranteePeriod="false"
+      :isCustomerMark="false"
     ></inventoryTabledetail>
     <!-- <el-card
       shadow="never"
@@ -274,7 +276,7 @@
             label: '销售总金额',
             slot: 'totalPrice',
             formatter: (_row, _column, cellValue) => {
-              return _row.totalPrice + '元';
+              return _row.totalPrice? _row.totalPrice + '元':'';
             }
           },
           {
@@ -295,7 +297,7 @@
             label: '质保期',
             slot: 'guaranteePeriod',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           // {
@@ -328,7 +330,7 @@
             label: '技术图纸',
             slot: 'technicalDrawings',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           {
@@ -342,6 +344,7 @@
     },
     created() {
       this.getDetailData(this.businessId);
+      console.log(this.taskDefinitionKey,'11111111111111111');
     },
     methods: {
       downloadFile(file) {

+ 33 - 6
src/views/bpm/handleTask/components/businessOpportunity/submit.vue

@@ -181,6 +181,7 @@
               isProduceDeliveryDeadline = false;
             }
             return {
+              ...item,
               id: item.id,
               produceDeliveryDeadline: item.produceDeliveryDeadline,
               technicalAnswerId: this.form.technicianId,
@@ -203,10 +204,11 @@
           await updateProduct(arr);
         }
         //技术员修改
-        if (this.taskDefinitionKey === 'technicianApprove' && status === 1) {
+        if ((this.taskDefinitionKey === 'technicianApprove'||this.taskDefinitionKey === 'techLeaderApprove') && status === 1) {
           let data = await this.getTableValue();
           let arr = data.map((item) => {
             return {
+              ...item,
               id: item.id,
               technicalDrawings: item.technicalDrawings || [],
               industryArtFiles: item.industryArtFiles || [],
@@ -225,16 +227,41 @@
           }
           await updateProduct(arr);
         }
-        //销售员补充
-        if (this.taskDefinitionKey === 'salesmanApprove' && status === 1) {
+        //销售员补充和销售主管审批
+        if ((this.taskDefinitionKey === 'salesmanApprove'||this.taskDefinitionKey === 'salesManagerApprove') && status === 1) {
           let arr = await this.getTableValue();
-          if (!arr) {
+          let singlePrice = true;
+          let totalCount = true;
+          let arrList = arr?.productList.map((item) => {
+            if (!item.singlePrice) {
+              singlePrice = false;
+            }
+            if (!item.totalCount) {
+              totalCount = false;
+            }
+            return {
+              ...item,
+              id: item.id,
+              singlePrice:item.singlePrice,
+              totalCount:item.totalCount,
+              totalPrice:item.totalPrice
+            };
+          })||[];
+         if(this.taskDefinitionKey === 'salesmanApprove'){
+         if (!singlePrice) {
+            this.$message.warning(`请输入单价`);
             return;
           }
-          let data = await UpdateInformation(arr);
-          if (data.code != '0') {
+          if (!totalCount) {
+            this.$message.warning(`请输入数量`);
+            return;
+          }
+        }
+          if (!arrList.length) {
             return;
           }
+         
+          await updateProduct(arrList);
         }
         this._approveTaskWithVariables(status);
       },

+ 1 - 0
src/views/bpm/handleTask/components/contractBook/addDialog.vue

@@ -383,6 +383,7 @@
         :contractStartDate="this.form.contractStartDate"
         :isDiscountTotalPrice="true"
         :contractBookType="form.type"
+        :isCustomerMark="false"
       ></inventoryTable>
       <headerTitle
         :title="form.type == '2' ? '付款方式' : '收款方式'"

+ 3 - 2
src/views/bpm/handleTask/components/contractBook/detailDialog.vue

@@ -203,6 +203,7 @@
       ref="inventoryTabledetailRef"
       :isDiscountTotalPrice="true"
       :contractBookType="form.type"
+      :isCustomerMark="false"
     >
     </inventoryTabledetail>
 
@@ -377,7 +378,7 @@
             label: '质保期',
             slot: 'guaranteePeriod',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           // {
@@ -411,7 +412,7 @@
             label: '技术图纸',
             slot: 'technicalDrawings',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           {

+ 24 - 14
src/views/bpm/handleTask/components/contractBook/inventoryTable.vue

@@ -87,7 +87,7 @@
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.totalCount'"
           :rules="{
-            required: pageName == 'businessOpportunity' ? false : true,
+            required: (pageName == 'businessOpportunity'||taskDefinitionKey=='salesManagerApprove') ? false : true,
             pattern: numberReg,
             message: '请输入数字',
             trigger: 'blur'
@@ -96,7 +96,7 @@
           <el-input
             v-model="scope.row.totalCount"
             placeholder="请输入"
-            :disabled="!!taskDefinitionKey"
+            :disabled="!!taskDefinitionKey&&taskDefinitionKey!=='salesManagerApprove'"
             @input="getTotalPrice(scope.row)"
           ></el-input>
         </el-form-item>
@@ -182,10 +182,11 @@
           </div>
           <div class="borderrightnone">
             <DictSelection
-              dictName="保期单位"
+              dictName="保期单位"
               clearable
               :disabled="!!taskDefinitionKey"
               v-model="scope.row.guaranteePeriodUnitCode"
+              @itemChange="(data)=>chaengUnitCode(data,scope.row, scope.$index)"
               @change="
                 setDeliveryDays(scope.row, scope.$index, 'guaranteePeriod')
               "
@@ -224,7 +225,7 @@
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.singlePrice'"
           :rules="{
-            required: pageName == 'businessOpportunity' ? false : true,
+            required: (pageName == 'businessOpportunity'||taskDefinitionKey=='salesManagerApprove') ? false : true,
             pattern: numberReg,
             message: '请输入正确的单价',
             trigger: 'change'
@@ -234,7 +235,7 @@
             v-model="scope.row.singlePrice"
             placeholder="请输入"
             @input="getTotalPrice"
-            :disabled="!!taskDefinitionKey"
+            :disabled="!!taskDefinitionKey&&taskDefinitionKey!=='salesManagerApprove'"
           >
             <template slot="append">元</template>
           </el-input>
@@ -244,7 +245,7 @@
         v-slot:headerSinglePrice="{ column }"
         v-if="pageName != 'businessOpportunity' || isSinglePrice"
       >
-        <span class="is-required">{{ column.label }}</span>
+        <span :class="{'is-required':taskDefinitionKey!=='salesManagerApprove'}">{{ column.label }}</span>
       </template>
 
       <template v-slot:technicalAnswerName="{ row, $index }">
@@ -496,7 +497,7 @@
         type: Boolean
       },
       isCustomerMark: {
-        default: false,
+        default: true,
         type: Boolean
       },
       isSinglePrice: {
@@ -578,7 +579,7 @@
             prop: 'customerMark',
             label: '客户代号',
             slot: 'customerMark',
-            // show: this.isCustomerMark
+            show: this.isCustomerMark
           },
           {
             width: 160,
@@ -789,6 +790,9 @@
         this.$refs.table.reRenderTable();
       }
     },
+    created(){
+      console.log('222222222',this.taskDefinitionKey,(this.pageName == 'businessOpportunity'||this.taskDefinitionKey=='salesManagerApprove') ? false : true);
+    },
     methods: {
       openVersion(index) {
         this.$refs.versionRefs.open(index);
@@ -802,6 +806,9 @@
         );
         this.$set(this.form.datasource[index], 'technologyRouteId', data.id);
       },
+      chaengUnitCode(data,row, index){
+        console.log(data,row, index);
+      },
       setDeliveryDays(row, index, type, isAll) {
         if (isAll) {
           this.form.datasource.forEach((item, i) => {
@@ -839,6 +846,7 @@
           let guaranteePeriodUnitName = this.guaranteePeriodUnit(
             row.guaranteePeriodUnitCode
           );
+          console.log(guaranteePeriodUnitName,'===================');
           this.$set(
             this.form.datasource[index],
             'guaranteePeriodDeadline',
@@ -858,8 +866,6 @@
           : 'second';
       },
       setDay(addDay, dateType = 'day') {
-        console.log(addDay, 'addDay');
-        console.log(dateType, 'dateType');
         return dayjs(this.contractStartDate || new Date())
           .add(addDay, dateType)
           .format('YYYY-MM-DD');
@@ -875,7 +881,7 @@
               (v.totalCount * v.singlePrice)?.toFixed(2)) ||
             null;
           v.guaranteePeriodUnitName = this.getDictValue(
-            '保期单位',
+            '保期单位',
             v.guaranteePeriodUnitCode
           );
           v.technicalDrawings = v.technicalDrawings ? v.technicalDrawings : [];
@@ -884,6 +890,7 @@
 
           v.otherFiles = v.otherFiles || [];
         });
+        console.log(comitDatasource,'comitDatasourcecomitDatasourcecomitDatasource');
         return comitDatasource;
       },
       getPrice() {
@@ -927,7 +934,8 @@
           [];
         if (productList) {
           productList.forEach((item) => {
-            item.guaranteePeriodUnitCode = item.guaranteePeriodUnitCode + '';
+            item.guaranteePeriodUnitCode = item.guaranteePeriodUnitCode * 1;
+            //item.guaranteePeriodUnitCode
             // if (item.deliveryDays) {
             //   item['deliveryDeadline'] =
             //     item['deliveryDeadline'] || this.setDay(item.deliveryDays);
@@ -951,10 +959,12 @@
         }
       },
       //计算单重
-      singleWeightChange(row) {
+      singleWeightChange(row={}) {
         if (row && row.singleWeight && row.totalCount) {
-          row.totalWeight = row.singleWeight * row.totalCount || 0;
+         return row.totalWeight = (row.singleWeight * row.totalCount).toFixed(2);
         }
+        return row.totalWeight = 0
+
       },
       //选择产品
       handParent(row, index) {

+ 6 - 4
src/views/bpm/handleTask/components/contractBook/inventoryTabledetail.vue

@@ -91,7 +91,7 @@
         type: Boolean
       },
       isCustomerMark: {
-        default: false,
+        default: true,
         type: Boolean
       },
       isSinglePrice: {
@@ -157,7 +157,7 @@
             prop: 'customerMark',
             label: '客户代号',
             slot: 'customerMark',
-            // show: this.isCustomerMark
+            show: this.isCustomerMark
           },
           {
             width: 160,
@@ -241,7 +241,7 @@
             label: '质保期',
             slot: 'guaranteePeriod',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriodUnitCode||'') + _row.guaranteePeriodUnitName;
             }
           },
           {
@@ -313,7 +313,9 @@
       };
     },
     computed: {},
-
+    created(){
+      console.log('333333333');
+    },
     methods: {
       //修改回显
       putTableValue(data) {

+ 1 - 0
src/views/bpm/handleTask/components/contractBook/submit.vue

@@ -100,6 +100,7 @@
       };
     },
     created() {
+
       this.userOptions = [];
       listAllUserBind().then((data) => {
         this.userOptions.push(...data);

+ 36 - 6
src/views/bpm/handleTask/components/inoutBound/detailDialog.vue

@@ -49,7 +49,7 @@
               </el-col>
               <el-col :span="8">
                 <el-form-item label="状态:">
-                  <span>{{ getAuditStatus(infoData.verifyStatus) }}</span>
+                  <span>{{ stepsTitle }}</span>
                 </el-form-item>
               </el-col>
               <el-col :span="8">
@@ -493,7 +493,8 @@
             </el-table-column>
             <el-table-column width="100" label="重量" prop="weight">
               <template slot-scope="{ row }">
-                {{ row.weight }}
+                <el-input v-model="row.weight" v-if="!row.isMeta"></el-input>
+                <span v-else> {{ row.weight }}</span>
               </template>
             </el-table-column>
             <el-table-column label="重量单位" prop="weightUnit">
@@ -503,12 +504,17 @@
             </el-table-column>
             <el-table-column label="质检结果" prop="result" width="120">
               <template slot-scope="{ row }">
-                <span>
+                <DictSelection
+                  dictName="质检结果"
+                  clearable
+                  v-model="row.result"
+                />
+                <!-- <span v-else>
                   <span v-if="!row.result"></span>
                   <span v-if="row.result == 0">合格</span>
                   <span v-else-if="row.result == 1">不合格</span>
                   <span v-else>让步接收</span>
-                </span>
+                </span> -->
               </template>
             </el-table-column>
             <el-table-column label="质检状态" prop="status" width="120">
@@ -520,6 +526,16 @@
                 >
               </template>
             </el-table-column>
+            <el-table-column
+              label="操作"
+              width="80"
+              v-if="taskDefinitionKey == 'qualityInspection'"
+            >
+              <template slot-scope="{ row }">
+                <el-button type="text" @click="packMeta(row)"> 提交 </el-button>
+              </template>
+            </el-table-column>
+          </el-table>
           </el-table>
         </div>
       </div>
@@ -537,7 +553,8 @@
   import {
     getTreeByPid,
     getOutInBySourceBizNo,
-    updateOutInRecord
+    updateOutInRecord,
+    updateMaterialById
   } from '@/api/classifyManage';
 
   import {
@@ -655,6 +672,16 @@
       this._getInfo();
     },
     methods: {
+      //质检物料提交
+      async packMeta(data) {
+        if (!data.result) {
+          return this.$message.error('请选择质检结果!');
+        }
+        data.status = 1;
+        data.result=Number(data.result)
+        await updateMaterialById(data);
+        this._getInfo();
+      },
       //质检提交
       async packCout(data) {
         if (!data.result) {
@@ -733,7 +760,10 @@
               iArr.push({ ...ele });
             });
           });
-          this.metailList = iArr;
+          
+          this.metailList = iArr.map(item=>{return {...item,result:item.result==0?'0':item.result!=null?item.result.toString():''}})
+
+          console.log('==',this.metailList)
         }
         const { data } = await getTreeByPid(0);
         this.codeList = data.map((item) => {

+ 51 - 54
src/views/bpm/handleTask/components/materialPlan/detailDialog.vue

@@ -2,13 +2,7 @@
   <div>
 
     <headerTitle title="采购信息"></headerTitle>
-    <el-form
-      :model="formData"
-      ref="formRef"
-      label-width="120px"
-      class="ele-body"
-      :rules="rules"
-    >
+    <el-form :model="formData" ref="formRef" label-width="120px" class="ele-body" :rules="rules">
       <el-row :gutter="32">
         <el-col :span="12">
           <el-form-item label="配料计划名称" prop="name">
@@ -25,31 +19,16 @@
     </el-form>
 
     <el-form :model="formData" ref="tableForm">
-      <ele-pro-table
-        ref="table"
-        :needPage="false"
-        :columns="columns"
-        row-key="id"
-      >
+      <ele-pro-table ref="table" :needPage="false" :columns="columns" row-key="id">
         <!-- 展开内容 -->
         <template v-slot:expand="{ row }">
-          <div
-            style="
+          <div style="
               width: calc(100% - 95px);
               min-height: 60px;
               margin-left: 95px;
-            "
-            v-if="row.materialList.length > 0"
-          >
-            <ele-pro-table
-              :toolbar="false"
-              toolsTheme="none"
-              ref="table2"
-              :need-page="false"
-              :datasource="row.materialList"
-              :columns="columns2"
-              row-key="id"
-            >
+            " v-if="row.materialList.length > 0">
+            <ele-pro-table :toolbar="false" toolsTheme="none" ref="table2" :need-page="false"
+              :datasource="row.materialList" :columns="columns2" row-key="id">
               <template v-slot:sort="{ $index }">
                 {{ $index }}
               </template>
@@ -59,8 +38,8 @@
               </template>
 
               <template v-slot:requireDeliveryTime="{ row }">
-                <span v-if="row.deliveryMethod == 1">{{  row.requireDeliveryTime  }}</span>
-           
+                <span v-if="row.deliveryMethod == 1">{{ row.requireDeliveryTime }}</span>
+
 
                 <el-link type="primary" :underline="false" v-if="row.deliveryMethod == 2"
                   @click.native="handleMethod(row)">
@@ -68,23 +47,35 @@
                 </el-link>
               </template>
 
-            <!-- <template v-slot:imgUrl="{ row }">
-                {{ row }}
+
+              <template v-slot:imgUrl="{ row }">
+                <div v-if="row.imgUrl && row.imgUrl?.length">
+                  <el-link v-for="link in row.imgUrl" :key="link.id" type="primary" :underline="false"
+                    @click="downloadFile(link)">
+                    {{ link.name }}</el-link>
+                </div>
+              </template>
+
+              <template v-slot:files="{ row }">
+                <div v-if="row.files && row.files?.length">
+                  <el-link v-for="link in row.files" :key="link.id" type="primary" :underline="false"
+                    @click="downloadFile(link)">
+                    {{ link.name }}</el-link>
+                </div>
               </template>
-              -->
 
-           <!-- <template v-slot:files="{ row }" v-if='row.files != ""'>
-                {{ row.files }}
-              </template> -->
 
-        
+
+
+
+
             </ele-pro-table>
           </div>
         </template>
       </ele-pro-table>
     </el-form>
 
-    <timeDialog ref="timeDialogRef" ></timeDialog>
+    <timeDialog ref="timeDialogRef"></timeDialog>
   </div>
 </template>
   
@@ -128,7 +119,7 @@ export default {
         },
 
         {
-          prop: 'code',
+          prop: 'salesOrderCode',
           label: '销售订单号',
           showOverflowTooltip: true,
           align: 'center',
@@ -191,7 +182,7 @@ export default {
           align: 'center'
         },
 
-  
+
 
 
       ],
@@ -228,34 +219,35 @@ export default {
         },
 
         {
-          prop: 'packingCountBase',
-          label: '计量库存',
-          sortable: 'custom',
-          align: 'center'
+          prop: 'inventoryQuantity',
+          label: '库存',
+          showOverflowTooltip: true,
+
         },
 
         {
-          label: '计量单位',
           prop: 'unit',
-          align: 'center'
+          label: '计量单位',
+          showOverflowTooltip: true,
+          action: 'unit',
         },
 
         {
-          label: '需求数量', 
-          action: 'demandQuantity',
-          align: 'center'
+          label: '需求数量',
+          prop: 'demandQuantity',
+          align: 'center',
         },
 
         {
           label: '采购数量',
-          action: 'purchaseQuantity',
+          prop: 'purchaseQuantity',
           align: 'center'
         },
 
         {
           label: '到货方式',
           slot: 'deliveryMethod',
-          action: ' deliveryMethod',
+          action: 'deliveryMethod',
           align: 'center'
         },
 
@@ -266,7 +258,7 @@ export default {
           align: 'center'
         },
 
- 
+
 
         {
           label: '图纸',
@@ -279,12 +271,14 @@ export default {
         {
           label: '附件',
           slot: 'files',
-          action: 'files',
+          action: ' files',
           align: 'center',
+          minWidth: 140
         },
 
 
-   
+
+
       ],
 
       rules: {},
@@ -313,7 +307,10 @@ export default {
         this.$set(this.formData, 'remark', res.remark);
         this.formData['id'] = res.id;
         this.$refs.table.setData([...res.salesOrderList]);
-        this.$refs.table.toggleRowExpansionAll()
+        this.$nextTick(() => {
+          this.$refs.table.toggleRowExpansionAll()
+          this.$forceUpdate()
+        })
       }
     },
 

+ 3 - 4
src/views/bpm/handleTask/components/materialPlan/timeDialog.vue

@@ -12,8 +12,8 @@
                 <el-table-column label="数量" prop="purchaseQuantity">
                     <template slot-scope="{ row, $index }">
                         <el-form-item :prop="'timeList.' + $index + '.purchaseQuantity'"
-                            :rules="tableFormRules.purchaseQuantity">
-                            <el-input placeholder="请输入" clearable v-model="row.purchaseQuantity"></el-input>
+                            >
+                            <el-input placeholder="请输入" disabled v-model="row.purchaseQuantity"></el-input>
                         </el-form-item>
 
                     </template>
@@ -25,8 +25,7 @@
                     <template slot-scope="{ row, $index }">
                         <el-form-item :prop="'timeList.' + $index + '.requireDeliveryTime'"
                             :rules="tableFormRules.requireDeliveryTime">
-                            <el-date-picker clearable v-model="row.requireDeliveryTime" type="date"
-                                value-format="yyyy-MM-dd" placeholder="请选择日期">
+                            <el-date-picker disabled v-model="row.requireDeliveryTime"  value-format="timestamp"   placeholder="请选择日期">
                             </el-date-picker>
                         </el-form-item>
                     </template></el-table-column>

+ 2 - 2
src/views/bpm/handleTask/components/purchaseOrder/detailDialog.vue

@@ -413,7 +413,7 @@
             label: '质保期',
             slot: 'guaranteePeriod',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           {
@@ -440,7 +440,7 @@
             label: '技术图纸',
             slot: 'technicalDrawings',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           {

+ 26 - 15
src/views/bpm/handleTask/components/purchaseOrder/invoice/detailDialog.vue

@@ -167,6 +167,7 @@
   import { getReceiveSaleOrderrecordDetail } from '@/api/bpm/components/purchasingManage/purchaseorderreceive';
   import detailDialog from '@/views/bpm/handleTask/components/inoutBound/detailDialog.vue';
   import add from '@/views/bpm/stockManagement/add.vue';
+  import { getOutInBySourceBizNo } from '@/api/classifyManage';
 
   export default {
     props: {
@@ -334,21 +335,31 @@
     async created() {
       await this.getDetailData(this.businessId);
 
-      if (
-        !['starter', 'deptLeaderApprove', 'storeManagerApprove'].includes(
-          this.taskDefinitionKey
-        )
-      ) {
-        this.tabOptions.push({ key: 'inoutBoundView', name: '入库单详情' });
-        this.activeComp = 'inoutBoundView';
-      }
-      if (this.taskDefinitionKey == 'storeManagerApprove') {
-        this.tabOptions.push({ key: 'inoutBound', name: '入库单' });
-        this.activeComp = 'inoutBound';
-        this.$emit('activeCompChange', 'inoutBound');
-        this.$nextTick(() => {
-          this.$refs.add.pickerSuccess(this.form);
-        });
+      try {
+        const data = await getOutInBySourceBizNo(this.form.receiveNo);
+        console.log('aa==', data);
+        if (data != null) {
+          this.tabOptions.push({ key: 'inoutBoundView', name: '入库单详情' });
+          this.activeComp = 'inoutBoundView';
+          return;
+        }
+      } catch (error) {
+        if (
+          !['starter', 'deptLeaderApprove', 'storeManagerApprove'].includes(
+            this.taskDefinitionKey
+          )
+        ) {
+          this.tabOptions.push({ key: 'inoutBoundView', name: '入库单详情' });
+          this.activeComp = 'inoutBoundView';
+        }
+        if (this.taskDefinitionKey == 'storeManagerApprove') {
+          this.tabOptions.push({ key: 'inoutBound', name: '入库单' });
+          this.activeComp = 'inoutBound';
+          this.$emit('activeCompChange', 'inoutBound');
+          this.$nextTick(() => {
+            this.$refs.add.pickerSuccess(this.form);
+          });
+        }
       }
     },
 

+ 4 - 4
src/views/bpm/handleTask/components/purchaseOrder/returnGoods/addReturnGoodsDialog.vue

@@ -103,7 +103,7 @@
   import fileUpload from '@/components/upload/fileUpload';
   import dictMixins from '@/mixins/dictMixins';
   import { getReturnSaleOrderrecordDetail } from '@/api/bpm/components/purchasingManage/returnGoods';
-  import { getReceiveSaleOrderrecordDetail } from '@/api/bpm/components/purchasingManage/purchaseorderreceive';
+  // import { getReceiveSaleOrderrecordDetail } from '@/api/bpm/components/purchasingManage/purchaseorderreceive';
   import inventoryTable from './inventoryTable.vue';
   import sendListDialog from './sendListDialog.vue';
   import { copyObj } from '@/utils/util';
@@ -183,7 +183,7 @@
     },
     created() {
       this.$store.commit('returnGoods/clearUserData');
-      this.getReturnSaleOrderrecordDetail(this.businessId);
+      this.getReturnSaleOrderrecordDetail1(this.businessId);
     },
     methods: {
       //删除产品
@@ -198,7 +198,7 @@
 
       //选择订单回调
       changeOrder(obj) {
-        this.getSendSaleOrderDetail(obj.id);
+       // this.getSendSaleOrderDetail(obj.id);
       },
 
       //发货单详情
@@ -218,7 +218,7 @@
       },
 
       //获取退货单详情
-      async getReturnSaleOrderrecordDetail(id) {
+      async getReturnSaleOrderrecordDetail1(id) {
         this.loading = true;
         const data = await getReturnSaleOrderrecordDetail(id);
         this.loading = false;

+ 2 - 2
src/views/bpm/handleTask/components/purchaseOrder/returnGoods/submit.vue

@@ -44,7 +44,7 @@
         type="danger"
         size="mini"
         @click="handleAudit(0)"
-        v-if="!['purchase_return_approve'].includes(taskDefinitionKey)"
+        v-if="['storemanApprove'].includes(taskDefinitionKey)"
         >驳回
       </el-button>
 
@@ -121,7 +121,7 @@
     },
     async created() {
       if (this.taskDefinitionKey == 'storemanApprove') {
-        let data = await getReturnSaleOrderrecordDetail(this.businessId);
+        let data = await getReturnSaleOrderrecordDetail(this.businessId); 
         try {
           this.outInData = await getOutInBySourceBizNo(data.returnNo);
         } catch (error) {

+ 1 - 0
src/views/bpm/handleTask/components/quotation/addDialog.vue

@@ -174,6 +174,7 @@
       <headerTitle title="报价单产品清单"></headerTitle>
       <inventoryTable
         ref="inventoryTable"
+        :isCustomerMark="false"
         :isDeliveryDeadline="false"
         :isGuaranteePeriod="false"
       ></inventoryTable>

+ 6 - 4
src/views/bpm/handleTask/components/quotation/detailDialog.vue

@@ -140,11 +140,11 @@
         </el-col>
         <el-col :span="6">
           <el-form-item
-            label="付款方式"
-            prop="payWay"
+            label="结算方式"
+            prop="settlementMode"
             style="margin-bottom: 22px"
           >
-            {{ form.payWayName }}
+            {{ form.settlementModeName }}
           </el-form-item>
         </el-col>
         <el-col :span="6">
@@ -163,11 +163,13 @@
 
     <inventoryTable
       ref="inventoryTable"
+      :isCustomerMark="false"
       :isDeliveryDeadline="false"
       :isGuaranteePeriod="false"
       v-if="taskDefinitionKey === 'technicianApprove'"
     ></inventoryTable>
     <inventoryTabledetail
+    :isCustomerMark="false"
       v-if="taskDefinitionKey != 'technicianApprove'"
       ref="inventoryTabledetailRef"
     ></inventoryTabledetail>
@@ -292,7 +294,7 @@
             label: '质保期',
             slot: 'guaranteePeriod',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           // {

+ 2 - 2
src/views/bpm/handleTask/components/saleOrder/detailDialog.vue

@@ -436,7 +436,7 @@
             label: '质保期',
             slot: 'guaranteePeriod',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           // {
@@ -463,7 +463,7 @@
             label: '技术图纸',
             slot: 'technicalDrawings',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           {

+ 3 - 2
src/views/bpm/handleTask/components/saleOrder/inventoryTable.vue

@@ -465,7 +465,7 @@
             label: '质保期',
             slot: 'guaranteePeriod',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           {
@@ -504,7 +504,7 @@
             label: '技术图纸',
             slot: 'technicalDrawings',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           {
@@ -719,6 +719,7 @@
           let guaranteePeriodUnitName = this.guaranteePeriodUnit(
             row.guaranteePeriodUnitCode
           );
+          console.log(guaranteePeriodUnitName,'=======================');
           this.$set(
             this.form.datasource[index],
             'guaranteePeriodDeadline',

+ 2 - 2
src/views/bpm/handleTask/components/saleOrder/invoice/addInvoiceDialog.vue

@@ -327,7 +327,7 @@
             label: '质保期',
             slot: 'guaranteePeriod',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           // {
@@ -354,7 +354,7 @@
             label: '技术图纸',
             slot: 'technicalDrawings',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           {

+ 2 - 2
src/views/bpm/handleTask/components/saleOrder/invoice/detailDialog.vue

@@ -323,7 +323,7 @@
             label: '质保期',
             slot: 'guaranteePeriod',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           // {
@@ -350,7 +350,7 @@
             label: '技术图纸',
             slot: 'technicalDrawings',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           {

+ 1 - 1
src/views/bpm/handleTask/components/saleOrder/invoice/product-list.vue

@@ -38,7 +38,7 @@
 <script>
   import { getpurchaseorderDetail } from '@/api/bpm/components/purchasingManage/purchaseOrder';
   import { getSendSaleOrderrecordDetail,getSaleOrderDetail } from '@/api/bpm/components/saleManage/saleorder';
-  // import { getReceiveSaleOrderrecordDetail } from '@/api/purchasingManage/purchaseorderreceive';
+   import { getReceiveSaleOrderrecordDetail } from '@/api/bpm/components/purchasingManage/purchaseorderreceive';
 
   export default {
     props: {

+ 1 - 1
src/views/bpm/handleTask/components/saleOrder/returnGoods/detailDialog.vue

@@ -332,7 +332,7 @@
             label: '技术图纸',
             slot: 'technicalDrawings',
             formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+              return (_row.guaranteePeriod||'') + _row.guaranteePeriodUnitName;
             }
           },
           {

+ 89 - 9
src/views/bpm/stockManagement/add.vue

@@ -924,7 +924,14 @@
                   dictName="质检结果"
                   clearable
                   v-model="row.result"
+                  v-if="!row.isPack"
                 />
+                <span v-else>
+                  <span v-if="!row.result"></span>
+                  <span v-if="row.result == 0">合格</span>
+                  <span v-else-if="row.result == 1">不合格</span>
+                  <span v-else>让步接收</span>
+                </span>
               </template>
             </el-table-column>
             <el-table-column label="质检状态" prop="status" width="120">
@@ -933,7 +940,13 @@
                   dictName="质检状态"
                   clearable
                   v-model="row.status"
+                  v-if="!row.isPack"
                 />
+                <span v-else
+                  ><span v-if="!row.status"></span>
+                  <span v-if="row.status == 0">未检</span>
+                  <span v-else>已检</span></span
+                >
               </template>
             </el-table-column>
 
@@ -1041,7 +1054,11 @@
               prop="meterielCode"
             >
               <template slot-scope="{ row }">
-                <el-input v-model="row.materielCode"></el-input>
+                <el-input
+                  v-model="row.materielCode"
+                  v-if="!row.isMeta"
+                ></el-input>
+                <span v-else>{{ row.materialCode }}</span>
               </template>
             </el-table-column>
             <el-table-column
@@ -1050,7 +1067,11 @@
               prop="clientCode"
             >
               <template slot-scope="{ row }">
-                <el-input v-model="row.clientCode"></el-input>
+                <el-input
+                  v-model="row.clientCode"
+                  v-if="!row.isMeta"
+                ></el-input>
+                <span v-else> {{ row.clientCode }}</span>
               </template>
             </el-table-column>
             <el-table-column
@@ -1059,7 +1080,8 @@
               prop="engrave"
             >
               <template slot-scope="{ row }">
-                <el-input v-model="row.engrave"></el-input>
+                <el-input v-model="row.engrave" v-if="!row.isMeta"></el-input>
+                <span v-else> {{ row.engrave }}</span>
               </template>
             </el-table-column>
             <el-table-column
@@ -1069,7 +1091,8 @@
               prop="weight"
             >
               <template slot-scope="{ row }">
-                <el-input v-model="row.weight"></el-input>
+                <el-input v-model="row.weight" v-if="!row.isMeta"></el-input>
+                <span v-else>{{ row.weight }}</span>
               </template>
             </el-table-column>
             <el-table-column
@@ -1087,7 +1110,13 @@
                   dictName="质检结果"
                   clearable
                   v-model="row.result"
+                  v-if="!row.isMeta"
                 />
+                <span v-else
+                  ><span v-if="!row.status"></span>
+                  <span v-if="row.status == 0">未检</span>
+                  <span v-else>已检</span></span
+                >
               </template>
             </el-table-column>
             <el-table-column label="质检状态" prop="status" width="120">
@@ -1096,7 +1125,20 @@
                   dictName="质检状态"
                   clearable
                   v-model="row.status"
+                  v-if="!row.isMeta"
                 />
+                <span v-else
+                  ><span v-if="!row.status"></span>
+                  <span v-if="row.status == 0">未检</span>
+                  <span v-else>已检</span></span
+                >
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" width="80">
+              <template slot-scope="{ row }">
+                <el-button type="text" @click="packMeta(row)">
+                  {{ !row.isMeta ? '保存' : '编辑' }}
+                </el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -1156,6 +1198,7 @@
 </template>
 
 <script>
+  import { getProductList } from '@/api/bpm/components/saleManage/contact';
   import { getLoginUser } from '@/api/login';
   import picker from './components/picker.vue';
   import outin from '@/api/warehouseManagement/outin';
@@ -1326,7 +1369,8 @@
                 weightUnit: item.weightUnit,
                 engrave: item.engrave,
                 result: item.result,
-                status: item.status
+                status: item.status,
+                isMeta: false
               });
             }
           });
@@ -1334,8 +1378,13 @@
         } else {
           this.resultArray = [];
         }
+        console.log('this.resultArray', this.resultArray);
       },
       //包装明细保存
+      packMeta(row) {
+        console.log(row);
+        row.isMeta = !row.isMeta;
+      },
       packCout(row) {
         //true保存==》反之
         if (!row.isPack) {
@@ -1414,11 +1463,41 @@
               ...item,
               assetName: item.productName,
               assetCode: item.productCode,
-              categoryId: item.productCategoryId
+              categoryId: item.productCategoryId,
+              minPackUnit: item.packingUnit
             };
           });
-          this.onSelectTableData(list);
+          this.onSelectTableData(await this.serachMainCode(list));
+        }
+      },
+      async serachMainCode(arr) {
+        let newArr = [];
+        // 使用 Promise.all 来等待所有异步操作完成
+        await Promise.all(
+          arr.map(async (item) => {
+            const data = await getProductList({
+              pageNum: 1,
+              size: 10,
+              categoryLevelId: item.categoryLevelPathIdParent,
+              code: item.assetCode
+            });
+            newArr.push(data.list); // 将结果存储到 newArr 中
+          })
+        );
+        let re = [];
+        for (const item of newArr) {
+          for (const it of item) {
+            re.push(it);
+          }
         }
+        return re.map((item) => {
+          return {
+            ...item,
+            minPackUnit: item.packingUnit,
+            assetCode: item.code,
+            assetName: item.name
+          };
+        });
       },
       onClear() {
         this.formData.extInfo.documentSource = '';
@@ -1943,12 +2022,12 @@
             this.formatWarehouseMaterialList();
 
             let arr = this.warehousingMaterialList.map((item) => {
-              console.log(item,'item')
+              console.log(item, 'item');
               return {
                 netWeight: item.netWeight,
                 num: item.num,
                 batchNo: item.batchNo,
-                code:item.productCode,
+                code: item.productCode,
                 categoryId:
                   this.formData.bizType == 2
                     ? item.categoryId
@@ -2052,6 +2131,7 @@
       },
       //添加明细
       async onSelectTableData(val) {
+        console.log('===ssa', val);
         const res = await getCode('lot_number_code');
 
         this.warehousingMaterialList.push(