| | |
| | | writeReport: "/insReport/writeReport", //报告提交 |
| | | examineReport: "/insReport/examineReport", //报告审核 |
| | | ratifyReport: "/insReport/ratifyReport", //报告批准 |
| | | downAll: "/insReport/downAll", //报告批量下载 |
| | | upAll: "/insReport/upAll", //报告批量上传 |
| | | } |
| | | |
| | | const warehouse = { |
| | |
| | | </style> |
| | | |
| | | <template> |
| | | <div class="ins_order_add"> |
| | | <div class="ins_order_add" style=" display: block; "> |
| | | <div v-show="!configShow&&!equipConfigShow&&!cableConfigShow"> |
| | | <el-row class="title"> |
| | | <el-col :span="6" style="padding-left: 20px;text-align: left;">委托单信息 总价:<span |
| | |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div style="height: (100vh - 200px);"> |
| | | <div class="search" v-show="!configShow&&!equipConfigShow&&!cableConfigShow"> |
| | | <div v-show="!configShow&&!equipConfigShow&&!cableConfigShow" class="container"> |
| | | <div class="search"> |
| | | <el-row> |
| | | <el-col class="search_thing" :span="6"> |
| | | <div class="search_label">委托编号:</div> |
| | |
| | | </el-col> --> |
| | | </el-row> |
| | | </div> |
| | | <div v-show="!configShow&&!equipConfigShow&&!cableConfigShow"> |
| | | <div style="height: auto;"> |
| | | <div class="search" v-if="active==1" style="display: flex;background: transparent;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">样品型号:</div> |
| | |
| | | @selection-change="selectProduct" style="margin-bottom: 10px;" @select="upProductSelect" :row-key="rowKey" |
| | | :row-class-name="tableRowClassName" v-loading="getProductLoad" @select-all="handleAll"> |
| | | <el-table-column type="selection" width="65" :selectable="selectable" v-if="active==1" :reserve-selection="true"></el-table-column> |
| | | <el-table-column prop="inspectionItemClass" v-if="PROJECT === '装备电缆'" label="检验项分类" min-width="140" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="inspectionItemClassEn" v-if="PROJECT === '装备电缆'" label="检验项分类(EN)" min-width="140" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip> |
| | | <template slot="header" slot-scope="scope"> |
| | | <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> |
| | |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="inspectionItemClass" v-if="PROJECT === '装备电缆'" label="检验项分类" min-width="140" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="inspectionItemClassEn" v-if="PROJECT === '装备电缆'" label="检验项分类(EN)" min-width="140" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="sonLaboratory" label="子实验室" min-width="130" show-overflow-tooltip :filters="filters" |
| | | :filter-method="filterHandler"></el-table-column> |
| | | <el-table-column prop="methodS" label="试验方法" min-width="120" show-overflow-tooltip> |
| | | <template slot="header" slot-scope="scope"> |
| | | <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> |
| | | <span>试验方法</span> |
| | | <el-input |
| | | v-if="active==1" |
| | | v-model="methodS" |
| | | @input="searchFilterList" |
| | | size="mini" |
| | | placeholder="请输入"/> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="计量单位" width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="price" label="单价" width="100" show-overflow-tooltip></el-table-column> |
| | | <!-- <el-table-column prop="manDay" label="预计时间(天)" width="120" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="manHour" label="工时系数" width="100" show-overflow-tooltip></el-table-column> --> |
| | | <!-- <el-table-column prop="deviceGroup" label="设备组" width="120" show-overflow-tooltip></el-table-column> --> |
| | | <el-table-column prop="section" label="区间" min-width="120" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="ask" label="要求值" min-width="220px" v-if="isAskOnlyRead"> |
| | | <template slot-scope="scope"> |
| | | <el-input size="small" placeholder="要求值" v-model="scope.row.ask" clearable type="textarea" |
| | |
| | | </span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="methodS" label="试验方法" min-width="120" show-overflow-tooltip> |
| | | <template slot="header" slot-scope="scope"> |
| | | <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> |
| | | <span>试验方法</span> |
| | | <el-input |
| | | v-if="active==1" |
| | | v-model="methodS" |
| | | @input="searchFilterList" |
| | | size="mini" |
| | | placeholder="请输入"/> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="计量单位" width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="price" label="单价" width="100" show-overflow-tooltip></el-table-column> |
| | | <!-- <el-table-column prop="manDay" label="预计时间(天)" width="120" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="manHour" label="工时系数" width="100" show-overflow-tooltip></el-table-column> --> |
| | | <!-- <el-table-column prop="deviceGroup" label="设备组" width="120" show-overflow-tooltip></el-table-column> --> |
| | | <el-table-column prop="section" label="区间" min-width="120" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="sonLaboratory" label="子实验室" min-width="130" show-overflow-tooltip :filters="filters" |
| | | :filter-method="filterHandler"></el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | |
| | | <el-button type="primary" @click="submit()">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="数据采集" :visible.sync="dataGetDia" min-width="400px" :close-on-click-modal="false" :close-on-press-escape="false" :before-close="beforeDataGetDia"> |
| | | <div> |
| | | <table border="1" cellpadding="10" class="thermal-table"> |
| | | <tr> |
| | | <td style="width: 120px;">检验项</td> |
| | | <td style="width: 120px;">检验子项</td> |
| | | <td>数采数据</td> |
| | | </tr> |
| | | <template v-for="(item,index) in getData"> |
| | | <tr> |
| | | <td :rowspan="item.child.length">{{item.faName}}</td> |
| | | <td>{{ item.child[0].name }}</td> |
| | | <td> |
| | | <el-checkbox-group |
| | | v-model="item.child[0].value" |
| | | :min="0" |
| | | :max="item.child[0].maxNum"> |
| | | <el-checkbox v-for="(n,j) in item.child[0].arr" :label="n" :key="j+'ppppppppp'">{{n}}</el-checkbox> |
| | | </el-checkbox-group> |
| | | </td> |
| | | </tr> |
| | | <tr v-for="(m,i) in item.child" :key="i+'bbbbbbbbbbbbbb'" v-show="i>0"> |
| | | <td>{{ m.name }}</td> |
| | | <td> |
| | | <el-checkbox-group |
| | | v-model="m.value" |
| | | :min="0" |
| | | :max="m.maxNum"> |
| | | <el-checkbox v-for="(n,j) in m.arr" :label="n" :key="j+'bbbbbbbbbbbbbb'">{{n}}</el-checkbox> |
| | | </el-checkbox-group> |
| | | </td> |
| | | </tr> |
| | | </template> |
| | | </table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="beforeDataGetDia()">取 消</el-button> |
| | | <el-button type="primary" @click="submitDataGet()">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | dataGetDia:false, |
| | | wareTableDataLoading:false, |
| | | fileAdd:false, |
| | | sampleVisible: false, |
| | |
| | | }, |
| | | thermalCyclingLoading:false, |
| | | temDataAcquisition:false, |
| | | getData:[ |
| | | { |
| | | faName:'波长附加衰减', |
| | | child:[ |
| | | { |
| | | name:'1285nm~1330nm', |
| | | arr:[12,13], |
| | | maxNum:1, |
| | | value:[] |
| | | }, |
| | | { |
| | | name:'1525nm~1575nm', |
| | | arr:[12,13], |
| | | maxNum:1, |
| | | value:[] |
| | | }, |
| | | ] |
| | | }, |
| | | { |
| | | faName:'截至波长', |
| | | child:[ |
| | | { |
| | | name:'截至波长', |
| | | arr:[12,13,14,15], |
| | | maxNum:3, |
| | | value:[] |
| | | } |
| | | ] |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | computed: { |
| | |
| | | }) |
| | | } |
| | | }, |
| | | beforeDataGetDia(done){ |
| | | this.$confirm('是否取消数据采集?', "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | if(done){ |
| | | done() |
| | | }else{ |
| | | this.dataGetDia = false |
| | | } |
| | | }).catch(() => {}) |
| | | }, |
| | | submitDataGet(){}, |
| | | // 多线程 |
| | | startWorker() { |
| | | if (this.worker) { |
| | |
| | | border: none !important; |
| | | } |
| | | .scor{ |
| | | width: 3px; |
| | | height: 3px; |
| | | width: 0.01cm; |
| | | height: 0.01cm; |
| | | border-radius: 1px; |
| | | border: 1px solid #000; |
| | | display: inline-block; |
| | |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <div class="el-dialog__body" style="display:none;overflow-y: auto;margin-top: 0;position: fixed;top: 999px;z-index: 99999;"> |
| | | <div class="el-dialog__body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 999px;z-index: 99999;display: none;"> |
| | | <div id="printMOrder"> |
| | | <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i" style="font-size: 8px !important;page-break-after: always;color: #000;box-shadow: none;" > |
| | | <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i" style="font-size: 0.21cm !important;page-break-after: always;color: #000;box-shadow: none;" > |
| | | <div style="display: flex;"> |
| | | <div> |
| | | <el-col :span="10" :offset="2"> |
| | | <vueQr :text="JSON.stringify(item.sampleCode)" :size="78" :margin="2"></vueQr> |
| | | </el-col> |
| | | </div> |
| | | <div style="margin-left: 12px;line-height: 9px;"> |
| | | <div style="margin-left: 0.32cm;line-height: 0.25cm;"> |
| | | <el-row> |
| | | <el-col style="font-size: 8px;"><span>样品编号: </span>{{ item.sampleCode }}</el-col> |
| | | <el-col style="font-size: 0.21cm;"><span>样品编号: </span>{{ item.sampleCode }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 8px;"> |
| | | <el-row style="font-size: 0.21cm;"> |
| | | <el-col><span>委托单号: </span>{{ item.code }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 8px;"> |
| | | <el-row style="font-size: 0.21cm;"> |
| | | <el-col><span>规格型号: </span>{{ item.model }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 8px;"> |
| | | <el-row style="font-size: 0.21cm;"> |
| | | <el-col ><span>样品名称: </span>{{ item.sampleName }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 8px;width: 140px;"> |
| | | <el-row style="font-size: 0.21cm;width: 4.77cm;"> |
| | | <el-col class="ellipsis-multiline"><span>检测项目: </span>{{ item.item }}</el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 3px;font-size: 8px;"> |
| | | <el-row style="margin-top: 0.01cm;font-size: 0.21cm;"> |
| | | <el-col style="display: flex;align-items: center;"><span>样品状态: |
| | | </span> |
| | | <span style="white-space: nowrap;"><span v-if="item.insState==0">√</span><span class="scor" v-if="item.insState!=0"></span>待检 |
| | |
| | | |
| | | .btns { |
| | | position: absolute; |
| | | right: 100px; |
| | | top: 17px; |
| | | right: 40px; |
| | | top: 50%; |
| | | transform: translate(0, -50%); |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .fullscreen { |
| | |
| | | <el-col :span="12" style="padding-left: 20px;text-align: left;">报告编制</el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="search"> |
| | | <div class="search" style="position: relative;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">报告编号:</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable |
| | |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">重 置</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button> |
| | | </div> |
| | | <div class="btns"> |
| | | <el-button size="small" type="primary" @click="handleDowns" :loading="outLoading" style="margin-right: 16px;">批量下载</el-button> |
| | | <!-- <el-upload |
| | | class="upload-demo" |
| | | :action="action" |
| | | :headers="headers" |
| | | :show-file-list="false" |
| | | accept=".zip" |
| | | :limit="1" |
| | | :before-upload="beforeUpload" |
| | | :on-success="handleSuccess" |
| | | ref="upload" |
| | | :on-error="onError"> |
| | | <el-button size="small" type="primary">批量上传</el-button> |
| | | </el-upload> --> |
| | | </div> |
| | | </div> |
| | | <!-- <input id="input" type="file" accept=".doc,.docx"></input> --> |
| | |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | showSelect: true, |
| | | select: true, |
| | | selectMethod: 'handleChange', |
| | | do: [ |
| | | { |
| | | id: 'handleWeave', |
| | |
| | | value: ``, |
| | | reason: '', |
| | | currentInfo: null, |
| | | option:null |
| | | option:null, |
| | | mutiList:[], |
| | | outLoading:false |
| | | } |
| | | }, |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'token': sessionStorage.getItem('token') |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi + this.$api.insReport.upAll |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | // } |
| | | }, |
| | | methods: { |
| | | handleChange(arr){ |
| | | this.mutiList = arr |
| | | }, |
| | | handleDowns(){ |
| | | if(this.mutiList.length==0){ |
| | | this.$message.error('请选择报告') |
| | | return |
| | | } |
| | | let str = this.mutiList.map(m=>m.id).join(',') |
| | | this.outLoading = true |
| | | this.$axios.get(this.$api.insReport.downAll+'?ids='+str).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | // const blob = new Blob([res],{ type: 'application/octet-stream' }); |
| | | // const url = URL.createObjectURL(blob); |
| | | // const link = document.createElement('a'); |
| | | // link.href = url; |
| | | // link.download = '报告.zip'; |
| | | // link.click(); |
| | | const link = document.createElement('a'); |
| | | link.href = this.javaApi + res.message; |
| | | link.target = '_blank'; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | }) |
| | | }, |
| | | beforeUpload(file){ |
| | | const isZip = file.type === 'application/zip' || file.name.endsWith('.zip'); |
| | | if (!isZip) { |
| | | this.$message.error('上传文件只能是 ZIP 格式!'); |
| | | } |
| | | return isZip; |
| | | }, |
| | | handleSuccess(response,){ |
| | | if (response.code == 200) { |
| | | this.$message.success('导入成功') |
| | | } |
| | | }, |
| | | onError(err, file, fileList,type) { |
| | | this.$message.error('上传失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | refreshTable(e) { |
| | | this.$refs['ValueTable'].selectList(e) |
| | | }, |