index.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/do/b1-ins-order/add.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/do/b1-ins-order/equip-config.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/do/b1-inspect-order-plan/Inspection.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/tool/onlyoffice.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b1-inspect-order-plan.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b1-report-preparation.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
index.html
@@ -21,7 +21,7 @@ </head> <body> <div id="app"></div> <!-- <script type='text/javascript' src='http://192.168.73.130:9001/web-apps/apps/api/documents/api.js'></script> --> <script type='text/javascript' src='http://192.168.11.200:81/web-apps/apps/api/documents/api.js'></script> <script src="<%= htmlWebpackPlugin.options.url %>/static/luckysheet/plugins/js/plugin.js"></script> <script src="<%= htmlWebpackPlugin.options.url %>/static/luckysheet/luckysheet.umd.js"></script> </body> src/components/do/b1-ins-order/add.vue
@@ -47,6 +47,14 @@ align-items: center; justify-content: space-between; } .pairing{ text-align: center; line-height: 36px; margin: 3px 0; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 4px; } </style> <style> .ins_order_add .el-input-group__append, @@ -94,7 +102,8 @@ <div class="ins_order_add"> <div v-show="!configShow&&!equipConfigShow"> <el-row class="title"> <el-col :span="6" style="padding-left: 20px;">委托单信息 总价:<span style="color: #3A7BFA">¥{{total}}</span></el-col> <el-col :span="6" style="padding-left: 20px;">委托单信息 总价:<span style="color: #3A7BFA">¥{{total}}</span></el-col> <el-col :span="18" style="text-align: right;"> <el-select v-model="template" size="medium" placeholder="下单模板" style="margin-right: 10px;" v-show="active==1" @change="selectInsOrderTemplateById"> @@ -108,7 +117,7 @@ <span style="color: #3A7BFA;">保存模板</span> </el-button> <el-button size="medium" type="primary" @click="openEquipConfig" v-if="PROJECT==='装备电缆'">电缆配置</el-button> v-if="PROJECT==='装备电缆' && active==1">电缆配置</el-button> <el-button size="medium" type="primary" @click="openConfig" v-if="addObj.sampleType==='光缆'">光纤配置</el-button> <el-button size="medium" type="primary" @click="save" :loading="saveLoad" v-show="active==1">提交</el-button> @@ -495,9 +504,27 @@ <div class="search_label">要求值:</div> <div class="search_input" v-show="bsm1Val!==null&&bsm1Val!==''"> <el-radio-group v-model="bsm1Val" @input="upBsm1"> <el-radio v-for="(a, ai) in JSON.parse(bsmRow.section)" :key="ai" :label="a">{{JSON.parse(bsmRow.ask)[ai]}}</el-radio> <el-radio v-for="(a, ai) in JSON.parse(bsmRow.section)" :key="ai" :label="a">{{JSON.parse(bsmRow.ask)[ai]}}</el-radio> </el-radio-group> </div> </el-col> </el-row> <el-row v-if="bsm2"> <el-col class="search_thing" :span="22"> <div class="search_label" style="width: 220px;"><span class="required-span">* </span>样品熔接配对数量:</div> <div class="search_input"> <el-input-number size="medium" v-model="bsm2Val" :min="1" :max="bsm2Val3.length" :precision="0" style="width: 70%;" :controls="false" @change="bsm2Up"></el-input-number> <span>MAX:{{bsm2Val3.length}}</span> </div> </el-col> <el-col style="margin-top: 6px;"> <el-col v-for="(a,ai) in bsm2Val2" :key="ai"> <el-col :span="10" class="pairing">{{a[0]}}</el-col> <el-col :span="4" class="pairing" style="border: 0;color: rgba(0, 0, 0, 0.2);">——</el-col> <el-col :span="10" class="pairing">{{a[1]}}</el-col> </el-col> </el-col> </el-row> </div> @@ -642,10 +669,15 @@ bsm1: false, bsm1Val: null, bsm1Dia: false, equipConfigShow: false, bsm2: false, bsm2Val: null, bsm2Dia: false, bsm2Val2: [], bsm2Val3: [], total:0, RTS:'', totalArr:[], equipConfigShow: false, totalArr: [] } }, watch: { @@ -795,11 +827,11 @@ this.$message.error('请输入样品型号') } else if (!this.sampleList.every(m => m.standardMethodListId)) { this.$message.error('请选择检验标准') }else if (this.totalArr.find(a=>a.ask.includes('RTS')&&a.state==1)&&!this.RTS) { } else if (this.totalArr.find(a => a.ask!=null&&a.ask.includes('RTS')&&a.state==1) && !this.RTS) { this.$message.error('请输入RTS') } else { let sampleList = this.HaveJson(this.sampleList) let isRTS = this.totalArr.find(a=>a.ask.includes('RTS')&&a.state==1) let isRTS = this.totalArr.find(a=>a.ask!=null&&a.ask.includes('RTS')&&a.state==1) if(isRTS){ sampleList.forEach(item=>{ if(item.insProduct&&item.insProduct.length>0){ @@ -868,7 +900,8 @@ a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ( '-' + a.modelNum)) return a })) })), pairing: JSON.stringify(this.bsm2Val2) }, { headers: { 'Content-Type': 'application/json' @@ -1027,6 +1060,7 @@ this.sample.standardMethodListId = null this.sample.insProduct = [] this.sample.id = this.count this.sample.childSampleList = [] this.sampleList.push(this.HaveJson(this.sample)) this.count++ } @@ -1130,6 +1164,17 @@ } else if (row.bsm === '1' && row.section !== '' && row.section !== null && row.state === 0) { this.bsm1 = false } if (row.bsm === '1' && row.inspectionItem === '熔接损耗' && this.sampleList.length > 1 && row.state === 1) { this.bsm2 = true this.bsm1Dia = true if(this.bsm2Val2.length === 0){ this.bsm2Val = (this.sampleList.length - 1) * this.sampleList.length / 2 this.computationalPairing(this.sampleList.length) this.bsm2Val2 = this.HaveJson(this.bsm2Val3) } } else if (row.bsm === '1' && row.inspectionItem === '熔接损耗' && row.state === 1) { this.bsm2 = false } this.sampleList.map(item => { if (this.sampleIds.indexOf(item.id) > -1) { item.insProduct.map(m => { @@ -1141,6 +1186,32 @@ } return item }) }, permute(nums) { const result = []; function backtrack(temp, nums) { if (temp.length === 2) { result.push([...temp]); return; } for (let i = 0; i < nums.length; i++) { if (temp.includes(nums[i])) continue; // 避免重复数字 if (temp.length > 0 && nums[i] < temp[temp.length - 1]) continue; // 规定顺序,避免重复组合 temp.push(nums[i]); backtrack(temp, nums); temp.pop(); } } backtrack([], nums); return result; }, computationalPairing(n){ const nums = []; for (let i = 1; i <= n; i++) { nums.push(i); } this.bsm2Val3 = this.HaveJson(this.permute(nums)) }, tableRowClassName({ row, @@ -1337,6 +1408,17 @@ } else if (p.bsm === '1' && p.section !== '' && p.section !== null && p.state === 0) { this.bsm1 = false } if (p.bsm === '1' && p.inspectionItem === '熔接损耗' && this.sampleList.length > 1 && p.state === 1) { this.bsm2 = true this.bsm1Dia = true if(this.bsm2Val2.length === 0){ this.bsm2Val = (this.sampleList.length - 1) * this.sampleList.length / 2 this.computationalPairing(this.sampleList.length) this.bsm2Val2 = this.HaveJson(this.bsm2Val3) } } else if (p.bsm === '1' && p.inspectionItem === '熔接损耗' && p.state === 1) { this.bsm2 = false } }) if (e.length > 0) { this.sampleList.map(item => { @@ -1489,6 +1571,12 @@ return } } if (this.bsm2) { if (this.bsm2Val2.length === 0) { this.$message.error('特殊项目必须处理') return } } done() }, getTotal(){ @@ -1552,6 +1640,21 @@ arr0.forEach(item=>{ this.total += Number(item.price) }) }, bsm2Up(val){ let list = [] for(let a=1;a < this.bsm2Val3.length + 1;a++){ list.push(a) } let set = new Set() let size1 = set.length while(set.size < val){ set.add(Math.ceil(Math.random() * this.bsm2Val3.length)) } this.bsm2Val2 = [] for(let a of set){ this.bsm2Val2.push(this.HaveJson(this.bsm2Val3[a-1])) } } } } src/components/do/b1-ins-order/equip-config.vue
@@ -14,8 +14,7 @@ </div> <div class="center"> <el-table class="el-table sampleTable" ref="sampleTable" :data="sampleList" height="50%" tooltip-effect="dark" border highlight-current-row @row-click="rowClick" style="margin-top: 10px;" @current-change="selectSample"> border highlight-current-row @row-click="rowClick" @current-change="selectSample"> <!-- <el-table-column type="selection" width="60" :selectable="selectable" v-if="active==1"></el-table-column> --> <el-table-column type="index" label="序号" width="65" align="center"></el-table-column> <el-table-column prop="sample" label="样品名称" align="center" min-width="100"> @@ -55,22 +54,12 @@ </el-select> </template> </el-table-column> <el-table-column prop="joinName" label="配套样品名称" width="140" align="center"> <template slot-scope="scope"> <el-input size="small" type="textarea" :autosize="{ minRows: 1, maxRows: 1}" v-model="scope.row.joinName" :disabled="active!=1"></el-input> </template> <el-table-column prop="num" label="样品数量" align="center" width="90"> </el-table-column> <el-table-column prop="joinModel" label="配套样品型号" width="140" align="center"> <el-table-column label="操作" width="120"> <template slot-scope="scope"> <el-input size="small" type="textarea" :autosize="{ minRows: 1, maxRows: 1}" v-model="scope.row.joinModel" :disabled="active!=1"></el-input> </template> </el-table-column> <el-table-column prop="joinNum" label="配套样品数量" width="140" align="center"> <template slot-scope="scope"> <el-input-number size="small" v-model="scope.row.joinNum" :min="1" :max="100" :precision="0" :controls="false" style="width: 80%;" :disabled="active!=1"></el-input-number> <el-button @click.native.prevent="deleteRow(scope.$index, sampleList)" type="text" size="small">删除</el-button> </template> </el-table-column> </el-table> @@ -98,7 +87,7 @@ </el-table-column> </el-table> </div> <el-dialog title="选择子样品" :visible.sync="selectStandardTree" width="400px"> <el-dialog title="选择子样品" :visible.sync="selectStandardTree" width="400px" @closed="addObj.sampleNum = 1"> <div class="body" style="height: 60vh;overflow-y: auto;user-select: none;" v-if="selectStandardTree"> <el-row style="margin-bottom: 10px;"> <el-col :span="24"> @@ -132,7 +121,8 @@ <el-button type="primary" @click="activeStandardTree">确 定</el-button> </span> </el-dialog> <el-dialog title="检测到特殊项,请作出以下选择" :visible.sync="bsm1Dia" width="500px" :show-close="false" :before-close="beforeClose"> <el-dialog title="检测到特殊项,请作出以下选择" :visible.sync="bsm1Dia" width="500px" :show-close="false" :before-close="beforeClose"> <div class="body" style="max-height: 60vh;"> <el-row v-if="bsm1"> <el-col class="search_thing" :span="22"> @@ -147,7 +137,8 @@ <div class="search_label">要求值:</div> <div class="search_input" v-show="bsm1Val!==null&&bsm1Val!==''"> <el-radio-group v-model="bsm1Val" @input="upBsm1"> <el-radio v-for="(a, ai) in JSON.parse(bsmRow.section)" :key="ai" :label="a">{{JSON.parse(bsmRow.ask)[ai]}}</el-radio> <el-radio v-for="(a, ai) in JSON.parse(bsmRow.section)" :key="ai" :label="a">{{JSON.parse(bsmRow.ask)[ai]}}</el-radio> </el-radio-group> </div> </el-col> @@ -202,11 +193,46 @@ bsm1: false, bsm1Val:null, bsm1Dia:false, list:[] list: [], parentSample: [] } }, mounted() { this.selectStandardTreeList() this.selectStandardMethods() this.$parent.sampleIds.forEach(a => { for (var i = 0; i < this.$parent.sampleList.length; i++) { if (this.$parent.sampleList[i].id == a) { this.sampleList = this.$parent.sampleList[i].childSampleList this.parentSample.push(this.$parent.sampleList[i]) break } } }) }, methods:{ save(){}, selectStandardTreeList() { this.$axios.get(this.$api.standardTree.selectStandardTreeList).then(res => { this.list = res.data this.list.forEach(a => { this.expandedKeys.push(a.label) }) }) }, save() { if(this.sampleList.length === 0){ this.$message.error('缺少配置无法保存') return } this.parentSample.forEach(a=>{ a.childSampleList = this.sampleList }) this.$message.success('已保存') }, deleteRow(index, rows) { this.productList = [] rows.splice(index, 1); }, outConfig(){ this.$parent.equipConfigShow = false }, @@ -214,6 +240,7 @@ this.selectStandardTree = true }, selectSample(val){ if(val === null)return this.sampleIds = [val.id] }, rowClick(row, column, event){ @@ -292,6 +319,11 @@ methodFocus() { this.selectsStandardMethodByFLSSM() }, selectStandardMethods() { this.$axios.get(this.$api.standardTree.selectStandardMethodEnum).then(res => { this.methods = res.data }) }, selectsStandardMethodByFLSSM(){ this.methodLoad = true this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, { @@ -352,7 +384,7 @@ } return ''; }, handleAll(){ handleAll(e) { if (e.length > 0) { this.productList.map(m => { m.state = 1 @@ -429,8 +461,6 @@ this.addObj.sample = trees[3] this.addObj.model = (trees[4] == undefined ? null : trees[4]) this.selectStandardTree = false this.sampleList = [] for (var i = 0; i < this.addObj.sampleNum; i++) { this.sample.joinName = null this.sample.joinModel = null this.sample.joinNum = 1 @@ -440,9 +470,9 @@ this.sample.standardMethodListId = null this.sample.insProduct = [] this.sample.id = this.count this.sample.num = this.addObj.sampleNum this.sampleList.push(this.HaveJson(this.sample)) this.count++ } this.$refs.sampleTable.doLayout() }, searchFilter() { @@ -528,7 +558,7 @@ .center { width: 100%; height: calc(100% - 70px); height: calc(100% - 60px); } @@ -537,6 +567,7 @@ border-color: #dcdfe6; cursor: not-allowed; } .node_i { color: orange; font-size: 18px; src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -308,10 +308,10 @@ <span :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span> </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='样品编号'"> <div style="display: flex;flex-wrap: nowrap;align-items: center;"> <i class="el-icon-caret-left table_caret" @click="caretSample(-1)" v-if="!currentFiberOpticTape&&!currentFiberOptic"></i> <div :style="`font-family:${n.v.ff} !important;`">{{currentSample.sampleCode}}</div> <i class="el-icon-caret-right table_caret" <div style="display: flex;flex-wrap: nowrap;align-items: center;width: 100%" :title="currentSample.sampleCode"> <i class="el-icon-caret-left table_caret" style="width: 16px;" @click="caretSample(-1)" v-if="!currentFiberOpticTape&&!currentFiberOptic"></i> <div :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`">{{currentSample.sampleCode}}</div> <i class="el-icon-caret-right table_caret" style="width: 16px;" v-if="!currentFiberOpticTape&&!currentFiberOptic"@click="caretSample(1)"></i> </div> </template> src/components/tool/onlyoffice.vue
@@ -87,7 +87,7 @@ chat: true, comments: false, help: false, // "hideRightMenu": false,//定义在第一次加载时是显示还是隐藏右侧菜单。 默认值为false "hideRightMenu": false,//定义在第一次加载时是显示还是隐藏右侧菜单。 默认值为false //是否显示插件 plugins: false }, src/components/view/b1-inspect-order-plan.vue
@@ -250,9 +250,9 @@ font: '复核', type: 'text', method: 'handleReview', /* disabFun: (row, index) => { disabFun: (row, index) => { return row.userId == null || row.insState != 3 || row.verifyUser != 1 } */ } }, { id: '', font: '认领', src/components/view/b1-report-preparation.vue
@@ -344,20 +344,22 @@ this.upIndex++ }, async handleWeave(row) { let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS fileName = fileName.replace('/word/','') const userName = JSON.parse(localStorage.getItem("user")).name; //参考vabOnlyOffice组件参数配置 const { href } = this.$router.resolve({ path: `/wordEdit`, query: { url: this.javaApi + "/word/" + row.entrustCode + ".docx", url: this.javaApi + "/word/" + fileName, isEdit: true, fileType: "docx", title: row.entrustCode + ".docx", title: fileName, lang: 'zh-CN', isPrint: true, user_id: 1, user_name: userName, editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + row.entrustCode + ".docx" editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName } }) window.open(href, '_blank');