Parcourir la source

是否质检传值qualityControl,客户退货产品处理审批入库单显示一页;

yijing il y a 1 an
Parent
commit
d3fd8e594c

+ 827 - 968
src/views/bpm/handleTask/components/saleOrder/customerReturnGoods/customerReturnOrder.vue

@@ -1,1038 +1,897 @@
 <template>
   <div>
-    <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
-      <el-tab-pane label="退货物品明细" name="退货物品明细">
-        <el-form :rules="rules" ref="formRef" :model="form">
-          <header-title title="退货物品明细" size="16px"></header-title>
-          <ele-pro-table
-            ref="table"
-            :needPage="false"
-            :columns="columns"
-            :toolkit="[]"
-            :datasource="form.detailList"
-            cache-key="customerReturnOrderDialog"
-            class="time-form"
-          >
-            <!-- 表头工具栏 -->
-            <!--        <template v-slot:toolbar>-->
-            <!--          <el-button-->
-            <!--            size="small"-->
-            <!--            type="primary"-->
-            <!--            icon="el-icon-plus"-->
-            <!--            class="ele-btn-icon"-->
-            <!--            @click="handleSelectGoods"-->
-            <!--            v-if="taskDefinitionKey=='stater'">-->
-            <!--            选择退货物品-->
-            <!--          </el-button>-->
-            <!--        </template>-->
-            <template v-slot:action="{ row, $index }">
-              <el-popconfirm
-                v-if="taskDefinitionKey == 'stater'"
-                class="ele-action"
-                title="确定要删除吗?"
-                @confirm="remove(row, $index)"
-              >
-                <template v-slot:reference>
-                  <el-link
-                    type="danger"
-                    :underline="false"
-                    icon="el-icon-delete"
-                  >
-                    删除
-                  </el-link>
-                </template>
-              </el-popconfirm>
-            </template>
-            <template v-slot:packageCount="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.packageCount'"
-                :rules="{
-                  required: row.outboundType != 2 ? true : false,
-                  trigger: 'blur',
-                  message: '请输入'
-                }"
-              >
-                <el-input
-                  v-if="isTrue && row.outboundType != 2"
-                  v-model="row.packageCount"
-                ></el-input>
-                <div v-else>{{ row.packageCount }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerPackageCount="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:measurementCount="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.measurementCount'"
-                :rules="{ required: true, trigger: 'blur', message: '请输入' }"
-              >
-                <el-input
-                  v-if="isTrue"
-                  v-model="row.measurementCount"
-                ></el-input>
-                <div v-else>{{ row.measurementCount }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerMeasurementCount="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:weight="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.weight'"
-                :rules="{ required: true, trigger: 'blur', message: '请输入' }"
-              >
-                <el-input v-if="isTrue" v-model="row.weight"></el-input>
-                <div v-else>{{ row.weight }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerWeight="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:carveCode="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.carveCode'"
-                :rules="{ required: true, trigger: 'blur', message: '请输入' }"
-              >
-                <el-input v-if="isTrue" v-model="row.carveCode"></el-input>
-                <div v-else>{{ row.carveCode }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerCarveCode="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <!--  ///  发起人展示字段 -->
-            <template v-slot:reason="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.reason'"
-                :rules="{ required: true, trigger: 'blur', message: '请输入' }"
-              >
-                <el-input
-                  type="textarea"
-                  v-if="isTrue"
-                  v-model="row.reason"
-                ></el-input>
-                <div v-else>{{ row.reason }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerReason="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:feedbackDate="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.feedbackDate'"
-                :rules="{
-                  required: true,
-                  trigger: 'change',
-                  message: '请选择'
-                }"
-              >
-                <el-date-picker
-                  v-if="isTrue"
-                  v-model="row.feedbackDate"
-                  style="width: 100%"
-                  type="date"
-                  value-format="yyyy-MM-dd"
-                  placeholder="选择日期"
-                >
-                </el-date-picker>
-                <div v-else>{{ row.feedbackDate }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerFeedbackDate="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:sendDate="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.sendDate'"
-                :rules="{
-                  required: true,
-                  trigger: 'change',
-                  message: '请选择'
-                }"
-              >
-                <el-date-picker
-                  v-if="isTrue"
-                  v-model="row.sendDate"
-                  style="width: 100%"
-                  value-format="yyyy-MM-dd"
-                  type="date"
-                  placeholder="选择日期"
-                >
-                </el-date-picker>
-                <div v-else>{{ row.sendDate }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerSendDate="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <!--////-->
-            <!--  ///  仓管入库展示字段 -->
-            <template v-slot:ifPackageOk="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.ifPackageOk'"
-                :rules="{
-                  required: true,
-                  trigger: 'change',
-                  message: '请选择'
-                }"
-              >
-                <el-select
-                  v-if="isTrue"
-                  v-model="row.ifPackageOk"
-                  placeholder="请选择"
-                  clearable
-                  style="width: 100%"
-                  @change="listChange('ifPackageOk', row.ifPackageOk)"
-                >
-                  <el-option label="是" :value="1" />
-                  <el-option label="否" :value="0" />
-                </el-select>
-                <div v-else>{{ row.ifPackageOk ? '是' : '否' }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerIfPackageOk="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:unpackUserName="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.unpackUserName'"
-                :rules="{
-                  required: true,
-                  trigger: 'change',
-                  message: '请选择'
-                }"
-              >
-                <el-input
-                  v-if="isTrue"
-                  @click.native="handHead(row, $index)"
-                  v-model="row.unpackUserName"
-                  placeholder="请选择"
-                ></el-input>
-                <div v-else>{{ row.unpackUserName }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerUnpackUserName="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <!--////-->
-            <!--  ///  质检员审核展示字段 -->
-            <template v-slot:ifReasonMatch="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.ifReasonMatch'"
-                :rules="{
-                  required: true,
-                  trigger: 'change',
-                  message: '请选择'
-                }"
-              >
-                <el-select
-                  v-if="isTrue"
-                  v-model="row.ifReasonMatch"
-                  placeholder="请选择"
-                  clearable
-                  style="width: 100%"
-                  @change="listChange('ifReasonMatch', row.ifReasonMatch)"
-                >
-                  <el-option label="是" :value="1" />
-                  <el-option label="否" :value="0" />
-                </el-select>
-                <div v-else>{{ row.ifReasonMatch ? '是' : '否' }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerIfReasonMatch="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <!--////-->
-            <!--  ///  技术员审核展示字段 -->
-            <template v-slot:unqualifiedReasonAnalysis="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.unqualifiedReasonAnalysis'"
-                :rules="{ required: true, trigger: 'blur', message: '请输入' }"
-              >
-                <el-input
-                  v-if="isTrue"
-                  v-model="row.unqualifiedReasonAnalysis"
-                ></el-input>
-                <div v-else>{{ row.unqualifiedReasonAnalysis }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:unqualifiedReasonAnalysisView="{ row, $index }">
-              <el-form-item>
-                <div>{{ row.unqualifiedReasonAnalysis }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerUnqualifiedReasonAnalysis="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:unqualifiedType="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.unqualifiedType'"
-                :rules="{ required: true, trigger: 'blur', message: '请输入' }"
-              >
-                <DictSelection
-                  dict-name="产品不合格类型"
-                  multiple
-                  collapse-tags
-                  clearable
-                  v-if="isTrue"
-                  v-model="row.unqualifiedTypeList"
-                  @change="
-                    (val) =>
-                      changeGetValue(
-                        val,
-                        row,
-                        'dictList',
-                        'unqualifiedType',
-                        'unqualifiedTypeName',
-                        $index
-                      )
-                  "
-                >
-                </DictSelection>
+    <!-- <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
+      <el-tab-pane label="退货物品明细" name="退货物品明细"> -->
+    <el-form :rules="rules" ref="formRef" :model="form">
+      <header-title title="退货物品明细" size="16px"></header-title>
+      <ele-pro-table ref="table" :needPage="false" :columns="columns" :toolkit="[]" :datasource="form.detailList"
+        cache-key="customerReturnOrderDialog" class="time-form" :height="350">
+        <!-- 表头工具栏 -->
+        <!--        <template v-slot:toolbar>-->
+        <!--          <el-button-->
+        <!--            size="small"-->
+        <!--            type="primary"-->
+        <!--            icon="el-icon-plus"-->
+        <!--            class="ele-btn-icon"-->
+        <!--            @click="handleSelectGoods"-->
+        <!--            v-if="taskDefinitionKey=='stater'">-->
+        <!--            选择退货物品-->
+        <!--          </el-button>-->
+        <!--        </template>-->
+        <template v-slot:action="{ row, $index }">
+          <el-popconfirm v-if="taskDefinitionKey == 'stater'" class="ele-action" title="确定要删除吗?"
+            @confirm="remove(row, $index)">
+            <template v-slot:reference>
+              <el-link type="danger" :underline="false" icon="el-icon-delete">
+                删除
+              </el-link>
+            </template>
+          </el-popconfirm>
+        </template>
+        <template v-slot:packageCount="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.packageCount'" :rules="{
+            required: row.outboundType != 2 ? true : false,
+            trigger: 'blur',
+            message: '请输入'
+          }">
+            <el-input v-if="isTrue && row.outboundType != 2" v-model="row.packageCount"></el-input>
+            <div v-else>{{ row.packageCount }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerPackageCount="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:measurementCount="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.measurementCount'"
+            :rules="{ required: true, trigger: 'blur', message: '请输入' }">
+            <el-input v-if="isTrue" v-model="row.measurementCount"></el-input>
+            <div v-else>{{ row.measurementCount }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerMeasurementCount="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:weight="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.weight'"
+            :rules="{ required: true, trigger: 'blur', message: '请输入' }">
+            <el-input v-if="isTrue" v-model="row.weight"></el-input>
+            <div v-else>{{ row.weight }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerWeight="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:carveCode="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.carveCode'"
+            :rules="{ required: true, trigger: 'blur', message: '请输入' }">
+            <el-input v-if="isTrue" v-model="row.carveCode"></el-input>
+            <div v-else>{{ row.carveCode }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerCarveCode="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <!--  ///  发起人展示字段 -->
+        <template v-slot:reason="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.reason'"
+            :rules="{ required: true, trigger: 'blur', message: '请输入' }">
+            <el-input type="textarea" v-if="isTrue" v-model="row.reason"></el-input>
+            <div v-else>{{ row.reason }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerReason="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:feedbackDate="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.feedbackDate'" :rules="{
+            required: true,
+            trigger: 'change',
+            message: '请选择'
+          }">
+            <el-date-picker v-if="isTrue" v-model="row.feedbackDate" style="width: 100%" type="date"
+              value-format="yyyy-MM-dd" placeholder="选择日期">
+            </el-date-picker>
+            <div v-else>{{ row.feedbackDate }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerFeedbackDate="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:sendDate="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.sendDate'" :rules="{
+            required: true,
+            trigger: 'change',
+            message: '请选择'
+          }">
+            <el-date-picker v-if="isTrue" v-model="row.sendDate" style="width: 100%" value-format="yyyy-MM-dd"
+              type="date" placeholder="选择日期">
+            </el-date-picker>
+            <div v-else>{{ row.sendDate }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerSendDate="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <!--////-->
+        <!--  ///  仓管入库展示字段 -->
+        <template v-slot:ifPackageOk="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.ifPackageOk'" :rules="{
+            required: true,
+            trigger: 'change',
+            message: '请选择'
+          }">
+            <el-select v-if="isTrue" v-model="row.ifPackageOk" placeholder="请选择" clearable style="width: 100%"
+              @change="listChange('ifPackageOk', row.ifPackageOk)">
+              <el-option label="是" :value="1" />
+              <el-option label="否" :value="0" />
+            </el-select>
+            <div v-else>{{ row.ifPackageOk ? '是' : '否' }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerIfPackageOk="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:unpackUserName="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.unpackUserName'" :rules="{
+            required: true,
+            trigger: 'change',
+            message: '请选择'
+          }">
+            <el-input v-if="isTrue" @click.native="handHead(row, $index)" v-model="row.unpackUserName"
+              placeholder="请选择"></el-input>
+            <div v-else>{{ row.unpackUserName }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerUnpackUserName="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <!--////-->
+        <!--  ///  质检员审核展示字段 -->
+        <template v-slot:ifReasonMatch="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.ifReasonMatch'" :rules="{
+            required: true,
+            trigger: 'change',
+            message: '请选择'
+          }">
+            <el-select v-if="isTrue" v-model="row.ifReasonMatch" placeholder="请选择" clearable style="width: 100%"
+              @change="listChange('ifReasonMatch', row.ifReasonMatch)">
+              <el-option label="是" :value="1" />
+              <el-option label="否" :value="0" />
+            </el-select>
+            <div v-else>{{ row.ifReasonMatch ? '是' : '否' }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerIfReasonMatch="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <!--////-->
+        <!--  ///  技术员审核展示字段 -->
+        <template v-slot:unqualifiedReasonAnalysis="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.unqualifiedReasonAnalysis'"
+            :rules="{ required: true, trigger: 'blur', message: '请输入' }">
+            <el-input v-if="isTrue" v-model="row.unqualifiedReasonAnalysis"></el-input>
+            <div v-else>{{ row.unqualifiedReasonAnalysis }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:unqualifiedReasonAnalysisView="{ row, $index }">
+          <el-form-item>
+            <div>{{ row.unqualifiedReasonAnalysis }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerUnqualifiedReasonAnalysis="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:unqualifiedType="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.unqualifiedType'"
+            :rules="{ required: true, trigger: 'blur', message: '请输入' }">
+            <DictSelection dict-name="产品不合格类型" multiple collapse-tags clearable v-if="isTrue"
+              v-model="row.unqualifiedTypeList" @change="
+                (val) =>
+                  changeGetValue(
+                    val,
+                    row,
+                    'dictList',
+                    'unqualifiedType',
+                    'unqualifiedTypeName',
+                    $index
+                  )
+              ">
+            </DictSelection>
 
-                <!--                <el-input-->
-                <!--                  v-if="isTrue"-->
-                <!--                  v-model="row.unqualifiedType"-->
-                <!--                ></el-input>-->
-                <div v-else>{{ row.unqualifiedTypeName }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:unqualifiedTypeView="{ row, $index }">
-              <el-form-item>
-                <div>{{ row.unqualifiedTypeName }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerUnqualifiedType="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:handleWay="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.handleWay'"
-                :rules="{ required: true, trigger: 'blur', message: '请输入' }"
-              >
-                <el-input v-if="isTrue" v-model="row.handleWay"></el-input>
-                <div v-else>{{ row.handleWay }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerHandleWay="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:handleOpinion="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.handleOpinion'"
-                :rules="{ required: true, trigger: 'blur', message: '请输入' }"
-              >
-                <el-input v-if="isTrue" v-model="row.handleOpinion"></el-input>
-                <div v-else>{{ row.handleOpinion }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerHandleOpinion="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:handleOpinionView="{ row, $index }">
-              <el-form-item>
-                <div>{{ row.handleOpinion }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerHandleOpinion="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <!--////-->
-            <!--  ///  生产员审核 -->
-            <template v-slot:inOrOut="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.inOrOut'"
-                :rules="{
-                  required: true,
-                  trigger: 'change',
-                  message: '请选择'
-                }"
-              >
-                <el-select
-                  v-if="isTrue"
-                  v-model="row.inOrOut"
-                  @change="listChange('inOrOut', row.inOrOut,'inOrOut')"
-                >
-                  <el-option label="内部" :value="1" />
-                  <el-option label="外部" :value="2" />
-                </el-select>
-                <div v-else>{{
-                  row.inOrOut && (row.inOrOut == 1 ? '内部' : '外部')
-                }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerInOrOut="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:outerInfo="{ row }">
-              <el-form-item prop="outerInfo">
-                <el-input
-                  v-if="isTrue && row.inOrOut == 2"
-                  v-model="row.outerInfo"
-                  @click.native="getParentList"
-                ></el-input>
+            <!--                <el-input-->
+            <!--                  v-if="isTrue"-->
+            <!--                  v-model="row.unqualifiedType"-->
+            <!--                ></el-input>-->
+            <div v-else>{{ row.unqualifiedTypeName }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:unqualifiedTypeView="{ row, $index }">
+          <el-form-item>
+            <div>{{ row.unqualifiedTypeName }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerUnqualifiedType="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:handleWay="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.handleWay'"
+            :rules="{ required: true, trigger: 'blur', message: '请输入' }">
+            <el-input v-if="isTrue" v-model="row.handleWay"></el-input>
+            <div v-else>{{ row.handleWay }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerHandleWay="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:handleOpinion="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.handleOpinion'"
+            :rules="{ required: true, trigger: 'blur', message: '请输入' }">
+            <el-input v-if="isTrue" v-model="row.handleOpinion"></el-input>
+            <div v-else>{{ row.handleOpinion }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerHandleOpinion="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:handleOpinionView="{ row, $index }">
+          <el-form-item>
+            <div>{{ row.handleOpinion }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerHandleOpinion="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <!--////-->
+        <!--  ///  生产员审核 -->
+        <template v-slot:inOrOut="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.inOrOut'" :rules="{
+            required: true,
+            trigger: 'change',
+            message: '请选择'
+          }">
+            <el-select v-if="isTrue" v-model="row.inOrOut" @change="listChange('inOrOut', row.inOrOut, 'inOrOut')">
+              <el-option label="内部" :value="1" />
+              <el-option label="外部" :value="2" />
+            </el-select>
+            <div v-else>{{
+              row.inOrOut && (row.inOrOut == 1 ? '内部' : '外部')
+            }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerInOrOut="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:outerInfo="{ row }">
+          <el-form-item prop="outerInfo">
+            <el-input v-if="isTrue && row.inOrOut == 2" v-model="row.outerInfo"
+              @click.native="getParentList"></el-input>
 
-                <div v-else>{{ row.outerInfo }}</div>
-              </el-form-item>
-            </template>
-            <!--////-->
-            <!--  ///  质检员反馈 -->
-            <template v-slot:improveCorrect="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.improveCorrect'"
-                :rules="{ required: true, trigger: 'blur', message: '请输入' }"
-              >
-                <!-- <el-input v-if="isTrue" v-model="row.improveCorrect"></el-input>
+            <div v-else>{{ row.outerInfo }}</div>
+          </el-form-item>
+        </template>
+        <!--////-->
+        <!--  ///  质检员反馈 -->
+        <template v-slot:improveCorrect="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.improveCorrect'"
+            :rules="{ required: true, trigger: 'blur', message: '请输入' }">
+            <!-- <el-input v-if="isTrue" v-model="row.improveCorrect"></el-input>
                 <div v-else>{{ row.improveCorrect }}</div> -->
 
-                <el-select
-                  v-if="isTrue"
-                  v-model="row.improveCorrect"
-                  placeholder="请选择"
-                  clearable
-                  style="width: 100%"
-                  @change="listChange('improveCorrect', row.improveCorrect)"
-                >
-                  <el-option label="是" value="是" />
-                  <el-option label="否" value="否" />
-                </el-select>
-                <div v-else>{{ row.improveCorrect }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerImproveCorrect="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:improveOpinion="{ row, $index }">
-              <el-form-item
-                :prop="'detailList.' + $index + '.improveOpinion'"
-                :rules="{ required: true, trigger: 'blur', message: '请输入' }"
-              >
-                <el-input v-if="isTrue" v-model="row.improveOpinion"></el-input>
-                <div v-else>{{ row.improveOpinion }}</div>
-              </el-form-item>
-            </template>
-            <template v-slot:headerImproveOpinion="{ column }">
-              <span class="is-required">{{ column.label }}</span>
-            </template>
-            <template v-slot:technicalDrawings="scope">
-              <el-form-item
-                style="margin-bottom: 20px"
-                :prop="'detailList.' + scope.$index + '.technicalDrawings'"
-              >
-                <fileMain
-                  v-model="scope.row.technicalDrawings"
-                  type="view"
-                ></fileMain>
-              </el-form-item>
-            </template>
-            <!--////-->
-          </ele-pro-table>
-        </el-form>
-      </el-tab-pane>
-      <el-tab-pane v-if="isShowReturnOrder" label="入库明细" name="入库明细">
-        <!-- <inbound-details
-          ref="inboundDetails"
-          :returnDetailsForm="form"
-        ></inbound-details> -->
-        <add
-          ref="add"
-          :form="form"
-          v-if="isShowReturnOrder && taskDefinitionKey == 'storeman'"
-          :bizType="6"
-          :sourceBizNo="form.returnHandleNo"
-          :detailList="detailList"
-          :isMoreProduct="true"
-        ></add>
+            <el-select v-if="isTrue" v-model="row.improveCorrect" placeholder="请选择" clearable style="width: 100%"
+              @change="listChange('improveCorrect', row.improveCorrect)">
+              <el-option label="是" value="是" />
+              <el-option label="否" value="否" />
+            </el-select>
+            <div v-else>{{ row.improveCorrect }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerImproveCorrect="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:improveOpinion="{ row, $index }">
+          <el-form-item :prop="'detailList.' + $index + '.improveOpinion'"
+            :rules="{ required: true, trigger: 'blur', message: '请输入' }">
+            <el-input v-if="isTrue" v-model="row.improveOpinion"></el-input>
+            <div v-else>{{ row.improveOpinion }}</div>
+          </el-form-item>
+        </template>
+        <template v-slot:headerImproveOpinion="{ column }">
+          <span class="is-required">{{ column.label }}</span>
+        </template>
+        <template v-slot:technicalDrawings="scope">
+          <el-form-item style="margin-bottom: 20px" :prop="'detailList.' + scope.$index + '.technicalDrawings'">
+            <fileMain v-model="scope.row.technicalDrawings" type="view"></fileMain>
+          </el-form-item>
+        </template>
+        <!--////-->
+      </ele-pro-table>
+    </el-form>
+
+    <!-- 入库明细 -->
+    <div v-if="isShowReturnOrder">
+      <add ref="add" :form="form" v-if="isShowReturnOrder && taskDefinitionKey == 'storeman'" :bizType="6"
+        :sourceBizNo="form.returnHandleNo" :detailList="detailList" :isMoreProduct="true"></add>
 
-        <inboundDetails
-          :businessId="returnInReceiptId"
-          :isIds="true"
-          v-if="isShowReturnOrder && taskDefinitionKey != 'storeman'"
-        ></inboundDetails>
-      </el-tab-pane>
-    </el-tabs>
+      <inboundDetails :businessId="returnInReceiptId" :isIds="true"
+        v-if="isShowReturnOrder && taskDefinitionKey != 'storeman'"></inboundDetails>
+    </div>
 
     <!--出库详情-->
-    <outbound-details-dialog
-      v-if="outboundDetailsDialogFlag"
-      ref="outboundDetailsDialogRef"
-      :outboundDetailsDialogFlag.sync="outboundDetailsDialogFlag"
-      @saveDate="saveDate"
-    ></outbound-details-dialog>
+    <outbound-details-dialog v-if="outboundDetailsDialogFlag" ref="outboundDetailsDialogRef"
+      :outboundDetailsDialogFlag.sync="outboundDetailsDialogFlag" @saveDate="saveDate"></outbound-details-dialog>
     <head-list ref="headRef" @changeParent="changeHead"></head-list>
     <parentList ref="parentListRef" @changeParent="changeParent"></parentList>
   </div>
 </template>
 
 <script>
-  // import inboundDetails from './inboundDetails.vue';
-  import outboundDetailsDialog from './outboundDetailsDialog.vue';
-  import add from '@/views/bpm/stockManagement/storage.vue';
-  import inboundDetails from '@/views/bpm/stockManagement/details.vue';
+// import inboundDetails from './inboundDetails.vue';
+import outboundDetailsDialog from './outboundDetailsDialog.vue';
+import add from '@/views/bpm/stockManagement/storage.vue';
+import inboundDetails from '@/views/bpm/stockManagement/details.vue';
 
-  import headList from '@/components/headList';
-  import {
-    getOutInByIdAPI,
-    saleReturnGetByIdAPI
-  } from '@/api/bpm/components/saleManage/saleorder';
-  import { deepClone } from '@/utils';
-  import { EventBus } from './eventBus.js';
-  import { mapActions, mapGetters } from 'vuex';
-  import dictEnum from '@/enum/dict';
-  import fileMain from '@/components/addDoc/index.vue';
-  import parentList from '@/views/bpm/handleTask/components/supplierManage/parentList.vue';
-  import dictMixins from '@/mixins/dictMixins';
-  export default {
-    mixins: [dictMixins],
-    name: 'customerReturnOrder',
-    props: {
-      taskDefinitionKey: {
-        type: String,
-        default: 'stater'
-      },
-      activeComp: {
-        type: String,
-        default: 'stater'
-      },
-      permissionType: {
-        type: String,
-        default: 'view'
-      },
-      businessId: {
-        type: String,
-        default: ''
-      },
-      isShowReturnOrder: {
-        type: Boolean,
-        default: false
-      }
+import headList from '@/components/headList';
+import {
+  getOutInByIdAPI,
+  saleReturnGetByIdAPI
+} from '@/api/bpm/components/saleManage/saleorder';
+import { deepClone } from '@/utils';
+import { EventBus } from './eventBus.js';
+import { mapActions, mapGetters } from 'vuex';
+import dictEnum from '@/enum/dict';
+import fileMain from '@/components/addDoc/index.vue';
+import parentList from '@/views/bpm/handleTask/components/supplierManage/parentList.vue';
+import dictMixins from '@/mixins/dictMixins';
+export default {
+  mixins: [dictMixins],
+  name: 'customerReturnOrder',
+  props: {
+    taskDefinitionKey: {
+      type: String,
+      default: 'stater'
     },
-    components: {
-      outboundDetailsDialog,
-      headList,
-      inboundDetails,
-      add,
-      fileMain,
-      parentList
+    activeComp: {
+      type: String,
+      default: 'stater'
     },
-    data() {
-      return {
-        activeName: '退货物品明细',
-        title: '客户退货处理单',
-        outboundDetailsDialogFlag: false,
-        isTrue: false,
-        warehousingMaterialList: [],
-        materialCodeReqList: [],
-        metaList: [],
-        form: {
-          detailList: []
-        },
-        detailList: [],
-        rules: {},
-        returnInReceiptId: ''
-      };
+    permissionType: {
+      type: String,
+      default: 'view'
+    },
+    businessId: {
+      type: String,
+      default: ''
     },
-    computed: {
-      columns() {
-        let basicFields = [
+    isShowReturnOrder: {
+      type: Boolean,
+      default: false
+    }
+  },
+  components: {
+    outboundDetailsDialog,
+    headList,
+    inboundDetails,
+    add,
+    fileMain,
+    parentList
+  },
+  data() {
+    return {
+      activeName: '退货物品明细',
+      title: '客户退货处理单',
+      outboundDetailsDialogFlag: false,
+      isTrue: false,
+      warehousingMaterialList: [],
+      materialCodeReqList: [],
+      metaList: [],
+      form: {
+        detailList: []
+      },
+      detailList: [],
+      rules: {},
+      returnInReceiptId: ''
+    };
+  },
+  computed: {
+    columns() {
+      let basicFields = [
+        {
+          width: 45,
+          type: 'index',
+          columnKey: 'index',
+          align: 'center',
+          fixed: 'left'
+        },
+        {
+          minWidth: 160,
+          prop: 'productCode',
+          label: '编码',
+          showOverflowTooltip: true,
+          align: 'center'
+        },
+        {
+          minWidth: 120,
+          prop: 'productName',
+          label: '名称',
+          showOverflowTooltip: true,
+          align: 'center'
+        },
+
+        {
+          minWidth: 160,
+          prop: 'batchNo',
+          label: '批次号',
+          showOverflowTooltip: true,
+          slot: 'batchNo',
+          align: 'center'
+        },
+        {
+          minWidth: 160,
+          prop: 'barcodes',
+          label: '发货条码',
+          showOverflowTooltip: true,
+          slot: 'barcodes',
+          align: 'center'
+        },
+        {
+          minWidth: 120,
+          prop: 'materielDesignation',
+          label: '物料代号',
+          showOverflowTooltip: true,
+          align: 'center'
+        },
+        {
+          minWidth: 120,
+          prop: 'clientCode',
+          label: '客户代号',
+          showOverflowTooltip: true,
+          align: 'center'
+        },
+        {
+          minWidth: 120,
+          prop: 'engrave',
+          label: '刻码',
+          showOverflowTooltip: true,
+          align: 'center'
+        },
+        {
+          minWidth: 160,
+          prop: 'packageNo',
+          align: 'center',
+          label: '包装编码',
+          showOverflowTooltip: true
+        },
+        {
+          minWidth: 100,
+          prop: 'packingQuantity',
+          align: 'center',
+          label: '包装数量',
+          showOverflowTooltip: true
+        },
+        {
+          minWidth: 120,
+          prop: 'packingUnit',
+          align: 'center',
+          label: '包装单位',
+          showOverflowTooltip: true
+        },
+        {
+          minWidth: 100,
+          prop: 'measurementCount',
+          label: '计量数量',
+          showOverflowTooltip: true,
+          align: 'center'
+        },
+        {
+          minWidth: 150,
+          prop: 'measurementUnit',
+          label: '计量单位',
+          showOverflowTooltip: true,
+          align: 'center'
+        },
+        // {
+        //   width: 100,
+        //   prop: 'singlePrice',
+        //   label: '单价',
+        //   slot: 'singlePrice',
+        //   align: 'center'
+        // },
+        // {
+        //   width: 100,
+        //   prop: 'totalPrice',
+        //   label: '合计',
+        //   align: 'center'
+        // },
+
+        {
+          minWidth: 80,
+          prop: 'weight',
+          label: '重量',
+          slot: 'weight',
+          showOverflowTooltip: true,
+          align: 'center'
+        },
+        {
+          minWidth: 100,
+          prop: 'weightUnit',
+          label: '重量单位',
+          showOverflowTooltip: true,
+          align: 'center'
+        },
+        {
+          width: 240,
+          prop: 'technologyRouteName',
+          label: '工艺路线',
+          slot: 'technologyRouteName',
+          align: 'center'
+        },
+        {
+          width: 240,
+          prop: 'technicalDrawings',
+          label: '技术图纸',
+          slot: 'technicalDrawings',
+          align: 'center'
+        },
+        {
+          prop: 'provenance',
+          label: '产地',
+          slot: 'provenance',
+          align: 'center',
+
+          minWidth: 200,
+          showOverflowTooltip: true,
+          formatter: (row, column) => {
+            return row.provenance && row.provenance.length
+              ? row.provenance
+                .map((item) => this.getDictValue('产地', item))
+                .join(',')
+              : '';
+          }
+        },
+        {
+          minWidth: 140,
+          prop: 'reason',
+          label: '客户退货理由',
+          align: 'center',
+          slot: 'reason',
+          headerSlot: 'headerReason'
+        },
+        {
+          minWidth: 180,
+          prop: 'feedbackDate',
+          label: '客户反馈日期',
+          align: 'center',
+          slot: 'feedbackDate'
+        },
+        {
+          minWidth: 180,
+          prop: 'sendDate',
+          label: '客户发出日期',
+          slot: 'sendDate',
+          align: 'center',
+          headerSlot: 'headerSendDate'
+        }
+      ];
+      let processNodes = {
+        //仓管入库
+        storeman: [
           {
-            width: 45,
-            type: 'index',
-            columnKey: 'index',
+            minWidth: 140,
+            prop: 'ifPackageOk',
+            label: '包装完好与否',
             align: 'center',
-            fixed: 'left'
+            slot: 'ifPackageOk',
+            headerSlot: 'headerIfPackageOk'
           },
           {
-            minWidth: 160,
-            prop: 'productCode',
-            label: '编码',
-            showOverflowTooltip: true,
-            align: 'center'
-          },
-          {
-            minWidth: 120,
-            prop: 'productName',
-            label: '名称',
-            showOverflowTooltip: true,
-            align: 'center'
-          },
-
+            minWidth: 140,
+            prop: 'unpackUserName',
+            label: '拆包装责任人',
+            align: 'center',
+            slot: 'unpackUserName',
+            headerSlot: 'headerUnpackUserName'
+          }
+        ],
+        //质量部主管指派
+        QCLeader: [
           {
-            minWidth: 160,
-            prop: 'batchNo',
-            label: '批次号',
-            showOverflowTooltip: true,
-            slot: 'batchNo',
-            align: 'center'
+            minWidth: 140,
+            prop: 'ifPackageOk',
+            label: '包装完好与否',
+            align: 'center',
+            slot: 'ifPackageOk',
+            headerSlot: 'headerIfPackageOk'
           },
           {
-            minWidth: 160,
-            prop: 'barcodes',
-            label: '发货条码',
-            showOverflowTooltip: true,
-            slot: 'barcodes',
-            align: 'center'
-          },
+            minWidth: 140,
+            prop: 'unpackUserName',
+            label: '拆包装责任人',
+            align: 'center',
+            slot: 'unpackUserName',
+            headerSlot: 'headerUnpackUserName'
+          }
+        ],
+        //质检员审核
+        QCApprove: [
           {
-            minWidth: 120,
-            prop: 'materielDesignation',
-            label: '物料代号',
-            showOverflowTooltip: true,
-            align: 'center'
-          },
+            minWidth: 250,
+            prop: 'ifReasonMatch',
+            label: '退货原因是否与退货信息一致',
+            align: 'center',
+            slot: 'ifReasonMatch',
+            headerSlot: 'headerIfReasonMatch'
+          }
+          // {
+          //   minWidth: 140,
+          //   prop: 'reason',
+          //   label: '客户退货理由',
+          //   align: 'center',
+          //   slot: 'reason',
+          //   headerSlot: 'headerReason'
+          // }
+        ],
+        //技术部主管指派
+        techLeader: [
           {
-            minWidth: 120,
-            prop: 'clientCode',
-            label: '客户代号',
-            showOverflowTooltip: true,
-            align: 'center'
-          },
+            minWidth: 250,
+            prop: 'ifReasonMatch',
+            label: '退货原因是否与退货信息一致',
+            align: 'center',
+            slot: 'ifReasonMatch',
+            headerSlot: 'headerIfReasonMatch'
+          }
+          // {
+          //   minWidth: 140,
+          //   prop: 'reason',
+          //   label: '客户退货理由',
+          //   align: 'center',
+          //   slot: 'reason',
+          //   headerSlot: 'headerReason'
+          // }
+        ],
+        //技术员审核
+        techApprove: [
           {
-            minWidth: 120,
-            prop: 'engrave',
-            label: '刻码',
-            showOverflowTooltip: true,
-            align: 'center'
+            minWidth: 250,
+            prop: 'unqualifiedReasonAnalysis',
+            label: '不合格原因分析',
+            align: 'center',
+            slot: 'unqualifiedReasonAnalysis',
+            headerSlot: 'headerUnqualifiedReasonAnalysis'
           },
           {
-            minWidth: 160,
-            prop: 'packageNo',
+            minWidth: 200,
+            prop: 'unqualifiedType',
+            label: '不合格类型',
             align: 'center',
-            label: '包装编码',
-            showOverflowTooltip: true
+            slot: 'unqualifiedType',
+            headerSlot: 'headerUnqualifiedType'
           },
+          // {
+          //   minWidth: 250,
+          //   prop: 'handleWay',
+          //   label: '不合格品处理方式',
+          //   align: 'center',
+          //   slot: 'handleWay',
+          //   headerSlot: 'headerHandleWay'
+          // },
           {
-            minWidth: 100,
-            prop: 'packingQuantity',
+            minWidth: 250,
+            prop: 'handleOpinion',
+            label: '对不合格品的处理意见',
             align: 'center',
-            label: '包装数量',
-            showOverflowTooltip: true
-          },
+            slot: 'handleOpinion',
+            headerSlot: 'headerHandleOpinion'
+          }
+        ],
+        //生产部主管指派
+        produceLeader: [
           {
-            minWidth: 120,
-            prop: 'packingUnit',
+            minWidth: 250,
+            prop: 'unqualifiedReasonAnalysis',
+            label: '不合格原因分析',
             align: 'center',
-            label: '包装单位',
-            showOverflowTooltip: true
+            slot: 'unqualifiedReasonAnalysis',
+            headerSlot: 'headerUnqualifiedReasonAnalysis'
           },
           {
-            minWidth: 100,
-            prop: 'measurementCount',
-            label: '计量数量',
-            showOverflowTooltip: true,
-            align: 'center'
+            minWidth: 250,
+            prop: 'unqualifiedType',
+            label: '不合格类型',
+            align: 'center',
+            slot: 'unqualifiedType',
+            headerSlot: 'headerUnqualifiedType'
           },
           {
-            minWidth: 150,
-            prop: 'measurementUnit',
-            label: '计量单位',
-            showOverflowTooltip: true,
-            align: 'center'
-          },
-          // {
-          //   width: 100,
-          //   prop: 'singlePrice',
-          //   label: '单价',
-          //   slot: 'singlePrice',
-          //   align: 'center'
-          // },
-          // {
-          //   width: 100,
-          //   prop: 'totalPrice',
-          //   label: '合计',
-          //   align: 'center'
-          // },
-
+            minWidth: 250,
+            prop: 'handleOpinion',
+            label: '对不合格品的处理意见',
+            align: 'center',
+            slot: 'handleOpinion',
+            headerSlot: 'headerHandleOpinion'
+          }
+        ],
+        //生产员审核
+        produceApprove: [
           {
-            minWidth: 80,
-            prop: 'weight',
-            label: '重量',
-            slot: 'weight',
-            showOverflowTooltip: true,
-            align: 'center'
+            minWidth: 130,
+            prop: 'inOrOut',
+            label: '内部或外部',
+            align: 'center',
+            slot: 'inOrOut',
+            headerSlot: 'headerInOrOut'
           },
           {
-            minWidth: 100,
-            prop: 'weightUnit',
-            label: '重量单位',
-            showOverflowTooltip: true,
-            align: 'center'
+            minWidth: 180,
+            prop: 'outerInfo',
+            label: '外协单位',
+            align: 'center',
+            slot: 'outerInfo'
           },
           {
-            width: 240,
-            prop: 'technologyRouteName',
-            label: '工艺路线',
-            slot: 'technologyRouteName',
-            align: 'center'
+            minWidth: 250,
+            prop: 'unqualifiedReasonAnalysis',
+            label: '不合格原因分析',
+            align: 'center',
+            slot: 'unqualifiedReasonAnalysisView'
           },
           {
-            width: 240,
-            prop: 'technicalDrawings',
-            label: '技术图纸',
-            slot: 'technicalDrawings',
+            minWidth: 250,
+            prop: 'unqualifiedTypeName',
+            label: '不合格类型',
             align: 'center'
           },
           {
-            prop: 'provenance',
-            label: '产地',
-            slot: 'provenance',
-            align: 'center',
-
-            minWidth: 200,
-            showOverflowTooltip: true,
-            formatter: (row, column) => {
-              return row.provenance && row.provenance.length
-                ? row.provenance
-                    .map((item) => this.getDictValue('产地', item))
-                    .join(',')
-                : '';
-            }
-          },
-          {
-            minWidth: 140,
-            prop: 'reason',
-            label: '客户退货理由',
+            minWidth: 250,
+            prop: 'handleOpinion',
+            label: '对不合格品的处理意见',
             align: 'center',
-            slot: 'reason',
-            headerSlot: 'headerReason'
-          },
+            slot: 'handleOpinionView'
+          }
+        ],
+        //质检员反馈
+        QCApprove2: [
           {
-            minWidth: 180,
-            prop: 'feedbackDate',
-            label: '客户反馈日期',
+            minWidth: 250,
+            prop: 'improveCorrect',
+            label: '不合格原因是否改善到位',
             align: 'center',
-            slot: 'feedbackDate'
+            slot: 'improveCorrect',
+            headerSlot: 'headerImproveCorrect'
           },
           {
-            minWidth: 180,
-            prop: 'sendDate',
-            label: '客户发出日期',
-            slot: 'sendDate',
+            minWidth: 250,
+            prop: 'improveOpinion',
+            label: '对改善后产品处理意见',
             align: 'center',
-            headerSlot: 'headerSendDate'
+            slot: 'improveOpinion',
+            headerSlot: 'headerImproveOpinion'
           }
-        ];
-        let processNodes = {
-          //仓管入库
-          storeman: [
-            {
-              minWidth: 140,
-              prop: 'ifPackageOk',
-              label: '包装完好与否',
-              align: 'center',
-              slot: 'ifPackageOk',
-              headerSlot: 'headerIfPackageOk'
-            },
-            {
-              minWidth: 140,
-              prop: 'unpackUserName',
-              label: '拆包装责任人',
-              align: 'center',
-              slot: 'unpackUserName',
-              headerSlot: 'headerUnpackUserName'
-            }
-          ],
-          //质量部主管指派
-          QCLeader: [
-            {
-              minWidth: 140,
-              prop: 'ifPackageOk',
-              label: '包装完好与否',
-              align: 'center',
-              slot: 'ifPackageOk',
-              headerSlot: 'headerIfPackageOk'
-            },
-            {
-              minWidth: 140,
-              prop: 'unpackUserName',
-              label: '拆包装责任人',
-              align: 'center',
-              slot: 'unpackUserName',
-              headerSlot: 'headerUnpackUserName'
-            }
-          ],
-          //质检员审核
-          QCApprove: [
-            {
-              minWidth: 250,
-              prop: 'ifReasonMatch',
-              label: '退货原因是否与退货信息一致',
-              align: 'center',
-              slot: 'ifReasonMatch',
-              headerSlot: 'headerIfReasonMatch'
-            }
-            // {
-            //   minWidth: 140,
-            //   prop: 'reason',
-            //   label: '客户退货理由',
-            //   align: 'center',
-            //   slot: 'reason',
-            //   headerSlot: 'headerReason'
-            // }
-          ],
-          //技术部主管指派
-          techLeader: [
-            {
-              minWidth: 250,
-              prop: 'ifReasonMatch',
-              label: '退货原因是否与退货信息一致',
-              align: 'center',
-              slot: 'ifReasonMatch',
-              headerSlot: 'headerIfReasonMatch'
-            }
-            // {
-            //   minWidth: 140,
-            //   prop: 'reason',
-            //   label: '客户退货理由',
-            //   align: 'center',
-            //   slot: 'reason',
-            //   headerSlot: 'headerReason'
-            // }
-          ],
-          //技术员审核
-          techApprove: [
-            {
-              minWidth: 250,
-              prop: 'unqualifiedReasonAnalysis',
-              label: '不合格原因分析',
-              align: 'center',
-              slot: 'unqualifiedReasonAnalysis',
-              headerSlot: 'headerUnqualifiedReasonAnalysis'
-            },
-            {
-              minWidth: 200,
-              prop: 'unqualifiedType',
-              label: '不合格类型',
-              align: 'center',
-              slot: 'unqualifiedType',
-              headerSlot: 'headerUnqualifiedType'
-            },
-            // {
-            //   minWidth: 250,
-            //   prop: 'handleWay',
-            //   label: '不合格品处理方式',
-            //   align: 'center',
-            //   slot: 'handleWay',
-            //   headerSlot: 'headerHandleWay'
-            // },
-            {
-              minWidth: 250,
-              prop: 'handleOpinion',
-              label: '对不合格品的处理意见',
-              align: 'center',
-              slot: 'handleOpinion',
-              headerSlot: 'headerHandleOpinion'
-            }
-          ],
-          //生产部主管指派
-          produceLeader: [
-            {
-              minWidth: 250,
-              prop: 'unqualifiedReasonAnalysis',
-              label: '不合格原因分析',
-              align: 'center',
-              slot: 'unqualifiedReasonAnalysis',
-              headerSlot: 'headerUnqualifiedReasonAnalysis'
-            },
-            {
-              minWidth: 250,
-              prop: 'unqualifiedType',
-              label: '不合格类型',
-              align: 'center',
-              slot: 'unqualifiedType',
-              headerSlot: 'headerUnqualifiedType'
-            },
-            {
-              minWidth: 250,
-              prop: 'handleOpinion',
-              label: '对不合格品的处理意见',
-              align: 'center',
-              slot: 'handleOpinion',
-              headerSlot: 'headerHandleOpinion'
-            }
-          ],
-          //生产员审核
-          produceApprove: [
-            {
-              minWidth: 130,
-              prop: 'inOrOut',
-              label: '内部或外部',
-              align: 'center',
-              slot: 'inOrOut',
-              headerSlot: 'headerInOrOut'
-            },
-            {
-              minWidth: 180,
-              prop: 'outerInfo',
-              label: '外协单位',
-              align: 'center',
-              slot: 'outerInfo'
-            },
-            {
-              minWidth: 250,
-              prop: 'unqualifiedReasonAnalysis',
-              label: '不合格原因分析',
-              align: 'center',
-              slot: 'unqualifiedReasonAnalysisView'
-            },
-            {
-              minWidth: 250,
-              prop: 'unqualifiedTypeName',
-              label: '不合格类型',
-              align: 'center'
-            },
-            {
-              minWidth: 250,
-              prop: 'handleOpinion',
-              label: '对不合格品的处理意见',
-              align: 'center',
-              slot: 'handleOpinionView'
-            }
-          ],
-          //质检员反馈
-          QCApprove2: [
-            {
-              minWidth: 250,
-              prop: 'improveCorrect',
-              label: '不合格原因是否改善到位',
-              align: 'center',
-              slot: 'improveCorrect',
-              headerSlot: 'headerImproveCorrect'
-            },
-            {
-              minWidth: 250,
-              prop: 'improveOpinion',
-              label: '对改善后产品处理意见',
-              align: 'center',
-              slot: 'improveOpinion',
-              headerSlot: 'headerImproveOpinion'
-            }
-          ]
-        };
-        processNodes[this.activeComp] &&
-          basicFields.push(...processNodes[this.activeComp]);
-        //
-        this.isTrue =
-          this.activeComp == this.taskDefinitionKey &&
-          this.permissionType !== 'view';
-        return basicFields;
-      },
-      ...mapGetters(['dict', 'getDict']),
-      dictList() {
-        return this.dict[dictEnum['产品不合格类型']] || [];
-      }
-    },
-    created() {
-      this.requestDict('产地');
+        ]
+      };
+      processNodes[this.activeComp] &&
+        basicFields.push(...processNodes[this.activeComp]);
+      //
+      this.isTrue =
+        this.activeComp == this.taskDefinitionKey &&
+        this.permissionType !== 'view';
+      return basicFields;
     },
-    mounted() {
-      this.getReturnInfo(this.businessId);
+    ...mapGetters(['dict', 'getDict']),
+    dictList() {
+      return this.dict[dictEnum['产品不合格类型']] || [];
+    }
+  },
+  created() {
+    this.requestDict('产地');
+  },
+  mounted() {
+    this.getReturnInfo(this.businessId);
+  },
+  methods: {
+    handleClick(val) {
+      this.activeName = val.name;
+      if (val.name === '入库明细') {
+        // this.$refs.inboundDetails.initialize();
+      }
     },
-    methods: {
-      handleClick(val) {
-        this.activeName = val.name;
-        if (val.name === '入库明细') {
-          // this.$refs.inboundDetails.initialize();
-        }
-      },
-      async getReturnInfo(businessId) {
-        this.form = await saleReturnGetByIdAPI(businessId);
-        if (this.form.returnInReceiptId) {
-          this.returnInReceiptId = this.form.returnInReceiptId.split(',');
-        }
+    async getReturnInfo(businessId) {
+      this.form = await saleReturnGetByIdAPI(businessId);
+      if (this.form.returnInReceiptId) {
+        this.returnInReceiptId = this.form.returnInReceiptId.split(',');
+      }
 
-        this.detailList = this.form.detailList.map((item) => {
-          item['packingWeight'] = item.weight;
-          item['quantity'] = item.measurementCount;
-          item['measuringUnit'] = item.measurementUnit;
-          return item;
-        });
+      this.detailList = this.form.detailList.map((item) => {
+        item['packingWeight'] = item.weight;
+        item['quantity'] = item.measurementCount;
+        item['measuringUnit'] = item.measurementUnit;
+        return item;
+      });
 
-        this.$nextTick(() => {
-          this.$refs.table.reRenderTable();
-        });
-      },
-      listChange(key, value, row) {
-        this.form.detailList.forEach((item, index) => {
-          if (!this.form.detailList[index][key]) {
-            if (row == 'outerInfo') {
-              if (this.form.detailList[index].inOrOut == 2) {
-                this.$set(this.form.detailList[index], key, value);
-              }
-            } else {
+      this.$nextTick(() => {
+        this.$refs.table.reRenderTable();
+      });
+    },
+    listChange(key, value, row) {
+      this.form.detailList.forEach((item, index) => {
+        if (!this.form.detailList[index][key]) {
+          if (row == 'outerInfo') {
+            if (this.form.detailList[index].inOrOut == 2) {
               this.$set(this.form.detailList[index], key, value);
             }
+          } else {
+            this.$set(this.form.detailList[index], key, value);
           }
-        });
-        if (key == 'inOrOut') {
-          row.outerInfo = '';
         }
-      },
-      changeGetValue(val, row, list, key, value, index) {
-        if (!val.length) {
-          row[value] = '';
-          row[key] = '';
-        }
-        let findList =
-          this[list].filter((item) => val.includes(item.dictCode)) || [];
-        row[value] = findList.map((item) => item.dictValue).join(',');
-        row[key] = val.join(',');
-        this.$set(this.form.detailList, index, row);
-      },
-      handleSelectGoods() {
-        this.outboundDetailsDialogFlag = true;
-        this.$nextTick(() => {
-          this.$refs.outboundDetailsDialogRef.init();
-        });
-      },
-      //删除
-      remove(row, index) {
-        this.form.detailList.splice(index, 1);
-      },
-      //选择退货信息回调
-      saveDate(data) {
-        this.form.detailList.push(...data);
-      },
-      //选择负责人
-      handHead(row, index) {
-        let item = {
-          id: row.unpackUserId
-        };
-        this.$refs.headRef.open(item, index);
-      },
-      //选择负责人回调
-      changeHead(obj, index) {
-        this.$set(this.form.detailList[index], 'unpackUserId', obj.id);
-        this.$set(this.form.detailList[index], 'unpackUserName', obj.name);
-        this.listChange('unpackUserId', obj.id);
-        this.listChange('unpackUserName', obj.name);
-      },
-      //选择供应商
-      getParentList() {
-        this.$refs.parentListRef.open();
-      },
-      changeParent(data) {
-        this.listChange('outerInfo', data.name, 'outerInfo');
-      },
-      getTableValue() {
-        return new Promise((resolve) => {
-          this.$refs.formRef.validate(async (validate) => {
-            if (!validate) {
-              resolve(false);
-            } else {
-              let params = {
-                detailList: this.form.detailList,
-                returnRecordId: this.form.returnRecordId,
-                id: this.form.id,
-                returnStorageData: await this.$refs.add?.getReturnStorage()
-              };
-              resolve(params);
-            }
-          });
-        });
+      });
+      if (key == 'inOrOut') {
+        row.outerInfo = '';
+      }
+    },
+    changeGetValue(val, row, list, key, value, index) {
+      if (!val.length) {
+        row[value] = '';
+        row[key] = '';
       }
+      let findList =
+        this[list].filter((item) => val.includes(item.dictCode)) || [];
+      row[value] = findList.map((item) => item.dictValue).join(',');
+      row[key] = val.join(',');
+      this.$set(this.form.detailList, index, row);
+    },
+    handleSelectGoods() {
+      this.outboundDetailsDialogFlag = true;
+      this.$nextTick(() => {
+        this.$refs.outboundDetailsDialogRef.init();
+      });
+    },
+    //删除
+    remove(row, index) {
+      this.form.detailList.splice(index, 1);
+    },
+    //选择退货信息回调
+    saveDate(data) {
+      this.form.detailList.push(...data);
+    },
+    //选择负责人
+    handHead(row, index) {
+      let item = {
+        id: row.unpackUserId
+      };
+      this.$refs.headRef.open(item, index);
+    },
+    //选择负责人回调
+    changeHead(obj, index) {
+      this.$set(this.form.detailList[index], 'unpackUserId', obj.id);
+      this.$set(this.form.detailList[index], 'unpackUserName', obj.name);
+      this.listChange('unpackUserId', obj.id);
+      this.listChange('unpackUserName', obj.name);
+    },
+    //选择供应商
+    getParentList() {
+      this.$refs.parentListRef.open();
+    },
+    changeParent(data) {
+      this.listChange('outerInfo', data.name, 'outerInfo');
+    },
+    getTableValue() {
+      return new Promise((resolve) => {
+        this.$refs.formRef.validate(async (validate) => {
+          if (!validate) {
+            resolve(false);
+          } else {
+            let params = {
+              detailList: this.form.detailList,
+              returnRecordId: this.form.returnRecordId,
+              id: this.form.id,
+              returnStorageData: await this.$refs.add?.getReturnStorage()
+            };
+            resolve(params);
+          }
+        });
+      });
     }
-  };
+  }
+};
 </script>
 <style scoped lang="scss"></style>

+ 30 - 11
src/views/bpm/stockManagement/storage.vue

@@ -280,6 +280,12 @@
                   </el-input>
                 </template>
               </el-table-column>
+              <el-table-column label="是否质检" align="center" width="80" prop="qualityControl"
+                :show-overflow-tooltip="true">
+                <template slot-scope="{ row, $index }">
+                  {{ row.qualityControl == 1 ? '是' : row.qualityControl == 0 ? '否' : '' }}
+                </template>
+              </el-table-column>
               <el-table-column label="操作" width="200" fixed="right" align="center">
                 <template slot="header" slot-scope="scope"> 操作 </template>
                 <template slot-scope="{ row, $index }">
@@ -374,7 +380,7 @@
             </template>
           </el-table-column>
 
-          <el-table-column v-if="form.isQmsCheck == 0" label="质检结果" prop="result" width="120">
+          <el-table-column label="质检结果" prop="result" width="120">
             <template slot-scope="{ row }">
               <el-select v-if="!row.isPack" @change="changeWrapStatus($event, row, '包装')" v-model="row.result"
                 placeholder="请选择">
@@ -390,6 +396,11 @@
               <span>{{ qualityStatus[row.status] }}</span>
             </template>
           </el-table-column>
+          <el-table-column label="是否质检" align="center" width="80" prop="qualityControl" :show-overflow-tooltip="true">
+            <template slot-scope="{ row, $index }">
+              {{ row.qualityControl == 1 ? '是' : row.qualityControl == 0 ? '否' : '' }}
+            </template>
+          </el-table-column>
           <el-table-column label="生产日期" prop="" width="220">
             <template slot="header" slot-scope="scope">
               <el-select filterable v-model="curDateType">
@@ -898,7 +909,7 @@ export default {
             } else {
               batchNo = batchNo1
             }
-           
+
             return {
               index: this.productList.length + index,
               categoryId: item.id, // 物品id
@@ -937,10 +948,10 @@ export default {
               warehouseName, // 仓库名称
               warehouseIds,
               warehouseNames,
-              isComeCheck: filtersItem?.isComeCheck, // 是否拆包
-
+              qualityControl: filtersItem?.isComeCheck, // 是否需要质检
             };
           });
+          console.log(this.productList, 'this.productListtttttttttttt')
           this.$nextTick(() => {
             this.listSaveArrs();
           });
@@ -1009,6 +1020,7 @@ export default {
 
           // 生成产品列表
           this.productList = res.map((item, index) => {
+            console.log(item.packingUnit, 'iiiiiii')
             // 显示规格
             let packingSpecificationLabel = this.packingSpecificationOption[
               index
@@ -1090,6 +1102,8 @@ export default {
                   break;
               }
             }
+            console.log(item.packingUnit, 'item11111111111')
+            let packingUnit = item.packingUnit;
             let singleWeight = item.singleWeight || 0; // 单重重量
             return {
               index: this.productList.length + index,
@@ -1115,7 +1129,7 @@ export default {
                   (val) => val.productCode == item.code
                 ).length
                 : this.detailList.length || this.form.detailList.length, // 包装数量
-              packingUnit: item.packingUnit, // 单位
+              packingUnit: packingUnit, // 单位
               measureQuantity: this.isMoreProduct
                 ? this.getMeasureQuantity(item.code)
                 : this.form.totalCount, // 计量数量
@@ -1149,6 +1163,7 @@ export default {
                 : warehouseNames
             };
           });
+
           let getAssetNumPr = this.isMoreProduct
             ? this.detailList.map((val) => {
               return {
@@ -1166,13 +1181,16 @@ export default {
                 num: this.detailList.length
               }
             ];
+          console.log(this.productList, 'this.productList')
+          console.log(this.detailList, 'this.detailList')
+
           // 生成包装编码
           const { data } = await storageApi.getAssetNum(getAssetNumPr);
           let packingCodeList = data;
           // 生产包装
           this.packingList = this.detailList.map((item, index) => {
 
-            console.log(item, 'itemitemitemitemitemitem2')
+            console.log(item.packingUnit, 'itemitemitemitemitemitem2')
             // 换算重量
             let weight = 0;
             if (
@@ -1574,7 +1592,6 @@ export default {
 
       // 处理产品数据
       this.productList = this.productList.map((productItem) => {
-        productItem.qualityControl = this.form.isQmsCheck; //是否质检
         return {
           ...productItem,
           outInDetailRecordRequestList: _packingList.filter(
@@ -2656,8 +2673,9 @@ export default {
             isUnpack: row.isUnpack, // 是否允许拆包
             productionDate: productionDate, // 生产日期
             purchaseDate: purchaseDate, // 采购时间
-            result: 1, // 结果(1合格 2不合格)g
-            status: this.form.isQmsCheck == 1 ? 0 : 2 // 状态(0=未质检 1待检 2已检)
+            result: 1, // 结果(1合格 2不合格)
+            qualityControl: row.qualityControl,
+            status: row.qualityControl == 1 ? 0 : 2 // 状态(0=未质检 1待检 2已检)
           };
           let outBoolen = !!this.getDict('不拆物料层规格', item.measureUnit)
             .dictValue;
@@ -2833,7 +2851,8 @@ export default {
             productionDate: productionDate, // 生产日期
             purchaseDate: purchaseDate, // 采购时间
             result: 1, // 结果(1合格 2不合格)
-            status: row.isComeCheck == 1 ? 0 : 2 // 状态(0=未质检 1待检 2已检)
+            qualityControl: row.qualityControl,
+            status: row.qualityControl == 1 ? 0 : 2 // 状态(0=未质检 1待检 2已检)
           };
           /**
            * packingUnit: row.isUnpack ? packingBoolen ? filterArr[0].conversionUnit : measureBoolen  ? row.packingSpecificationOption[2] ? row.packingSpecificationOption[2].conversionUnit
@@ -2919,7 +2938,7 @@ export default {
           packingList.push(item);
           console.log(
             packingList,
-            'packingList!!!!!!!!!!!!!!!!!!'
+            'packingList!!!!!!!!!!!!!!!!!!'
           );
         }
       }