|
|
@@ -49,10 +49,6 @@
|
|
|
:row-style="{ height: '20px' }" :header-cell-style="{ padding: '0px' }"
|
|
|
:cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
|
|
|
border tooltip-effect="dark"
|
|
|
- v-loading="loading"
|
|
|
- element-loading-text="拼命加载中"
|
|
|
- element-loading-spinner="el-icon-loading"
|
|
|
- element-loading-background="rgba(0, 0, 0, 0.8)"
|
|
|
:data="tableData" :row-key="ddzlTableRowKey"
|
|
|
highlight-current-row="true"
|
|
|
:cell-class-name="tableDataCellClass"
|
|
|
@@ -139,7 +135,7 @@
|
|
|
<el-table-column type="selection" width="30" />
|
|
|
<el-table-column align="left" sortable label="子订单编号" prop="子订单编号" width="140"/>
|
|
|
<el-table-column align="left" sortable label="PO号 " prop="款号" width="180"/>
|
|
|
- <el-table-column align="left" sortable label="颜色备注" prop="颜色备注" width="110"/>
|
|
|
+ <el-table-column align="left" sortable label="颜色备注" prop="颜色备注" width="150"/>
|
|
|
<el-table-column align="left" sortable label="色系名称" prop="颜色" width="110"/>
|
|
|
<el-table-column align="left" sortable label="船样" prop="船样" width="80"/>
|
|
|
<!-- 尺码列表 -->
|
|
|
@@ -315,7 +311,11 @@
|
|
|
|
|
|
|
|
|
<el-tab-pane label="BOM资料" name="six">
|
|
|
- <el-table ref="multipleTable"
|
|
|
+ <div v-if="bomLoading" class="bom-loading-hint">
|
|
|
+ <el-icon class="is-loading"><Loading /></el-icon>
|
|
|
+ <span style="margin-left: 8px;">BOM资料生成中,请稍候...</span>
|
|
|
+ </div>
|
|
|
+ <el-table ref="bomTableRef"
|
|
|
:row-style="{ height: '20px' }"
|
|
|
:cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
|
|
|
:header-cell-style="{ padding: '0px' }"
|
|
|
@@ -761,120 +761,119 @@
|
|
|
<el-dialog v-model="dialogFormVisible" :before-close="edit_closeDialog"
|
|
|
style="width: 80%; max-height: 80%; overflow-y: auto; margin-top: 4%;"
|
|
|
title="颜色资料修改" destroy-on-close >
|
|
|
- <el-row :gutter="20" class="form-row">
|
|
|
- <el-col :span="10">
|
|
|
- <div style="display: flex; gap: 0px;">
|
|
|
- <h3 style="color:red;font-size: 24px;margin:-5px 0px 8px 12px;">订单编号 {{_ddhval}}</h3>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="10">
|
|
|
- <div style="display: flex; gap: 0px;">
|
|
|
- <el-form-item label="订单子编号:" class="mab" prop="keyOrder" label-width='110'>
|
|
|
- <el-input v-model="edit_formData['子订单编号']" disabled style="width: 250px;" id="订单子编号" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
+ <el-form label-width="100px">
|
|
|
+ <el-row :gutter="24" class="form-row">
|
|
|
+ <el-col :span="10">
|
|
|
+ <div style="display: flex; gap: 0px;">
|
|
|
+ <h3 style="color:red;font-size: 24px;margin:-5px 0px 8px 12px;">订单编号 {{_ddhval}}</h3>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="订单子编号:" class="mab" prop="keyOrder" id='订单子编号' label-width='110'>
|
|
|
+ <el-input v-model="edit_formData['子订单编号']" disabled style="width: 250px;" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
- <el-row :gutter="20">
|
|
|
+
|
|
|
+ <el-row :gutter="24" class="form-row">
|
|
|
<el-col :span="10">
|
|
|
- <div style="display: flex; gap: 0px;">
|
|
|
- <el-form-item label="色系名称:" class="mab" prop="keyOrder" label-width='110'>
|
|
|
- <el-select
|
|
|
- v-model=" edit_formData['颜色']" style="width: 150px;" id="色系名称"
|
|
|
- @keydown="add_gdzlent($event, '', '色系名称', '款号:')">
|
|
|
- <el-option
|
|
|
- v-for="color in getSuborderscolor.colorlist"
|
|
|
- :key="color.id"
|
|
|
- :label="color.colorname"
|
|
|
- :value="color.colorname"
|
|
|
- @click="xg_sxhandleSizeChange(color.colorname,color.colorcode)">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
+ <el-form-item label="色系名称:" class="mab" prop="keyOrder" label-width='110'>
|
|
|
+ <el-select
|
|
|
+ v-model=" edit_formData['颜色']" style="width: 150px;" id="色系名称"
|
|
|
+ @keydown="add_gdzlent($event, '', '色系名称', '款号:')">
|
|
|
+ <el-option
|
|
|
+ v-for="color in getSuborderscolor.colorlist"
|
|
|
+ :key="color.id"
|
|
|
+ :label="color.colorname"
|
|
|
+ :value="color.colorname"
|
|
|
+ @click="xg_sxhandleSizeChange(color.colorname,color.colorcode)">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
- <el-col :span="10">
|
|
|
- <el-form-item label="PO号:" prop="deliveryDate" class="mab" label-width="110px" style="">
|
|
|
- <el-input v-model="edit_formData['款号']" style="width: 250px;" id="生产款号" />
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="PO号:" class="mab" prop="keyOrder" label-width='110'>
|
|
|
+ <el-autocomplete
|
|
|
+ v-model="edit_formData['款号']"
|
|
|
+ style="width: 250px;"
|
|
|
+ :fetch-suggestions="queryPoSearch"
|
|
|
+ placeholder="请输入或选择PO号"
|
|
|
+ @select="poSelect"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
- <el-row :gutter="20">
|
|
|
+
|
|
|
+ <el-row :gutter="24" class="form-row">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="颜色备注:" prop="joinDate" label-width='110'>
|
|
|
<el-input v-model="edit_formData['颜色备注']" style="width: 250px;" id ='颜色备注' @keydown="add_gdzlent($event, '款号:', '颜色备注', '是否船样')"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="10">
|
|
|
- <div style="display: flex; gap: 0px;">
|
|
|
- <el-form-item label="是否船样:" prop="joinDate" label-width='200'>
|
|
|
- <el-select v-model="edit_formData['船样']" style="width: 150px;" id="是否船样" @keydown="add_gdzlent($event, '尺码规格', '是否船样', 'zds1')">
|
|
|
- <el-option label="是" value="是" @click="edit_cyChange('是')"></el-option>
|
|
|
- <el-option label="否" value="否" @click="edit_cyChange('否')"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
+
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="是否船样:" prop="joinDate" label-width='230'>
|
|
|
+ <el-select v-model="edit_formData['船样']" style="width: 150px;" id ='是否船样' @keydown="add_gdzlent($event, '颜色备注', '是否船样', 'zds1')">
|
|
|
+ <el-option label="是" value="是" @click="edit_cyChange('是')"></el-option>
|
|
|
+ <el-option label="否" value="否" @click="edit_cyChange('否')"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
- <el-row class="form-row">
|
|
|
- <el-col :span="20">
|
|
|
- <div style="display: flex; gap: 0px;">
|
|
|
- <el-form-item label="尺码:" class="mab" prop="keyOrder" label-width='110'>
|
|
|
- <el-input v-model="edit_cmformdata.cm1" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm2" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm3" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm4" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm5" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm6" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm7" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm8" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm9" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm10" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm11" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm12" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm13" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.cm14" readonly style="width: 80px;" />
|
|
|
- <el-input v-model="edit_cmformdata.sctotal" readonly style="width: 80px;" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
+
|
|
|
+ <el-row :gutter="24" class="form-row">
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="尺码:" class="mab" prop="keyOrder" label-width="110">
|
|
|
+ <el-input v-model="edit_cmformdata.cm1" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm2" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm3" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm4" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm5" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm6" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm7" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm8" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm9" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm10" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm11" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm12" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm13" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.cm14" readonly style="width: 80px;" />
|
|
|
+ <el-input v-model="edit_cmformdata.sctotal" readonly style="width: 80px;" />
|
|
|
+ </el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
- <el-row class="form-row">
|
|
|
- <el-col :span="20">
|
|
|
- <div style="display: flex; gap: 0px;">
|
|
|
- <el-form-item label="制单数:" class="mab" prop="keyOrder" label-width='110'>
|
|
|
- <el-input v-model="edit_zdsformdata.zds1" @input="updateTotal" style="width: 80px;" id ='zds1' @keydown="add_gdzlent($event, 'cm14', 'zds1', 'zds2')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds2" @input="updateTotal" style="width: 80px;" id ='zds2' @keydown="add_gdzlent($event, 'zds1', 'zds2', 'zds3')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds3" @input="updateTotal" style="width: 80px;" id ='zds3' @keydown="add_gdzlent($event, 'zds2', 'zds3', 'zds4')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds4" @input="updateTotal" style="width: 80px;" id ='zds4' @keydown="add_gdzlent($event, 'zds3', 'zds4', 'zds5')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds5" @input="updateTotal" style="width: 80px;" id ='zds5' @keydown="add_gdzlent($event, 'zds4', 'zds5', 'zds6')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds6" @input="updateTotal" style="width: 80px;" id ='zds6' @keydown="add_gdzlent($event, 'zds5', 'zds6', 'zds7')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds7" @input="updateTotal" style="width: 80px;" id ='zds7' @keydown="add_gdzlent($event, 'zds6', 'zds7', 'zds8')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds8" @input="updateTotal" style="width: 80px;" id ='zds8' @keydown="add_gdzlent($event, 'zds7', 'zds8', 'zds9')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds9" @input="updateTotal" style="width: 80px;" id ='zds9' @keydown="add_gdzlent($event, 'zds8', 'zds9', 'zds10')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds10" @input="updateTotal" style="width: 80px;" id ='zds10' @keydown="add_gdzlent($event, 'zds9', 'zds10', 'zds11')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds11" @input="updateTotal" style="width: 80px;" id ='zds11' @keydown="add_gdzlent($event, 'zds10', 'zds11', 'zds12')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds12" @input="updateTotal" style="width: 80px;" id ='zds12' @keydown="add_gdzlent($event, 'zds11', 'zds12', 'zds13')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds13" @input="updateTotal" style="width: 80px;" id ='zds13' @keydown="add_gdzlent($event, 'zds12', 'zds13', 'zds14')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zds14" @input="updateTotal" style="width: 80px;" id ='zds14' @keydown="add_gdzlent($event, 'zds13', 'zds14', '色系名称')"/>
|
|
|
- <el-input v-model="edit_zdsformdata.zdtotal" readonly style="width: 80px;" />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
+
|
|
|
+ <el-row :gutter="24" class="form-row">
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="制单数:" class="mab" prop="keyOrder" label-width='110'>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds1" @input="updateTotal" style="width: 80px;" id ='zds1' @keydown="add_gdzlent($event, 'cm14', 'zds1', 'zds2')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds2" @input="updateTotal" style="width: 80px;" id ='zds2' @keydown="add_gdzlent($event, 'zds1', 'zds2', 'zds3')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds3" @input="updateTotal" style="width: 80px;" id ='zds3' @keydown="add_gdzlent($event, 'zds2', 'zds3', 'zds4')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds4" @input="updateTotal" style="width: 80px;" id ='zds4' @keydown="add_gdzlent($event, 'zds3', 'zds4', 'zds5')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds5" @input="updateTotal" style="width: 80px;" id ='zds5' @keydown="add_gdzlent($event, 'zds4', 'zds5', 'zds6')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds6" @input="updateTotal" style="width: 80px;" id ='zds6' @keydown="add_gdzlent($event, 'zds5', 'zds6', 'zds7')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds7" @input="updateTotal" style="width: 80px;" id ='zds7' @keydown="add_gdzlent($event, 'zds6', 'zds7', 'zds8')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds8" @input="updateTotal" style="width: 80px;" id ='zds8' @keydown="add_gdzlent($event, 'zds7', 'zds8', 'zds9')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds9" @input="updateTotal" style="width: 80px;" id ='zds9' @keydown="add_gdzlent($event, 'zds8', 'zds9', 'zds10')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds10" @input="updateTotal" style="width: 80px;" id ='zds10' @keydown="add_gdzlent($event, 'zds9', 'zds10', 'zds11')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds11" @input="updateTotal" style="width: 80px;" id ='zds11' @keydown="add_gdzlent($event, 'zds10', 'zds11', 'zds12')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds12" @input="updateTotal" style="width: 80px;" id ='zds12' @keydown="add_gdzlent($event, 'zds11', 'zds12', 'zds13')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds13" @input="updateTotal" style="width: 80px;" id ='zds13' @keydown="add_gdzlent($event, 'zds12', 'zds13', 'zds14')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zds14" @input="updateTotal" style="width: 80px;" id ='zds14' @keydown="add_gdzlent($event, 'zds13', 'zds14', '色系名称')"/>
|
|
|
+ <el-input v-model="edit_zdsformdata.zdtotal" readonly style="width: 80px;" />
|
|
|
+ </el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
+ </el-form>
|
|
|
+
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer" style="display: flex; justify-content: flex-end; margin-top: 20px;">
|
|
|
<el-button @click="ys_edit_closeDialog" style="margin-left: 10px;">取消</el-button>
|
|
|
+ <el-button @click="openSizePreview('edit')" style="margin-left: 10px;">预览尺码</el-button>
|
|
|
<el-button type="primary" @click="ys_edit_Dialog" style="margin-left: 10px;">确认</el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
-
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
|
@@ -1478,7 +1477,13 @@
|
|
|
</el-col>
|
|
|
<el-col :span="10">
|
|
|
<el-form-item label="PO号:" class="mab" prop="keyOrder" label-width="110">
|
|
|
- <el-input v-model="add_yszlformdata.kh" style="width: 250px;" id ='款号:' @keydown="add_gdzlent($event, '色系名称', '款号:', '颜色备注')"/>
|
|
|
+ <el-autocomplete
|
|
|
+ v-model="add_yszlformdata.kh"
|
|
|
+ style="width: 250px;"
|
|
|
+ :fetch-suggestions="queryPoSearch"
|
|
|
+ placeholder="请输入或选择PO号"
|
|
|
+ @select="poSelect"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -1637,13 +1642,42 @@
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
- <template #footer>
|
|
|
+ <template #footer>
|
|
|
<div class="dialog-footer" style="display: flex; justify-content: flex-end; padding: 10px;">
|
|
|
- <el-button type="primary" @click="add_dyjcloseDialog">取消</el-button>
|
|
|
+ <el-button @click="add_dyjcloseDialog">取消</el-button>
|
|
|
+ <el-button @click="openSizePreview">预览尺码</el-button>
|
|
|
<el-button type="primary" @click="add_gdyjenterDialog">确定</el-button>
|
|
|
</div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <!-- 尺码数量预览弹窗 -->
|
|
|
+ <el-dialog
|
|
|
+ v-model="sizePreviewVisible"
|
|
|
+ title="尺码数量预览"
|
|
|
+ width="46%"
|
|
|
+ append-to-body
|
|
|
+ destroy-on-close>
|
|
|
+ <div v-loading="sizePreviewLoading">
|
|
|
+ <table class="size-preview-h-table">
|
|
|
+ <tr>
|
|
|
+ <th class="size-preview-h-label-th">尺码</th>
|
|
|
+ <th v-for="s in sizePreviewSizes" :key="'h-'+s">{{ s }}</th>
|
|
|
+ <th class="size-preview-h-total-th">合计(件)</th>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="size-preview-h-label-td">制单数</td>
|
|
|
+ <td v-for="(q, idx) in sizePreviewQtys" :key="'q-'+idx">{{ q }}</td>
|
|
|
+ <td class="size-preview-h-total-td">{{ sizePreviewCurrentTotal }}</td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer" style="text-align: right;">
|
|
|
+ <el-button type="primary" @click="sizePreviewVisible = false">关闭</el-button>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
-
|
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 新增工序资料-->
|
|
|
@@ -2559,12 +2593,12 @@
|
|
|
import LuckyExcel from 'luckyexcel';
|
|
|
import { toRaw } from 'vue';
|
|
|
import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
|
|
|
- import { ElMessage, ElMessageBox, ElUpload, ElButton, ElLoading } from 'element-plus'
|
|
|
+ import { ElMessage, ElMessageBox, ElUpload, ElButton } from 'element-plus'
|
|
|
// 生产环境为按需引入,手动 import 组件不会带样式;补全 Upload,避免 picture-card 退化成原生「选择文件」
|
|
|
import 'element-plus/es/components/upload/style/css'
|
|
|
import 'element-plus/es/components/button/style/css'
|
|
|
import 'element-plus/es/components/image-viewer/style/css'
|
|
|
- import { Plus } from '@element-plus/icons-vue'
|
|
|
+ import { Plus, Loading } from '@element-plus/icons-vue'
|
|
|
import { ref, reactive, computed, nextTick, watch, onMounted, onBeforeUnmount, isRef } from 'vue'
|
|
|
import axios from 'axios';
|
|
|
import * as XLSX from 'xlsx';
|
|
|
@@ -3047,6 +3081,10 @@
|
|
|
//获取色系名称列表
|
|
|
const getSuborders = await getSuborder({order:_Gd_gdbh.value,cy:'否',colorname:edit_formData['颜色']});
|
|
|
getSuborderscolor.colorlist = getSuborders.data.colorlist;
|
|
|
+ // 更新PO号下拉选项
|
|
|
+ if (getSuborders.data.po) {
|
|
|
+ poOptions.value = getSuborders.data.po;
|
|
|
+ }
|
|
|
let index = 1;
|
|
|
// 创建一个函数来构建尺码和数量的映射
|
|
|
function buildSizeQuantitiesMap(sizes, formData) {
|
|
|
@@ -3091,9 +3129,17 @@
|
|
|
if (value === '是') {
|
|
|
const getSuborders = await getSuborder({order:_Gd_gdbh.value,cy:'是',colorname:edit_formData['颜色']});
|
|
|
edit_formData['子订单编号'] = getSuborders.data;
|
|
|
+ // 更新PO号下拉选项
|
|
|
+ if (getSuborders.data.po) {
|
|
|
+ poOptions.value = getSuborders.data.po;
|
|
|
+ }
|
|
|
}else if(value === '否'){
|
|
|
const getSuborders = await getSuborder({order:_Gd_gdbh.value,cy:'否',colorname:edit_formData['颜色']});
|
|
|
edit_formData['子订单编号'] = getSuborders.data.order;
|
|
|
+ // 更新PO号下拉选项
|
|
|
+ if (getSuborders.data.po) {
|
|
|
+ poOptions.value = getSuborders.data.po;
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
|
|
|
@@ -3228,7 +3274,7 @@
|
|
|
ElMessage.error('获取款式列表失败');
|
|
|
}
|
|
|
};
|
|
|
-
|
|
|
+
|
|
|
// =========== 新增订单资料 ===========
|
|
|
const add_gdscgdformData = reactive({
|
|
|
订单编号: '',
|
|
|
@@ -3336,12 +3382,7 @@
|
|
|
}
|
|
|
|
|
|
isClickable.value = false;
|
|
|
- const loadingInstance = ElLoading.service({
|
|
|
- lock: true,
|
|
|
- text: '正在自动获取生成BOM面料资料,请稍候...',
|
|
|
- background: 'rgba(0, 0, 0, 0.8)',
|
|
|
- spinner: 'el-icon-loading',
|
|
|
- });
|
|
|
+ ElMessage({ type: 'info', message: '正在自动获取生成BOM面料资料,请稍候...', duration: 0 });
|
|
|
|
|
|
try {
|
|
|
let lhrq_formattedDeliveryDate = '';
|
|
|
@@ -3390,6 +3431,12 @@
|
|
|
ElMessage({ type: 'success', message: '新增成功' });
|
|
|
const WorkListdata = await WorkOrderList({ search: _Gd_khdh.value, page: 1, limit: 50 });
|
|
|
tableData.value = WorkListdata.data.data;
|
|
|
+
|
|
|
+ // 找到新创建的订单并触发加载 BOM 数据
|
|
|
+ const newOrder = tableData.value.find(item => item.订单编号 === formattedData.订单编号);
|
|
|
+ if (newOrder) {
|
|
|
+ await tableRowClick(newOrder);
|
|
|
+ }
|
|
|
} else {
|
|
|
ElMessage({ type: 'error', message: edit_gdformdata_list.msg || edit_gdformdata_list.message || '新增失败' });
|
|
|
}
|
|
|
@@ -3399,7 +3446,6 @@
|
|
|
ElMessage({ type: 'error', message: msg });
|
|
|
} finally {
|
|
|
isClickable.value = true;
|
|
|
- loadingInstance.close();
|
|
|
}
|
|
|
};
|
|
|
//新增工单资料取消 / 关闭
|
|
|
@@ -3541,14 +3587,62 @@
|
|
|
});
|
|
|
//记录色系编号
|
|
|
const add_colorcode = ref('')
|
|
|
+
|
|
|
+ // =========== 尺码数量预览 ===========
|
|
|
+ const sizePreviewVisible = ref(false)
|
|
|
+ const sizePreviewLoading = ref(false)
|
|
|
+ const sizePreviewSizes = ref([])
|
|
|
+ const sizePreviewQtys = ref([])
|
|
|
+ const sizePreviewCurrentTotal = ref(0)
|
|
|
+
|
|
|
+ // 打开尺码数量预览:照抄弹窗中填写的尺码与制单数,用于核对
|
|
|
+ // source: 'add' = 新增颜色资料弹窗, 'edit' = 颜色资料修改弹窗
|
|
|
+ const openSizePreview = (source = 'add') => {
|
|
|
+ sizePreviewVisible.value = true
|
|
|
+ sizePreviewLoading.value = false
|
|
|
+ const cmSource = source === 'edit' ? edit_cmformdata : cmformdata
|
|
|
+ const zdsSource = source === 'edit' ? edit_zdsformdata : zdsformdata
|
|
|
+ const sizes = []
|
|
|
+ const qtys = []
|
|
|
+ for (let i = 1; i <= 14; i++) {
|
|
|
+ const size = String(cmSource[`cm${i}`] ?? '').trim()
|
|
|
+ if (!size) continue
|
|
|
+ sizes.push(size)
|
|
|
+ qtys.push(parseInt(String(zdsSource[`zds${i}`] ?? '').replace(/[^\d]/g, ''), 10) || 0)
|
|
|
+ }
|
|
|
+ sizePreviewSizes.value = sizes
|
|
|
+ sizePreviewQtys.value = qtys
|
|
|
+ sizePreviewCurrentTotal.value = qtys.reduce((sum, v) => sum + v, 0)
|
|
|
+ }
|
|
|
|
|
|
//选择色系名称获取子订单编号
|
|
|
+ //把后端返回的尺码数据填充到新增弹窗的尺码输入框
|
|
|
+ // 后端返回的尺码来自"当前订单下未删除的颜色资料",删除后重新新增不会带上旧尺码
|
|
|
+ const applyCmToAddForm = (cm) => {
|
|
|
+ // 先清空,避免后端没返回尺码时残留上一次的值
|
|
|
+ for (let i = 1; i <= 14; i++) {
|
|
|
+ cmformdata[`cm${i}`] = '';
|
|
|
+ }
|
|
|
+ cmformdata.sctotal = '合计';
|
|
|
+ if (cm) {
|
|
|
+ for (let i = 1; i <= 14; i++) {
|
|
|
+ cmformdata[`cm${i}`] = cm[`cm${i}`] || '';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
const xz_sxhandleSizeChange = async (value,color_id) => {
|
|
|
|
|
|
//获取子订单编号
|
|
|
const getPonumberdata = await getSuborder({colorname:value,order:_ddhval.value,cy:add_yszlformdata.sfcy});
|
|
|
console.log("获取子订单编号",getPonumberdata)
|
|
|
add_yszlformdata.ddzbh = getPonumberdata.data.order ? getPonumberdata.data.order : getPonumberdata.data;
|
|
|
+ // 更新PO号下拉选项
|
|
|
+ if (getPonumberdata.data.po) {
|
|
|
+ poOptions.value = getPonumberdata.data.po;
|
|
|
+ }
|
|
|
+ // 切换色系时同步刷新尺码
|
|
|
+ applyCmToAddForm(getPonumberdata.data.cm);
|
|
|
|
|
|
if (value === '红色系') {
|
|
|
add_yszlformdata.sxmc = value
|
|
|
@@ -3592,7 +3686,11 @@
|
|
|
const xg_sxhandleSizeChange = async (value,color_id) => {
|
|
|
|
|
|
const getPonumberdata = await getSuborder({colorname:value,order:_ddhval.value,cy:edit_formData['船样']});
|
|
|
- console.log(edit_formData.value)
|
|
|
+ console.log(edit_formData.value)
|
|
|
+ // 更新PO号下拉选项
|
|
|
+ if (getPonumberdata.data.po) {
|
|
|
+ poOptions.value = getPonumberdata.data.po;
|
|
|
+ }
|
|
|
if(edit_formData.value['颜色'] === edit_formData['颜色']){
|
|
|
edit_formData['子订单编号'] = edit_formData.value['子订单编号']
|
|
|
}else{
|
|
|
@@ -3643,15 +3741,57 @@
|
|
|
add_yszlformdata.ddzbh = _Gd_gdbh.value + '-99'
|
|
|
const getSuborders = await getSuborder({order:_Gd_gdbh.value,cy:'是',colorname:add_yszlformdata['sxmc']});
|
|
|
add_yszlformdata['ddzbh'] = getSuborders.data;
|
|
|
+ // 更新PO号下拉选项
|
|
|
+ if (getSuborders.data.po) {
|
|
|
+ poOptions.value = getSuborders.data.po;
|
|
|
+ }
|
|
|
+ // 切换船样时清空尺码(船样分支后端不返回尺码数据)
|
|
|
+ applyCmToAddForm(getSuborders.data.cm);
|
|
|
}else if(value === '否'){
|
|
|
const getSuborders = await getSuborder({order:_Gd_gdbh.value,cy:'否',colorname:add_yszlformdata['sxmc']});
|
|
|
add_yszlformdata['ddzbh'] = getSuborders.data.order;
|
|
|
+ // 更新PO号下拉选项
|
|
|
+ if (getSuborders.data.po) {
|
|
|
+ poOptions.value = getSuborders.data.po;
|
|
|
+ }
|
|
|
+ // 切换船样时同步刷新尺码
|
|
|
+ applyCmToAddForm(getSuborders.data.cm);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
const getSuborderscolor = reactive({
|
|
|
colorlist: []
|
|
|
});
|
|
|
+
|
|
|
+ // PO号下拉选项
|
|
|
+ const poOptions = ref([]);
|
|
|
+
|
|
|
+ // PO号搜索建议
|
|
|
+ const queryPoSearch = (queryString, cb) => {
|
|
|
+ if (!poOptions.value || poOptions.value.length === 0) {
|
|
|
+ // 没有下拉数据时,输入什么就返回什么(直接使用输入值)
|
|
|
+ if (queryString) {
|
|
|
+ cb([{ value: queryString }]);
|
|
|
+ } else {
|
|
|
+ cb([]);
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const results = queryString
|
|
|
+ ? poOptions.value.filter(createFilter(queryString))
|
|
|
+ : poOptions.value.map(po => ({ value: po }));
|
|
|
+ cb(results);
|
|
|
+ };
|
|
|
+
|
|
|
+ // PO号过滤函数
|
|
|
+ const createFilter = (queryString) => {
|
|
|
+ return (po) => String(po).toLowerCase().indexOf(queryString.toLowerCase()) === 0;
|
|
|
+ };
|
|
|
+
|
|
|
+ // PO号选择回调
|
|
|
+ const poSelect = (item) => {
|
|
|
+ console.log('选中PO号:', item.value);
|
|
|
+ };
|
|
|
|
|
|
//新增颜色资料按钮
|
|
|
const addgdyj_onclick = async () => {
|
|
|
@@ -3666,27 +3806,16 @@
|
|
|
|
|
|
|
|
|
getSuborderscolor.colorlist = getSuborders.data.colorlist;
|
|
|
-
|
|
|
+
|
|
|
+ // 更新PO号下拉选项
|
|
|
+ if (getSuborders.data.po) {
|
|
|
+ poOptions.value = getSuborders.data.po;
|
|
|
+ }
|
|
|
+
|
|
|
add_yszlformdata['ddzbh'] = getSuborders.data.order;
|
|
|
// 假设获取的数据是 getSuborders.data
|
|
|
- if (getSuborders.data.cm) {
|
|
|
- // 判断并赋值
|
|
|
- cmformdata.cm1 = getSuborders.data.cm.cm1 || '';
|
|
|
- cmformdata.cm2 = getSuborders.data.cm.cm2 || '';
|
|
|
- cmformdata.cm3 = getSuborders.data.cm.cm3 || '';
|
|
|
- cmformdata.cm4 = getSuborders.data.cm.cm4 || '';
|
|
|
- cmformdata.cm5 = getSuborders.data.cm.cm5 || '';
|
|
|
- cmformdata.cm6 = getSuborders.data.cm.cm6 || '';
|
|
|
- cmformdata.cm7 = getSuborders.data.cm.cm7 || '';
|
|
|
- cmformdata.cm8 = getSuborders.data.cm.cm8 || '';
|
|
|
- cmformdata.cm9 = getSuborders.data.cm.cm9 || '';
|
|
|
- cmformdata.cm10 = getSuborders.data.cm.cm10 || '';
|
|
|
- cmformdata.cm11 = getSuborders.data.cm.cm11 || '';
|
|
|
- cmformdata.cm12 = getSuborders.data.cm.cm12 || '';
|
|
|
- cmformdata.cm13 = getSuborders.data.cm.cm13 || '';
|
|
|
- cmformdata.cm14 = getSuborders.data.cm.cm14 || '';
|
|
|
- cmformdata.sctotal = '合计';
|
|
|
- }
|
|
|
+ // 无论后端是否返回尺码,都要先清空,避免上一次打开弹窗/切换船样后的残留值
|
|
|
+ applyCmToAddForm(getSuborders.data.cm);
|
|
|
|
|
|
add_yszlformdata['ddh'] = _Gd_gdbh.value;
|
|
|
add_yszlformdata['ys'] = '';
|
|
|
@@ -3830,9 +3959,26 @@ function Input_handle() {
|
|
|
sizeDatas.splice(0,PrintListDatas.data.型号.length,...PrintListDatas.data.型号);
|
|
|
ystableData.splice(0,PrintListDatas.data.列表.length,...PrintListDatas.data.列表);
|
|
|
|
|
|
- const orderBomListdata = await orderBomList({order:_Gd_gdbh.value});
|
|
|
- bomtableData.value = orderBomListdata.data
|
|
|
- bomtableData.splice(0,orderBomListdata.data.length,...orderBomListdata.data);//bom表格数据
|
|
|
+ // BOM 数据:查询时若无数据后端会自动触发生成,需轮询等待
|
|
|
+ const fetchBomData = async () => {
|
|
|
+ const bomRes = await orderBomList({ order: _Gd_gdbh.value });
|
|
|
+ if (bomRes?.data && bomRes.data.length > 0) {
|
|
|
+ bomtableData.splice(0, bomtableData.length, ...bomRes.data);
|
|
|
+ return true; // 有数据了,停止轮询
|
|
|
+ }
|
|
|
+ return false; // 还需继续轮询
|
|
|
+ };
|
|
|
+
|
|
|
+ // 等待 BOM 数据(最多等待 30 秒,每 2 秒轮询一次)
|
|
|
+ bomLoading.value = true; // 开始加载
|
|
|
+ let bomLoaded = await fetchBomData();
|
|
|
+ let waitCount = 0;
|
|
|
+ while (!bomLoaded && waitCount < 15) {
|
|
|
+ await new Promise(resolve => setTimeout(resolve, 2000));
|
|
|
+ bomLoaded = await fetchBomData();
|
|
|
+ waitCount++;
|
|
|
+ }
|
|
|
+ bomLoading.value = false; // 加载完成
|
|
|
|
|
|
const fabricListdata = await fabricList({ order: _Gd_gdbh.value });
|
|
|
console.log("fabricListdata:", fabricListdata); // 打印接口返回的数据
|
|
|
@@ -5890,6 +6036,10 @@ const sortTableData = ref([])
|
|
|
onBeforeUnmount(() => {
|
|
|
gyDetailResizeObserver?.disconnect()
|
|
|
gyDetailResizeObserver = null
|
|
|
+ if (bomPollingTimer) {
|
|
|
+ clearInterval(bomPollingTimer);
|
|
|
+ bomPollingTimer = null;
|
|
|
+ }
|
|
|
})
|
|
|
|
|
|
const clearGyDetailTableSelection = async () => {
|
|
|
@@ -7240,6 +7390,7 @@ const sortTableData = ref([])
|
|
|
const fhdtableData = reactive([])
|
|
|
//BOM附件
|
|
|
const bomtableData = reactive([])
|
|
|
+ const bomLoading = ref(false) // BOM 表格加载状态
|
|
|
//面料附件
|
|
|
const mltableData = reactive([])
|
|
|
|
|
|
@@ -7427,15 +7578,27 @@ const sortTableData = ref([])
|
|
|
const jsOrderAttachments = await OrderAttachments({order:_Gd_gdbh.value,desc:'技术附件'})
|
|
|
const ddOrderAttachments = await OrderAttachments({order:_Gd_gdbh.value,desc:'订单资料附件'})
|
|
|
const fhdOrderAttachments = await OrderAttachments({order:_Gd_gdbh.value,desc:'发货单附件'})
|
|
|
-
|
|
|
- const orderBomListdata = await orderBomList({ order: _Gd_gdbh.value });
|
|
|
- // console.log("orderBomListdata:", orderBomListdata); // 打印接口返回的数据
|
|
|
- // 确保 orderBomListdata.data 是数组,避免 undefined 错误
|
|
|
- if (orderBomListdata?.data && Array.isArray(orderBomListdata.data)) {
|
|
|
- bomtableData.splice(0, bomtableData.length, ...orderBomListdata.data);
|
|
|
- } else {
|
|
|
- bomtableData.splice(0, bomtableData.length); // 如果数据无效,清空表格
|
|
|
+
|
|
|
+ // BOM 数据:查询时若无数据后端会自动触发生成,需轮询等待
|
|
|
+ bomtableData.splice(0, bomtableData.length);
|
|
|
+ bomLoading.value = true; // 开始加载
|
|
|
+ const fetchBomData = async () => {
|
|
|
+ const bomRes = await orderBomList({ order: _Gd_gdbh.value });
|
|
|
+ if (bomRes?.data && bomRes.data.length > 0) {
|
|
|
+ bomtableData.splice(0, bomtableData.length, ...bomRes.data);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ };
|
|
|
+ // 等待 BOM 数据(最多等待 30 秒,每 2 秒轮询一次)
|
|
|
+ let bomLoaded = await fetchBomData();
|
|
|
+ let waitCount = 0;
|
|
|
+ while (!bomLoaded && waitCount < 15) {
|
|
|
+ await new Promise(resolve => setTimeout(resolve, 2000));
|
|
|
+ bomLoaded = await fetchBomData();
|
|
|
+ waitCount++;
|
|
|
}
|
|
|
+ bomLoading.value = false; // 加载完成
|
|
|
|
|
|
// 获取部件资料
|
|
|
const partListData = await PartList({ workorder: _Gd_gdbh.value });
|
|
|
@@ -9087,6 +9250,44 @@ const sortTableData = ref([])
|
|
|
opacity: 0.85;
|
|
|
}
|
|
|
|
|
|
+ /* 尺码数量预览 */
|
|
|
+ .size-preview-h-table {
|
|
|
+ width: 100%;
|
|
|
+ border-collapse: collapse;
|
|
|
+ table-layout: fixed;
|
|
|
+ font-size: 13px;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .size-preview-h-table th,
|
|
|
+ .size-preview-h-table td {
|
|
|
+ border: 1px solid #dcdfe6;
|
|
|
+ padding: 8px 4px;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+
|
|
|
+ .size-preview-h-table th {
|
|
|
+ background: #f5f7fa;
|
|
|
+ color: #303133;
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
+
|
|
|
+ .size-preview-h-label-th,
|
|
|
+ .size-preview-h-label-td {
|
|
|
+ width: 90px;
|
|
|
+ background: #fafafa;
|
|
|
+ color: #303133;
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
+
|
|
|
+ .size-preview-h-total-th,
|
|
|
+ .size-preview-h-total-td {
|
|
|
+ color: #303133;
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
+
|
|
|
</style>
|
|
|
|
|
|
<style>
|
|
|
@@ -9206,5 +9407,16 @@ const sortTableData = ref([])
|
|
|
color: #f56c6c;
|
|
|
font-weight: 600;
|
|
|
}
|
|
|
+
|
|
|
+ /* BOM 加载提示 */
|
|
|
+ .bom-loading-hint {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 12px 16px;
|
|
|
+ color: #909399;
|
|
|
+ font-size: 14px;
|
|
|
+ background: #f5f7fa;
|
|
|
+ border-bottom: 1px solid #ebeef5;
|
|
|
+ }
|
|
|
</style>
|
|
|
|