| | |
| | | getReportModel: "/insOrderPlan/getReportModel", // 切换光纤-光纤带记录模版查询检验内容 |
| | | write: "/insOrderPlan/write", // 填写温度与湿度 |
| | | temCycle: "/insOrderPlan/temCycle", // 温度循环查看列表数据(包括通过样品id,循环次数,温度,循环次数进行筛选) |
| | | jumpTeam: "/insOrderPlan/jumpTeam", // 插队 |
| | | } |
| | | |
| | | const systemLog = { |
| | |
| | | <el-input size="small" v-model="scope.row.sample" clearable :readonly="active>1"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="sampleCode" label="样品编号" min-width="140" align="center"> |
| | | <el-table-column prop="sampleCode" label="样品编号" min-width="100" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-input size="small" v-model="scope.row.sampleCode" clearable placeholder="不填写则系统自动生成" |
| | | :readonly="active>1"></el-input> |
| | |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="modelNum" label="型号参数" width="130" align="center" v-if="!(active>1)"> |
| | | <el-table-column prop="modelNum" label="型号参数" min-width="100" align="center" v-if="!(active>1)"> |
| | | <template slot-scope="scope"> |
| | | <el-input size="small" v-model="scope.row.modelNum" clearable placeholder="非必填" |
| | | @keyup.enter.native="methodChange(scope.row.standardMethodListId, scope.row)" |
| | |
| | | placeholder="检验标准" size="small" :loading="methodLoad" @change="(value)=>methodChange(value, scope.row)" |
| | | @focus="methodFocus" :readonly="active>1" style="width: 100%;" clearable @clear="productList = []"> |
| | | <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="testRequirements" label="试验标准" align="center" min-width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-select v-model="scope.row.testRequirements" :disabled="scope.row.model==null||active>1" |
| | | placeholder="试验标准" size="small" :readonly="active>1" style="width: 100%;" clearable> |
| | | <el-option v-for="item in standard" :key="item.id" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | |
| | | temId: '', |
| | | sonLaboratoryList:[], |
| | | selectiveEcho: [], // 检验下单的时候勾选检验项目,如果使用筛选提交显示检验项目为空 回显列表 |
| | | deaprtEnum:[] |
| | | deaprtEnum:[], |
| | | standard:[] |
| | | } |
| | | }, |
| | | watch: { |
| | |
| | | // this.selectInsOrderTemplate() |
| | | this.getAuthorizedPerson(); |
| | | this.selectEnumByCategoryForUnit() |
| | | this.selectEnumByCategoryForStandard() |
| | | this.selectStandardMethods() |
| | | this.selectEnumByCategoryForOrderType() |
| | | this.selectDepartmentEnum() |
| | |
| | | }else if(this.addObj.orderType&&this.addObj.orderType!='C'&&!this.addObj.departmentLimsId){ |
| | | this.addObj.departmentLims = '检测中心' |
| | | this.addObj.departmentLimsId = this.deaprtEnum.find(m=>m.name=='检测中心').id |
| | | }else{ |
| | | this.$message.error('请选择检验类别') |
| | | return |
| | | } |
| | | // else{ |
| | | // this.$message.error('请选择检验类别') |
| | | // return |
| | | // } |
| | | if (!this.addObj.companyId) { |
| | | this.$message.error('未选择客户单位') |
| | | return |
| | |
| | | }) |
| | | }, |
| | | getProNum() { |
| | | this.sampleSelectionList.forEach((m, i) => { |
| | | Vue.set(this.sampleSelectionList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length) |
| | | }) |
| | | if (this.active != 1) { |
| | | this.sampleList.forEach((m, i) => { |
| | | Vue.set(this.sampleList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length) |
| | | }) |
| | | }else{ |
| | | this.sampleSelectionList.forEach((m, i) => { |
| | | Vue.set(this.sampleSelectionList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length) |
| | | }) |
| | | } |
| | | this.$refs.sampleTable.doLayout() |
| | | }, |
| | | searchFilter() { |
| | |
| | | this.units = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForStandard() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "试验标准" |
| | | }).then(res => { |
| | | this.standard = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForOrderType() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "检验类别" |
| | |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='样品型号'"> |
| | | <div :style="`font-family:${n.v.ff} !important;`" v-if="currentSample.model!==undefined&¤tSample.model!==null">{{currentSample.model}}</div> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='试验标准'"> |
| | | <div :style="`font-family:${n.v.ff} !important;`" v-if="currentSample.testRequirements!==undefined&¤tSample.testRequirements!==null">{{currentSample.testRequirements}}</div> |
| | | </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="caretBushing(-1)"></i> --> |
| | |
| | | } |
| | | } |
| | | }) |
| | | console.log(4444,a.template) |
| | | // 操作赋值--主要赋值单位,试验方法等信息 |
| | | ids.forEach(id => { |
| | | for (let b = 0; b < a.template.length; b++) { |
| | |
| | | .ps.value === '检测方法')) { |
| | | a.template[b].v.v = id.product.methodS |
| | | } |
| | | // if (a.template[b].v.ps != undefined && (a.template[b].v.ps.value === '试验标准')) { |
| | | // a.template[b].v.v = id.product.testRequirements |
| | | // } |
| | | } |
| | | } |
| | | }) |
| | |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | >>>.el-table__row { |
| | | cursor: move; |
| | | position: relative; |
| | | } |
| | | |
| | | .table { |
| | | width: 100%; |
| | |
| | | @row-click="rowClick" :show-summary="data.countFleid!=undefined && data.countFleid.length > 0" |
| | | :summary-method="getSummaries" :row-class-name="tableRowClassName" :row-key="record=>record[rowKey]" |
| | | :current-row-key="data.currentId" :highlight-current-row="data.highlight===undefined||data.highlight" |
| | | :span-method="spanMethod" :key="specialKey"> |
| | | :span-method="spanMethod" :key="specialKey" :class="{sortable:data.sortable}"> |
| | | <el-table-column type="selection" :width="selectionWidth" v-if="data.showSelect" :key="Math.random()"> |
| | | </el-table-column> |
| | | <el-table-column type="index" align="center" label="序号" :width="selectionWidth" v-if="data.isIndex" :key="Math.random()"> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | Page |
| | | } from 'iview'; |
| | | import { |
| | | data |
| | | } from 'jquery'; |
| | | import Sortable from 'sortablejs'; |
| | | export default { |
| | | props: { |
| | | selectionWidth: { |
| | |
| | | 'token': sessionStorage.getItem('token') |
| | | } |
| | | this.specialKey = this.specialKey+Math.random()*100; |
| | | // 是否可拖动列表--此功能暂时未实现 |
| | | if(this.data.sortable){ |
| | | this.$nextTick(() => { |
| | | this.initializeSortable() |
| | | }) |
| | | } |
| | | }, |
| | | methods: { |
| | | initializeSortable() { |
| | | let className =".el-table__body-wrapper > table > tbody"; |
| | | const table= document.querySelector(className); |
| | | const self = this |
| | | Sortable.create(table, { |
| | | animation: 150, //动画时长 |
| | | handle: ".el-table__row", //可拖拽区域class |
| | | onEnd({ newIndex, oldIndex }) { |
| | | console.log(3333,newIndex, oldIndex) |
| | | const movedItem = this.tableData[oldIndex]; |
| | | this.tableData.splice(oldIndex, 1); |
| | | this.tableData.splice(newIndex, 0, movedItem); |
| | | } |
| | | }) |
| | | }, |
| | | getUpdatedOrder() { |
| | | // 根据拖拽后的顺序获取更新的数据 |
| | | // 这里需要实现你的逻辑 |
| | | }, |
| | | updateTableData(newOrder) { |
| | | // 根据新的顺序更新表格数据 |
| | | // 这里需要实现你的逻辑 |
| | | }, |
| | | rowspan(spanArr, position, spanName) { |
| | | this.tableData.forEach((item, index) => { |
| | | if (index === 0) { |
| | |
| | | .view-self-checkbox { |
| | | margin-left: 50px; |
| | | } |
| | | .draggable-row { |
| | | cursor: move; |
| | | position: relative; |
| | | } |
| | | </style> |
| | | <style> |
| | | .ins-order-plan-main .el-form-item__label{ |
| | |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan" |
| | | <!-- <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan" |
| | | :isColumnWidth="true" |
| | | :url="$api.insOrderPlan.selectInsOrderPlanList" :upUrl="$api.user.updateUser" :componentData="componentData" @handleInspection="handleInspection" |
| | | :key="upIndex"/> |
| | | :key="upIndex"/> --> |
| | | <el-table |
| | | :data="tableData" |
| | | ref="table" |
| | | border |
| | | style="width: 100%;" |
| | | height="calc(100% - 80px)" |
| | | :row-class-name="rowClassName" |
| | | v-loading="tableLoading" |
| | | > |
| | | <el-table-column |
| | | prop="entrustCode" |
| | | label="委托编号" |
| | | width="140px" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button @click="selectAllByOne(scope.row)" type="text" size="small">{{ scope.row.entrustCode }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="sample" |
| | | label="样品名称" |
| | | width="100px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="type" |
| | | label="紧急程度" |
| | | width="100px" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-tag :type="typeList.find(m=>m.value==scope.row.type).type" size="small">{{ typeList.find(m=>m.value==scope.row.type).label }}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="insState" |
| | | label="状态" |
| | | width="100px" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-tag :type="typeList.find(m=>m.value==scope.row.insState).type" size="small">{{ typeList.find(m=>m.value==scope.row.insState).label }}</el-tag> |
| | | </template></el-table-column> |
| | | <el-table-column |
| | | prop="userName" |
| | | label="检验人" |
| | | width="140px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="checkName" |
| | | label="复核人" |
| | | width="100px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="appointed" |
| | | label="约定时间" |
| | | width="120px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="sendTime" |
| | | label="下发时间" |
| | | width="160px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="insTime" |
| | | label="检验开始时间" |
| | | width="160px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="verifyTell" |
| | | label="理由" |
| | | width="150px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | fixed="right" |
| | | align="center" label="操作" |
| | | width="250px" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button @click="handleDataLook(scope.row)" type="text" size="small">数据查看</el-button> |
| | | <el-button @click="handleInspection(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5||scope.row.insState == 6||(scope.row.userName&&!scope.row.userName.includes(userName))">检验</el-button> |
| | | <el-button @click="handleConnect(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState == 5 || scope.row.insState == 3||scope.row.insState == 6||(scope.row.userName&&!scope.row.userName.includes(userName))">交接</el-button> |
| | | <el-button @click="handleReview(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState != 3 ||(scope.row.checkName&&!scope.row.checkName.includes(userName))">复核</el-button> |
| | | <el-button @click="claimFun(scope.row)" type="text" size="small" :disabled="scope.row.userName != null || scope.row.checkName!=null">认领</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div style="display: flex;justify-content: flex-end;width: 100%;margin-top: 10px;"> |
| | | <span></span> |
| | | <el-pagination @size-change="refreshTable" @current-change="refreshTable" :current-page="page.current" |
| | | :page-sizes="[10, 20, 30, 50, 100]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-dialog title="提示" :visible.sync="claimVisible" width="400px"> |
| | |
| | | getYearAndMonthAndDays |
| | | } from '../../util/date' |
| | | import Add from '../do/b1-ins-order/add.vue' |
| | | import { CellGroup } from 'iview' |
| | | import Sortable from 'sortablejs'; |
| | | export default { |
| | | components: { |
| | | ValueTable, |
| | |
| | | insState: null, |
| | | userId: null |
| | | }, |
| | | sortable:true, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | |
| | | requiredAdd: [], |
| | | requiredUp: [] |
| | | }, |
| | | userName:JSON.parse(localStorage.getItem("user")).name, |
| | | upIndex: 0, |
| | | planTotal: 0, |
| | | insStateList: [], |
| | |
| | | }, |
| | | loading:false, |
| | | currentTime: null, |
| | | sonLaboratoryList:[] |
| | | sonLaboratoryList:[], |
| | | tableData: [], |
| | | page:{ |
| | | current:1, |
| | | size:20, |
| | | }, |
| | | total:0, |
| | | tableLoading:false, |
| | | jumpTeam:false, |
| | | insResultList:[{ |
| | | value: 0, |
| | | label: '不合格', |
| | | type: 'danger' |
| | | },{ |
| | | value: 1, |
| | | label: '合格', |
| | | type: 'success' |
| | | },{ |
| | | value: '', |
| | | label: '未出结果', |
| | | type: 'info' |
| | | }], |
| | | typeList:[] |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.componentData.entity) |
| | | this.getPower() |
| | | if(this.jumpTeam){ |
| | | this.initializeSortable(); |
| | | } |
| | | }, |
| | | methods: { |
| | | initializeSortable() { |
| | | const tableBody = this.$refs.table.$el.querySelector('.el-table__body-wrapper > table > tbody'); |
| | | |
| | | if (tableBody) { |
| | | Sortable.create(tableBody, { |
| | | handle: '.el-table__row', // 拖动手柄 |
| | | animation: 150, |
| | | onEnd: this.handleSortEnd, |
| | | }); |
| | | } else { |
| | | console.error('Table body not found.'); |
| | | } |
| | | }, |
| | | handleSortEnd(evt) { |
| | | const oldIndex = evt.oldIndex; |
| | | const newIndex = evt.newIndex; |
| | | const movedItem = this.tableData[oldIndex]; |
| | | this.$axios.post(this.$api.insOrderPlan.jumpTeam, |
| | | { |
| | | id: movedItem.id, |
| | | sort: newIndex+1, |
| | | ...this.page |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | } |
| | | ).then(res => {}) |
| | | }, |
| | | rowClassName({ row, rowIndex }) { |
| | | return 'draggable-row'; |
| | | }, |
| | | // 数据查看 |
| | | handleDataLook(row) { |
| | | this.componentDataDataLook.entity.id = row.id |
| | |
| | | let connect = false |
| | | let review = false |
| | | let claim = false |
| | | let jumpTeam = false |
| | | for (var i = 0; i < power.length; i++) { |
| | | if (power[i].menuMethod == 'doInsOrder') { |
| | | inspection = true |
| | |
| | | } |
| | | if (power[i].menuMethod == 'claimInsOrderPlan') { |
| | | claim = true |
| | | } |
| | | if (power[i].menuMethod == 'jumpTeam') { |
| | | jumpTeam = true |
| | | } |
| | | } |
| | | if (!claim) { |
| | |
| | | if (!inspection) { |
| | | this.componentData.do.splice(0, 1) |
| | | } |
| | | this.jumpTeam = jumpTeam |
| | | }, |
| | | changeCheckBox(val) { |
| | | this.componentData.entity.userId = val?0:null |
| | |
| | | this.loading = false; |
| | | }) |
| | | }, |
| | | refreshTable(e) { |
| | | this.$refs.insOrderPlan.selectList(e) |
| | | refreshTable() { |
| | | this.tableLoading = true |
| | | this.$axios.post(this.$api.insOrderPlan.selectInsOrderPlanList,{ |
| | | entity:this.componentData.entity, |
| | | page:this.page |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then((res) => { |
| | | this.tableLoading = false |
| | | this.total = res.data.body.total |
| | | this.tableData = res.data.body.records |
| | | }) |
| | | }, |
| | | changeRowClass({ |
| | | row, |
| | |
| | | } |
| | | }) |
| | | this.componentData.tagField.type.select = data |
| | | this.typeList = data |
| | | }) |
| | | }, |
| | | getInsStateDicts() { |
| | |
| | | effect="dark" |
| | | placement="top" |
| | | v-for="(n,j) in m.samples" |
| | | :key="j" :disabled="`${n.sample}${n.model}`.length<10"> |
| | | :key="j" :disabled="`${n.sample}${n.model}`.length<5"> |
| | | <div slot="content"><span>{{ n.sample }}</span> |
| | | <span> ({{ n.model }}) [{{ n.sampleCode }}]</span></div> |
| | | <li class="green" |
| | |
| | | <el-button type="primary" @click="confirmShelves" :loading="upLoadShelves">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <input type="password" id="ScanCodeInfo" v-model="codeInfo" @keyup.enter="keyup" style="opacity: 0;height: 0px;margin: 0px;padding: 0px;position: absolute;top: 0;"></input> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | shelfId: null |
| | | }, |
| | | warehouse: [], |
| | | startTime: null, |
| | | shelf: [], |
| | | storageList:[], |
| | | storageVisible: false, |
| | |
| | | tableLoading:false, |
| | | sampleCode:'', |
| | | currentId:null, |
| | | searchSampleCode:'' |
| | | searchSampleCode:'', |
| | | codeInfo:null, |
| | | } |
| | | }, |
| | | watch:{ |
| | | storageVisible(newVal){ |
| | | if(newVal){ |
| | | // this.$message.success('扫码:打开') |
| | | let input = document.getElementById('ScanCodeInfo'); |
| | | input.focus(); |
| | | this.startTime = setInterval(()=>{ |
| | | input.focus() |
| | | },1000) |
| | | }else{ |
| | | // this.$message.warning('扫码:关闭') |
| | | clearInterval(this.startTime) |
| | | } |
| | | }, |
| | | exportVisible(newVal){ |
| | | if(newVal){ |
| | | // this.$message.success('扫码:打开') |
| | | let input = document.getElementById('ScanCodeInfo'); |
| | | input.focus(); |
| | | this.startTime = setInterval(()=>{ |
| | | input.focus() |
| | | },1000) |
| | | }else{ |
| | | // this.$message.warning('扫码:关闭') |
| | | clearInterval(this.startTime) |
| | | } |
| | | }, |
| | | }, |
| | | mounted() { |
| | | this.selectList() |
| | | }, |
| | | methods: { |
| | | keyup(e){ |
| | | var code = '' |
| | | var str = {} |
| | | var that = this; |
| | | console.log(3333,this.codeInfo) |
| | | try{ |
| | | code = JSON.parse(this.codeInfo) |
| | | if(code.moNo2==null||code.moNo2==undefined||code.moNo2==''){ |
| | | this.$message.error('该二维码有误') |
| | | }else{ |
| | | str = { |
| | | moNo2: code.moNo2, |
| | | } |
| | | // if(this.storageVisible){ |
| | | // }else if(this.exportVisible){} |
| | | this.sampleCode = code.moNo2 |
| | | } |
| | | }catch(e){ |
| | | this.$message.error('该二维码有误') |
| | | } |
| | | this.codeInfo = null |
| | | }, |
| | | selectList() { |
| | | this.$axios.get(this.$api.warehouse.selectWarehouse).then(res => { |
| | | this.warehouse = res.data |
| | |
| | | Vue.prototype.PROJECT = '检测中心' |
| | | // Vue.prototype.PROJECT = '装备电缆' |
| | | //本地 |
| | | 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'; |
| | | // Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; |
| | | // const javaApi = 'http://127.0.0.1:8001'; |
| | | const javaApi = 'http://192.168.212.249:8001'; |
| | | |
| | | // //通信测试库 |
| | | // Vue.prototype.LOCATIONVUE = "http://10.1.13.77:8080"; |
| | |
| | | |
| | | //云 |
| | | // Vue.prototype.LOCATIONVUE = "http://114.132.189.42:8080"; |
| | | //const javaApi = 'http://114.132.189.42:1234'; |
| | | // const javaApi = 'http://114.132.189.42:1234'; |
| | | |
| | | // //检测中心正式库 |
| | | // Vue.prototype.LOCATIONVUE = "http://10.1.200.86:8080"; |