index.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/api/controller.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/do/b1-ins-order/add.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/do/b1-inspect-order-plan/Inspection.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b1-inspection-order.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b2-standard.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
index.html
@@ -17,6 +17,10 @@ #app{ overflow: hidden; } .el-table-filter__list{ max-height: 70vh !important; overflow-y: scroll !important; } </style> </head> <body> src/assets/api/controller.js
@@ -165,6 +165,7 @@ selectSampleDefects: "/insOrder/selectSampleDefects", //样品缺陷指标 updateStatus: "/insOrder/updateStatus", //将待审核更新成撤销状态 updateInspected: "/insOrder/updateInspected", //将待检验的的撤销进行更改 labelPrinting: "/insOrder/labelPrinting", //标签打印 } const sampleOrder = { src/components/do/b1-ins-order/add.vue
@@ -1009,8 +1009,12 @@ } }, save0(){ let sampleList = this.handleData(this.HaveJson(this.sampleList),this.handleAsk,1) this.saveMethod(sampleList) if(this.editTable.every(m=>m.value)){ let sampleList = this.handleData(this.HaveJson(this.sampleList),this.handleAsk,1) this.saveMethod(sampleList) }else{ this.$message.error('请填写识别符值') } }, handleData(sampleList,calBack,type){ let editTable = [] @@ -1235,6 +1239,8 @@ this.saveLoad = false if (res.code == 201) return this.$message.success('提交成功') // this.$parent.multipleSelection = [{id: this.currentId}] // this.$parent.print() // 如果紧急程度为紧急,需要直接下发人员 // if (this.addObj.type == 2) { // this.issuedDialogVisible = true; src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -135,6 +135,14 @@ .table_caret:active{ opacity: .8; } >>>input::-webkit-inner-spin-button { -webkit-appearance: none !important; /* 隐藏微调按钮 */ margin: 0 !important; /* 移除微调按钮的边距 */ } >>>input[type=number] { -moz-appearance: textfield !important; /* 针对 Firefox */ } </style> <style> .inspection .el-form-item__label { @@ -264,7 +272,7 @@ <template v-if="n.v.ps!=undefined && n.v.ps.value==='检验值' && state==1"> <el-input v-if="getInspectionValueType(n.i) == 1" class="table_input" v-model="n.v.v" :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')" @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)"> @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)" type="number"> <el-button slot="append" type="primary" icon="el-icon-edit" size="mini" v-if="getInspectionItemType(n.i) == 1" @click="getSystemValue(n)"></el-button> </el-input> @@ -281,12 +289,12 @@ v-else-if="getInspectionValueType(n.i) == 4">/</span> </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='结论'"> <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1" <!-- <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1" class="table_input" v-model="n.v.v" @change="saveInsContext()"> <el-option label="合格" :value="1"></el-option> <el-option label="不合格" :value="0"></el-option> </el-select> <template v-else> </el-select> --> <template> <span v-if="n.v.v===1" :style="`font-family:${n.v.ff} !important;color: green;`">合格</span> <span v-else-if="n.v.v===0" :style="`font-family:${n.v.ff} !important;color: red;`">不合格</span> <span v-else :style="`font-family:${n.v.ff} !important;`">待定</span> @@ -310,7 +318,7 @@ :disabled="state>1" @visible-change="e=>getDic(e,n.i)" @change="saveInsContext()"> <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option> </el-select> --> <span :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span> <span :style="`font-family:${n.v.ff} !important;`">{{ toFixed(n.v.v,n.v.ct) }}</span> </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='样品编号'"> <div style="display: flex;flex-wrap: nowrap;align-items: center;width: 100%" :title="currentSample.sampleCode"> @@ -1196,7 +1204,12 @@ if(ask){ comp = ask.map((m, i) => { if (m.includes('=')) { return res == m.split('=')[1] let str = m.split('=')[1] if(typeof res == 'string'&&typeof str == 'string'){ return res.trim() == str.trim() }else{ return res == str } } else if (m.includes('≥')) { return res >= m.split('≥')[1] }else if (m.includes('≤')) { @@ -1217,12 +1230,10 @@ } }) } if(this.getInspectionValueType(item.i)==1){ if (comp.every(m => m)) { item.v.v = 1 } else { item.v.v = 0 } if (comp.every(m => m)) { item.v.v = 1 } else { item.v.v = 0 } this.saveInsContext() } @@ -1293,6 +1304,7 @@ str = str.replaceAll('MAX', 'Math.max') str = str.replaceAll('MIN', 'Math.min') str = str.replaceAll(',', ',') console.log(str) try { if(this.getInspectionValueType(item.i)==1){ comResult = eval(str) @@ -1944,6 +1956,26 @@ }).catch(error => { }) }, /** * 将数值v保留ct.fa中'##'后的指定小数位数,并返回格式化后的字符串。 * * @param v 要格式化的数值 * @param ct 包含格式化配置的对象 * @param ct.fa 格式化配置字符串,若包含'##'则按照其后的内容确定小数位数 * @returns 格式化后的字符串或原始数值(若配置不符合要求) */ toFixed(v,ct){ if(v&&ct&&ct.fa&&ct.fa.includes('##')){ if(ct.fa.includes('.')){ let num = ct.fa.slice(4).length return Number(v).toFixed(num) }else{ return Number(v).toFixed(0) } }else{ return v } } } } src/components/view/b1-inspection-order.vue
@@ -68,6 +68,31 @@ .el-form-item { margin-bottom: 16px; } .box-card >>>.el-radio__inner { border-radius: 2px !important; } .box-card >>>.el-radio__input.is-checked .el-radio__inner::after { content: ''; width: 8px; height: 3px; border: 1px solid white; border-top: transparent; border-right: transparent; text-align: center; display: block; position: absolute; top: 3px; left: 2px; transform: rotate(-45deg); border-radius: 0px; background: none; } >>>.el-radio__label{ color: #000 !important; } >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ background: #3A7BFA; } </style> <template> @@ -77,6 +102,7 @@ <el-row class="title"> <el-col :span="12" style="padding-left: 20px;">检验下单</el-col> <el-col :span="12" style="text-align: right;"> <el-button size="medium" type="primary" @click="print">标签打印</el-button> <el-button size="medium" type="primary" @click="playOrder(1)" v-if="addPower">下单</el-button> </el-col> </el-row> @@ -229,19 +255,85 @@ <div style="width: 100%;height: 100%;" v-if="active >0"> <Add :active="active" :currentId="currentId" v-if="active<4" /> </div> <el-dialog title="标签打印" :visible.sync="printDialogVisible" width="40%" top="5vh"> <div style="width:100%;height: 400px;overflow-y: auto;" v-loading="loadPint"> <div class="dia_body"> <el-checkbox style="margin: 10px 5px;" :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox> <el-checkbox-group @change="changePrintCode()" v-model="checkIndexList"> <el-card class="box-card" v-for="(item, i) in qrData" :key="i" style="margin-bottom: 15px; font-size: 16px !important;"> <el-checkbox :label="i" :key="i" style="position: relative;top:-20px;left:5px"><br></el-checkbox> <div> <el-row style="font-size: 14px;padding-left: 20px;"> <el-col style="font-weight: bold;">{{ item.pName }}</el-col> </el-row> <div style="display: flex;"> <div> <el-col :span="8" :offset="4"> <vueQr :text="JSON.stringify(item.sampleCode)" :size="140" :margin="2"></vueQr> </el-col> </div> <div style="margin-left: 50px;width: 100%;"> <el-row> <el-col style="font-weight: bold;font-size: 14px;"><span>样品编号: </span>{{ item.sampleCode }}</el-col> </el-row> <el-row style="margin-top: 1px;font-size: 14px;"> <el-col style="font-weight: bold;"><span>委托单号: </span>{{ item.code }}</el-col> </el-row> <el-row style="margin-top: 1px;font-size: 14px;"> <el-col style="font-weight: bold;"><span>规格型号: </span>{{ item.model }}</el-col> </el-row> <el-row style="margin-top: 1px;font-size: 14px;"> <el-col style="font-weight: bold;"><span>样品名称号: </span>{{ item.sample }}</el-col> </el-row> <el-row style="margin-top: 1px;font-size: 14px;"> <el-col style="font-weight: bold;"><span>检测项目: </span>{{ item.item }}</el-col> </el-row> <el-row style="margin-top: 3px;font-size: 14px;"> <el-col style="font-weight: bold;display: flex;align-items: center;"><span>样品状态: </span><el-radio-group :value="item.insState" style="margin-top: 7px;margin-left: 4px;" disabled> <el-radio :label="0" style="font-weight: bold;margin-right: 7px;">待检</el-radio> <el-radio :label="1" style="font-weight: bold;margin-right: 7px;">在检</el-radio> <el-radio :label="2" style="font-weight: bold;margin-right: 7px;">已检</el-radio> </el-radio-group><el-radio :label="1" style="font-weight: bold;margin-top: 7px;" v-model="item.isLeave" disabled>留样</el-radio></el-col> </el-row> </div> </div> </div> </el-card> </el-checkbox-group> </div> </div> <span slot="footer" class="dialog-footer"> <el-row> <el-button @click="printDialogVisible=false">取 消</el-button> <el-button type="primary" @click="submitPrint" :loading="printLoading">打 印</el-button> </el-row> </span> </el-dialog> </div> </template> <script> import ValueTable from '../tool/value-table.vue' import Add from '../do/b1-ins-order/add.vue' import vueQr from 'vue-qr' import PrintJS from 'print-js' export default { components: { ValueTable, Add Add, vueQr }, data() { return { loadPint:false, checkAll: false, isIndeterminate: true, printLoading:false, printDialogVisible:false, //是否审核通过 true是 false不是 isPass: false, //是否审核撤销 true是 false不是 @@ -278,8 +370,9 @@ } }, isIndex: true, showSelect: false, select: false, showSelect: true, select: true, selectMethod:'selectMethod', do: [{ id: 'dataLook', font: '数据查看', @@ -321,7 +414,7 @@ } }], linkEvent: { entrustCode: { sampleName: { method: 'selectAllByOne' } }, @@ -455,9 +548,23 @@ active: 0, //1:下单,2:查看,3:审核,4:光纤配置,默认为0 currentId: null, more:false, insOrderRow:{} insOrderRow:{}, checkIndexList:[], checkDataList:[], qrData:[], multipleSelection:[] } }, watch:{ printDialogVisible(newVal){ if(!newVal){ this.qrData = [] this.checkIndexList = [] this.checkDataList = [] this.isIndeterminate = true; } } }, mounted() { this.entityCopy = this.HaveJson(this.componentData.entity) this.getPower() @@ -467,6 +574,86 @@ this.selectEnumByCategoryForOrderType() }, methods: { selectMethod(val){ this.multipleSelection = val }, getLabelPrinting(selection){ this.loadPint = true; this.$axios.post(this.$api.insOrder.labelPrinting,{ ids:selection.map(m=>m.id).join(',') }).then(res => { let arr = res.data; arr.forEach(a=>{ this.loadPint = false; let arr1 = [] a.insProduct.forEach(b=>{ arr1.push(b.inspectionItem) }) a.item = [...new Set(arr1)].join(',') }) this.qrData = arr console.log(this.qrData) }) }, //选择要打印的二维码 changePrintCode(){ let indexList = this.checkIndexList let arr = [] indexList.forEach(i=>{ arr.push(this.qrData[i]) }) this.checkDataList = arr }, //全选 handleCheckAllChange(val) { if(val){ for(var i=0;i<this.qrData.length;i++){ this.checkIndexList.push(i) } this.checkDataList = this.qrData }else{ this.checkIndexList = [] this.checkDataList = [] } this.isIndeterminate = false; }, submitPrint(){ if(this.checkDataList.length < 1){ this.$message.warning("请选择要打印的二维码") return } this.printDialogVisible = false; PrintJS({ printable: 'printMOrder',//页面 type: "html",//文档类型 maxWidth:450, targetStyles:['*'], style: `@page { margin:0; size: 360px 175px landscape; } html{ zoom:100%; } @media print{ width: 360px; height: 175px; margin:0; }`, onPrintDialogClose: this.erexcel=false, targetStyles: ["*"], // 使用dom的所有样式,很重要 font_size: '', }); }, print(){ if(this.multipleSelection.length==0){ this.$message.warning('请选择一条数据') return } let selection = this.multipleSelection this.getLabelPrinting(selection) this.printDialogVisible = true }, getAuthorizedPerson() { this.$axios.get(this.$api.user.getUserMenu).then(res => { let data = [] src/components/view/b2-standard.vue
@@ -1448,7 +1448,8 @@ getItemEnum() { this.$axios.post(this.$api.standardTree.selectStandardProductEnumByMethodId, { id: this.standardId, tree: this.selectTree tree: this.selectTree, item:this.inspectionItem }).then(res => { this.filters0 = [] this.filters1 = [] src/main.js
@@ -15,8 +15,8 @@ Vue.prototype.PROJECT = '检测中心' // Vue.prototype.PROJECT = '装备电缆' //本地 Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; const javaApi = 'http://127.0.0.1:8001'; // Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; // const javaApi = 'http://127.0.0.1:8001'; // const javaApi = 'http://192.168.0.104:8001'; //云 @@ -24,8 +24,8 @@ // const javaApi = 'http://114.132.189.42:1234'; //检测中心正式库 // Vue.prototype.LOCATIONVUE = "http://10.1.200.86:8080"; // const javaApi = 'http://10.1.200.86:8001'; Vue.prototype.LOCATIONVUE = "http://10.1.200.86:8080"; const javaApi = 'http://10.1.200.86:8001'; //装备电缆测试库 // Vue.prototype.LOCATIONVUE = "http://10.16.173.59";