src/assets/api/controller.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/do/b1-ins-order/add.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/tool/value-table.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b1-inspect-order-plan.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b1-inspection-order.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b2-standard.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/view/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/assets/api/controller.js
@@ -115,7 +115,9 @@ const insOrder = { selectInsOrderParameter: "/insOrder/selectInsOrderParameter", //查询检验下单 getDeviceManager: "/user/getDeviceManager", //获取指派人员 addInsOrder: "/insOrder/addInsOrder", //添加检验下单数据 selectOrderManDay: "/insOrder/selectOrderManDay", //查询订单总共预计时间 upInsOrder: "/insOrder/upInsOrder", //检验下发 } const sampleOrder = { @@ -126,8 +128,6 @@ selectInsOrderPlanList: "/insOrderPlan/selectInsOrderPlanList", //查询检验任务 claimInsOrderPlan: "/insOrderPlan/claimInsOrderPlan",//认领检验任务 } const systemLog = { selectSystemLogList: "/systemLog/selectSystemLogList", //获取日志 @@ -143,6 +143,7 @@ delStandardProductByIds: "/standardTree/delStandardProductByIds", //删除标准树下的检验项目 addStandardProduct: "/standardTree/addStandardProduct", //新增标准树下的检验项目 delStandardTree: "/standardTree/delStandardTree", //删除标准树的层级 selectStandardProductList: "/standardTree/selectStandardProductList", //通过标准树查询对应的检验项目 } const standardMethod = { src/components/do/b1-ins-order/add.vue
@@ -2,6 +2,11 @@ .ins_order_add { width: 100%; height: 100%; overflow-y: auto; } .ins_order_add::-webkit-scrollbar { width: 0; } .title { @@ -12,7 +17,7 @@ .search { width: calc(100% - 40px); background-color: #fff; padding: 10px 40px 10px 0; padding: 5px 40px 5px 0; } .search_thing { @@ -35,6 +40,7 @@ color: orange; font-size: 18px; } </style> <style> .ins_order_add .el-input-group__append, @@ -64,6 +70,10 @@ .ins_order_add .el-table__row .cell { font-size: 12px; } .ins_order_add .el-table .warning-row .cell{ color: #bababa; } </style> <template> @@ -78,7 +88,7 @@ <el-button size="medium" @click=""> <span style="color: #3A7BFA;">保存模板</span> </el-button> <el-button size="medium" type="primary" @click="save">提交</el-button> <el-button size="medium" type="primary" @click="save" :loading="saveLoad">提交</el-button> <el-button size="medium" @click="$parent.playOrder(0)"> <span style="color: #3A7BFA;">返回</span> </el-button> @@ -91,12 +101,6 @@ <div class="search_label">委托编号:</div> <div class="search_input"> <el-input v-model="addObj.entrustCode" size="small" placeholder="系统生成" disabled></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 v-model="addObj.sampleCode" size="small" placeholder="请输入" clearable></el-input> </div> </el-col> <el-col class="search_thing" :span="6"> @@ -115,37 +119,10 @@ </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.sample"> <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectStandardTree = true"></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"> <div class="search_label"><span class="required-span">* </span>样品类型:</div> <div class="search_input"> <el-input size="small" clearable disabled v-model="addObj.sampleType"></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 v-model="addObj.model"></el-input> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label">约定时间:</div> <div class="search_label">需求时间:</div> <div class="search_input"> <el-date-picker type="date" placeholder="选择日期" size="small" value-format="yyyy-MM-dd" style="width: 100%;" v-model="addObj.appointedTime"></el-date-picker> v-model="addObj.appointed"></el-date-picker> </div> </el-col> <el-col class="search_thing" :span="6"> @@ -157,32 +134,18 @@ </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-number size="small" v-model="addObj.sampleNum" :controls="false" :min="0" :max="1000" :precision="0" style="width: 50%;" @change="onSample"></el-input-number> </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"></el-input> </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" @change="addObj.leaveNum = null"> <el-radio :label="1">留样</el-radio> <el-radio :label="0">不留样</el-radio> <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()"> <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-input-number size="small" v-model="addObj.leaveNum" :controls="false" :min="0" :disabled="addObj.isLeave == 0" style="width: 50%;"></el-input-number> </div> </el-col> <el-col class="search_thing" :span="6" style="align-items: flex-start;margin: 8px 0;"> @@ -192,24 +155,39 @@ v-model="addObj.remark"></el-input> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label" style="width: 160px;">是否涉及配套样品:</div> <div class="search_input" style="width: calc(100% - 160px);"> <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-row> </div> <div style="display: flex;"> <el-table class="el-table" ref="sampleTable" :data="sampleList" height="300px" tooltip-effect="dark" border @selection-change="selectSample"> <div> <div style="text-align: right;line-height: 45px;"> <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" ref="sampleTable" :data="sampleList" height="250px" tooltip-effect="dark" border @selection-change="selectSample" highlight-current-row @row-click="rowClick"> <el-table-column type="selection" width="60"></el-table-column> <el-table-column type="index" label="序号" width="65" align="center"></el-table-column> <el-table-column prop="sample" label="样品名称" align="center" show-overflow-tooltip min-width="100"></el-table-column> <el-table-column prop="sampleCode" label="样品编号" width="140" align="center"> <template slot-scope="scope"> <el-input size="small" v-model="scope.row.sampleCode" clearable></el-input> </template> </el-table-column> <el-table-column prop="factory" label="工厂" align="center" show-overflow-tooltip min-width="100"> </el-table-column> <el-table-column prop="laboratory" label="实验室" align="center" show-overflow-tooltip min-width="100"> </el-table-column> <el-table-column prop="sampleType" label="样品类型" align="center" show-overflow-tooltip min-width="100"> </el-table-column> <el-table-column prop="model" label="样品型号" align="center" show-overflow-tooltip min-width="100"> </el-table-column> <el-table-column prop="isLeave" label="是否留样" align="center" show-overflow-tooltip min-width="100"> <template slot-scope="scope"> <span>{{scope.row.isLeave==1?'是':'否'}}</span> </template> </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}" @@ -222,9 +200,38 @@ v-model="scope.row.joinModel"></el-input> </template> </el-table-column> <el-table-column prop="joinNum" label="配套样品数量" width="140" align="center" v-if="addObj.mating==1"> <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%;"></el-input-number> </template> </el-table-column> <el-table-column label="操作" width="65" align="center"> <template slot-scope="scope"> <el-button type="text" size="small" @click="">删除</el-button> {{scope.index}} <el-button type="text" size="small" @click="sampleList.splice(scope.$index, 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" :row-class-name="tableRowClassName"> <el-table-column type="selection" width="65"></el-table-column> <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="method" label="检验标准" min-width="120" show-overflow-tooltip></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="manHourGroup" 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="区间" width="120" show-overflow-tooltip></el-table-column> <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}"></el-input> </template> </el-table-column> </el-table> @@ -266,6 +273,71 @@ <el-button type="primary" @click="activeStandardTree">确 定</el-button> </span> </el-dialog> <el-dialog title="添加样品" :visible.sync="addSampleDia" width="400px"> <div class="body" style="max-height: 60vh;"> <el-row> <el-col class="search_thing" :span="22"> <div class="search_label"><span class="required-span">* </span>样品名称:</div> <div class="search_input"> <el-input readonly size="small" v-model="sample.sample"> <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectStandardTree = true"></el-button></template> </el-input> </div> </el-col> <el-col class="search_thing" :span="22"> <div class="search_label"><span class="required-span">* </span>工厂名称:</div> <div class="search_input"> <el-input size="small" clearable disabled v-model="sample.factory"></el-input> </div> </el-col> <el-col class="search_thing" :span="22"> <div class="search_label"><span class="required-span">* </span>实验室名称:</div> <div class="search_input"> <el-input size="small" clearable disabled v-model="sample.laboratory"></el-input> </div> </el-col> <el-col class="search_thing" :span="22"> <div class="search_label"><span class="required-span">* </span>样品类型:</div> <div class="search_input"> <el-input size="small" clearable disabled v-model="sample.sampleType"></el-input> </div> </el-col> <el-col class="search_thing" :span="22"> <div class="search_label"><span class="required-span">* </span>规格型号:</div> <div class="search_input"> <el-input size="small" placeholder="请输入" clearable v-model="sample.model"></el-input> </div> </el-col> <el-col class="search_thing" :span="22"> <div class="search_label">样品编号:</div> <div class="search_input"> <el-input v-model="sample.sampleCode" size="small" placeholder="请输入" clearable></el-input> </div> </el-col> <el-col class="search_thing" :span="24"> <div class="search_label">样品数量:</div> <div class="search_input"> <el-input-number size="small" v-model="sample.sampleNum" :min="1" :max="100" :precision="0" style="width: 50%;"></el-input-number> </div> </el-col> <el-col class="search_thing" :span="22"> <div class="search_label">样品留样:</div> <div class="search_input"> <el-radio-group v-model="sample.isLeave"> <el-radio :label="1">留样</el-radio> <el-radio :label="0">不留样</el-radio> </el-radio-group> </div> </el-col> </el-row> </div> <span slot="footer" class="dialog-footer"> <el-button @click="addSampleDia = false">取 消</el-button> <el-button type="primary" @click="onSample()" :loading="getProductLoad">确 定</el-button> </span> </el-dialog> </div> </template> @@ -281,24 +353,25 @@ templates: [], addObj: { entrustCode: null, sampleCode: null, custom: null, company: null, userId: null, type: '0', code: null, laboratory: null, appointedTime: null, factory: null, sample: null, sampleType: null, sampleNum: null, model: null, isLeave: 0, leaveNum: null, appointed: null, remark: null, otcCode: null, mating: 0 }, sample: { sampleCode: null, laboratory: null, factory: null, sampleType: null, sample: null, model: null, sampleNum: 1, isLeave: 0, }, type: [], selectUserDia: false, @@ -335,7 +408,13 @@ expandedKeys: [], sampleList: [], sampleIds: [], methodList: [] methodList: [], addSampleDia: false, count: 1, productList: [], productIds: [], getProductLoad: false, saveLoad: false } }, mounted() { @@ -367,7 +446,20 @@ this.selectUserDia = false }, save() { console.log(this.addObj); this.saveLoad = true this.$axios.post(this.$api.insOrder.addInsOrder,{ insOrder: this.addObj, list: this.sampleList },{ headers: { 'Content-Type': 'application/json' } }).then(res=>{ this.saveLoad = false if(res.code==201)return this.$message.success('已提交') this.$parent.playOrder(0) }) }, getUserNow() { this.$axios.get(this.$api.user.getUserNow).then(res => { @@ -425,30 +517,107 @@ this.$message.error('未选择样品') return } this.addObj.factory = trees[0] this.addObj.laboratory = trees[1] this.addObj.sampleType = trees[2] this.addObj.sample = trees[3] this.addObj.model = trees[4] this.sample.factory = trees[0] this.sample.laboratory = trees[1] this.sample.sampleType = trees[2] this.sample.sample = trees[3] this.sample.model = trees[4] this.selectStandardTree = false this.onSample() }, selectSample(val) { this.sampleIds = [] val.forEach(a => { this.sampleIds = a.id this.sampleIds.push(a.id) }) }, onSample() { this.sampleList = [] if (this.addObj.sampleNum == 0 || this.addObj.sample == null || this.addObj.sample == '') return for (var i = 0; i < this.addObj.sampleNum; i++) { this.sampleList.push({ sample: this.addObj.sample, joinName: null, joinModel: null if (this.sample.sample == null || this.sample.sample == '') { this.$message.error('请选择样品') return } if (this.sample.model == null || this.sample.model == '') { this.$message.error('请输入样品型号') return } this.getProductLoad = true this.$axios.post(this.$api.standardTree.selectStandardProductList, { factory: this.sample.factory, laboratory: this.sample.laboratory, sampleType: this.sample.sampleType, sample: this.sample.sample, model: this.sample.model }, { headers: { 'Content-Type': 'application/json' } }).then(res => { res.data.forEach(a => { a.state = 1 }) for (var i = 0; i < this.sample.sampleNum; i++) { this.sample.joinName = null this.sample.joinModel = null this.sample.joinNum = 1 this.sample.insProduct = res.data this.sample.id = this.count this.sampleList.push(this.HaveJson(this.sample)) this.count++ } this.$refs.sampleTable.doLayout() this.getProductLoad = false this.addSampleDia = false this.sample = { sampleCode: null, laboratory: null, factory: null, sampleType: null, sample: null, model: null, sampleNum: 1, isLeave: 0, } }) }, delSample() { this.sampleIds.forEach(a => { for (var i = 0; i < this.sampleList.length; i++) { if (this.sampleList[i].id == a) { this.sampleList.splice(i, 1) i -= 1 break } } }) this.$refs.sampleTable.doLayout() }, selectProduct(val) { this.productIds = [] val.forEach(a => { this.productIds.push(a.id) }) }, rowClick(row, column, event) { this.productList = row.insProduct setTimeout(() => { this.productList.forEach(a => { if (a.state == 1) this.toggleSelection(a) }) }, 300) }, toggleSelection(row) { this.$refs.productTable.toggleRowSelection(row, true); }, upProductSelect(selection, row) { row.state = row.state == 1 ? 0 : 1 }, tableRowClassName({ row, rowIndex }) { if (row.state === 0) { return 'warning-row'; } return ''; } } } src/components/tool/value-table.vue
@@ -71,7 +71,7 @@ <el-table ref="eltable" :data="tableData" style="width: 100%;" height="100%" tooltip-effect="dark" border @selection-change="selectChange" @select="select" v-loading="loading" @sort-change="sortChange" @row-click="rowClick" :show-summary="data.countFleid!=undefined && data.countFleid.length > 0" :summary-method="getSummaries" :key="Math.random()" :row-class-name="tableRowClassName"> :summary-method="getSummaries" :row-class-name="tableRowClassName"> <el-table-column type="selection" width="65" v-if="data.showSelect" :key="Math.random()"> </el-table-column> <el-table-column type="index" align="center" label="序号" width="70" v-if="data.isIndex" :key="Math.random()"> @@ -505,7 +505,7 @@ return } for (var i = 0; i < this.data.requiredUp.length; i++) { if (this.upData[this.data.requiredUp[i]] == null || this.upData[this.data.requiredUp[i]] == '') { if (this.upData[this.data.requiredUp[i]] === null || this.upData[this.data.requiredUp[i]] === '') { var list = this.upHead.filter(a => { if (a.label == this.data.requiredUp[i]) return a }) @@ -733,7 +733,7 @@ if(val.method=='doDiy'){ this.main(row,val) }else{ this.$emit(val.method,row) this.$parent[val.method](row) } }, getWidth(){ src/components/view/b1-inspect-order-plan.vue
@@ -3,34 +3,39 @@ font-size:20px; color:#3A7BFA } .ins-order-plan-main .search{ width: 100%; margin-bottom: 10px; height: 10vh; height: 80px; background-color: #fff; border-radius: 3px; } .search .form-inline{ height: 5vh; padding-top:2.5vh; padding-left: 1%; height: 50px; padding-top: 20px; padding-left: 50px; } .ins-order-plan-main .center{ width: 100%; height: 70vh; width: calc(100% - 40px); height: calc(100% - 60px - 80px - 40px); background-color: #fff; border-radius: 3px; padding: 20px; } .ins-order-plan-main .center .value-table{ width:98%; height: 80%; margin-left:1%; width: 100%; height: calc(100% - 68px); } .tab { list-style-type: none; display: flex; padding: 10px 0px; } .tab li { line-height: 24px; padding: 6px 14px; @@ -52,21 +57,27 @@ border-color: #3A7BFA; color: #3A7BFA; } .center .center-options:nth-child(1){ padding-left: 1%; } .center .center-options .center-title { width:85%; padding-top: 20px; text-align: left; width: 100%; text-align: right; display: flex; align-items: center; } .center .center-options .center-title span:last-child{ color: #3A7BFA; font-size: 23px; font-weight: 400; } .view-self-checkbox{ margin-left: 20px; margin-left: 50px; } </style> <style> .ins-order-plan-main .el-form-item__label{ color: #000; } </style> <template> @@ -79,8 +90,8 @@ </el-form-item> <el-form-item label="状态:"> <el-select clearable size="small" v-model="searchForm.state" placeholder="请选择"> <el-option v-for="(item,index) in insStateList" :key="index" :label="item.label" :value="item.value"></el-option> <el-option v-for="(item,index) in insStateList" :key="index" :label="item.label" :value="item.value"></el-option> </el-select> </el-form-item> <el-form-item> @@ -93,11 +104,15 @@ <div class="center-options"> <el-row> <el-col :span="21"> <div style="display: flex;align-items: center;"> <div style="display: flex;align-items: center;margin-bottom: 10px;"> <ul class="tab"> <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li> <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}} </li> </ul> <el-checkbox @change="changeCheckBox" class="view-self-checkbox" v-model="viewSelf"/><span> 我的任务</span> <div> <el-checkbox @change="changeCheckBox" class="view-self-checkbox" v-model="viewSelf"><span>我的任务</span></el-checkbox> </div> </div> </el-col> <el-col :span="3"> @@ -108,12 +123,11 @@ </el-col> </el-row> </div> <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan" :url="$api.insOrderPlan.selectInsOrderPlanList" :upUrl="$api.user.updateUser" :componentData="componentData" :key="upIndex" @upUser="upUser"/> <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan" :url="$api.insOrderPlan.selectInsOrderPlanList" :upUrl="$api.user.updateUser" :componentData="componentData" :key="upIndex" @upUser="upUser" /> </div> <el-dialog title="提示" :visible.sync="claimVisible" width="40%"> <el-dialog title="提示" :visible.sync="claimVisible" width="40%"> 是否认领委托编号<span style="color:#33C130">{{sampleUserForm.entrustCode}}</span>的任务 <span slot="footer" class="dialog-footer"> <el-button @click="claimVisible = false">取 消</el-button> @@ -125,7 +139,9 @@ <script> import ValueTable from '../tool/value-table.vue' import { getYearAndMonthAndDays } from '../../util/date' import { getYearAndMonthAndDays } from '../../util/date' export default { components:{ ValueTable @@ -183,8 +199,11 @@ font: '认领', type: 'text', method: 'claimFun', disabFun: (row,index)=>{return row.sampleUserId!=null} }], disabFun: (row, index) => { return row.sampleUserId != null } } ], tagField: { type:{ select:[] @@ -259,7 +278,10 @@ refreshTable() { this.$refs.insOrderPlan.selectList() }, changeRowClass({row,rowIndex}){ changeRowClass({ row, rowIndex }) { let currentTime = getYearAndMonthAndDays() if(row.sendTime && currentTime===row.sendTime){ return 'highlight-warning-row-border' @@ -329,7 +351,12 @@ this.$axios.post(this.$api.enums.selectEnumByCategory, { category: "子实验室" }).then(res => { this.tabList = res.data.map(ele=>{return {label:ele.label,value:ele.value}}) this.tabList = res.data.map(ele => { return { label: ele.label, value: ele.value } }) this.$nextTick(()=>{ this.componentData.entity.childrenLaboratory = this.tabList[0].value }) src/components/view/b1-inspection-order.vue
@@ -12,19 +12,19 @@ } .search_thing { width: 350px; display: flex; align-items: center; height: 50px; } .search_label { width: 110px; width: 120px; font-size: 14px; text-align: right; } .search_input { width: calc(100% - 110px); width: calc(100% - 120px); } .table { @@ -75,7 +75,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="playOrder(1)">下单</el-button> <el-button size="medium" type="primary" @click="playOrder(1)" v-if="addPower">下单</el-button> </el-col> </el-row> </div> @@ -83,12 +83,12 @@ <div class="search_thing"> <div class="search_label">委托编号:</div> <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="componentData.entity.deviceName" @keyup.enter.native="refreshTable()"></el-input></div> v-model="componentData.entity.entrustCode" @keyup.enter.native="refreshTable()"></el-input></div> </div> <div class="search_thing"> <div class="search_label">样品名称:</div> <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="componentData.entity.specificationModel" @keyup.enter.native="refreshTable()"></el-input></div> v-model="componentData.entity.sample" @keyup.enter.native="refreshTable()"></el-input></div> </div> <div class="search_thing" style="padding-left: 30px;"> <el-button size="small" @click="refresh()">重 置</el-button> @@ -99,11 +99,8 @@ <ul class="tab"> <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li> </ul> <!-- 语法 子组件通过 this.$emit +传入方法名 调用父组件方法 例如 this.$emit(selectAllByOne) 就需在父组件声明并传入 @selectAllByOne="selectAllByOne"--> <ValueTable ref="ValueTable" :url="$api.insOrder.selectInsOrderParameter" :componentData="componentData" :key="upIndex" style="height: calc(100% - 44px)" @selectAllByOne="selectAllByOne" @handleDataLook="handleDataLook" @download="download" @handleVerify="handleVerify" @handlEquash="handlEquash" @handleIssued="handleIssued" /> :key="upIndex" style="height: calc(100% - 44px)" /> </div> <!-- 审核 --> <el-dialog title="下单审核" :visible.sync="verifyDialogVisible" width="30%" :before-close="handleClose"> @@ -146,22 +143,28 @@ </span> </el-dialog> <!-- 下发 --> <el-dialog title="检验下发" :visible.sync="issuedDialogVisible" width="30%" :before-close="handleClose"> <el-form :label-position="labelPosition" :model="formData2" label-width="150px" ref="ruleForm"> <el-form-item label="约定时间:"> <el-date-picker style="width:100%" format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="formData2.appointed2" type="date" size="small" placeholder="选择时间"> <el-dialog title="检验下发" :visible.sync="issuedDialogVisible" width="400px" :before-close="handleClose"> <div class="body" style="max-height: 60vh;"> <el-row> <el-col class="search_thing" :span="22"> <div class="search_label"><span class="required-span">* </span>约定时间:</div> <div class="search_input"> <el-date-picker size="small" v-model="distributeData.appointed" type="date" placeholder="选择日期" value-format="yyyy-MM-dd" style="width: 100%;" format="yyyy-MM-dd"> </el-date-picker> </el-form-item> <el-form-item > </el-form-item> <el-form-item label="指派人员:"> <el-select v-model="formData2.id" placeholder="请选择" size="small" style="width:100%"> </div> </el-col> <el-col class="search_thing" :span="22"> <div class="search_label"><span class="required-span">* </span>指派人员:</div> <div class="search_input"> <el-select v-model="distributeData.userId" placeholder="请选择" size="small" style="width: 100%;"> <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> </el-form> </div> </el-col> </el-row> </div> <span slot="footer" class="dialog-footer"> <el-row> <el-button @click="handleClose2">取 消</el-button> @@ -199,21 +202,22 @@ verifyDialogVisible: false, quashDialogVisible: false, issuedDialogVisible: false, issuedDialogVisible2: false, dataDialogVisible: false, formData: {}, formData0:{}, formData1:{}, formData2:{ id:'', orderName:'', data:'', distributeData: { orderId: '', sampleId: '', appointed: '', userId: '' }, // 人员列表 personList: [], labelPosition: 'right', componentData: { entity: { entrustCode: null, sample: null, state: 1, orderBy: { field: 'id', @@ -227,28 +231,44 @@ id: 'dataLook', font: '数据查看', type: 'text', method: 'handleDataLook' method: 'handleDataLook', disabFun: (row, index) => { return row.state != 1 } }, { id: 'download', font: '报告下载', type: 'text', method: 'download' method: 'download', disabFun: (row, index) => { return row.state != 1 } }, { id: 'verify', font: '审核', type: 'text', method: 'handleVerify' method: 'handleVerify', disabFun: (row, index) => { return row.state != 0 } }, { id: 'quash', font: '撤销', type: 'text', method: 'handlEquash' }, { id: 'issued', font: '下发', type: 'text', method: 'handleIssued' method: 'handleIssued', disabFun: (row, index) => { return row.state != 1 || row.sendTime != null } }], linkEvent:{ entrustCode:{ method:'selectAllByOne' } }, tagField: { type: { select: [{ @@ -265,16 +285,13 @@ label: '紧急' }] }, }, linkEvent:{ deviceName:{ id: 'details', method:'selectAllByOne', createUser: { select: [] } }, selectField: {}, requiredAdd: ['largeCategory', 'subclass', 'deviceName', 'internalCode', 'specificationModel', 'manufacturer'], requiredUp: ['largeCategory', 'subclass', 'deviceName', 'internalCode', 'specificationModel', 'manufacturer'] requiredAdd: [], requiredUp: [] }, componentDataDataLook: { entity: { @@ -336,11 +353,12 @@ mounted() { this.entityCopy = this.HaveJson(this.componentData.entity) this.getPower() this.getUserMenu() this.getAuthorizedPerson() }, methods: { getAuthorizedPerson(){ this.$axios.post(this.$api.deviceScope.selectDevicePrincipal).then(res => { this.$axios.get(this.$api.user.getUserMenu).then(res => { let data = [] res.data.forEach(a=>{ data.push({ @@ -365,21 +383,15 @@ let del = false let add = false for (var i = 0; i < power.length; i++) { if (power[i].menuMethod == 'upDeviceParameter') { if (power[i].menuMethod == 'upInsOrder') { up = true } if (power[i].menuMethod == 'delDeviceParameter') { del = true } if (power[i].menuMethod == 'addDeviceParameter') { if (power[i].menuMethod == 'addInsOrder') { add = true } } if (!del) { this.componentData.do.splice(1, 1) } if (!up) { this.componentData.do.splice(0, 1) this.componentData.do.splice(4, 1) } this.addPower = add }, @@ -399,6 +411,7 @@ }, // 详情 selectAllByOne(row) { console.log(row); //打开弹框 this.dialogVisible = true; //row = 点击对应行值 @@ -411,7 +424,6 @@ }, // 下载报告 download(row) { }, // 审核 handleVerify(row) { @@ -424,13 +436,25 @@ // 下发 handleIssued(row) { this.issuedDialogVisible = true; this.$axios.post(this.$api.insOrder.selectOrderManDay,{ id: row.sampleId }).then(res=>{ this.distributeData.orderId = row.id this.distributeData.sampleId = row.sampleId this.distributeData.appointed = res.data }) }, submitForm2(){ this.upLoad = true; this.$axios.post(this.$api.insOrder.getDeviceManager, this.formData2, { headers: { 'Content-Type': 'application/json' if(this.distributeData.appointed==null||this.distributeData.appointed==''){ this.$message.error('约定时间未填写') return } this.upLoad = true; this.$axios.post(this.$api.insOrder.upInsOrder, { orderId: this.distributeData.orderId, sampleId: this.distributeData.sampleId, appointed: this.distributeData.appointed, userId: this.distributeData.userId }).then(res => { if (res.code === 201) { this.upLoad = false @@ -438,11 +462,10 @@ } this.$message.success('修改成功') this.upLoad = false this.issuedDialogVisible = false this.refreshTable() this.dialogVisible = false }).catch(e => { this.$message.error('修改失败') this.dialogVisible = false this.upLoad = false }) }, @@ -454,24 +477,6 @@ delete this.formData.createUser delete this.formData.updateUser this.formData.authorizedPerson = authorizedPerson this.$axios.post(this.$api.insOrder.getDeviceManager, this.formData, { headers: { 'Content-Type': 'application/json' } }).then(res => { if (res.code === 201) { this.upLoad = false return } this.$message.success('修改成功') this.upLoad = false this.refreshTable() this.dialogVisible = false }).catch(e => { this.$message.error('修改失败') this.dialogVisible = false this.upLoad = false }) }, // 下单 playOrder(num) { @@ -481,6 +486,18 @@ this.tabIndex = i; this.componentData.entity.state = m.value this.refreshTable() }, getUserMenu() { this.$axios.get(this.$api.user.getUserMenu).then(res => { let data = [] res.data.forEach(a => { data.push({ label: a.name, value: a.id }) }) this.componentData.tagField.createUser.select = data }) } } } src/components/view/b2-standard.vue
@@ -161,7 +161,7 @@ <el-table-column prop="manHourGroup" 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="区间" width="120" show-overflow-tooltip></el-table-column> <el-table-column prop="ask" label="要求值" width="220px"> <el-table-column prop="ask" label="要求值" min-width="220px"> <template slot-scope="scope"> <el-input size="small" placeholder="要求值" v-model="scope.row.ask" clearable @change="(value)=>upStandardProductList(value,scope.row.id)" v-if="upStandardProduct" type="textarea" :autosize="{ minRows: 1, maxRows: 3}"></el-input> src/view/index.vue
@@ -426,10 +426,7 @@ removeTab(index) { this.tabs.splice(index, 1); let data = this.tabs[this.tabs.length - 1] this.activeP = data.k; this.tabActive = data.k; this.activeBox = data.k this.saveClick() this.upTabActive(data.k) }, allDel() { this.activeBox = 0