695593266@qq.com 11 месяцев назад
Родитель
Сommit
0d3b87931b

+ 10 - 3
src/views/produce/components/feeding/components/outboundOrderDialog.vue

@@ -1,5 +1,4 @@
 <template>
-  <!-- 默认的vue 根节点必须要要有值  我看是不是这个问题哈 -->
   <ele-modal
     :visible.sync="visible"
     v-if="visible"
@@ -17,6 +16,7 @@
       :datasource="datasource"
       row-key="id"
       :cache-key="cacheKeyUrl"
+      :need-page="false"
       @selection-change="handleSelectionChange"
     >
       <template v-slot:weight="{ row, $index }">
@@ -89,14 +89,14 @@
           },
           {
             prop: 'name',
-            label: '物料名称',
+            label: '名称',
             width: 150,
             align: 'center',
             showOverflowTooltip: true
           },
           {
             prop: 'code',
-            label: '物料编码',
+            label: '编码',
             width: 150,
             align: 'center',
             showOverflowTooltip: true
@@ -115,6 +115,13 @@
             align: 'center',
             showOverflowTooltip: true
           },
+          {
+            prop: 'extInfo.engrave',
+            label: '刻码',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true
+          },
           {
             prop: 'weight',
             slot: 'weight',

+ 20 - 0
src/views/produce/components/feeding/components/workOrderBom.vue

@@ -64,6 +64,26 @@
             </div>
           </div>
         </div>
+
+        <!-- <span v-if="row.outsourceStatus == 1">未委外</span>
+            <span v-if="row.outsourceStatus == 2">委外中</span>
+            <span v-if="row.outsourceStatus == 3">完成委外-未质检</span> -->
+
+        <div class="item rx-sc">
+          <div class="rx ww50">
+            <div class="lable rx-cc">委外状态</div>
+            <div v-if="item.outsourceStatus">
+              <div class="content" v-if="item.outsourceStatus == 1">未委外</div>
+              <div class="content" v-if="item.outsourceStatus == 2">委外中</div>
+              <div class="content" v-if="item.outsourceStatus == 3"
+                >完成委外-未质检</div
+              >
+            </div>
+            <div v-else>
+              <div class="content">{{ '' }}</div>
+            </div>
+          </div>
+        </div>
       </div>
     </div>
   </div>

+ 8 - 0
src/views/produce/components/feeding/index.vue

@@ -357,6 +357,14 @@
                 });
               }
 
+              if (m.semiProductList.length != 0) {
+                m.semiProductList.forEach((item) => {
+                  if (!item.confirm) {
+                    item.confirm = '';
+                  }
+                });
+              }
+
               // 处理字段
               if (m.quality == '') {
                 m.product = '{}';

+ 17 - 5
src/views/produce/components/footBtn.vue

@@ -75,6 +75,16 @@
           //   type: 'inspection',
           //   bjColor: '#FBD114'
           // },
+          {
+            name: '领料',
+            type: 'pick',
+            bjColor: '#FC1B75'
+          },
+          {
+            name: '投料',
+            type: 'feed',
+            bjColor: '#FBD114'
+          },
           {
             name: '报工',
             type: 'job',
@@ -272,23 +282,25 @@
 
 <style lang="scss" scoped>
   .foot_box {
-    min-width: 1280px;
+    // min-width: 1280px;
     width: 100%;
     height: 80px;
-    padding: 0 20px;
+    padding: 0 10px !important;
     display: flex;
+    flex-direction: row;
     align-items: center;
     // justify-content: space-between;
-    font-size: 20px;
+    box-sizing: border-box;
   }
 
   .btn {
     height: 70px;
-    width: calc(100% / 11);
     margin: 0 10px;
+    // flex: 1;
+    width: calc(100% / 12);
     color: #fff;
     font-weight: 800;
-    font-size: 20px;
+    font-size: 18px;
     border-radius: 4px;
     display: flex;
     flex-direction: column;

+ 0 - 2
src/views/produce/components/jobBooking/components/semiProductJobBom.vue

@@ -1192,12 +1192,10 @@
       },
 
       getOk(index) {
-        console.log(11111);
         this.list[index].confirm = 1;
       },
 
       getCancle(index) {
-        console.log('00000');
         this.list[index].confirm = 0;
       },
 

+ 186 - 2
src/views/produce/components/jobBooking/components/semiProductJobBomPL.vue

@@ -3,7 +3,36 @@
     <div class="title_box rx-bc mt6">
       <div class="name">报工信息({{ list.length || 0 }})个 </div>
 
-      <div class="rx-bc"> </div>
+      <!-- <div class="title_box rx-bc mt6">
+        <div
+          v-if="!isDetails && isEngrave"
+          class="rx-bc"
+          style="margin-left: 20px"
+        >
+          <el-button type="text" size="mini" @click="batchEngrave()"
+            >批量填写刻码</el-button
+          >
+        </div>
+
+        <div
+          v-if="!isDetails && isDisposal"
+          class="rx-bc"
+          style="margin-left: 20px"
+        >
+          <el-button type="text" size="mini" @click="batchDisposal()"
+            >批量处置</el-button
+          >
+        </div>
+
+        <div
+          class="rx-bc"
+          v-if="!isDetails && isChoose"
+          style="margin-left: 20px"
+          ><el-button type="text" size="mini" @click="batchDelete()"
+            >批量删除</el-button
+          >
+        </div>
+      </div> -->
     </div>
 
     <el-table
@@ -457,6 +486,73 @@
         </template>
       </el-table-column>
     </el-table>
+
+    <el-dialog
+      title="处置类型"
+      v-if="dialogVisible"
+      :visible.sync="dialogVisible"
+      width="30%"
+      :before-close="handleClose"
+    >
+      <el-form ref="form" :model="form" label-width="80px">
+        <el-form-item label="处置类型">
+          <el-select
+            size="mini"
+            filterable
+            v-model="form.taskId"
+            placeholder="请选择"
+          >
+            <el-option
+              v-for="item in stepsList"
+              :label="item.taskTypeName"
+              :value="item.taskId"
+              :key="item.taskId"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="batchConfirm()">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <el-dialog
+      title="刻码"
+      v-if="dialogEngrave"
+      :visible.sync="dialogEngrave"
+      width="30%"
+      :before-close="handleClose"
+    >
+      <el-form ref="form" :model="form" label-width="90px">
+        <el-form-item label="刻码区间">
+          <el-input
+            size="mini"
+            type="number"
+            v-model="form.minNumber"
+            placeholder="请输入刻码最小值"
+            prop="digit"
+            style="width: 180px"
+          />
+          -
+          <el-input
+            size="mini"
+            type="number"
+            v-model="form.maxNumber"
+            placeholder="请输入刻码最大值"
+            prop="digit"
+            style="width: 180px"
+          />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogEngrave = false">取 消</el-button>
+        <el-button type="primary" @click="batchEngraveConfirm()"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -489,6 +585,18 @@
       },
       index: {
         default: null
+      },
+      isChoose: {
+        type: Boolean,
+        default: false
+      },
+      isEngrave: {
+        type: Boolean,
+        default: false
+      },
+      isDisposal: {
+        type: Boolean,
+        default: false
       }
     },
 
@@ -559,7 +667,14 @@
             code: 9,
             name: '转试销'
           }
-        ]
+        ],
+        form: {
+          taskId: '',
+          minNumber: '',
+          maxNumber: ''
+        },
+        dialogVisible: false,
+        dialogEngrave: false
       };
     },
     mounted() {
@@ -819,6 +934,75 @@
         });
       },
 
+      batchConfirm() {
+        if (!this.form.taskId) {
+          this.$message({ message: '请选择处置类型', type: 'warning' });
+          return false;
+        }
+
+        this.list.forEach((item, index) => {
+          this.$set(this.list[index].extInfo, 'taskId', this.form.taskId);
+        });
+
+        this.$forceUpdate();
+
+        this.dialogVisible = false;
+      },
+
+      handleClose() {
+        this.dialogVisible = false;
+        this.dialogEngrave = false;
+      },
+
+      batchEngrave() {
+        this.form.minNumber = '';
+        this.form.maxNumber = '';
+        this.dialogEngrave = true;
+      },
+
+      batchEngraveConfirm() {
+        if (!this.form.minNumber) {
+          this.$message({ message: '请输入最小刻码', type: 'warning' });
+          return false;
+        }
+
+        if (!this.form.maxNumber) {
+          this.$message({ message: '请输入最大刻码', type: 'warning' });
+          return false;
+        }
+
+        if (Number(this.form.minNumber) > Number(this.form.maxNumber)) {
+          this.$message({
+            message: '最小刻码不能大于最大刻码',
+            type: 'warning'
+          });
+          return false;
+        }
+
+        this.list.forEach((item, index) => {
+          this.$set(this.list[index].extInfo, 'engrave', '');
+        });
+
+        const engraveNumber =
+          Number(this.form.maxNumber) - Number(this.form.minNumber) + 1;
+
+        for (let i = 0; i < engraveNumber; i++) {
+          if (this.list.length < i) return;
+
+          if (this.list.length > i) {
+            this.$set(
+              this.list[i].extInfo,
+              'engrave',
+              Number(this.form.minNumber) + i
+            );
+          } else {
+            break;
+          }
+        }
+
+        this.dialogEngrave = false;
+      },
+
       blurNum(it, idx, yyIdx) {
         let value = it.allFeedQuantity;
         value = value.replace(/\./g, '');

+ 31 - 7
src/views/produce/components/jobBooking/details.vue

@@ -232,10 +232,36 @@
 
     <div v-if="taskType == 5">
       <div class="card_box" v-for="(objData, index) in list" :key="index">
-        <div class="rx-bc title_card">
-          <div>{{ index + 1 }}</div>
-          <div>报工时间: </div>
+        <div class="rx-bc">
+          <div class="item_box rx-bc">
+            <div class="round">{{ index + 1 }}</div>
+            <div class="time">报工时间:{{ objData.executorTime }} </div>
+          </div>
+
+          <div class="item_box rx-bc">
+            <div class="time">报工人:{{ objData.executorName }} </div>
+          </div>
+
+          <div class="item_box rx-bc">
+            <div class="time">工序名称:入库</div>
+          </div>
         </div>
+        <!-- <div class="rx-bc">
+          <div class="item_box rx-bc">
+            <div class="round">{{ index + 1 }}</div>
+            <div class="time">报工时间:{{ objData.executorTime }} </div>
+          </div>
+
+          <div class="item_box rx-bc">
+            <div class="time">报工人:{{ objData.executorName }} </div>
+          </div>
+
+          <div class="item_box rx-bc">
+            <div class="time"
+              >工序名称:入库</div
+            >
+          </div>
+        </div> -->
 
         <workOrderBom2
           :item="objData"
@@ -284,9 +310,7 @@
   import detailsBom from '../warehousing/components/detailsBom.vue';
   import workOrderBom2 from '../warehousing/components/workOrderBom.vue';
   import detailsIndex from '../workPlan/detailsIndex.vue';
-  import {
-    getList
-  } from '@/api/inspectionWork';
+  import { getList } from '@/api/inspectionWork';
 
   export default {
     components: {
@@ -377,7 +401,7 @@
 
     created() {
       this.getPlanCode();
-      this.get
+      this.get;
     },
 
     methods: {

+ 4 - 0
src/views/produce/components/jobBooking/index.vue

@@ -190,6 +190,9 @@
           :list="item.semiProductList"
           :equipmentList="item.equipmentList"
           @countNumPl="countNumPl"
+          :isChoose="isChoose"
+          :isEngrave="isEngrave"
+          :isDisposal="isDisposal"
           :index="index"
         ></semiProductJobBomPL>
 
@@ -491,6 +494,7 @@
           taskId: this.taskObj.id,
           type: 0
         };
+
         this.isLoad = false;
         listByIdsReport(param)
           .then((res) => {

+ 282 - 235
src/views/produce/components/outsourcing/index.vue

@@ -1,262 +1,310 @@
 <template>
-    <div class="index_box">
-        <div class="c_header_title">
-            <div class="c_title">委外记录</div>
-        </div>
-        <div>
-            <el-form label-width="100px" :rules="rules" ref="form" :model="attributeData">
-
-                <el-form-item label="委外名称:" prop="name">
-                    <el-input placeholder="" v-model="attributeData.name" style="width: 260px;"></el-input>
-                </el-form-item>
-
-                <el-form-item label="委外类型:" prop="type">
-                    <el-select v-model="attributeData.type" placeholder="请选择" style="width: 260px;">
-                        <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id">
-                        </el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item label="委外数量:" prop="formedNumLast">
-                    <el-input placeholder="请输入委外数量" type="number" v-model="attributeData.formedNumLast"
-                        style="width: 260px;"></el-input>
-                </el-form-item>
-                <el-form-item label="委外到:" prop="taskIds">
-                    <el-select v-model="attributeData.taskIds" placeholder="请选择" style="width: 260px;"
-                        @change="changeTaskId">
-                        <el-option v-for="item in newStepsList" :key="item.taskId" :label="item.taskTypeName"
-                            :value="item.taskId">
-                        </el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item label="委外场景:" prop="sceneText">
-                    <el-input placeholder="" v-model="attributeData.sceneText" disabled
-                        style="width: 260px;"></el-input>
-                </el-form-item>
-                <!-- v-if="attributeData.isFirstTask != 1" -->
-                <el-form-item label="直接入库:" borderBottom prop="warehouseId" >
-                    <div style="display: flex;">
-                        <div style="font-size: 15px;" v-if="attributeData.clientEnvironmentId == 2">是</div>
-                        <!-- <el-checkbox-group v-model="isInWarehouse" size="15px" v-if="attributeData.clientEnvironmentId != 2 ">
+  <div class="index_box">
+    <div class="c_header_title">
+      <div class="c_title">委外记录</div>
+    </div>
+    <div>
+      <el-form
+        label-width="100px"
+        :rules="rules"
+        ref="form"
+        :model="attributeData"
+      >
+        <el-form-item label="委外名称:" prop="name">
+          <el-input
+            placeholder=""
+            v-model="attributeData.name"
+            style="width: 260px"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="委外类型:" prop="type">
+          <el-select
+            v-model="attributeData.type"
+            placeholder="请选择"
+            style="width: 260px"
+          >
+            <el-option
+              v-for="item in typeList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="委外数量:" prop="formedNumLast">
+          <el-input
+            placeholder="请输入委外数量"
+            type="number"
+            v-model="attributeData.formedNumLast"
+            style="width: 260px"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="委外到:" prop="taskIds">
+          <el-select
+            v-model="attributeData.taskIds"
+            placeholder="请选择"
+            style="width: 260px"
+            @change="changeTaskId"
+          >
+            <el-option
+              v-for="item in newStepsList"
+              :key="item.taskId"
+              :label="item.taskTypeName"
+              :value="item.taskId"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="委外场景:" prop="sceneText">
+          <el-input
+            placeholder=""
+            v-model="attributeData.sceneText"
+            disabled
+            style="width: 260px"
+          ></el-input>
+        </el-form-item>
+        <!-- v-if="attributeData.isFirstTask != 1" -->
+        <el-form-item label="直接入库:" borderBottom prop="warehouseId">
+          <div style="display: flex">
+            <div
+              style="font-size: 15px"
+              v-if="attributeData.clientEnvironmentId == 2"
+              >是</div
+            >
+            <!-- <el-checkbox-group v-model="isInWarehouse" size="15px" v-if="attributeData.clientEnvironmentId != 2 ">
                             <el-checkbox labelSize="15px" iconSize="10px" activeColor="#157A2C" name="true"
                                 label="是"></el-checkbox>
                         </el-checkbox-group> -->
-                        <!-- <el-checkbox labelSize="15px" iconSize="10px" v-model="isInWarehouse" activeColor="#157A2C" name="true"
+            <!-- <el-checkbox labelSize="15px" iconSize="10px" v-model="isInWarehouse" activeColor="#157A2C" name="true"
                                 label="是" v-if="attributeData.clientEnvironmentId != 2 "></el-checkbox> -->
-                        <el-select v-if="attributeData.clientEnvironmentId == 2 || isInWarehouse" v-model="attributeData.warehouseId" placeholder="请选择" style="width: 222px;">
-                            <el-option v-for="item in warehouseList" :key="item.id" :label="item.name"
-                                :value="item.id">
-                            </el-option>
-                        </el-select>
-                    </div>
-                </el-form-item>
-
-                <el-form-item label="工艺路线:" borderBottom style="font-size: 15px;" prop="produceRoutingId"
-                    v-if="attributeData.clientEnvironmentId != 2 && attributeData.isFirstTask != 1 && isInWarehouse && isInWarehouse.length == 0">
-
-                    <el-select v-model="attributeData.produceRoutingId" placeholder="请选择" style="width: 260px;">
-                        <el-option v-for="item in produceList" :key="item.id" :label="item.name"
-                            :value="item.id">
-                        </el-option>
-                    </el-select>
-
-                </el-form-item>
-
-
-                <el-form-item label="计划交期:" prop="requireDeliveryTime">
-                    <el-date-picker v-model="attributeData.requireDeliveryTime" value-format="yyyy-MM-dd HH:mm:ss"
-                        style="width: 260px;" type="date" placeholder="选择日期">
-                    </el-date-picker>
-                </el-form-item>
-            </el-form>
-
-            <div class="btn-box">
-                <el-button type="primary" @click="confirm">确认</el-button>
-            </div>
-        </div>
+            <el-select
+              v-if="attributeData.clientEnvironmentId == 2 || isInWarehouse"
+              v-model="attributeData.warehouseId"
+              placeholder="请选择"
+              style="width: 222px"
+            >
+              <el-option
+                v-for="item in warehouseList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </div>
+        </el-form-item>
+
+        <el-form-item
+          label="工艺路线:"
+          borderBottom
+          style="font-size: 15px"
+          prop="produceRoutingId"
+          v-if="
+            attributeData.clientEnvironmentId != 2 &&
+            attributeData.isFirstTask != 1 &&
+            isInWarehouse &&
+            isInWarehouse.length == 0
+          "
+        >
+          <el-select
+            v-model="attributeData.produceRoutingId"
+            placeholder="请选择"
+            style="width: 260px"
+          >
+            <el-option
+              v-for="item in produceList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="计划交期:" prop="requireDeliveryTime">
+          <el-date-picker
+            v-model="attributeData.requireDeliveryTime"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            style="width: 260px"
+            type="date"
+            placeholder="选择日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+
+      <div class="btn-box">
+        <el-button type="primary" @click="confirm">确认</el-button>
+      </div>
     </div>
+  </div>
 </template>
 
 <script>
-
-import {getWarehouseList,producerouting} from '@/api/produce/index.js'
-export default {
-    components: {
-
-    },
+  import { getWarehouseList, producerouting } from '@/api/produce/index.js';
+  export default {
+    components: {},
     data() {
-        return {
-            attributeData: {
-                name: '',
-                type: '',//类型
-                sceneText: '',//场景
-                formedNumLast: '',//数据
-                taskIds: '',//委外到
-                isFirstTask:'',
-                clientEnvironmentId: 1,//直接入库
-                requireDeliveryTime: '',//计划交期
-                warehouseId: '',//仓库id
-                produceRoutingId: '',//工艺路线id
-            },
-            isInWarehouse:true,
-            produceList:[],
-            warehouseList:[],
-            newStepsList: [],
-            typeList: [{
-                id: 4,
-                name: '带料生产委外'
-            },
-            {
-                id: 5,
-                name: '不带料生产委外'
-            },
-
-            ],
-            rules: {
-                name: [
-                    { required: true, message: '请输入委外名称', trigger: 'blur' },
-                ],
-                type: [
-                    { required: true, message: '请选择委外类型', trigger: 'blur' },
-                ],
-                formedNumLast: [
-                    { required: true, message: '请输入委外数量', trigger: 'blur' },
-                ],
-                taskIds: [
-                    { required: true, message: '请选择', trigger: 'blur' },
-                ],
-                sceneText: [
-                    { required: true, message: '请选择委外场景', trigger: 'blur' },
-                ],
-                warehouseId: [
-                    { required: true, message: '请选择', trigger: 'blur' },
-                ],
-                requireDeliveryTime: [
-                    { required: true, message: '请选择计划交期时间', trigger: 'blur' },
-                ]
-            },
+      return {
+        attributeData: {
+          name: '',
+          type: '', //类型
+          sceneText: '', //场景
+          formedNumLast: '', //数据
+          taskIds: '', //委外到
+          isFirstTask: '',
+          clientEnvironmentId: 1, //直接入库
+          requireDeliveryTime: '', //计划交期
+          warehouseId: '', //仓库id
+          produceRoutingId: '' //工艺路线id
+        },
+        isInWarehouse: true,
+        produceList: [],
+        warehouseList: [],
+        newStepsList: [],
+        typeList: [
+          {
+            id: 4,
+            name: '带料生产委外'
+          },
+          {
+            id: 5,
+            name: '不带料生产委外'
+          }
+        ],
+        rules: {
+          name: [
+            { required: true, message: '请输入委外名称', trigger: 'blur' }
+          ],
+          type: [
+            { required: true, message: '请选择委外类型', trigger: 'blur' }
+          ],
+          formedNumLast: [
+            { required: true, message: '请输入委外数量', trigger: 'blur' }
+          ],
+          taskIds: [{ required: true, message: '请选择', trigger: 'blur' }],
+          sceneText: [
+            { required: true, message: '请选择委外场景', trigger: 'blur' }
+          ],
+          warehouseId: [{ required: true, message: '请选择', trigger: 'blur' }],
+          requireDeliveryTime: [
+            { required: true, message: '请选择计划交期时间', trigger: 'blur' }
+          ]
+        },
 
-            loading: false,
-            operationType: null,
-            workListIds: [],
-        };
+        loading: false,
+        operationType: null,
+        workListIds: []
+      };
     },
     props: {
-        outsourceFormVal: {
-            type: Object,
-            default: () => ({})
-        }
+      outsourceFormVal: {
+        type: Object,
+        default: () => ({})
+      }
     },
 
     watch: {
-        outsourceFormVal: {
-            handler(val) {
-                console.log(val, 'outsourceForm');
-                Object.assign(this.attributeData, val);
-                this.newStepsList = this.attributeData.newStepsList;
-                this.getWarehouseFn();
-                this.produceFn();
-            },
-            deep: true,
-            immediate: true
-        }
+      outsourceFormVal: {
+        handler(val) {
+          console.log(val, 'outsourceForm');
+          Object.assign(this.attributeData, val);
+          this.newStepsList = this.attributeData.newStepsList;
+          this.getWarehouseFn();
+          this.produceFn();
+        },
+        deep: true,
+        immediate: true
+      }
     },
     computed: {
-        taskObj() {
-            return this.$store.state.user.taskObj;
-        }
+      taskObj() {
+        return this.$store.state.user.taskObj;
+      }
     },
     methods: {
-
-        // 工艺路线
-        produceFn() {
-            let param = {
-                pageNum: 1,
-                size: -1,
-                routeType: 2
+      // 工艺路线
+      produceFn() {
+        let param = {
+          pageNum: 1,
+          size: -1,
+          routeType: 2
+        };
+        producerouting(param).then((res) => {
+          this.produceList = res.list;
+        });
+      },
+
+      // 仓库
+      getWarehouseFn() {
+        getWarehouseList().then((res) => {
+          console.log(res, '仓库数据');
+          this.warehouseList = res.data;
+        });
+      },
+
+      changeTaskId(e) {
+        console.log(e);
+        const arr = this.newStepsList.find((item) => item.taskId === e);
+
+        if (this.newStepsList.length) {
+          const id = this.newStepsList[0].sourceTaskId;
+          //isFirstTask 1是首工序 0不是
+          if (this.attributeData.isFirstTask) {
+            this.attributeData.sceneText = '首工序';
+            this.attributeData.outsourceScene = 1;
+            if (arr.sourceTaskId !== id) {
+              this.attributeData.sceneText = '首工序及多工序';
+              this.attributeData.outsourceScene = 4;
             }
-            producerouting(param).then(res => {
-                this.produceList = res.list
-
-            })
-        },
-
-        // 仓库 
-        getWarehouseFn() {
-            getWarehouseList().then(res => {
-
-                console.log(res,'仓库数据');
-                this.warehouseList = res.data
-            })
-        },
-
-
-        changeTaskId(e) {
-            console.log(e);
-            const arr = this.newStepsList.find(item => item.taskId === e)
-
-            if (this.newStepsList.length) {
-                const id = this.newStepsList[0].sourceTaskId;
-                //isFirstTask 1是首工序 0不是
-                if (this.attributeData.isFirstTask) {
-
-                    this.attributeData.sceneText = "首工序";
-                    this.attributeData.outsourceScene = 1;
-                    if (arr.sourceTaskId !== id) {
-                        this.attributeData.sceneText = "首工序及多工序";
-                        this.attributeData.outsourceScene = 4;
-                    }
-                } else {
-                    if (arr.sourceTaskId === id) {
-                        // 单工序
-                        this.attributeData.sceneText = "单工序"
-                        this.attributeData.outsourceScene = 2;
-                    } else {
-                        //多工序
-                        this.attributeData.sceneText = "多工序"
-                        this.attributeData.outsourceScene = 3;
-                    }
-                }
-
+          } else {
+            if (arr.sourceTaskId === id) {
+              // 单工序
+              this.attributeData.sceneText = '单工序';
+              this.attributeData.outsourceScene = 2;
             } else {
-                uni.showToast({
-                    title: '委外到工序为空',
-                    icon: 'none'
-                })
+              //多工序
+              this.attributeData.sceneText = '多工序';
+              this.attributeData.outsourceScene = 3;
             }
-        },
-
-        //跳转
-
-        confirm() {
-            this.$refs.form.validate((valid) => {
-                if (valid) {
-                    console.log(this.attributeData,'11111187887877');
-                    this.$emit('changePlugIn', this.attributeData);
-                } else {
-                    console.log('error submit!!');
-                    return false;
-                }
-
-            })
-
+          }
+        } else {
+          uni.showToast({
+            title: '委外到工序为空',
+            icon: 'none'
+          });
         }
+      },
+
+      //跳转
+
+      confirm() {
+        this.$refs.form.validate((valid) => {
+          if (valid) {
+            console.log(this.attributeData, '11111187887877');
+            this.$emit('changePlugIn', this.attributeData);
+          } else {
+            console.log('error submit!!');
+            return false;
+          }
+        });
+      }
     },
     created() {
-        this.operationType = null;
-        this.workListIds = [];
-    },
-
-
-
-};
+      this.operationType = null;
+      this.workListIds = [];
+    }
+  };
 </script>
 
 <style scoped>
-.index_box {
+  .index_box {
     padding: 0 !important;
-}
+  }
 
-.c_header_title {
+  .c_header_title {
     display: flex;
     align-items: center;
     margin-bottom: 0;
@@ -266,16 +314,15 @@ export default {
     box-sizing: border-box;
     background: var(--table-header-background-color);
     border-bottom: 1px solid var(--border-color-lighter);
-}
-
-.c_title {
+  }
 
+  .c_title {
     color: #157a2c;
     font-size: 16px;
     font-weight: bold;
-}
+  }
 
-.btn-box {
+  .btn-box {
     margin-left: 50px;
-}
-</style>
+  }
+</style>

+ 15 - 15
src/views/produce/components/outsourcing/outsourceList.vue

@@ -24,10 +24,10 @@
 					</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)" 
+										@change="e => selectVal(e, item, index)"
 										v-if='(item.rootCategoryLevelId != 11 || (item.rootCategoryLevelId == 11 && item.status != 1)) && clientEnvironmentId != 2'
 										 >
 										 </el-checkbox>
@@ -106,7 +106,7 @@
 								</div>
 							</div>
 						</div> -->
-				 
+
 
 				<el-table
 				    ref="pickOutRef"
@@ -137,7 +137,7 @@
 					</el-table-column>
 					<el-table-column label="名称" type="name" minWidth="110">
 						<template slot-scope="{ row, $index }">
-						{{ row.name }} 
+						{{ row.name }}
 						<!-- ({{
 							row.rootCategoryLevelId == 2
 							? '在制品'
@@ -178,7 +178,7 @@
 						   {{ row.weight || 0 }} {{ row.weightUnit }}
 						</template>
 					</el-table-column>
-					<el-table-column 
+					<el-table-column
 					    label="刻码" type="engrave">
 						<template slot-scope="{ row, $index }">
 						{{ row.extInfo.engrave }}
@@ -202,7 +202,7 @@
 						</template>
 					</el-table-column>
 
-					
+
 				</el-table>
             </div>
 			</el-tab-pane>
@@ -401,7 +401,7 @@ export default {
 
 			seletedAll: false, //全选状态
 			checkListLen: 0,
-			
+
 			warehouseList: [],
 			pickOutInListSelect:[]
 		}
@@ -494,7 +494,7 @@ export default {
 			this.pickOutInList.map(v => {
 				v.checked = true;
 			})
-			
+
 			this.checkListLen = this.pickOutInList.length;
 
 			this.standardOutputList = res.standardOutputList
@@ -537,7 +537,7 @@ export default {
 		},
 
 
-		// 仓库 
+		// 仓库
 		getWarehouseFn() {
 			getWarehouseList().then(res => {
 				this.warehouseList = res
@@ -575,20 +575,20 @@ export default {
 			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 是全选 
+			// this.seletedAll true 是全选
 
 			if (!this.seletedAll) {
 				// 非全选
 				this.seletedAll = true;
 				this.checkListLen = 0;
-				
+
 				this.pickOutInList.map(item => {
 					item.checked =false;
 				})
@@ -597,7 +597,7 @@ export default {
 
 			} else {
 				this.seletedAll = false;
-				
+
 				this.pickOutInList.map(item => {
 					item.checked =true;
 				})
@@ -636,7 +636,7 @@ export default {
 
 		handOK(isRelease) {
 			// isRelease? 0 提交 2提交并发布
-		
+
 			if (this.checkListLen > 0 && !this.outObj.warehouseId) {
 				return this.$message({
 					message: "请选择仓库",
@@ -772,4 +772,4 @@ export default {
 		background-color: #f7f9fa;
 	}
 }
-</style>
+</style>

+ 2 - 1
src/views/produce/components/workPlan/edit.vue

@@ -1098,6 +1098,7 @@
               this.loading = false;
               this.$message.success(msg);
               // this.cancel();
+              this.visible = false;
               this.$emit('done');
             })
             .catch((e) => {
@@ -1435,7 +1436,7 @@
 
       handleClose() {
         this.visible = false;
-        this.$emit('close');
+        this.$emit('done');
       },
 
       validateSampleCount(sampleCount) {

+ 4 - 60
src/views/produce/components/workPlan/index.vue

@@ -452,28 +452,10 @@
           size: limit
         });
 
-        console.log(res, 'ERSSSSSSS');
-
         return res;
       },
 
-      // async getSourceList({ page, limit }) {
-      //   const res = await getList({
-      //     produceSourceTaskId: this.dataWork.taskId,
-      //     sourceCode: this.dataWork.data.code,
-      //     pageNum: page,
-      //     size: limit
-      //   });
-
-      //   console.log(res);
-      //   this.sourceList = res?.list ? res?.list : [];
-      // },
-
       search(where) {
-        // this.$refs.table.reload({
-        //   where: where,
-        //   page: 1
-        // });
         console.log(1111);
         this.$refs.table.reload({
           limit: 20,
@@ -487,13 +469,6 @@
         this.dataWork.data.forEach((item) => {
           this.listId.push(item.code);
         });
-
-        // this.$nextTick(() => {
-        //   this.datasource({
-        //     limit: 20,
-        //     page: 1
-        //   });
-        // });
       },
 
       async openEdit(type, row) {
@@ -512,35 +487,6 @@
         };
 
         this.$refs.editRef.open(req);
-        // const menusList = this.$store.state.user.menus;
-        // let found = false;
-        // for (const item of menusList) {
-        //   if (item.children) {
-        //     for (const item2 of item.children) {
-        //       if (item2.path === '/inspectionWork/edit') {
-        //         found = true;
-        //         const id = type !== 'add' ? row.id : '';
-        //         const qualityType = type !== 'add' ? row.qualityType : null;
-        //         const qualityTimeStart = row.qualityTimeStart || '';
-
-        //         this.$router.push({
-        //           path: '/inspectionWork/edit',
-        //           query: {
-        //             type,
-        //             id,
-        //             qualityType,
-        //             qualityTimeStart
-        //           }
-        //         });
-        //         return;
-        //       }
-        //     }
-        //   }
-        // }
-
-        // if (!found) {
-        //   this.$message.error('请到角色管理配置菜单权限!');
-        // }
       },
       downloadFile(file) {
         getFile({ objectName: file.storePath }, file.name);
@@ -554,12 +500,10 @@
           .catch((e) => {});
       },
       done() {
-        console.log(22222);
-        this.$refs.search.search();
-        // this.getSourceList({
-        //   page: 1,
-        //   limit: 10
-        // });
+        this.datasource({
+          page: 1,
+          limit: 20
+        });
       },
       openNumber(row) {
         this.formData.certificateNumber = row.certificateNumber;

+ 8 - 3
src/views/produce/index.vue

@@ -615,7 +615,10 @@
           if (this.workListIds.length > 1) {
             return this.$message.warning('任务只能选择一个工单!');
           }
-          this.$refs.taskDialogRef.open(this.workStepQueryParam, this.workData.list[0]);
+          this.$refs.taskDialogRef.open(
+            this.workStepQueryParam,
+            this.workData.list[0]
+          );
         }
         // 工艺路线 *** 修改 判断只能选择一个
         // if (t === 'work') {
@@ -679,12 +682,14 @@
         getTaskInstanceById(workOrderId).then((res) => {
           let { data } = res;
           if (data.length) {
-            data = data.filter((item) => item.type == 1 || item.type == 4);
+            data = data.filter(
+              (item) => item.taskId != -2 && item.taskId != -1
+            );
             let arr = data.findIndex(
               (item) => item.sourceTaskId == this.taskObj.id
             );
             if (arr != -1) {
-              data.splice(0, arr + 1);
+              data.splice(0, arr);
             }
             this.$set(this.outsourceForm, 'newStepsList', data);
           }

+ 31 - 0
src/views/produceOrder/index.vue

@@ -95,6 +95,19 @@
           <span> {{ row.formingWeight }} {{ row.weightUnit }} </span>
         </template>
 
+        <template v-slot:singleReport="{ row }">
+          <span v-if="row.singleReport == 0">批量报工</span>
+          <span v-if="row.singleReport == 1">单个报工</span>
+        </template>
+
+        <template v-slot:outsourceStatus="{ row }">
+          <div v-if="row.outsourceStatus">
+            <span v-if="row.outsourceStatus == 1">未委外</span>
+            <span v-if="row.outsourceStatus == 2">委外中</span>
+            <span v-if="row.outsourceStatus == 3">完成委外-未质检</span>
+          </div>
+        </template>
+
         <template v-slot:status="{ row }">
           <span :class="{ 'ele-text-danger': row.status == 3 }">
             {{ statusFormatter(row.status) }}
@@ -492,6 +505,24 @@
             label: '牌号',
             align: 'center'
           },
+          {
+            prop: 'taskName',
+            label: '工序进度',
+            align: 'center'
+          },
+          {
+            prop: 'singleReport',
+            slot: 'singleReport',
+            label: '报工类型',
+            align: 'center'
+          },
+          {
+            prop: 'outsourceStatus',
+            label: '委外状态',
+            align: 'center',
+            slot: 'outsourceStatus',
+            showOverflowTooltip: true
+          },
           {
             prop: 'priority',
             label: '优先级',

+ 4 - 4
src/views/produceWord/index.vue

@@ -54,7 +54,7 @@ r++<template>
           <span v-if="row.crewNames">
             {{ row.crewNames }}
           </span>
-          <span v-if="row.workstationNames ">
+          <span v-if="row.workstationNames">
             {{ row.workstationNames }}
           </span>
         </template>
@@ -116,13 +116,13 @@ r++<template>
           { label: '待下达', value: 8 }
         ],
         cacheKeyUrl: '0c2fb832-mes-produceWord',
-        columnsVersion:0
+        columnsVersion: 0
       };
     },
     computed: {
       // 表格列配置
       columns() {
-          const num = this.columnsVersion
+        const num = this.columnsVersion;
         return [
           {
             columnKey: 'index',
@@ -150,7 +150,7 @@ r++<template>
           },
           {
             prop: 'productionPlanCode',
-            label: '计划编',
+            label: '计划编',
             align: 'center'
           },
           {