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/a5-capacity-scope.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/a5-laboratory-qualifications.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b1-inspect-order-plan.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b1-inspection-order.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b1-report-preparation.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b2-standard.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/index-index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/notice-detail.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/assets/api/controller.js
@@ -123,6 +123,7 @@ selectEquipmentOverview: "/deviceScope/selectEquipmentOverview", //获取设备总览 uploadFile: "/deviceScope/uploadFile", //上传图片 selectDevicePrincipal: "/user/getDeviceManager", //获取设备负责人 selectDeviceByCode: "/deviceScope/selectDeviceByCode", //通过设备编号获取设备列表 } const insOrder = { @@ -197,6 +198,7 @@ upReportUrl: "/insReport/upReportUrl", //报告还原 writeReport: "/insReport/writeReport", //报告提交 examineReport: "/insReport/examineReport", //报告审核 ratifyReport: "/insReport/ratifyReport", //报告批准 } const warehouse = { src/components/do/b1-ins-order/add.vue
@@ -84,6 +84,7 @@ .el-select .is-disabled{ background: transparent !important; } .el-select .is-disabled .el-input__inner{ background: transparent !important; } @@ -108,7 +109,8 @@ </el-button> <el-button size="medium" type="primary" @click="save" :loading="saveLoad" v-show="active==1">提交</el-button> <!-- 审核 --> <el-button size="medium" @click="upInsOrderOfState(2)" :loading="saveLoad" v-show="active==3">不通过</el-button> <el-button size="medium" @click="upInsOrderOfState(2)" :loading="saveLoad" v-show="active==3" :disabled="saveLoad">不通过</el-button> <el-button size="medium" type="primary" @click="upInsOrderOfState(1)" :loading="saveLoad" v-show="active==3">通过</el-button> <el-button size="medium" @click="$parent.playOrder(0)"> @@ -126,18 +128,32 @@ </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label"><span class="required-span">* </span>下单客户:</div> <div class="search_label"><span class="required-span">* </span>检验类别:</div> <div class="search_input"> <el-select size="small" style="width: 100%;" clearable v-model="addObj.orderType" :disabled="active>1"> <el-option v-for="(a, ai) in orderType" :key="ai" :value="a.value" :label="a.label"></el-option> </el-select> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label"><span class="required-span">* </span>委托客户:</div> <div class="search_input"> <el-input readonly size="small" v-model="addObj.custom"> <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectUserDia = true" :disabled="active>1"></el-button></template> <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectUserDia = true" :disabled="active>1"></el-button></template> </el-input> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label"><span class="required-span">* </span>下单单位:</div> <div class="search_label"><span class="required-span">* </span>委托单位:</div> <div class="search_input"> <el-input size="small" placeholder="选择下单客户" clearable disabled v-model="addObj.company"></el-input> <el-input size="small" placeholder="选择委托客户" clearable disabled v-model="addObj.company"></el-input> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label"><span class="required-span">* </span>联系方式:</div> <div class="search_input"> <el-input size="small" placeholder="选择委托客户" clearable disabled v-model="addObj.phone"></el-input> </div> </el-col> <el-col class="search_thing" :span="6"> @@ -152,15 +168,9 @@ <div class="search_label"><span class="required-span">* </span>样品名称:</div> <div class="search_input"> <el-input readonly size="small" v-model="addObj.sample"> <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectStandardTree = true" :disabled="active>1"></el-button></template> <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectStandardTree = true" :disabled="active>1"></el-button></template> </el-input> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label"><span class="required-span">* </span>实验室:</div> <div class="search_input"> <el-input size="small" clearable disabled v-model="addObj.laboratory"></el-input> </div> </el-col> <el-col class="search_thing" :span="6"> @@ -173,30 +183,63 @@ <div class="search_label"><span class="required-span">* </span>样品数量:</div> <div class="search_input"> <el-input-number size="small" v-model="addObj.sampleNum" :min="1" :max="100" :precision="0" style="width: 65%;" @change="addStandardTree" :readonly="active>1"></el-input-number> style="width: 65%;" @change="addStandardTree" :disabled="active>1"></el-input-number> </div> </el-col> <el-col class="search_thing" :span="6"> <!-- <el-col class="search_thing" :span="6"> <div class="search_label">样品单位:</div> <div class="search_input"> <el-select v-model="addObj.unit" clearable size="small" style="width: 100%;" :disabled="active>1"> <el-option v-for="(a, i) in units" :key="i" :label="a.label" :value="a.value"></el-option> </el-select> </div> </el-col> --> <el-col class="search_thing" :span="6"> <div class="search_label"><span class="required-span">* </span>来样方式:</div> <div class="search_input"> <el-input size="small" clearable v-model="addObj.formType" :readonly="active>1"></el-input> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label">OTC订单号:</div> <div class="search_label">报告发送方式:</div> <div class="search_input"> <el-input size="small" placeholder="请输入" clearable v-model="addObj.otcCode" :readonly="active>1"></el-input> <el-radio-group v-model="addObj.send"> <el-radio :label="1">自取</el-radio> <el-radio :label="0">其他</el-radio> </el-radio-group> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label">样品处理方式:</div> <div class="search_input"> <el-radio-group v-model="addObj.processing"> <el-radio :label="0">委托单位取回</el-radio> <el-radio :label="1">实验室处理</el-radio> </el-radio-group> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label">是否留样:</div> <div class="search_input"> <el-radio-group v-model="addObj.isLeave"> <el-radio :label="0">不留样</el-radio> <el-radio :label="1">留样</el-radio> </el-radio-group> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label" style="width: 175px;">是否涉及配套样品:</div> <div class="search_input" style="width: calc(100% - 175px);"> <el-radio-group v-model="addObj.mating" @change="$refs.sampleTable.doLayout()" :disabled="active>1"> <el-radio-group v-model="addObj.mating" @change="$refs.sampleTable.doLayout()"> <el-radio :label="1">是</el-radio> <el-radio :label="0">否</el-radio> </el-radio-group> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label">OTC订单号:</div> <div class="search_input"> <el-input size="small" placeholder="请输入" clearable v-model="addObj.otcCode" :readonly="active>1"></el-input> </div> </el-col> <el-col class="search_thing" :span="6" style="align-items: flex-start;margin: 8px 0;"> @@ -209,12 +252,6 @@ </el-row> </div> <div> <!-- <div style="text-align: right;line-height: 45px;" v-if="active<2"> <el-button type="primary" size="small" @click="addSampleDia = true">添加样品</el-button> <el-button size="small" @click="delSample"> <span style="color: #3A7BFA;">删除样品</span> </el-button> </div> --> <el-table class="el-table sampleTable" ref="sampleTable" :data="sampleList" height="250px" tooltip-effect="dark" border @selection-change="selectSample" highlight-current-row @row-click="rowClick" style="margin-top: 10px;" > <el-table-column type="selection" width="60" :selectable="selectable" v-if="active==1"></el-table-column> @@ -226,15 +263,10 @@ </el-table-column> <el-table-column prop="sampleCode" label="样品编号" min-width="140" align="center"> <template slot-scope="scope"> <el-input size="small" v-model="scope.row.sampleCode" clearable placeholder="不填写则系统自动生成" :readonly="active>1"></el-input> <el-input size="small" v-model="scope.row.sampleCode" clearable placeholder="不填写则系统自动生成" :readonly="active>1"></el-input> </template> </el-table-column> <!-- <el-table-column prop="factory" label="工厂" align="center" min-width="100"> </el-table-column> <el-table-column prop="laboratory" label="实验室" align="center" min-width="100"> </el-table-column> <el-table-column prop="sampleType" label="样品类型" align="center" min-width="100"> </el-table-column> --> <el-table-column prop="model" label="样品型号" align="center" min-width="100"> <template slot-scope="scope"> <el-select v-model="scope.row.model" filterable allow-create default-first-option placeholder="样品型号" @@ -246,8 +278,9 @@ </el-table-column> <el-table-column prop="standardMethodListId" label="检验标准" align="center" min-width="100"> <template slot-scope="scope"> <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model==null||active>1" placeholder="检验标准" size="small" :loading="methodLoad" @change="(value)=>methodChange(value, scope.row)" @focus="methodFocus" :readonly="active>1"> <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model==null||active>1" placeholder="检验标准" size="small" :loading="methodLoad" @change="(value)=>methodChange(value, scope.row)" @focus="methodFocus" :readonly="active>1"> <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id"> </el-option> </el-select> @@ -260,14 +293,14 @@ </el-select> </template> </el-table-column> <el-table-column prop="isLeave" label="是否留样" align="center" min-width="100"> <!-- <el-table-column prop="isLeave" label="是否留样" align="center" min-width="100"> <template slot-scope="scope"> <el-select v-model="scope.row.isLeave" size="small" :disabled="active>1"> <el-option label="留样" :value="1"></el-option> <el-option label="不留样" :value="0"></el-option> </el-select> </template> </el-table-column> </el-table-column> --> <el-table-column prop="joinName" label="配套样品名称" width="140" align="center" v-if="addObj.mating==1"> <template slot-scope="scope"> <el-input size="small" type="textarea" :autosize="{ minRows: 1, maxRows: 1}" @@ -286,12 +319,6 @@ :controls="false" style="width: 80%;"></el-input-number> </template> </el-table-column> <!-- <el-table-column label="操作" width="65" align="center"> <template slot-scope="scope"> {{scope.index}} <el-button type="text" size="small" @click="delSampleAndProduct" :disabled="active!=1">删除</el-button> </template> </el-table-column> --> </el-table> <el-table class="el-table" ref="productTable" :data="productList" height="380px" tooltip-effect="dark" border @selection-change="selectProduct" style="margin-bottom: 10px;" @select="upProductSelect" @@ -300,7 +327,8 @@ <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip></el-table-column> <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140" show-overflow-tooltip></el-table-column> <el-table-column prop="sonLaboratory" label="子实验室" width="130" show-overflow-tooltip></el-table-column> <el-table-column prop="sonLaboratory" label="子实验室" 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> </el-table-column> <el-table-column prop="unit" label="计量单位" width="100" show-overflow-tooltip></el-table-column> @@ -312,7 +340,7 @@ <el-table-column prop="ask" label="要求值" min-width="220px"> <template slot-scope="scope"> <el-input size="small" placeholder="要求值" v-model="scope.row.ask" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3}" @change="e=>requestChange(e,scope.row)"></el-input> :autosize="{ minRows: 1, maxRows: 3}" @change="e=>requestChange(e,scope.row)" :readonly="active>1"></el-input> </template> </el-table-column> </el-table> @@ -519,7 +547,13 @@ sampleNum: 1, unit: null, model: null, method: null method: null, phone: null, processing: 1, isLeave: 0, orderType: null, send: 1, formType: '送检' }, sample: { sampleCode: null, @@ -590,7 +624,9 @@ methodLoad: false, noDialogVisible:false, tell:'', noLoading:false noLoading: false, orderType: [], filters: [] } }, watch: { @@ -607,6 +643,8 @@ this.getAuthorizedPerson(); this.selectEnumByCategoryForUnit() this.selectStandardMethods() this.selectEnumByCategoryForOrderType() this.selectEnumByCategoryForSonLaboratory() if (this.active != 1) { // 查看/审核流程 // 请求接口,回显数据 @@ -658,6 +696,7 @@ this.addObj.company = selects.company this.addObj.custom = selects.name this.addObj.code = selects.code this.addObj.phone = selects.phone this.selectUserDia = false }, save() { @@ -667,6 +706,10 @@ } if (!this.addObj.type) { this.$message.error('未选择紧急程度') } else if (!this.addObj.formType) { this.$message.error('请输入来样方式') } else if (!this.addObj.orderType) { this.$message.error('请选择检验类别') } else if (this.sampleList.length < 1) { this.$message.error('请添加一个样品') } else if (!this.sampleList.every(m => m.sample)) { @@ -720,13 +763,15 @@ // } else { // this.$parent.playOrder(0) // } this.issuedDialogVisible = true; this.$axios.post(this.$api.insOrder.selectOrderManDay, { id: this.currentId }).then(ress => { this.distributeData.orderId = this.currentId this.distributeData.appointed = ress.data }) setTimeout(()=>{ this.issuedDialogVisible = true; },1000) }) }else{ // 不通过 @@ -770,6 +815,7 @@ this.addObj.company = selects.company this.addObj.custom = selects.name this.addObj.code = selects.code this.addObj.phone = selects.phone }) }, searchFilter() { @@ -1059,6 +1105,16 @@ this.units = res.data }) }, selectEnumByCategoryForOrderType() { this.$axios.post(this.$api.enums.selectEnumByCategory, { category: "检验类别" }).then(res => { this.orderType = res.data if(res.data.length > 0){ this.addObj.orderType = res.data[0].value } }) }, methodChange(val, row) { this.getProductLoad = true this.$axios.post(this.$api.standardTree.selectStandardProductList, { @@ -1070,7 +1126,7 @@ } }).then(res => { res.data.forEach(a => { a.state = 1 a.state = 0 }) row.insProduct = this.HaveJson(res.data) this.getProductLoad = false @@ -1181,6 +1237,23 @@ this.issuedDialogVisible = false; this.$parent.playOrder(0) }) }, selectEnumByCategoryForSonLaboratory() { this.$axios.post(this.$api.enums.selectEnumByCategory, { category: "子实验室" }).then(res => { this.factory = [] res.data.forEach(a=>{ this.filters.push({ text: a.label, value: a.value }) }) }) }, filterHandler(value, row, column) { const property = column['property']; return row[property] === value; } } } src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -138,6 +138,12 @@ color: #3A7BFA; background-color: #fff; } .inspection .center-box .el-input__inner{ font-size: 12px; padding: 0 6px; text-align: center; } </style> <template> <div v-loading="loading" class="inspection"> @@ -193,9 +199,9 @@ :rowspan="n.v.mc&&n.v.mc.rs?n.v.mc.rs:1" :style="`background:${n.v.bg};color:${n.v.fc};font-size:${n.v.fs}px;width:${item.style.columnlen[n.c]}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`"> <div class="content" :class="`content-h-${n.v.ht} content-v-${n.v.vt}`"> <template v-if="n.v.ps!=undefined && n.v.ps.value==='检验值'"> <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 != '')||state>1" :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}`)"> <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> @@ -214,9 +220,9 @@ <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> </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='设备编码'"> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='设备编码' && state==1"> <el-select v-model="n.v.v" placeholder="设备" @visible-change="e=>getEquipOptions(e,n.i)" :disabled="state>1"> remote @change="(val)=>changeEquip(val, n)"> <el-option v-for="item in equipOptions" :key="item.value" :label="item.value" :value="item.value"> </el-option> </el-select> @@ -261,12 +267,12 @@ <ValueTable class="value-table" ref="insOrderPlan" :url="$api.insOrderPlan.selectInsOrderPlanList" :componentData="componentData" :key="upIndex" /> </el-drawer> <el-dialog title="检验复核" :visible.sync="reviewDia" width="400px"> <div class="body" style="display: flex;" v-if="reviewDia"> <div class="search_label" style="width: 120px;"><span class="required-span">* </span>不通过原因:</div> <div class="search_input"> <el-dialog title="检验复核" :visible.sync="reviewDia" width="500px"> <div class="body" style="display: flex;padding: 10px;" v-if="reviewDia"> <div class="search_label" style="width: 150px;"><span class="required-span">* </span>不通过的理由:</div> <div class="search_input" style="width: 100%;"> <el-input size="small" clearable v-model="noReason" type="textarea" :autosize="{ minRows: 3, maxRows: 5}"></el-input> :autosize="{ minRows: 4}"></el-input> </div> </div> <span slot="footer" class="dialog-footer"> @@ -375,6 +381,7 @@ comValue: [], resValue: null, equipValue: [], equipName: [], insResult: null } }) @@ -396,6 +403,7 @@ comValue: [], resValue: null, equipValue: [], equipName: [], insResult: null } }) @@ -616,6 +624,10 @@ b.v.v = '' this.param[b.i].equipValue.push(b) } if (b.v.ps != undefined && b.v.ps.value === '设备名称') { b.v.v = '' this.param[b.i].equipName.push(b) } if (b.v.ps != undefined && b.v.ps.value === '最终值') { b.v.v = '' if (b.i === undefined) { @@ -674,6 +686,12 @@ let equipValue = JSON.parse(a.insProductResult.equipValue) for (var i = 0; i < equipValue.length; i++) { this.param[a.id].equipValue[i].v.v = equipValue[i].v } } catch (e) {} try { let equipName = JSON.parse(a.insProductResult.equipName) for (var i = 0; i < equipName.length; i++) { this.param[a.id].equipName[i].v.v = equipName[i].v } } catch (e) {} try { @@ -893,9 +911,11 @@ }, getEquipOptions(e, id) { if (e) { let category = this.currentSample.insProduct.find(m => m.id == id).deviceGroup this.equipOptions = [] let product = this.currentSample.insProduct.find(m => m.id == id) this.$axios.post(this.$api.deviceScope.selectDeviceByCategory, { category inspectionItem: product.inspectionItem, inspectionItemSubclass: product.inspectionItemSubclass }).then(res => { if (res.code === 200 && res.data) { this.equipOptions = res.data.map(m => { @@ -989,6 +1009,17 @@ } this.$message.success('已保存') }) }, changeEquip(val,n){ for(let i in this.equipOptions){ if(this.equipOptions[i].value === val){ for(let i1 in this.param[n.i].equipName){ if(this.param[n.i].equipName[i1].i === n.i && this.param[n.i].equipName[i1].r === n.r){ this.param[n.i].equipName[i1].v.v = this.equipOptions[i].label } } } } } } } src/components/view/a5-capacity-scope.vue
@@ -210,8 +210,8 @@ }], tagField: {}, selectField: {}, requiredAdd: ['specimenName'], requiredUp: ['specimenName'] requiredAdd: ['specimenName','code'], requiredUp: ['specimenName','code'] }, itemParameterEntityCopy: {}, testObjectDataEntityCopy: {}, src/components/view/a5-laboratory-qualifications.vue
@@ -61,7 +61,7 @@ </el-radio-group> </el-col> <el-col :span="12" style="text-align: right;" v-if="radio==0"> <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">新增</el-button> <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">资质更新</el-button> <el-button size="medium" icon="el-icon-delete" @click="handleDel" v-if="delPower">删除</el-button> </el-col> </el-row> @@ -149,7 +149,7 @@ </div> <el-dialog title="资质更新" :visible.sync="qualificationsConnectVisible" width="400px"> <div class="search_thing" style="margin-bottom: 16px;"> <div class="search_label" style="width:120px">资质名称:</div> <div class="search_label" style="width:120px"><span class="required-span">* </span>资质名称:</div> <div class="search_input"> <el-select v-model="formData.name" placeholder="请选择" style="width: 100%;" size="small" clearable> <el-option @@ -162,7 +162,7 @@ </div> </div> <div class="search_thing" style="margin-bottom: 16px;"> <div class="search_label" style="width:120px">资质编码:</div> <div class="search_label" style="width:120px"><span class="required-span">* </span>资质编码:</div> <div class="search_input"> <el-input size="small" @@ -172,7 +172,7 @@ </div> </div> <div class="search_thing" style="margin-bottom: 16px;"> <div class="search_label" style="width:120px">颁发机构:</div> <div class="search_label" style="width:120px"><span class="required-span">* </span>颁发机构:</div> <div class="search_input"> <el-input size="small" @@ -191,7 +191,7 @@ v-model="formData.explanation"></el-input> </div> </div> <div class="search_thing" style="margin-bottom: 16px;"> <!-- <div class="search_thing" style="margin-bottom: 16px;"> <div class="search_label" style="width:120px">首次颁发时间:</div> <div class="search_input"> <el-date-picker style="width:100%" v-model="formData.firstTime" @@ -216,9 +216,9 @@ placeholder="选择日期"> </el-date-picker> </div> </div> </div> --> <div class="search_thing" style="margin-bottom: 16px;"> <div class="search_label" style="width:120px">到期颁发时间:</div> <div class="search_label" style="width:120px"><span class="required-span">* </span>到期时间:</div> <div class="search_input"> <el-date-picker style="width:100%" v-model="formData.expireTime" type="datetime" src/components/view/b1-inspect-order-plan.vue
@@ -229,7 +229,7 @@ type: 'text', method: 'handleInspection', disabFun: (row, index) => { return row.userId == null || row.insState == 3 return row.userId == null || row.insState == 3 || row.insState == 5 } }, { id: '', @@ -237,7 +237,7 @@ type: 'text', method: 'handleConnect', disabFun: (row, index) => { return row.userId == null || row.insState == 3 return row.userId == null || row.orderUserId == null || row.insState == 5 || row.insState == 3 } }, { src/components/view/b1-inspection-order.vue
@@ -172,7 +172,7 @@ </el-row> </span> </el-dialog> <el-dialog title="数据查看" :visible.sync="dataDialogVisible" width="70%"> <el-dialog title="数据查看" :visible.sync="dataDialogVisible" width="80%"> <div style="height: 70vh;overflow-y: auto;" v-if="dataDialogVisible"> <ValueTable ref="ValueTableDataLook" :url="$api.insOrder.selectSampleAndProductByOrderId" :componentData="componentDataDataLook"/> @@ -233,7 +233,7 @@ type: 'text', method: 'handleDataLook', disabFun: (row, index) => { return row.state != 1 return row.state != 1 && row.state != 4 } }, { id: 'download', @@ -241,7 +241,7 @@ type: 'text', method: 'download', disabFun: (row, index) => { return row.state != 1 || row.reportId == null return row.state != 4 || row.reportId == null } }, { id: 'verify', @@ -257,7 +257,7 @@ type: 'text', method: 'handlEquash', disabFun: (row, index) => { return row.state == 2 || row.state == 3 return row.state != 1 && row.state != 0 } }, { font: '分配', @@ -290,6 +290,36 @@ }, createUser: { select: [] }, orderType: { select: [] }, processing: { select: [{ value: 1, label: '实验室处理' },{ value: 0, label: '委托单位取回' }] }, isLeave: { select: [{ value: 1, label: '留样' },{ value: 0, label: '不留样' }] }, send: { select: [{ value: 1, label: '自取' },{ value: 0, label: '其他' }] } }, selectField: {}, @@ -322,10 +352,25 @@ label: '不合格', type: 'danger' }] }, inspectionValueType: {select: []} } }, selectField: {}, spanConfig:{ rows:[ { name:'sampleCode', index:0 }, { name:'sample', index:1 }, { name:'model', index:2 } ] }, requiredAdd: [], requiredUp: [] }, @@ -364,7 +409,7 @@ this.getUserMenu() this.getAuthorizedPerson() this.getInsStateDicts() this.selectEnumByCategoryForInspectionValueType() this.selectEnumByCategoryForOrderType() }, methods: { getAuthorizedPerson() { @@ -436,7 +481,9 @@ this.dataDialogVisible = true; }, // 下载报告 download(row) {}, download(row) { console.log(row); }, // 审核 handleVerify(row) { // this.verifyDialogVisible = true; @@ -537,11 +584,11 @@ this.componentDataDataLook.tagField.insState.select = data }) }, selectEnumByCategoryForInspectionValueType() { selectEnumByCategoryForOrderType() { this.$axios.post(this.$api.enums.selectEnumByCategory, { category: "检验值类型" category: "检验类别" }).then(res => { this.componentDataDataLook.tagField.inspectionValueType.select = res.data this.componentData.tagField.orderType.select = res.data }) }, } src/components/view/b1-report-preparation.vue
@@ -88,9 +88,11 @@ :key="upIndex"/> </div> </div> <el-dialog title="在线编制" :visible.sync="claimVisible" width="22cm" :modal-append-to-body="false" :fullscreen="fullscreen"> <el-dialog title="在线编制" :visible.sync="claimVisible" width="22cm" :modal-append-to-body="false" :fullscreen="fullscreen"> <div class="full-screen"> <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;" v-if="!fullscreen"></i> <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;" v-if="!fullscreen"></i> <img src="../../../static/img/no-full.svg" alt="" v-else style="cursor: pointer;" @click="fullscreen=false;" > </div> <Word style="height:70vh" :class="{fullscreen:fullscreen}" v-if="claimVisible" ref="Word" :value="value"/> @@ -99,7 +101,8 @@ <el-button type="primary" @click="confirmClaim">确 定</el-button> </span> </el-dialog> <el-dialog title="报告审核" :visible.sync="issuedVisible" width="400px" :modal-append-to-body="false" :fullscreen="fullscreen"> <el-dialog title="报告审核" :visible.sync="issuedVisible" width="400px" :modal-append-to-body="false" :fullscreen="fullscreen"> <!-- <div class="full-screen"> <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;" v-if="!fullscreen"></i> <img src="../../../static/img/no-full.svg" alt="" v-else style="cursor: pointer;" @click="fullscreen=false;" > @@ -109,18 +112,17 @@ <el-button size="small">不通过</el-button> </div> --> <span slot="footer" class="dialog-footer"> <el-button @click="issuedReasonVisible=true">不通过</el-button> <el-button @click="issuedReasonVisible=true" :disabled="loadingIssued">不通过</el-button> <el-button type="primary" @click="subIssued" :loading="loadingIssued">通 过</el-button> </span> </el-dialog> <el-dialog title="不通过原因" :visible.sync="issuedReasonVisible" width="400px" :modal-append-to-body="false"> <div class="search_thing"> <div class="search_label">不通过原因:</div> <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="reason"></el-input></div> <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="reason"></el-input></div> </div> <span slot="footer" class="dialog-footer"> <el-button @click="issuedReasonVisible=false">取消</el-button> <el-button @click="issuedReasonVisible=false" :disabled="loadingIssuedReason">取消</el-button> <el-button type="primary" @click="handleIssuedReason" :loading="loadingIssuedReason">确定</el-button> </span> </el-dialog> @@ -134,18 +136,17 @@ <el-button size="small">不批准</el-button> </div> --> <span slot="footer" class="dialog-footer"> <el-button @click="approveReasonVisible=true">不批准</el-button> <el-button @click="approveReasonVisible=true" :disabled="loadingApprove">不批准</el-button> <el-button type="primary" @click="subApprove" :loading="loadingApprove">批 准</el-button> </span> </el-dialog> <el-dialog title="不批准原因" :visible.sync="approveReasonVisible" width="400px" :modal-append-to-body="false"> <div class="search_thing"> <div class="search_label">不批准原因:</div> <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="reason"></el-input></div> <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="reason"></el-input></div> </div> <span slot="footer" class="dialog-footer"> <el-button @click="approveReasonVisible=false">取消</el-button> <el-button @click="approveReasonVisible=false" :disabled="loadingApproveReason">取消</el-button> <el-button type="primary" @click="handleApproveReason" :loading="loadingApproveReason">确定</el-button> </span> </el-dialog> @@ -156,7 +157,9 @@ import ValueTable from '../tool/value-table.vue' import Word from '../tool/word.vue' import file from '../../util/file'; import { convertToHtml } from 'mammoth'; import { convertToHtml } from 'mammoth'; export default { components: { ValueTable, @@ -233,9 +236,11 @@ type: 'text', method: 'handleApprove', disabFun: (row, index) => { return row.state == null||row.state == 0||row.isExamine == 0||row.isExamine == null ||row.isRatify==1 return row.state == null || row.state == 0 || row.isExamine == 0 || row.isExamine == null || row .isRatify == 1 } }], } ], linkEvent: { // code: { // method: 'selectAllByOne' @@ -432,12 +437,12 @@ id: this.currentInfo.id, isExamine: 1 }).then(res => { this.loadingIssued = false; if (res.code === 201) { return } this.$message.success('提交成功') this.refreshTable() this.loadingIssued = false; this.currentInfo = null; this.issuedVisible = false; }).catch(e => { @@ -451,6 +456,20 @@ }, subApprove(){ this.loadingApprove = true; this.$axios.post(this.$api.insReport.ratifyReport, { id: this.currentInfo.id, isRatify: 1 }).then(res => { this.loadingApprove = false; if (res.code == 201) { this.$message.error('批准失败') return } this.$message.success('已批准') this.refreshTable() this.currentInfo = null; this.approveVisible = false; }) }, handleSubmit(row){ this.$confirm('是否提交当前报告?', "提交", { @@ -481,12 +500,12 @@ isExamine: 0, examineTell:this.reason }).then(res => { this.loadingIssuedReason = false; if (res.code === 201) { return } this.$message.success('操作成功') this.refreshTable() this.loadingIssuedReason = false; this.currentInfo = null; this.reason = ''; this.issuedVisible = false; @@ -501,6 +520,25 @@ return this.$message.error('请输入原因') } this.loadingApproveReason = true this.$axios.post(this.$api.insReport.examineReport, { id: this.currentInfo.id, isExamine: 0, examineTell: this.reason }).then(res => { this.loadingApproveReason = false if (res.code === 201) { return } this.$message.success('操作成功') this.refreshTable() this.currentInfo = null; this.reason = ''; this.issuedVisible = false; this.issuedReasonVisible = false; }).catch(e => { this.$message.error('操作失败') this.loadingIssuedReason = false; }) } } } src/components/view/b2-standard.vue
@@ -60,6 +60,7 @@ .product_table .el-table { height: 100%; } .sort{ width: 80% !important; overflow: hidden; @@ -169,7 +170,8 @@ <!-- <el-table-column prop="inspectionItemClassify" label="检验项类型" width="120" show-overflow-tooltip></el-table-column> --> <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140" show-overflow-tooltip></el-table-column> <el-table-column prop="sonLaboratory" label="子实验室" width="130" show-overflow-tooltip></el-table-column> <el-table-column prop="sonLaboratory" label="子实验室" width="130" show-overflow-tooltip :filters="filters" :filter-method="filterHandler"></el-table-column> <el-table-column prop="ask" label="要求值" min-width="200px"> <template slot-scope="scope"> <el-input size="small" placeholder="要求值" v-model="scope.row.ask" clearable @@ -362,7 +364,8 @@ }, selectField: {}, }, expandedKeys: [] expandedKeys: [], filters: [] } }, mounted() { @@ -378,6 +381,7 @@ this.selectEnumByCategoryForValue() this.selectEnumByCategoryForSpecial() this.selectEnumByCategoryForInspectionValueType() this.selectEnumByCategoryForSonLaboratory() }, methods: { filterNode(value, data) { @@ -450,6 +454,19 @@ category: "工厂" }).then(res => { this.factory = res.data }) }, selectEnumByCategoryForSonLaboratory() { this.$axios.post(this.$api.enums.selectEnumByCategory, { category: "子实验室" }).then(res => { this.factory = [] res.data.forEach(a=>{ this.filters.push({ text: a.label, value: a.value }) }) }) }, selectEnumByCategoryForsampleType() { @@ -813,6 +830,10 @@ this.$message.success('已保存') }) }, filterHandler(value, row, column) { const property = column['property']; return row[property] === value; } } } </script> src/components/view/index-index.vue
@@ -361,7 +361,7 @@ <p>{{ m.theme }}</p> </div> <div class="list3-item-info"> <p style="width: 73%;-webkit-line-clamp: 1;" class="ellipsis-multiline"> <p style="width: 73%;-webkit-line-clamp: 1;cursor: pointer;" class="ellipsis-multiline" @click="goNoticeDetail(m)"> <!-- 编号<span style="color:#3A7BFA;"> SB20240101-001 </span>的设备将于2023-09-09 11:11:11过期 --> {{ m.content }} </p> @@ -677,6 +677,19 @@ }) }) }, goNoticeDetail(row){ this.$axios.put(this.$api.informationNotification.triggerModificationStatusToRead+'/'+row.id).then(res => { row.num = Math.random(100); this.$bus.$emit("change", JSON.stringify(row)); this.$parent.addTab({ v: "消息详情", i: "el-icon-s-tools", u: "notice-detail", k:35, p: "abcd" },29); }) }, }, } </script> src/components/view/notice-detail.vue
@@ -16,8 +16,8 @@ </div> </div> <div class="info-box" v-if="noticeInfo.jumpPath"> <component class="notice-content" :is="noticeInfo.jumpPath" style="height: 500px;" > </component> <!-- <component class="notice-content" :is="noticeInfo.jumpPath" style="height: 500px;" > </component> --> </div> </div> </template> @@ -47,6 +47,7 @@ this.noticeInfo = JSON.parse(sessionStorage.getItem("noticeInfo")); this.$bus.$on("change", (msg) => { this.noticeInfo = JSON.parse(msg); console.log(this.noticeInfo); sessionStorage.setItem("noticeInfo", msg); }); }, src/main.js
@@ -13,9 +13,9 @@ //本地 Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; // const javaApi = 'http://192.168.11.200:8001';//李 const javaApi = 'http://192.168.11.200:8001';//李 // const javaApi = 'http://192.168.11.249:8001';//张 const javaApi = 'http://192.168.11.50:8001';//姜 // const javaApi = 'http://192.168.11.50:8001';//姜 // const javaApi = 'http://192.168.11.2:8001';//柴 // const javaApi = 'http://114.132.189.42:9006';//测试服 //胜云服务器