Przeglądaj źródła

修改包装和损耗的bug

695593266@qq.com 8 miesięcy temu
rodzic
commit
aadb4bc7c6

+ 14 - 0
src/api/produce/index.js

@@ -81,6 +81,20 @@ export async function checkOutsourceMaterial(data) {
   return Promise.reject(new Error(res.data.message));
 }
 
+//请托申请单
+export async function checkPleaseEntrust(data) {
+  const res = await request.get(
+    `/mes/please_entrust_management/checkPleaseEntrustMaterial`,
+    {
+      params: data
+    }
+  );
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
 export async function pdaTreeByPid(data) {
   const res = await request.get(`/api/main/asset/pdaPage`, { params: data });
   if (res.data.code == 0) {

+ 29 - 28
src/views/produce/components/common.js

@@ -1,29 +1,30 @@
 export const typeName = {
-  1: "物料",
-  2: "在制品",
-  3: "零部件",
-  4: "生产设备",
-  5: "模具",
-  6: "备品备件",
-  7: "周转车",
-  8: "舟皿",
-  9: "产品",
-  10: "消耗材料",
-  11: "干燥区",
-  12: "质检",
-  13: "包装材料",
-  14: "生产辅助设备",
-  15: "仪表计量设备",
-  16: "办公设备",
-  17: "客户",
-  18: "房屋、建筑物",
-  19: "供应商",
-  20: "工装夹具",
-  21: "半成品",
-  22: "会计科目",
-  23: "费用类型",
-  24: "周转盘",
-  25: "文档",
-  26: "废品",
-  99: "其他"
-}
+  1: '物料',
+  2: '在制品',
+  3: '零部件',
+  4: '生产设备',
+  5: '模具',
+  6: '备品备件',
+  7: '周转车',
+  8: '舟皿',
+  9: '产品',
+  10: '消耗材料',
+  11: '干燥区',
+  12: '质检',
+  13: '包装材料',
+  14: '生产辅助设备',
+  15: '仪表计量设备',
+  16: '办公设备',
+  17: '客户',
+  18: '房屋、建筑物',
+  19: '供应商',
+  20: '工装夹具',
+  22: '工装夹具',
+  23: '半成品',
+  24: '会计科目',
+  25: '费用类型',
+  26: '周转盘',
+  27: '文档',
+  28: '废品',
+  99: '其他'
+};

+ 18 - 8
src/views/produce/components/jobBooking/components/batchPackagingGrouping.vue

@@ -392,6 +392,7 @@
         splitList: [],
         localdataList: [],
         newDispositionList: [],
+        DispositionListes: [],
         withinQuantity: '', //内包装数量
         withinUnit: '', //内包装单位
         outsideQuantity: '', //外包装数量
@@ -943,12 +944,12 @@
           .catch(() => {});
       },
 
-      changeUserTypeOne() {
-        let list = this.localdataList.find((item) => item.value === e);
+      changeUserTypeOne(e) {
+        let list = this.localdataList.find((item) => item.value == e);
         // this.text = e.text;
         // this.value = e.value;
         this.selectList = list.arr;
-        this.initFn1(list.arr);
+        this.initData(list.arr);
       },
 
       checkUnpackProduction() {
@@ -983,7 +984,8 @@
             v.splitList = [];
           });
 
-          this.newDispositionList = res;
+          this.DispositionListes = res;
+          // this.newDispositionList = res;
 
           this.selectList = res;
           this.initData(this.localdataList[0].arr);
@@ -1058,6 +1060,7 @@
       },
 
       async listFn1(res) {
+        console.log(res, 'resres');
         let {
           minimumPackage,
           withinQuantity,
@@ -1077,14 +1080,21 @@
         this.withinPackage = withinPackage; // 内包装
         this.outsidePackage = outsidePackage; //外包装
 
+        console.log(arr);
+
+        console.log(this.DispositionListes, 'this.DispositionListes');
+        console.log(this.Usertype, 'this.Usertype');
+
+        this.newDispositionList = this.DispositionListes.filter(
+          (it) => it.code == this.Usertype && it.sort != '0'
+        );
+
+        console.log(this.newDispositionList, 'this.newDispositionList');
+
         this.newDispositionList.map((v, i) => {
           v.splitList = arr[i].list;
           v.titel = textList[i];
-          // if (i == 0) {
-          //   v.formedNumLast = this.formedNumLast;
-          // } else {
           v.formedNumLast = arr[i].num;
-          // }
         });
         this.$nextTick(() => {
           this.newDispositionList.forEach((item, index) => {

+ 1 - 1
src/views/produce/components/jobBooking/components/batchSemiProductJobBom.vue

@@ -1587,7 +1587,7 @@
       },
 
       async getLossParam() {
-        if (this.lossForm.quantity && this.lossForm.batchNo) {
+        if (this.lossForm.quantity) {
           if (
             Number(this.lossData.feedQuantity) < Number(this.lossForm.quantity)
           ) {

+ 34 - 27
src/views/produce/components/outsourcing/index.vue

@@ -7,7 +7,7 @@
       </el-tabs> -->
       <div class="c_title">委外记录</div>
     </div>
-    <div style="overflow: auto">
+    <div style="overflow: auto" v-if="activeName == '1'">
       <el-form
         label-width="100px"
         :rules="rules"
@@ -190,7 +190,13 @@
         </el-form-item>
 
         <el-form-item label="请托类型:" prop="type">
-          <el-select
+          <DictSelection
+            dictName="请托类型"
+            v-model="attributeData.type"
+            style="width: 260px"
+          ></DictSelection>
+
+          <!-- <el-select
             v-model="attributeData.type"
             placeholder="请选择"
             style="width: 260px"
@@ -202,7 +208,7 @@
               :value="item.id"
             >
             </el-option>
-          </el-select>
+          </el-select> -->
         </el-form-item>
         <el-form-item label="请托数量:" prop="formedNumLast">
           <el-input
@@ -476,13 +482,13 @@
     mounted() {
       this.getContactList();
       this.getFactoryList();
-      // if (this.activeName == '1') {
-      //   // this.attributeData.name = this.outsourceFormVal.name + '委托';
-      //   this.$set(this.outsourceFormVal, 'name', this.taskName + '委托');
-      // } else if (this.activeName == '2') {
-      //   // this.attributeData.name = this.outsourceFormVal.name + '请托';
-      //   this.$set(this.outsourceFormVal, 'name', this.taskName + '请托');
-      // }
+      if (this.activeName == '1') {
+        this.attributeData.name = this.outsourceFormVal.name + '委托';
+        // this.$set(this.outsourceFormVal, 'name', this.taskName + '委托');
+      } else if (this.activeName == '2') {
+        this.attributeData.name = this.outsourceFormVal.name + '请托';
+        // this.$set(this.outsourceFormVal, 'name', this.taskName + '请托');
+      }
     },
 
     methods: {
@@ -620,25 +626,26 @@
       confirm() {
         this.$refs.form.validate((valid) => {
           if (valid) {
-            // if (this.activeName == '1') {
-            if (this.attributeData.supplierId) {
-              const obj = this.gysList.find(
-                (item) => item.id === this.attributeData.supplierId
+            if (this.activeName == '1') {
+              if (this.attributeData.supplierId) {
+                const obj = this.gysList.find(
+                  (item) => item.id === this.attributeData.supplierId
+                );
+                this.attributeData.supplierName = obj ? obj.name : '';
+              }
+              this.attributeData.taskIds =
+                this.attributeData.taskIdes.join(',');
+              this.$emit('changePlugIn', this.attributeData, this.activeName);
+            } else if (this.activeName == '2') {
+              const obj = this.factoryList.find(
+                (item) => item.id === this.attributeData.factoriesId
               );
-              this.attributeData.supplierName = obj ? obj.name : '';
+              this.attributeData.factoriesName = obj ? obj.name : '';
+              this.attributeData.taskIds =
+                this.attributeData.taskIdes.join(',');
+              console.log(this.attributeData);
+              this.$emit('changePlugIn', this.attributeData, this.activeName);
             }
-            this.attributeData.taskIds = this.attributeData.taskIdes.join(',');
-            this.$emit('changePlugIn', this.attributeData, this.activeName);
-            // } else if (this.activeName == '2') {
-            //   const obj = this.factoryList.find(
-            //     (item) => item.id === this.attributeData.factoriesId
-            //   );
-            //   this.attributeData.factoriesName = obj ? obj.name : '';
-            //   this.attributeData.taskIds =
-            //     this.attributeData.taskIdes.join(',');
-            //   console.log(this.attributeData);
-            //   this.$emit('changePlugIn', this.attributeData, this.activeName);
-            // }
           } else {
             console.log('error submit!!');
             return false;

+ 981 - 0
src/views/produce/components/outsourcing/pleaseEntrust.vue

@@ -0,0 +1,981 @@
+<template>
+  <!-- 委外下一步 -->
+  <div class="card">
+    <div class="c_header_title">
+      <div class="c_title">请托记录</div>
+    </div>
+    <div class="card_box">
+      <el-descriptions>
+        <el-descriptions-item label="请托名称">{{
+          outObj.name
+        }}</el-descriptions-item>
+        <el-descriptions-item label="请托类型">
+          <template>
+            <DictSelection
+              dictName="请托类型"
+              v-model="attributeData.type"
+            ></DictSelection>
+          </template>
+        </el-descriptions-item>
+        <!-- <el-descriptions-item label="直接入库">{{ outObj.isInWarehouse == 1 ? '是' : '否' }}</el-descriptions-item> -->
+        <el-descriptions-item label="直接入库">{{ '是' }}</el-descriptions-item>
+      </el-descriptions>
+    </div>
+    <el-tabs v-model="activeName">
+      <el-tab-pane label="物品清单" name="0">
+        <div class="materialList">
+          <div class="u-reset">
+            <el-button
+              type="primary"
+              size="small"
+              class="u-reset-button"
+              @click="openPicking(2, 'goods')"
+              v-if="clientEnvironmentId == 3"
+            >
+              添加
+            </el-button>
+          </div>
+          <!--  <div class="u-reset" style="display: flex;" v-if="clientEnvironmentId != 2">
+						<el-checkbox color="#fff" v-model="checkedAll" :checked="seletedAll" @change="_seletedAll">全选
+						</el-checkbox>
+						<div class="gxList">勾选:<span style="color: #157A2C">{{ checkListLen || 0 }}个</span></div>
+					</div>
+						<div v-for="(item, index) in pickOutInList" :key="index">
+							<div class="listBox rx-bs">
+
+								<div class="listBox-sel">
+									<el-checkbox  v-model="item.checked" color="#fff"
+										@change="e => selectVal(e, item, index)"
+										v-if='(item.rootCategoryLevelId != 11 || (item.rootCategoryLevelId == 11 && item.status != 1)) && clientEnvironmentId != 2'
+										 >
+										 </el-checkbox>
+
+								</div>
+
+								<div class="listBox-con">
+									<div class="listBox-top rx-bc">
+										<div> {{ item.name }}</div>
+										<div class="code">
+											{{ item.rootCategoryLevelId == 4 ? item.codeNumber : item.code }}
+										</div>
+									</div>
+
+									<div class="listBox-bottom rx">
+										<div v-for="(itm, index) in tableH(item.rootCategoryLevelId)" :key="index"
+											class="items" v-if="!itm.formatter">
+											<span>{{ itm.label }}</span>{{ item[itm.prop] }}
+										</div>
+
+
+
+
+										<div class="items"
+											v-if='(item.rootCategoryLevelId == 1 && item.isConsumable == 1) && item.rootCategoryLevelId != 11 && item.rootCategoryLevelId != 4'>
+											<span>可用库存:</span>{{ item.availableCountBase }} {{ item.unit }}
+										</div>
+
+
+										<div class="items"
+											v-if='([1, 2, 9, 23].includes(Number(item.rootCategoryLevelId)) && item.isConsumable == 0)'>
+											<span>刻码:</span>{{ item.extInfo.engrave }}
+										</div>
+
+
+										<div class="items"
+											v-if='([1, 2, 9, 23].includes(Number(item.rootCategoryLevelId)) && item.isConsumable == 0)'>
+											<span>物料代号:</span>{{ item.extInfo.materielCode }}
+										</div>
+
+
+										<div class="items"
+											v-if='([1, 2, 9, 23].includes(Number(item.rootCategoryLevelId)) && item.isConsumable == 0)'>
+											<span>客户代号:</span>{{ item.extInfo.clientCode }}
+										</div>
+
+
+										<div class="items" style="width: 15%;"
+											v-if='([1, 2, 9, 23].includes(Number(item.rootCategoryLevelId)) && item.isConsumable == 0)'>
+											<span>重量:</span>{{ item.extInfo.newWeight }} {{ item.extInfo.weightUnit }}
+										</div>
+
+
+										<div class="items" style="width: 15%;"
+											v-if='([1, 2, 9, 23].includes(Number(item.rootCategoryLevelId)) && item.isConsumable == 1)'>
+											<span>数量:</span>{{ item.feedQuantity }}
+										</div>
+
+										<div class="items" style="width: 15%;"
+											v-if='([1, 2, 9, 23].includes(Number(item.rootCategoryLevelId)) && item.isConsumable == 1)'>
+											<span>重量:</span>{{ item.weight || 0 }} {{ item.weightUnit }}
+										</div>
+
+										<div class="items"
+											v-if='([1, 2, 9, 23].includes(Number(item.rootCategoryLevelId)) && item.isConsumable == 1)'>
+											<span>规格:</span> {{ item.specification }}
+										</div>
+
+										<div class="items"
+											v-if='([1, 2, 9, 23].includes(Number(item.rootCategoryLevelId)) && item.isConsumable == 1)'>
+											<span>型号:</span> {{ item.modelType }}
+										</div>
+
+									</div>
+
+								</div>
+							</div>
+						</div> -->
+
+          <el-table
+            ref="pickOutRef"
+            class="table_content"
+            :max-height="600"
+            :data="pickOutInList"
+            tooltip-effect="dark"
+            style="width: 100%; margin-top: 10px"
+            stripe
+            border
+            @selection-change="selectionPickOut"
+          >
+            <el-table-column align="center" type="selection" width="55">
+            </el-table-column>
+            <el-table-column label="序号" type="index" width="55">
+              <template slot-scope="{ row, $index }">
+                {{ $index + 1 }}
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              label="编码"
+              type="code"
+              minWidth="110"
+              show-overflow-tooltip
+            >
+              <template slot-scope="{ row, $index }">
+                {{ row.categoryCode }}
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="名称"
+              type="name"
+              minWidth="110"
+              show-overflow-tooltip
+            >
+              <template slot-scope="{ row, $index }">
+                {{ row.name }}
+                <!-- ({{
+							row.rootCategoryLevelId == 2
+							? '在制品'
+							: row.rootCategoryLevelId == 23
+							? '半成品'
+							: row.rootCategoryLevelId == 9
+							? '产品'
+							: item.rootCategoryLevelId == 28
+							? '废品'
+							: ''
+						}}) -->
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              label="型号"
+              type="modelType"
+              show-overflow-tooltip
+            >
+              <template slot-scope="{ row, $index }">
+                {{ row.modelType }}
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              label="规格"
+              type="specification"
+              show-overflow-tooltip
+            >
+              <template slot-scope="{ row, $index }">
+                {{ row.specification }}
+              </template>
+            </el-table-column>
+
+            <el-table-column label="牌号" type="brandNum" show-overflow-tooltip>
+              <template slot-scope="{ row, $index }">
+                {{ row.brandNum }}
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              label="数量"
+              type="feedQuantity"
+              show-overflow-tooltip
+            >
+              <template slot-scope="{ row, $index }">
+                <el-input
+                  v-model="row.feedQuantity"
+                  v-if="row.isSelection == '1'"
+                  @input="inputNum(row, $index)"
+                ></el-input>
+                <span v-else> {{ row.feedQuantity }}</span>
+              </template>
+              <!-- <template slot-scope="{ row, $index }" v-else>
+                {{ row.feedQuantity }}
+              </template> -->
+            </el-table-column>
+
+            <el-table-column
+              label="重量"
+              type="weightUnit"
+              width="120"
+              show-overflow-tooltip
+            >
+              <template slot-scope="{ row, $index }">
+                {{ row.newWeight || 0 }} {{ row.weightUnit }}
+              </template>
+            </el-table-column>
+            <el-table-column label="刻码" type="engrave" show-overflow-tooltip>
+              <template slot-scope="{ row, $index }">
+                {{ row.extInfo.engrave }}
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              label="物料代号"
+              type="materielCode"
+              show-overflow-tooltip
+            >
+              <template slot-scope="{ row, $index }">
+                {{ row.extInfo.materielCode }}
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="客户代号"
+              type="clientCode"
+              show-overflow-tooltip
+            >
+              <template slot-scope="{ row, $index }">
+                {{ row.extInfo.clientCode }}
+              </template>
+            </el-table-column>
+
+            <el-table-column label="操作" show-overflow-tooltip fixed="right">
+              <template slot-scope="{ row, $index }">
+                <el-button type="text" @click="deleteData(row, $index)"
+                  >删除</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </el-tab-pane>
+      <el-tab-pane label="带料清单" name="1">
+        <div class="materialList">
+          <div class="u-reset">
+            <el-button
+              type="primary"
+              size="small"
+              class="u-reset-button"
+              @click="openPicking(2, 'belting')"
+            >
+              添加
+            </el-button>
+          </div>
+
+          <div v-for="(item, index) in bomMaterialList" :key="index">
+            <label class="listBox rx-bs">
+              <div class="listBox-con">
+                <div class="listBox-bottom rx">
+                  <div class="items"> <span>序号</span>{{ index + 1 }} </div>
+                  <div class="items" :title="item.name">
+                    <span>名称</span>{{ item.name }}
+                  </div>
+
+                  <div class="items" :title="item.code">
+                    <span>编码</span>{{ item.code }}
+                  </div>
+
+                  <div
+                    v-for="(itm, index) in tableH(item.rootCategoryLevelId)"
+                    :key="index"
+                    class="items"
+                    v-if="!itm.formatter"
+                  >
+                    <span>{{ itm.label }}</span
+                    >{{ item[itm.prop] }}
+                  </div>
+
+                  <div
+                    class="items"
+                    v-if="item.isDemandQuantity && clientEnvironmentId != 2"
+                    style="width: 15%"
+                  >
+                    <span>数量</span
+                    >{{
+                      checkListLen == 0
+                        ? item.demandQuantity
+                        : item.count * (checkListLen || 1)
+                    }}
+                    {{ item.unit }}
+                  </div>
+                  <div
+                    class="items content_num"
+                    v-if="!item.isDemandQuantity && clientEnvironmentId != 2"
+                    style="width: 15%"
+                  >
+                    <span>数量</span>
+                    <input
+                      style="width: 90% !important"
+                      v-model="item.demandQuantity"
+                    />
+                    {{ item.measuringUnit }}
+                  </div>
+
+                  <div
+                    class="items"
+                    v-if="item.isDemandQuantity && clientEnvironmentId == 2"
+                    style="width: 15%"
+                  >
+                    <span>数量</span
+                    >{{ item.count * (outObj.formedNumLast || 1) }}
+                  </div>
+                  <div
+                    class="items content_num"
+                    v-if="!item.isDemandQuantity && clientEnvironmentId == 2"
+                    style="width: 15%"
+                  >
+                    <span>数量</span>
+                    <input
+                      style="width: 90% !important"
+                      v-model="item.demandQuantity"
+                    />
+                    {{ item.measuringUnit }}
+                  </div>
+
+                  <div v-if="clientEnvironmentId == 3">
+                    <el-button type="text" @click="convertList(item, index)"
+                      >转物品清单</el-button
+                    >
+
+                    <el-button
+                      type="text"
+                      style="color: red"
+                      @click="deleteBomMaterial(item, index)"
+                      >删除</el-button
+                    >
+                  </div>
+                </div>
+              </div>
+            </label>
+          </div>
+        </div>
+      </el-tab-pane>
+      <el-tab-pane label="产出清单" name="2">
+        <div class="materialList">
+          <div class="u-reset">
+            <el-button
+              type="primary"
+              size="small"
+              class="u-reset-button"
+              @click="openPicking(3, 'output')"
+            >
+              添加
+            </el-button>
+          </div>
+          <div v-for="(item, index) in standardOutputList" :key="index">
+            <label class="listBox rx-bs">
+              <div class="listBox-con">
+                <div class="listBox-bottom rx">
+                  <div class="items" style="width: 15%">
+                    <span>序号</span>{{ index + 1 }}
+                  </div>
+                  <div class="items"> <span>名称</span>{{ item.name }} </div>
+
+                  <div class="items"> <span>编码</span>{{ item.code }} </div>
+
+                  <div
+                    v-for="(itm, index) in tableH(item.rootCategoryLevelId)"
+                    :key="index"
+                    class="items"
+                    v-if="!itm.formatter"
+                  >
+                    <span>{{ itm.label }}</span
+                    >{{ item[itm.prop] }}
+                  </div>
+
+                  <div class="items content_num">
+                    <span>数量</span>
+                    <input
+                      style="width: 30% !important"
+                      v-model="item.demandQuantity"
+                    />
+                  </div>
+
+                  <div>
+                    <el-button
+                      type="text"
+                      @click="deleteOutput(index)"
+                      style="color: red"
+                      >删除</el-button
+                    >
+                  </div>
+                </div>
+              </div>
+            </label>
+          </div>
+        </div>
+      </el-tab-pane>
+    </el-tabs>
+
+    <div class="operate_box">
+      <el-button
+        size="small"
+        class="u-reset-button"
+        @click="close"
+        style="margin-left: 10px"
+      >
+        取消
+      </el-button>
+      <el-button
+        type="primary"
+        size="small"
+        class="u-reset-button"
+        @click="handOK(0)"
+      >
+        确认
+      </el-button>
+
+      <el-button
+        type="primary"
+        size="small"
+        class="u-reset-button"
+        @click="handOK(1)"
+      >
+        提交
+      </el-button>
+    </div>
+
+    <pickingList
+      ref="pickingListRef"
+      isType="weiwai"
+      @allSelection="allSelection"
+    ></pickingList>
+  </div>
+</template>
+
+<script>
+  import {
+    // 	checkOutsourceMaterial,
+    applyoutsourceSave
+    // 	getWarehouseList
+  } from '@/api/produce/index.js';
+
+  import { tableHeader } from '@/utils/dict/common.js';
+  // import {
+  // 	EventBus
+  // } from '@/utils/eventBus.js'
+  import pickingList from './pickingList.vue';
+  export default {
+    components: { pickingList },
+    data() {
+      return {
+        checkListLen: 0,
+        checkedAll: true,
+        checkList: [],
+        mode: 'center',
+        show: false,
+        topHight: 20 || 20,
+        activeName: '0',
+        outObj: {
+          name: '111',
+          type: 4,
+          isInWarehouse: 1
+        },
+
+        tabList: [
+          {
+            name: '物品清单'
+          },
+          {
+            name: '带料清单'
+          },
+          {
+            name: '产出清单'
+          }
+        ],
+
+        actTab: '物品清单',
+        datapickOutInList: [],
+        bomMaterialList: [],
+        pickOutInList: [],
+        materialList: [],
+        standardOutputList: [],
+
+        isFirstTask: null,
+        isLoading: null,
+
+        // clientEnvironmentId: uni.getStorageSync("userInfo") && uni.getStorageSync("userInfo")
+        // 	.clientEnvironmentId, // *1 主环境-601环境   2 soll-索尔环境    3 tg-碳谷环境
+
+        seletedAll: false, //全选状态
+        checkListLen: 0,
+
+        warehouseList: [],
+        pickOutInListSelect: [],
+        selectionIds: []
+      };
+    },
+
+    created() {
+      // EventBus.$on('outEvent', this.handleEvent);
+      // this.outsourceMaterialFn()
+    },
+
+    computed: {
+      clientEnvironmentId() {
+        return this.$store.state.user.info.clientEnvironmentId;
+      }
+    },
+
+    props: {
+      outsourceFormVal: {
+        type: Object,
+        default: () => {}
+      }
+    },
+    watch: {
+      outsourceFormVal: {
+        handler(val) {
+          console.log(val, 'outsourceFormVal');
+          this.outsourceMaterialFn(val);
+          this.outObj = val;
+        },
+        deep: true,
+        immediate: true
+      }
+    },
+
+    methods: {
+      // open(obj) {
+      // 	// this.outObj = obj;
+      // 	this.actTab = '物品清单';
+      // 	// this.outsourceMaterialFn()
+      // 	// this.getWarehouseFn()
+      // },
+      allSelection(e, item, type) {
+        if (e == 2) {
+          if (type == 'goods') {
+            item.map((it) => {
+              it.isSelection = '1';
+              it.categoryCode = it.code;
+              it.feedQuantity = 1;
+              it.categoryId = it.id;
+              it.newWeight = it.weight;
+              this.pickOutInList.push(this.deepCopy(it));
+            });
+            this.selectionData();
+          } else {
+            if (item.length) {
+              item.map((v) => {
+                this.bomMaterialList.push(v);
+              });
+            }
+          }
+        } else if (e == 3) {
+          if (item.length) {
+            this.standardOutputList = item;
+          }
+        }
+      },
+
+      // selectionData(ids) {
+      //   this.$nextTick(() => {
+      //     this.tableData.forEach((row) => {
+      //       if (ids.includes(row.id)) {
+      //         this.$refs.table.toggleRowSelection(row, true);
+      //       }
+      //     });
+      //   });
+      // },
+
+      deepCopy(obj, hash = new WeakMap()) {
+        if (obj === null) return null;
+        if (obj instanceof Date) return new Date(obj);
+        if (obj instanceof RegExp) return new RegExp(obj);
+        if (typeof obj !== 'object' && typeof obj !== 'function') return obj;
+        if (hash.has(obj)) return hash.get(obj);
+
+        const result = Array.isArray(obj) ? [] : {};
+        hash.set(obj, result);
+
+        return Object.keys(obj).reduce((acc, key) => {
+          acc[key] = this.deepCopy(obj[key], hash);
+          return acc;
+        }, result);
+      },
+
+      openPicking(id, type) {
+        this.$refs.pickingListRef.open(id, type);
+      },
+
+      outsourceMaterialFn(res) {
+        let _arr = [];
+        _arr = [...res.pickOutInList, ...res.materialList];
+
+        this.pickOutInList = _arr.reduce((acc, item) => {
+          const existingItem = acc.find((existing) => existing.id === item.id);
+          if (!existingItem) {
+            item.isSelection = '2';
+            acc.push(item);
+          }
+          return acc;
+        }, []);
+
+        this.bomMaterialList = res.bomMaterialList.map((m) => {
+          return {
+            ...m,
+            isDemandQuantity: true
+          };
+        });
+
+        this.pickOutInList.map((v) => {
+          v.checked = true;
+        });
+
+        this.checkListLen = this.pickOutInList.length;
+
+        this.standardOutputList = res.standardOutputList;
+
+        // let param = {
+        // 	taskId: this.outObj.taskId,
+        // 	taskIds: this.outObj.taskIds,
+        // 	workOrderId: this.outObj.workOrderId
+
+        // }
+        // checkOutsourceMaterial(param).then(res => {
+
+        // 	let _arr = []
+        // 	_arr = [...res.pickOutInList, ...res.materialList]
+        // 	this.pickOutInList = _arr.reduce((acc, item) => {
+        // 		const existingItem = acc.find(existing => existing.id === item.id);
+        // 		if (!existingItem) {
+        // 			acc.push(item);
+        // 		}
+        // 		return acc;
+        // 	}, []);
+
+        // 	this.bomMaterialList = res.bomMaterialList.map((m) => {
+        // 		return {
+        // 			...m,
+        // 			isDemandQuantity: true
+
+        // 		}
+        // 	})
+        // 	this.standardOutputList = res.standardOutputList
+        // 	this.$forceUpdate()
+        // })
+        this.$nextTick(() => {
+          this.$refs.pickOutRef.toggleAllSelection();
+        });
+      },
+
+      inputNum(item, index) {
+        if (item.feedQuantity) {
+          const totalWeight = Number(item.feedQuantity) * Number(item.weight);
+          this.$set(this.pickOutInList[index], 'newWeight', totalWeight);
+          this.$forceUpdate();
+        } else {
+          this.$set(this.pickOutInList[index], 'newWeight', item.weight);
+          this.$forceUpdate();
+        }
+      },
+
+      // 仓库
+      getWarehouseFn() {
+        getWarehouseList().then((res) => {
+          this.warehouseList = res;
+        });
+      },
+
+      deleteData(item, index) {
+        this.pickOutInList.splice(index, 1);
+      },
+
+      handTab(item) {
+        this.actTab = item.name;
+      },
+      //关闭弹窗
+      close() {
+        this.$emit('closeForm');
+      },
+
+      handleEvent({ message }) {
+        if (message.pid == 3) {
+          this.standardOutputList = message.memoList;
+        } else {
+          if (message.pid == 2) {
+            this.bomMaterialList = message.memoList;
+          }
+        }
+      },
+
+      tableH(type) {
+        return tableHeader(type);
+      },
+      //勾选
+      selectVal(e, val, index) {
+        this.$forceUpdate();
+        this.pickOutInList[index] = val;
+        this.$set(this, 'pickOutInList', this.pickOutInList);
+
+        this.checkListLen = this.pickOutInList.filter(
+          (f) => f.checked == true
+        ).length;
+      },
+
+      _seletedAll() {
+        console.log(this.seletedAll, this.pickOutInList, 'this.seletedAll');
+        // this.seletedAll true 是全选
+
+        if (!this.seletedAll) {
+          // 非全选
+          this.seletedAll = true;
+          this.checkListLen = 0;
+
+          this.pickOutInList.map((item) => {
+            item.checked = false;
+          });
+
+          this.$set(this, 'pickOutInList', this.pickOutInList);
+        } else {
+          this.seletedAll = false;
+
+          this.pickOutInList.map((item) => {
+            item.checked = true;
+          });
+          this.$set(this, 'pickOutInList', this.pickOutInList);
+        }
+        this.checkListLen = this.pickOutInList.filter(
+          (f) => f.checked == true
+        ).length;
+      },
+      selectionPickOut(val) {
+        this.pickOutInListSelect = val;
+      },
+
+      deleteOutput(index) {
+        this.standardOutputList.splice(index, 1);
+      },
+
+      deleteBomMaterial(item, index) {
+        this.bomMaterialList.splice(index, 1);
+      },
+
+      convertList(item, index) {
+        if (item.demandQuantity) {
+          item.categoryCode = item.code;
+          item.feedQuantity = item.demandQuantity;
+          item.isSelection = '1';
+          item.categoryId = item.id;
+          item.newWeight = item.weight;
+          this.pickOutInList.push(this.deepCopy(item));
+          this.selectionData();
+          this.bomMaterialList.splice(index, 1);
+          this.$forceUpdate();
+        } else {
+          return this.$message({
+            message: '请输入转换数量',
+            type: 'warning'
+          });
+        }
+      },
+
+      selectionData() {
+        this.$nextTick(() => {
+          this.$refs.pickOutRef.toggleAllSelection();
+        });
+      },
+
+      scrolltolower() {},
+
+      addPicking(id) {
+        const storageKey = Date.now() + '';
+        let arr = null;
+        if (id == 3) {
+          arr = [
+            {
+              standardOutputList: this.standardOutputList
+            }
+          ];
+        } else {
+          arr = [
+            {
+              bomMaterialList: this.bomMaterialList
+            }
+          ];
+        }
+
+        // uni.setStorageSync(storageKey, arr);
+        // uni.navigateTo({
+        // 	url: `/pages/pda/workOrder/search/index?id=${id}&storageKey=${storageKey}&isType=zdy&taskId=${this.outObj.taskId}&classIds=[1,23,9]`
+        // })
+      },
+
+      handOK(isRelease) {
+        // isRelease? 0 提交 2提交并发布
+
+        if (this.checkListLen > 0 && !this.outObj.warehouseId) {
+          return this.$message({
+            message: '请选择仓库',
+            type: 'warning'
+          });
+        }
+
+        // 环境判断
+        let _pickOutInList = [];
+
+        if (this.clientEnvironmentId == 2) {
+          _pickOutInList = this.pickOutInList;
+        } else {
+          // _pickOutInList = this.pickOutInList.filter(f => f.checked == true)
+          _pickOutInList = this.pickOutInListSelect;
+        }
+
+        for (let i = 0; i < _pickOutInList.length; i++) {
+          if (
+            !_pickOutInList[i].feedQuantity &&
+            _pickOutInList[i].isSelection == '1'
+          ) {
+            this.$message.warning('物品数量不能为空');
+            return;
+          }
+        }
+
+        let param = {
+          ...this.outObj,
+          isRelease: isRelease,
+          bomMaterialList: this.bomMaterialList,
+          pickOutInList: _pickOutInList,
+          materialList: this.materialList,
+          standardOutputList: this.standardOutputList
+        };
+
+        this.isLoading = this.$loading({
+          lock: true,
+          text: '加载中',
+          background: 'rgba(0, 0, 0, 0.7)'
+        });
+
+        applyoutsourceSave(param)
+          .then((res) => {
+            this.$emit('outScucc');
+            this.isLoading.close();
+            return this.$message({
+              message: '提交成功',
+              type: 'scuccess'
+            });
+            this.checkListLen = 0;
+          })
+          .catch(() => {
+            this.isLoading.close();
+          });
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .c_header_title {
+    display: flex;
+    align-items: center;
+    margin-bottom: 0;
+    height: 58px;
+    margin-bottom: 10px;
+    box-sizing: border-box;
+    border-bottom: 1px solid var(--border-color-lighter);
+  }
+
+  .operate_box {
+    display: flex;
+    flex-direction: row-reverse;
+    padding: 15px;
+    box-shadow: 0px -2px 15px 0px rgba(0, 0, 0, 0.1);
+  }
+
+  .c_title {
+    color: #157a2c;
+    font-size: 16px;
+    font-weight: bold;
+  }
+
+  .materialList {
+    height: 50vh;
+    overflow: auto;
+  }
+
+  .card {
+    width: 100%;
+    padding: 0 20px;
+  }
+
+  .u-reset {
+    width: 100%;
+    padding: 5px;
+    text-align: right;
+  }
+
+  .listBox-con {
+    width: 100%;
+  }
+  .gxList {
+    margin-left: 10px;
+  }
+
+  .listBox-sel {
+    margin: 0 10px;
+  }
+
+  .listBox-top {
+    display: flex;
+    padding: 15px;
+    font-size: 14px;
+    font-weight: bold;
+    border-bottom: 1px solid #ddd;
+  }
+
+  .listBox-bottom {
+    display: flex;
+    width: 100%;
+    flex-wrap: wrap;
+    margin-bottom: 0;
+  }
+
+  .listBox {
+    display: flex;
+    align-items: center;
+    border: 1px solid #ddd;
+    margin-bottom: 20px;
+  }
+
+  .items {
+    font-size: 12px;
+    width: 25%;
+    display: flex;
+    align-items: center;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+
+    // border: 1px solid #ddd;
+    // border-bottom: 1px solid #ddd;
+    // border-right: 0;
+    span {
+      display: block;
+      padding: 10px;
+      margin-right: 5px;
+      color: #157a2c;
+      background-color: #f7f9fa;
+    }
+  }
+
+  ::v-deep .el-input--medium .el-input__inner {
+    height: 26px;
+    line-height: 26px;
+  }
+</style>

+ 10 - 3
src/views/produce/components/picking/outsourceIndex.vue

@@ -149,7 +149,7 @@
                         : row.demandQuantity
                     "
                     size="mini"
-                    style="width: 130px"
+                    style="width: 120px"
                   >
                     <template slot="append">{{ row.unit }}</template>
                   </el-input>
@@ -409,7 +409,7 @@
         res.map((ritem) => {
           this.workList.map((item) => {
             item.pickList.map((pitem, index) => {
-              if (pitem.warehouseId == ritem.warehouseId) {
+              if (pitem.warehouseName == ritem.warehouseName) {
                 // pitem.availableCountBase = ritem.availableCountBase;
                 this.$set(
                   this.workList[0].pickList[index],
@@ -444,7 +444,8 @@
           let param = {
             outsourceOrder: list || [],
             workOrderId: this.workListIds[0],
-            taskId: this.taskObj.id
+            taskId: this.taskObj.id,
+            isPC: 1
           };
           listOutsourceInWarehouse(param).then((res) => {
             let indexList = [];
@@ -568,6 +569,12 @@
           };
         });
         this.loadingBtn = true;
+
+        if (_arr.length != 0) {
+          _arr.forEach((it) => {
+            it.isOutsource = 1;
+          });
+        }
         // if (this.clientEnvironmentId == 21) {
         //   let param = {
         //     workOrderId: this.workListIds[0],

+ 2 - 4
src/views/produce/components/picking/outsourcingPickingList.vue

@@ -69,9 +69,7 @@
         </template>
 
         <template v-slot:batchNo="{ row, $index }">
-          <span v-if="row.batchNo && row.deliveryMethod == 2">{{
-            row.batchNo
-          }}</span>
+          <span v-if="row.batchNo">{{ row.batchNo }}</span>
         </template>
 
         <template v-slot:requireDeliveryTime="{ row, $index }">
@@ -250,7 +248,7 @@
             _arr.push({
               id: item.id,
               code: item.code,
-              batchNo: item.batchNo
+              batchNo: item.batchNo,
             });
           });
           this.$emit('outsourceEmit', _arr);

+ 6 - 6
src/views/produce/components/warehousing/index.vue

@@ -114,7 +114,7 @@
               </div>
             </div>
 
-            <div>
+            <!-- <div>
               <div class="text">入库规格</div>
               <div class="select-type">
                 <el-select
@@ -134,7 +134,7 @@
                   ></el-option>
                 </el-select>
               </div>
-            </div>
+            </div> -->
           </div>
           <!-- <div style="margin-top: 6px">
             <el-select
@@ -260,7 +260,7 @@
               </div>
             </div>
 
-            <div>
+            <!-- <div>
               <div class="text">入库规格</div>
               <div class="select-type">
                 <el-select
@@ -280,7 +280,7 @@
                   ></el-option>
                 </el-select>
               </div>
-            </div>
+            </div> -->
           </div>
 
           <!-- <div v-for="(it, idx) in item.toWarehouseList" :key="idx"> -->
@@ -365,7 +365,7 @@
               </div>
             </div>
 
-            <div>
+            <!-- <div>
               <div class="text">入库规格</div>
               <div class="select-type">
                 <el-select
@@ -385,7 +385,7 @@
                   ></el-option>
                 </el-select>
               </div>
-            </div>
+            </div> -->
           </div>
           <!-- <div style="margin-top: 6px">
             <el-select

+ 46 - 20
src/views/produce/index.vue

@@ -236,7 +236,7 @@
                 <outsourcingDetails
                   ref="outsourcingListRef"
                   @outsourcingAdd="outsourcingAdd"
-                  v-if="!isStep && !isOutsource"
+                  v-if="!isStep && !isOutsource && !isPleaseEntrust"
                 ></outsourcingDetails>
                 <outsourcing
                   :outsourceFormVal="outsourceForm"
@@ -253,6 +253,13 @@
                   @outScucc="outScucc"
                   v-if="isOutsource"
                 ></outsourceList>
+
+                <pleaseEntrust
+                  :outsourceFormVal="outObj"
+                  @closeForm="closeForm"
+                  @outScucc="outScucc"
+                  v-if="isPleaseEntrust"
+                ></pleaseEntrust>
               </div>
 
               <!-- <div class="menu-container">
@@ -348,6 +355,7 @@
   import workes from './components/workPlan/components/work.vue';
   import warehousing from './components/warehousing/index.vue';
   import outsourceList from './components/outsourcing/outsourceList.vue';
+  import pleaseEntrust from './components/outsourcing/pleaseEntrust.vue';
   import workStep from './components/workStep/index.vue';
   import createError from './components/createError.vue';
   import device from './components/device/index.vue';
@@ -364,7 +372,8 @@
     factoryworkstationPage,
     nextTask,
     singleListTask,
-    pleaseEntrustManagement
+    pleaseEntrustManagement,
+    checkPleaseEntrust
   } from '@/api/produce/index';
   import prenatalExamination from './components/prenatalExamination/index.vue';
 
@@ -392,7 +401,8 @@
       turnover,
       outsourcingDetails,
       BomDetailsPop,
-      prenatalExamination
+      prenatalExamination,
+      pleaseEntrust
     },
     data() {
       return {
@@ -420,6 +430,7 @@
         wokePopup: false,
         workPlanType: '',
         isOutsource: false,
+        isPleaseEntrust: false,
         BomObj: {},
         defaultProps: {
           children: 'children',
@@ -678,6 +689,7 @@
 
       closeForm() {
         this.isOutsource = false;
+        // this.isPleaseEntrust = false;
         this.$nextTick(() => {
           this.$refs.outsourcingListRef.getDataList(this.workData.list[0].code);
         });
@@ -685,6 +697,7 @@
       outScucc() {
         // this.operationType = null;
         this.isOutsource = false;
+        // this.isPleaseEntrust = false;
         this.$nextTick(() => {
           this.$refs.outsourcingListRef.getDataList(this.workData.list[0].code);
         });
@@ -692,27 +705,39 @@
 
       // 切换组件
       async changePlugIn(e, index) {
-        // if (index == '1') {
-        this.outObj = e;
-        let req = {
-          taskId: e.taskId,
-          taskIds: e.taskIds,
-          workOrderId: e.workOrderId,
-          quantity: e.formedNumLast
-        };
-        const res = await checkOutsourceMaterial(req);
+        if (index == '1') {
+          this.outObj = e;
+          let req = {
+            taskId: e.taskId,
+            taskIds: e.taskIds,
+            workOrderId: e.workOrderId,
+            quantity: e.formedNumLast
+          };
+          const res = await checkOutsourceMaterial(req);
 
-        this.outObj = { ...res.data, ...this.outsourceForm, ...this.outObj };
+          this.outObj = { ...res.data, ...this.outsourceForm, ...this.outObj };
 
-        this.isStep = false;
-        this.isOutsource = true;
-        // } else if (index == '2') {
-        //   this.outObj = e;
+          this.isStep = false;
+          this.isOutsource = true;
+        } else if (index == '2') {
+          this.outObj = e;
+          let req = {
+            taskId: e.taskId,
+            taskIds: e.taskIds,
+            workOrderId: e.workOrderId,
+            quantity: e.formedNumLast
+          };
 
-        //   const res = await pleaseEntrustManagement(this.outObj);
+          const res = await checkPleaseEntrust(req);
 
-        //   console.log(res, '请托的结果');
-        // }
+          this.outObj = { ...res.data, ...this.outsourceForm, ...this.outObj };
+
+          this.isStep = false;
+          this.isPleaseEntrust = true;
+          // this.isOutsource = true;
+
+          console.log(res, '请托的结果');
+        }
       },
 
       workSelect(data) {
@@ -790,6 +815,7 @@
 
         if (t == 'pick') {
           this.$nextTick(() => {
+            console.log(this.taskObj);
             this.$refs.pickListRef.getList(this.workListIds);
           });
         }

+ 1 - 1
vue.config.js

@@ -44,7 +44,7 @@ module.exports = {
         // target: 'http://192.168.1.33:18086',
         // target: 'http://192.168.1.251:18186',
         // target: 'http://192.168.1.251:18087',
-        target: 'http://192.168.1.116:18086',
+        // target: 'http://192.168.1.116:18086',
         changeOrigin: true, // 只有这个值为true的情况下 才表示开启跨域
         pathRewrite: {
           '^/api': ''