spring
7 小时以前 b9c0cee25748ea2d5621a8ca56ceb855a9ce3700
src/views/productionManagement/processRoute/processRouteItem/index.vue
@@ -47,7 +47,13 @@
        </div>
      </div>
    </el-card>
    <div class="section-title" style="margin-bottom: 10px;">产品结构</div>
    <ProductStructureDetail
      class="product-structure-panel"
      style="margin-bottom: 20px;"
      embedded
      :bom-id="route.query.bomId"
    />
    <!-- 表格视图 -->
    <div v-if="viewMode === 'table'" class="section-header">
      <div class="section-title">工艺路线项目列表</div>
@@ -82,6 +88,21 @@
      <el-table-column label="产品名称" prop="productName" min-width="160" />
      <el-table-column label="规格名称" prop="model" min-width="140" />
      <el-table-column label="单位" prop="unit" width="100" />
      <el-table-column label="是否质检" prop="isQuality" width="100">
        <template #default="scope">
          {{scope.row.isQuality ? "是" : "否"}}
        </template>
      </el-table-column>
      <el-table-column label="是否入库" prop="inbound" width="100">
        <template #default="scope">
          {{ scope.row.inbound ? "是" : "否" }}
        </template>
      </el-table-column>
      <el-table-column label="是否报工" prop="reportWork" width="100">
        <template #default="scope">
          {{ scope.row.reportWork ? "是" : "否" }}
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" fixed="right" width="150">
        <template #default="scope">
          <el-button type="primary" link size="small" @click="handleEdit(scope.row)" :disabled="scope.row.isComplete">编辑</el-button>
@@ -129,6 +150,11 @@
              <div v-if="item.model" class="product-model">
                {{ item.model }}
                <!-- <span v-if="item.unit" class="product-unit">{{ item.unit }}</span> -->
              </div>
              <el-tag type="primary" class="product-tag" v-if="item.isQuality">质检</el-tag>
              <div class="product-flags">
                <span>入库:{{ item.inbound ? "是" : "否" }}</span>
                <span>报工:{{ item.reportWork ? "是" : "否" }}</span>
              </div>
            </div>
            <div v-else class="product-info empty">暂无产品信息</div>
@@ -189,11 +215,15 @@
              :disabled="true" 
          />
        </el-form-item>
        <el-form-item label="是否质检" prop="isQuality">
          <el-switch v-model="form.isQuality" :active-value="true" inactive-value="false"/>
        </el-form-item>
      </el-form>
      <template #footer>
        <el-button @click="closeDialog">取消</el-button>
        <el-button type="primary" @click="handleSubmit" :loading="submitLoading">确定</el-button>
        <el-button @click="closeDialog">取消</el-button>
      </template>
    </el-dialog>
@@ -207,7 +237,7 @@
</template>
<script setup>
import { ref, computed, getCurrentInstance, onMounted, onUnmounted, nextTick } from "vue";
import { ref, computed, getCurrentInstance, onMounted, onUnmounted, nextTick, defineAsyncComponent } from "vue";
import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue";
import { findProcessRouteItemList, addOrUpdateProcessRouteItem, sortProcessRouteItem, batchDeleteProcessRouteItem } from "@/api/productionManagement/processRouteItem.js";
import { findProductProcessRouteItemList, deleteRouteItem, addRouteItem, addOrUpdateProductProcessRouteItem, sortRouteItem } from "@/api/productionManagement/productProcessRoute.js";
@@ -218,6 +248,7 @@
const route = useRoute()
const { proxy } = getCurrentInstance() || {};
const ProductStructureDetail = defineAsyncComponent(() => import("@/views/productionManagement/productStructure/Detail/index.vue"));
const routeId = computed(() => route.query.id);
const orderId = computed(() => route.query.orderId);
@@ -262,6 +293,7 @@
  productName: "",
  model: "",
  unit: "",
  isQuality: false,
});
const rules = {
@@ -340,6 +372,7 @@
    productName: row.productName || "",
    model: row.model || "",
    unit: row.unit || "",
    isQuality: row.isQuality,
  };
  dialogVisible.value = true;
};
@@ -402,12 +435,14 @@
              productRouteId: routeId.value,
              processId: form.value.processId,
              productModelId: form.value.productModelId,
              isQuality: form.value.isQuality,
              dragSort,
            })
          : addOrUpdateProcessRouteItem({
              routeId: routeId.value,
              processId: form.value.processId,
              productModelId: form.value.productModelId,
              isQuality: form.value.isQuality,
              dragSort,
            });
@@ -432,12 +467,14 @@
              id: form.value.id,
              processId: form.value.processId,
              productModelId: form.value.productModelId,
              isQuality: form.value.isQuality,
            })
          : addOrUpdateProcessRouteItem({
              routeId: routeId.value,
              processId: form.value.processId,
              productModelId: form.value.productModelId,
              id: form.value.id,
              isQuality: form.value.isQuality,
            });
        updatePromise
@@ -733,6 +770,19 @@
  color: #409eff;
}
.product-tag {
  margin: 10px 0;
}
.product-flags {
  margin-top: 8px;
  display: flex;
  justify-content: center;
  gap: 12px;
  color: #606266;
  font-size: 12px;
}
.card-footer {
  display: flex;
  justify-content: space-around;
@@ -798,6 +848,10 @@
  align-items: center;
}
.product-structure-panel {
  margin: 12px 0 20px;
}
/* 工艺路线信息卡片样式 */
.route-info-card {
  margin-bottom: 20px;