Przeglądaj źródła

修改客户退货流程

huang_an 2 lat temu
rodzic
commit
866b87a34d

+ 2 - 2
src/utils/dict/warehouse.js

@@ -36,8 +36,8 @@ export const sceneState = [
   { code: 2, label: '采购入库' },
   { code: 3, label: '归还入库' },
   { code: 4, label: '领料退货入库' },
-  { code: 6, label: '销售退货入库' },
-  { code: 5, label: '其他入库' }
+  { code: 5, label: '其他入库' },
+  { code: 6, label: '销售退货入库' }
 ];
 export const outputSceneState = [
   { code: 1, label: '退供出库' },

+ 4 - 3
src/views/bpm/handleTask/components/outBound/detailDialog.vue

@@ -174,8 +174,9 @@
                   prop="totalMoney"
                 ></el-table-column>
                 <el-table-column
-                  label="领料部门"
+                  label="货位"
                   prop="position"
+                  width="200"
                 ></el-table-column>
               </el-table>
             </div>
@@ -276,7 +277,7 @@
                 {{ row.createTime }}
               </template>
             </el-table-column>
-            <el-table-column label="领料部门" prop="">
+            <el-table-column label="货位" prop="" width="200">
               <template slot-scope="{ row }">
                 {{ row.position }}
               </template>
@@ -348,7 +349,7 @@
   import { getUser } from '@/api/system/user';
   export default {
     components: { StatusStep },
-    props: ['businessId','type'],
+    props: ['businessId', 'type'],
     data() {
       return {
         metaList: [],

+ 11 - 2
src/views/bpm/handleTask/components/purchaseOrder/invoice/procurementWarehousing.vue

@@ -827,7 +827,7 @@
         <div class="mt20" v-if="isDetail">
           <header-title :title="`物料明细`"> </header-title>
           <el-button
-            v-if="resultArray.length != 0"
+            v-if="resultArray.length != 0 && !isConfig"
             type="success"
             plain
             style="margin-bottom: 20px; float: right; margin-right: 20px"
@@ -1304,11 +1304,20 @@
           let resultAllChecked = this.resultArray.every(
             (item) => item.status == 1
           );
+          if (metailAllChecked && resultAllChecked) {
+            // 物料批量保存
+            this.materialListSave();
+          }
           return metailAllChecked && resultAllChecked;
         } else {
-          return this.materialCodeReqListOrStorage.every(
+          let boolen = this.materialCodeReqListOrStorage.every(
             (item) => item.status == 1
           );
+          if (boolen) {
+            // 包装批量保存
+            this.wrapListSave();
+          }
+          return boolen;
         }
       },
       getSceneState: useDictLabel(sceneState),

+ 201 - 202
src/views/bpm/handleTask/components/saleOrder/customerReturnGoods/customerReturnOrderDialog.vue

@@ -31,217 +31,216 @@
 </template>
 
 <script>
-import {EventBus} from './eventBus.js';
-import {
-  getOutInByIdAPI,
-  saleReturnGetByIdAPI
-} from '@/api/bpm/components/saleManage/saleorder';
-import {deepClone} from '@/utils';
+  import { EventBus } from './eventBus.js';
+  import {
+    getOutInByIdAPI,
+    saleReturnGetByIdAPI
+  } from '@/api/bpm/components/saleManage/saleorder';
+  import { deepClone } from '@/utils';
 
-export default {
-  name: 'customerReturnOrderDialog',
-  props: {
-    taskDefinitionKey: {
-      type: String,
-      default: 'stater'
+  export default {
+    name: 'customerReturnOrderDialog',
+    props: {
+      taskDefinitionKey: {
+        type: String,
+        default: 'stater'
+      },
+      businessId: {
+        type: String,
+        default: ''
+      }
+    },
+    components: {
+      repairTabsPage: () => import('./repair-tabs-page'),
+      customerReturnOrder: () => import('./customerReturnOrder')
     },
-    businessId: {
-      type: String,
-      default: ''
-    }
-  },
-  components: {
-    repairTabsPage: () => import('./repair-tabs-page'),
-    customerReturnOrder: () => import('./customerReturnOrder')
-  },
 
-  data() {
-    //innerOuterBoth 1 只有内部  2 只有外部 9 都有
-    return {
-      dialogType: 'add',
-      pageName: '',
-      repairTabsOptions: [
-        {
-          name: 'outerStoremanOut',
-          isOutOrIn: 'outerStore',
-          label: '物品出库给外协'
-        },
-        {
-          name: 'outerStoremanIn',
-          isOutOrIn: 'outerStore',
-          label: '外协返修物品入库'
-        },
-        {
-          name: 'outerInQC',
-          isOutOrIn: 'outerStore',
-          label: '外协返修入库质检'
-        },
-        {
-          name: 'innerStoremanIn',
-          isOutOrIn: 'innerStore',
-          label: '内部生产物品入库'
-        },
-        {
-          name: 'innerInQC',
-          isOutOrIn: 'innerStore',
-          label: '内部生产入库质检'
-        }
-      ],
-      activeComp: '',
-      permissionType: '',
-      isShowReturnOrder: '',
-      warehousingMaterialList: [],
-      materialCodeReqList: [],
-      metaList: [],
-      form: {},
-      innerOuterBoth: '',
-      loading: false,
-      key: 1
-    };
-  },
-  computed: {
-    tabOptions() {
-      let list = [
-        {
-          key: 'stater',
-          permissionType: 'update',
-          isShowReturnOrder: false,
-          name: '发起人申请',
-          isShow: true
-        },
-        {
-          key: 'deptLeader',
-          permissionType: 'view',
-          isShowReturnOrder: false,
-          name: '销售主管审批',
-          isShow: true
-        },
-        {
-          key: 'storeman',
-          permissionType: 'update',
-          isShowReturnOrder: true,
-          name: '仓管入库',
-          isShow: true
-        },
-        {
-          key: 'QCLeader',
-          permissionType: 'view',
-          isShowReturnOrder: false,
-          name: '质量部主管指派',
-          isShow: true
-        },
-        {
-          key: 'QCApprove',
-          permissionType: 'update',
-          isShowReturnOrder: false,
-          name: '质检员审核',
-          isShow: true
-        },
-        {
-          key: 'techLeader',
-          permissionType: 'view',
-          isShowReturnOrder: false,
-          name: '技术部主管指派',
-          isShow: true
-        },
-        {
-          key: 'techApprove',
-          permissionType: 'update',
-          isShowReturnOrder: false,
-          name: '技术员审核',
-          isShow: true
-        },
-        {
-          key: 'produceLeader',
-          permissionType: 'view',
-          isShowReturnOrder: false,
-          name: '生产部主管指派',
-          isShow: true
-        },
-        {
-          key: 'produceApprove',
-          permissionType: 'update',
-          isShowReturnOrder: false,
-          name: '生产员审核',
-          isShow: true
-        },
-        {
-          key: 'outerStore',
-          permissionType: 'update',
-          isShowReturnOrder: false,
-          name: '外部处理',
-          isShow: [2, 9].includes(this.innerOuterBoth)
-        },
-        {
-          key: 'innerStore',
-          permissionType: 'update',
-          isShowReturnOrder: false,
-          name: '内部处理',
-          isShow: [1, 9].includes(this.innerOuterBoth)
-        },
-        {
-          key: 'QCApprove2',
-          permissionType: 'update',
-          isShowReturnOrder: false,
-          name: '质检员反馈',
-          isShow: true
-        }
-      ];
-      return list.filter((item) => item.isShow);
-    }
-  },
-  async created() {
-    //返修节点中有可能多流程
-    let find =
-      this.repairTabsOptions.find(
-        (item) => item.name == this.taskDefinitionKey
-      )?.isOutOrIn || '';
-    let optionKey = find || this.taskDefinitionKey;
-    this.activeComp = optionKey || 'stater';
-//获取当前流程标签信息
-    let currentTab = this.tabOptions.find(
-      (item) => item.key == this.activeComp
-    ) || {}
-    this.permissionType = currentTab?.permissionType;
-    this.isShowReturnOrder = currentTab?.isShowReturnOrder;
-    find && (await this.getReturnInfo(this.businessId));
-    this.pageName = ['outerStore', 'innerStore'].includes(this.activeComp)
-      ? 'repairTabsPage'
-      : 'customerReturnOrder';
-  },
-  mounted() {
-    setTimeout(() => {
-      this.getActiveCompValue();
-    }, 400);
-  },
-  methods: {
-    getTableValue() {
-      return this.$refs.componentRef.getTableValue();
+    data() {
+      //innerOuterBoth 1 只有内部  2 只有外部 9 都有
+      return {
+        dialogType: 'add',
+        pageName: '',
+        repairTabsOptions: [
+          {
+            name: 'outerStoremanOut',
+            isOutOrIn: 'outerStore',
+            label: '物品出库给外协'
+          },
+          {
+            name: 'outerStoremanIn',
+            isOutOrIn: 'outerStore',
+            label: '外协返修物品入库'
+          },
+          {
+            name: 'outerInQC',
+            isOutOrIn: 'outerStore',
+            label: '外协返修入库质检'
+          },
+          {
+            name: 'innerStoremanIn',
+            isOutOrIn: 'innerStore',
+            label: '内部生产物品入库'
+          },
+          {
+            name: 'innerInQC',
+            isOutOrIn: 'innerStore',
+            label: '内部生产入库质检'
+          }
+        ],
+        activeComp: '',
+        permissionType: '',
+        isShowReturnOrder: '',
+        warehousingMaterialList: [],
+        materialCodeReqList: [],
+        metaList: [],
+        form: {},
+        innerOuterBoth: '',
+        loading: false,
+        key: 1
+      };
+    },
+    computed: {
+      tabOptions() {
+        let list = [
+          {
+            key: 'stater',
+            permissionType: 'update',
+            isShowReturnOrder: false,
+            name: '发起人申请',
+            isShow: true
+          },
+          {
+            key: 'deptLeader',
+            permissionType: 'view',
+            isShowReturnOrder: false,
+            name: '销售主管审批',
+            isShow: true
+          },
+          {
+            key: 'storeman',
+            permissionType: 'update',
+            isShowReturnOrder: true,
+            name: '仓管入库',
+            isShow: true
+          },
+          {
+            key: 'QCLeader',
+            permissionType: 'view',
+            isShowReturnOrder: false,
+            name: '质量部主管指派',
+            isShow: true
+          },
+          {
+            key: 'QCApprove',
+            permissionType: 'update',
+            isShowReturnOrder: false,
+            name: '质检员审核',
+            isShow: true
+          },
+          {
+            key: 'techLeader',
+            permissionType: 'view',
+            isShowReturnOrder: false,
+            name: '技术部主管指派',
+            isShow: true
+          },
+          {
+            key: 'techApprove',
+            permissionType: 'update',
+            isShowReturnOrder: false,
+            name: '技术员审核',
+            isShow: true
+          },
+          {
+            key: 'produceLeader',
+            permissionType: 'view',
+            isShowReturnOrder: false,
+            name: '生产部主管指派',
+            isShow: true
+          },
+          {
+            key: 'produceApprove',
+            permissionType: 'update',
+            isShowReturnOrder: false,
+            name: '生产员审核',
+            isShow: true
+          },
+          {
+            key: 'outerStore',
+            permissionType: 'update',
+            isShowReturnOrder: false,
+            name: '外部处理',
+            isShow: true
+          },
+          {
+            key: 'innerStore',
+            permissionType: 'update',
+            isShowReturnOrder: false,
+            name: '内部处理',
+            isShow: true
+          },
+          {
+            key: 'QCApprove2',
+            permissionType: 'update',
+            isShowReturnOrder: false,
+            name: '质检员反馈',
+            isShow: true
+          }
+        ];
+        return list.filter((item) => item.isShow);
+      }
     },
-    handleCard(val) {
-      this.activeComp = val.key;
+    async created() {
+      //返修节点中有可能多流程
+      let find =
+        this.repairTabsOptions.find(
+          (item) => item.name == this.taskDefinitionKey
+        )?.isOutOrIn || '';
+      let optionKey = find || this.taskDefinitionKey;
+      this.activeComp = optionKey || 'stater';
+      //获取当前流程标签信息
+      let currentTab =
+        this.tabOptions.find((item) => item.key == this.activeComp) || {};
+      this.permissionType = currentTab?.permissionType;
+      this.isShowReturnOrder = currentTab?.isShowReturnOrder;
+      find && (await this.getReturnInfo(this.businessId));
       this.pageName = ['outerStore', 'innerStore'].includes(this.activeComp)
         ? 'repairTabsPage'
         : 'customerReturnOrder';
-      this.permissionType = val.permissionType;
-      this.isShowReturnOrder = val.isShowReturnOrder;
-      this.key++;
-      this.getActiveCompValue();
     },
-    getActiveCompValue() {
-      EventBus.$emit('getActiveCompValue', {
-        activeComp: this.activeComp,
-        permissionType: this.permissionType
-      });
+    mounted() {
+      setTimeout(() => {
+        this.getActiveCompValue();
+      }, 400);
     },
-    async getReturnInfo(businessId) {
-      this.form = await saleReturnGetByIdAPI(businessId);
-      this.innerOuterBoth = this.form.innerOuterBoth;
-      // this.$nextTick(() => {
-      //   this.$refs.table.reRenderTable();
-      // });
+    methods: {
+      getTableValue() {
+        return this.$refs.componentRef.getTableValue();
+      },
+      handleCard(val) {
+        this.activeComp = val.key;
+        this.pageName = ['outerStore', 'innerStore'].includes(this.activeComp)
+          ? 'repairTabsPage'
+          : 'customerReturnOrder';
+        this.permissionType = val.permissionType;
+        this.isShowReturnOrder = val.isShowReturnOrder;
+        this.key++;
+        this.getActiveCompValue();
+      },
+      getActiveCompValue() {
+        EventBus.$emit('getActiveCompValue', {
+          activeComp: this.activeComp,
+          permissionType: this.permissionType
+        });
+      },
+      async getReturnInfo(businessId) {
+        this.form = await saleReturnGetByIdAPI(businessId);
+        this.innerOuterBoth = this.form.innerOuterBoth;
+        // this.$nextTick(() => {
+        //   this.$refs.table.reRenderTable();
+        // });
+      }
     }
-  }
-};
+  };
 </script>
 <style scoped lang="scss"></style>

Plik diff jest za duży
+ 117 - 434
src/views/bpm/handleTask/components/saleOrder/customerReturnGoods/inboundDetails.vue


+ 189 - 209
src/views/bpm/handleTask/components/saleOrder/customerReturnGoods/interiorProductionStorage.vue

@@ -1,5 +1,6 @@
+<!-- 客户退货产品处理审批(内部生产物品入库) -->
 <template>
-  <div class="ele-body">
+  <div class="interiorProductionStorage">
     <el-card shadow="never">
       <header-title title="基本信息"></header-title>
       <el-form
@@ -10,110 +11,84 @@
       >
         <el-row :gutter="20">
           <el-col :span="8">
-            <el-form-item label="物品类型" prop="extInfo.assetType">
-              <span>产品</span>
-              <!-- <selectTree
-                ref="tree"
-                class="form-ipt"
-                size="medium"
-                style="width: 100%"
-                :value="formData.extInfo.assetType"
-                clearable
-                :options="codeList"
-                :props="{
-                  value: 'id',
-                  label: 'name',
-                  children: 'children'
-                }"
-                @getValue="codeListValue"
-                :isAll="false"
-              /> -->
+            <el-form-item label="物品类型" prop="formData.extInfo.assetType">
+              <span>{{ assetTypeMapping[formData.extInfo.assetType] }}</span>
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="入库类型" prop="bizType">
+            <el-form-item label="入库类型" prop="formData.bizType">
+              <!-- <span>{{ inboundTypeMapping[formData.bizType] }}</span> -->
               <span>生产入库</span>
-              <!-- <el-select
-                @change="onClear"
-                filterable
-                placeholder="请选择"
-                v-model="formData.bizType"
-                clearable
-                :disabled="
-                  !!(warehousingMaterialList && warehousingMaterialList.length)
-                "
-              >
-                <el-option
-                  v-for="item in sceneState"
-                  :key="item.code"
-                  :value="item.code + ''"
-                  :label="item.label"
-                ></el-option>
-              </el-select> -->
             </el-form-item></el-col
           >
           <el-col :span="8">
-            <el-form-item label="生产工单" prop="documentSource">
-              <span>{{ formData.extInfo.documentSource }}</span>
+            <el-form-item label="生产工单" prop="formData.sourceBizNo">
+              <el-input
+                v-if="!formData.isStorage"
+                placeholder="生产工单"
+                v-model="formData.sourceBizNo"
+                clearable
+              />
+              <span v-else>{{ formData.sourceBizNo }}</span>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="权属部门" prop="deptName">
               <el-input
+                v-if="!formData.isStorage"
                 placeholder="权属部门"
                 disabled
                 v-model="formData.extInfo.deptName"
                 clearable
               />
+              <span v-else>{{ formData.extInfo.deptName }}</span>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="入库登记人">
               <el-input
+                v-if="!formData.isStorage"
                 placeholder="登记人"
                 disabled
                 v-model="formData.extInfo.createUserName"
-                clearable /></el-form-item
-          ></el-col>
-          <el-col :span="8" v-if="formData.bizType == 2">
-            <el-form-item label="供应商" prop="supplierName">
-              <!-- <DictSelection
-                dictName="经销商列表"
                 clearable
-                v-model="formData.extInfo.supplierId"
-                @itemChange="ChangeSupplier"
-              /> -->
-              <el-input
-                placeholder="请输入"
-                clearable
-                v-model="formData.extInfo.supplierName"
               />
-            </el-form-item>
-          </el-col>
+              <span v-else>{{ formData.extInfo.createUserName }}</span>
+            </el-form-item></el-col
+          >
           <el-col :span="8">
             <el-form-item label="送货人" prop="fromUser">
               <el-input
+                v-if="!formData.isStorage"
                 placeholder="请输入"
                 v-model="formData.fromUser"
                 clearable
-              /> </el-form-item
-          ></el-col>
+              />
+              <span v-else>{{ formData.fromUser }}</span>
+            </el-form-item></el-col
+          >
           <el-col :span="8">
             <el-form-item label="送货人联系方式" prop="deliveryPhone">
               <el-input
+                v-if="!formData.isStorage"
                 placeholder="请输入"
                 v-model="formData.extInfo.deliveryPhone"
-                clearable /></el-form-item
-          ></el-col>
+                clearable
+              />
+              <span v-else>{{ formData.extInfo.deliveryPhone }}</span>
+            </el-form-item></el-col
+          >
           <el-col :span="24">
             <el-form-item label="备注" prop="remark">
               <el-input
+                v-if="!formData.isStorage"
                 v-model="formData.remark"
                 clearable
                 type="textarea"
                 placeholder="请详细说明"
                 :rows="4"
               ></el-input>
+              <span v-else>{{ formData.remark }}</span>
             </el-form-item>
           </el-col>
         </el-row>
@@ -121,7 +96,7 @@
 
       <div class="material">
         <header-title title="产品信息">
-          <el-button type="primary" @click="addStock" v-if="!isTask"
+          <el-button type="primary" @click="addStock" v-if="!formData.isStorage"
             >添加</el-button
           >
         </header-title>
@@ -133,7 +108,7 @@
             :show-message="false"
           >
             <el-button
-              v-if="warehousingMaterialList.length != 0"
+              v-if="warehousingMaterialList.length != 0 && !formData.isStorage"
               type="success"
               plain
               style="margin-bottom: 20px; float: right; margin-right: 20px"
@@ -233,7 +208,9 @@
                 </el-table-column>
                 <el-table-column label="" prop="minPackingCount">
                   <template slot-scope="{ row, $index }">
-                    {{ handleRowUnit(row) }} /{{ row.minPackUnit }}
+                    {{ handleRowUnit(row) }} /{{
+                      formData.isStorage ? row.packingUnit : row.minPackUnit
+                    }}
                   </template>
                 </el-table-column>
               </el-table-column>
@@ -244,8 +221,11 @@
                 align="center"
               >
                 <template slot-scope="{ row, $index }">
-                  <template v-if="row.isSave || formData.bizType == 5">
-                    {{ row.outInNum }} {{ row.minPackUnit }}
+                  <template v-if="row.isSave">
+                    <span v-if="formData.isStorage">{{
+                      row.packingCount
+                    }}</span>
+                    <span v-else>{{ row.outInNum }} {{ row.minPackUnit }}</span>
                   </template>
                   <el-form-item
                     v-else
@@ -265,7 +245,10 @@
               </el-table-column>
               <el-table-column label="计量数量" prop="counts">
                 <template slot-scope="{ row, $index }">
-                  {{ row.minPackingCount * row.outInNum }}
+                  <span v-if="formData.isStorage">{{
+                    row.packingCount * row.minPackingCount
+                  }}</span>
+                  <span v-else>{{ row.minPackingCount * row.outInNum }}</span>
                 </template>
               </el-table-column>
               <el-table-column
@@ -274,8 +257,6 @@
                 width="100"
                 align="center"
               >
-                <!-- v-if="formData.extInfo.assetType == 1" -->
-
                 <template slot-scope="{ row, $index }">
                   <template>
                     {{ row.measuringUnit }}
@@ -288,14 +269,10 @@
                 prop="contentImage"
                 :show-overflow-tooltip="true"
               >
-                <!-- v-if="formData.extInfo.assetType == 1" -->
                 <template slot-scope="{ row, $index }">
                   {{ row.weight }}
                   <template slot="append">
                     {{ handleRowUnit(row) }}
-                    <!-- {{
-                          { yuan: '元', wanyuan: '万元' }[row.univalenceUnit]
-                        }} -->
                   </template>
                 </template>
               </el-table-column>
@@ -318,6 +295,7 @@
               >
                 <template slot-scope="{ row, $index }">
                   <el-form-item
+                    v-if="!formData.isStorage"
                     :prop="`warehousingMaterialList.${$index}.univalence`"
                   >
                     <el-input
@@ -330,12 +308,10 @@
                     >
                       <template slot="append">
                         元/{{ handleRowUnit(row) }}
-                        <!-- {{
-                          { yuan: '元', wanyuan: '万元' }[row.univalenceUnit]
-                        }} -->
                       </template>
                     </el-input>
                   </el-form-item>
+                  <span v-else>{{ row.price > 0 ? row.price : 0 }}</span>
                 </template>
               </el-table-column>
               <el-table-column
@@ -364,6 +340,7 @@
               >
                 <template slot-scope="{ row, $index }">
                   <el-form-item
+                    v-if="!formData.isStorage"
                     :prop="`warehousingMaterialList.${$index}.houseList`"
                     :required="true"
                   >
@@ -390,6 +367,7 @@
                       </div>
                     </div>
                   </el-form-item>
+                  <span v-else>{{ row.position }}</span>
                 </template>
               </el-table-column>
               <el-table-column
@@ -406,6 +384,7 @@
               </el-table-column>
 
               <el-table-column
+                v-if="!formData.isStorage"
                 label="操作"
                 width="200"
                 fixed="right"
@@ -425,13 +404,6 @@
                     @click="listEdit(row, $index)"
                     >编辑</el-button
                   >
-                  <el-button
-                    type="text"
-                    v-if="formData.bizType == 5"
-                    v-show="!row.isSave"
-                    @click="chooseAssets(row, $index)"
-                    >选择资产编号</el-button
-                  >
                   <el-button
                     type="text"
                     @click="listDel(row, $index)"
@@ -446,9 +418,11 @@
         <div class="mt20">
           <header-title :title="`包装明细`">
             <div class="switch_right">
-              <span v-if="materialCodeReqList.length != 0">
+              <span
+                v-if="materialCodeReqList.length != 0 && !formData.isStorage"
+              >
                 分拆<el-switch
-                  v-model="isDetail"
+                  v-model="isSplit"
                   active-color="#13ce66"
                   inactive-color="#ff4949"
                   @change="handleIsDetail"
@@ -458,10 +432,10 @@
               </span>
 
               <el-button
+                v-if="!formData.isStorage"
                 style="margin-left: 20px"
                 type="text"
                 @click="dateSetting"
-                v-if="formData.bizType != 5"
                 >批量设置{{
                   curDateType === 'manufactureTime' ? '生产日期' : '采购日期'
                 }}</el-button
@@ -469,7 +443,7 @@
             </div>
           </header-title>
           <el-button
-            v-if="materialCodeReqList.length != 0"
+            v-if="materialCodeReqList.length != 0 && !formData.isStorage"
             type="success"
             plain
             style="margin-bottom: 20px; float: right; margin-right: 20px"
@@ -493,7 +467,7 @@
               type="selection"
               align="center"
               width="50"
-              v-if="formData.bizType != 5"
+              v-if="!formData.isStorage"
             >
             </el-table-column>
             <el-table-column label="序号" type="index" width="50">
@@ -538,11 +512,7 @@
               label="计量单位"
               prop="measuringUnit"
             ></el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="物料代号"
-              prop="materielCode"
-            >
+            <el-table-column label="物料代号" prop="materielCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-if="!row.isPack"
@@ -551,11 +521,7 @@
                 <span v-else>{{ row.materielCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="客户代号"
-              prop="clientCode"
-            >
+            <el-table-column label="客户代号" prop="clientCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-if="!row.isPack"
@@ -564,22 +530,13 @@
                 <span v-else> {{ row.clientCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 1"
-              label="刻码"
-              prop="engrave"
-            >
+            <el-table-column label="刻码" prop="engrave">
               <template slot-scope="{ row }">
                 <el-input v-if="!row.isPack" v-model="row.engrave"></el-input>
                 <span v-else>{{ row.engrave }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量"
-              prop="weight"
-              width="100"
-            >
+            <el-table-column label="重量" prop="weight" width="100">
               <template slot-scope="{ row }">
                 <el-input
                   v-if="!row.isPack"
@@ -589,11 +546,7 @@
                 <span v-else>{{ row.weight }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量单位"
-              prop="weightUtil"
-            >
+            <el-table-column label="重量单位" prop="weightUtil">
               <template slot-scope="{ row }">
                 {{ row.weightUtil }}
               </template>
@@ -617,14 +570,13 @@
               </template>
             </el-table-column>
 
-            <el-table-column
-              v-if="formData.bizType != 5"
-              label="生产日期"
-              prop=""
-              width="220"
-            >
+            <el-table-column label="生产日期" prop="" width="220">
               <template slot="header" slot-scope="scope">
-                <el-select filterable v-model="curDateType">
+                <el-select
+                  v-if="!formData.isStorage"
+                  filterable
+                  v-model="curDateType"
+                >
                   <el-option
                     value="manufactureTime"
                     label="生产日期"
@@ -636,11 +588,8 @@
                 </el-select>
               </template>
               <template slot-scope="{ row }">
-                <template v-if="formData.bizType == 5">
-                  {{ row[curDateType] }}
-                </template>
                 <el-date-picker
-                  v-else
+                  v-if="!formData.isStorage"
                   :disabled="row.ispack"
                   size="small"
                   v-model="row[curDateType]"
@@ -649,21 +598,17 @@
                   placeholder="选择日期"
                 >
                 </el-date-picker>
+                <template v-else>
+                  {{ row[curDateType] }}
+                </template>
               </template>
             </el-table-column>
-            <template v-else>
-              <el-table-column
-                label="生产日期"
-                prop="manufactureTime"
-                width="200"
-              ></el-table-column>
-              <el-table-column
-                label="采购日期"
-                prop="procurementTime"
-                width="200"
-              ></el-table-column>
-            </template>
-            <el-table-column label="操作" width="80" fixed="right">
+            <el-table-column
+              v-if="!formData.isStorage"
+              label="操作"
+              width="80"
+              fixed="right"
+            >
               <template slot-scope="{ row }">
                 <el-button type="text" @click="packCout(row)">
                   {{ !row.isPack ? '保存' : '编辑' }}
@@ -674,10 +619,10 @@
           <!-- </el-tab-pane>
         </el-tabs> -->
         </div>
-        <div class="mt20" v-if="isDetail">
+        <div class="mt20" v-if="resultArray.length > 0 && isSplit">
           <header-title :title="`物料明细`"> </header-title>
           <el-button
-            v-if="resultArray.length != 0"
+            v-if="resultArray.length > 0 && !formData.isStorage"
             type="success"
             plain
             style="margin-bottom: 20px; float: right; margin-right: 20px"
@@ -730,11 +675,7 @@
               label="计量单位"
               prop="measuringUnit"
             ></el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2"
-              label="物料代号"
-              prop="meterielCode"
-            >
+            <el-table-column label="物料代号" prop="meterielCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-model="row.materielCode"
@@ -743,11 +684,7 @@
                 <span v-else>{{ row.materialCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="客户代号"
-              prop="clientCode"
-            >
+            <el-table-column label="客户代号" prop="clientCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-model="row.clientCode"
@@ -756,33 +693,19 @@
                 <span v-else> {{ row.clientCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 1"
-              label="刻码"
-              prop="engrave"
-            >
+            <el-table-column label="刻码" prop="engrave">
               <template slot-scope="{ row }">
                 <el-input v-model="row.engrave" v-if="!row.isPack"></el-input>
                 <span v-else> {{ row.engrave }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              width="100"
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量"
-              prop="weight"
-            >
+            <el-table-column width="100" label="重量" prop="weight">
               <template slot-scope="{ row }">
                 <el-input v-model="row.weight" v-if="!row.isPack"></el-input>
                 <span v-else>{{ row.weight }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量单位"
-              prop="weightUnit"
-              width="100"
-            >
+            <el-table-column label="重量单位" prop="weightUnit" width="100">
             </el-table-column>
             <el-table-column label="质检结果" prop="result" width="120">
               <template slot-scope="{ row }">
@@ -801,7 +724,12 @@
                 <span>{{ qualityStatus[row.status] }}</span>
               </template>
             </el-table-column>
-            <el-table-column label="操作" width="80" fixed="right">
+            <el-table-column
+              v-if="!formData.isStorage"
+              label="操作"
+              width="80"
+              fixed="right"
+            >
               <template slot-scope="{ row }">
                 <el-button type="text" @click="materialBtn(row)">
                   {{ !row.isPack ? '保存' : '编辑' }}
@@ -811,16 +739,6 @@
           </el-table>
         </div>
       </div>
-      <!-- <div class="center mt20">
-        <el-button
-          type="primary"
-          v-if="!isTask"
-          @click="handleSave"
-          :loading="saveLoading"
-          >保存</el-button
-        >
-        <el-button @click="$router.go(-1)" v-if="!isTask">返回</el-button>
-      </div> -->
     </el-card>
 
     <selectType
@@ -841,7 +759,12 @@
       :tableHeader="tableHeader"
       :curDateType="curDateType"
     ></ReturnSelect>
-    <el-dialog :visible.sync="dateVisible" title="选择日期" width="400px">
+    <el-dialog
+      :append-to-body="true"
+      :visible.sync="dateVisible"
+      title="选择日期"
+      width="400px"
+    >
       <el-date-picker
         size="small"
         v-model="batchTime"
@@ -912,6 +835,10 @@
     },
     data() {
       return {
+        codeList: [], // 物品类型列表
+        sceneState, // 入库类型
+        inboundTypeMapping: {}, // 入库类型映射表
+        assetTypeMapping: {}, // 物品类型映射表
         showMaterialTable: true, // 缓存包装明细列表
         isSplit: false, // 是否拆分到物料明细
         qualityStatus: {
@@ -927,14 +854,11 @@
         isTask: false,
         isWeight: true,
         resultArray: [],
-        isDetail: false,
         contactList: [],
         pickerRow: {},
         fromUserList: [],
-        codeList: [],
         materialType,
         warehousingType,
-        sceneState,
         emergencyState,
         saveLoading: false,
         visibleDialog: false,
@@ -1041,28 +965,83 @@
         return tableHeader(this.selectEquiType);
       }
     },
-    created() {
-      let obj = localStorage.getItem('orgInfo')
-        ? JSON.parse(localStorage.getItem('orgInfo'))
-        : {};
-      this.formData.createUserName = obj.name;
-      this.formData.extInfo.deptName = obj.dept?.name;
-      this.formData.deptCode = obj.dept?.code;
-      this.initData();
-    },
     async mounted() {
-      let info = null;
-      let res = await saleReturnGetByIdAPI(this.businessId);
-      const data = await getOutInByIdAPI(res.returnInReceiptId);
-      info = deepClone(data);
-      console.log(info);
-      this.formData.bizType = +info.bizType;
-      this.formData.extInfo.assetType = +info.extInfo.assetType;
-      this.$forceUpdate();
-      this.title = '产品';
-      this.selectEquiType = +info.extInfo.assetType;
+      await this.initData();
+      // innerInReceiptId内部入库单id(有说明已入库)
+      let returnDetailsForm = await saleReturnGetByIdAPI(this.businessId);
+      console.log(returnDetailsForm);
+      // 已经入库(详情)
+      if (returnDetailsForm.innerInReceiptId) {
+        getOutInByIdAPI(returnDetailsForm.innerInReceiptId).then((data) => {
+          console.log('有订单来源');
+          this.formData = deepClone(data);
+          console.log(this.formData);
+          this.isSplit = true;
+          // 增加是否已经入库字段
+          this.formData.isStorage = true;
+          // 填充遍历数据
+          if (this.formData.outInDetailVOList?.length > 0) {
+            this.warehousingMaterialList = []; // 物品列表
+            this.resultArray = []; // 物料列表
+            this.formData.outInDetailVOList.forEach((goodsiItem) => {
+              goodsiItem.assetCode = goodsiItem.categoryCode;
+              goodsiItem.assetName = goodsiItem.name;
+              goodsiItem.isSave = true;
+              goodsiItem.warehouseLedgerDetails =
+                goodsiItem.outInDetailRecordVOList;
+              goodsiItem.houseList = [];
+              this.warehousingMaterialList.push(goodsiItem);
+              goodsiItem.outInDetailRecordVOList.forEach((wrapItem) => {
+                wrapItem.assetCode = wrapItem.categoryCode;
+                wrapItem.assetName = wrapItem.name;
+                wrapItem.isPack = true;
+                wrapItem.outInDetailRecordMaterialDetailVOList.forEach(
+                  (materialItem) => {
+                    materialItem.isPack = true;
+                    this.resultArray.push(materialItem);
+                  }
+                );
+              });
+            });
+          }
+        });
+      } else {
+        console.log('没有订单来源');
+        // 销售退货入库
+        this.formData.bizType = '6';
+        // 物品类型
+        this.formData.extInfo.assetType = returnDetailsForm.categoryLevelTopId;
+        // 增加添加物品判断条件
+        this.title = this.assetTypeMapping[this.formData.extInfo.assetType];
+        this.selectEquiType = returnDetailsForm.categoryLevelTopId;
+        // 添加单据来源
+        this.formData.sourceBizNo = returnDetailsForm.returnHandleNo;
+        // 增加是否已经入库字段
+        this.formData.isStorage = false;
+        // 将出库状态改成入库状态 2出库 1入库
+        this.formData.type = 1;
+      }
     },
     methods: {
+      // 获取物品类型列表
+      async getAssetTypeOptions() {
+        const { data } = await getTreeByGroup({ type: 1 });
+        this.codeList = data;
+        let obj = {};
+        data.forEach((item) => {
+          obj[item.id] = item.name;
+        });
+        console.log('obj-----------', obj);
+        this.assetTypeMapping = obj;
+      },
+      // 入库类型映射表
+      async getInboundTypeMapping() {
+        let obj = {};
+        this.sceneState.forEach((item) => {
+          obj[item.code] = item.label;
+        });
+        this.inboundTypeMapping = obj;
+      },
       // 包装维度最小包装单元改变——>总重量
       minPackingCountChange(row, value) {
         row.minPackingCount = value.replace(/^(0+)|[^\d]+/g, '');
@@ -1260,7 +1239,11 @@
             console.log(arr);
             // 首先判断是未填/合格不合格
             let boolen = arr.every((item) => {
-              return item.result === '' || item.result === undefined;
+              return (
+                item.result === '' ||
+                item.result === undefined ||
+                item.result === null
+              );
             });
             // 判断只要物料全部质检结果(未填)——>包装质检结果(未填) 状态(未检)
             if (boolen) {
@@ -1445,9 +1428,9 @@
       calcSumTotal(PackingCount, outInNum, univalence) {
         //最小包装单元,包装数量,单价
         const total = {
-          PackingCount: Number(PackingCount),
-          outInNum: Number(outInNum),
-          univalence: Number(univalence == undefined ? 0 : univalence)
+          PackingCount: Number(PackingCount > 0 ? PackingCount : 0),
+          outInNum: Number(outInNum > 0 ? outInNum : 0),
+          univalence: Number(univalence > 0 ? univalence : 0)
         };
         return total.PackingCount * total.outInNum * total.univalence;
       },
@@ -1558,7 +1541,7 @@
         row.warehouseLedgerDetails = [];
         // 清空物料明细防止数据错乱
         this.resultArray = [];
-        this.isDetail = false;
+        this.isSplit = false;
       },
       listSave(row, index) {
         const fileds = [
@@ -1703,7 +1686,7 @@
       listDel(row, index) {
         this.warehousingMaterialList.splice(index, 1);
         this.resultArray = [];
-        this.isDetail = false;
+        this.isSplit = false;
       },
       // 入库明细生成条码信息
       async createMaterialCode(row) {
@@ -2189,11 +2172,8 @@
         );
       },
       async initData() {
-        const { data } = await getTreeByGroup({ type: 1 });
-        this.codeList = data;
-        // .map((item) => {
-        //   return { dictCode: item.id, dictValue: item.name };
-        // });
+        await this.getAssetTypeOptions();
+        await this.getInboundTypeMapping();
         const res = await warehouseDefinition.tree();
         this.treeList = this.$util.toTreeData({
           data: res,

+ 38 - 84
src/views/bpm/handleTask/components/saleOrder/customerReturnGoods/interiorProductionStorageQuality.vue

@@ -11,11 +11,12 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="入库场景:">
-              <span>{{ getSceneState(formData.bizType) }}</span>
+              <!-- <span>{{ getSceneState(formData.bizType) }}</span> -->
+              <span>生产入库</span>
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="采购收货单:">
+            <el-form-item label="生产工单:">
               <span>{{ formData.sourceBizNo }}</span>
             </el-form-item>
           </el-col>
@@ -29,36 +30,6 @@
               <span>{{ formData.extInfo.createUserName }}</span>
             </el-form-item>
           </el-col>
-          <!-- <el-col :span="8">
-                <el-form-item label="创建时间:">
-                  <span>{{ infoData.createTime }}</span>
-                </el-form-item>
-          </el-col> 
-           <el-col :span="8">
-            <el-form-item label="入库时间:">
-              <span>{{ formData.createTime }}</span>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="状态:">
-              <span>{{ getAuditStatus(formData.verifyStatus) }}</span>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="审核人:">
-              <span>{{ formData.verifyName }}</span>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" v-if="formData.bizType == 2">
-            <el-form-item label="客户:">
-              <span>{{ formData.clientName }}</span>
-            </el-form-item>
-          </el-col> -->
-          <el-col :span="8" v-if="formData.bizType == 2">
-            <el-form-item label="供应商:">
-              <span>{{ formData.extInfo.supplierName }}</span>
-            </el-form-item>
-          </el-col>
           <el-col :span="8">
             <el-form-item label="送货人:">
               <el-input
@@ -824,7 +795,7 @@
         <div class="mt20" v-if="isDetail">
           <header-title :title="`物料明细`"> </header-title>
           <el-button
-            v-if="resultArray.length != 0"
+            v-if="resultArray.length > 0 && taskDefinitionKey === 'innerInQC'"
             type="success"
             plain
             style="margin-bottom: 20px; float: right; margin-right: 20px"
@@ -877,11 +848,7 @@
               label="计量单位"
               prop="measuringUnit"
             ></el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2"
-              label="物料代号"
-              prop="meterielCode"
-            >
+            <el-table-column label="物料代号" prop="meterielCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-model="row.materielCode"
@@ -890,11 +857,7 @@
                 <span v-else>{{ row.materialCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="客户代号"
-              prop="clientCode"
-            >
+            <el-table-column label="客户代号" prop="clientCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-model="row.clientCode"
@@ -903,33 +866,19 @@
                 <span v-else> {{ row.clientCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 1"
-              label="刻码"
-              prop="engrave"
-            >
+            <el-table-column label="刻码" prop="engrave">
               <template slot-scope="{ row }">
                 <el-input v-model="row.engrave" v-if="!row.isPack"></el-input>
                 <span v-else> {{ row.engrave }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              width="100"
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量"
-              prop="weight"
-            >
+            <el-table-column width="100" label="重量" prop="weight">
               <template slot-scope="{ row }">
                 <el-input v-model="row.weight" v-if="!row.isPack"></el-input>
                 <span v-else>{{ row.weight }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量单位"
-              prop="weightUnit"
-              width="100"
-            >
+            <el-table-column label="重量单位" prop="weightUnit" width="100">
             </el-table-column>
             <el-table-column label="质检结果" prop="result" width="120">
               <template slot-scope="{ row }">
@@ -975,15 +924,6 @@
           </el-table>
         </div>
       </div>
-      <div class="center mt20">
-        <el-button
-          type="primary"
-          v-if="!isTask && !isConfig"
-          @click="handleSave"
-          :loading="saveLoading"
-          >保存</el-button
-        >
-      </div>
     </el-card>
 
     <selectType
@@ -1211,12 +1151,13 @@
         return tableHeader(this.selectEquiType);
       }
     },
-    async created() {
+    async mounted() {
       // 获取入库产品类型列表
       this.getAssetTypeList();
       let res = await saleReturnGetByIdAPI(this.businessId);
-      getOutInByIdAPI(res.innerInReceiptId)
-        .then((data) => {
+      console.log(res);
+      if (res.innerInReceiptId) {
+        getOutInByIdAPI(res.innerInReceiptId).then((data) => {
           this.isStorage = true; // 已经入库
           this.isConfig = true;
           this.formData = deepClone(data);
@@ -1281,12 +1222,12 @@
               this.isDetail = true;
             }
           }
-        })
-        .catch(() => {
-          this.isStorage = false; // 未入库
-          // 根据收货单详情初始化入库单详情数据(未入库情况)
-          this.initData();
         });
+      } else {
+        this.isStorage = false; // 未入库
+        // 根据收货单详情初始化入库单详情数据(未入库情况)
+        this.initData();
+      }
     },
     methods: {
       //获取回执附件
@@ -1302,11 +1243,20 @@
           let resultAllChecked = this.resultArray.every(
             (item) => item.status == 1
           );
+          if (metailAllChecked && resultAllChecked) {
+            // 物料批量保存
+            this.materialListSave();
+          }
           return metailAllChecked && resultAllChecked;
         } else {
-          return this.materialCodeReqListOrStorage.every(
+          let boolen = this.materialCodeReqListOrStorage.every(
             (item) => item.status == 1
           );
+          if (boolen) {
+            // 包装批量保存
+            this.wrapListSave();
+          }
+          return boolen;
         }
       },
       getReturnStorage() {
@@ -1364,7 +1314,7 @@
       async initData() {
         const batchNo = await getCode('lot_number_code'); // 生成批次号编码
         // 根据编码获取物品类别信息详情
-        this.formData.sourceBizNo = this.infoData.receiveNo; // 来源单号
+        this.formData.sourceBizNo = this.infoData.returnHandleNo; // 来源单号
         this.formData.extInfo.assetType = this.infoData.categoryLevelTopId; // 入库物品类型
         this.formData.bizType = '2'; // 入库场景(销售入库)
         this.formData.type = '1'; // 出入库类型 2出库 1入库
@@ -1378,7 +1328,7 @@
         this.formData.bizStatus = 1; // ??未知参数
         this.formData.warehouseLedgerDetails = []; // ??未知参数
         this.formData.remark = ''; // 备注
-        // this.formData.extInfo.documentSource = this.infoData.receiveNo // 销售订单
+        // this.formData.extInfo.documentSource = this.infoData.returnHandleNo // 销售订单
         // this.formData.createTime = '' // 入库时间
         // this.formData.verifyStatus = '' // 状态
         // this.formData.verifyName = '' // 审核人
@@ -1728,7 +1678,11 @@
             console.log(arr);
             // 首先判断是未填/合格不合格
             let boolen = arr.every((item) => {
-              return item.result === '' || item.result === undefined;
+              return (
+                item.result === '' ||
+                item.result === undefined ||
+                item.result === null
+              );
             });
             // 判断只要物料全部质检结果(未填)——>包装质检结果(未填) 状态(未检)
             if (boolen) {
@@ -1937,9 +1891,9 @@
       calcSumTotal(PackingCount, outInNum, univalence) {
         //最小包装单元,包装数量,单价
         const total = {
-          PackingCount: Number(PackingCount),
-          outInNum: Number(outInNum),
-          univalence: Number(univalence == undefined ? 0 : univalence)
+          PackingCount: Number(PackingCount > 0 ? PackingCount : 0),
+          outInNum: Number(outInNum > 0 ? outInNum : 0),
+          univalence: Number(univalence > 0 ? univalence : 0)
         };
         return total.PackingCount * total.outInNum * total.univalence;
       },

+ 171 - 209
src/views/bpm/handleTask/components/saleOrder/customerReturnGoods/interiorStorageToOutsourcing.vue

@@ -1,3 +1,4 @@
+<!-- 客户退货产品处理审批(外协入库) -->
 <template>
   <div class="ele-body">
     <el-card shadow="never">
@@ -11,109 +12,72 @@
         <el-row :gutter="20">
           <el-col :span="8">
             <el-form-item label="物品类型" prop="extInfo.assetType">
-              <span>产品</span>
-              <!-- <selectTree
-                ref="tree"
-                class="form-ipt"
-                size="medium"
-                style="width: 100%"
-                :value="formData.extInfo.assetType"
-                clearable
-                :options="codeList"
-                :props="{
-                  value: 'id',
-                  label: 'name',
-                  children: 'children'
-                }"
-                @getValue="codeListValue"
-                :isAll="false"
-              /> -->
+              <span>{{ assetTypeMapping[formData.extInfo.assetType] }}</span>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="入库类型" prop="bizType">
-              <span>生产入库</span>
-              <!-- <el-select
-                @change="onClear"
-                filterable
-                placeholder="请选择"
-                v-model="formData.bizType"
-                clearable
-                :disabled="
-                  !!(warehousingMaterialList && warehousingMaterialList.length)
-                "
-              >
-                <el-option
-                  v-for="item in sceneState"
-                  :key="item.code"
-                  :value="item.code + ''"
-                  :label="item.label"
-                ></el-option>
-              </el-select> -->
+              <!-- <span>{{ inboundTypeMapping[formData.bizType] }}</span> -->
+              <span>外协入库</span>
             </el-form-item></el-col
           >
-          <el-col :span="8">
-            <el-form-item label="生产工单" prop="documentSource">
-              <span>{{ formData.extInfo.documentSource }}</span>
-            </el-form-item>
-          </el-col>
           <el-col :span="8">
             <el-form-item label="权属部门" prop="deptName">
               <el-input
+                v-if="!formData.isStorage"
                 placeholder="权属部门"
                 disabled
                 v-model="formData.extInfo.deptName"
                 clearable
               />
+              <span v-else>{{ formData.extInfo.deptName }}</span>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="入库登记人">
               <el-input
+                v-if="!formData.isStorage"
                 placeholder="登记人"
                 disabled
                 v-model="formData.extInfo.createUserName"
-                clearable /></el-form-item
-          ></el-col>
-          <el-col :span="8" v-if="formData.bizType == 2">
-            <el-form-item label="供应商" prop="supplierName">
-              <!-- <DictSelection
-                dictName="经销商列表"
                 clearable
-                v-model="formData.extInfo.supplierId"
-                @itemChange="ChangeSupplier"
-              /> -->
-              <el-input
-                placeholder="请输入"
-                clearable
-                v-model="formData.extInfo.supplierName"
               />
-            </el-form-item>
-          </el-col>
+              <span v-else>{{ formData.extInfo.createUserName }}</span>
+            </el-form-item></el-col
+          >
           <el-col :span="8">
             <el-form-item label="送货人" prop="fromUser">
               <el-input
+                v-if="!formData.isStorage"
                 placeholder="请输入"
                 v-model="formData.fromUser"
                 clearable
-              /> </el-form-item
-          ></el-col>
+              />
+              <span v-else>{{ formData.fromUser }}</span>
+            </el-form-item></el-col
+          >
           <el-col :span="8">
             <el-form-item label="送货人联系方式" prop="deliveryPhone">
               <el-input
+                v-if="!formData.isStorage"
                 placeholder="请输入"
                 v-model="formData.extInfo.deliveryPhone"
-                clearable /></el-form-item
-          ></el-col>
+                clearable
+              />
+              <span v-else>{{ formData.extInfo.deliveryPhone }}</span>
+            </el-form-item></el-col
+          >
           <el-col :span="24">
             <el-form-item label="备注" prop="remark">
               <el-input
+                v-if="!formData.isStorage"
                 v-model="formData.remark"
                 clearable
                 type="textarea"
                 placeholder="请详细说明"
                 :rows="4"
               ></el-input>
+              <span v-else>{{ formData.remark }}</span>
             </el-form-item>
           </el-col>
         </el-row>
@@ -121,7 +85,7 @@
 
       <div class="material">
         <header-title title="产品信息">
-          <el-button type="primary" @click="addStock" v-if="!isTask"
+          <el-button type="primary" @click="addStock" v-if="!formData.isStorage"
             >添加</el-button
           >
         </header-title>
@@ -133,7 +97,7 @@
             :show-message="false"
           >
             <el-button
-              v-if="warehousingMaterialList.length != 0"
+              v-if="warehousingMaterialList.length != 0 && !formData.isStorage"
               type="success"
               plain
               style="margin-bottom: 20px; float: right; margin-right: 20px"
@@ -201,7 +165,6 @@
                     :prop="`warehousingMaterialList.${$index}.batchNo`"
                     required
                   >
-                    <!-- <el-input v-model="row.batchNo"></el-input> -->
                     {{ row.batchNo }}
                   </el-form-item>
                 </template>
@@ -233,7 +196,9 @@
                 </el-table-column>
                 <el-table-column label="" prop="minPackingCount">
                   <template slot-scope="{ row, $index }">
-                    {{ handleRowUnit(row) }} /{{ row.minPackUnit }}
+                    {{ handleRowUnit(row) }} /{{
+                      formData.isStorage ? row.packingUnit : row.minPackUnit
+                    }}
                   </template>
                 </el-table-column>
               </el-table-column>
@@ -244,8 +209,11 @@
                 align="center"
               >
                 <template slot-scope="{ row, $index }">
-                  <template v-if="row.isSave || formData.bizType == 5">
-                    {{ row.outInNum }} {{ row.minPackUnit }}
+                  <template v-if="row.isSave">
+                    <span v-if="formData.isStorage">{{
+                      row.packingCount
+                    }}</span>
+                    <span v-else>{{ row.outInNum }} {{ row.minPackUnit }}</span>
                   </template>
                   <el-form-item
                     v-else
@@ -265,7 +233,10 @@
               </el-table-column>
               <el-table-column label="计量数量" prop="counts">
                 <template slot-scope="{ row, $index }">
-                  {{ row.minPackingCount * row.outInNum }}
+                  <span v-if="formData.isStorage">{{
+                    row.packingCount * row.minPackingCount
+                  }}</span>
+                  <span v-else>{{ row.minPackingCount * row.outInNum }}</span>
                 </template>
               </el-table-column>
               <el-table-column
@@ -274,8 +245,6 @@
                 width="100"
                 align="center"
               >
-                <!-- v-if="formData.extInfo.assetType == 1" -->
-
                 <template slot-scope="{ row, $index }">
                   <template>
                     {{ row.measuringUnit }}
@@ -288,14 +257,10 @@
                 prop="contentImage"
                 :show-overflow-tooltip="true"
               >
-                <!-- v-if="formData.extInfo.assetType == 1" -->
                 <template slot-scope="{ row, $index }">
                   {{ row.weight }}
                   <template slot="append">
                     {{ handleRowUnit(row) }}
-                    <!-- {{
-                          { yuan: '元', wanyuan: '万元' }[row.univalenceUnit]
-                        }} -->
                   </template>
                 </template>
               </el-table-column>
@@ -318,6 +283,7 @@
               >
                 <template slot-scope="{ row, $index }">
                   <el-form-item
+                    v-if="!formData.isStorage"
                     :prop="`warehousingMaterialList.${$index}.univalence`"
                   >
                     <el-input
@@ -330,12 +296,10 @@
                     >
                       <template slot="append">
                         元/{{ handleRowUnit(row) }}
-                        <!-- {{
-                          { yuan: '元', wanyuan: '万元' }[row.univalenceUnit]
-                        }} -->
                       </template>
                     </el-input>
                   </el-form-item>
+                  <span v-else>{{ row.price > 0 ? row.price : 0 }}</span>
                 </template>
               </el-table-column>
               <el-table-column
@@ -364,6 +328,7 @@
               >
                 <template slot-scope="{ row, $index }">
                   <el-form-item
+                    v-if="!formData.isStorage"
                     :prop="`warehousingMaterialList.${$index}.houseList`"
                     :required="true"
                   >
@@ -390,6 +355,7 @@
                       </div>
                     </div>
                   </el-form-item>
+                  <span v-else>{{ row.position }}</span>
                 </template>
               </el-table-column>
               <el-table-column
@@ -406,6 +372,7 @@
               </el-table-column>
 
               <el-table-column
+                v-if="!formData.isStorage"
                 label="操作"
                 width="200"
                 fixed="right"
@@ -425,13 +392,6 @@
                     @click="listEdit(row, $index)"
                     >编辑</el-button
                   >
-                  <el-button
-                    type="text"
-                    v-if="formData.bizType == 5"
-                    v-show="!row.isSave"
-                    @click="chooseAssets(row, $index)"
-                    >选择资产编号</el-button
-                  >
                   <el-button
                     type="text"
                     @click="listDel(row, $index)"
@@ -446,9 +406,11 @@
         <div class="mt20">
           <header-title :title="`包装明细`">
             <div class="switch_right">
-              <span v-if="materialCodeReqList.length != 0">
+              <span
+                v-if="materialCodeReqList.length != 0 && !formData.isStorage"
+              >
                 分拆<el-switch
-                  v-model="isDetail"
+                  v-model="isSplit"
                   active-color="#13ce66"
                   inactive-color="#ff4949"
                   @change="handleIsDetail"
@@ -461,7 +423,7 @@
                 style="margin-left: 20px"
                 type="text"
                 @click="dateSetting"
-                v-if="formData.bizType != 5"
+                v-if="!formData.isStorage"
                 >批量设置{{
                   curDateType === 'manufactureTime' ? '生产日期' : '采购日期'
                 }}</el-button
@@ -469,7 +431,7 @@
             </div>
           </header-title>
           <el-button
-            v-if="materialCodeReqList.length != 0"
+            v-if="materialCodeReqList.length != 0 && !formData.isStorage"
             type="success"
             plain
             style="margin-bottom: 20px; float: right; margin-right: 20px"
@@ -493,7 +455,7 @@
               type="selection"
               align="center"
               width="50"
-              v-if="formData.bizType != 5"
+              v-if="!formData.isStorage"
             >
             </el-table-column>
             <el-table-column label="序号" type="index" width="50">
@@ -538,11 +500,7 @@
               label="计量单位"
               prop="measuringUnit"
             ></el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="物料代号"
-              prop="materielCode"
-            >
+            <el-table-column label="物料代号" prop="materielCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-if="!row.isPack"
@@ -551,11 +509,7 @@
                 <span v-else>{{ row.materielCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="客户代号"
-              prop="clientCode"
-            >
+            <el-table-column label="客户代号" prop="clientCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-if="!row.isPack"
@@ -564,22 +518,13 @@
                 <span v-else> {{ row.clientCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 1"
-              label="刻码"
-              prop="engrave"
-            >
+            <el-table-column label="刻码" prop="engrave">
               <template slot-scope="{ row }">
                 <el-input v-if="!row.isPack" v-model="row.engrave"></el-input>
                 <span v-else>{{ row.engrave }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量"
-              prop="weight"
-              width="100"
-            >
+            <el-table-column label="重量" prop="weight" width="100">
               <template slot-scope="{ row }">
                 <el-input
                   v-if="!row.isPack"
@@ -589,11 +534,7 @@
                 <span v-else>{{ row.weight }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量单位"
-              prop="weightUtil"
-            >
+            <el-table-column label="重量单位" prop="weightUtil">
               <template slot-scope="{ row }">
                 {{ row.weightUtil }}
               </template>
@@ -617,14 +558,13 @@
               </template>
             </el-table-column>
 
-            <el-table-column
-              v-if="formData.bizType != 5"
-              label="生产日期"
-              prop=""
-              width="220"
-            >
+            <el-table-column label="生产日期" prop="" width="220">
               <template slot="header" slot-scope="scope">
-                <el-select filterable v-model="curDateType">
+                <el-select
+                  v-if="!formData.isStorage"
+                  filterable
+                  v-model="curDateType"
+                >
                   <el-option
                     value="manufactureTime"
                     label="生产日期"
@@ -636,11 +576,8 @@
                 </el-select>
               </template>
               <template slot-scope="{ row }">
-                <template v-if="formData.bizType == 5">
-                  {{ row[curDateType] }}
-                </template>
                 <el-date-picker
-                  v-else
+                  v-if="!formData.isStorage"
                   :disabled="row.ispack"
                   size="small"
                   v-model="row[curDateType]"
@@ -649,21 +586,17 @@
                   placeholder="选择日期"
                 >
                 </el-date-picker>
+                <template v-else>
+                  {{ row[curDateType] }}
+                </template>
               </template>
             </el-table-column>
-            <template v-else>
-              <el-table-column
-                label="生产日期"
-                prop="manufactureTime"
-                width="200"
-              ></el-table-column>
-              <el-table-column
-                label="采购日期"
-                prop="procurementTime"
-                width="200"
-              ></el-table-column>
-            </template>
-            <el-table-column label="操作" width="80" fixed="right">
+            <el-table-column
+              v-if="!formData.isStorage"
+              label="操作"
+              width="80"
+              fixed="right"
+            >
               <template slot-scope="{ row }">
                 <el-button type="text" @click="packCout(row)">
                   {{ !row.isPack ? '保存' : '编辑' }}
@@ -671,13 +604,11 @@
               </template>
             </el-table-column>
           </el-table>
-          <!-- </el-tab-pane>
-        </el-tabs> -->
         </div>
-        <div class="mt20" v-if="isDetail">
+        <div class="mt20" v-if="resultArray.length > 0 && isSplit">
           <header-title :title="`物料明细`"> </header-title>
           <el-button
-            v-if="resultArray.length != 0"
+            v-if="resultArray.length > 0 && !formData.isStorage"
             type="success"
             plain
             style="margin-bottom: 20px; float: right; margin-right: 20px"
@@ -730,11 +661,7 @@
               label="计量单位"
               prop="measuringUnit"
             ></el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2"
-              label="物料代号"
-              prop="meterielCode"
-            >
+            <el-table-column label="物料代号" prop="meterielCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-model="row.materielCode"
@@ -743,11 +670,7 @@
                 <span v-else>{{ row.materialCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="客户代号"
-              prop="clientCode"
-            >
+            <el-table-column label="客户代号" prop="clientCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-model="row.clientCode"
@@ -756,33 +679,19 @@
                 <span v-else> {{ row.clientCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 1"
-              label="刻码"
-              prop="engrave"
-            >
+            <el-table-column label="刻码" prop="engrave">
               <template slot-scope="{ row }">
                 <el-input v-model="row.engrave" v-if="!row.isPack"></el-input>
                 <span v-else> {{ row.engrave }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              width="100"
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量"
-              prop="weight"
-            >
+            <el-table-column width="100" label="重量" prop="weight">
               <template slot-scope="{ row }">
                 <el-input v-model="row.weight" v-if="!row.isPack"></el-input>
                 <span v-else>{{ row.weight }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量单位"
-              prop="weightUnit"
-              width="100"
-            >
+            <el-table-column label="重量单位" prop="weightUnit" width="100">
             </el-table-column>
             <el-table-column label="质检结果" prop="result" width="120">
               <template slot-scope="{ row }">
@@ -801,7 +710,12 @@
                 <span>{{ qualityStatus[row.status] }}</span>
               </template>
             </el-table-column>
-            <el-table-column label="操作" width="80" fixed="right">
+            <el-table-column
+              v-if="!formData.isStorage"
+              label="操作"
+              width="80"
+              fixed="right"
+            >
               <template slot-scope="{ row }">
                 <el-button type="text" @click="materialBtn(row)">
                   {{ !row.isPack ? '保存' : '编辑' }}
@@ -811,16 +725,6 @@
           </el-table>
         </div>
       </div>
-      <!-- <div class="center mt20">
-        <el-button
-          type="primary"
-          v-if="!isTask"
-          @click="handleSave"
-          :loading="saveLoading"
-          >保存</el-button
-        >
-        <el-button @click="$router.go(-1)" v-if="!isTask">返回</el-button>
-      </div> -->
     </el-card>
 
     <selectType
@@ -912,6 +816,10 @@
     },
     data() {
       return {
+        codeList: [], // 物品类型列表
+        sceneState, // 入库类型
+        inboundTypeMapping: {}, // 入库类型映射表
+        assetTypeMapping: {}, // 物品类型映射表
         showMaterialTable: true, // 缓存包装明细列表
         isSplit: false, // 是否拆分到物料明细
         qualityStatus: {
@@ -927,11 +835,9 @@
         isTask: false,
         isWeight: true,
         resultArray: [],
-        isDetail: false,
         contactList: [],
         pickerRow: {},
         fromUserList: [],
-        codeList: [],
         materialType,
         warehousingType,
         sceneState,
@@ -1041,25 +947,62 @@
         return tableHeader(this.selectEquiType);
       }
     },
-    created() {
-      let obj = localStorage.getItem('orgInfo')
-        ? JSON.parse(localStorage.getItem('orgInfo'))
-        : {};
-      this.formData.createUserName = obj.name;
-      this.formData.extInfo.deptName = obj.dept?.name;
-      this.formData.deptCode = obj.dept?.code;
-      this.initData();
-    },
     async mounted() {
-      let info = null;
-      let res = await saleReturnGetByIdAPI(this.businessId);
-      const data = await getOutInByIdAPI(res.outerOutReceiptId);
-      info = deepClone(data);
-      this.formData.bizType = +info.bizType;
-      this.formData.extInfo.assetType = +info.extInfo.assetType;
-      this.$forceUpdate();
-      this.title = '产品';
-      this.selectEquiType = +info.extInfo.assetType;
+      await this.initData();
+      // outerInReceiptId外协入库单id(有说明已入库)
+      let returnDetailsForm = await saleReturnGetByIdAPI(this.businessId);
+      console.log(returnDetailsForm);
+      // 已经入库(详情)
+      if (returnDetailsForm.outerInReceiptId) {
+        getOutInByIdAPI(returnDetailsForm.outerInReceiptId).then((data) => {
+          console.log('有订单来源');
+          this.formData = deepClone(data);
+          console.log(this.formData);
+          this.isSplit = true;
+          // 增加是否已经入库字段
+          this.formData.isStorage = true;
+          // 填充遍历数据
+          if (this.formData.outInDetailVOList?.length > 0) {
+            this.warehousingMaterialList = []; // 物品列表
+            this.resultArray = []; // 物料列表
+            this.formData.outInDetailVOList.forEach((goodsiItem) => {
+              goodsiItem.assetCode = goodsiItem.categoryCode;
+              goodsiItem.assetName = goodsiItem.name;
+              goodsiItem.isSave = true;
+              goodsiItem.warehouseLedgerDetails =
+                goodsiItem.outInDetailRecordVOList;
+              goodsiItem.houseList = [];
+              this.warehousingMaterialList.push(goodsiItem);
+              goodsiItem.outInDetailRecordVOList.forEach((wrapItem) => {
+                wrapItem.assetCode = wrapItem.categoryCode;
+                wrapItem.assetName = wrapItem.name;
+                wrapItem.isPack = true;
+                wrapItem.outInDetailRecordMaterialDetailVOList.forEach(
+                  (materialItem) => {
+                    materialItem.isPack = true;
+                    this.resultArray.push(materialItem);
+                  }
+                );
+              });
+            });
+          }
+        });
+      } else {
+        console.log('没有订单来源');
+        // 销售退货入库
+        this.formData.bizType = '6';
+        // 物品类型
+        this.formData.extInfo.assetType = returnDetailsForm.categoryLevelTopId;
+        // 增加添加物品判断条件
+        this.title = this.assetTypeMapping[this.formData.extInfo.assetType];
+        this.selectEquiType = returnDetailsForm.categoryLevelTopId;
+        // 添加单据来源()
+        this.formData.sourceBizNo = returnDetailsForm.returnHandleNo;
+        // 增加是否已经入库字段
+        this.formData.isStorage = false;
+        // 将出库状态改成入库状态 2出库 1入库
+        this.formData.type = 1;
+      }
     },
     methods: {
       // 包装维度最小包装单元改变——>总重量
@@ -1259,7 +1202,11 @@
             console.log(arr);
             // 首先判断是未填/合格不合格
             let boolen = arr.every((item) => {
-              return item.result === '' || item.result === undefined;
+              return (
+                item.result === '' ||
+                item.result === undefined ||
+                item.result === null
+              );
             });
             // 判断只要物料全部质检结果(未填)——>包装质检结果(未填) 状态(未检)
             if (boolen) {
@@ -1444,9 +1391,9 @@
       calcSumTotal(PackingCount, outInNum, univalence) {
         //最小包装单元,包装数量,单价
         const total = {
-          PackingCount: Number(PackingCount),
-          outInNum: Number(outInNum),
-          univalence: Number(univalence == undefined ? 0 : univalence)
+          PackingCount: Number(PackingCount > 0 ? PackingCount : 0),
+          outInNum: Number(outInNum > 0 ? outInNum : 0),
+          univalence: Number(univalence > 0 ? univalence : 0)
         };
         return total.PackingCount * total.outInNum * total.univalence;
       },
@@ -1557,7 +1504,7 @@
         row.warehouseLedgerDetails = [];
         // 清空物料明细防止数据错乱
         this.resultArray = [];
-        this.isDetail = false;
+        this.isSplit = false;
       },
       listSave(row, index) {
         const fileds = [
@@ -1702,7 +1649,7 @@
       listDel(row, index) {
         this.warehousingMaterialList.splice(index, 1);
         this.resultArray = [];
-        this.isDetail = false;
+        this.isSplit = false;
       },
       // 入库明细生成条码信息
       async createMaterialCode(row) {
@@ -2187,12 +2134,27 @@
           })
         );
       },
-      async initData() {
+      // 获取物品类型列表
+      async getAssetTypeOptions() {
         const { data } = await getTreeByGroup({ type: 1 });
         this.codeList = data;
-        // .map((item) => {
-        //   return { dictCode: item.id, dictValue: item.name };
-        // });
+        let obj = {};
+        data.forEach((item) => {
+          obj[item.id] = item.name;
+        });
+        this.assetTypeMapping = obj;
+      },
+      // 入库类型映射表
+      async getInboundTypeMapping() {
+        let obj = {};
+        this.sceneState.forEach((item) => {
+          obj[item.code] = item.label;
+        });
+        this.inboundTypeMapping = obj;
+      },
+      async initData() {
+        await this.getAssetTypeOptions();
+        await this.getInboundTypeMapping();
         const res = await warehouseDefinition.tree();
         this.treeList = this.$util.toTreeData({
           data: res,

+ 40 - 116
src/views/bpm/handleTask/components/saleOrder/customerReturnGoods/interiorStorageToOutsourcingQuality.vue

@@ -11,11 +11,12 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="入库场景:">
-              <span>{{ getSceneState(formData.bizType) }}</span>
+              <!-- <span>{{ getSceneState(formData.bizType) }}</span> -->
+              <span>生产入库</span>
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="采购收货单:">
+            <el-form-item label="生产工单:">
               <span>{{ formData.sourceBizNo }}</span>
             </el-form-item>
           </el-col>
@@ -29,36 +30,6 @@
               <span>{{ formData.extInfo.createUserName }}</span>
             </el-form-item>
           </el-col>
-          <!-- <el-col :span="8">
-                <el-form-item label="创建时间:">
-                  <span>{{ infoData.createTime }}</span>
-                </el-form-item>
-          </el-col> 
-           <el-col :span="8">
-            <el-form-item label="入库时间:">
-              <span>{{ formData.createTime }}</span>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="状态:">
-              <span>{{ getAuditStatus(formData.verifyStatus) }}</span>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="审核人:">
-              <span>{{ formData.verifyName }}</span>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" v-if="formData.bizType == 2">
-            <el-form-item label="客户:">
-              <span>{{ formData.clientName }}</span>
-            </el-form-item>
-          </el-col> -->
-          <el-col :span="8" v-if="formData.bizType == 2">
-            <el-form-item label="供应商:">
-              <span>{{ formData.extInfo.supplierName }}</span>
-            </el-form-item>
-          </el-col>
           <el-col :span="8">
             <el-form-item label="送货人:">
               <el-input
@@ -667,11 +638,7 @@
               label="计量单位"
               prop="measuringUnit"
             ></el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="物料代号"
-              prop="materielCode"
-            >
+            <el-table-column label="物料代号" prop="materielCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-if="!row.isPack"
@@ -680,11 +647,7 @@
                 <span v-else>{{ row.materielCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="客户代号"
-              prop="clientCode"
-            >
+            <el-table-column label="客户代号" prop="clientCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-if="!row.isPack"
@@ -693,22 +656,13 @@
                 <span v-else> {{ row.clientCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 1"
-              label="刻码"
-              prop="engrave"
-            >
+            <el-table-column label="刻码" prop="engrave">
               <template slot-scope="{ row }">
                 <el-input v-if="!row.isPack" v-model="row.engrave"></el-input>
                 <span v-else>{{ row.engrave }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量"
-              prop="weight"
-              width="100"
-            >
+            <el-table-column label="重量" prop="weight" width="100">
               <template slot-scope="{ row }">
                 <el-input
                   v-if="!row.isPack"
@@ -718,11 +672,7 @@
                 <span v-else>{{ row.weight }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量单位"
-              prop="weightUtil"
-            >
+            <el-table-column label="重量单位" prop="weightUtil">
               <template slot-scope="{ row }">
                 {{ row.weightUtil }}
               </template>
@@ -746,12 +696,7 @@
               </template>
             </el-table-column>
 
-            <el-table-column
-              v-if="formData.bizType != 5"
-              label="生产日期"
-              prop=""
-              width="220"
-            >
+            <el-table-column label="生产日期" prop="" width="220">
               <template slot="header" slot-scope="scope">
                 <el-select v-if="!isConfig" filterable v-model="curDateType">
                   <el-option
@@ -781,18 +726,6 @@
                 </el-date-picker>
               </template>
             </el-table-column>
-            <template v-else>
-              <el-table-column
-                label="生产日期"
-                prop="manufactureTime"
-                width="200"
-              ></el-table-column>
-              <el-table-column
-                label="采购日期"
-                prop="procurementTime"
-                width="200"
-              ></el-table-column>
-            </template>
             <el-table-column
               v-if="!isConfig"
               label="操作"
@@ -824,7 +757,7 @@
         <div class="mt20" v-if="isDetail">
           <header-title :title="`物料明细`"> </header-title>
           <el-button
-            v-if="resultArray.length != 0"
+            v-if="resultArray.length > 0 && taskDefinitionKey === 'outerInQC'"
             type="success"
             plain
             style="margin-bottom: 20px; float: right; margin-right: 20px"
@@ -877,11 +810,7 @@
               label="计量单位"
               prop="measuringUnit"
             ></el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2"
-              label="物料代号"
-              prop="meterielCode"
-            >
+            <el-table-column label="物料代号" prop="meterielCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-model="row.materielCode"
@@ -890,11 +819,7 @@
                 <span v-else>{{ row.materialCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="客户代号"
-              prop="clientCode"
-            >
+            <el-table-column label="客户代号" prop="clientCode">
               <template slot-scope="{ row }">
                 <el-input
                   v-model="row.clientCode"
@@ -903,33 +828,19 @@
                 <span v-else> {{ row.clientCode }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 1"
-              label="刻码"
-              prop="engrave"
-            >
+            <el-table-column label="刻码" prop="engrave">
               <template slot-scope="{ row }">
                 <el-input v-model="row.engrave" v-if="!row.isPack"></el-input>
                 <span v-else> {{ row.engrave }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              width="100"
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量"
-              prop="weight"
-            >
+            <el-table-column width="100" label="重量" prop="weight">
               <template slot-scope="{ row }">
                 <el-input v-model="row.weight" v-if="!row.isPack"></el-input>
                 <span v-else>{{ row.weight }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              v-if="formData.bizType == 2 || formData.bizType == 1"
-              label="重量单位"
-              prop="weightUnit"
-              width="100"
-            >
+            <el-table-column label="重量单位" prop="weightUnit" width="100">
             </el-table-column>
             <el-table-column label="质检结果" prop="result" width="120">
               <template slot-scope="{ row }">
@@ -1215,8 +1126,8 @@
       // 获取入库产品类型列表
       this.getAssetTypeList();
       let res = await saleReturnGetByIdAPI(this.businessId);
-      getOutInByIdAPI(res.outerInReceiptId)
-        .then((data) => {
+      if (res.outerInReceiptId) {
+        getOutInByIdAPI(res.outerInReceiptId).then((data) => {
           this.isStorage = true; // 已经入库
           this.isConfig = true;
           this.formData = deepClone(data);
@@ -1281,12 +1192,12 @@
               this.isDetail = true;
             }
           }
-        })
-        .catch(() => {
-          this.isStorage = false; // 未入库
-          // 根据收货单详情初始化入库单详情数据(未入库情况)
-          this.initData();
         });
+      } else {
+        this.isStorage = false; // 未入库
+        // 根据收货单详情初始化入库单详情数据(未入库情况)
+        this.initData();
+      }
     },
     methods: {
       //获取回执附件
@@ -1302,11 +1213,20 @@
           let resultAllChecked = this.resultArray.every(
             (item) => item.status == 1
           );
+          if (metailAllChecked && resultAllChecked) {
+            // 物料批量保存
+            this.materialListSave();
+          }
           return metailAllChecked && resultAllChecked;
         } else {
-          return this.materialCodeReqListOrStorage.every(
+          let boolen = this.materialCodeReqListOrStorage.every(
             (item) => item.status == 1
           );
+          if (boolen) {
+            // 包装批量保存
+            this.wrapListSave();
+          }
+          return boolen;
         }
       },
       getReturnStorage() {
@@ -1728,7 +1648,11 @@
             console.log(arr);
             // 首先判断是未填/合格不合格
             let boolen = arr.every((item) => {
-              return item.result === '' || item.result === undefined;
+              return (
+                item.result === '' ||
+                item.result === undefined ||
+                item.result === null
+              );
             });
             // 判断只要物料全部质检结果(未填)——>包装质检结果(未填) 状态(未检)
             if (boolen) {
@@ -1937,9 +1861,9 @@
       calcSumTotal(PackingCount, outInNum, univalence) {
         //最小包装单元,包装数量,单价
         const total = {
-          PackingCount: Number(PackingCount),
-          outInNum: Number(outInNum),
-          univalence: Number(univalence == undefined ? 0 : univalence)
+          PackingCount: Number(PackingCount > 0 ? PackingCount : 0),
+          outInNum: Number(outInNum > 0 ? outInNum : 0),
+          univalence: Number(univalence > 0 ? univalence : 0)
         };
         return total.PackingCount * total.outInNum * total.univalence;
       },

+ 178 - 261
src/views/bpm/handleTask/components/saleOrder/customerReturnGoods/outboundToOutsourcing.vue

@@ -1,3 +1,4 @@
+<!-- 客户退货产品处理审批(外协出库) -->
 <template>
   <div class="ele-body">
     <el-card shadow="never">
@@ -15,86 +16,42 @@
           >
           <el-col :span="8">
             <el-form-item label="退货处理单" prop="sourceBizNo">
-              <span>{{ formData.extInfo.sourceBizNo }}</span>
+              <span>{{ formData.sourceBizNo }}</span>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="出库物品类型" prop="extInfo.assetType">
-              <span>产品</span>
+              <span>{{ assetTypeMapping[formData.extInfo.assetType] }}</span>
             </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="formData.bizType == 3">
-            <el-form-item label="客户名称">
-              <el-input
-                placeholder="客户名称"
-                disabled
-                v-model="formData.clientName"
-                clearable /></el-form-item
-          ></el-col>
-          <el-col :span="8" v-if="formData.bizType == 3">
-            <el-form-item label="客户联系人">
-              <el-input
-                placeholder="客户联系人"
-                disabled
-                v-model="formData.clientUser"
-                clearable /></el-form-item
-          ></el-col>
-          <el-col :span="8" v-if="formData.bizType == 3">
-            <el-form-item label="客户电话">
-              <el-input
-                placeholder="客户电话"
-                disabled
-                v-model="formData.clientPhone"
-                clearable /></el-form-item
-          ></el-col>
-
           <el-col :span="8">
             <el-form-item label="权属部门" prop="deptName">
               <el-input
+                v-if="!isStorage"
                 placeholder="权属部门"
                 disabled
                 v-model="formData.extInfo.deptName"
                 clearable
               />
+              <span v-else>{{ formData.extInfo.deptName }}</span>
             </el-form-item>
-
-            <!-- <selectTree
-              ref="tree"
-              style="width: 100%"
-              size="medium"
-              :initStr="formData.deptName"
-              clearable
-              :options="treeList"
-              :props="{
-                value: 'code',
-                label: 'name',
-                children: 'children'
-              }"
-              @getValue="deptClick"
-            /> -->
           </el-col>
           <el-col :span="8">
             <el-form-item label="出库登记人">
               <el-input
+                v-if="!isStorage"
                 placeholder="登记人"
                 disabled
                 v-model="formData.extInfo.createUserName"
-                clearable /></el-form-item
-          ></el-col>
-          <!-- <el-col :span="8">
-          <el-form-item label="出库时间" prop="outInTime">
-            <el-date-picker
-              v-model="formData.outInTime"
-              clearable
-              type="datetime"
-              value-format="yyyy-MM-dd HH:mm:ss"
-              placeholder="选择日期"
-            >
-            </el-date-picker></el-form-item
-        ></el-col> -->
+                clearable
+              />
+              <span v-else>{{ formData.extInfo.createUserName }}</span>
+            </el-form-item></el-col
+          >
           <el-col :span="8">
             <el-form-item label="领料人部门" prop="verifyDeptName">
               <selectTree
+                v-if="!isStorage"
                 ref="tree"
                 class="form-ipt"
                 size="medium"
@@ -108,11 +65,13 @@
                 }"
                 @getValue="auditorDeptClick"
               />
+              <span v-else>{{ formData.extInfo.verifyDeptName }}</span>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="领料人" prop="fromUser">
               <el-select
+                v-if="!isStorage"
                 v-model="formData.fromUser"
                 filterable
                 placeholder="请选择领料人"
@@ -127,67 +86,33 @@
                   "
                 >
                 </el-option>
-              </el-select> </el-form-item
-          ></el-col>
+              </el-select>
+              <span v-else>{{ formData.fromUser }}</span>
+            </el-form-item></el-col
+          >
           <el-col :span="8">
             <el-form-item label="领料人联系方式" prop="fromUserPhone">
               <el-input
+                v-if="!isStorage"
                 placeholder="请输入"
                 disabled
                 v-model="formData.extInfo.fromUserPhone"
-                clearable /></el-form-item
-          ></el-col>
-          <!-- <el-col :span="8">
-            <el-form-item label="紧急状态" prop="urgent">
-              <el-select
-                filterable
-                placeholder="请选择"
-                v-model="formData.extInfo.urgent"
                 clearable
-              >
-                <el-option
-                  v-for="item in emergencyState"
-                  :key="item.code"
-                  :value="item.code"
-                  :label="item.label"
-                ></el-option>
-              </el-select> </el-form-item
-          ></el-col> -->
-
-          <!-- <el-col :span="8">
-            <el-form-item label="审核人" prop="verifyId">
-              <el-select
-                filterable
-                class="form-ipt"
-                style="width: 100%"
-                v-model="formData.verifyId"
-                placeholder="请选择"
-              >
-                <el-option
-                  v-for="item in staffList"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.id"
-                  @click.native="() => (formData.verifyName = item.name)"
-                >
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col> -->
-          <!-- <el-col :span="24">
-            <el-form-item label="附件" prop="contentImage">
-              <selectUpload @getImgs="upload" :initData="uploadList" />
-            </el-form-item>
-          </el-col> -->
+              />
+              <span v-else>{{ formData.fromUserPhone }}</span>
+            </el-form-item></el-col
+          >
           <el-col :span="24">
             <el-form-item label="备注" prop="remark">
               <el-input
+                v-if="!isStorage"
                 v-model="formData.remark"
                 clearable
                 type="textarea"
                 placeholder="请详细说明"
                 :rows="4"
               ></el-input>
+              <span v-else>{{ formData.remark }}</span>
             </el-form-item>
           </el-col>
         </el-row>
@@ -223,11 +148,13 @@
                 <el-table-column
                   label="编码"
                   prop="assetCode"
+                  width="150"
                 ></el-table-column>
 
                 <el-table-column
                   label="名称"
                   prop="assetName"
+                  width="150"
                 ></el-table-column>
 
                 <el-table-column
@@ -275,35 +202,19 @@
                   prop="weightUnit"
                 ></el-table-column>
                 <el-table-column
+                  v-if="!isStorage"
                   label="仓库"
                   width="300"
                   prop="warehouseName"
                 ></el-table-column>
-                <!-- <el-table-column
-                label="出库数量"
-                prop=""
-                align="center"
-                width="350px"
-              >
-                <template slot-scope="{ row, $index }">
-                  <el-row :gutter="4">
-                    <el-col :span="9" v-if="!row.isUnpack">
-                      <el-input type="text" disabled :value="row.outInNum">
-                        <template slot="append">
-                          {{ row.minPackUnit }}
-                        </template>
-                      </el-input>
-                    </el-col>
-                    <el-col :span="6">
-                      <el-button type="text" @click="handleSetting(row, $index)"
-                        >出库明细选择</el-button
-                      ></el-col
-                    >
-                  </el-row>
-                </template>
-              </el-table-column> -->
-                <!-- <el-table-column label="操作" width="200" v-if="!isTask"> -->
-                <el-table-column label="操作" width="200">
+                <el-table-column
+                  v-else
+                  label="仓库"
+                  width="300"
+                  prop="position"
+                >
+                </el-table-column>
+                <el-table-column v-if="!isStorage" label="操作" width="200">
                   <template slot-scope="{ row, $index }">
                     <el-button type="text" @click="listDel(row, $index)"
                       >删除</el-button
@@ -321,17 +232,6 @@
             />
           </div>
         </div>
-        <!-- <div class="flex" style="margin-top: 20px">
-          <div><span class="red">*</span>包装清单</div>
-        </div>
-        <div class="mt10 form-table">
-          <BatchDetail
-            :assetType="formData.extInfo.assetType"
-            :codeObj="{ name: '包装编码', prop: 'code' }"
-            :nameObj="{ name: '名称', prop: 'name' }"
-          />
-        </div> -->
-
         <div class="mt20">
           <el-tabs v-model="activeName" type="card">
             <el-tab-pane :label="`${title}明细`" name="a">
@@ -348,10 +248,10 @@
 
                 <el-table-column
                   :label="`编码`"
-                  min-width="100"
+                  width="150"
                   prop="assetCode"
                 ></el-table-column>
-                <el-table-column label="名称" prop="name" width="200">
+                <el-table-column label="名称" prop="name" width="150">
                 </el-table-column>
 
                 <el-table-column label="批次号" prop="batchNo">
@@ -359,7 +259,7 @@
                 <el-table-column
                   v-if="dimension == 4"
                   label="包装编码"
-                  min-width="100"
+                  width="150"
                   prop="onlyCode"
                 ></el-table-column>
                 <el-table-column
@@ -382,21 +282,6 @@
                   width="250"
                   prop="no"
                 ></el-table-column>
-
-                <!-- <el-table-column label="生产日期" width="200">
-                  <template slot-scope="{ row }">
-                    <span v-if="row.dateType === 2">
-                      {{ row.produceTime }}
-                    </span>
-                  </template>
-                </el-table-column>
-                <el-table-column label="采购日期" width="200">
-                  <template slot-scope="{ row }">
-                    <span v-if="row.dateType === 1">
-                      {{ row.procureTime }}
-                    </span>
-                  </template>
-                </el-table-column> -->
                 <el-table-column label="计量数量" prop="">
                   <template slot-scope="{ row }">1</template>
                 </el-table-column>
@@ -416,28 +301,11 @@
                   label="重量单位"
                   prop="weightUnit"
                 ></el-table-column>
-                <!-- <el-table-column
-                  label="货位"
-                  prop="pathName"
-                  show-overflow-tooltip
-                >
-                </el-table-column>
-                <el-table-column label="转消耗" prop="">
-                  <template slot-scope="{ row }">
-                    <el-checkbox v-model="row.isTransferAsset"></el-checkbox>
-                  </template>
-                </el-table-column> -->
               </el-table>
             </el-tab-pane>
           </el-tabs>
         </div>
       </div>
-      <!-- <div class="center mt20" v-if="!isTask">
-        <el-button type="primary" @click="handleNewSave" :loading="saveLoading"
-          >保存</el-button
-        >
-        <el-button @click="$router.go(-1)">返回</el-button>
-      </div> -->
     </el-card>
 
     <AssetsDialog
@@ -541,15 +409,17 @@
     },
     data() {
       return {
-        isStorage: false,
+        outboundTypeMapping: {}, // 出库类型映射表
+        outputSceneState, // 出库类型类型
+        codeList: [], // 物品类型列表
+        assetTypeMapping: {}, // 物品类型映射表
+        isStorage: false, // 是否出库
         infoData: {},
         isTask: false,
         dimension: '3',
         llList: [],
-        codeList: [],
         materialType,
         warehousingType,
-        outputSceneState,
         emergencyState,
         saveLoading: false,
         title: '',
@@ -630,23 +500,120 @@
       //     .flat();
       // }
     },
-    created() {
-      this.initData();
-    },
     async mounted() {
-      let info = null;
-      let res = await saleReturnGetByIdAPI(this.businessId);
-      const data = await getOutInByIdAPI(res.returnInReceiptId);
-      info = deepClone(data);
-      console.log(info);
-      this.formData.bizType = +info.bizType;
-      this.formData.extInfo.assetType = +info.extInfo.assetType;
-      this.$forceUpdate();
-      this.title = '产品';
-      this.selectEquiType = +info.extInfo.assetType;
-      console.log(this.formData);
+      await this.initData();
+      // outerOutReceiptId外协出库单id(有说明已出库)
+      let returnDetailsForm = await saleReturnGetByIdAPI(this.businessId);
+      console.log(returnDetailsForm);
+      // 已经出库(详情)
+      if (returnDetailsForm.outerOutReceiptId) {
+        getOutInByIdAPI(returnDetailsForm.outerOutReceiptId).then((data) => {
+          console.log('有订单来源');
+          this.isStorage = true; // 已经出库
+          this.formData = deepClone(data);
+          // 填充遍历数据
+          console.log('this.formData-----', this.formData);
+          if (this.formData.outInDetailVOList?.length > 0) {
+            this.warehousingMaterialList = []; // 物品列表
+            this.batchDetailsVOList = []; // 包装列表
+            this.materialCodeReqList = []; // 物料列表
+            this.formData.outInDetailVOList.forEach((goodsiItem) => {
+              goodsiItem.assetName = goodsiItem.name;
+              goodsiItem.assetCode = goodsiItem.categoryCode;
+              goodsiItem.outInNum = goodsiItem.packingCount;
+              this.warehousingMaterialList.push(goodsiItem);
+              goodsiItem.outInDetailRecordVOList.forEach((wrapItem) => {
+                wrapItem.assetName = goodsiItem.name;
+                wrapItem.assetCode = goodsiItem.categoryCode;
+                // wrapItem.count =
+                //   wrapItem.outInDetailRecordMaterialDetailVOList.length; // 增加包装计量数量
+                this.batchDetailsVOList.push(wrapItem);
+                wrapItem.outInDetailRecordMaterialDetailVOList.forEach(
+                  (materialItem) => {
+                    materialItem.isPack = true;
+                    this.materialCodeReqList.push(materialItem);
+                  }
+                );
+              });
+            });
+          }
+        });
+      } else {
+        // 是否出库
+        this.isStorage = false;
+        // 物品类型
+        this.formData.extInfo.assetType = returnDetailsForm.categoryLevelTopId;
+        // 出库类型(销售出库)
+        this.formData.bizType = '3';
+        // 增加添加物品判断条件
+        this.title = this.assetTypeMapping[this.formData.extInfo.assetType];
+        // 添加单据来源
+        this.formData.sourceBizNo = returnDetailsForm.returnHandleNo;
+        // 将出库状态改成入库状态 2出库 1入库
+        this.formData.type = 2;
+        // this.formData.sid = returnDetailsForm.id;
+        // this.formData.fromId = returnDetailsForm.id;
+        // this.formData.clientName = returnDetailsForm.contactName;
+        // this.formData.clientUser = returnDetailsForm.linkName;
+        // this.formData.clientPhone = returnDetailsForm.linkPhone;
+        this.$forceUpdate();
+      }
     },
     methods: {
+      eomSuccess(row) {
+        console.log('row--------------------');
+        console.log(row);
+        getOutInBySourceBizNoOrError(row.docNo || row.returnNo)
+          .then((data) => {
+            this.isStorage = true; // 已经入库
+            this.formData = deepClone(data);
+            // 填充遍历数据
+            console.log('this.formData-----', this.formData);
+            if (this.formData.outInDetailVOList?.length > 0) {
+              this.warehousingMaterialList = []; // 物品列表
+              this.batchDetailsVOList = []; // 包装列表
+              this.materialCodeReqList = []; // 物料列表
+              this.formData.outInDetailVOList.forEach((goodsiItem) => {
+                goodsiItem.assetName = goodsiItem.name;
+                goodsiItem.assetCode = goodsiItem.categoryCode;
+                goodsiItem.outInNum = goodsiItem.packingCount;
+                this.warehousingMaterialList.push(goodsiItem);
+                goodsiItem.outInDetailRecordVOList.forEach((wrapItem) => {
+                  wrapItem.assetName = goodsiItem.name;
+                  wrapItem.assetCode = goodsiItem.categoryCode;
+                  // wrapItem.count =
+                  //   wrapItem.outInDetailRecordMaterialDetailVOList.length; // 增加包装计量数量
+                  this.batchDetailsVOList.push(wrapItem);
+                  wrapItem.outInDetailRecordMaterialDetailVOList.forEach(
+                    (materialItem) => {
+                      materialItem.isPack = true;
+                      this.materialCodeReqList.push(materialItem);
+                    }
+                  );
+                });
+              });
+            }
+          })
+          .catch(() => {
+            // 未出库
+            this.isStorage = false;
+            this.formData.extInfo.assetType = row.categoryLevelTopId || '9';
+            this.formData.bizType = '3';
+            this.$refs.trees.valueTitle = '产品';
+            this.title = '产品';
+            this.formData.sourceBizNo = row.docNo || row.returnNo;
+            this.formData.sid = row.id;
+            this.formData.fromId = row.id;
+            this.formData.clientName = row.contactName;
+            this.formData.clientUser = row.linkName;
+            this.formData.clientPhone = row.linkPhone;
+            this.$forceUpdate();
+          });
+        // this.onSelectTableData(row.tableData || row.productList, 1);
+        // if (row.productList.length > 0) {
+        //   this.$refs.assetsDialogRef.confirm(row.productList, '3');
+        // }
+      },
       detailData(data, dimension) {
         this.dimension = dimension;
         console.log('总数居', data);
@@ -875,61 +842,6 @@
         this.title = '';
         this.$forceUpdate();
       },
-      eomSuccess(row) {
-        console.log('row--------------------');
-        console.log(row);
-        getOutInBySourceBizNoOrError(row.docNo || row.returnNo)
-          .then((data) => {
-            this.isStorage = true; // 已经入库
-            this.formData = deepClone(data);
-            // 填充遍历数据
-            console.log('this.formData-----', this.formData);
-            if (this.formData.outInDetailVOList?.length > 0) {
-              this.warehousingMaterialList = []; // 物品列表
-              this.batchDetailsVOList = []; // 包装列表
-              this.materialCodeReqList = []; // 物料列表
-              this.formData.outInDetailVOList.forEach((goodsiItem) => {
-                goodsiItem.assetName = goodsiItem.name;
-                goodsiItem.assetCode = goodsiItem.categoryCode;
-                goodsiItem.outInNum = goodsiItem.packingCount;
-                this.warehousingMaterialList.push(goodsiItem);
-                goodsiItem.outInDetailRecordVOList.forEach((wrapItem) => {
-                  wrapItem.assetName = goodsiItem.name;
-                  wrapItem.assetCode = goodsiItem.categoryCode;
-                  // wrapItem.count =
-                  //   wrapItem.outInDetailRecordMaterialDetailVOList.length; // 增加包装计量数量
-                  this.batchDetailsVOList.push(wrapItem);
-                  wrapItem.outInDetailRecordMaterialDetailVOList.forEach(
-                    (materialItem) => {
-                      materialItem.isPack = true;
-                      this.materialCodeReqList.push(materialItem);
-                    }
-                  );
-                });
-              });
-            }
-          })
-          .catch(() => {
-            // 未出库
-            this.isStorage = false;
-            this.formData.extInfo.assetType = row.categoryLevelTopId || '9';
-            this.formData.bizType = '3';
-            this.isTask = true;
-            this.$refs.trees.valueTitle = '产品';
-            this.title = '产品';
-            this.formData.sourceBizNo = row.docNo || row.returnNo;
-            this.formData.sid = row.id;
-            this.formData.fromId = row.id;
-            this.formData.clientName = row.contactName;
-            this.formData.clientUser = row.linkName;
-            this.formData.clientPhone = row.linkPhone;
-            this.$forceUpdate();
-          });
-        // this.onSelectTableData(row.tableData || row.productList, 1);
-        // if (row.productList.length > 0) {
-        //   this.$refs.assetsDialogRef.confirm(row.productList, '3');
-        // }
-      },
       pickOrderRow(row) {
         this.formData.sid = row.id;
         row.tableData = [];
@@ -1321,6 +1233,24 @@
         // });
         // return newArr;
       },
+      // 获取物品类型列表
+      async getAssetTypeOptions() {
+        const { data } = await getTreeByGroup({ type: 1 });
+        this.codeList = data;
+        let obj = {};
+        data.forEach((item) => {
+          obj[item.id] = item.name;
+        });
+        this.assetTypeMapping = obj;
+      },
+      // 出库类型映射表
+      async getOutboundTypeMapping() {
+        let obj = {};
+        this.outputSceneState.forEach((item) => {
+          obj[item.code] = item.label;
+        });
+        this.outboundTypeMapping = obj;
+      },
       //添加明细
       onSelectTableData(val, e) {
         // if (e == 1) {
@@ -1356,7 +1286,6 @@
             contactCode: next.contactCode
           };
         });
-        console.log('sasasasa===>>>', this.warehousingMaterialList);
       },
       codeListValue(val) {
         console.log(val);
@@ -1367,35 +1296,23 @@
         console.log(this.title);
       },
       async initData() {
-        const { data } = await getTreeByGroup({ type: 1 });
-        this.codeList = data;
+        await this.getAssetTypeOptions();
+        await this.getOutboundTypeMapping();
         const res = await warehouseDefinition.tree();
         this.treeList = this.$util.toTreeData({
           data: res,
           idField: 'id',
           parentIdField: 'parentId'
         });
-
-        let res22 = await warehouseDefinition.getUserPage({
-          size: -1,
-          page: 1
-        });
-        this.fromUserList = res22.list;
-
-        // /
-        // const res111 = await warehouseDefinition.list();
-        // this.warehouseList = res111.list;
-        // console.log('res=====', res);
-        // const info = JSON.parse(localStorage.getItem('info'));
         const info = await getLoginUser();
         let obj = res.find(
           (item) => item.id === info.deptId[info.deptId.length - 1]
         );
-        // console.log('obj=====', obj);
-        this.formData.extInfo.deptName = obj.name;
+        if (!obj) return;
         this.formData.extInfo.deptCode = obj.id;
+        this.formData.extInfo.deptName = obj.name;
         this.formData.extInfo.createUserName = info.name;
-        this.formData.createUserId = info.userId;
+        this.formData.createUserId = info.id;
       },
       addStock() {
         if (!this.title) return this.$message.error('请选择出库产品类型');

+ 24 - 7
src/views/bpm/handleTask/components/saleOrder/customerReturnGoods/repair-tabs-page.vue

@@ -16,6 +16,7 @@
       :taskDefinitionKey="taskDefinitionKey"
       :activeComp="activeComp"
       :businessId="businessId"
+      :infoData="{}"
       :permissionType="permissionType"
     />
   </div>
@@ -72,35 +73,51 @@
           {
             label: '内部生产物品入库',
             name: 'innerStoremanIn',
-            isOutOrIn: 'innerStore',
+            isOutOrIn: 'innerStore'
           },
           {
             label: '内部生产入库质检',
             name: 'innerInQC',
-            isOutOrIn: 'innerStore',
+            isOutOrIn: 'innerStore'
           },
           {
             label: '物品出库给外协',
             name: 'outerStoremanOut',
-            parentTabName:'outerStore',
-            isOutOrIn: 'outerStore',
+            parentTabName: 'outerStore',
+            isOutOrIn: 'outerStore'
           },
           {
             label: '外协返修物品入库',
             name: 'outerStoremanIn',
-            isOutOrIn: 'outerStore',
+            isOutOrIn: 'outerStore'
           },
           {
             label: '外协返修入库质检',
             name: 'outerInQC',
-            isOutOrIn: 'outerStore',
+            isOutOrIn: 'outerStore'
           }
         ];
         return list.filter((item) => item.isOutOrIn == this.activeComp);
       }
     },
     async created() {
-      this.activeName = this.taskDefinitionKey;
+      let innerStoreList = ['innerStoremanIn', 'innerInQC'];
+      let outerStoreList = ['outerStoremanOut', 'outerStoremanIn', 'outerInQC'];
+      if (this.activeComp === 'innerStore') {
+        // 内部处理流程
+        if (innerStoreList.includes(this.taskDefinitionKey)) {
+          this.activeName = this.taskDefinitionKey;
+        } else {
+          this.activeName = innerStoreList[0];
+        }
+      } else {
+        // 外部处理流程
+        if (outerStoreList.includes(this.taskDefinitionKey)) {
+          this.activeName = this.taskDefinitionKey;
+        } else {
+          this.activeName = outerStoreList[0];
+        }
+      }
     },
     async mounted() {
       setTimeout(() => {

+ 28 - 2
src/views/bpm/outgoingManagement/components/AssetsDialog.vue

@@ -55,7 +55,7 @@
               <el-select
                 style="width: 100%"
                 clearable
-                @change="changeDimension"
+                @change="changeDimensionHandler"
                 v-model="dimension"
                 placeholder="请选择"
               >
@@ -85,6 +85,24 @@
             ></el-input>
           </el-form-item>
         </el-col>
+        <el-col :span="6">
+          <el-form-item label="批次号">
+            <el-input
+              type="text"
+              placeholder="搜索物品批次号"
+              v-model="searchForm.batchNo"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="6">
+          <el-form-item label="刻码">
+            <el-input
+              type="text"
+              placeholder="搜索物品刻码"
+              v-model="searchForm.engrave"
+            ></el-input>
+          </el-form-item>
+        </el-col>
         <el-col style="text-align: right">
           <el-button type="primary" @click="doSearch">搜索</el-button>
           <el-button icon="el-icon-refresh-left" @click="reset">重置</el-button>
@@ -322,7 +340,9 @@
         },
         searchForm: {
           code: '',
-          name: ''
+          name: '',
+          batchNo: '',
+          engrave: ''
         },
         selectionList: [],
         materialType: '',
@@ -332,6 +352,10 @@
     },
     created() {},
     methods: {
+      changeDimensionHandler(e) {
+        this.pages.pageNum = 1;
+        this.changeDimension(e);
+      },
       async changeDimension(e, is) {
         // await this.$refs.multipleTable.clearSelection();
         // this.selectionList = [];
@@ -517,6 +541,8 @@
       reset() {
         this.searchForm.code = '';
         this.searchForm.name = '';
+        this.searchForm.batchNo = '';
+        this.searchForm.engrave = '';
         this.doSearch();
       },
       doSearch() {

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików