|
@@ -208,6 +208,68 @@
|
|
|
|
|
|
|
|
<!-- 表格数据 -->
|
|
<!-- 表格数据 -->
|
|
|
<el-tabs v-model="activeName">
|
|
<el-tabs v-model="activeName">
|
|
|
|
|
+ <br><br>
|
|
|
|
|
+ <!-- <el-tab-pane label="成品完成率" name="first">
|
|
|
|
|
+ <div style="display: flex; align-items: center;">
|
|
|
|
|
+ <el-tag type="info" style="width: 40px; height: 40px; margin-right: 10px;"><h2>包数</h2></el-tag>
|
|
|
|
|
+ <h2 style="margin: 0 20px 0 0;">白格子图标表示“已有包”</h2>
|
|
|
|
|
+ <el-tag type="success" style="width: 40px; height: 40px; margin-right: 10px;"><h2>包数</h2></el-tag>
|
|
|
|
|
+ <h2 style="margin: 0 20px 0 0;">绿格子图标表示“已完成包”</h2>
|
|
|
|
|
+ <el-tag type="danger" style="width: 40px; height: 40px; margin-right: 10px;"><h2>包数</h2></el-tag>
|
|
|
|
|
+ <h2 style="margin: 0;">红格子图标表示“废弃包”</h2>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="number-container">
|
|
|
|
|
+ <div
|
|
|
|
|
+ v-for="(item, index) in Mabaolistform"
|
|
|
|
|
+ :key="index"
|
|
|
|
|
+ :class="getBoxClass(item)">
|
|
|
|
|
+ {{ typeof item === 'object' ? item.value : item }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <br>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="progress-wrapper" >
|
|
|
|
|
+ <div
|
|
|
|
|
+ class="progress-row"
|
|
|
|
|
+ v-for="item in order_progressList"
|
|
|
|
|
+ :key="item.subOrderNo">
|
|
|
|
|
+ <div class="progress-info">
|
|
|
|
|
+ <span style="font-size: 20px;"><strong>总订单进度---订单编号:</strong>{{ item.subOrderNo }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <el-progress
|
|
|
|
|
+ :percentage="Math.min(item.percentage, 100)"
|
|
|
|
|
+ :stroke-width="24"
|
|
|
|
|
+ :text-inside="true"
|
|
|
|
|
+ style="flex: 1; width: 70%;"
|
|
|
|
|
+ :format="() => item.percentage + '%'"
|
|
|
|
|
+ :status="item.percentage >= 100 ? 'success' : 'success'"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <br><br>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="progress-wrapper">
|
|
|
|
|
+ <div
|
|
|
|
|
+ class="progress-row"
|
|
|
|
|
+ v-for="item in progressList"
|
|
|
|
|
+ :key="item.subOrderNo">
|
|
|
|
|
+ <div class="progress-info">
|
|
|
|
|
+ <span style='font-size: 20px;'><strong>子订单编号:</strong>{{ item.subOrderNo }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <el-progress
|
|
|
|
|
+ :percentage="Math.min(item.percentage, 100)"
|
|
|
|
|
+ :stroke-width="24"
|
|
|
|
|
+ :text-inside="true"
|
|
|
|
|
+ style="flex: 1; width: 70%;"
|
|
|
|
|
+ :format="() => item.percentage + '%'"
|
|
|
|
|
+ :status="item.percentage >= 100 ? 'success' : 'success'"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <br>
|
|
|
|
|
+ </el-tab-pane> -->
|
|
|
|
|
+
|
|
|
<el-tab-pane label="报工历史记录" name="first">
|
|
<el-tab-pane label="报工历史记录" name="first">
|
|
|
<el-table
|
|
<el-table
|
|
|
ref="multipleTable"
|
|
ref="multipleTable"
|
|
@@ -346,6 +408,88 @@
|
|
|
<el-button type="primary" @click="handleConfirm">确认</el-button>
|
|
<el-button type="primary" @click="handleConfirm">确认</el-button>
|
|
|
</div>
|
|
</div>
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 订单选择弹窗 -->
|
|
|
|
|
+ <el-dialog
|
|
|
|
|
+ v-model="orderDialogVisible"
|
|
|
|
|
+ title="选择订单"
|
|
|
|
|
+ width="900px"
|
|
|
|
|
+ :before-close="() => { orderDialogVisible = false; orderList = []; subOrderList = []; selectedOrder = ''; }">
|
|
|
|
|
+
|
|
|
|
|
+ <div style="display: flex; height: 450px;">
|
|
|
|
|
+ <!-- 左侧:订单列表 -->
|
|
|
|
|
+ <div style="flex: 1; border-right: 1px solid #e0e0e0; padding-right: 10px;">
|
|
|
|
|
+ <h4>订单列表 (点击选择)</h4>
|
|
|
|
|
+ <div style="height: 400px; overflow-y: auto;">
|
|
|
|
|
+ <div
|
|
|
|
|
+ v-for="order in orderList"
|
|
|
|
|
+ :key="order.订单编号"
|
|
|
|
|
+ @click="handleOrderSelect(order)"
|
|
|
|
|
+ :style="{
|
|
|
|
|
+ padding: '12px',
|
|
|
|
|
+ margin: '8px 0',
|
|
|
|
|
+ borderRadius: '6px',
|
|
|
|
|
+ cursor: 'pointer',
|
|
|
|
|
+ backgroundColor: selectedOrder === order.订单编号 ? '#e6f7ff' : '#f5f5f5',
|
|
|
|
|
+ border: selectedOrder === order.订单编号 ? '1px solid #1890ff' : '1px solid #d9d9d9'
|
|
|
|
|
+ }">
|
|
|
|
|
+ <div style="font-size: 16px; font-weight: 700; margin-bottom: 6px;">
|
|
|
|
|
+ <strong>订单编号:</strong> {{ order.订单编号 }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div style="font-size: 16px; font-weight: 700; margin-bottom: 6px;">
|
|
|
|
|
+ <strong>生产款号:</strong> {{ order.生产款号 }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div style="font-size: 16px; font-weight: 700;">
|
|
|
|
|
+ <strong>款式:</strong> {{ order.款式 }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 右侧:子订单列表 -->
|
|
|
|
|
+ <div style="flex: 1; padding-left: 10px;">
|
|
|
|
|
+ <h4 style="font-size: 20px; font-weight: 600;">子订单列表 (点击选择)</h4>
|
|
|
|
|
+ <div style="height: 400px; overflow-y: auto;">
|
|
|
|
|
+ <div
|
|
|
|
|
+ v-for="subOrder in subOrderList"
|
|
|
|
|
+ :key="subOrder.子订单编号"
|
|
|
|
|
+ @click="handleSubOrderDoubleClick(subOrder.子订单编号)"
|
|
|
|
|
+ style="
|
|
|
|
|
+ padding: 12px;
|
|
|
|
|
+ margin: 8px 0;
|
|
|
|
|
+ border: 1px solid #d9d9d9;
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ background-color: #f9f9f9;
|
|
|
|
|
+ "
|
|
|
|
|
+ @mouseenter="e => e.target.style.backgroundColor = '#e6f7ff'"
|
|
|
|
|
+ @mouseleave="e => e.target.style.backgroundColor = '#f9f9f9'">
|
|
|
|
|
+ <div style="font-size: 16px; font-weight: 700; margin-bottom: 6px;">
|
|
|
|
|
+ <strong>子订单编号:</strong> {{ subOrder.子订单编号 }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div style="font-size: 16px; font-weight: 700; margin-bottom: 6px;">
|
|
|
|
|
+ <strong>PO号:</strong> {{ subOrder.款号 }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div style="font-size: 16px; font-weight: 700;">
|
|
|
|
|
+ <strong>颜色备注:</strong> {{ subOrder.颜色备注 }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div v-if="subOrderList.length === 0 && selectedOrder" style="text-align: center; color: #999; margin-top: 50px; font-size: 16px; font-weight: 500;">
|
|
|
|
|
+ 暂无子订单数据
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div v-else-if="!selectedOrder" style="text-align: center; color: #999; margin-top: 50px; font-size: 16px; font-weight: 500;">
|
|
|
|
|
+ 请先选择左侧订单
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <span class="dialog-footer">
|
|
|
|
|
+ <el-button @click="orderDialogVisible = false; orderList = []; subOrderList = []; selectedOrder = '';">取消</el-button>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+</el-dialog>
|
|
|
|
|
|
|
|
<SubOrderPage ref="SubOrderPageRef" />
|
|
<SubOrderPage ref="SubOrderPageRef" />
|
|
|
<PrintPage ref="printPageRef" />
|
|
<PrintPage ref="printPageRef" />
|
|
@@ -412,7 +556,7 @@ import LuckyExcel from 'luckyexcel';
|
|
|
import {Layout,LayoutSider,LayoutContent} from '@arco-design/web-vue';
|
|
import {Layout,LayoutSider,LayoutContent} from '@arco-design/web-vue';
|
|
|
import {hiprint} from "vue-plugin-hiprint";
|
|
import {hiprint} from "vue-plugin-hiprint";
|
|
|
import {ref,reactive,nextTick,watch,setBlockTracking} from 'vue'
|
|
import {ref,reactive,nextTick,watch,setBlockTracking} from 'vue'
|
|
|
-import {getSpotList,search,SubWorkOrderStatusList,getTab,SubOrderProgress,OrderAttachments,getTabByGdbh,processAdd,spotcheckdel,Mabaolist,Apiorderids} from '@/api/mes/job'
|
|
|
|
|
|
|
+import {getSpotList,search,SubWorkOrderStatusList,getTab,SubOrderProgress,OrderAttachments,getTabByGdbh,processAdd,spotcheckdel,Mabaolist,Apiorder,Apiorderids} from '@/api/mes/job'
|
|
|
import {getMachineMac} from '@/api/jixiaoguanli/jitairibaobiao'
|
|
import {getMachineMac} from '@/api/jixiaoguanli/jitairibaobiao'
|
|
|
import {getMac} from '@/api/jixiaoguanli/baogong'
|
|
import {getMac} from '@/api/jixiaoguanli/baogong'
|
|
|
import {ElMessage,ElMessageBox} from "element-plus";
|
|
import {ElMessage,ElMessageBox} from "element-plus";
|
|
@@ -647,135 +791,262 @@ const showPdf = async (row) => {
|
|
|
const order_progressList = ref([])
|
|
const order_progressList = ref([])
|
|
|
|
|
|
|
|
const _sao_baoshu = ref('')
|
|
const _sao_baoshu = ref('')
|
|
|
- //查询
|
|
|
|
|
- const add_onSubmit = async () => {
|
|
|
|
|
- if(add_formData['机台号'] === ''){
|
|
|
|
|
- warningres('未获取到机台')
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
- if(add_searchInfo.value === '' || add_searchInfo.value === undefined){
|
|
|
|
|
- const WorkListdata = [];
|
|
|
|
|
- add_tableData.splice(0, add_tableData.length, ...WorkListdata);
|
|
|
|
|
- warningres('请扫描小票二维码')
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
- sizeDatas.length = 0;
|
|
|
|
|
- add_tableData.length = 0;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ const orderDialogVisible = ref(false); // 控制弹窗显示
|
|
|
|
|
+const orderList = ref([]); // 存储订单列表
|
|
|
|
|
+const subOrderList = ref([]); // 存储子订单列表
|
|
|
|
|
+const selectedOrder = ref(''); // 选中的订单
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+//查询按钮
|
|
|
|
|
+const add_onSubmit = async() => {
|
|
|
|
|
+ if(add_formData['机台号'] === ''){
|
|
|
|
|
+ warningres('未获取到机台')
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ if(add_searchInfo.value === '' || add_searchInfo.value === undefined){
|
|
|
|
|
+ const WorkListdata = [];
|
|
|
|
|
+ add_tableData.splice(0, add_tableData.length, ...WorkListdata);
|
|
|
|
|
+ warningres('请扫描小票二维码')
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ //清空所有输入框上报数量
|
|
|
|
|
+ if (slformdata) {
|
|
|
|
|
+ for (let i = 1; i <= 14; i++) {
|
|
|
|
|
+ slformdata['sl' + i] = '';
|
|
|
|
|
+ }
|
|
|
|
|
+ // 清空总和
|
|
|
|
|
+ slformdata.sctotal = '';
|
|
|
|
|
+ } else {
|
|
|
|
|
+ console.error('未定义');
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- //获取报工历史记录
|
|
|
|
|
- const getSpotLists = await getSpotList({order: add_searchInfo.value,code: _code,sys_sbID: add_formData['机台号']});
|
|
|
|
|
- if(getSpotLists.data.code === 1){
|
|
|
|
|
- warningres(getSpotLists.msg);
|
|
|
|
|
- return false;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 判断是否为子订单(包含DC并且有-)
|
|
|
|
|
+ if (add_searchInfo.value.includes('DC') && add_searchInfo.value.includes('-')) {
|
|
|
|
|
+ onseatch(add_searchInfo.value);
|
|
|
|
|
+
|
|
|
|
|
+ } else {
|
|
|
|
|
+ console.log('模糊输入')
|
|
|
|
|
+
|
|
|
|
|
+ // 调用模糊搜索订单接口
|
|
|
|
|
+ const getApiorder = await Apiorder({ search: add_searchInfo.value, code: _code });
|
|
|
|
|
+ if (getApiorder.data.code === 1) {
|
|
|
|
|
+ warningres(getApiorder.msg);
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ console.log(getApiorder);
|
|
|
|
|
+ if (getApiorder.data.list.length > 0) {
|
|
|
|
|
+ // 多条数据,显示弹窗让用户选择
|
|
|
|
|
+ orderList.value = getApiorder.data.list;
|
|
|
|
|
+ orderDialogVisible.value = true;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ warningres('未找到相关订单');
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+//查询搜索
|
|
|
|
|
+const onseatch = async (searchval) => {
|
|
|
|
|
+
|
|
|
|
|
+console.log(6666);
|
|
|
|
|
+console.log(searchval);
|
|
|
|
|
+add_searchInfo.value = searchval;
|
|
|
|
|
+
|
|
|
|
|
+sizeDatas.length = 0;
|
|
|
|
|
+add_tableData.length = 0;
|
|
|
|
|
+
|
|
|
|
|
+//获取报工历史记录
|
|
|
|
|
+const getSpotLists = await getSpotList({order: add_searchInfo.value,code: _code,sys_sbID: add_formData['机台号']});
|
|
|
|
|
+if(getSpotLists.data.code === 1){
|
|
|
|
|
+ warningres(getSpotLists.msg);
|
|
|
|
|
+ return false;
|
|
|
|
|
+}
|
|
|
|
|
+// console.log(getSpotLists)
|
|
|
|
|
+sizeDatas.splice(0, getSpotLists.data.headers.length, ...getSpotLists.data.headers); //型号数据
|
|
|
|
|
+add_tableData.splice(0, add_tableData.length, ...getSpotLists.data.records); //表格数据
|
|
|
|
|
+_list.value = getSpotLists.data.list
|
|
|
|
|
+
|
|
|
|
|
+if (!add_searchInfo.value.includes('-') && getSpotLists.data.records.length === 0) {
|
|
|
|
|
+ warningres('未查询到报工历史数据')
|
|
|
|
|
+ return false;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//xlsx附件
|
|
|
|
|
+const searchValue = add_searchInfo.value.split('-')[0];
|
|
|
|
|
+
|
|
|
|
|
+const SubOrder_list = await SubOrderProgress({order:searchValue});
|
|
|
|
|
+//订单编号
|
|
|
|
|
+order_progressList.value = SubOrder_list.data.list.map(item => ({
|
|
|
|
|
+ subOrderNo: item['订单编号'],
|
|
|
|
|
+ 入仓数量: item['订单总入仓数量'],
|
|
|
|
|
+ 裁剪数量: item['订单总裁剪数量'],
|
|
|
|
|
+ percentage: parseFloat(item['订单完成率'].replace('%', ''))
|
|
|
|
|
+}))
|
|
|
|
|
+//子订单编号
|
|
|
|
|
+progressList.value = SubOrder_list.data.result.map(item => ({
|
|
|
|
|
+ subOrderNo: item['子订单编号'],
|
|
|
|
|
+ 入仓数量: item['入仓数量'],
|
|
|
|
|
+ 裁剪数量: item['裁剪数量'],
|
|
|
|
|
+ percentage: parseFloat(item['完成率'].replace('%', ''))
|
|
|
|
|
+}))
|
|
|
|
|
+baoshulist(add_searchInfo.value)
|
|
|
|
|
+
|
|
|
|
|
+const jsOrderAttachments = await OrderAttachments({order:searchValue,desc:'技术附件'})
|
|
|
|
|
+const ddOrderAttachments = await OrderAttachments({order:searchValue,desc:'订单资料附件'})
|
|
|
|
|
+jstableData.splice(0,jsOrderAttachments.data.list.length,...jsOrderAttachments.data.list);
|
|
|
|
|
+ddtableData.splice(0,ddOrderAttachments.data.list.length,...ddOrderAttachments.data.list);
|
|
|
|
|
+
|
|
|
|
|
+_yskskh.value = getSpotLists.data.list //颜色、款式、款号
|
|
|
|
|
+_serial.value = String(getSpotLists.data.serial) //流水号
|
|
|
|
|
+_serial_num.value = String(getSpotLists.data.serial_num);//序号
|
|
|
|
|
+ console.log(_serial_num.value)
|
|
|
|
|
+//获取尺码、制单数/实裁量上面信息
|
|
|
|
|
+const keys1 = [
|
|
|
|
|
+ 'cm1', 'cm2', 'cm3', 'cm4', 'cm5', 'cm6', 'cm7',
|
|
|
|
|
+ 'cm8', 'cm9', 'cm10', 'cm11', 'cm12', 'cm13', 'cm14'
|
|
|
|
|
+];
|
|
|
|
|
+const keys2 = [
|
|
|
|
|
+ 'cmsl1', 'cmsl2', 'cmsl3', 'cmsl4', 'cmsl5', 'cmsl6', 'cmsl7',
|
|
|
|
|
+ 'cmsl8', 'cmsl9','cmsl10','cmsl11','cmsl12','cmsl13','cmsl14', 'zdtotal',
|
|
|
|
|
+];
|
|
|
|
|
+const keys3 = [
|
|
|
|
|
+ 'scsl1', 'scsl2', 'scsl3', 'scsl4', 'scsl5', 'scsl6', 'scsl7',
|
|
|
|
|
+ 'scsl8', 'scsl9','scsl10','scsl11','scsl12','scsl13','scsl14', 'sctotal',
|
|
|
|
|
+];
|
|
|
|
|
+//如果搜索是子订单编号
|
|
|
|
|
+if (add_searchInfo.value.includes('-')) {
|
|
|
|
|
+ for (let key of keys1) {
|
|
|
|
|
+ if (getSpotLists.data.list.hasOwnProperty(key)) { // 确保键存在于对象中
|
|
|
|
|
+ cmformdata[key] = getSpotLists.data.list[key];
|
|
|
}
|
|
}
|
|
|
- // console.log(getSpotLists)
|
|
|
|
|
- sizeDatas.splice(0, getSpotLists.data.headers.length, ...getSpotLists.data.headers); //型号数据
|
|
|
|
|
- add_tableData.splice(0, add_tableData.length, ...getSpotLists.data.records); //表格数据
|
|
|
|
|
- _list.value = getSpotLists.data.list
|
|
|
|
|
-
|
|
|
|
|
- if (!add_searchInfo.value.includes('-') && getSpotLists.data.records.length === 0) {
|
|
|
|
|
- warningres('未查询到报工历史数据')
|
|
|
|
|
- return false;
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ for (let key of keys2) {
|
|
|
|
|
+ if (getSpotLists.data.list.hasOwnProperty(key)) { // 确保键存在于对象中
|
|
|
|
|
+ zdslformdata[key] = getSpotLists.data.list[key];
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- //xlsx附件
|
|
|
|
|
- const searchValue = add_searchInfo.value.split('-')[0];
|
|
|
|
|
-
|
|
|
|
|
- const SubOrder_list = await SubOrderProgress({order:searchValue});
|
|
|
|
|
- //订单编号
|
|
|
|
|
- order_progressList.value = SubOrder_list.data.list.map(item => ({
|
|
|
|
|
- subOrderNo: item['订单编号'],
|
|
|
|
|
- 入仓数量: item['订单总入仓数量'],
|
|
|
|
|
- 裁剪数量: item['订单总裁剪数量'],
|
|
|
|
|
- percentage: parseFloat(item['订单完成率'].replace('%', ''))
|
|
|
|
|
- }))
|
|
|
|
|
- //子订单编号
|
|
|
|
|
- progressList.value = SubOrder_list.data.result.map(item => ({
|
|
|
|
|
- subOrderNo: item['子订单编号'],
|
|
|
|
|
- 入仓数量: item['入仓数量'],
|
|
|
|
|
- 裁剪数量: item['裁剪数量'],
|
|
|
|
|
- percentage: parseFloat(item['完成率'].replace('%', ''))
|
|
|
|
|
- }))
|
|
|
|
|
-
|
|
|
|
|
- const jsOrderAttachments = await OrderAttachments({order:searchValue,desc:'技术附件'})
|
|
|
|
|
- const ddOrderAttachments = await OrderAttachments({order:searchValue,desc:'订单资料附件'})
|
|
|
|
|
- jstableData.splice(0,jsOrderAttachments.data.list.length,...jsOrderAttachments.data.list);
|
|
|
|
|
- ddtableData.splice(0,ddOrderAttachments.data.list.length,...ddOrderAttachments.data.list);
|
|
|
|
|
-
|
|
|
|
|
- _yskskh.value = getSpotLists.data.list //颜色、款式、款号
|
|
|
|
|
- _serial.value = String(getSpotLists.data.serial) //流水号
|
|
|
|
|
- _serial_num.value = String(getSpotLists.data.serial_num);//序号
|
|
|
|
|
- console.log(_serial_num.value)
|
|
|
|
|
- //获取尺码、制单数/实裁量上面信息
|
|
|
|
|
- const keys1 = [
|
|
|
|
|
- 'cm1', 'cm2', 'cm3', 'cm4', 'cm5', 'cm6', 'cm7',
|
|
|
|
|
- 'cm8', 'cm9', 'cm10', 'cm11', 'cm12', 'cm13', 'cm14'
|
|
|
|
|
- ];
|
|
|
|
|
- const keys2 = [
|
|
|
|
|
- 'cmsl1', 'cmsl2', 'cmsl3', 'cmsl4', 'cmsl5', 'cmsl6', 'cmsl7',
|
|
|
|
|
- 'cmsl8', 'cmsl9','cmsl10','cmsl11','cmsl12','cmsl13','cmsl14', 'zdtotal',
|
|
|
|
|
- ];
|
|
|
|
|
- const keys3 = [
|
|
|
|
|
- 'scsl1', 'scsl2', 'scsl3', 'scsl4', 'scsl5', 'scsl6', 'scsl7',
|
|
|
|
|
- 'scsl8', 'scsl9','scsl10','scsl11','scsl12','scsl13','scsl14', 'sctotal',
|
|
|
|
|
- ];
|
|
|
|
|
- //如果搜索是子订单编号
|
|
|
|
|
- if (add_searchInfo.value.includes('-')) {
|
|
|
|
|
- for (let key of keys1) {
|
|
|
|
|
- if (getSpotLists.data.list.hasOwnProperty(key)) { // 确保键存在于对象中
|
|
|
|
|
- cmformdata[key] = getSpotLists.data.list[key];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- for (let key of keys2) {
|
|
|
|
|
- if (getSpotLists.data.list.hasOwnProperty(key)) { // 确保键存在于对象中
|
|
|
|
|
- zdslformdata[key] = getSpotLists.data.list[key];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- for (let key of keys3) {
|
|
|
|
|
- if (getSpotLists.data.list.hasOwnProperty(key)) { // 确保键存在于对象中
|
|
|
|
|
- scslformdata[key] = getSpotLists.data.list[key];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- for (let key of keys1) {
|
|
|
|
|
- cmformdata[key] = '';
|
|
|
|
|
- }
|
|
|
|
|
- for (let key of keys2) {
|
|
|
|
|
- zdslformdata[key] = '';
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ for (let key of keys3) {
|
|
|
|
|
+ if (getSpotLists.data.list.hasOwnProperty(key)) { // 确保键存在于对象中
|
|
|
|
|
+ scslformdata[key] = getSpotLists.data.list[key];
|
|
|
}
|
|
}
|
|
|
- updateTotal()
|
|
|
|
|
- _sao_baoshu.value = '';
|
|
|
|
|
- //DC2503291-0703,CF05,3,36,14,0,116
|
|
|
|
|
- if (add_searchInfo.value && add_searchInfo.value.match(/,/g)?.length >= 2) {
|
|
|
|
|
- // 有两个以上的逗号
|
|
|
|
|
- const arr = add_searchInfo.value.split(',')
|
|
|
|
|
-
|
|
|
|
|
- // 添加尺码和数量匹配逻辑
|
|
|
|
|
- if (arr.length >= 4) {
|
|
|
|
|
- const sizeValue = arr[3];
|
|
|
|
|
- const quantityValue = arr[4];
|
|
|
|
|
- _sao_baoshu.value = arr[6];
|
|
|
|
|
-
|
|
|
|
|
- // 遍历cmformdata找到对应的尺码位置
|
|
|
|
|
- for (let i = 1; i <= 14; i++) {
|
|
|
|
|
- const cmKey = `cm${i}`;
|
|
|
|
|
- const slKey = `sl${i}`;
|
|
|
|
|
-
|
|
|
|
|
- // 如果找到匹配的尺码
|
|
|
|
|
- if (cmformdata[cmKey] === sizeValue) {
|
|
|
|
|
- // 设置对应的上报数量
|
|
|
|
|
- slformdata[slKey] = quantityValue;
|
|
|
|
|
- // 记录自动填充的尺码索引
|
|
|
|
|
- autoFilledSizeIndex.value = i;
|
|
|
|
|
- // 更新合计
|
|
|
|
|
- updateTotal();
|
|
|
|
|
- break;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+} else {
|
|
|
|
|
+ for (let key of keys1) {
|
|
|
|
|
+ cmformdata[key] = '';
|
|
|
|
|
+ }
|
|
|
|
|
+ for (let key of keys2) {
|
|
|
|
|
+ zdslformdata[key] = '';
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+updateTotal()
|
|
|
|
|
+_sao_baoshu.value = '';
|
|
|
|
|
+//DC2503291-0703,CF05,3,36,14,0,116
|
|
|
|
|
+if (add_searchInfo.value && add_searchInfo.value.match(/,/g)?.length >= 2) {
|
|
|
|
|
+ // 有两个以上的逗号
|
|
|
|
|
+ const arr = add_searchInfo.value.split(',')
|
|
|
|
|
+
|
|
|
|
|
+ // 添加尺码和数量匹配逻辑
|
|
|
|
|
+ if (arr.length >= 4) {
|
|
|
|
|
+ const sizeValue = arr[3];
|
|
|
|
|
+ const quantityValue = arr[4];
|
|
|
|
|
+ _sao_baoshu.value = arr[6];
|
|
|
|
|
+
|
|
|
|
|
+ // 遍历cmformdata找到对应的尺码位置
|
|
|
|
|
+ for (let i = 1; i <= 14; i++) {
|
|
|
|
|
+ const cmKey = `cm${i}`;
|
|
|
|
|
+ const slKey = `sl${i}`;
|
|
|
|
|
+
|
|
|
|
|
+ // 如果找到匹配的尺码
|
|
|
|
|
+ if (cmformdata[cmKey] === sizeValue) {
|
|
|
|
|
+ // 设置对应的上报数量
|
|
|
|
|
+ slformdata[slKey] = quantityValue;
|
|
|
|
|
+ // 记录自动填充的尺码索引
|
|
|
|
|
+ autoFilledSizeIndex.value = i;
|
|
|
|
|
+ // 更新合计
|
|
|
|
|
+ updateTotal();
|
|
|
|
|
+ baoshulist(arr[0]);
|
|
|
|
|
+ break;
|
|
|
}
|
|
}
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+const multipleTable = ref(null);
|
|
|
|
|
+const Mabaolistform = reactive([]);
|
|
|
|
|
+const baoshulist = async (order) => {
|
|
|
|
|
+ const orderMabaolist = await Mabaolist({ order: order, process:add_formData['工序']});
|
|
|
|
|
+ console.log(orderMabaolist);
|
|
|
|
|
+ // 初始化所有包的数据,将 chefeng 转换为对象以便标记状态
|
|
|
|
|
+ Mabaolistform.splice(
|
|
|
|
|
+ 0,
|
|
|
|
|
+ Mabaolistform.length,
|
|
|
|
|
+ ...orderMabaolist.data.zong.map((item) => ({ value: item, status: 'default' }))
|
|
|
|
|
+ );
|
|
|
|
|
+ // 遍历完成包数,将状态标记为 complete
|
|
|
|
|
+ orderMabaolist.data.complete.forEach((completed) => {
|
|
|
|
|
+ const target = Mabaolistform.find((item) => item.value === completed);
|
|
|
|
|
+ if (target) {
|
|
|
|
|
+ target.status = 'complete';
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ // 遍历废掉包数,将状态标记为 deleted
|
|
|
|
|
+ orderMabaolist.data.delete.forEach((deleted) => {
|
|
|
|
|
+ const target = Mabaolistform.find((item) => item.value === deleted);
|
|
|
|
|
+ if (target) {
|
|
|
|
|
+ target.status = 'deleted';
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
|
|
+// 动态获取样式类
|
|
|
|
|
+const getBoxClass = (item) => {
|
|
|
|
|
+ if (item && item.status === 'complete') {
|
|
|
|
|
+ return 'number-box green'; // 完成包数
|
|
|
|
|
+ } else if (item && item.status === 'deleted') {
|
|
|
|
|
+ return 'number-box red'; // 废弃包数
|
|
|
|
|
+ }
|
|
|
|
|
+ return 'number-box'; // 默认状态
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// 获取子订单的方法
|
|
|
|
|
+const getSubOrders = async (orderNumber) => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const response = await Apiorderids({ order: orderNumber, code: _code });
|
|
|
|
|
+ if (response.code === 0) {
|
|
|
|
|
+ subOrderList.value = response.data.list;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ warningres('获取子订单失败');
|
|
|
|
|
+ subOrderList.value = [];
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('获取子订单错误:', error);
|
|
|
|
|
+ warningres('获取子订单时发生错误');
|
|
|
|
|
+ subOrderList.value = [];
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 双击子订单的处理函数
|
|
|
|
|
+const handleSubOrderDoubleClick = (subOrderNumber) => {
|
|
|
|
|
+ add_searchInfo.value = subOrderNumber;
|
|
|
|
|
+ onseatch(add_searchInfo.value);
|
|
|
|
|
+ orderDialogVisible.value = false; // 关闭弹窗
|
|
|
|
|
+ // 清空临时数据
|
|
|
|
|
+ orderList.value = [];
|
|
|
|
|
+ subOrderList.value = [];
|
|
|
|
|
+ selectedOrder.value = '';
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 选择订单时的处理
|
|
|
|
|
+const handleOrderSelect = (order) => {
|
|
|
|
|
+ selectedOrder.value = order.订单编号;
|
|
|
|
|
+ // 获取该订单的子订单
|
|
|
|
|
+ getSubOrders(order.订单编号);
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
|
|
|
|
|
const AttendanceVisible = ref(false)
|
|
const AttendanceVisible = ref(false)
|
|
@@ -802,7 +1073,7 @@ const currentSlValue = ref('')
|
|
|
|
|
|
|
|
// 标志变量,用于控制按钮的可点击状态
|
|
// 标志变量,用于控制按钮的可点击状态
|
|
|
let isClickable = true;
|
|
let isClickable = true;
|
|
|
-//车缝报工
|
|
|
|
|
|
|
+//报工
|
|
|
const add_Dialog = async () => {
|
|
const add_Dialog = async () => {
|
|
|
// 如果按钮不可点击,直接返回
|
|
// 如果按钮不可点击,直接返回
|
|
|
if (!isClickable) {
|
|
if (!isClickable) {
|
|
@@ -931,10 +1202,12 @@ const add_Dialog = async () => {
|
|
|
add_tableData.splice(0, add_tableData.length, ...getSpotLists.data.records);
|
|
add_tableData.splice(0, add_tableData.length, ...getSpotLists.data.records);
|
|
|
// add_printxp();
|
|
// add_printxp();
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ successres('报工成功')
|
|
|
|
|
+ baoshulist(add_searchInfo.value.split(',')[0]);
|
|
|
search.value = '';
|
|
search.value = '';
|
|
|
add_searchInfo.value = '';
|
|
add_searchInfo.value = '';
|
|
|
- successres('报工成功')
|
|
|
|
|
- // 上报成功后 清空所有输入框上报数量
|
|
|
|
|
|
|
+ //清空所有输入框上报数量
|
|
|
if (slformdata) {
|
|
if (slformdata) {
|
|
|
for (let i = 1; i <= 14; i++) {
|
|
for (let i = 1; i <= 14; i++) {
|
|
|
slformdata['sl' + i] = '';
|
|
slformdata['sl' + i] = '';
|
|
@@ -1784,6 +2057,25 @@ const warningres = (arr) => {
|
|
|
color: #721c24;
|
|
color: #721c24;
|
|
|
border-color: #f5c6cb;
|
|
border-color: #f5c6cb;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ :deep(.number-box.green) {
|
|
|
|
|
+ /* 完成包数(绿色) */
|
|
|
|
|
+ background-color: palegreen !important;
|
|
|
|
|
+ color: #155724;
|
|
|
|
|
+ border-color: #c3e6cb;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+:deep(.number-box.red) {
|
|
|
|
|
+ background-color: red !important;
|
|
|
|
|
+ color: #721c24;
|
|
|
|
|
+ border-color: #f5c6cb;
|
|
|
|
|
+}
|
|
|
|
|
+:deep(.el-table__body .status-plan-usage-low) {
|
|
|
|
|
+ background: #ff80ff !important;
|
|
|
|
|
+}
|
|
|
|
|
+:deep(.el-table__body .status-plan-usage-lows) {
|
|
|
|
|
+ background: white !important;
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
/* 全局修改 el-progress 的背景颜色 */
|
|
/* 全局修改 el-progress 的背景颜色 */
|
|
|
:deep(.progress-wrapper .el-progress-bar__outer) {
|
|
:deep(.progress-wrapper .el-progress-bar__outer) {
|