Merge branch 'master' of http://bore.pub:10439/r/ERP_override
| | |
| | | } |
| | | } |
| | | } |
| | | console.log(props.lastList) |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
New file |
| | |
| | | <script setup> |
| | | import request from "@/utils/request" |
| | | import {ElDatePicker, ElMessage} from "element-plus" |
| | | import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue" |
| | | import {Search} from "@element-plus/icons-vue" |
| | | import {useRouter} from 'vue-router' |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import {useI18n} from 'vue-i18n' |
| | | import deepClone from "@/utils/deepClone"; |
| | | import companyInfo from "@/stores/sd/companyInfo" |
| | | |
| | | const company = companyInfo() |
| | | //è¯è¨è·å |
| | | const {t} = useI18n() |
| | | let router = useRouter() |
| | | let produceList = ref([]) |
| | | let labelList = ref([]) |
| | | let titleList = ref([]) |
| | | let dataList = ref([]) |
| | | let list = ref([]) |
| | | let lastList = ref([]) |
| | | |
| | | let filterData = ref({}) |
| | | |
| | | const data = ref({ |
| | | printList: [] |
| | | }) |
| | | |
| | | let props = defineProps({ |
| | | list:null,//å¾éçæ°æ® |
| | | faceOrientation:null,//å
å¤é¢ |
| | | type:null,//æ ç¾æ¨¡æ¿ |
| | | lableType:null//æ ç¾ç±»å |
| | | }) |
| | | |
| | | const {currentRoute} = useRouter() |
| | | const route = currentRoute.value |
| | | let type = props.type |
| | | let faceOrientation = props.faceOrientation |
| | | if (type.indexOf("è±æ")>-1 && faceOrientation==="æ¤é¢ä¸ºå®¤å
é¢"){ |
| | | faceOrientation='INSIDE' |
| | | } |
| | | else if (type.indexOf("è±æ")>-1 && faceOrientation==="æ¤é¢ä¸ºå®¤å¤é¢"){ |
| | | faceOrientation='OUTSIDE' |
| | | } |
| | | let lableType = props.lableType |
| | | data.value.printList = JSON.parse(props.list) |
| | | onMounted(() => { |
| | | request.post(`/processCard/getPrintCustomDataProjectNoDetail/${type}`, data.value).then((res) => { |
| | | if (res.code == 200) { |
| | | console.log(res.data.data) |
| | | produceList.value = deepClone(res.data.title) |
| | | list.value = deepClone(res.data.data) |
| | | const data = produceList.value[0].value |
| | | dataList = JSON.parse(`[${data}]`); |
| | | labelList = dataList[0] |
| | | for (let i = 0; i < list.value.length; i++) { |
| | | let count = list.value[i].data.length |
| | | for (let j = 0; j < count; j++) { |
| | | lastList.value.push(list.value[i].data[j]) |
| | | |
| | | } |
| | | } |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | |
| | | } |
| | | ) |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | //ä¿®æ¹ç¸å产ååç§°æ ç¾ |
| | | const updateProductName = (event, index,id) => { |
| | | // å建æ å°å¯¹è±¡ |
| | | const propertyMapping = {}; |
| | | labelList.forEach(item => { |
| | | propertyMapping[item.name] = item.title; |
| | | }); |
| | | // è¾å
¥çå¼ |
| | | const newValue = event.target.innerText; |
| | | const parts = newValue.split('ï¼'); |
| | | const result = parts[1]; // è·ååå·åçé¨å |
| | | |
| | | // è·åæ å°ä¸ææçé® |
| | | const keys = Object.keys(propertyMapping); |
| | | |
| | | // æ ¹æ® index è·å对åºç屿§å |
| | | const propertyName = keys[index]; |
| | | |
| | | // 妿æ å°ä¸æ²¡æè¯¥ indexï¼ç´æ¥è¿å |
| | | if (!propertyName) { |
| | | console.warn('Unsupported index:', index); |
| | | return; |
| | | } |
| | | |
| | | // éå lastList å¹¶æ´æ°å¯¹åºç屿§ |
| | | lastList.value.forEach(obj => { |
| | | // è·ååç¼å orderId |
| | | const prefix = lastList.value[id].processId.substring(0, 11); |
| | | const orderId = obj.orderId; |
| | | const glassNumber=lastList.value[id].glassNumber |
| | | const customerName = obj.customerName |
| | | // æ ¹æ® propertyName æ´æ°å±æ§ |
| | | if (propertyName === 'productAbbreviation' && prefix === obj.processId.substring(0, 11)) { |
| | | obj.productAbbreviation = result; |
| | | } |
| | | |
| | | if (propertyName === 'project' && orderId === obj.orderId) { |
| | | obj.project = result; |
| | | } |
| | | if (propertyName === 'productName' && prefix === obj.processId.substring(0, 11)){ |
| | | obj.productName = result; |
| | | } |
| | | if (propertyName === 'customerName' && orderId === obj.orderId){ |
| | | obj.customerName = result; |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div id="print" :class="company.printLabel.className.custom.printFlowCardName()"> |
| | | <div v-for="(item1,index) in lastList" :class="company.printLabel.className.custom.entiretyName()"> |
| | | <div class="row4">{{ faceOrientation }}</div> |
| | | <div v-for="(item,id) in labelList" :class="company.printLabel.className.custom.contentRowName()"> |
| | | <div v-if="item1[item.name] != null && item1[item.name] !== ''" class="row1" contenteditable="true" @input="updateProductName($event, id,index)" v-text="item.title+'ï¼'+item1[item.name]"></div> |
| | | <!-- <div class="row2" style="width: 100%;"><input class="contentRow2" v-model="item1[item.name]" @keyup="updataProductName()" style="border: none;"/></div>--> |
| | | <!-- <div v-if="item1[item.name] != null && item1[item.name] !== ''" class="row2" style="width: 100%;" contenteditable="true" @input="updateProductName($event, id)" v-text="item1[item.name]"></div>--> |
| | | </div> |
| | | <div v-html="company.printLabel.custom(item1)"></div> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | |
| | | |
| | | </template> |
| | | |
| | | <style scoped> |
| | | * { |
| | | margin: 0; |
| | | padding: 0; |
| | | } |
| | | |
| | | textarea { |
| | | border: none; /* åæ¶é»è®¤è¾¹æ¡ */ |
| | | padding: 0; /* åæ¶é»è®¤å
è¾¹è· */ |
| | | margin: 0; /* åæ¶é»è®¤å¤è¾¹è· */ |
| | | resize: none; /* ç¦ç¨è°æ´å¤§å°åè½ */ |
| | | font-family: Arial; /* 设置èªå®ä¹åä½ */ |
| | | font-size: 12px; /* 设置èªå®ä¹åä½å¤§å° */ |
| | | line-height: 1; /* 设置è¡é« */ |
| | | width: 100%; /* 设置宽度为100% */ |
| | | height: auto; /* é«åº¦æ ¹æ®å
容èªå¨è°æ´ */ |
| | | box-sizing: border-box; /* 使宽é«å
æ¬å
è¾¹è·åè¾¹æ¡ */ |
| | | overflow-y: hidden; |
| | | } |
| | | |
| | | |
| | | body { |
| | | overflow: hidden; |
| | | font-family: Arial; |
| | | font-size: 7px; |
| | | } |
| | | |
| | | #printButton { |
| | | margin-top: -20px; |
| | | width: 100px; |
| | | } |
| | | |
| | | .print{ |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | /*æ*/ |
| | | .printFlowCard_finished { |
| | | /* |
| | | font-family: 'Microsoft YaHei', '微软é
é»', sans-serif; |
| | | */ |
| | | flex-wrap: nowrap; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | |
| | | /*æ*/ |
| | | .entirety_finished { |
| | | display: flex; |
| | | text-align: center; |
| | | flex-direction: column; |
| | | margin-left: 10px; |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | } |
| | | |
| | | /*div{ |
| | | font-family: 'Microsoft YaHei', '微软é
é»', sans-serif; |
| | | }*/ |
| | | |
| | | .row3 { |
| | | text-align: center; |
| | | /*display: flex; |
| | | justify-content:space-evenly;*/ |
| | | } |
| | | |
| | | .row3 label { |
| | | margin-top: 28px; |
| | | } |
| | | |
| | | .contentRow { |
| | | font-weight: bolder; |
| | | display: flex; |
| | | text-align: center; |
| | | width: 100%; |
| | | } |
| | | |
| | | label { |
| | | /*font-family: 'Microsoft YaHei', '微软é
é»', sans-serif;*/ |
| | | } |
| | | |
| | | .contentRow .row1 { |
| | | width: 100%; |
| | | } |
| | | |
| | | .entirety_finished .row4 { |
| | | font-weight: bolder; |
| | | text-align: right; |
| | | margin-right: 20px; |
| | | } |
| | | |
| | | .contentRow .row1, .contentRow .row2 { |
| | | text-align: left; |
| | | } |
| | | |
| | | input{ |
| | | width: 100%; |
| | | border: none; |
| | | } |
| | | |
| | | |
| | | @page { |
| | | size: auto; /* auto is the initial value */ |
| | | margin: 13mm 5mm 0mm 7mm; /* this affects the margin in the printer settings */ |
| | | } |
| | | |
| | | @media print { |
| | | div { |
| | | page-break-inside: avoid; |
| | | } |
| | | |
| | | .entirety_finished { |
| | | page-break-before: always; |
| | | } |
| | | |
| | | } |
| | | |
| | | .printFlowCard_finished1 { |
| | | flex-wrap: wrap; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | |
| | | /*æ*/ |
| | | .entirety_finished1 { |
| | | display: flex; |
| | | text-align: center; |
| | | flex-direction: column; |
| | | margin-left: 10px; |
| | | width: 337px; |
| | | height: 120px; |
| | | |
| | | } |
| | | |
| | | .contentRow1 { |
| | | font-weight: bolder; |
| | | display: flex; |
| | | text-align: center; |
| | | width: 100%; |
| | | } |
| | | |
| | | .contentRow1 .row1 { |
| | | width: 30%; |
| | | font-weight: bolder; |
| | | } |
| | | |
| | | .entirety_finished1 .row4 { |
| | | font-weight: bolder; |
| | | text-align: right; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .contentRow1 .row1, .contentRow1 .row2 { |
| | | text-align: left; |
| | | font-weight: bolder; |
| | | } |
| | | |
| | | </style> |
| | |
| | | if (like == '') { |
| | | like = null |
| | | } |
| | | let name=company.companyName |
| | | data.value.printList = JSON.parse(props.printList) |
| | | let flowCardCount = '' |
| | | onMounted(() => { |
| | |
| | | <div style="font-weight: bolder;display: flex;justify-content:space-between"> |
| | | <div>æå°äººï¼{{user.user.userName}}</div> |
| | | <div> |
| | | <span style="font-size: 10px">{{itemFlow.otherRemarks}}</span> |
| | | <span v-if="name!='éåç¦å天æç»çæéå
¬å¸'" style="font-size: 10px">{{itemFlow.otherRemarks}}</span> |
| | | æµç¨å¡å·ï¼ {{ |
| | | itemFlow.process_id |
| | | }}/{{ itemFlow.technologyNumber }} å
± {{ item.count }} æ¶ |
| | |
| | | <td class="tdNowrap">客æ·åç§°ï¼</td> |
| | | <td colspan="2">{{ items.customer_name }}</td> |
| | | <td class="tdNowrap">项ç®åç§°ï¼</td> |
| | | <td colspan="4">{{ items.project }}</td> |
| | | <td colspan="4" style="min-width: 250px;">{{ items.project }}</td> |
| | | <td class="tdNowrap">å·¥èºæµç¨ï¼</td> |
| | | <td colspan="22" style="width: 500px">{{ items.process }}</td> |
| | | </tr> |
| | |
| | | <tr v-for="(itemDatile,index) in item.detailList" :key="index"> |
| | | <td>{{ itemDatile.order_number }}</td> |
| | | <td>{{ itemDatile.mapNumber }}</td> |
| | | <td>{{ itemDatile.s01Value }}</td> |
| | | <td v-if="name='éåç¦å天æç»çæéå
¬å¸'">{{ itemDatile.building_number }}</td> |
| | | <td v-else>{{ itemDatile.s01Value }}</td> |
| | | <td>{{ itemDatile.technology_number }}</td> |
| | | <td>{{ itemDatile.child_width }}</td> |
| | | <td class="item" style="width: 5%;height: 100%;"> |
| | |
| | | } |
| | | }, |
| | | { |
| | | tid: 'quantity', title: 'è®¢åæ°é', data: '', type: 'text', |
| | | options: { |
| | | field: 'quantity', |
| | | testData: '', |
| | | width:270, |
| | | height: 16, |
| | | fontSize: 11.25, |
| | | textAlign: "left", |
| | | textContentVerticalAlign: "middle" |
| | | } |
| | | }, |
| | | { |
| | | tid: 'orderNumber', title: '订ååºå·', data: '', type: 'text', |
| | | options: { |
| | | field: 'orderNumber', |
| | |
| | | component: () => import('../views/pp/glassOptimize/OptimizeProject.vue'), |
| | | }, |
| | | { |
| | | path: 'optimizePrint', |
| | | name: 'optimizePrint', |
| | | component: () => import('../views/pp/glassOptimize/OptimizePrint.vue'), |
| | | }, |
| | | { |
| | | path: '', |
| | | redirect:'/main/glassOptimize/optimizeProject' |
| | | } |
| | |
| | | //regexp:/^(0|[1-9][0-9]{0,3}([.][0-9]{1,2})?)$/,//æ£å0.00-9999.99 |
| | | msg:'basicData.msg.range99999Dec2' |
| | | }, |
| | | orderIdType:'day',//å端çæè®¢åå·ç±»åï¼day:æ¯å¤©çæï¼month:æ¯æçæ,year:æ¯å¹´çæ |
| | | orderIdType:'year',//å端çæè®¢åå·ç±»åï¼day:æ¯å¤©çæï¼month:æ¯æçæ,year:æ¯å¹´çæ |
| | | deliveryIdType:'day', |
| | | columnName:'å¾å·', |
| | | selectOrderReviewShow:true, //订åé¦é¡µå å·¥åå®¡æ ¸æé®æ¯å¦æ¾ç¤º |
| | |
| | | calculateType:1,//订åè®¡ç®æ¹å¼ |
| | | reportType:2,//æ¥å·¥æ¯å¦æ¥è¯¢æ ·å订å2æ¥è¯¢ï¼1䏿¥è¯¢ |
| | | qualityInsStatus:2,//跨工åºè´¨æ£å®¡æ ¸ï¼1ä¸éè¦ï¼2éè¦ |
| | | remarkSwitch:1,//æµç¨å¡ä¸æ¯å¦æ¾ç¤ºå
¶å®å¤æ³¨ï¼1æ¾ç¤ºï¼2䏿¾ç¤º |
| | | remarkSwitch:2,//æµç¨å¡ä¸æ¯å¦æ¾ç¤ºå
¶å®å¤æ³¨ï¼1æ¾ç¤ºï¼2䏿¾ç¤º |
| | | icon:"",//åæ åæ° |
| | | longSide:null,//订åå建æé¿è¾¹æç¤ºé¢è² nullä¸æç¤ºé¢è² |
| | | //天津 |
| | |
| | | |
| | | }, |
| | | printFlowCard: {//æµç¨å¡æå°æ ·å¼ |
| | | patch:'è¡¥', |
| | | lackOf:'æ¬ ', |
| | | patch:'æ£å', |
| | | lackOf:'次å', |
| | | processingNote: (itemtextarea) => { |
| | | return `` |
| | | }, |
| | | }, |
| | | hideButton:'true',//æµç¨å¡æå°ç颿鮿¯å¦æ¾ç¤º |
| | | getSelectFlowCard:1,//æµç¨å¡æå°æ¥è¯¢æ¯å¦åå¹¶ 1åå¹¶2ä¸åå¹¶ |
| | | getSelectFlowCard:2,//æµç¨å¡æå°æ¥è¯¢æ¯å¦åå¹¶ 1åå¹¶2ä¸åå¹¶ |
| | | columnsLabel:2,//ä¸è¡ä¸¤åæåæ ç¾ 1æ°çä¸è¡ä¸¤åæåæ ç¾ï¼2å
¶å® |
| | | }, |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | const handleCommand = (command) => { |
| | | router.push({ |
| | | path: command |
| | | }) |
| | | } |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/glassOptimize/optimizeProject' }">{{'å·¥ç¨ä¿¡æ¯'}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item v-show="false" @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">{{$t('order.page.createOrder')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/glassOptimize/optimizePrint' }">æå° |
| | | </el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/glassOptimize/optimizePrint' }">è°æ´ |
| | | </el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(5)" :class="indexFlag===5?'indexTag':''" :to="{ path: '/main/glassOptimize/optimizePrint' }">æ°æ§ |
| | | </el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(6)" :class="indexFlag===6?'indexTag':''" :to="{ path: '/main/glassOptimize/optimizePrint' }">设置 |
| | | </el-breadcrumb-item> |
| | | <el-breadcrumb-item></el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | </div> |
| | | |
New file |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | 111 |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | import {reactive, ref} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | import {Search} from "@element-plus/icons-vue"; |
| | | import {ElDatePicker} from "element-plus"; |
| | | import {ElDatePicker, ElMessage} from "element-plus"; |
| | | import useOrderInfoStore from "@/stores/sd/order/orderInfo"; |
| | | import request from "@/utils/request"; |
| | | |
| | | const { t } = useI18n() |
| | | |
| | |
| | | }, |
| | | { |
| | | value: '1', |
| | | label: '1', |
| | | label: 'åå§å·¥ç¨', |
| | | }, |
| | | { |
| | | value: '2', |
| | | label: '2', |
| | | label: 'ç¬¬ä¸æ¬¡ä¼å', |
| | | }, |
| | | { |
| | | value: '3', |
| | | label: '10', |
| | | label: '模æè®¡ç®ä¿å', |
| | | }, |
| | | { |
| | | value: '4', |
| | | label: '20', |
| | | label: 'ä¼åä¿å', |
| | | }, |
| | | { |
| | | value: '5', |
| | | label: '100', |
| | | label: '宿ä¼å', |
| | | }, |
| | | { |
| | | value: '6', |
| | | label: '200', |
| | | label: 'å·²é¢å', |
| | | }, |
| | | ] |
| | | |
| | | //ç¹å»æ¥è¯¢ |
| | | const getWorkOrder = () => { |
| | | let startTime = orderInfo.workOrderDate[0] |
| | | let endTime = orderInfo.workOrderDate[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) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | </script> |
| | |
| | | :default-time="defaultTime" |
| | | |
| | | /> |
| | | <vxe-input |
| | | style="margin-left:10px; " |
| | | placeholder="è¾å
¥å·¥ç¨å·ææµç¨å¡å·" |
| | | > |
| | | </vxe-input> |
| | | |
| | | <span class="input">å·¥ç¨ç¶æ</span> |
| | | <el-select |
| | | style="margin-left:10px; margin-top: -5px; " |
| | | style="margin-left:10px; margin-top: -5px; width: 150px" |
| | | :default-first-option="true" |
| | | ref="getSelect" |
| | | v-model="optionVal" |
| | |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | |
| | | <!--æ¥è¯¢--> |
| | | <el-button |
| | | style="margin-left:10px;margin-top: -5px" |
| | | @click="searchByDateRange" |
| | | type="primary" :icon="Search"> |
| | | æ¥è¯¢ |
| | | :icon="Search" |
| | | type="primary" |
| | | @click="getWorkOrder">{{ $t('basicData.search') }} |
| | | </el-button> |
| | | </div> |
| | | |
| | |
| | | å°çé¢<vxe-input size="small" class="input" disabled></vxe-input> |
| | | åçæ°<vxe-input size="small" class="input" disabled></vxe-input> |
| | | åçé¢<vxe-input size="small" class="input" disabled></vxe-input> |
| | | </span> |
| | | <span style="float: right"> |
| | | <el-button type="primary" class="input">é¢åçå¾</el-button> |
| | | <el-button type="primary" class="input">模æè®¡ç®</el-button> |
| | | <el-button type="primary" class="input">ä¼åçå¾</el-button> |
| | | <el-button type="primary" class="input">ä¼åæç</el-button> |
| | | <el-button type="primary" class="input">æ°æ®å¯¼åº</el-button> |
| | | </span> |
| | | </div> |
| | | </div> |
New file |
| | |
| | | <script setup> |
| | | import {ref} from "vue"; |
| | | |
| | | const value1 = ref('') |
| | | const value2 = ref('') |
| | | |
| | | const options1 = [ |
| | | { |
| | | value: 'Option1', |
| | | label: '5', |
| | | }, |
| | | { |
| | | value: 'Option2', |
| | | label: '6', |
| | | }, |
| | | { |
| | | value: 'Option3', |
| | | label: '8', |
| | | }, |
| | | { |
| | | value: 'Option4', |
| | | label: '10', |
| | | }, |
| | | { |
| | | value: 'Option5', |
| | | label: '12', |
| | | }, |
| | | ] |
| | | const options2 = [ |
| | | { |
| | | value: 'Option1', |
| | | label: 'ç½ç»', |
| | | }, |
| | | { |
| | | value: 'Option2', |
| | | label: 'ç°é', |
| | | }, |
| | | { |
| | | value: 'Option3', |
| | | label: 'Low-e', |
| | | }, |
| | | ] |
| | | </script> |
| | | |
| | | <template> |
| | | <div id="box"> |
| | | <div> |
| | | <span>å度ï¼mmï¼ï¼</span> |
| | | <el-select v-model="value1" clearable style="width: 240px"> |
| | | <el-option |
| | | v-for="item in options1" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | |
| | | <div style="margin-top: 30px"> |
| | | <span>ç»çç±»åï¼</span> |
| | | <el-select v-model="value2" clearable style="width: 240px; margin-left: 23px"> |
| | | <el-option |
| | | v-for="item in options2" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | |
| | | <div style="float: right; margin:-55px 35px 0 0;"> |
| | | <el-button type="primary">æ¥è¯¢</el-button> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | #box { |
| | | width: 100%; |
| | | height: 100%; |
| | | padding: 10px; |
| | | margin-top: -20px; |
| | | border-radius: 5px; |
| | | background-color: #D5EAFF; |
| | | } |
| | | </style> |
| | |
| | | <span> |
| | | å·¥ç¨ç¼å· |
| | | <vxe-select size="small" style="margin-left: 20px" clearable></vxe-select> |
| | | <el-button type="primary" :icon="Search" style="margin-left: 20px">æ¥è¯¢</el-button> |
| | | <el-button |
| | | type="primary" |
| | | :icon="Search" |
| | | style="margin-left: 20px" |
| | | @click="">{{$t('basicData.search') }} |
| | | </el-button> |
| | | </span> |
| | | <span style="float: right ; margin-right: 120px"> |
| | | å·¥ç¨æ··æç级 |
| | |
| | | <el-button :icon="Minus" @click="handleButtonClick(1,false)"/> |
| | | <el-button :icon="Plus" @click="handleButtonClick(1,true)"/> |
| | | </el-button-group> |
| | | <span style="float: right ; margin-left: 250px;"> |
| | | å·¥ç¨ç»çç<vxe-input size="small" class="input" clearable></vxe-input> |
| | | <span style="float: right ; margin-left: 198px;"> |
| | | å·¥ç¨ç»çç <vxe-input size="small" class="input" clearable></vxe-input> |
| | | 宽轴é´é<vxe-input size="small" class="input" clearable></vxe-input> |
| | | ç宽(mm)<vxe-input size="small" class="input" clearable></vxe-input> |
| | | </span> |
| | |
| | | <el-button :icon="Minus" @click="handleButtonClick(2,false)"/> |
| | | <el-button :icon="Plus" @click="handleButtonClick(2,true)"/> |
| | | </el-button-group> |
| | | <span style="float: right ; margin-left: 242px;"> |
| | | <span style="float: right ; margin-left: 198px;"> |
| | | å çæ¶é´(ç§)<vxe-input size="small" class="input" clearable></vxe-input> |
| | | é¿è½´é´é<vxe-input size="small" class="input" clearable></vxe-input> |
| | | çé¿(mm)<vxe-input size="small" class="input" clearable></vxe-input> |
| | |
| | | |
| | | .input { |
| | | width: 80px; |
| | | margin-left: 10px; |
| | | margin-left: 20px; |
| | | } |
| | | |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | import {ref, computed} from "vue"; |
| | | import {Connection} from "@element-plus/icons-vue"; |
| | | |
| | | //计æ¶å¨ |
| | | let seconds = ref(0); |
| | | let isRunning = ref(false); |
| | | let intervalId; |
| | | |
| | | //ä¼åè¿åº¦æ¡ |
| | | let progress = ref(0); |
| | | |
| | | //ä¼å次æ°ï¼æ¶é¿ï¼æç |
| | | let progressValue1 = ref(10); |
| | | let progressValue2 = ref(1000); |
| | | let progressValue3 = ref(50); |
| | | |
| | | const formattedTime = computed(() => { |
| | | const minutes = Math.floor(seconds.value / 60); |
| | | const remainingSeconds = seconds.value % 60; |
| | | return `${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`; |
| | | }); |
| | | const startTimer = () => { |
| | | if (!isRunning.value) { |
| | | intervalId = setInterval(() => { |
| | | seconds.value++; |
| | | progress.value += 10; |
| | | if (progress.value >= 100) { |
| | | progress.value = 100; |
| | | clearInterval(intervalId); |
| | | } |
| | | }, 1000); |
| | | isRunning.value = true; |
| | | } |
| | | }; |
| | | const pauseTimer = () => { |
| | | if (isRunning.value) { |
| | | clearInterval(intervalId); |
| | | isRunning.value = false; |
| | | } |
| | | }; |
| | | const resetTimer = () => { |
| | | clearInterval(intervalId); |
| | | isRunning.value = false; |
| | | seconds.value = 0; |
| | | progress.value = 0; |
| | | }; |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="header"> |
| | | <el-header> |
| | | <div class="header-content"> |
| | | <span style="margin-left: -20px;">éåæå</span><br> |
| | | <div> |
| | | <span>æ»é¢ç§¯(m2)ï¼</span> |
| | | <vxe-input class="input" disabled placeholder=""></vxe-input> |
| | | <span>æ»æ°é(ç)ï¼</span> |
| | | <vxe-input class="input" disabled placeholder=""></vxe-input> |
| | | <span>ä¼åæ¶é¿(ç§)ï¼</span> |
| | | <span class="time-display">{{ formattedTime }}</span> |
| | | <el-button type="primary" style="margin-left: 20px" @click="startTimer">å¼å§ä¼å</el-button> |
| | | <el-button class="buttons" type="primary" @click="pauseTimer">æå</el-button> |
| | | <el-button class="buttons" type="primary" @click="resetTimer">宿</el-button> |
| | | </div> |
| | | <br> |
| | | <div style="display: flex;margin-top: -10px"> |
| | | <span>æ¹æ¡æ± ä¼å次æ°ï¼</span> |
| | | <el-slider v-model="progressValue1" :min="2" :max="20" size="small" style="max-width: 200px;"></el-slider> |
| | | <span>忬¡ä¼åæ¶é¿ï¼</span> |
| | | <el-slider v-model="progressValue2" :min="50" :max="2000" size="small" style="max-width: 200px;"></el-slider> |
| | | <span>é¢åæçä¼å
ï¼</span> |
| | | <el-slider v-model="progressValue3" :show-tooltip="false" size="small" style="max-width: 200px;"></el-slider> |
| | | <span>åè£çä¼å
</span> |
| | | </div> |
| | | </div> |
| | | </el-header> |
| | | </div> |
| | | |
| | | <div id="box"> |
| | | <span style="font-size: 20px">ä¼åè¿åº¦</span> |
| | | <div class="progress-bar"> |
| | | <el-progress :percentage="progress" |
| | | :text-inside="true" |
| | | :stroke-width="20" |
| | | status="success" |
| | | striped |
| | | striped-flow |
| | | duration="45"/> |
| | | </div> |
| | | <div style="height: 100px; margin-top: 20px; border: 2px solid #e6e6e6; padding: 10px; border-radius: 5px;"> |
| | | <span style="font-weight: bold">èç¨åç</span> |
| | | </div> |
| | | <div style="height: 130px; margin-top: 20px; display: flex; border: 2px solid #e6e6e6; padding: 10px; border-radius: 5px;"> |
| | | <span style="font-weight: bold">å½åç»æ</span> |
| | | <div style="margin-top: 5%"> |
| | | <span>äº§çæ¶é´ï¼{{ formattedTime }}</span> |
| | | <span style="margin-left: 20px">æ»å©ç¨çï¼0.0%</span> |
| | | <span style="margin-left: 20px">å°¾çï¼</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | .header { |
| | | height: 120px; |
| | | background-color: #d5eaff; |
| | | margin-top: -30px; |
| | | padding: 10px; |
| | | border-radius: 5px; |
| | | } |
| | | |
| | | div header span { |
| | | margin-left: 10px; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | .input { |
| | | border: none !important; |
| | | height: 25px; |
| | | width: 80px; |
| | | } |
| | | |
| | | .time-display { |
| | | font-size: 18px; |
| | | color: #409eff; |
| | | } |
| | | |
| | | .buttons { |
| | | float: right; |
| | | } |
| | | |
| | | #box { |
| | | padding: 10px; |
| | | margin-top: 10px; |
| | | width: 100%; |
| | | height: 80%; |
| | | } |
| | | |
| | | |
| | | </style> |
| | |
| | | import {useI18n} from "vue-i18n"; |
| | | import {Search} from "@element-plus/icons-vue"; |
| | | const { t } = useI18n() |
| | | |
| | | const xGrid = ref() |
| | | |
| | | const gridOptions = reactive({ |
| | | |
| | | height:'100%', |
| | |
| | | }, |
| | | ] |
| | | |
| | | //å°åç¹åéæ¡ |
| | | let radio = ref(1); |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <h1>æµç¨å¡å表</h1> |
| | | <div style="width: 100%;height: 110%; margin-top: -36px"> |
| | | <h1>æµç¨å¡å表 |
| | | <span style="margin-left: 140px;font-size: 14px">å·¥ç¨ç¼å·ï¼</span> |
| | | <vxe-input disabled placeholder="" size="small"></vxe-input> |
| | | <span style="font-size: 14px">å·¥ç¨åç§°ï¼</span> |
| | | <vxe-input placeholder="" size="small"></vxe-input> |
| | | <el-button type="primary" style="margin-left: 20px">å建</el-button> |
| | | </h1> |
| | | <vxe-grid |
| | | size="small" |
| | | @filter-change="filterChanged" |
| | |
| | | /> |
| | | </el-select> |
| | | <el-button type="primary" :icon="Search" style="margin-left: 20px">æ¥è¯¢</el-button> |
| | | <vxe-select style="margin-left: 40px" placeholder="å
¨é¨æµç¨å¡" clearable></vxe-select> |
| | | <vxe-select style="margin-left: 20px" placeholder="å
¨é¨é¡¹ç®" clearable></vxe-select> |
| | | <el-button type="primary" style="margin-left: 10px">çé</el-button> |
| | | <vxe-radio-group v-model="radio" style="margin-left: 20px"> |
| | | <vxe-radio label="1" content="å
¨"></vxe-radio> |
| | | <vxe-radio label="2" content="æ£"></vxe-radio> |
| | | <vxe-radio label="3" content="è¡¥"></vxe-radio> |
| | | </vxe-radio-group> |
| | | </template> |
| | | </vxe-grid> |
| | | </div> |
| | |
| | | </div> |
| | | </template> |
| | | |
| | | <template #toolbar_buttons> |
| | | <vxe-input value="null" placeholder="å·¥ç¨åç§°" clearable></vxe-input> |
| | | <el-button type="primary" style="margin-left: 20px">å建</el-button> |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | | </div> |
| | | </template> |
| | |
| | | Plus, |
| | | Setting, |
| | | Operation, |
| | | Tickets, |
| | | DocumentCopy, |
| | | Grid, |
| | | Edit, |
| | | Printer, |
| | | DocumentAdd, Minus, Menu, Checked, Upload, Suitcase, Refresh, CircleCloseFilled, Sort, Link, |
| | | } from "@element-plus/icons-vue"; |
| | | import OptimizeCompute from "@/views/pp/glassOptimize/page/OptimizeCompute.vue"; |
| | | import SetAmount from "@/views/pp/glassOptimize/page/SetAmount.vue"; |
| | | import SetTrimming from "@/views/pp/glassOptimize/page/SetTrimming.vue"; |
| | | import CheckInventory from "@/views/pp/glassOptimize/page/CheckInventory.vue"; |
| | | |
| | | const {t} = useI18n() |
| | | |
| | |
| | | },*/ |
| | | columns: [ |
| | | {title: '订åº', width: 70}, |
| | | {field: 'state', width: 150, title: t('order.width'), filters: [{data: ''}], slots: {filter: 'num2_filter'}}, |
| | | {type: 'seq', width: 150, title: t('order.height')}, |
| | | {field: 'state', width: 100, title: t('order.width'), filters: [{data: ''}], slots: {filter: 'num2_filter'}}, |
| | | {field: 'seq', width: 100, title: t('order.height'),filters: [{data: ''}],slots: {filter: 'num2_filter'}}, |
| | | { |
| | | field: 'id', |
| | | width: 150, |
| | |
| | | await emit('changeDialog', command) |
| | | } |
| | | |
| | | //ä¼åè®¡ç® |
| | | const dialogVisible = ref({}); |
| | | const openDialog = (index) => { |
| | | dialogVisible.value[index] = true; |
| | | }; |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | <template #toolbar> |
| | | <div id="header"> |
| | | <div id="title"> |
| | | <el-button id="checkinventory" type="primary">æ¥è¯¢åºå</el-button> |
| | | <el-button id="checkremnant" type="primary">æ¥è¯¢ä½æ</el-button> |
| | | <el-button id="selectml" type="primary">设置磨é</el-button> |
| | | <el-button id="selectxb" type="primary">设置修边</el-button> |
| | | <el-button id="safe" type="primary">ä¿å</el-button> |
| | | <el-button id="optimize" type="primary">ä¼å</el-button> |
| | | <span>å·¥ç¨ç¼å·ï¼</span> |
| | | <vxe-input disabled placeholder=""></vxe-input> |
| | | <span>å·¥ç¨åç§°ï¼</span> |
| | | <vxe-input placeholder="" style="margin-right: 270px"></vxe-input> |
| | | <el-button id="checkinventory" type="primary" @click="openDialog(1)">æ¥è¯¢åºå</el-button> |
| | | <el-dialog |
| | | v-model="dialogVisible[1]" |
| | | title="æ¥è¯¢åºå" |
| | | destroy-on-close |
| | | style="width: 35%;height:35%;"> |
| | | <check-inventory/> |
| | | </el-dialog> |
| | | |
| | | <el-button id="button" type="primary" @click="openDialog(2)">设置磨é</el-button> |
| | | <el-dialog |
| | | v-model="dialogVisible[2]" |
| | | title="设置磨é" |
| | | destroy-on-close |
| | | style="width: 35%;height:80%;margin-top: 3vh;"> |
| | | <set-amount/> |
| | | </el-dialog> |
| | | |
| | | <el-button id="button" type="primary" @click="openDialog(3)">设置修边</el-button> |
| | | <el-dialog |
| | | v-model="dialogVisible[3]" |
| | | title="设置修边" |
| | | destroy-on-close |
| | | style="width: 35%;height:80%;margin-top: 3vh;"> |
| | | <set-trimming/> |
| | | </el-dialog> |
| | | |
| | | <el-button id="button" type="primary">ä¿å</el-button> |
| | | |
| | | <el-button id="button" type="primary" @click="openDialog(4)">ä¼å</el-button> |
| | | <el-dialog |
| | | v-model="dialogVisible[4]" |
| | | title="ä¼å计ç®" |
| | | destroy-on-close |
| | | style="width: 75%;height:90%;margin-top: 3vh;" |
| | | > |
| | | <optimize-compute/> |
| | | </el-dialog> |
| | | |
| | | </div> |
| | | <!--å·¥ç¨æä»¶èå--> |
| | | <el-dropdown @command="handleCommand"> |
| | |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | <!--æå°èå--> |
| | | <el-dropdown @command="handleCommand"> |
| | | <el-button class="buttons" type="primary" :icon="Printer"> |
| | | æå° |
| | | </el-button> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item :command="null" :icon="Printer">æå°ä¼åçå¾</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Tickets">æå°ä¼åæ¥å</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="DocumentCopy">åå¹¶æå°</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Grid">缩ç¥å¾</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | <!--è°æ´--> |
| | | <el-dropdown @command="handleCommand"> |
| | | <el-button class="buttons" type="primary" :icon="Operation"> |
| | | è°æ´ |
| | | </el-button> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item :command="null" :icon="Edit">å
¨é¨éæ</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="DocumentAdd">æ°å¢çé¢</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Plus">å¢å å 工次æ°</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Minus">å é¤çé¢</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Menu">éåå½åçé¢</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Grid">éåæä»¥çé¢</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Checked">ä¿åä¿®æ¹</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Upload">导åºå©ä½å°ç</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | <!--æ°æ§--> |
| | | <el-dropdown @command="handleCommand"> |
| | | <el-button class="buttons" type="primary" :icon="Suitcase"> |
| | | æ°æ§ |
| | | </el-button> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item :command="null" :icon="Refresh">å·æ°åè·¯</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Link">æªæè¿ç»çº¿</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="CircleCloseFilled">å é¤åè·¯</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Sort">å½ååè·¯åå</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | <!--设置--> |
| | | <el-button class="buttons" type="primary" :icon="Setting"> |
| | | 设置 |
| | | </el-button> |
| | | <!--æ¥å--> |
| | | <el-button class="buttons" type="primary" :icon="Tickets"> |
| | | æ¥å |
| | | </el-button> |
| | | </div> |
| | | </template> |
| | | </vxe-grid> |
| | |
| | | margin-top: 8px; |
| | | } |
| | | |
| | | .buttons { |
| | | #button{ |
| | | margin-left: 10px; |
| | | margin-top: 8px; |
| | | } |
| | | |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | import {ref} from "vue"; |
| | | |
| | | function setupComponent() { |
| | | // å个è¾å
¥æ¡ç»å®çå¼ï¼åå§å为0 |
| | | const quicksetTop = ref('0'); |
| | | const quicksetRight = ref('0'); |
| | | const quicksetBottom = ref('0'); |
| | | const quicksetLeft = ref('0'); |
| | | // ç¨äºæ§å¶çè¾å
¥å¼ï¼åå§å为1 |
| | | const controlValue = ref('1'); |
| | | |
| | | const syncValues = () => { |
| | | // å°æ§å¶å¼èµç»å
¶ä»å个ç»ä»¶ |
| | | quicksetTop.value = controlValue.value; |
| | | quicksetRight.value = controlValue.value; |
| | | quicksetBottom.value = controlValue.value; |
| | | quicksetLeft.value = controlValue.value; |
| | | }; |
| | | return { |
| | | quicksetTop, |
| | | quicksetRight, |
| | | quicksetBottom, |
| | | quicksetLeft, |
| | | controlValue, |
| | | syncValues |
| | | }; |
| | | } |
| | | const { |
| | | quicksetTop, |
| | | quicksetRight, |
| | | quicksetBottom, |
| | | quicksetLeft, |
| | | controlValue, |
| | | syncValues |
| | | } = setupComponent(); |
| | | |
| | | const check = ref(true) |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div id="box1"> |
| | | <span>磨边éï¼æ¯«ç±³ï¼</span><br><br> |
| | | <span>éæ©æµç¨å¡ï¼</span> |
| | | <vxe-select size="small" placeholder="å
¨é¨" clearable> |
| | | <vxe-option>å
¨é¨</vxe-option> |
| | | </vxe-select> |
| | | |
| | | <div style="display: flex"> |
| | | <div class="square-container"> |
| | | <div class="square" @click="syncValues"></div> |
| | | <el-input-number v-model="quicksetTop" class="top" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | <el-input-number v-model="quicksetRight" class="right" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | <el-input-number v-model="quicksetBottom" class="bottom" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | <el-input-number v-model="quicksetLeft" class="left" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | </div> |
| | | <el-button type="primary" style="float: right; margin: 184px 0 0 13px;">åºç¨</el-button> |
| | | </div> |
| | | |
| | | <div style="margin-top: -20px"> |
| | | <span>é¼ æ ç¹å»èè²å¾å½¢åºåå¯å¿«é设置磨边é</span> |
| | | <el-input-number v-model="controlValue" class="quickset" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | <br> |
| | | <span>æåè¾¹é¿å¤§äºçäºå¤å°æ¶èªå¨å¡«å
(åä½: 毫米)</span> |
| | | <el-checkbox v-model="check" style="margin: 5px 0 0 12px;"/> |
| | | <vxe-input style="width: 100px; height: 40px; margin-left: 5px" placeholder="0"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | #box1 { |
| | | width: 100%; |
| | | height: 100%; |
| | | padding: 10px; |
| | | border-radius: 5px; |
| | | background-color: #D5EAFF; |
| | | } |
| | | |
| | | .square-container { |
| | | width: 300px; |
| | | height: 300px; |
| | | display: flex; |
| | | position: relative; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | |
| | | .square { |
| | | width: 100px; |
| | | height: 100px; |
| | | background-color: #5cadfe; |
| | | } |
| | | |
| | | .top, |
| | | .right, |
| | | .bottom, |
| | | .left { |
| | | width: 100px; |
| | | height: 50px; |
| | | position: absolute; |
| | | } |
| | | |
| | | .top { |
| | | top: 45px; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | } |
| | | |
| | | .right { |
| | | top: 50%; |
| | | right: -5px; |
| | | transform: translateY(-50%); |
| | | } |
| | | |
| | | .bottom { |
| | | bottom: 45px; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | } |
| | | |
| | | .left { |
| | | top: 50%; |
| | | left: -5px; |
| | | transform: translateY(-50%); |
| | | } |
| | | |
| | | .quickset { |
| | | margin-left: 60px; |
| | | width: 100px; |
| | | height: 40px; |
| | | } |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | import {ref} from "vue"; |
| | | |
| | | function setupComponent() { |
| | | // å个è¾å
¥æ¡ç»å®çå¼ï¼åå§å为0 |
| | | const quicksetTop = ref('0'); |
| | | const quicksetRight = ref('0'); |
| | | const quicksetBottom = ref('0'); |
| | | const quicksetLeft = ref('0'); |
| | | // ç¨äºæ§å¶çè¾å
¥å¼ï¼åå§å为1 |
| | | const controlValue = ref('1'); |
| | | |
| | | const syncValues = () => { |
| | | // å°æ§å¶å¼èµç»å
¶ä»å个ç»ä»¶ |
| | | quicksetTop.value = controlValue.value; |
| | | quicksetRight.value = controlValue.value; |
| | | quicksetBottom.value = controlValue.value; |
| | | quicksetLeft.value = controlValue.value; |
| | | }; |
| | | return { |
| | | quicksetTop, |
| | | quicksetRight, |
| | | quicksetBottom, |
| | | quicksetLeft, |
| | | controlValue, |
| | | syncValues |
| | | }; |
| | | } |
| | | const { |
| | | quicksetTop, |
| | | quicksetRight, |
| | | quicksetBottom, |
| | | quicksetLeft, |
| | | controlValue, |
| | | syncValues |
| | | } = setupComponent(); |
| | | |
| | | const check = ref(true) |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div id="box1"> |
| | | <span>修边éï¼æ¯«ç±³ï¼</span><br> |
| | | |
| | | <div style="display: flex; margin-top: -20px"> |
| | | <div class="square-container"> |
| | | <div class="square" @click="syncValues"></div> |
| | | <el-input-number v-model="quicksetTop" class="top" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | <el-input-number v-model="quicksetRight" class="right" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | <el-input-number v-model="quicksetBottom" class="bottom" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | <el-input-number v-model="quicksetLeft" class="left" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | </div> |
| | | <el-button type="primary" style="float: right; margin: 184px 0 0 13px;">åºç¨</el-button> |
| | | </div> |
| | | |
| | | <div> |
| | | <span>é¼ æ ç¹å»èè²å¾å½¢åºåå¯å¿«é设置修边é</span> |
| | | <el-input-number v-model="controlValue" class="quickset" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | <br> |
| | | <span>æ¥è¯¢åçæ¶èªå¨å¡«å
(åä½: 毫米)</span> |
| | | <el-checkbox v-model="check" style="margin: 20px 0 0 117px;"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | #box1 { |
| | | width: 100%; |
| | | height: 100%; |
| | | padding: 10px; |
| | | border-radius: 5px; |
| | | background-color: #D5EAFF; |
| | | } |
| | | |
| | | .square-container { |
| | | width: 300px; |
| | | height: 300px; |
| | | display: flex; |
| | | position: relative; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | |
| | | .square { |
| | | width: 100px; |
| | | height: 100px; |
| | | background-color: #5cadfe; |
| | | } |
| | | |
| | | .top, |
| | | .right, |
| | | .bottom, |
| | | .left { |
| | | width: 100px; |
| | | height: 50px; |
| | | position: absolute; |
| | | } |
| | | |
| | | .top { |
| | | top: 45px; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | } |
| | | |
| | | .right { |
| | | top: 50%; |
| | | right: -5px; |
| | | transform: translateY(-50%); |
| | | } |
| | | |
| | | .bottom { |
| | | bottom: 45px; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | } |
| | | |
| | | .left { |
| | | top: 50%; |
| | | left: -5px; |
| | | transform: translateY(-50%); |
| | | } |
| | | |
| | | .quickset { |
| | | margin-left: 60px; |
| | | width: 100px; |
| | | height: 45px; |
| | | } |
| | | </style> |
| | |
| | | import PrintCustomLabelSemi from '@/components/pp/PrintCustomLabelSemi.vue' |
| | | import PrintCustomLabelXJ from '@/components/pp/PrintCustomLabelTwo.vue' |
| | | import PrintCustomLabelXJTwo from '@/components/pp/PrintCustomLabelXJTwo.vue' |
| | | import PrintCustomLabelProject from '@/components/pp/PrintCustomLabelProject.vue' |
| | | import SortDetail from '@/components/pp/SelectSortDetailProcessCard.vue' |
| | | import footSum from "@/hook/footSum" |
| | | import companyInfo from "@/stores/sd/companyInfo" |
| | |
| | | const dialogTableVisibleCustomLabel = ref(false) |
| | | const dialogTableVisibleLabelXJ = ref(false) |
| | | const dialogTableVisibleLabelXJTwo = ref(false) |
| | | const dialogTableVisibleLabelProject = ref(false) |
| | | const printVisible = ref(false) |
| | | let selectRecords = ref(null) |
| | | let titleStyleVisible = ref(false) |
| | |
| | | } |
| | | } |
| | | |
| | | let name=company.companyName |
| | | labelRow.value.list = JSON.stringify(selectRecords) |
| | | labelRow.value.type = 'æé«å¸¦æ°é' |
| | | labelRow.value.dataType=3 |
| | | dialogTableVisibleLabelXJTwo.value = true |
| | | if (name == 'éåç¦å天æç»çæéå
¬å¸'){ |
| | | labelRow.value.type = 'æåæ ç¾' |
| | | labelRow.value.dataType=3 |
| | | labelRow.value.lableType = lableTypes |
| | | dialogTableVisibleLabelProject.value = true |
| | | } |
| | | else { |
| | | labelRow.value.type = 'æé«å¸¦æ°é' |
| | | labelRow.value.dataType=3 |
| | | dialogTableVisibleLabelXJTwo.value = true |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | break |
| | |
| | | :dataType="labelRow.dataType" |
| | | style="width: 100%;height: 100%"/> |
| | | </el-dialog> |
| | | |
| | | <!-- æåæ ç¾å·¥ç¨æå°--> |
| | | <el-dialog |
| | | id="sizeCustom" |
| | | v-model="dialogTableVisibleLabelProject" |
| | | :title="$t('processCard.printLabel')" |
| | | destroy-on-close |
| | | style="width: 80%;height:75% "> |
| | | <template #header="{ close, titleId, titleClass }"> |
| | | <el-button v-print="printContentLabel" :icon="Printer" circle/> |
| | | </template> |
| | | <print-custom-label-project id="childLabel" |
| | | :faceOrientation="labelRow.faceOrientation" |
| | | :lableType="labelRow.lableType" |
| | | :list="labelRow.list" |
| | | :type="labelRow.type" |
| | | style="width: 100%;height: 100%"/> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | const button = {'code': 'printLabel', |
| | | status: 'primary', |
| | | 'name': t('processCard.finishedProductPrinting2')} |
| | | gridOptions.toolbarConfig.buttons.push(button) |
| | | let name=company.companyName |
| | | if (name != 'éåç¦å天æç»çæéå
¬å¸') { |
| | | gridOptions.toolbarConfig.buttons.push(button) |
| | | } |
| | | |
| | | |
| | | |
| | | const button2 = {'code': 'detailPrinting', |
| | | status: 'primary', |
| | |
| | | id: 'childLabel', |
| | | }) |
| | | |
| | | |
| | | const hideButton = () => { |
| | | let name=company.companyName |
| | | // æ ¹æ®æ¡ä»¶å¼ hidePrintLabels è¿æ»¤æé®æ°ç» |
| | | gridOptions.toolbarConfig.buttons = gridOptions.toolbarConfig.buttons.filter(button => { |
| | | // è¿éæ ¹æ® hidePrintLabels çå¼å³å®æ¯å¦éè printLabel å printLabel2 |
| | | if (name == 'éåç¦å天æç»çæéå
¬å¸') { |
| | | return button.code !== 'printLabel'; |
| | | } |
| | | }) |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | {field: 'orderNumber', width: 100, title: t('order.OrderNum'),visible: true}, |
| | | {field: 'technologyNumber', width: 120, title: t('processCard.technologyNumber'),filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, showOverflow: "ellipsis",visible: true}, |
| | | {field: 'bend_radius', width: 100, title: t('order.bendRadius'),visible: true}, |
| | | {field: 'shape', width: 100, title: t('order.shape'),visible: true}, |
| | | {field: 'process', width: 120, title: t('craft.process'),visible: true}, |
| | | {field: 'quantity', width: 120, title: t('order.quantity'),visible: true}, |
| | |
| | | round(ogd.child_height) as height, |
| | | pd.separation, |
| | | fc.technology_number, |
| | | IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber |
| | | IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber, |
| | | od.building_number |
| | | from flow_card as fc |
| | | left join sd.order_glass_detail as ogd |
| | | on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and |
| | |
| | | round(ogd.child_height) as height, |
| | | pd.separation, |
| | | fc.technology_number, |
| | | IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber |
| | | IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber, |
| | | od.building_number |
| | | from flow_card as fc |
| | | left join sd.order_glass_detail as ogd |
| | | on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and |
| | |
| | | 'ææ¬' as custom2, |
| | | 'ææ¬' as custom3, |
| | | 'ææ¬' as custom4, |
| | | 'ææ¬' as custom5 |
| | | 'ææ¬' as custom5, |
| | | od.quantity |
| | | from optimize_detail as opt |
| | | left join flow_card as fc on opt.project_no=fc.project_no and opt.process_id=fc.process_id and opt.layer=fc.technology_number and opt.order_sort=fc.order_number |
| | | left join sd.order as o on o.order_id=fc.order_id |
| | |
| | | 'ææ¬' as custom2, |
| | | 'ææ¬' as custom3, |
| | | 'ææ¬' as custom4, |
| | | 'ææ¬' as custom5 |
| | | 'ææ¬' as custom5, |
| | | od.quantity |
| | | from optimize_detail as opt |
| | | left join flow_card as fc on opt.project_no=fc.project_no and opt.process_id=fc.process_id and opt.layer=fc.technology_number and opt.order_sort=fc.order_number |
| | | left join sd.order as o on o.order_id=fc.order_id |
| | |
| | | o.project, |
| | | o.order_id, |
| | | o.batch, |
| | | if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', '')) as shape, |
| | | if(od.shape='' || ISNULL(od.shape),'æ®å½¢',if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', ''))) as shape, |
| | | if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),od.bend_radius) as bend_radius, |
| | | ogd.order_number, |
| | | ogd.technology_number, |
| | | ogd.process, |
| | |
| | | ogd.child_height as childHeight, |
| | | fc.quantity, |
| | | round(ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2) as area, |
| | | if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', '')) as shape, |
| | | if(od.shape='' || ISNULL(od.shape),'æ®å½¢',if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', ''))) as shape, |
| | | od.remarks |
| | | FROM sd.ORDER AS o |
| | | LEFT JOIN sd.order_detail AS od ON od.order_id = od.order_id |
| | |
| | | |
| | | <select id="productionScheduleMp"> |
| | | select a.order_number, |
| | | if(a.shape = 1, 'æ®å½¢', if(a.shape = 2, 'å¼å½¢', '')) as shape, |
| | | if(od.shape='' || ISNULL(od.shape),'æ®å½¢',if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', ''))) as shape, |
| | | a.product_name, |
| | | b.child_width, |
| | | b.child_height, |
| | |
| | | o.project, |
| | | o.order_id, |
| | | o.batch, |
| | | if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', '')) as shape, |
| | | if(od.shape='' || ISNULL(od.shape),'æ®å½¢',if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', ''))) as shape, |
| | | ogd.order_number, |
| | | ogd.technology_number, |
| | | ogd.process, |
| | |
| | | o.project, |
| | | o.order_id, |
| | | o.batch, |
| | | if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', '')) as shape, |
| | | if(od.shape='' || ISNULL(od.shape),'æ®å½¢',if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', ''))) as shape, |
| | | sum(od.quantity) as quantity, |
| | | sum(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count - |
| | | odpd.broken_num) as stockNum, |
| | |
| | | o.order_id, |
| | | fc.process_id, |
| | | o.batch, |
| | | if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', '')) as shape, |
| | | if(od.shape='' || ISNULL(od.shape),'æ®å½¢',if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', ''))) as shape, |
| | | sum(od.quantity) as quantity, |
| | | sum(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count - |
| | | odpd.broken_num) as stockNum, |