| src/assets/images/img3.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/permission.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/router/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/kb/kbCommon.css | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/kb/printMe.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/kb/zhkb.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/login/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/scgl/gd.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/scgl/gd_autoPrint.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/scgl/sckbg.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/scgl/sckbg_autoPrint.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| vue.config.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/assets/images/img3.pngsrc/main.js
@@ -57,6 +57,20 @@ import watermark from './utils/watermark.js' Vue.prototype.$watermark = watermark // æ¶é´è¿æ»¤å¨ Vue.filter('dataFormat', function(originVal) { const dt = new Date(originVal) const y = dt.getFullYear() const m = (dt.getMonth() + 1 + '').padStart(2, '0') const d = (dt.getDate() + '').padStart(2, '0') const hh = (dt.getHours() + '').padStart(2, '0') const mm = (dt.getMinutes() + '').padStart(2, '0') const ss = (dt.getSeconds() + '').padStart(2, '0') return `${y}-${m}-${d} ${hh}:${mm}:${ss}` }) new Vue({ el: '#app', router, src/permission.js
@@ -8,7 +8,7 @@ NProgress.configure({ showSpinner: false }) // NProgress Configuration const whiteList = ['/login', '/kb'] // no redirect whitelist const whiteList = ['/login', '/zhkb'] // no redirect whitelist router.beforeEach(async(to, from, next) => { // start progress bar src/router/index.js
@@ -35,8 +35,8 @@ * çæ¿é¨åè·¯ç± * */ { path: '/kb', component: () => import('@/views/kb/index'), path: '/zhkb', component: () => import('@/views/kb/zhkb'), hidden: true }, { path: '/kb2', src/views/kb/kbCommon.css
@@ -2,40 +2,29 @@ width: 1920px; height: 1080px; position: relative; background-color: lightblue; background-color: #000; font-size: 20px; font-family: Microsoft YaHei; } .kb_header { background-color: #00a79d; /*background-color: #000;*/ background-color: #123; height: 90px; line-height: 90px; font-size: 40px; color: #09d8f2; } .kb_headTime{ position: absolute; left: 100px; width: 300px; height: 50px; z-index: 10; top: 20px; font-size: 22px; } .kb_content { display: flex; position: relative; height: 990px; } .kb_left { width: 30%; height: 100%; } .kb_center { width: 40%; background-color: #00a79d; height: 100%; } .kb_right { width: 30%; height: 100%; } .flex_c_c { display: flex; @@ -50,16 +39,6 @@ /*align-content: center;*/ } .kb_block{ display: flex; align-content: center; justify-content: center; width: 556px; height: 400px; line-height: 400px; background-image: linear-gradient(to bottom right, red , yellow); /*background-image: repeating-radial-gradient(red, yellow 10%, green 15%);*/ /*background-color: #5a5e66;*/ margin: 10px; .kb_pd10{ padding: 10px; } src/views/kb/printMe.vue
ÎļþÃû´Ó src/views/kb/index.vue ÐÞ¸Ä @@ -6,7 +6,7 @@ <el-dialog title="é¢è§" :visible.sync="dialogVisible" width="1140" width="812px" > <!-- è¦æå°çåºå --> <div id="printMe" style="padding: 30px"> @@ -42,60 +42,52 @@ id="table" :data="tableData" border :header-cell-style="{ background: '#c0c0c0',textAlign:'center',color:'#000'}" :cell-style="{textAlign: 'center',color:'#000',}" class="elTable" style="width: 100%;" > <el-table-column id="column0" prop="date" label="æ¥æ" width="100" prop="id" label="å·¥åºå·" width="70" /> <el-table-column id="column1" prop="name" label="å§å" prop="stepcode" label="å·¥åºäºç»´ç " width="100" /> <el-table-column id="column2" prop="address" label="å°å" width="150" prop="stepname" label="å·¥åº" width="120" /> <el-table-column id="column3" prop="address" label="å°å" width="150" prop="plan_qty" label="å å·¥æ°é" width="100" /> <el-table-column id="column4" prop="address" width="150" label="å°å" prop="good_qty" width="100" label="åæ ¼æ°é" /> <el-table-column id="column5" width="150" prop="address" label="å°å" width="100" prop="ng_qty" label="ä¸è¯æ°é" /> <el-table-column id="column6" prop="address" prop="desc" width="120" label="å°å" /> <el-table-column id="column7" width="119" prop="address" label="å°å" label="夿³¨" /> </el-table> </div> @@ -226,7 +218,7 @@ }, QRImgUrl: '', QRlink: 'www.xxx.com', dialogVisible: false, dialogVisible: true, printObj: { id: 'printMe', popTitle: 'æå°æ¨¡æ¿', @@ -283,23 +275,10 @@ // standard: '', // extraCss: '' }, tableData: [{ date: '2016-05-02', name: 'çå°è', address: '䏿µ·å¸æ®éåºéæ²æ±è·¯ 1518 å¼' }, { date: '2016-05-04', name: 'çå°è', address: '䏿µ·å¸æ®éåºéæ²æ±è·¯ 1517 å¼' }, { date: '2016-05-01', name: 'çå°è', address: '䏿µ·å¸æ®éåºéæ²æ±è·¯ 1519 å¼' }, { date: '2016-05-03', name: 'çå°è', address: '䏿µ·å¸æ®éåºéæ²æ±è·¯ 1516 å¼' }], tableData: [ { id: 1, stepcode: '001', stepname: '颿', plan_qty: 100, good_qty: 10, ng_qty: 5, desc: 'åæ ¼' }, { id: 2, stepcode: '001', stepname: '颿', plan_qty: 100, good_qty: 10, ng_qty: 5, desc: 'åæ ¼' } ], printContentObj: {} } }, @@ -311,9 +290,9 @@ // 妿WEBæ¥è¡¨å®¢æ·ç«¯ç¨åºä¸ºå¼æºèªå¯å¨ï¼ä»¥ä¸è°ç¨åºè¯¥å»æãæ´å¤è¯´æè¯·åè帮å©âWEBæ¥è¡¨(B/Sæ¥è¡¨)->WEBæ¥è¡¨å®¢æ·ç«¯->é¨ç½²ä¸å®è£ âé¨åä¸ä¸è°·æChromeæµè§å¨çç¸å ³è¯´æ webapp_urlprotocol_startup() // å¯å¨WEBæ¥è¡¨å®¢æ·ç«¯ç¨åºï¼ä»¥ä¾¿ä¾¦å¬æ¥å WebSocket æ°æ® // } // this.$nextTick(() => { // this.bindQRCode() // }) this.$nextTick(() => { this.bindQRCode() }) }, methods: { // addWatermark() { @@ -324,32 +303,32 @@ // } // }, clickMe() { // this.dialogVisible = true // this.$nextTick(() => { // this.bindQRCode() // this.addWatermark() // console.log(document.getElementById('column0').style.width = '200px', 0) // console.log(document.getElementById('column7'), 7) // console.log(document.getElementById('table'), 2) // console.log(document.getElementById('table').getElementsByTagName('el-table'), 1) // }) // this.dialogVisible = true // this.$nextTick(() => { // this.bindQRCode() // this.addWatermark() // console.log(document.getElementById('column0').style.width = '200px', 0) // console.log(document.getElementById('column7'), 7) // console.log(document.getElementById('table'), 2) // console.log(document.getElementById('table').getElementsByTagName('el-table'), 1) // }) this.dialogVisible = true }, // bindQRCode() { // if (this.firstbindQRCode) { // const text = 'PO202206280001;Step02' // new QRCode(this.$refs.qrCodeDiv2, { // // text: 'Vueå®ç°çæäºç»´ç ï¼', // text: text, // width: 80, // height: 80, // colorDark: '#333333', // äºç»´ç é¢è² // colorLight: '#ffffff', // äºç»´ç èæ¯è² // correctLevel: QRCode.CorrectLevel.L// 容éçï¼L/M/H // }) // this.firstbindQRCode = false // } // }, bindQRCode() { if (this.firstbindQRCode) { const text = 'PO202206280001;Step02' new QRCode(this.$refs.qrCodeDiv, { // text: 'Vueå®ç°çæäºç»´ç ï¼', text: text, width: 80, height: 80, colorDark: '#333333', // äºç»´ç é¢è² colorLight: '#ffffff', // äºç»´ç èæ¯è² correctLevel: QRCode.CorrectLevel.L// 容éçï¼L/M/H }) this.firstbindQRCode = false } }, async TestClick() { const data = { mesordercode: 'PO202206280001_4', @@ -433,5 +412,14 @@ /*/deep/.el-table__body-wrapper::-webkit-scrollbar{*/ /* width: 0;*/ /*}*/ /*.el-table--border,.el-table--fit{*/ /* border-right: 1px solid #000 !important;*/ /* border-bottom: 1px solid #000 !important;*/ /*}*/ /*.el-table--border td, .el-table--border th, .el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{*/ /* border-left: 1px solid #000 !important;*/ /* border-top: 1px solid #000 !important;*/ /*}*/ </style> src/views/kb/zhkb.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,124 @@ <template> <div> <div class="kb_dashboard"> <div class="kb_header "> <div class="flex_c_c"> 大å²è½¦é´ç»¼åçæ¿ </div> <div class="kb_headTime"> <span>{{ headTime |dataFormat }}</span> </div> </div> <div class="kb_content"> <div class="kb_left"> <div class="kb_left_top kb_pd10"> <div v-for="item in leftTopData" :key="item.id"> <div class="kb_block "> <div>{{ item.name }}</div> <div style="margin-top: 10px">{{ item.value }}</div> </div> </div> </div> <div class="kb_left_bottom kb_pd10"> 2 </div> </div> <div class="kb_right kb_pd10"> 3 </div> </div> </div> </div> </template> <script> import './kbCommon.css' export default { name: 'Index2', data() { return { headTime: new Date(), leftTopData: [ { id: 1, name: 'éçµäº§çº¿', value: 1000, children: [] }, { id: 2, name: 'å è£ äº§çº¿', value: 1200, children: [] }, { id: 3, name: 'å è£ äº§çº¿', value: 1300, children: [] } ]// } }, created() { }, mounted() { // setInterval(this.getNowTime, 500) this.handleData() }, methods: { // å¤çæ°æ® handleData() { }, // è·åå½åæ¶é´ getNowTime() { const dt = new Date() const y = dt.getFullYear() const m = (dt.getMonth() + 1 + '').padStart(2, '0') const d = (dt.getDate() + '').padStart(2, '0') const hh = (dt.getHours() + '').padStart(2, '0') const mm = (dt.getMinutes() + '').padStart(2, '0') const ss = (dt.getSeconds() + '').padStart(2, '0') this.headTime = `${y}-${m}-${d} ${hh}:${mm}:${ss}` } } } </script> <style scoped lang="scss"> .kb_content { display: flex; position: relative; height: 990px; width: 100%; background-color: #99a9bf; .kb_left { width: 1340px; height: 100%; .kb_left_top { height: 495px; display: flex; flex-direction: column; justify-content: space-around; .kb_block{ width: 150px; height: 150px; color: #fff; letter-spacing:5px; background-color: #42b983; display: flex; justify-content: center; align-items: center; flex-direction: column; } } .kb_left_bottom { height: 495px; background-color: #20a0ff; } } .kb_right { width: 580px; height: 100%; background-color: #42b983; } } </style> src/views/login/index.vue
@@ -155,8 +155,8 @@ } return { loginForm: { username: '002', password: '123456' username: '', password: '' }, loginRules: { username: [{ required: true, trigger: ['blur', 'change'], validator: validateUsername }], src/views/scgl/gd.vue
@@ -467,11 +467,12 @@ /> </el-table> </el-dialog> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button @click="dialogVisibleCancel">å æ¶</el-button> <el-button v-if="operation==='add'" type="primary" @click="dialogVisibleConfirm">ç¡® å®</el-button> <el-button v-else type="primary" @click="dialogVisibleConfirm">ç¡® å®/æ å°</el-button> <!-- <el-button v-if="operation==='add'" type="primary" @click="dialogVisibleConfirmPreview('add')">é¢è§</el-button>--> <el-button type="primary" @click="dialogVisibleConfirm">ç¡® å®</el-button> </div> </span> </el-dialog> @@ -484,7 +485,13 @@ top="15vh" class="dialogVisibleSearch" :close-on-click-modal="false" @close="dialogVisibleTaskClose" > <el-button style="margin-bottom: 15px" type="primary" @click="supplementClick" >è¡¥æ</el-button> <el-table :data="taskTableData" border @@ -548,6 +555,137 @@ </span> </el-dialog> <!-- æå°é¢è§å¯¹è¯æ¡--> <el-dialog title="" :visible.sync="dialogVisibleApprove" width="812px" class="dialogVisibleConfirmClass" append-to-body :close-on-click-modal="false" @close="dialogVisibleConfirmClose" > <!-- è¦æå°çåºå --> <div id="printMe" style="padding: 30px"> <div style="font-size: 26px; text-align: center">æµç¨å</div> <div style="display: flex;justify-content: space-around;margin-top: 20px"> <div style="width: 78%"> <el-form ref="formApprove" :model="formApprove" label-width="100px" inline style="display: flex;justify-content: space-between" > <div class="elForm"> <el-form-item label="å·¥åç¼å·ï¼" class="formContent"> {{ formApprove.mesordercode }} </el-form-item> <el-form-item label="产åç¼ç ï¼" class="formContent"> {{ formApprove.partcode }} </el-form-item> <el-form-item label="产ååç§°ï¼" class="formContent"> {{ formApprove.partname }} </el-form-item> <el-form-item label="产åè§æ ¼ï¼" class="formContent"> {{ formApprove.partspec }} </el-form-item> <el-form-item label="工忰éï¼" class="formContent"> {{ formApprove.plan_qty }} </el-form-item> <el-form-item label="å·¥èºè·¯çº¿ï¼" class="formContent"> {{ formApprove.routename }} </el-form-item> <el-form-item label="æå°äººåï¼" class="formContent"> {{ username }} </el-form-item> <el-form-item label="æå°æ¶é´ï¼" class="formContent"> {{ formApprove.lm_date }} </el-form-item> </div> </el-form> </div> <div style="width: 22%;display: flex;justify-content: center;align-items: center"> <!-- <div :id="'qrCode'+0" :ref="'qrCodeDiv'+0" />--> <div /> </div> </div> <!-- <div style="width:100%;height: 30px;border-bottom: 1px solid #eee;margin-bottom: 20px" />--> <el-table id="table" :data="tableDataPrint" border class="tableDataPrint" :header-cell-style="{ background: '#c0c0c0',textAlign:'center',color:'#000',borderColor:'#000'}" :cell-style="{textAlign: 'center',color:'#000',borderColor:'#000'}" style="width: 100%;margin-top: 20px;text-align: center;border-color: #000" > <el-table-column id="column0" prop="seq" label="å·¥åºå·" width="70" align="center" /> <el-table-column id="column1" prop="stepqrcode" label="å·¥åºäºç»´ç " width="100" align="center" > <template slot-scope="{row}"> <div :id="'qrCode'+row.seq" :ref="'qrCodeDiv'+row.seq" class="tableColumn" /> </template> </el-table-column> <el-table-column id="column2" prop="stepname" label="å·¥åº" width="120" align="center" /> <el-table-column id="column3" prop="plan_qty" label="å å·¥æ°é" width="100" align="center" /> <el-table-column id="column4" prop="good_qty" width="100" align="center" label="åæ ¼æ°é" /> <el-table-column id="column5" width="100" prop="ng_qty" align="center" label="ä¸è¯æ°é" /> <el-table-column id="column6" prop="desc" align="center" width="120" label="夿³¨" /> </el-table> </div> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button @click="dialogVisibleBackPreview">è¿ å</el-button> <!-- <el-button v-if="operation==='add'" type="primary" @click="dialogVisibleConfirm">ç¡® å®</el-button>--> <!-- <el-button type="primary" @click="dialogVisibleConfirm">ç¡® å®/æ å°</el-button>--> <el-button v-print="printObj" type="primary">æ å°</el-button> </div> </span> </el-dialog> </div> </template> @@ -565,6 +703,7 @@ import { getCookie } from '@/utils/auth' import { MesOrderPrintSearch1, PrintOrder } from '@/api/utils' import { urlAddRandomNo, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp' import QRCode from 'qrcodejs2' const SER_HZ = /^[\u4e00-\u9fa5]+$/ export default { @@ -588,6 +727,7 @@ isFullscreen: false, mainHeight: 0, tableHeight: 0, username: '', form: { mesorderstus: '', // å·¥åç¶æç mesordercode: '', // å·¥åç¼å· @@ -673,26 +813,42 @@ }, dialogVisibleTask: false, taskTableData: [], // dialogFormTask: { // partname: '', // 产ååç§° // partspec: '', // 产åè§æ ¼ // wkshopname: '', // ç产车é´åç§° // routename: '', // å·¥èºè·¯çº¿åç§° // // mesorderstusName: '', // å·¥åç¶æåç§° // mesorderstus: '', // å·¥åç¶æç // mesordercode: '', // å·¥åç¼å· // partcode: '', // 产åç¼ç // mesqty: '', // 工忰é // // routecode: '', // å·¥èºè·¯çº¿ç¼ç // wkshopcode: '', // ç产车é´ç¼ç // planstartdate: '', // 计åå¼å§æ¶é´ // planenddate: '', // 计å宿æ¶é´ // orderlev: '' // å·¥åç级 // }, dialogVisibleSearch: false, searchTableData: [] searchTableData: [], dialogVisibleApprove: false, tableDataPrint: [], // æå°é¡µé¢å 容 printObj: { id: 'printMe', popTitle: 'æå°æ¨¡æ¿', preview: false, extraHead: '<meta http-equiv="Content-Language" content="zh-cn"/>', closeCallback(vue) { // å ³éæå°çåè°äºä»¶ï¼æ æ³ç¡®å®ç¹å»çæ¯ç¡®è®¤è¿æ¯åæ¶ï¼ console.log('11212', vue) // vue.dialogVisible = false vue.dialogVisibleApprove = false }, beforeOpenCallback(vue) { vue.printLoading = true console.log('æå¼ä¹å') console.log() }, openCallback(vue) { vue.printLoading = false console.log('æ§è¡äºæå°') } }, formApprove: { mesordercode: '', partcode: '', partname: '', partspec: '', plan_qty: '', routename: '', lm_date: '' }, number: '' } }, created() { @@ -703,7 +859,8 @@ window.addEventListener('resize', this.getHeight) this.getHeight() // webapp_urlprotocol_startup() webapp_ws_autoupdate(true) // webapp_ws_autoupdate(true) this.username = getCookie('username') }, methods: { async getMesOrderSearch() { @@ -819,6 +976,7 @@ this.dialogVisibleTask = true const { data: res } = await SearchWorkStep({ wo_code: row.wo_code }) this.taskTableData = res this.dialogForm.mesordercode = res[0].wo_code }, dialogVisibleBack() { this.dialogVisibleTask = false @@ -972,13 +1130,15 @@ orderlev: this.dialogForm.orderlev, // å·¥åç级 OperType: this.operation === 'add' ? 'Add' : 'Update' } AddUpdateMesOrder(data).then(res => { if (res.code === '200') { if (this.operation !== 'add') { this.sendPrint() } this.$message.success(this.operation === 'add' ? 'æ·»å æåï¼' : 'æ´¾åæåï¼') this.dialogVisible = false this.handlePrint() this.$message.success(this.operation === 'add' ? 'æ·»å æåï¼' : 'æ´¾åæåï¼') // this.dialogVisible = false this.getMesOrderSearch() } else { this.$message.error(this.operation === 'add' ? 'æ·»å 失败ï¼' : 'æ´¾å失败ï¼') @@ -990,12 +1150,12 @@ // æ´¾åæå° async sendPrint() { const data = { // username: getCookie('admin'), username: getCookie('username'), username: getCookie('admin'), // username: getCookie('username'), mesordercode: this.dialogForm.mesordercode } // const res = await MesOrderPrintSearch1(data) const res = await PrintOrder(data) const res = await MesOrderPrintSearch1(data) // const res = await PrintOrder(data) if (res.code === '200') { // åæ°å ·ä½è¯´æè¯·åèå¸®å©ææ¡£ä¸çâWEBæ¥è¡¨(B/Sæ¥è¡¨)->WEBæ¥è¡¨å®¢æ·ç«¯->å¯å¨åæ°è¯´æâé¨å var args = { @@ -1007,6 +1167,7 @@ webapp_ws_ajax_run(args) } }, // è·å页é¢é«åº¦ getHeight() { this.$nextTick(() => { @@ -1029,7 +1190,108 @@ }, dialogVisibleSearchBack() { this.dialogVisibleSearch = false }, // å¤çæå° handlePrint() { // const number = Math.random() * Math.random() // this.number = number === 0 ? (10 + Math.random()) : number // console.log(number) this.dialogVisibleApprove = true const data2 = { username: getCookie('admin'), mesordercode: this.dialogForm.mesordercode } MesOrderPrintSearch1(data2).then(res2 => { if (res2.code === '200') { const res3 = res2.data.recordset this.tableDataPrint = res3 this.formApprove.mesordercode = res3[0].wo_code this.formApprove.partcode = res3[0].partcode this.formApprove.partname = res3[0].partname this.formApprove.partspec = res3[0].partspec this.formApprove.plan_qty = res3[0].plan_qty this.formApprove.routename = res3[0].routename this.formApprove.lm_date = res3[0].lm_date this.$nextTick(() => { // this.bindQRCode(0, this.formApprove.mesordercode, 'big') res3.forEach(i => { this.bindQRCode(i.seq, i.stepqrcode, 'small') }) }) } }) }, dialogVisibleTaskClose() { this.dialogForm.mesordercode = '' }, /* * æå¨ç¹å»æå° * */ // è¿åæé® dialogVisibleBackPreview() { this.dialogVisibleApprove = false }, // dialogVisibleConfirmPreview(param) { // this.$refs.dialogForm.validate(valid => { // if (valid) { // const data = { // username: getCookie('admin'), // mesordercode: this.dialogForm.mesordercode // } // MesOrderPrintSearch1(data).then(res => { // if (res.code === '200') { // this.dialogVisibleApprove = true // console.log(res, 11) // } // }) // } // }) // }, // çæäºç»´ç bindQRCode(seq, text, size) { new QRCode(this.$refs['qrCodeDiv' + seq], { text: text, width: size === 'big' ? 90 : 60, height: size === 'big' ? 90 : 60, // colorDark: '#333333', // äºç»´ç é¢è² colorDark: '#000', // äºç»´ç é¢è² colorLight: '#ffffff', // äºç»´ç èæ¯è² correctLevel: QRCode.CorrectLevel.L// 容éçï¼L/M/H }) }, dialogVisibleConfirmClose() { // this.dialogForm.mesordercode = '' this.formApprove.mesordercode = '' this.formApprove.partcode = '' this.formApprove.partname = '' this.formApprove.partspec = '' this.formApprove.plan_qty = '' this.formApprove.routename = '' this.formApprove.lm_date = '' // this.$refs.qrCodeDiv0 = '' // this.$refs.qrCodeDiv1 = '' // this.$refs.qrCodeDiv2 = '' // this.$refs.qrCodeDiv3 = '' // // this.$ref['qrCodeDiv'].clearable() // this.tableDataPrint.forEach((item, index) => { // this.$ref[('qrCodeDiv' + index).toString()] = '' // // this.bindQRCode(item.seq, '') // }) // // this.bindQRCode(this.tableDataPrint.length, '') // this.$ref[('qrCodeDiv' + this.tableDataPrint.length).toString()] = '' // // this.bindQRCode() this.tableDataPrint = [] }, // è¡¥ææé® supplementClick() { this.dialogVisibleTask = false this.handlePrint() } } } </script> @@ -1088,6 +1350,10 @@ } .dialogVisibleSearch ::v-deep .el-dialog__body { padding: 20px 20px !important; } .dialogVisibleConfirmClass ::v-deep .el-dialog__body { padding: 20px 20px !important; } @@ -1182,6 +1448,10 @@ margin-bottom: 0; } .elForm ::v-deep .el-form-item { margin-bottom: 0; } ::v-deep .el-input__inner:focus { border-color: $main_color; } @@ -1207,4 +1477,37 @@ display: none; } } .el-table::before { height: 0; } //.dialogVisibleConfirmClass >>>.el-table--border, .el-table--fit { // border-bottom: 2px solid #000 ; // //outline: #000 solid 2px !important; //} .tableDataPrint ::v-deep div.cell{ display: flex !important; align-items: center !important; justify-content: center !important; } .formContent{ width: 240px; } </style> <style media="print"> /*@media print {*/ @page { size: auto; margin: 3mm; } </style> <style> .formContent .el-form-item__label{ color: #000 !important; } </style> src/views/scgl/gd_autoPrint.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,1210 @@ <template> <div> <div class="body" :style="{height:mainHeight+'px'}"> <div style="padding: 10px 5px 0 0"> <el-form ref="form" :model="form" label-width="80px" inline style="display: flex;justify-content: space-between" > <div class="elForm"> <el-form-item label="订åç¶æ" style=" display: flex;"> <el-select v-model="form.mesorderstus" :popper-append-to-body="false" style="width: 200px" placeholder="è¯·éæ©" filterable @change="erporderstusChange" > <el-option v-for="item in erporderstusArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-form-item label="订åç¼å·" style=" display: flex;"> <el-input v-model="form.mesordercode" placeholder="请è¾å ¥" style="width: 200px" /> </el-form-item> <el-form-item label="产åç¼ç " style=" display: flex;"> <!-- <el-select v-model="form.partcode" :popper-append-to-body="false" style="width: 200px" placeholder="è¯·éæ©">--> <!-- <el-option--> <!-- v-for="item in OrgTypeArr"--> <!-- :key="item.code"--> <!-- :label="item.name"--> <!-- :value="item.code"--> <!-- />--> <!-- </el-select>--> <el-input v-model="form.partcode" style="width: 200px" placeholder="请è¾å ¥" /> </el-form-item> <el-form-item label="产ååç§°" style=" display: flex;"> <el-input v-model="form.partname" style="width: 200px" placeholder="请è¾å ¥" /> </el-form-item> <el-form-item label="产åè§æ ¼" style=" display: flex;"> <el-input v-model="form.partspec" style="width: 200px" placeholder="请è¾å ¥" /> </el-form-item> <el-form-item label="å建人å" style=" display: flex;"> <el-input v-model="form.creatuser" style="width: 200px" placeholder="请è¾å ¥" /> </el-form-item> <el-form-item label="å建æ¶é´" style=" display: flex;"> <!-- <el-date-picker--> <!-- v-model="form.createdate"--> <!-- type="daterange"--> <!-- :clearable="false"--> <!-- range-separator="~"--> <!-- start-placeholder="å¼å§æ¥æ"--> <!-- end-placeholder="ç»ææ¥æ"--> <!-- size="mini"--> <!-- />--> <el-date-picker v-model="form.createdate" type="date" size="mini" :clearable="false" style="width: 200px;" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" /> </el-form-item> </div> <div style="min-height: 100px"> <div style="display: flex;align-items: start;justify-content:end;margin-top: 5px;z-index: 2"> <el-button type="primary" icon="el-icon-search" @click="search">æ¥è¯¢</el-button> <el-button type="info" icon="el-icon-refresh" @click="reset">éç½®</el-button> </div> <!-- <div v-if="!isFullscreen" style="display: flex;align-items: start; margin-top: 15px;z-index: 2">--> <!-- <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">æ°å¢</el-button>--> <!-- <el-button type="primary" icon="el-icon-connection" @click="send('send')">æ´¾å</el-button>--> <!-- <el-button type="primary" icon="el-icon-switch-button">订åå ³é</el-button>--> <!-- </div>--> <!-- <div v-if="isFullscreen" style="display: flex;flex-direction: column;align-items: end">--> <!-- <div style="display: flex;margin: 10px 0">--> <!-- <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">æ°å¢</el-button>--> <!-- <el-button type="primary" icon="el-icon-connection" @click="send('send')">æ´¾å</el-button>--> <!-- </div>--> <!-- <el-button type="primary" icon="el-icon-switch-button">订åå ³é</el-button>--> <!-- </div>--> </div> </el-form> </div> <el-divider /> <div style="margin-left: 10px;display: flex"> <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">æ°å¢</el-button> <el-button type="primary" icon="el-icon-connection" @click="send('send')">æ´¾å</el-button> <el-button type="primary" icon="el-icon-switch-button" @click="orderClose">å·¥åå ³é</el-button> </div> <el-divider /> <div class="elTableDiv"> <el-table :data="tableData" :height="tableHeight+'px'" border stripe :style="{width: 100+'%',height:tableHeight+'px',}" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" @sort-change="sortChange" > <!-- <el-table-column--> <!-- type="selection"--> <!-- width="50"--> <!-- />--> <el-table-column width="50" fixed > <template slot-scope="{row}"> <el-radio v-model="radioSelected" :label="row.wo_code" style="color: #fff;padding-left: 10px; margin-right: -25px;" @change.native="getCurrentRow(row.wo_code)" /> </template> </el-table-column> <el-table-column prop="RowNum" width="50" label="åºå·" fixed /> <el-table-column prop="status" label="订åç¶æ" sortable="custom" width="110" > <template slot-scope="{row}"> <div v-if="row.status==='NEW'">æ°å·¥å</div> <!-- <div v-if="row.status==='CREATING'">æ§è¡ä¸</div>--> <!-- <div v-if="row.status==='CREATED'">å·²å ³é</div>--> <div v-if="row.status==='ALLO'">已派å</div> <div v-if="row.status==='START'">å¼å·¥</div> <div v-if="row.status==='CLOSED'">å®å·¥</div> </template> </el-table-column> <el-table-column prop="wo_code" label="å·¥åç¼å·" sortable="custom" min-width="160" /> <el-table-column prop="partcode" label="产åç¼ç " sortable="custom" min-width="120" /> <el-table-column prop="partname" min-width="150" label="产ååç§°" sortable="custom" /> <el-table-column prop="partspec" label="产åè§æ ¼" sortable="custom" width="110" /> <el-table-column prop="plan_qty" label="工忰" sortable="custom" width="100" /> <el-table-column prop="wkshp_name" label="ç产车é´" sortable="custom" width="120" /> <el-table-column prop="route_name" label="å·¥èºè·¯çº¿" sortable="custom" min-width="130" /> <el-table-column prop="plan_startdate" label="计åå¼å§æ¶é´" sortable="custom" width="160" /> <el-table-column prop="plan_enddate" label="计åç»ææ¶é´" sortable="custom" width="160" /> <el-table-column prop="piroque" label="å·¥åç级" sortable="custom" width="120" > <template slot-scope="{row}"> <div v-if="row.piroque==='1'">ç¹çº§</div> <div v-if="row.piroque==='2'">ç´§æ¥</div> <div v-if="row.piroque==='3'">æ£å¸¸</div> </template> </el-table-column> <el-table-column prop="lm_user" label="å建人å" sortable="custom" width="120" /> <el-table-column prop="lm_date" label="å建æ¶é´" width="160" sortable="custom" /> <el-table-column label="æä½" width="120" fixed="right" > <template slot-scope="{row}"> <div class="operationClass"> <el-button type="text" @click="check(row)">å·¥åºä»»å¡</el-button> <el-button type="text" @click="del(row)">å é¤</el-button> </div> </template> </el-table-column> </el-table> </div> <!--å页--> <pagination v-show="total>0" :total="total" :page.sync="form.page" :limit.sync="form.rows" align="right" layout="prev, pager, next,sizes" popper-class="select_bottom" @pagination="getMesOrderSearch" /> </div> <!--æ°å¢æ´¾åå¯¹è¯æ¡--> <el-dialog :title="operation==='add'?'æ°å¢':'æ´¾å'" :visible.sync="dialogVisible" width="840px" top="15vh" :close-on-click-modal="false" @closed="handleClose" @close="handleClose" > <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px" > <el-form-item label="订åç¶æ" prop="mesorderstus" > <el-select v-model="dialogForm.mesorderstus" disabled filterable :popper-append-to-body="false" style="width: 200px" placeholder="è¯·éæ©" > <el-option v-for="item in erporderstusArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-form-item label="å·¥åç¼å·" prop="mesordercode"> <el-input v-model="dialogForm.mesordercode" :disabled="operation!=='add'" style="width: 200px" /> </el-form-item> <el-form-item label="工忰é" prop="mesqty"> <el-input v-model="dialogForm.mesqty" oninput="value=value.replace(/[^0-9.]/g,'')" :disabled="operation!=='add'" style="width: 200px" /> </el-form-item> <el-form-item v-if="operation==='add'" label="产ååç§°" prop="partcode" > <el-select v-model="dialogForm.partcode" filterable :disabled="operation!=='add'" :popper-append-to-body="false" style="width: 200px" placeholder="è¯·éæ©" @change="partcodeChangeDialog" > <el-option v-for="item in partArr" :key="item.partcode" :label="item.partname" :value="item.partcode" /> </el-select> </el-form-item> <el-form-item v-if="operation!=='add'" label="产ååç§°" prop="partname"> <el-input v-model="dialogForm.partname" disabled style="width: 200px" /> </el-form-item> <el-form-item label="产åç¼ç " prop="partcode"> <el-input v-model="dialogForm.partcode" disabled style="width: 200px" /> </el-form-item> <el-form-item label="产åè§æ ¼" prop="partspec"> <el-input v-model="dialogForm.partspec" disabled style="width: 200px" /> </el-form-item> <div style="display: flex"> <div style="display: flex;flex-wrap: nowrap"> <el-form-item label="å·¥èºè·¯çº¿" prop="routecode"> <el-select v-model="dialogForm.routecode" filterable :disabled="dialogForm.partcode===''" :popper-append-to-body="false" style="width: 172px" placeholder="è¯·éæ©" @change="routecodeChange" > <el-option v-for="item in routeArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-button type="primary" style="padding: 0 10px;margin-left: -8px;margin-top: 5px" class="el-icon-search" @click="searchClick" /> <!-- :disabled="dialogForm.routecode===''"--> </div> <el-form-item label="ç产车é´" prop="wkshopcode"> <el-select v-model="dialogForm.wkshopcode" filterable :popper-append-to-body="false" style="width: 200px;" placeholder="è¯·éæ©" :disabled="dialogForm.routecode===''" > <el-option v-for="item in wkshopArr" :key="item.org_code" :label="item.org_name" :value="item.org_code" /> </el-select> </el-form-item> </div> <el-form-item label="计åå¼å§æ¶é´" prop="planstartdate"> <el-date-picker v-model="dialogForm.planstartdate" type="date" :clearable="false" value-format="yyyy-MM-dd" style="width: 200px" placeholder="éæ©æ¥æ" /> </el-form-item> <el-form-item label="计å宿æ¶é´" prop="planenddate"> <el-date-picker v-model="dialogForm.planenddate" type="date" :clearable="false" value-format="yyyy-MM-dd" style="width: 200px" placeholder="éæ©æ¥æ" /> </el-form-item> <el-form-item label="å·¥åç级" prop="orderlev"> <el-select v-model="dialogForm.orderlev" filterable :popper-append-to-body="false" style="width: 200px" placeholder="è¯·éæ©" > <el-option v-for="item in orderlevArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> </el-form> <!-- å·¥èºè·¯çº¿æ¾å¤§éå¯¹è¯æ¡--> <el-dialog title="å·¥èºè·¯çº¿" :visible.sync="dialogVisibleSearch" width="840px" top="20vh" class="dialogVisibleSearch" append-to-body :close-on-click-modal="false" > <el-table :data="searchTableData" border stripe height="300" style="width: 100%;" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" > <el-table-column prop="seq" label="åºå·" width="50" /> <el-table-column prop="stepcode" label="å·¥åºç¼ç " /> <el-table-column prop="stepname" label="å·¥åºåç§°" /> <el-table-column prop="flwtype" label="å·¥åºç±»å" > <template slot-scope="{row}"> <div v-if="row.flwtype==='W'">å¤å</div> <div v-if="row.flwtype==='Z'">èªå¶</div> </template> </el-table-column> <el-table-column prop="descr" label="å·¥åºæè¿°" /> </el-table> </el-dialog> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button @click="dialogVisibleCancel">å æ¶</el-button> <el-button v-if="operation==='add'" type="primary" @click="dialogVisibleConfirm">ç¡® å®</el-button> <el-button v-else type="primary" @click="dialogVisibleConfirm">ç¡® å®/æ å°</el-button> </div> </span> </el-dialog> <!-- å·¥åºä»»å¡å¯¹è¯æ¡--> <el-dialog title="å·¥åºä»»å¡" :visible.sync="dialogVisibleTask" width="840px" top="15vh" class="dialogVisibleSearch" :close-on-click-modal="false" > <el-table :data="taskTableData" border stripe height="300" style="width: 100%;" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" > <el-table-column prop="seq" width="50" label="åºå·" /> <el-table-column prop="wo_code" label="å·¥åç¼å·" width="200" /> <el-table-column prop="stepcode" label="å·¥åºç¼ç " /> <el-table-column prop="stepname" label="å·¥åºåç§°" /> <!-- <el-table-column--> <!-- prop="flwtype"--> <!-- label="å·¥åºç±»å"--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <div v-if="row.flwtype==='W'">å¤å</div>--> <!-- <div v-if="row.flwtype==='Z'">èªå¶</div>--> <!-- </template>--> <!-- </el-table-column>--> <!-- <el-table-column--> <!-- prop="descr"--> <!-- label="å·¥åºæè¿°"--> <!-- />--> <el-table-column prop="plan_qty" label="任塿°é" /> <el-table-column prop="good_qty" label="åæ ¼æ°é" /> <el-table-column prop="ng_qty" label="ä¸è¯æ°é" /> </el-table> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button @click="dialogVisibleBack">è¿ å</el-button> <!-- <el-button type="primary" @click="dialogVisibleConfirm">ç¡® å®</el-button>--> </div> </span> </el-dialog> </div> </template> <script> import Pagination from '@/components/Pagination' import { AddUpdateMesOrder, ClosedMesOrder, DeleteMesOrder, MesOrderSearch, PartSelectRoute, RouteSelectWkshop, SearchWorkStep, SelectRouteStep } from '@/api/scgl' import { PartSelect } from '@/api/zzmx' import { handleDatetime } from '@/utils/global' import { getCookie } from '@/utils/auth' import { MesOrderPrintSearch1, PrintOrder } from '@/api/utils' import { urlAddRandomNo, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp' const SER_HZ = /^[\u4e00-\u9fa5]+$/ export default { name: 'GD', components: { Pagination }, data() { const validateName = (rule, value, callback) => { if (!value) { return callback(new Error('请è¾å ¥ç¼ç ')) } else { if (SER_HZ.test(value)) { return callback(new Error('ç¼ç ä¸è½ä¸ºä¸æ')) } else { callback() } } } return { isFullscreen: false, mainHeight: 0, tableHeight: 0, form: { mesorderstus: '', // å·¥åç¶æç mesordercode: '', // å·¥åç¼å· partcode: '', // 产åç¼ç partname: '', // 产ååç§° partspec: '', // 产åè§æ ¼ creatuser: '', // å建人å createdate: '', // å建æ¶é´ prop: 'lm_date', // æåºå段 order: 'desc', // æåºå段 page: 1, // 第å 页 rows: 20 // æ¯é¡µå¤å°æ¡ }, erporderstusArr: [ { code: 'NEW', name: 'æ°å·¥å' }, // { code: 'CREATING', name: 'æ§è¡ä¸' }, // { code: 'CREATED', name: 'å·²å ³é' } { code: 'ALLO', name: '已派å' }, { code: 'START', name: 'å¼å·¥' }, { code: 'CLOSED', name: 'å®å·¥' } ], total: 10, radioSelected: '', tableData: [], dialogVisible: false, dialogForm: { partname: '', // 产ååç§° partspec: '', // 产åè§æ ¼ wkshopname: '', // ç产车é´åç§° routename: '', // å·¥èºè·¯çº¿åç§° mesorderstus: 'NEW', // å·¥åç¶æç mesordercode: '', // å·¥åç¼å· partcode: '', // 产åç¼ç mesqty: '', // 工忰é routecode: '', // å·¥èºè·¯çº¿ç¼ç wkshopcode: '', // ç产车é´ç¼ç planstartdate: '', // 计åå¼å§æ¶é´ planenddate: '', // 计å宿æ¶é´ orderlev: '', // å·¥åç级 OperType: '' // æä½ç±»å }, partArr: [], // 产åä¿¡æ¯ wkshopArr: [], // çäº§è½¦é´æ°ç» routeArr: [], // å·¥èºè·¯çº¿æ°ç» orderlevArr: [ { code: 1, name: 'ç¹çº§' }, { code: 2, name: 'ç´§æ¥' }, { code: 3, name: 'æ£å¸¸' } ], // å·¥åç级æ°ç» operation: '', dialogFormRules: { mesorderstus: [ { required: true, message: 'è¯·éæ©è®¢åç¶æ', trigger: ['blur', 'change'] } ], partcode: [ { required: true, message: 'è¯·éæ©äº§åä¿¡æ¯', trigger: ['blur', 'change'] } ], mesordercode: [ { required: true, validator: validateName, trigger: ['blur', 'change'] } ], mesqty: [ { required: true, message: '请è¾å ¥å·¥åæ°é', trigger: ['blur', 'change'] } ], wkshopcode: [ { required: true, message: 'è¯·éæ©ç产车é´', trigger: ['blur', 'change'] } ], routecode: [ { required: true, message: 'è¯·éæ©å·¥èºè·¯çº¿', trigger: ['blur', 'change'] } ], planstartdate: [ { required: true, message: 'è¯·éæ©å¼å§æ¶é´', trigger: ['blur', 'change'] } ], planenddate: [ { required: true, message: 'è¯·éæ©ç»ææ¶é´', trigger: ['blur', 'change'] } ], orderlev: [ { required: true, message: 'è¯·éæ©å·¥åç级', trigger: ['blur', 'change'] } ] }, dialogVisibleTask: false, taskTableData: [], // dialogFormTask: { // partname: '', // 产ååç§° // partspec: '', // 产åè§æ ¼ // wkshopname: '', // ç产车é´åç§° // routename: '', // å·¥èºè·¯çº¿åç§° // // mesorderstusName: '', // å·¥åç¶æåç§° // mesorderstus: '', // å·¥åç¶æç // mesordercode: '', // å·¥åç¼å· // partcode: '', // 产åç¼ç // mesqty: '', // 工忰é // // routecode: '', // å·¥èºè·¯çº¿ç¼ç // wkshopcode: '', // ç产车é´ç¼ç // planstartdate: '', // 计åå¼å§æ¶é´ // planenddate: '', // 计å宿æ¶é´ // orderlev: '' // å·¥åç级 // }, dialogVisibleSearch: false, searchTableData: [] } }, created() { this.getMesOrderSearch() this.getSelect() }, mounted() { window.addEventListener('resize', this.getHeight) this.getHeight() // webapp_urlprotocol_startup() webapp_ws_autoupdate(true) }, methods: { async getMesOrderSearch() { // let tempDate = this.form.createdate // if (tempDate.length > 0) { // tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1]) // } const data = { mesorderstus: this.form.mesorderstus, // å·¥åç¶æç mesordercode: this.form.mesordercode, // å·¥åç¼å· partcode: this.form.partcode, // 产åç¼ç partname: this.form.partname, // 产ååç§° partspec: this.form.partspec, // 产åè§æ ¼ creatuser: this.form.creatuser, // å建人å createdate: this.form.createdate.toString().length > 0 ? handleDatetime(this.form.createdate) : '', // å建æ¶é´ prop: this.form.prop, // æåºå段 order: this.form.order, // æåºå段 page: this.form.page, // 第å 页 rows: this.form.rows // æ¯é¡µå¤å°æ¡ } const res = await MesOrderSearch(data) this.tableData = res.data this.total = res.count // this.form.createdate = tempDate }, async getSelect() { // è·å产åä¿¡æ¯ const { data: res1 } = await PartSelect() this.partArr = res1 }, // 订åç¶ææ¹åæ¶ erporderstusChange(val) { this.form.mesorderstus = val }, // æåºæ¹åæ¶ sortChange({ column, prop, order }) { if (order === 'descending') { order = 'desc' } else if (order === 'ascending') { order = 'asc' } else { order = 'desc' } this.form.order = order this.form.prop = prop this.getMesOrderSearch() }, // æ¥è¯¢ search() { this.getMesOrderSearch() }, // éç½® reset(val) { this.form.mesorderstus = '' this.form.mesordercode = '' this.form.partcode = '' this.form.partname = '' this.form.partspec = '' this.form.paydate = '' this.form.creatuser = '' this.form.createdate = '' this.getMesOrderSearch() }, // åéæ¡éä¸è·åå½åè¡ä¿¡æ¯ getCurrentRow(wo_code) { this.radioSelected = wo_code }, // æ°å¢æé® async add(operation) { this.operation = operation this.dialogVisible = true this.dialogForm.planstartdate = handleDatetime(new Date()) this.dialogForm.planenddate = handleDatetime(new Date()) this.dialogForm.orderlev = 3 }, // 产åä¿¡æ¯å¼æ¹å async partcodeChange(val) { console.log(val, 22) const { data: res } = await PartSelectRoute({ partcode: val }) this.routeArr = res let flag = false this.routeArr.forEach(item => { if (item.code === item.default_route) { this.dialogForm.routecode = item.code this.routecodeChange(this.dialogForm.routecode) flag = true } }) if (!flag) { this.dialogForm.routecode = '' } this.dialogForm.wkshopcode = '' }, // å·¥èºè·¯çº¿å¼æ¹å async routecodeChange(val) { const data = { partcode: this.dialogForm.partcode, routecode: this.dialogForm.routecode } // è·åçäº§è½¦é´æ°ç» const { data: res2 } = await RouteSelectWkshop(data) this.wkshopArr = res2 this.dialogForm.wkshopcode = '' }, // å·¥åºä»»å¡ async check(row) { this.dialogVisibleTask = true const { data: res } = await SearchWorkStep({ wo_code: row.wo_code }) this.taskTableData = res }, dialogVisibleBack() { this.dialogVisibleTask = false }, // æ´¾å send(operation) { if (this.radioSelected.length < 1) { return this.$message.info('请å 鿩工åï¼') } const row = this.tableData.find(item => item.wo_code === this.radioSelected) if (row.status !== 'NEW') { return this.$message.info('æ¤å·¥åä¸ºéæ°å·¥åç¶æï¼ä¸å¯æ´¾åï¼') } this.operation = operation this.dialogVisible = true this.$nextTick(() => { this.dialogForm.mesorderstus = row.status this.dialogForm.mesordercode = row.wo_code this.dialogForm.partcode = row.partcode this.partcodeChange(row.partcode) this.dialogForm.partname = row.partname this.dialogForm.mesqty = row.plan_qty this.dialogForm.partspec = row.partspec // this.routecodeChange(this.dialogForm.routecode) this.dialogForm.planstartdate = row.plan_startdate !== null ? row.plan_startdate : handleDatetime(new Date()) this.dialogForm.planenddate = row.plan_enddate !== null ? row.plan_enddate : handleDatetime(new Date()) this.dialogForm.orderlev = row.piroque !== null ? row.piroque : 3 // ç级 }) }, // å é¤æé® async del(row) { console.log(row.status) if (row.status === 'START' || row.status === 'CLOSED') { return this.$message.info('æ¤å·¥åä¸å¯å é¤ï¼') } this.$confirm('æ¯å¦ç¡®è®¤å é¤?', 'æç¤º', { confirmButtonText: 'ç¡®å®', cancelButtonText: 'åæ¶', type: 'warning' }).then(() => { console.log(row, 1) const data = { wocode: row.wo_code, m_po: row.m_po, orderqty: row.plan_qty } console.log(data, 2) DeleteMesOrder(data).then(res => { if (res.code === '200') { this.$message.success('å 餿å!') this.getMesOrderSearch() } }) }).catch(() => { this.$message.info('已忶å é¤') }) }, // å·¥åå ³éäºä»¶ orderClose() { if (this.radioSelected.length < 1) { return this.$message.info('请å 鿩工åï¼') } console.log('å·¥åå ³éäºä»¶') this.tableData.forEach(item => { if (item.wo_code === this.radioSelected) { if (item.status === 'START') { return this.$message.info('å½åå·¥åæªå®å·¥ï¼æ æ³å ³éï¼') } else if (item.status === 'CLOSED') { return this.$message.info('å·¥åå·²å ³éï¼æ éåå ³éï¼') } else { this.$confirm('æ¯å¦ç¡®è®¤å ³éå·¥å?', 'æç¤º', { confirmButtonText: 'ç¡®å®', cancelButtonText: 'åæ¶', type: 'warning' }).then(() => { const data = { wocode: item.wo_code, m_po: item.m_po } ClosedMesOrder(data).then(res => { if (res.code === '200') { this.$message.success('å·¥åå ³éæå!') this.getMesOrderSearch() // this.radioSelected = '' } }) }).catch(() => { this.$message.info('å·²åæ¶å ³éï¼') }) } } }) }, // å¯¹è¯æ¡äº§åä¿¡æ¯å¼æ¹å partcodeChangeDialog(val) { console.log(val) this.dialogForm.partname = this.partArr.find(item => item.partcode === val).partname this.dialogForm.partcode = this.partArr.find(item => item.partcode === val).partcode this.dialogForm.partspec = this.partArr.find(item => item.partcode === val).partspec // const { data: res } = await PartSelectRpute({ partcode: val }) // this.routeArr = res // this.dialogForm.routecode = '' this.partcodeChange(val) }, // å¯¹è¯æ¡å ³éäºä»¶ handleClose() { this.dialogForm.partname = '' // 产ååç§° this.dialogForm.partspec = '' // 产åè§æ ¼ this.dialogForm.wkshopname = '' // ç产车é´åç§° this.dialogForm.routename = '' // å·¥èºè·¯çº¿åç§° this.dialogForm.mesorderstus = 'NEW' // å·¥åç¶æç this.dialogForm.mesordercode = '' // å·¥åç¼å· this.dialogForm.partcode = '' // 产åç¼ç this.dialogForm.mesqty = '' // 工忰é this.dialogForm.routecode = '' // å·¥èºè·¯çº¿ç¼ç this.dialogForm.wkshopcode = '' // ç产车é´ç¼ç this.dialogForm.planstartdate = '' // 计åå¼å§æ¶é´ this.dialogForm.planenddate = '' // 计å宿æ¶é´ this.dialogForm.orderlev = '' // å·¥åç级 this.$refs.dialogForm.clearValidate() }, // å¯¹è¯æ¡åæ¶ dialogVisibleCancel() { this.dialogVisible = false }, // å¯¹è¯æ¡ç¡®è®¤ dialogVisibleConfirm() { this.$refs.dialogForm.validate(valid => { if (valid) { const data = { // partname: this.dialogForm.partname, // 产ååç§° // partspec: this.dialogForm.partspec, // 产åè§æ ¼ // wkshopname: this.dialogForm.wkshopname, // ç产车é´åç§° // routename: this.dialogForm.routename, // å·¥èºè·¯çº¿åç§° mesorderstus: this.dialogForm.mesorderstus, // å·¥åç¶æç mesordercode: this.dialogForm.mesordercode, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç mesqty: this.dialogForm.mesqty, // 工忰é routecode: this.dialogForm.routecode, // å·¥èºè·¯çº¿ç¼ç wkshopcode: this.dialogForm.wkshopcode, // ç产车é´ç¼ç planstartdate: this.dialogForm.planstartdate, // 计åå¼å§æ¶é´ planenddate: this.dialogForm.planenddate, // 计å宿æ¶é´ orderlev: this.dialogForm.orderlev, // å·¥åç级 OperType: this.operation === 'add' ? 'Add' : 'Update' } AddUpdateMesOrder(data).then(res => { if (res.code === '200') { if (this.operation !== 'add') { this.sendPrint() } this.$message.success(this.operation === 'add' ? 'æ·»å æåï¼' : 'æ´¾åæåï¼') this.dialogVisible = false this.getMesOrderSearch() } else { this.$message.error(this.operation === 'add' ? 'æ·»å 失败ï¼' : 'æ´¾å失败ï¼') } }) } }) }, // æ´¾åæå° async sendPrint() { const data = { username: getCookie('admin'), // username: getCookie('username'), mesordercode: this.dialogForm.mesordercode } const res = await MesOrderPrintSearch1(data) // const res = await PrintOrder(data) if (res.code === '200') { // åæ°å ·ä½è¯´æè¯·åèå¸®å©ææ¡£ä¸çâWEBæ¥è¡¨(B/Sæ¥è¡¨)->WEBæ¥è¡¨å®¢æ·ç«¯->å¯å¨åæ°è¯´æâé¨å var args = { type: 'print', // preview print showOptionDlg: false, // 妿䏿¾ç¤ºæå°å¯¹è¯æ¡èç´æ¥æå°ï¼å°æ¤è¡æ³¨é廿å³å¯ report: urlAddRandomNo('./static/grf/äº§åæµä¼ åA4.grf'), data: res.data } webapp_ws_ajax_run(args) } }, // è·å页é¢é«åº¦ getHeight() { this.$nextTick(() => { this.mainHeight = window.innerHeight - 250 this.tableHeight = this.mainHeight - 100 // this.isFullscreen = window.innerHeight < 800 if (this.isFullscreen) { this.tableHeight = this.tableHeight - 50 } }) }, // å·¥èºè·¯çº¿æ¾å¤§éç¹å» async searchClick() { if (this.dialogForm.routecode === '') { return this.$message.info('请å 鿩工èºè·¯çº¿ï¼') } this.dialogVisibleSearch = true const { data: res } = await SelectRouteStep({ routecode: this.dialogForm.routecode }) this.searchTableData = res }, dialogVisibleSearchBack() { this.dialogVisibleSearch = false } } } </script> <style lang="scss" scoped> $main_color: #42b983; ::v-deep .el-button--primary { background-color: $main_color !important; height: 30px; display: flex; align-items: center; //border: 1px solid $main_color; border: none; padding: 0 20px; } ::v-deep .el-button--primary:hover { border: none; } ::v-deep .el-button--info { height: 30px; display: flex; align-items: center; padding: 0 20px; } ::v-deep .el-pagination.is-background .el-pager li:not(.disabled).active { background-color: $main_color !important; } ::v-deep .el-dialog__footer { display: flex; justify-content: flex-end; } .footerButton { display: flex; justify-content: end; } ::v-deep .el-button--default { background-color: #ffffff !important; height: 30px; display: flex; align-items: center; padding: 0 20px; } ::v-deep .el-button--default:hover { color: #606266; } ::v-deep .el-dialog__body { padding: 20px 100px !important; } .dialogVisibleSearch ::v-deep .el-dialog__body { padding: 20px 20px !important; } ::v-deep .el-radio__input.is-checked .el-radio__inner { background-color: $main_color; border-color: $main_color; } ::v-deep .el-radio__input.is-checked + .el-radio__label { color: $main_color !important; } ::v-deep .el-checkbox__input.is-checked .el-checkbox__inner { border-color: $main_color; background-color: $main_color; } ::v-deep .el-input__inner { height: 30px; line-height: 30px; } ::v-deep .el-input__inner:focus { border-color: $main_color; } ::v-deep .el-table .caret-wrapper { transform: scale(0.8); } ::v-deep .cell { display: flex !important; align-items: center !important; justify-content: space-between !important; } ::v-deep .el-button--text { color: $main_color; font-size: 14px; cursor: pointer; } .operationClass { height: 23px; display: flex; justify-content: space-between; align-items: center; } .el-icon-share { color: $main_color; cursor: pointer; } .el-checkbox.is-bordered.is-checked { border-color: $main_color; } ::v-deep .el-radio__input.is-checked .el-radio__inner { border-color: $main_color; background: $main_color; } ::v-deep .el-checkbox__input.is-indeterminate .el-checkbox__inner { border-color: $main_color; background: $main_color; } ::v-deep .el-checkbox__input.is-checked + .el-checkbox__label { color: $main_color !important; } ::v-deep .el-checkbox.is-bordered + .el-checkbox.is-bordered { margin: 10px 30px 0px 0; } ::v-deep .el-radio__input.is-checked + .el-radio__label { color: $main_color; } ::v-deep .el-radio.is-bordered + .el-radio.is-bordered { margin: 10px 30px 0px 0; } .body ::v-deep .el-divider { border: 1px solid #eee; width: 99%; margin: 10px auto; } .body ::v-deep .el-form-item { margin-bottom: 0; } ::v-deep .el-input__inner:focus { border-color: $main_color; } ::v-deep .el-select .el-input__inner:focus { border-color: $main_color; } ::v-deep .el-select-dropdown__item.selected { color: $main_color; } ::v-deep .el-checkbox__inner:hover { border-color: $main_color; } ::v-deep .el-textarea__inner:focus { border-color: $main_color; } .elTableDiv { ::v-deep .el-radio__label { display: none; } } </style> src/views/scgl/sckbg.vue
@@ -655,6 +655,68 @@ </div> </span> </el-dialog> <!--æå°é¢è§é¡µé¢--> <el-dialog title="é¢è§" :visible.sync="dialogVisible2" width="1140" @close="dialogVisible2Close" > <!-- è¦æå°çåºå --> <div id="printMe2" style="padding: 30px;"> <div style="display: flex;width: 250px;height: 150px;border: 1px solid #000;text-align: center;font-size: 10px;" > <div style="width: 60px;display: flex;flex-direction: column;border-right: 1px solid #000"> <div style="display: flex;height: 75%;border-bottom:1px solid #000;justify-content: center;align-items: center " > <div id="qrCode2" ref="qrCodeDiv2" /> </div> <div style="display: flex;height: 25%;justify-content: flex-start;align-items: center"> <div style="margin-left: 5px;width: 40px">æ°é:</div> {{ qrForm.startqty }} </div> </div> <div style="width:190px;display: flex;flex-direction: column"> <div style="display: flex;height: 25%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center;text-align: left" > <div style="width: 60px;margin-left: 5px;">å·¥åç¼å·:</div> <div>{{ qrForm.wo_code }}</div> </div> <div style="display: flex;height: 25%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center ;text-align: left" > <div style="width: 60px;margin-left: 5px;">产åç¼ç :</div> <div>{{ qrForm.partcode }}</div> </div> <div style="display: flex;height: 25%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left" > <div style="width:60px;margin-left: 5px;">产ååç§°:</div> <div>{{ qrForm.partname }}</div> </div> <div style="display: flex;height: 25%;justify-content: flex-start;align-items: center;text-align: left"> <div style="width: 60px;margin-left: 5px;">ä¸éå·¥åº:</div> <div>{{ qrForm.nextstepname }}</div> </div> </div> </div> </div> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button @click="dialogVisible2 = false">å æ¶</el-button> <el-button v-print="printObj2" type="primary">ç¡® å®</el-button> </div> </span> </el-dialog> </div> </template> @@ -677,6 +739,7 @@ SavaMesOrderStepReport } from '@/api/scgl' import { urlAddRandomNo, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp' import QRCode from 'qrcodejs2' const SER_HZ = /^[\u4e00-\u9fa5]+$/ export default { @@ -813,9 +876,53 @@ { required: true, message: '请è¾å ¥æ¥å·¥æ°é', trigger: ['blur', 'change'] } ] }, activeName: '' activeName: '', dialogVisible2: false, printObj2: { id: 'printMe2', popTitle: 'æå°æ¨¡æ¿', preview: false, extraHead: '<meta http-equiv="Content-Language" content="zh-cn"/>', closeCallback(vue) { // å ³éæå°çåè°äºä»¶ï¼æ æ³ç¡®å®ç¹å»çæ¯ç¡®è®¤è¿æ¯åæ¶ï¼ console.log('11212', vue) // vue.dialogVisible = false vue.dialogVisible2 = false vue.dialogVisible = false }, beforeOpenCallback(vue) { vue.printLoading = true console.log('æå¼ä¹å') console.log() }, openCallback(vue) { vue.printLoading = false console.log('æ§è¡äºæå°') } }, qrForm: { qrvalue: '', startqty: '', wo_code: '', partcode: '', partname: '', nextstepname: '' } } }, // computed: { // qrLink: function() { // return this.$store.getters.getPreviewUrl // } // }, // watch: { // qrLink: function(newVal, oldNew) { // if (newVal !== oldNew) { // this.$nextTick(() => { // this.bindQRCode(newVal) // }) // } // } // }, created() { this.getMesOrderStepSearch() this.tabClick() @@ -826,9 +933,10 @@ this.$nextTick(() => { $("input[name='produceCode']")[0].focus() // this.bindQRCode('10001;001') }) // webapp_urlprotocol_startup() webapp_ws_autoupdate(true) // webapp_ws_autoupdate(true) }, methods: { async getMesOrderStepSearch() { @@ -1265,9 +1373,10 @@ } SavaMesOrderStepIn(data).then(res => { if (res.code === '200') { this.WXprint() this.WXprint2() this.$message.success('æ¶ææåï¼') this.dialogVisible = false this.dialogVisible2 = true this.tabClick() } else { this.$message.error('æ¶æå¤±è´¥!') @@ -1327,11 +1436,13 @@ ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // ä¸è¯æ°é badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è¯åå } SavaMesOrderStepReport(data).then(res => { if (res.code === '200') { this.ZZprint() this.ZZprint2() this.$message.success('æ¥å·¥æåï¼') this.dialogVisible = false this.dialogVisible2 = true this.tabClick() } else { this.$message.error('æ¥å·¥å¤±è´¥!') @@ -1341,52 +1452,53 @@ } }) }, async ZZprint() { const obj = { recordset: [ { wo_code: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç partname: this.dialogForm.partname, // 产ååç§° next_stepname: this.dialogForm.nextstepname, // ä¸éå·¥åº qty: this.dialogForm.startqty, // æ°é // qrcode: this.form.orderstepqrcode// äºç»´ç qrcode: this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode // äºç»´ç } ] } const args = { type: 'print', // preview print showOptionDlg: false, // 妿䏿¾ç¤ºæå°å¯¹è¯æ¡èç´æ¥æå°ï¼å°æ¤è¡æ³¨é廿å³å¯ report: urlAddRandomNo('./static/grf/æ¥å·¥äº§åºæ ç¾.grf'), data: obj } webapp_ws_ajax_run(args) // çæäºç»´ç bindQRCode(text) { new QRCode(this.$refs.qrCodeDiv2, { text: text, width: 50, height: 50, colorDark: '#000', // äºç»´ç é¢è² colorLight: '#ffffff', // äºç»´ç èæ¯è² correctLevel: QRCode.CorrectLevel.L// 容éçï¼L/M/H }) }, // å¤åæ¶ææå° WXprint() { // åæ°å ·ä½è¯´æè¯·åèå¸®å©ææ¡£ä¸çâWEBæ¥è¡¨(B/Sæ¥è¡¨)->WEBæ¥è¡¨å®¢æ·ç«¯->å¯å¨åæ°è¯´æâé¨å const obj = { recordset: [ { wo_code: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç partname: this.dialogForm.partname, // 产ååç§° next_stepname: this.dialogForm.nextstepname, // ä¸éå·¥åº qty: this.dialogForm.sqty, // æ°é // qrcode: this.WXform.orderstepqrcode// äºç»´ç qrcode: this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode// äºç»´ç } ] } const args = { type: 'print', // preview print showOptionDlg: false, // 妿䏿¾ç¤ºæå°å¯¹è¯æ¡èç´æ¥æå°ï¼å°æ¤è¡æ³¨é廿å³å¯ report: urlAddRandomNo('./static/grf/å¤åæ¶ææ ç¾.grf'), data: obj } webapp_ws_ajax_run(args) ZZprint2() { this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode this.qrForm.startqty = this.dialogForm.startqty this.qrForm.wo_code = this.dialogForm.wo_code this.qrForm.partcode = this.dialogForm.partcode this.qrForm.partname = this.dialogForm.partname this.qrForm.nextstepname = this.dialogForm.nextstepname this.$nextTick(() => { this.bindQRCode(this.qrForm.qrvalue) console.log(this.$refs.qrCodeDiv2, 123) // console.log(this.$refs.qrCodeDiv2.querySelectorAll('#qrCode2>img'), 1) // console.log(this.$refs.qrCodeDiv2.querySelectorAll('#qrCode2>canvas'), 2) }) }, WXprint2() { this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode this.qrForm.startqty = this.dialogForm.sqty this.qrForm.wo_code = this.dialogForm.wo_code this.qrForm.partcode = this.dialogForm.partcode this.qrForm.partname = this.dialogForm.partname this.qrForm.nextstepname = this.dialogForm.nextstepname this.$nextTick(() => { this.bindQRCode(this.qrForm.qrvalue) }) }, dialogVisible2Close() { this.qrForm.qrvalue = '' this.qrForm.startqty = '' this.qrForm.wo_code = '' this.qrForm.partcode = '' this.qrForm.partname = '' this.qrForm.nextstepname = '' this.$refs.qrCodeDiv2 = '' }, // è·å页é¢é«åº¦ getHeight() { this.$nextTick(() => { @@ -1576,3 +1688,12 @@ } } </style> <style media="print"> /*@media print {*/ @page { size: auto; margin: 3mm; font-size: 10px; } </style> src/views/scgl/sckbg_autoPrint.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,1578 @@ <template> <div> <div class="body" style="padding: 0;height: 100%" :style="{height:mainHeight+'px'}"> <el-tabs ref="elTabs" v-model="activeName" type="border-card" @tab-click="tabClick"> <el-tab-pane label="ç产å表"> <div style="margin-left: 10px;margin-top:10px;display: flex;justify-content: space-between"> <div style="display: flex;align-items: center"> <div style="width: 90px">æ«ææ¡ç ï¼</div> <!-- oninput="value=value.replace(/[^0-9a-zA-Z;_]/g,'')"--> <el-input v-model="form.orderstepqrcode" name="produceCode" style="width: 300px" @keyup.enter.native="val=>enterNative(val,'produceCode')" /> </div> <div v-if="false" style="display: flex;padding-right: 10px"> <el-button @click="ZZstart"> <svg-icon icon-class="start_time" style="margin-right: 2px" /> å¼å§ </el-button> <el-button @click="ZZreport"> <svg-icon icon-class="report_work" style="margin-right: 2px" /> æ¥å·¥ </el-button> </div> </div> <el-divider /> <div class="elTableDiv"> <el-table :data="tableData" :height="tableHeight+'px'" border stripe :style="{width: 100+'%',height:tableHeight+'px',}" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" @sort-change="sortChange" > <!-- <el-table-column--> <!-- width="50"--> <!-- fixed--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <el-radio--> <!-- v-model="radioSelected"--> <!-- :label="row.wo"--> <!-- style="color: #fff;padding-left: 10px; margin-right: -25px;"--> <!-- @change.native="getCurrentRow(row.wo)"--> <!-- />--> <!-- </template>--> <!-- </el-table-column>--> <el-table-column prop="RowNum" width="50" label="åºå·" fixed /> <el-table-column prop="status" label="ç¶æ" sortable="custom" width="110" > <template slot-scope="{row}"> <div v-if="row.status==='NEW'">æ°è®¢å</div> <div v-if="row.status==='ALLO'">已派å</div> <div v-if="row.status==='START'">å¼å·¥</div> <div v-if="row.status==='CLOSED'">å®å·¥</div> </template> </el-table-column> <el-table-column prop="wo_code" label="å·¥åå·" min-width="160" sortable="custom" /> <el-table-column prop="partcode" label="产åç¼ç " min-width="110" sortable="custom" /> <el-table-column prop="partname" min-width="110" label="产ååç§°" sortable="custom" /> <el-table-column prop="stepname" label="å·¥åº" min-width="80" sortable="custom" /> <el-table-column prop="descr" label="å·¥åºæè¿°" min-width="150" sortable="custom" /> <el-table-column prop="plan_qty" label="任塿°é" width="110" sortable="custom" /> <el-table-column prop="good_qty" label="å·²æ¥å·¥æ°é(è¯å)" sortable="custom" width="160" /> <el-table-column prop="ng_qty" label="ä¸è¯æ°é" width="150" sortable="custom" /> <el-table-column prop="plan_startdate" label="计åå¼å·¥æ¥æ" width="185" sortable="custom" /> <!-- <el-table-column--> <!-- label="æä½"--> <!-- width="150"--> <!-- fixed="right"--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <div class="operationClass">--> <!-- <el-button type="text" @click="edit('edit',row)">ç¼è¾</el-button>--> <!-- <el-button type="text" @click="del(row)">å é¤</el-button>--> <!-- </div>--> <!-- </template>--> <!-- </el-table-column>--> </el-table> </div> <!--å页--> <pagination v-show="total>0" :total="total" :page.sync="form.page" :limit.sync="form.rows" align="right" layout="prev, pager, next,sizes" popper-class="select_bottom" @pagination="getMesOrderStepSearch" /> </el-tab-pane> <el-tab-pane label="å¤åå表"> <div style="margin-left: 10px;margin-top:10px;display: flex;justify-content: space-between"> <div style="display: flex;align-items: center"> <div style="width: 90px;">å¤åç±»åï¼</div> <el-select v-model="WXSelected" filterable style="width: 200px" placeholder="è¯·éæ©" > <el-option v-for="item in WXSelectArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> <div style="width: 90px;margin-left: 20px">æ«ææ¡ç ï¼</div> <el-input v-model="WXform.orderstepqrcode" name="WXproduceCode" style="width: 300px" @keyup.enter.native="val=>enterNative(val,'WXproduceCode')" /> </div> <div v-if="false" style="display: flex;padding-right: 10px"> <el-button @click="WXsend"> <svg-icon icon-class="start_time" style="margin-right: 2px" /> åæ </el-button> <el-button @click="WXback"> <svg-icon icon-class="report_work" style="margin-right: 2px" /> æ¶æ </el-button> </div> </div> <el-divider /> <div class="elTableDiv"> <el-table :data="WXtableData" :height="tableHeight+'px'" border stripe :style="{width: 100+'%',height:tableHeight+'px',}" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" @sort-change="WXsortChange" > <!-- <el-table-column--> <!-- width="50"--> <!-- fixed--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <el-radio--> <!-- v-model="radioSelected"--> <!-- :label="row.wo_code"--> <!-- style="color: #fff;padding-left: 10px; margin-right: -25px;"--> <!-- @change.native="getWXCurrentRow(row.wo_code)"--> <!-- />--> <!-- </template>--> <!-- </el-table-column>--> <el-table-column prop="RowNum" width="50" label="åºå·" fixed /> <el-table-column prop="status" label="ç¶æ" sortable="custom" width="110" > <template slot-scope="{row}"> <div v-if="row.status==='NEW'">æ°è®¢å</div> <div v-if="row.status==='ALLO'">已派å</div> <div v-if="row.status==='START'">å·²åæ</div> <div v-if="row.status==='CLOSED'">å·²æ¶æ</div> </template> </el-table-column> <el-table-column prop="wo_code" label="å·¥åå·" min-width="160" sortable="custom" /> <el-table-column prop="partcode" label="产åç¼ç " min-width="110" sortable="custom" /> <el-table-column prop="partname" label="产ååç§°" min-width="110" sortable="custom" /> <el-table-column prop="stepname" label="å·¥åº" min-width="80" sortable="custom" /> <el-table-column prop="descr" label="å·¥åºæè¿°" min-width="150" sortable="custom" /> <el-table-column prop="plan_qty" label="任塿°é" width="110" sortable="custom" /> <el-table-column prop="good_qty" label="å·²æ¶ææ°é(è¯å)" sortable="custom" width="160" /> <el-table-column prop="ng_qty" label="ä¸è¯æ°é" width="150" sortable="custom" /> <el-table-column prop="plan_startdate" label="计åå¼å·¥æ¥æ" width="185" sortable="custom" /> <!-- <el-table-column--> <!-- label="æä½"--> <!-- width="150"--> <!-- fixed="right"--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <div class="operationClass">--> <!-- <el-button type="text" @click="edit('edit',row)">ç¼è¾</el-button>--> <!-- <el-button type="text" @click="del(row)">å é¤</el-button>--> <!-- </div>--> <!-- </template>--> <!-- </el-table-column>--> </el-table> </div> <!--å页--> <pagination v-show="WXtotal>0" :total="WXtotal" :page.sync="WXform.page" :limit.sync="WXform.rows" align="right" layout="prev, pager, next,sizes" popper-class="select_bottom" @pagination="getMesOrderStepSearch" /> </el-tab-pane> </el-tabs> </div> <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="800" class="dialogVisible" :top="dialogTitle==='èªå¶æ¥å·¥'?'5vh':'15vh'" :close-on-click-modal="false" @close="handleClose" @closed="handleClose" > <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px" > <el-form-item label="å·¥åç¼å·ï¼"> <div style="width: 200px">{{ dialogForm.wo_code }}</div> </el-form-item> <el-form-item label="产åç¼ç ï¼"> <div style="width: 200px">{{ dialogForm.partcode }}</div> </el-form-item> <el-form-item label="产ååç§°ï¼"> <div style="width: 200px">{{ dialogForm.partname }}</div> </el-form-item> <el-form-item label="产åè§æ ¼ï¼"> <div style="width: 200px">{{ dialogForm.partspec }}</div> </el-form-item> <el-form-item label="å½åå·¥åºï¼"> <div style="width: 200px">{{ dialogForm.stepname }}</div> </el-form-item> <el-form-item label="å·¥åºæè¿°ï¼"> <!-- <el-tooltip class="item" effect="dark" content="åææåæææåæææåææ¶æå¡æ°æ®çå¡" placement="top-start">--> <div style="width: 200px;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;"> {{ dialogForm.stepdesc }} </div> <!-- </el-tooltip>--> </el-form-item> <el-form-item label="任塿°éï¼"> <div style="width: 200px">{{ dialogForm.planqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶å¼å§'" label="æªå¼/å·²å¼ï¼"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="æªæ¥/å·²æ¥ï¼"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="æªå/å·²åï¼"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æªæ¶/å·²æ¶ï¼"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <!--èªå¶å¼å§--> <el-form-item v-if="dialogTitle==='èªå¶å¼å§'" label="å¼å·¥æ°éï¼"> <div style="width: 200px">{{ dialogForm.startqty }}</div> <!-- <div style="width: 200px">{{ dialogForm.noreportqty }}</div>--> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶å¼å§'" prop="eqpcode" label="ç产设å¤ï¼"> <el-select v-model="dialogForm.eqpcode" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in ZZeqpArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <!-- èªå¶æ¥å·¥ --> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="ä¸éå·¥åºï¼"> <div style="width: 200px">{{ dialogForm.nextstepname }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" prop="usergroupcode" label="ç产çç»ï¼"> <el-select v-model="dialogForm.usergroupcode" style="width: 200px;" placeholder="è¯·éæ©" @change="usergroupChange" > <el-option v-for="item in ZZtreams" :key="item.group_code" :label="item.group_name" :value="item.group_code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="设å¤åç§°ï¼" prop="eqpcode"> <el-select v-model="dialogForm.eqpcode" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in ZZeqpArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="æ¥å·¥æ°éï¼" prop="startqty"> <el-input v-model="dialogForm.startqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" /> <!-- <el-input v-model="dialogForm.noreportqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />--> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="ä¸è¯æ°éï¼"> <el-input v-model="dialogForm.noputqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" /> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="ä¸è¯åå ï¼"> <el-select v-model="dialogForm.badcode" style="width: 200px;" placeholder="è¯·éæ©" :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''" multiple > <el-option v-for="item in badArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <div v-if="dialogTitle==='èªå¶æ¥å·¥'"> <i class="el-icon-s-operation" style="color:#42b983;" /> 人åå表 <el-button type="primary" style="margin: 10px 0" @click="userAdd">å¢è¡</el-button> <el-table :data="userTableData" border stripe :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" height="180" highlight-current-row style="width: 100%" > <el-table-column width="100" label="åºå·" type="index" /> <el-table-column prop="username" label="人ååç§°" > <template slot-scope="{row}"> <div v-if="row.isVisible===0">{{ row.username }}</div> <el-select v-if="row.isVisible===1" v-model="row.username" style="width: 200px;" placeholder="è¯·éæ©" @change="val=>usernameChange(val,row)" > <el-option v-for="item in ZZuserArr" :key="item.usercode" :label="item.username" :value="item.usercode" /> </el-select> </template> </el-table-column> <el-table-column prop="RowNum" label="æä½" > <template slot-scope="{row}"> <div class="operationClass"> <el-button v-if="row.isVisible===0" type="text" @click="userDel(row)">å é¤</el-button> <el-button v-if="row.isVisible===1&&!userIsSave" type="text" @click="userSave(row)">ä¿å</el-button> <el-button v-if="row.isVisible===1" type="text" @click="userCancel(row)">åæ¶</el-button> </div> </template> </el-table-column> </el-table> <!--å页--> <pagination v-show="UserTotal>0" :total="UserTotal" :page.sync="Userform.page" :limit.sync="Userform.rows" align="right" layout="prev, pager, next,sizes" popper-class="select_bottom" @pagination="getMesOrderStepSearch" /> </div> <!-- å¤ååæ--> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="å¤å便¹ï¼" prop="wxcode" > <el-select v-model="dialogForm.wxcode" style="width: 200px;" placeholder="è¯·éæ©" filterable > <el-option v-for="item in WXouterprovide" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="åæäººåï¼" prop="outuser" > <el-select v-model="dialogForm.outuser" style="width: 200px;" placeholder="è¯·éæ©" filterable > <el-option v-for="item in WXoutuser" :key="item.usercode" :label="item.username" :value="item.usercode" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="åææ°éï¼" prop="fqty" > <el-input v-model="dialogForm.fqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" /> </el-form-item> <!-- å¤åæ¶æ--> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="ä¸éå·¥åºï¼" > <div style="width: 200px">{{ dialogForm.nextstepname }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="å¤å便¹ï¼" prop="wxcode" > <el-select v-model="dialogForm.wxcode" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in WXouterprovide" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æ¶æäººåï¼" prop="inuser" > <el-select v-model="dialogForm.inuser" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in WXoutuser" :key="item.usercode" :label="item.username" :value="item.usercode" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æ¶ææ°éï¼" prop="sqty" > <el-input v-model="dialogForm.sqty" style="width: 200px" oninput="value=value.replace(/[^0-9.]/g,'')" /> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="ä¸è¯æ°éï¼" prop="noputqty" > <el-input v-model="dialogForm.noputqty" style="width: 200px" oninput="value=value.replace(/[^0-9.]/g,'')" /> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="ä¸è¯åå ï¼" prop="badcode" > <el-select v-model="dialogForm.badcode" style="width: 200px;" multiple :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''" placeholder="è¯·éæ©" > <el-option v-for="item in badArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button @click="dialogVisibleCancel">å æ¶</el-button> <el-button v-if="dialogTitle==='èªå¶å¼å§'" type="primary" @click="dialogVisibleConfirm">å¼ å·¥</el-button> <el-button v-if="dialogTitle==='èªå¶æ¥å·¥'" type="primary" @click="dialogVisibleConfirm">æäº¤/æå°</el-button> <el-button v-if="dialogTitle==='å¤ååæ'" type="primary" @click="dialogVisibleConfirm">åæ</el-button> <el-button v-if="dialogTitle==='å¤åæ¶æ'" type="primary" @click="dialogVisibleConfirm">æ¶æ/æå°</el-button> </div> </span> </el-dialog> </div> </template> <script> import Pagination from '@/components/Pagination' import $ from 'jquery' import { MesOrderGroupSelectUser, MesOrderSelectUser, MesOrderStepReportSelectUserGroup, MesOrderStepSearch, MesOrderStepStart, MesOrderStepStartSelectEqp, MesOrderWxStepSearch, MesOrderStepSelectWX, SavaMesOrderStepOut, MesOrderStepSelectCause, SavaMesOrderStepIn, SavaMesOrderStepStart, SavaMesOrderStepReport } from '@/api/scgl' import { urlAddRandomNo, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp' const SER_HZ = /^[\u4e00-\u9fa5]+$/ export default { name: 'SCKBG', components: { Pagination }, data() { const validateName = (rule, value, callback) => { if (!value) { return callback(new Error('请è¾å ¥ç¼ç ')) } else { if (SER_HZ.test(value)) { return callback(new Error('ç¼ç ä¸è½ä¸ºä¸æ')) } else { callback() } } } const validateTypeCode = (rule, value, callback) => { if (!value) { return callback(new Error('è¯·éæ©ä¸çº§')) } else { callback() } } return { mainHeight: 0, tableHeight: 0, // produceCode: '', // å·¥åºç // WXproduceCode: '', // å¤åå·¥åºç radioSelected: '', // å·¥åºéä¸ WXradioSelected: '', // å·¥åºéä¸ form: { orderstepqrcode: '', // æ«æçäºç»´ç ä¿¡æ¯ prop: 'wo_code', // æåºå段 order: 'asc', // æåºå段 page: 1, // 第å 页 rows: 20 // æ¯é¡µå¤å°æ¡ }, total: 10, tableData: [], WXform: { // å¤å表å orderstepqrcode: '', // æ«æçäºç»´ç ä¿¡æ¯ prop: 'wo_code', // æåºå段z order: 'asc', // æåºå段 page: 1, // 第å 页 rows: 20 // æ¯é¡µå¤å°æ¡ }, WXtotal: 10, // å¤åè¡¨åæ»æ° WXtableData: [], // å¤å表 WXSelectArr: [// å¤åç±»å䏿å表 { code: 'OUT', name: 'åæ' }, { code: 'IN', name: 'æ¶æ' } ], WXSelected: 'OUT', // å¤å䏿å表éä¸å¼ dialogVisible: false, dialogTitle: '', // èªå¶å¼å§ãèªå¶æ¥å·¥ãå¤ååæãå¤åæ¶æ dialogForm: { wo_code: '', // å·¥åç¼å· partcode: '', // 产åç¼ç partname: '', // 产ååç§° partspec: '', // 产åè§æ ¼ stepseq: '', // å·¥åºåºå· stepcode: '', // å·¥åºç¼ç stepname: '', // å½åå·¥åºå nextstepname: '', // ä¸ä¸éå·¥åºå stepdesc: '', // å·¥åºæè¿° planqty: '', // 任塿°é reportqty: '', // å·²æ¥æ°é noreportqty: '', // æªæ¥æ°é startqty: '', // å¼(æ¥)å·¥æ°é wxcode: '', // å¤åä¾åºåç¼ç outuser: '', // åæäººå taskqty: '', // 任塿°é fqty: '', // åææ°é inuser: '', // æ¶æäººå sqty: '', // æ¶ææ°é ngqty: '', // ä¸è¯æ°é badcode: '', // ä¸è¯åå ç¼ç noputqty: '', // ä¸è¯æ°é eqpcode: '', // ç产设å¤ç¼ç usergroupcode: '', // çç»ç¼ç reportuser: '', // æ¥å·¥äººå startqtySum: '' // ä¸è½è¶ è¿çæ°å¼ }, ZZuserArr: [], // èªå¶ç¨æ·ææ ZZtreams: [], // èªå¶ç产çç»æ°ç» ZZeqpArr: [], // èªå¶è®¾å¤åç§° badArr: [], // ä¸è¯åå æ°ç» WXouterprovide: [], // å¤å便¹æ°ç» WXoutuser: [], // åæäººåæ°ç» userTableData: [], // 人åå表 UserTotal: 0, Userform: {}, userIsSave: false, // æ¤äººåæ¯å¦å¯ä¿æ dialogFormRules: { outuser: [ { required: true, message: 'è¯·éæ©åæäººå', trigger: ['blur', 'change'] } ], fqty: [ { required: true, message: '请è¾å ¥åææ°é', trigger: ['blur', 'change'] } ], wxcode: [ { required: true, message: 'è¯·éæ©å¤å便¹', trigger: ['blur', 'change'] } ], inuser: [ { required: true, message: 'è¯·éæ©æ¶æäººå', trigger: ['blur', 'change'] } ], sqty: [ { required: true, message: '请è¾å ¥æ¶ææ°é', trigger: ['blur', 'change'] } ], // noputqty: [ // { required: true, message: '请è¾å ¥ä¸è¯æ°é', trigger: ['blur', 'change'] } // ], // badcode: [ // { required: true, message: 'è¯·éæ©ä¸è¯åå ', trigger: ['blur', 'change'] } // ] eqpcode: [ { required: true, message: 'è¯·éæ©ç产设å¤', trigger: ['blur', 'change'] } ], usergroupcode: [ { required: true, message: 'è¯·éæ©ç产çç»', trigger: ['blur', 'change'] } ], startqty: [ { required: true, message: '请è¾å ¥æ¥å·¥æ°é', trigger: ['blur', 'change'] } ] }, activeName: '' } }, created() { this.getMesOrderStepSearch() this.tabClick() }, mounted() { window.addEventListener('resize', this.getHeight) this.getHeight() this.$nextTick(() => { $("input[name='produceCode']")[0].focus() }) // webapp_urlprotocol_startup() webapp_ws_autoupdate(true) }, methods: { async getMesOrderStepSearch() { const res = await MesOrderStepSearch(this.form) if (res.code === '200') { this.tableData = res.data this.total = res.count } }, async getMesOrderWxStepSearch() { const res = await MesOrderWxStepSearch(this.WXform) if (res.code === '200') { this.WXtableData = res.data } }, // æåºæ¹åæ¶ sortChange({ column, prop, order }) { if (order === 'descending') { order = 'desc' } else if (order === 'ascending') { order = 'asc' } else { order = 'desc' } this.form.order = order this.form.prop = prop this.getMesOrderStepSearch() }, // WXæåºæ¹åæ¶ WXsortChange({ column, prop, order }) { if (order === 'descending') { order = 'desc' } else if (order === 'ascending') { order = 'asc' } else { order = 'desc' } this.WXform.order = order this.WXform.prop = prop this.getMesOrderWxStepSearch() }, // èªå¶é¡µç¾åç¹ç¹å» getCurrentRow(val) { }, // å¤å页ç¾åç¹ç¹å» getWXCurrentRow(val) { console.log(val) this.WXradioSelected = val }, // tabæé®åæ¢é¼ æ èªå¨èç¦ tabClick(val, d) { if (this.$refs.elTabs.currentName === '0') { this.$nextTick(() => { this.getMesOrderStepSearch() $("input[name='produceCode']")[0].focus() this.WXform.orderstepqrcode = '' }) } if (this.$refs.elTabs.currentName === '1') { this.$nextTick(() => { this.getMesOrderWxStepSearch() $("input[name='WXproduceCode']")[0].focus() this.form.orderstepqrcode = '' }) } }, // æ«ç é®çå车äºä»¶ async enterNative(val, belong) { console.log(val, belong) // å¼å·¥ï¼code="200" count=0 // æ¥å·¥ï¼code="200" count=1 // åæï¼code="200" count=2 // æ¶æï¼code="200" count=3 // èµ°åè¡¨å½¢å¼ code="200" count=4 if (belong === 'produceCode') { const orderstepqrcode = this.form.orderstepqrcode const data = { OperType: 'ZZ', orderstepqrcode: orderstepqrcode, SelectType: '' } const res = await MesOrderStepStart(data) if (res.code === '200' && res.count === 0) { await this.ZZstart(res.data) } if (res.code === '200' && res.count === 1) { await this.ZZreport(res.data) } } if (belong === 'WXproduceCode') { const orderstepqrcode = this.WXform.orderstepqrcode const data = { OperType: 'WX', orderstepqrcode: orderstepqrcode, SelectType: this.WXSelected// OUTãIN } const res = await MesOrderStepStart(data) if (res.code === '200' && res.count === 2) { await this.WXsend(res.data) } if (res.code === '200' && res.count === 3) { await this.WXback(res.data) } } }, // æ¥è¯¢ search() { this.getMesOrderStepSearch() }, // èªå¶å¼å§ async ZZstart(obj) { // if (!this.ZZisExecutable) { // return this.$message.info('è¯·å æ«ç å·¥åºäºç»´ç ï¼') // } this.dialogTitle = 'èªå¶å¼å§' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepseq = obj.seq this.dialogForm.stepcode = obj.stepcode this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noreportqty = obj.noreportqty // this.dialogForm.startqty = obj.startqty this.dialogForm.startqty = obj.noreportqty }) await this.getMesOrderStepStartSelectEqp() }, // èªå¶æ¥å·¥ async ZZreport(obj) { // if (!this.ZZisExecutable) { // return this.$message.info('è¯·å æ«ç å·¥åºäºç»´ç ï¼') // } this.dialogTitle = 'èªå¶æ¥å·¥' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepseq = obj.seq this.dialogForm.stepcode = obj.stepcode this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noputqty = obj.noputqty this.dialogForm.noreportqty = obj.noreportqty // this.dialogForm.startqty = obj.startqty this.dialogForm.startqty = obj.noreportqty if (obj.nextstepname === null || obj.nextstepcode === '') { this.dialogForm.nextstepname = obj.stepname this.dialogForm.nextstepcode = obj.stepcode } else { this.dialogForm.nextstepname = obj.nextstepname this.dialogForm.nextstepcode = obj.nextstepcode } this.dialogForm.startqtySum = obj.noreportqty }) await this.getMesOrderStepStartSelectEqp() await this.getMesOrderStepReportSelectUserGroup() await this.getMesOrderStepSelectCause('ZZ') await this.getMesOrderSelectUserZZ() }, // å¤ååæ async WXsend(obj) { // if (this.WXradioSelected.length < 1 && obj.length < 1) { // return this.$message.info('请å 鿩工åºï¼') // } // console.log(this.WXform.orderstepqrcode === '', 6) // if (this.WXform.orderstepqrcode === '') { // return this.$message.info('请å è¾å ¥å·¥åºï¼') // } this.dialogTitle = 'å¤ååæ' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noreportqty = obj.noreportqty this.dialogForm.fqty = obj.startqty this.dialogForm.stepcode = obj.stepcode this.dialogForm.stepseq = obj.seq }) await this.getMesOrderStepSelectWX() await this.getMesOrderSelectUser() }, // å¤åæ¶æ async WXback(obj) { // if (this.WXform.orderstepqrcode === '') { // return this.$message.info('请å è¾å ¥å·¥åºï¼') // } this.dialogTitle = 'å¤åæ¶æ' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noreportqty = obj.noreportqty this.dialogForm.stepcode = obj.stepcode if (obj.nextstepname === null || obj.nextstepcode === '') { this.dialogForm.nextstepname = obj.stepname this.dialogForm.nextstepcode = obj.stepcode } else { this.dialogForm.nextstepname = obj.nextstepname this.dialogForm.nextstepcode = obj.nextstepcode } this.dialogForm.noputqty = obj.noputqty this.dialogForm.stepseq = obj.seq this.dialogForm.sqty = obj.startqty this.dialogForm.startqtySum = obj.startqty }) await this.getMesOrderStepSelectWX() await this.getMesOrderSelectUser() await this.getMesOrderStepSelectCause('WX') }, // ç产çç»ä¸ææ¹å usergroupChange(val) { this.dialogForm.usergroupcode = val this.getUserTableData() }, // è·åèªå¶æ¥å·¥ç产çç»ä¸æå表 async getMesOrderStepReportSelectUserGroup() { const { data: res } = await MesOrderStepReportSelectUserGroup() this.ZZtreams = res }, // è·åèªå¶æ¥å·¥è¡¨æ ¼userææ async getMesOrderSelectUserZZ() { const { data: res } = await MesOrderSelectUser({ usercode: this.dialogForm.usergroupcode }) this.ZZuserArr = res }, // è·åèªå¶ç产设å¤ä¸æ async getMesOrderStepStartSelectEqp() { const { data: res } = await MesOrderStepStartSelectEqp({ orderstepqrcode: this.form.orderstepqrcode }) this.ZZeqpArr = res }, // è·åWX便¹æ¥å£ async getMesOrderStepSelectWX() { const { data: res } = await MesOrderStepSelectWX({ orderstepqrcode: this.WXform.orderstepqrcode }) this.WXouterprovide = res }, // è·åæ¶åæäººå䏿æ¥å£ async getMesOrderSelectUser() { const { data: res } = await MesOrderSelectUser({ usercode: this.dialogForm.outuser }) this.WXoutuser = res }, // è·åæ¶æä¸è¯åå 䏿 async getMesOrderStepSelectCause(val) { let orderstepqrcode = '' if (val === 'WX') { orderstepqrcode = this.WXform.orderstepqrcode } if (val === 'ZZ') { orderstepqrcode = this.form.orderstepqrcode } const { data: res } = await MesOrderStepSelectCause({ orderstepqrcode: orderstepqrcode }) this.badArr = res }, // æ¥å·¥æ¥è¯¢ç¨æ·è¡¨ async getUserTableData() { const { data: res } = await MesOrderGroupSelectUser({ usergroupcode: this.dialogForm.usergroupcode }) this.userTableData = res this.userTableData.forEach(item => { let number = Math.random() * Math.random()// ä½ä¸ºå 餿¶çæ è¯ç¬¦ number = number === 0 ? (10 + Math.random()) : number item.isVisible = 0 item.number = number }) }, // ç¨æ·æ·»å userAdd() { let number = Math.random() * Math.random()// ä½ä¸ºå 餿¶çæ è¯ç¬¦ number = number === 0 ? (10 + Math.random()) : number console.log(this.userTableData, 6) this.userTableData.unshift({ usercode: '', username: '', isVisible: 1, number: number }) }, // ç¨æ·å表å é¤ userDel(row) { this.userTableData.forEach((item, index) => { if (item.number === row.number) { this.userTableData.splice(index, 1) } }) }, // ç¨æ·å表ä¿å userSave(row) { this.userTableData.forEach(item => { if (item.number === row.number) { item.isVisible = 0 } }) }, // ç¨æ·åè¡¨åæ¶ userCancel(row) { this.userTableData.forEach((item, index) => { if (item.number === row.number) { this.userTableData.splice(index, 1) } }) }, // ç¨æ·å表人ååç§°å¼éä¸ usernameChange(val, row) { this.userTableData.forEach(item => { if (item.usercode === val) { this.userIsSave = true return this.$message.info('æ¤äººåå·²å¨åä¸ï¼') } if (item.number === row.number) { this.userIsSave = false item.usercode = val item.username = this.ZZuserArr.find(item => item.usercode === val).username } }) }, // å¯¹è¯æ¡å ³éäºä»¶ handleClose() { this.dialogForm.wo_code = '', // å·¥åç¼å· this.dialogForm.partcode = '', // 产åç¼ç this.dialogForm.partname = '', // 产ååç§° this.dialogForm.partspec = '', // 产åè§æ ¼ this.dialogForm.stepseq = '', // å·¥åºåºå· this.dialogForm.stepcode = '', // å·¥åºç¼ç this.dialogForm.stepname = '', // å½åå·¥åºå this.dialogForm.nextstepname = '', // ä¸ä¸éå·¥åºå this.dialogForm.stepdesc = '', // å·¥åºæè¿° this.dialogForm.planqty = '', // 任塿°é this.dialogForm.reportqty = '', // å·²æ¥æ°é this.dialogForm.noreportqty = '', // æªæ¥æ°é this.dialogForm.startqty = '', // å¼(æ¥)å·¥æ°é this.dialogForm.wxcode = '', // å¤åä¾åºåç¼ç this.dialogForm.outuser = '', // åæäººå this.dialogForm.taskqty = '', // 任塿°é this.dialogForm.fqty = '', // åææ°é this.dialogForm.inuser = '', // æ¶æäººå this.dialogForm.sqty = '', // æ¶ææ°é this.dialogForm.ngqty = '', // ä¸è¯æ°é this.dialogForm.badcode = '', // ä¸è¯åå ç¼ç this.dialogForm.noputqty = '', // ä¸è¯æ°é this.dialogForm.eqpcode = '', // ç产设å¤ç¼ç this.dialogForm.usergroupcode = '', // çç»ç¼ç this.dialogForm.reportuser = '', // æ¥å·¥äººå this.dialogForm.startqtySum = '' // ä¸è½è¶ è¿çæ°å¼ this.$refs.dialogForm.clearValidate() }, // å¯¹è¯æ¡åæ¶ dialogVisibleCancel() { this.dialogVisible = false this.tabClick() }, // å¯¹è¯æ¡ç¡®è®¤ dialogVisibleConfirm() { this.$refs.dialogForm.validate(valid => { if (valid) { if (this.dialogTitle === 'å¤ååæ') { if (parseFloat(this.dialogForm.fqty) > parseFloat(this.dialogForm.noreportqty)) { return this.$message.info('åææ°éä¸è½å¤§äºæªåæ°é!') } const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· ææ¶ç¼º stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç wxcode: this.dialogForm.wxcode, // å¤åä¾åºåç¼ç outuser: this.dialogForm.outuser, // åæäººå taskqty: this.dialogForm.planqty, // 任塿°é fqty: this.dialogForm.fqty // åææ°é } SavaMesOrderStepOut(data).then(res => { if (res.code === '200') { this.$message.success('åææåï¼') this.dialogVisible = false this.tabClick() } else { this.$message.error('åæå¤±è´¥!') } }) } if (this.dialogTitle === 'å¤åæ¶æ') { if (parseFloat(this.dialogForm.startqtySum) < parseFloat(this.dialogForm.sqty) + parseFloat(this.dialogForm.noputqty)) { return this.$message.info('æ¶ææ°éå ä¸è¯æ°éä¸è½å¤§äºäºæªæ¶æ°é!') } if (parseFloat(this.dialogForm.noputqty) > 0) { if (this.dialogForm.badcode.length < 1) { return this.$message.info('è¯·éæ©ä¸è¯åå ï¼') } } const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç wxcode: this.dialogForm.wxcode, // å¤åä¾åºåç¼ç inuser: this.dialogForm.inuser, // åæäººå taskqty: this.dialogForm.planqty, // 任塿°é sqty: this.dialogForm.sqty, // æ¶ææ°é ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // ä¸è¯æ°é badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è¯åå } SavaMesOrderStepIn(data).then(res => { if (res.code === '200') { this.WXprint() this.$message.success('æ¶ææåï¼') this.dialogVisible = false this.tabClick() } else { this.$message.error('æ¶æå¤±è´¥!') } }) } if (this.dialogTitle === 'èªå¶å¼å§') { const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· ææ¶ç¼º stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç eqpcode: this.dialogForm.eqpcode, // çäº§è®¾å¤ taskqty: this.dialogForm.planqty, // 任塿°é startqty: this.dialogForm.startqty// å¼å§æ°é } SavaMesOrderStepStart(data).then(res => { if (res.code === '200') { this.$message.success('å¼å·¥æåï¼') this.dialogVisible = false this.tabClick() } else { this.$message.error('å¼å·¥å¤±è´¥!') } }) } if (this.dialogTitle === 'èªå¶æ¥å·¥') { if (parseFloat(this.dialogForm.startqtySum) < parseFloat(this.dialogForm.startqty) + parseFloat(this.dialogForm.noputqty)) { return this.$message.info('æ¥å·¥æ°éå ä¸è¯æ°éä¸è½å¤§äºäºæªæ¥æ°é!') } if (this.userTableData.length < 1) { return this.$message.info('人åå表ä¸è½ä¸ºç©º!') } if (parseFloat(this.dialogForm.noputqty) > 0) { if (this.dialogForm.badcode.length < 1) { return this.$message.info('è¯·éæ©ä¸è¯åå ï¼') } } const reportuser = this.userTableData.map(item => item.usercode).join(';') const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç eqpcode: this.dialogForm.eqpcode, // 设å¤ç¼ç usergroupcode: this.dialogForm.usergroupcode, // çç»ç¼ç reportuser: reportuser, // æ¥å·¥äººå taskqty: this.dialogForm.planqty, // 任塿°é // startqty: this.dialogForm.startqty, // å¼å·¥æ°é startqty: this.dialogForm.reportqty, // å¼å·¥æ°é // reportqty: this.dialogForm.reportqty, // æ¥å·¥æ°é reportqty: this.dialogForm.startqty, // æ¥å·¥æ°é ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // ä¸è¯æ°é badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è¯åå } SavaMesOrderStepReport(data).then(res => { if (res.code === '200') { this.ZZprint() this.$message.success('æ¥å·¥æåï¼') this.dialogVisible = false this.tabClick() } else { this.$message.error('æ¥å·¥å¤±è´¥!') } }) } } }) }, async ZZprint() { const obj = { recordset: [ { wo_code: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç partname: this.dialogForm.partname, // 产ååç§° next_stepname: this.dialogForm.nextstepname, // ä¸éå·¥åº qty: this.dialogForm.startqty, // æ°é // qrcode: this.form.orderstepqrcode// äºç»´ç qrcode: this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode // äºç»´ç } ] } const args = { type: 'print', // preview print showOptionDlg: false, // 妿䏿¾ç¤ºæå°å¯¹è¯æ¡èç´æ¥æå°ï¼å°æ¤è¡æ³¨é廿å³å¯ report: urlAddRandomNo('./static/grf/æ¥å·¥äº§åºæ ç¾.grf'), data: obj } webapp_ws_ajax_run(args) }, // å¤åæ¶ææå° WXprint() { // åæ°å ·ä½è¯´æè¯·åèå¸®å©ææ¡£ä¸çâWEBæ¥è¡¨(B/Sæ¥è¡¨)->WEBæ¥è¡¨å®¢æ·ç«¯->å¯å¨åæ°è¯´æâé¨å const obj = { recordset: [ { wo_code: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç partname: this.dialogForm.partname, // 产ååç§° next_stepname: this.dialogForm.nextstepname, // ä¸éå·¥åº qty: this.dialogForm.sqty, // æ°é // qrcode: this.WXform.orderstepqrcode// äºç»´ç qrcode: this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode// äºç»´ç } ] } const args = { type: 'print', // preview print showOptionDlg: false, // 妿䏿¾ç¤ºæå°å¯¹è¯æ¡èç´æ¥æå°ï¼å°æ¤è¡æ³¨é廿å³å¯ report: urlAddRandomNo('./static/grf/å¤åæ¶ææ ç¾.grf'), data: obj } webapp_ws_ajax_run(args) }, // è·å页é¢é«åº¦ getHeight() { this.$nextTick(() => { this.mainHeight = window.innerHeight - 250 this.tableHeight = this.mainHeight - 80 }) } } } </script> <style lang="scss" scoped> $main_color: #42b983; ::v-deep .el-button--primary { background-color: $main_color !important; height: 30px; display: flex; align-items: center; //border: 1px solid $main_color; border: none; padding: 0 20px; } ::v-deep .el-button--primary:hover { border: none; } ::v-deep .el-button--info { height: 30px; display: flex; align-items: center; padding: 0 20px; } ::v-deep .el-pagination.is-background .el-pager li:not(.disabled).active { background-color: $main_color !important; } ::v-deep .el-dialog__footer { display: flex; justify-content: flex-end; } .footerButton { display: flex; justify-content: end; } ::v-deep .el-button--default { background-color: #ffffff !important; height: 30px; display: flex; align-items: center; padding: 0 20px; } ::v-deep .el-button--default:hover { color: #606266; } ::v-deep .el-dialog__body { padding: 20px 100px !important; } ::v-deep .el-radio__input.is-checked .el-radio__inner { background-color: $main_color; border-color: $main_color; } ::v-deep .el-radio__input.is-checked + .el-radio__label { color: $main_color !important; } ::v-deep .el-checkbox__input.is-checked .el-checkbox__inner { border-color: $main_color; background-color: $main_color; } ::v-deep .el-input__inner { height: 30px; line-height: 30px; } ::v-deep .el-input__inner:focus { border-color: $main_color; } ::v-deep .el-table .caret-wrapper { transform: scale(0.8); } ::v-deep .cell { display: flex !important; align-items: center !important; justify-content: space-between !important; } ::v-deep .el-button--text { color: $main_color; font-size: 14px; cursor: pointer; } .operationClass { height: 23px; display: flex; justify-content: space-between; align-items: center; } .el-icon-share { color: $main_color; cursor: pointer; } .el-checkbox.is-bordered.is-checked { border-color: $main_color; } ::v-deep .el-radio__input.is-checked .el-radio__inner { border-color: $main_color; background: $main_color; } ::v-deep .el-checkbox__input.is-indeterminate .el-checkbox__inner { border-color: $main_color; background: $main_color; } ::v-deep .el-checkbox__input.is-checked + .el-checkbox__label { color: $main_color !important; } ::v-deep .el-checkbox.is-bordered + .el-checkbox.is-bordered { margin: 10px 30px 0px 0; } ::v-deep .el-radio__input.is-checked + .el-radio__label { color: $main_color; } ::v-deep .el-radio.is-bordered + .el-radio.is-bordered { margin: 10px 30px 0px 0; } .body ::v-deep .el-divider { border: 1px solid #eee; width: 99%; margin: 10px auto; } .body ::v-deep .el-form-item { margin-bottom: 0; } ::v-deep .el-input__inner:focus { border-color: $main_color; } ::v-deep .el-select .el-input__inner:focus { border-color: $main_color; } ::v-deep .el-select-dropdown__item.selected { color: $main_color; } ::v-deep .el-checkbox__inner:hover { border-color: $main_color; } ::v-deep .el-textarea__inner:focus { border-color: $main_color; } //.dialogVisible{ ::v-deep .el-select .el-input .el-select__caret { display: flex; align-items: center; justify-content: center; } //} .elTableDiv { ::v-deep .el-radio__label { display: none; } } </style> vue.config.js
@@ -50,7 +50,8 @@ }, proxy: { [process.env.VUE_APP_BASE_API]: { target: 'http://121.196.36.24:8001', // 请æ±ç第ä¸â½ æ¥â¼å°å target: 'http://121.196.36.24:8001', // 请æ±ç第ä¸â½ æ¥â¼å°å æ¬å°å¼åæå¡å¨ // target: 'http://192.168.2.138:8001', // 请æ±ç第ä¸â½ æ¥â¼å°å å®¢æ·æå¡å¨ changeOrigin: true, // 请æ±è·¨åæ¶ï¼éé ç½®æ¤é¡¹ pathRewrite: { // è·¯å¾éå,æ¿æ¢targetä¸ç请æ±å°å ['^' + process.env.VUE_APP_BASE_API]: '/api/'