Merge branch 'master' of http://bore.pub:10439/r/ERP_override
| | |
| | | </tr> |
| | | <tr> |
| | | <th>磨边</th> |
| | | <th colspan="2"></th> |
| | | <th colspan="2">{{data.order.otherRemarks}}</th> |
| | | <th>完工日期</th> |
| | | <th colspan="2">{{data.order.deliveryDate}}</th> |
| | | <th>商标</th> |
| | |
| | | <div id="sheet"> |
| | | <table border="1"> |
| | | <tr class="title-s"> |
| | | <th colspan="16"> |
| | | <th colspan="17"> |
| | | <img src="../../../assets/northGlass.ico" alt="" style="float: left;max-width: 60px;max-height: 60px"> |
| | | <h1> |
| | | {{company.companyName}} |
| | |
| | | </tr> |
| | | |
| | | <tr class="title-s"> |
| | | <th colspan="6">地址:{{company.address}}</th> |
| | | <th colspan="7">地址:{{company.address}}</th> |
| | | <th colspan="5">电话:{{ company.telephone }}</th> |
| | | <th colspan="5">传真:{{ company.fax }}</th> |
| | | </tr> |
| | | |
| | | |
| | | <tr class="title-s" > |
| | | <th colspan="16"> |
| | | <th colspan="17"> |
| | | <h3>玻璃加工单</h3> |
| | | </th> |
| | | </tr> |
| | |
| | | <th class="title-1">客户名称</th> |
| | | <th colspan="7">{{data.order.customerName}}</th> |
| | | <th class="title-1">工程名称</th> |
| | | <th colspan="7">{{data.order.project}}</th> |
| | | <th colspan="8">{{data.order.project}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th class="title-1">生产单号</th> |
| | |
| | | <th class="title-1">下单日期</th> |
| | | <th colspan="3">{{data.order.createTime}}</th> |
| | | <th class="title-1">订单类型</th> |
| | | <th colspan="3">{{data.order.orderType}}</th> |
| | | <th colspan="4">{{data.order.orderType}}</th> |
| | | <th class="title-1">跟单员</th> |
| | | <th colspan="3">{{data.order.creator}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th>磨边</th> |
| | | <th colspan="3"></th> |
| | | <th colspan="3">{{data.order.otherRemarks}}</th> |
| | | <th>完工日期</th> |
| | | <th colspan="3">{{data.order.deliveryDate}}</th> |
| | | <th>商标</th> |
| | | <th colspan="3">{{data.order.icon}}</th> |
| | | <th colspan="4">{{data.order.icon}}</th> |
| | | <th>包装</th> |
| | | <th colspan="3">{{data.order.packType}}</th> |
| | | </tr> |
| | |
| | | <th>片数</th> |
| | | <th>面积</th> |
| | | <th>延米</th> |
| | | <th>半径</th> |
| | | <th>楼号</th> |
| | | <th>加工要求</th> |
| | | <th>备注</th> |
| | |
| | | <tbody v-for="(item,index) in data.orderDetail" :key="index"> |
| | | <tr> |
| | | <td colspan="2" class="no-change-row">产品名称</td> |
| | | <td colspan="9">{{item.productName}}</td> |
| | | <td colspan="10">{{item.productName}}</td> |
| | | <td class="no-change-row">产品描述</td> |
| | | <td colspan="4"></td> |
| | | </tr> |
| | |
| | | <td>{{item1.quantity}}</td> |
| | | <td>{{item1.grossArea}}</td> |
| | | <td>{{item1.perimeter}}</td> |
| | | <td>{{item1.bendRadius}}</td> |
| | | <td>{{item1.buildingNumber}}</td> |
| | | <td>{{item1.processingNote}}</td> |
| | | <td>{{item1.remarks}}</td> |
| | |
| | | <td>下料-高</td> |
| | | <td>拱高</td> |
| | | |
| | | <td colspan="6"></td> |
| | | <td colspan="7"></td> |
| | | </tr> |
| | | <tr v-if="item1.differentSize" v-for="(item2,index2) in item1.orderGlassDetails" :key="index2" > |
| | | |
| | |
| | | <td>{{item2.arc}}</td> |
| | | <td>{{item2.childHeight}}</td> |
| | | <td>{{item1.archRise}}</td> |
| | | <td colspan="6"></td> |
| | | <td colspan="7"></td> |
| | | |
| | | </tr> |
| | | </template> |
| | |
| | | <td>{{getQuantity(item.productDetail)}}</td> |
| | | <td>{{getArea(item.productDetail)}}</td> |
| | | <td>{{getPerimeter(item.productDetail)}}</td> |
| | | <td colspan="8"></td> |
| | | <td colspan="9"></td> |
| | | </tr> |
| | | |
| | | |
| | |
| | | <td colspan=""></td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="16" style="white-space: pre-wrap;text-align:left "> |
| | | <td colspan="17" style="white-space: pre-wrap;text-align:left "> |
| | | <template v-for="(item,index) in data.order.processingNote.split('\n')"> |
| | | {{item}} |
| | | <br> |
| | |
| | | import PrintLabel from '@/views/pp/processCard/PrintLabel.vue' |
| | | import PrintCustomLabel from '@/views/pp/processCard/PrintCustomLabel.vue' |
| | | import footSum from "@/hook/footSum" |
| | | import {Search} from "@element-plus/icons-vue"; |
| | | //语言获取 |
| | | const {t} = useI18n() |
| | | let router = useRouter() |
| | |
| | | dataType: [], |
| | | }) |
| | | |
| | | //定义变量 |
| | | const form = reactive({ |
| | | date1: '', |
| | | }) |
| | | //获取七天前到当前时间 |
| | | function getNowTime() { |
| | | const start = new Date(new Date().getTime() - 3600 * 1000 * 24 * 7) |
| | | .toISOString() |
| | | .replace('T', ' ') |
| | | .slice(0, 10) //默认开始时间7天前 |
| | | const end = new Date(new Date().getTime() + 3600 * 1000 * 24) |
| | | .toISOString() |
| | | .replace('T', ' ') |
| | | .slice(0, 10)//默认结束时间当前时间 |
| | | return [start, end] |
| | | } |
| | | |
| | | const {currentRoute} = useRouter() |
| | | const route = currentRoute.value |
| | | |
| | |
| | | } |
| | | }) |
| | | |
| | | |
| | | //点击查询 |
| | | const getWorkOrder = () => { |
| | | |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | request.post(`/processCard/flowCard/${pageNum.value}/${total.pageSize}/${startTime}/${endTime}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | total.dataTotal = res.data.total.total * 1 |
| | | total.pageTotal = res.data.total.pageTotal |
| | | pageTotal.value = res.data.total |
| | | xGrid.value.loadData(res.data.data) |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | |
| | | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | :default-time="defaultTime" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | format="YYYY/MM/DD" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | | |
| | | /> |
| | | |
| | | <el-button |
| | | id="select" |
| | | :icon="Search" |
| | | type="primary" @click="getWorkOrder">{{ $t('basicData.search') }} |
| | | |
| | | </el-button> |
| | | |
| | | |
| | | <el-input clearable placeholder="合并打印" v-model="printMerge" style="width: 90px"></el-input> |
| | | |
| | | <label>{{$t('processCard.labelStyle')}}:</label> |
| | |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/Replenish/SelectReplenish' }">{{$t('replenish.patchManagement')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/Replenish/AddReplenish' }">{{$t('replenish.addPatches')}}</el-breadcrumb-item> |
| | | <!-- <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/Replenish/SelectPrintRepairFlowCard' }">{{$t('replenish.printPatches')}}</el-breadcrumb-item>--> |
| | | <!-- <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/Replenish/PrintRepairFlowCard' }">{{$t('replenish.printPatches')}}</el-breadcrumb-item>--> |
| | | <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('productStock.reportForms')}}</el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | </div> |
| | |
| | | //对选中的左边表格数据进行循环 |
| | | checkedList.forEach((item) => { |
| | | //判断可用数量是否大于等于输入的数量,不满足则抛出异常 |
| | | if (item.quantity < checkedNum.value) throw new Error(t('processCard.schedulingQuantity')); |
| | | //左边表格可用数量减去输入的数量 |
| | | console.log(item.quantity , checkedNum.value) |
| | | // if (item.quantity < checkedNum.value*1) throw new Error(t('processCard.schedulingQuantity')); |
| | | if (item.quantity < checkedNum.value*1){ |
| | | ElMessage.warning(t('processCard.schedulingQuantity')) |
| | | } |
| | | //左边表格可用数量减去输入的数量 |
| | | item.quantity = item.quantity - checkedNum.value |
| | | //右边表格数据 |
| | | let rightData = $grid.getTableData().fullData |
| | |
| | | } else { |
| | | |
| | | |
| | | item.baiscQuantity = item.baiscQuantity * 1 + leftData[leftfilterIndex].quantity * 1 |
| | | item.computeGrossArea=(item.width*item.height*item.baiscQuantity/1000000).toFixed(2) |
| | | // item.baiscQuantity = item.baiscQuantity * 1 + leftData[leftfilterIndex].quantity * 1 |
| | | // item.computeGrossArea=(item.width*item.height*item.baiscQuantity/1000000).toFixed(2) |
| | | //item.computeGrossArea=(item.width*item.height*item.baiscQuantity/1000000).toFixed(2) |
| | | // for (let i = 0; i <checkedList.length ; i++) { |
| | | // |
| | |
| | | if (leftData[i].orderNumber === item.orderNumber && leftData[i].processId === item.processId) { |
| | | leftData[i].quantity = leftData[i].quantity * 1 + checkedNum.value * 1 |
| | | leftData[i].computeGrossArea=(leftData[i].computeGrossArea-leftData[i].width*leftData[i].height*leftData[i].baiscQuantity/1000000).toFixed(2) |
| | | |
| | | break |
| | | } else if (leftData[i].orderNumber === item.orderNumber && leftData[i].processId !== item.processId) { |
| | | |
| | | delete item._X_ROW_KEY |
| | | $gridLeft.insert(item) |
| | | item._X_ROW_KEY = key |
| | | break |
| | | } else if (leftData[i].orderNumber !== item.orderNumber && leftData[i].processId !== item.processId) { |
| | | |
| | | delete item._X_ROW_KEY |
| | | $gridLeft.insert(item) |
| | | item._X_ROW_KEY = key |
| | | break |
| | | }else if (leftData[i].orderNumber !== item.orderNumber && leftData[i].processId == item.processId) { |
| | | delete item._X_ROW_KEY |
| | | $gridLeft.insert(item) |
| | | item._X_ROW_KEY = key |
| | | break |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | <script setup> |
| | | import {computed, nextTick, onMounted, reactive, ref, toRefs} from "vue"; |
| | | import {computed, nextTick, onMounted, onUnmounted, reactive, ref, toRefs} from "vue"; |
| | | import {useRouter,useRoute} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | |
| | | |
| | | }) |
| | | |
| | | /*onMounted(() => { |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value, gridOptions) |
| | | })*/ |
| | | |
| | | |
| | | let inputDisabled = ref(false) |
| | | onMounted(() =>{ |
| | |
| | | const $grid = xGrid.value |
| | | this.$grid.commitProxy('data', yourData) |
| | | } |
| | | onMounted(() => { |
| | | window.addEventListener('keypress', qrcodeScanner); |
| | | }) |
| | | |
| | | // 在组件卸载时移除键盘事件监听 |
| | | onUnmounted(() => { |
| | | window.removeEventListener('keypress', qrcodeScanner); |
| | | }) |
| | | |
| | | let code = ''; |
| | | let codeArr = []; |
| | | let lastTime,nextTime = '' |
| | | let lastCode,nextCode = '' |
| | | const qrcodeScanner = (e) =>{ |
| | | |
| | | nextCode = e.key; |
| | | |
| | | |
| | | // 当前触发时间 |
| | | nextTime = new Date().getTime(); |
| | | // 第一次获取 |
| | | if(!lastTime && !lastCode && e.key !== 'Enter'){ |
| | | codeArr = [] |
| | | codeArr.push(e.key) |
| | | } |
| | | |
| | | if(lastCode && lastTime && (nextTime - lastTime > 50)){ |
| | | // 相隔时间大于30 说明不是扫码枪扫描的 清空重新 |
| | | codeArr = [] |
| | | // 当扫码前有keypress事件时,防止首字缺失 |
| | | } else if(lastCode && lastTime && e.key !== 'Enter'){ |
| | | codeArr.push(e.key) |
| | | } |
| | | lastCode = nextCode |
| | | lastTime = nextTime |
| | | // 扫描结束 |
| | | if(e.keyCode === 13){ |
| | | // 可进行下一步操作 |
| | | /* 下一步操作 */ |
| | | if(codeArr.length!==0){ |
| | | titleUploadData.value.processId = codeArr.join('') |
| | | } |
| | | |
| | | codeArr=[] |
| | | lastTime = '' |
| | | nextTime = '' |
| | | lastCode = '' |
| | | nextCode = '' |
| | | } |
| | | |
| | | } |
| | | |
| | | </script> |
| | | |
| | |
| | | public Result updateReplenish( @RequestBody Map<String,Object> object){ |
| | | return Result.seccess(replenishService.updateReplenish(object)); |
| | | } |
| | | |
| | | @ApiOperation("流程卡补片打印查询接口") |
| | | @PostMapping("/selectReplenishPrintFlowCard/{selectTime1}/{selectTime2}/{orderId}/{project}") |
| | | public Result selectReplenishPrintFlowCard( |
| | | @PathVariable Date selectTime1, |
| | | @PathVariable Date selectTime2, |
| | | @PathVariable String orderId, |
| | | @PathVariable String project, |
| | | @RequestBody FlowCard flowCard) { |
| | | return Result.seccess(replenishService.selectReplenishPrintFlowCardSv(selectTime1, selectTime2, orderId, project, flowCard)); |
| | | } |
| | | } |
| | |
| | | String oddNumbers = alias+formattedDate+formattedNumber; |
| | | return oddNumbers; |
| | | } |
| | | |
| | | |
| | | public Object selectReplenishPrintFlowCardSv(java.sql.Date selectTime1, java.sql.Date selectTime2, String orderId, String project, FlowCard flowCard) { |
| | | if ("null".equals(orderId)) { |
| | | orderId = ""; |
| | | } |
| | | if ("null".equals(project)) { |
| | | project = ""; |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | // map.put("data", flowCardMapper.selectPrintFlowCardMp(selectTime1, selectTime2, orderId, project, flowCard)); |
| | | return map; |
| | | } |
| | | } |
| | | |
| | |
| | | left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd |
| | | on rw.order_id = ogd.order_id and dd.order_number = ogd.order_number |
| | | |
| | | where dd.breakage_quantity-dd.quantity>0 and dd.available=0 and (dd.responsible_process=rw.this_process or (dd.quality_ins_status!=1)) |
| | | where dd.breakage_quantity-dd.quantity>0 and dd.available=0 and (dd.responsible_process=rw.this_process or (dd.quality_ins_status!=1)) and rw.reviewed_state!=-1 |
| | | order by dd.id desc |
| | | </select> |
| | | |
| | |
| | | o.quantity = od.b, |
| | | o.area = od.c, |
| | | o.perimeter= od.aa, |
| | | o.other_money = ifnull(c.money,0) |
| | | o.other_money = ifnull(c.money,0), |
| | | o.other_remarks = (select group_concat( distinct edging_type) from order_detail where order_id = #{orderId} and edging_type is not null) |
| | | where |
| | | o.order_id = #{orderId} |
| | | |