Merge branch 'master' of http://bore.pub:10439/r/ERP_override
| | |
| | | ElMessage.error(t('basicData.msg.checkoutLose')) |
| | | return |
| | | } |
| | | emit('getParent') |
| | | //emit('getParent') |
| | | break |
| | | } |
| | | } |
| | |
| | | xGrid.value = xGrids |
| | | gridOptions = gridOption |
| | | let newElement = document.createElement('div') |
| | | let leftElement = document.createElement('div') |
| | | const parser = new DOMParser(); |
| | | const htmlDoc = parser.parseFromString(cellarea.value, 'text/html') |
| | | newElement.innerHTML = htmlDoc.body.innerHTML |
| | | leftElement.innerHTML = htmlDoc.body.innerHTML |
| | | //cellarea.value = newElement |
| | | //添加多选列 |
| | | nextTick(() => { |
| | |
| | | // }) |
| | | |
| | | } |
| | | /*setTimeout(() => { |
| | | setTimeout(() => { |
| | | //#region 左侧固定列 |
| | | let leftfixedtbody = getTablexGrid().$el.querySelector(".vxe-table--fixed-wrapper .vxe-table--fixed-left-wrapper .vxe-table--body-wrapper table tbody")//获取fixedtbody区域 |
| | | |
| | |
| | | let leftFixedBodyWrapper = getTablexGrid().$el.querySelector(".vxe-table--fixed-wrapper .vxe-table--fixed-left-wrapper .vxe-table--body-wrapper") |
| | | if (leftFixedBodyWrapper) { |
| | | //注意这里的ref名称,这里是fixed区域的框的名称 |
| | | leftFixedBodyWrapper.appendChild(leftfixedcellarea.value) |
| | | leftFixedBodyWrapper.appendChild(leftElement) |
| | | } |
| | | //#endregion |
| | | |
| | | //#region 右侧固定列 |
| | | let rightfixedtbody = getTablexGrid().$el.querySelector(".vxe-table--fixed-wrapper .vxe-table--fixed-right-wrapper .vxe-table--body-wrapper table tbody")//获取fixedtbody区域 |
| | | /* let rightfixedtbody = getTablexGrid().$el.querySelector(".vxe-table--fixed-wrapper .vxe-table--fixed-right-wrapper .vxe-table--body-wrapper table tbody")//获取fixedtbody区域 |
| | | |
| | | if (rightfixedtbody) { |
| | | rightfixedtbody.addEventListener("mousedown", tbodymousedown)//给表格中的rightfixedtbody添加鼠标按下事件 |
| | |
| | | if (rightFixedBodyWrapper) { |
| | | //注意这里的ref名称,这里是fixed区域的框的名称 |
| | | rightFixedBodyWrapper.appendChild(rightfixedcellarea.value) |
| | | } |
| | | }*/ |
| | | //#endregion |
| | | |
| | | }, 100)*/ |
| | | }, 100) |
| | | |
| | | }) |
| | | } |
| | |
| | | |
| | | const router = useRouter() |
| | | const userStore = useUserInfoStore() |
| | | const user = userStore.user.userName |
| | | const user = userStore.user?.userName |
| | | //监听异步返回代码 |
| | | watch(()=>userStore.responseCode,(newVal) => { |
| | | switch (newVal){ |
| | |
| | | if (res.code == 200) { |
| | | |
| | | produceList.value = deepClone(res.data.data) |
| | | if (printMerge!==null && printMerge!==undefined && printMerge!==""){ |
| | | if (printMerge !== null && printMerge !== undefined && printMerge !== "") { |
| | | |
| | | produceList.value.forEach(item => { |
| | | item.detail[0].technologyNumber = printMerge; |
| | | }); |
| | | } |
| | | let technologyNumberMerge = printMerge.split('').join(','); |
| | | console.log(technologyNumberMerge) |
| | | produceList.value[0].detail[0].technologyNumberMerge = technologyNumberMerge |
| | | console.log(produceList.value[0].detail[0]) |
| | | const s01Values = []; |
| | | // 遍历 res.data.numberList 数组,获取每个元素的 S01 值并存储到 s01Values 数组中 |
| | | produceList.value[0].detailList.forEach(element => { |
| | | try { |
| | | const otherColumnsObject = JSON.parse(element.other_columns); |
| | | const s01Value = otherColumnsObject.S01; |
| | | if (s01Value) { |
| | | s01Values.push(s01Value); |
| | | } else { |
| | | // 如果 S01 值为空,可以选择添加默认值或者忽略这个元素 |
| | | s01Values.push(''); // 例如添加空字符串 |
| | | } |
| | | } catch (error) { |
| | | // console.error('Error parsing JSON or accessing S01 value:', error); |
| | | // 处理 JSON 解析错误或其他异常情况 |
| | | } |
| | | }); |
| | | // 遍历 res.data.Detail 数组,将 s01Values 中的值赋给每个订单详情对象的 s01Value 属性 |
| | | produceList.value[0].detailList.forEach((detail, index) => { |
| | | if (index < s01Values.length) { |
| | | detail.s01Value = s01Values[index]; // 添加一个名为 s01Value 的新属性,存储对应的 S01 值 |
| | | } else { |
| | | detail.s01Value = ''; // 如果 s01Values 中的值不足,可以添加默认值或者不进行赋值处理 |
| | | } |
| | | }); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | handleGetQRCode() |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | }) |
| | | |
| | | } |
| | | |
| | | ) |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | }; |
| | | |
| | | |
| | | |
| | | |
| | | // 打印方法 |
| | |
| | | <thead> |
| | | <tr v-for="(itemFlow,index) in item.detail" :key="index"> |
| | | <td colspan="24"> |
| | | <div id="bj" style="float: right;font-size: 28px">补 {{ id + 1 }}</div> |
| | | <div id="bj" style="float: right;font-size: 28px">补 {{ id + 1 }}</div> |
| | | <div>天津北方玻璃技术股份有限公司</div> |
| | | <div>生产流程卡</div> |
| | | <div style="text-align: right;font-weight: bolder">流程卡号: {{ |
| | | <div v-if="itemFlow.technologyNumberMerge!=''" style="text-align: right;font-weight: bolder">流程卡号: {{ |
| | | itemFlow.process_id |
| | | }}/{{ itemFlow.technologyNumberMerge }} 共 {{ flowCardCount }} 架 |
| | | </div> |
| | | <div v-else style="text-align: right;font-weight: bolder">流程卡号: {{ |
| | | itemFlow.process_id |
| | | }}/{{ itemFlow.technologyNumber }} 共 {{ flowCardCount }} 架 |
| | | </div> |
| | |
| | | <td class="tdNowrap">项目名称:</td> |
| | | <td colspan="2">{{ items.project }}</td> |
| | | <td class="tdNowrap">工艺流程:</td> |
| | | <td colspan="16">{{ items.process }}</td> |
| | | <td colspan="17">{{ items.process }}</td> |
| | | </tr> |
| | | <tr v-for="(itemTr,index) in item.detail" :key="index"> |
| | | <td class="tdNowrap">磨边类型:</td> |
| | |
| | | <td class="tdNowrap">单片名称:</td> |
| | | <td colspan="2">{{ itemTr.glass_child }}</td> |
| | | <td class="tdNowrap">产品名称:</td> |
| | | <td colspan="16">{{ itemTr.product_name }}</td> |
| | | <td colspan="17">{{ itemTr.product_name }}</td> |
| | | </tr> |
| | | <tr> |
| | | <td rowspan='2'>序号</td> |
| | | <td rowspan='2'>编号</td> |
| | | <td rowspan='2'>宽*高</td> |
| | | <td rowspan='2'>数量</td> |
| | | <td rowspan='2'>面积</td> |
| | |
| | | |
| | | <tr v-for="(itemDatile,index) in item.detailList" :key="index"> |
| | | <td>{{ itemDatile.order_number }}</td> |
| | | <td>{{itemDatile.s01Value}}</td> |
| | | <td>{{ itemDatile.child_width }}</td> |
| | | <td class="item">{{ itemDatile.quantity }}</td> |
| | | <td>{{ itemDatile.total_area }}</td> |
| | |
| | | 数量: |
| | | <label>{{ itemsum.quantity }}</label> |
| | | 面积: |
| | | <label>{{ parseFloat(itemsum.gross_area,2) }}</label> |
| | | <label>{{ parseFloat(itemsum.gross_area.toFixed(2)) }}</label> |
| | | 重量: |
| | | <label>{{ itemsum.weight }}</label> |
| | | <label>{{ parseFloat(itemsum.weight.toFixed(2)) }}</label> |
| | | </td> |
| | | </tr> |
| | | <tr v-for="(itemtextarea,index) in item.detail" :key="index"> |
| | |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | | </tr> |
| | | <tr> |
| | | <td>生产日期</td> |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | | </tr> |
| | | <tr v-for="(qrCodeItem,index) in item.detail" :key="index"> |
| | | <td colspan="19" > |
| | | <td colspan="19"> |
| | | <span style="display: flex;"> |
| | | <span style="display: flex;width: 25%" v-for="(qrCodeItems,index) in qrCodeItem.qrcodeList" :key="index"> |
| | | <span v-for="(qrCodeItems,index) in qrCodeItem.qrcodeList" :key="index" style="display: flex;width: 35%"> |
| | | <div class='qrCode' style="width: 80px;height: 80px;"> |
| | | <img :src= qrCodeItems.qrcode> |
| | | <img :src=qrCodeItems.qrcode> |
| | | </div> |
| | | <span style="float: left;font-weight: bolder">{{ qrCodeItem.process_id+"/"+qrCodeItems.technologyNumber }}</span> |
| | | <span style="float: left;font-weight: bolder">{{ |
| | | qrCodeItem.process_id + "/" + qrCodeItems.technologyNumber |
| | | }}</span> |
| | | </span> |
| | | </span> |
| | | </td> |
| | |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'basicName', |
| | | title: t('machine.basicName'), |
| | |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'deviceName', |
| | | title: t('machine.basicName'), |
| | |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | |
| | | align: 'center',//文字居中 |
| | | stripe: true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30, useKey: false},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | id: 'CustomerListRight', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | |
| | | value: '1', |
| | | label: t('processCard.finishedProductLabel'), |
| | | }, |
| | | // { |
| | | // value: '2', |
| | | // label: t('processCard.halfProductLabel'), |
| | | // }, |
| | | /* { |
| | | value: '2', |
| | | label: t('processCard.halfProductLabel'), |
| | | },*/ |
| | | { |
| | | value: `${company.printLabel.labelValue}`, |
| | | label: `${company.printLabel.labelType}`, |
| | |
| | | } |
| | | } |
| | | |
| | | let printMergeVal=printMerge.value.split('').join(',') |
| | | console.log(printMergeVal) |
| | | let printMergeVal=printMerge.value |
| | | router.push({path: '/main/processCard/printProcess', query: {printList: JSON.stringify(selectRecords),printMerge:printMergeVal}}) |
| | | |
| | | break |
| | |
| | | align: 'center',//文字居中 |
| | | stripe: true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮 |
| | | id: 'demo_1', |
| | | id: 'demo_2', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | |
| | | const route = currentRoute.value |
| | | const printMerge = route.query.printMerge |
| | | data.value.printList = JSON.parse(route.query.printList) |
| | | console.log(route.query.printList) |
| | | let flowCardCount = data.value.printList.length |
| | | onMounted(() => { |
| | | // if (id === null || id === undefined || id === '') { |
| | |
| | | if (printMerge !== null && printMerge !== undefined && printMerge !== "") { |
| | | |
| | | produceList.value.forEach(item => { |
| | | item.detail[0].technologyNumber = printMerge.split(',').join(''); |
| | | item.detail[0].technologyNumber = printMerge; |
| | | }); |
| | | } |
| | | let technologyNumberMerge = printMerge.split('').join(','); |
| | | console.log(technologyNumberMerge) |
| | | produceList.value[0].detail[0].technologyNumberMerge = technologyNumberMerge |
| | | console.log(produceList.value[0].detail[0]) |
| | | const s01Values = []; |
| | | // |
| | | // // 获取每个元素的 S01 值并存储到 s01Values 数组中 |
| | | // produceList.value[0].numberList.forEach(element => { |
| | | // const otherColumnsObject = JSON.parse(element.other_columns); |
| | | // const s01Value = otherColumnsObject.S01; |
| | | // s01Values.push(s01Value); |
| | | // }); |
| | | // produceList.value[0].detailList.forEach((detail, index) => { |
| | | // detail.s01Value = s01Values[index]; // 添加一个名为 s01Value 的新属性,存储对应的 S01 值 |
| | | // }); |
| | | // 遍历 res.data.numberList 数组,获取每个元素的 S01 值并存储到 s01Values 数组中 |
| | | produceList.value[0].detailList.forEach(element => { |
| | | try { |
| | |
| | | <div id="bj" style="float: right;font-size: 28px">{{ id + 1 }}</div> |
| | | <div>天津北方玻璃技术股份有限公司</div> |
| | | <div>生产流程卡</div> |
| | | <div style="text-align: right;font-weight: bolder">流程卡号: {{ |
| | | <div v-if="itemFlow.technologyNumberMerge!=''" style="text-align: right;font-weight: bolder">流程卡号: {{ |
| | | itemFlow.process_id |
| | | }}/{{ itemFlow.technologyNumberMerge }} 共 {{ flowCardCount }} 架 |
| | | </div> |
| | | <div v-else style="text-align: right;font-weight: bolder">流程卡号: {{ |
| | | itemFlow.process_id |
| | | }}/{{ itemFlow.technologyNumber }} 共 {{ flowCardCount }} 架 |
| | | </div> |
| | |
| | | 面积: |
| | | <label>{{ parseFloat(itemsum.gross_area.toFixed(2)) }}</label> |
| | | 重量: |
| | | <label>{{ itemsum.weight }}</label> |
| | | <label>{{ parseFloat(itemsum.weight.toFixed(2)) }}</label> |
| | | </td> |
| | | </tr> |
| | | <tr v-for="(itemtextarea,index) in item.detail" :key="index"> |
| | |
| | | align: 'center',//文字居中 |
| | | stripe: true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | id: 'CustomerListDetail', |
| | | //showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | |
| | | addListener(brokenGrid.value,brokenGridOptions) |
| | | let damage =ref(brokenRow.value.damageDetails) |
| | | brokenGrid.value.reloadData(damage.value) |
| | | //addListener(xGrid.value, gridOptions) |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | onMounted(() => { |
| | | window.addEventListener('keypress', qrcodeScanner); |
| | | // addListener(xGrid.value, gridOptions) |
| | | //addListener(xGrid.value, gridOptions) |
| | | }) |
| | | |
| | | // 在组件卸载时移除键盘事件监听 |
| | |
| | | { code: 'computedMoney', name: t('basicData.calculateAmount'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: true }, |
| | | { code: 'errorArea', name: t('basicData.errorSettlementArea'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false }, |
| | | { code: 'otherMoney', name: t('basicData.otherAmounts'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false }, |
| | | { code: 'sizeCheck', name: t('basicData.sizeReview'), prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: true } |
| | | { code: 'sizeCheck', name: t('basicData.sizeReview'), prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false } |
| | | ] |
| | | ] |
| | | } |
| | |
| | | //工艺审核后,订单未审核 取消审核按钮禁用和尺寸审核 |
| | | if(res.data.order.processReview === 2 && res.data.order.orderReview === 0){ |
| | | gridOptions.toolbarConfig.buttons[2].disabled = false |
| | | gridOptions.menuConfig.body.options[0][8].disabled =false |
| | | //gridOptions.menuConfig.body.options[0][8].disabled =false |
| | | } |
| | | |
| | | //按钮审核过后变为反审 |
| | |
| | | fc.process_id, |
| | | SUM(od.quantity) as quantity, |
| | | round(SUM(ogd.total_area), 2) as gross_area, |
| | | round(SUM(ogd.child_width*ogd.child_height*od.quantity*p.thickness/1000000*2.5),2) as weight, |
| | | sum(od.weight) as weight, |
| | | #{technologyNumber} as technologyNumber, |
| | | concat(fc.process_id, '/', #{technologyNumber}) as processIdNumber |
| | | from flow_card as fc |