Merge remote-tracking branch 'origin/master'
| | |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | </style> |
| | |
| | | upTestObject: "/capacityScope/upTestObject", //修改检测对象 |
| | | selectTestObjectByName: "/capacityScope/selectTestObjectByName", //获取检验对象枚举 |
| | | getInsProduction: "/capacityScope/getInsProduction", //设备里面选择检验项目(树形结构) |
| | | selectProductListByObjectId: "/capacityScope/selectProductListByObjectId", //维护检验对象的产品 |
| | | addProduct: "/capacityScope/addProduct", //新增产品 |
| | | delProduct: "/capacityScope/delProduct", //删除产品 |
| | | upProduct: "/capacityScope/upProduct", //修改产品 |
| | | getItemTree: "/capacityScope/getItemTree", //获取检验对象树 |
| | | } |
| | | |
| | | const laboratoryScope = { |
| | |
| | | background: transparent; |
| | | } |
| | | |
| | | .handleBtn:hover{ |
| | | .handleBtn:hover { |
| | | background: transparent; |
| | | } |
| | | |
| | | .handleBtn.is-disabled{ |
| | | .handleBtn.is-disabled { |
| | | color: #C0C4CC; |
| | | } |
| | | |
| | | </style> |
| | | <style> |
| | | /* .value-table .highlight-warning-row-border td { |
| | |
| | | width: 100%; |
| | | } |
| | | |
| | | .handleBtn.is-disabled .el-upload:focus{ |
| | | .handleBtn.is-disabled .el-upload:focus { |
| | | color: #C0C4CC !important; |
| | | } |
| | | .avatar-uploader .el-upload{ |
| | | |
| | | .avatar-uploader .el-upload { |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | <template> |
| | | <div class="value-table"> |
| | | <div class="table" :style="data.isPage!=undefined&&data.isPage!=true?'height:100%':''"> |
| | | <el-table ref="eltable" :data="tableData" style="width: 100%;" height="100%" |
| | | tooltip-effect="dark" border |
| | | <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" :row-class-name="tableRowClassName" |
| | | :row-key="record=>record.id" :current-row-key="data.currentId" |
| | | :highlight-current-row="data.highlight===undefined||data.highlight" |
| | | :summary-method="getSummaries" :row-class-name="tableRowClassName" :row-key="record=>record.id" |
| | | :current-row-key="data.currentId" :highlight-current-row="data.highlight===undefined||data.highlight" |
| | | :span-method="spanMethod"> |
| | | <el-table-column type="selection" width="65" v-if="data.showSelect" :key="Math.random()"> |
| | | </el-table-column> |
| | |
| | | <!-- 可操作行进行点击事件 --> |
| | | <span v-else-if="data.linkEvent&&showLink(a.label, data.linkEvent)" style="color:#409EFF;cursor: pointer;" |
| | | @click="handleLinkEvent(scope.row,data.linkEvent[a.label])">{{scope.row[a.label]}}</span> |
| | | <img style="width: 40px;height: 40px;margin-top: 10px;" :src="javaApi+'/img/'+scope.row[a.label]" v-else-if="showUpload(a.label)&&scope.row[a.label]" alt=""> |
| | | <span v-else-if="showCascader(a.label)&&scope.row[a.label]">{{handleTree(data.cascaderField[a.label].tree,scope.row[a.label].split(',')[scope.row[a.label].split(',').length-1])}}</span> |
| | | <span v-else>{{scope.row[a.label]}}</span> |
| | | <img style="width: 40px;height: 40px;margin-top: 10px;" :src="javaApi+'/img/'+scope.row[a.label]" |
| | | v-else-if="showUpload(a.label)&&scope.row[a.label]" alt=""> |
| | | <span v-else>{{scope.row[a.label]}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" align="center" label="操作" :width="getWidth()" v-if="data.do.length > 0"> |
| | | <template slot-scope="scope"> |
| | | <el-button v-for="(a, ai) in data.do" :key="ai" :type="a.type" |
| | | :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" |
| | | @click="main(scope.row, a)" class="handleBtn"> |
| | | :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" @click="main(scope.row, a)" |
| | | class="handleBtn"> |
| | | <span v-if="a.type!='upload'">{{a.font}}</span> |
| | | <el-upload |
| | | :action="javaApi+a.uploadConfig.url+'?id='+scope.row.id" |
| | | v-else |
| | | :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" |
| | | :on-success="handleSuccessUp" |
| | | :show-file-list="false" |
| | | :headers="token" |
| | | name="file" |
| | | :accept='a.uploadConfig.accept' |
| | | :on-error="onError" |
| | | ref='upload' |
| | | style="background: transparent;"> |
| | | <el-upload :action="javaApi+a.uploadConfig.url+'?id='+scope.row.id" v-else |
| | | :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" :on-success="handleSuccessUp" |
| | | :show-file-list="false" :headers="token" name="file" :accept='a.uploadConfig.accept' :on-error="onError" |
| | | ref='upload' style="background: transparent;"> |
| | | <span>{{a.font}}</span> |
| | | </el-upload> |
| | | </el-button> |
| | |
| | | <div class="page" v-if="data.isPage==undefined||data.isPage"> |
| | | <el-pagination @size-change="sizeChange" @current-change="currentChange" :current-page="page.current" |
| | | :page-sizes="[10, 20, 30, 50, 100]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total" > |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | <el-dialog title="编辑" :visible.sync="upDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'"> |
| | | <el-dialog title="编辑" :visible.sync="upDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'" append-to-body> |
| | | <div class="body" v-if="upDia" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;"> |
| | | <div v-if="data.row > 1"> |
| | | <div v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> |
| | |
| | | </el-col> |
| | | <el-col :span="16/data.row"> |
| | | <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`请输入${a.value}`" |
| | | v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" :disabled="isDisabled(a.label)"></el-input> |
| | | v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" |
| | | :disabled="isDisabled(a.label)"></el-input> |
| | | <el-select v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" size="small" |
| | | v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)" |
| | | clearable filterable> |
| | |
| | | :label="b.label"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-upload |
| | | :action="javaApi+data.addUploadConfig.url" |
| | | v-if="showUpload(a.label)" |
| | | :on-success="m=>handleSuccessUp(m, a.label)" |
| | | :show-file-list="false" |
| | | :headers="token" |
| | | name="file" |
| | | :multiple="false" |
| | | :accept='data.addUploadConfig.accept' |
| | | :on-error="onError" |
| | | ref='upload' |
| | | <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)" |
| | | :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" name="file" |
| | | :multiple="false" :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload' |
| | | class="avatar-uploader" |
| | | style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> |
| | | <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> |
| | | <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" |
| | | style="width: 80px;height: 80px;border-radius: 6px;"> |
| | | <i v-else class="el-icon-plus avatar-uploader-icon"></i> |
| | | </el-upload> |
| | | <el-cascader |
| | | :value="upData[a.label]" |
| | | :options="data.cascaderField[a.label].tree" |
| | | v-if="showCascader(a.label)" |
| | | :show-all-levels="false" |
| | | clearable |
| | | :props="data.cascaderField.props" |
| | | size="small" |
| | | style="width: 100%;" |
| | | @change="m=>handleCascader(m,a.label)"></el-cascader> |
| | | <el-cascader :value="upData[a.label]" :options="data.cascaderField[a.label].tree" |
| | | v-if="showCascader(a.label)" :placeholder="`请选择${a.value}`" clearable |
| | | :props="data.cascaderField.props" size="small" style="width: 100%;" |
| | | @change="m=>handleCascader(m,a.label)" filterable></el-cascader> |
| | | </el-col> |
| | | </div> |
| | | </div> |
| | |
| | | </el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`请输入${a.value}`" |
| | | v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" :disabled="isDisabled(a.label)"></el-input> |
| | | v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" |
| | | :disabled="isDisabled(a.label)"></el-input> |
| | | <el-select v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" size="small" |
| | | v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)" |
| | | clearable filterable> |
| | | <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" |
| | | :label="b.label"></el-option> |
| | | </el-select> |
| | | <el-upload |
| | | :action="javaApi+data.addUploadConfig.url" |
| | | v-if="showUpload(a.label)" |
| | | :multiple="false" |
| | | :on-success="m=>handleSuccessUp(m, a.label)" |
| | | :show-file-list="false" |
| | | :headers="token" |
| | | name="file" |
| | | :accept='data.addUploadConfig.accept' |
| | | :on-error="onError" |
| | | ref='upload' |
| | | class="avatar-uploader" |
| | | <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)" :multiple="false" |
| | | :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" name="file" |
| | | :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload' class="avatar-uploader" |
| | | style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> |
| | | <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> |
| | | <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" |
| | | style="width: 80px;height: 80px;border-radius: 6px;"> |
| | | <i v-else class="el-icon-plus avatar-uploader-icon"></i> |
| | | </el-upload> |
| | | <el-cascader :value="upData[a.label]" :options="data.cascaderField[a.label].tree" :show-all-levels="false" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props" size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader> |
| | | <el-cascader :value="upData[a.label]" :options="data.cascaderField[a.label].tree" :show-all-levels="false" |
| | | :placeholder="`请选择${a.value}`" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props" |
| | | size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)" filterable></el-cascader> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | |
| | | <el-button type="primary" @click="saveUpData" :loading="upLoad">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="新增" :visible.sync="addDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'"> |
| | | <div class="body" v-if="addDia" style="max-height: 550px;overflow-y: auto;padding: 5px 0;"> |
| | | <el-dialog title="新增" :visible.sync="addDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'" append-to-body> |
| | | <div class="body" v-if="addDia" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;"> |
| | | <div v-if="data.row > 1"> |
| | | <div v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> |
| | | <el-col :span="6/data.row" style="text-align: right;"><span class="required-span" |
| | |
| | | <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" |
| | | :label="b.label"></el-option> |
| | | </el-select> |
| | | <el-upload |
| | | :action="javaApi+data.addUploadConfig.url" |
| | | v-if="showUpload(a.label)" |
| | | :on-success="m=>handleSuccessUp(m, a.label)" |
| | | :show-file-list="false" |
| | | :headers="token" |
| | | :multiple="false" |
| | | name="file" |
| | | :accept='data.addUploadConfig.accept' |
| | | :on-error="onError" |
| | | ref='upload' |
| | | <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)" |
| | | :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" :multiple="false" |
| | | name="file" :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload' |
| | | class="avatar-uploader" |
| | | style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> |
| | | <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> |
| | | <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" |
| | | style="width: 80px;height: 80px;border-radius: 6px;"> |
| | | <i v-else class="el-icon-plus avatar-uploader-icon"></i> |
| | | </el-upload> |
| | | <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props" size="small" style="width: 100%;" :show-all-levels="false" @change="m=>handleCascader(m,a.label)"></el-cascader> |
| | | <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable |
| | | :placeholder="`请选择${a.value}`" :props="data.cascaderField.props" size="small" style="width: 100%;" |
| | | @change="m=>handleCascader(m,a.label)" filterable></el-cascader> |
| | | </el-col> |
| | | </div> |
| | | </div> |
| | |
| | | <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" |
| | | :label="b.label"></el-option> |
| | | </el-select> |
| | | <el-upload |
| | | :action="javaApi+data.addUploadConfig.url" |
| | | v-if="showUpload(a.label)" |
| | | :on-success="m=>handleSuccessUp(m, a.label)" |
| | | :show-file-list="false" |
| | | :headers="token" |
| | | name="file" |
| | | :multiple="false" |
| | | :accept='data.addUploadConfig.accept' |
| | | :on-error="onError" |
| | | ref='upload' |
| | | <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)" |
| | | :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" name="file" |
| | | :multiple="false" :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload' |
| | | class="avatar-uploader" |
| | | style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> |
| | | <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> |
| | | <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" |
| | | style="width: 80px;height: 80px;border-radius: 6px;"> |
| | | <i v-else class="el-icon-plus avatar-uploader-icon"></i> |
| | | </el-upload> |
| | | <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props" size="small" style="width: 100%;" :show-all-levels="false" @change="m=>handleCascader(m,a.label)"></el-cascader> |
| | | <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable |
| | | :placeholder="`请选择${a.value}`" :props="data.cascaderField.props" size="small" style="width: 100%;" |
| | | @change="m=>handleCascader(m,a.label)" filterable></el-cascader> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | |
| | | import { |
| | | Page |
| | | } from 'iview'; |
| | | import { data } from 'jquery'; |
| | | import { |
| | | data |
| | | } from 'jquery'; |
| | | export default { |
| | | props: { |
| | | tableRowClassName: { |
| | |
| | | }], |
| | | type: [], |
| | | uploadStr: "", |
| | | currentId:'',//当前高亮的ID |
| | | currentId: '', //当前高亮的ID |
| | | }, |
| | | tableHead: [], |
| | | tableData: [], |
| | |
| | | token: null, |
| | | fileList: [], |
| | | init: true, |
| | | spanList:[ |
| | | spanList: [ |
| | | // { |
| | | // arr:[], |
| | | // position:0 |
| | | // } |
| | | ], |
| | | specialSpanList:[ |
| | | specialSpanList: [ |
| | | // { |
| | | // arr:[], |
| | | // position:0 |
| | | // } |
| | | ], |
| | | param: {} |
| | | } |
| | | }, |
| | | watch: { |
| | |
| | | } |
| | | }, |
| | | }, |
| | | beforeUpdate() { |
| | | this.$nextTick(() => { |
| | | this.$refs.eltable.doLayout() |
| | | }) |
| | | }, |
| | | mounted() { |
| | | this.data = this.componentData |
| | | this.dataCopy = this.HaveJson(this.componentData) |
| | | if(this.data.init===undefined||this.data.init===true){ |
| | | if (this.data.init === undefined || this.data.init === true) { |
| | | this.selectList() |
| | | } |
| | | this.token = { |
| | |
| | | } |
| | | }); |
| | | }, |
| | | spanMethod({ row, column, rowIndex, columnIndex }){ |
| | | spanMethod({ |
| | | row, |
| | | column, |
| | | rowIndex, |
| | | columnIndex |
| | | }) { |
| | | // 一般的合并行 |
| | | if(this.data.spanConfig!=undefined&&this.data.spanConfig.rows&&this.data.spanConfig.rows.length>0){ |
| | | if (this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length > 0) { |
| | | let i = null; |
| | | let obj = this.data.spanConfig.rows.find((item,index)=>{ |
| | | let obj = this.data.spanConfig.rows.find((item, index) => { |
| | | i = index; |
| | | return item.index==columnIndex |
| | | return item.index == columnIndex |
| | | }) |
| | | if(obj){ |
| | | if (obj) { |
| | | const _row = this.spanList[i].arr[rowIndex]; |
| | | const _col = _row > 0 ? 1 : 0; |
| | | return { |
| | |
| | | } |
| | | } |
| | | // 特殊的合并行 |
| | | if(this.data.spanConfig!=undefined&&this.data.spanConfig.special&&this.data.spanConfig.special.main&&this.data.spanConfig.special.rows&&this.data.spanConfig.special.rows.length>0){ |
| | | if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special.main && |
| | | this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) { |
| | | let i = null; |
| | | let obj = this.data.spanConfig.special.rows.find((item,index)=>{ |
| | | let obj = this.data.spanConfig.special.rows.find((item, index) => { |
| | | i = index; |
| | | return item.index==columnIndex |
| | | return item.index == columnIndex |
| | | }) |
| | | if(obj){ |
| | | if (obj) { |
| | | const _row = this.specialSpanList[i].arr[rowIndex]; |
| | | const _col = _row > 0 ? 1 : 0; |
| | | return { |
| | |
| | | } else { |
| | | this.multipleSelection = val[val.length - 1]; |
| | | } |
| | | if(this.data.selectMethod!=undefined){ |
| | | if(this.$parent.$el.className.indexOf('el-')==0){ |
| | | if (this.data.selectMethod != undefined) { |
| | | if (this.$parent.$el.className.indexOf('el-') == 0) { |
| | | this.$parent.$parent[this.data.selectMethod](val) |
| | | }else{ |
| | | } else { |
| | | this.$parent[this.data.selectMethod](val) |
| | | } |
| | | } |
| | |
| | | }, |
| | | selectList() { |
| | | this.loading = true |
| | | if(this.data.isPage!=undefined&&this.data.isPage!=true){ |
| | | if (this.data.isPage != undefined && this.data.isPage != true) { |
| | | this.page = { |
| | | current: -1, |
| | | size: -1, |
| | |
| | | } |
| | | } |
| | | // 一般的合并行 |
| | | if(this.data.spanConfig!=undefined&&this.data.spanConfig.rows&&this.data.spanConfig.rows.length>0){ |
| | | if (this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length > |
| | | 0) { |
| | | this.spanList = []; |
| | | this.data.spanConfig.rows.forEach((item,index)=>{ |
| | | this.data.spanConfig.rows.forEach((item, index) => { |
| | | this.spanList.push({ |
| | | arr:[], |
| | | position:0 |
| | | arr: [], |
| | | position: 0 |
| | | }) |
| | | this.rowspan(this.spanList[index].arr, this.spanList[index].position, item.name); |
| | | }) |
| | | } |
| | | // 特殊的合并行 |
| | | if(this.data.spanConfig!=undefined&&this.data.spanConfig.special&&this.data.spanConfig.special.main&&this.data.spanConfig.special.rows&&this.data.spanConfig.special.rows.length>0){ |
| | | if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special |
| | | .main && this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) { |
| | | this.specialSpanList = [] |
| | | this.data.spanConfig.special.rows.forEach((item,index)=>{ |
| | | this.data.spanConfig.special.rows.forEach((item, index) => { |
| | | this.specialSpanList.push({ |
| | | arr:[], |
| | | position:0 |
| | | arr: [], |
| | | position: 0 |
| | | }) |
| | | this.rowspan(this.specialSpanList[index].arr, this.specialSpanList[index].position, this.data.spanConfig.special.main); |
| | | this.rowspan(this.specialSpanList[index].arr, this.specialSpanList[index].position, this.data |
| | | .spanConfig.special.main); |
| | | }) |
| | | } |
| | | this.loading = false |
| | |
| | | showUpload(label){ |
| | | if(this.data.addUpload&&this.data.addUpload.find(m=>m==label)){ |
| | | return true; |
| | | }else{ |
| | | } else { |
| | | return false; |
| | | } |
| | | }, |
| | | showCascader(label){ |
| | | if(this.data.cascaderField&&this.data.cascaderField[label]){ |
| | | showCascader(label) { |
| | | if (this.data.cascaderField && this.data.cascaderField[label]) { |
| | | return true; |
| | | }else{ |
| | | } else { |
| | | return false; |
| | | } |
| | | }, |
| | | handleTree(arr,value){ |
| | | handleTree(arr, value) { |
| | | let label = '' |
| | | for (let i = 0; i < arr.length; i++) { |
| | | if(arr[i].id==value){ |
| | | if (arr[i].id == value) { |
| | | label = arr[i].name |
| | | return label |
| | | }else if(arr[i].children){ |
| | | label = this.handleTree(arr[i].children,value) |
| | | } else if (arr[i].children) { |
| | | label = this.handleTree(arr[i].children, value) |
| | | } |
| | | } |
| | | return label |
| | |
| | | this.upDia = true, |
| | | this.upData = this.HaveJson(row) |
| | | this.upHead = this.HaveJson(this.tableHead) |
| | | this.upHead.forEach((item,index)=>{ |
| | | if(this.data.cascaderField&&this.data.cascaderField[item.label]){ |
| | | if(this.upData[item.label]){ |
| | | this.upData[item.label] = this.upData[item.label].split(',').map(m=>Number(m)); |
| | | }else{ |
| | | this.upHead.forEach((item, index) => { |
| | | if (this.data.cascaderField && this.data.cascaderField[item.label]) { |
| | | if (this.upData[item.label]) { |
| | | this.upData[item.label] = JSON.parse(this.upData[item.label]) |
| | | } else { |
| | | this.upData[item.label] = [] |
| | | } |
| | | } |
| | |
| | | this.upData[a] = JSON.stringify(this.upData[a]) |
| | | } |
| | | } |
| | | this.upHead.forEach((item,index)=>{ |
| | | if(this.data.cascaderField&&this.data.cascaderField[item.label]){ |
| | | if(this.upData[item.label]){ |
| | | this.upData[item.label] = this.upData[item.label].join(','); |
| | | }else{ |
| | | this.upHead.forEach((item, index) => { |
| | | if (this.data.cascaderField && this.data.cascaderField[item.label]) { |
| | | if (this.upData[item.label]) { |
| | | this.upData[item.label] = JSON.stringify(this.upData[item.label]) |
| | | } else { |
| | | this.upData[item.label] = '' |
| | | } |
| | | } |
| | |
| | | this.upLoad = false |
| | | }) |
| | | }, |
| | | openAddDia(addUrl) { |
| | | openAddDia(addUrl, param) { |
| | | this.addDia = true |
| | | this.addUrl = addUrl |
| | | this.param = param |
| | | this.upData = {} |
| | | this.tableHead.forEach((k, v) => { |
| | | if (k.label != 'orderBy' && k.label != 'createTime' && k.label != 'updateTime' && k.label != |
| | |
| | | } |
| | | } |
| | | this.addLoad = true |
| | | this.upHead.forEach((item,index)=>{ |
| | | if(this.data.cascaderField&&this.data.cascaderField[item.label]){ |
| | | if(this.upData[item.label]){ |
| | | this.upData[item.label] = this.upData[item.label].join(','); |
| | | }else{ |
| | | this.upHead.forEach((item, index) => { |
| | | if (this.data.cascaderField && this.data.cascaderField[item.label]) { |
| | | if (this.upData[item.label]) { |
| | | this.upData[item.label] = JSON.stringify(this.upData[item.label]) |
| | | } else { |
| | | this.upData[item.label] = '' |
| | | } |
| | | } |
| | | }) |
| | | if (this.param !== undefined && this.param !== null) { |
| | | for (let i in this.param) { |
| | | this.upData[i] = this.param[i] |
| | | } |
| | | } |
| | | this.$axios.post(this.addUrl, this.upData, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | |
| | | }) |
| | | return count * 15 + 60 + 'px' |
| | | }, |
| | | handleSuccessUp(response,label){ |
| | | if(typeof label === 'string'){ |
| | | if(response.code==200){ |
| | | handleSuccessUp(response, label) { |
| | | if (typeof label === 'string') { |
| | | if (response.code == 200) { |
| | | this.upData[label] = response.data.url; |
| | | } |
| | | }else{ |
| | | if(response.code==200){ |
| | | } else { |
| | | if (response.code == 200) { |
| | | this.$message.success('上传成功') |
| | | this.selectList() |
| | | } |
| | | } |
| | | }, |
| | | handleCascader(e,label){ |
| | | handleCascader(e, label) { |
| | | this.upData[label] = e; |
| | | }, |
| | | // 批量删除 |
| | | batchDelete(){ |
| | | if(this.multipleSelection&&this.multipleSelection.length>0){ |
| | | batchDelete() { |
| | | if (this.multipleSelection && this.multipleSelection.length > 0) { |
| | | this.$confirm('是否删除选中的数据?', "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | |
| | | this.$message.error('删除失败') |
| | | }) |
| | | }).catch(() => {}) |
| | | }else{ |
| | | } else { |
| | | this.$message.error('请选择要删除的数据') |
| | | } |
| | | }, |
| | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .bodys { |
| | | height: 100%; |
| | | } |
| | | .bodys { |
| | | height: 100%; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_thing { |
| | | width: 350px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .search_thing { |
| | | width: 350px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 110px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | .search_label { |
| | | width: 110px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | } |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | } |
| | | </style> |
| | | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div> |
| | | <el-row class="title"> |
| | | <el-col :span="12"> |
| | | <el-radio-group v-model="radio" @input="selectorSwitch" size="medium" fill="#3A7BFA" v-if="select==3"> |
| | | <el-radio-button label="0">检验项目参数</el-radio-button> |
| | | <el-radio-button label="1">检验对象</el-radio-button> |
| | | </el-radio-group> |
| | | <el-button size="medium" type="primary" v-else-if="select==1">检验项目参数</el-button> |
| | | <el-button size="medium" type="primary" v-else-if="select==2">检验对象</el-button> |
| | | </el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">新增</el-button> |
| | | <el-button size="medium" icon="el-icon-delete">删除</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-if="radio==0" class="bodys"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">检验项:</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable |
| | | v-model="itemParameterData.entity.inspectionItem" @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="itemParameterData.entity.inspectionItemSubclass" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <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> |
| | | <div class="table"> |
| | | <ValueTable ref="itemParameterTable" :url="$api.capacityScope.selectItemParameterList" |
| | | :upUrl="$api.capacityScope.upItemParameter" :delUrl="$api.capacityScope.delItemParameter" |
| | | :componentData="itemParameterData" :key="upIndex" /> |
| | | </div> |
| | | </div> |
| | | <div class="bodys"> |
| | | <div class="search" v-if="radio==1"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">样品名称:</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable |
| | | v-model="testObjectData.entity.specimenName" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <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> |
| | | <div class="table" v-if="radio==1"> |
| | | <ValueTable ref="testObjectTable" :url="$api.capacityScope.selectTestObjectList" |
| | | :upUrl="$api.capacityScope.upTestObject" :delUrl="$api.capacityScope.delTestObject" |
| | | :componentData="testObjectData" :key="upIndex" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="capacity-scope"> |
| | | <div> |
| | | <el-row class="title"> |
| | | <el-col :span="12"> |
| | | <el-radio-group v-model="radio" @input="selectorSwitch" size="medium" fill="#3A7BFA" v-if="select==3"> |
| | | <el-radio-button label="0">检验项目参数</el-radio-button> |
| | | <el-radio-button label="1">检验对象</el-radio-button> |
| | | </el-radio-group> |
| | | <el-button size="medium" type="primary" v-else-if="select==1">检验项目参数</el-button> |
| | | <el-button size="medium" type="primary" v-else-if="select==2">检验对象</el-button> |
| | | </el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">新增</el-button> |
| | | <el-button size="medium" icon="el-icon-delete">删除</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-if="radio==0" class="bodys"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">检验项:</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable |
| | | v-model="itemParameterData.entity.inspectionItem" @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="itemParameterData.entity.inspectionItemSubclass" @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | </div> |
| | | <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> |
| | | <div class="table"> |
| | | <ValueTable ref="itemParameterTable" :url="$api.capacityScope.selectItemParameterList" |
| | | :upUrl="$api.capacityScope.upItemParameter" :delUrl="$api.capacityScope.delItemParameter" |
| | | :componentData="itemParameterData" :key="upIndex" /> |
| | | </div> |
| | | </div> |
| | | <div class="bodys"> |
| | | <div class="search" v-if="radio==1"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">检验对象:</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable |
| | | v-model="testObjectData.entity.specimenName" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <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> |
| | | <div class="table" v-if="radio==1"> |
| | | <ValueTable ref="testObjectTable" :url="$api.capacityScope.selectTestObjectList" |
| | | :upUrl="$api.capacityScope.upTestObject" :delUrl="$api.capacityScope.delTestObject" |
| | | :componentData="testObjectData" :key="upIndex" /> |
| | | </div> |
| | | </div> |
| | | <el-dialog title="产品维护" :visible.sync="diaProduct" width="600px"> |
| | | <div class="body" v-if="diaProduct" style="height: 350px;overflow-y: auto;padding: 5px 0;"> |
| | | <ValueTable ref="productData" :url="$api.capacityScope.selectProductListByObjectId" |
| | | :upUrl="$api.capacityScope.upProduct" :delUrl="$api.capacityScope.delProduct" |
| | | :componentData="productData" :key="upIndex" /> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="diaProduct = false">取 消</el-button> |
| | | <el-button type="primary" @click="openAdd2" :loading="productLoad">新 增</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from '../tool/value-table.vue' |
| | | export default { |
| | | components: { |
| | | ValueTable |
| | | }, |
| | | data() { |
| | | return { |
| | | radio: '-1', |
| | | showItemParameter: true, |
| | | showTestObject: false, |
| | | itemParameterData: { |
| | | entity: { |
| | | inspectionItem: null, |
| | | inspectionItemSubclass: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | isIndex: false, |
| | | showSelect: true, |
| | | select: true, |
| | | row: 2, |
| | | do: [{ |
| | | id: 'update', |
| | | font: '编辑', |
| | | type: 'text', |
| | | method: 'doDiy', |
| | | field: [] |
| | | }, { |
| | | id: 'delete', |
| | | font: '删除', |
| | | type: 'text', |
| | | method: 'doDiy' |
| | | }], |
| | | tagField: { |
| | | inspectionItemType: { |
| | | select: [] |
| | | }, |
| | | bsm:{ |
| | | select: [] |
| | | }, |
| | | inspectionValueType:{ |
| | | select:[] |
| | | }, |
| | | laboratory:{ |
| | | select:[] |
| | | }, |
| | | method:{select:[]}, |
| | | templateId:{ |
| | | select:[] |
| | | }, |
| | | sonLaboratory: {select:[]}, |
| | | unit: {select:[]}, |
| | | sample: {select:[]}, |
| | | dic: {select:[]}, |
| | | }, |
| | | selectField: { |
| | | inspectionItemType: { |
| | | select: [] |
| | | }, |
| | | bsm:{ |
| | | select: [] |
| | | }, |
| | | inspectionValueType:{ |
| | | select:[] |
| | | }, |
| | | laboratory:{ |
| | | select:[] |
| | | }, |
| | | templateId:{ |
| | | select:[] |
| | | }, |
| | | method:{select:[],choose: true}, |
| | | sample: {select:[]}, |
| | | sonLaboratory: {select:[]}, |
| | | unit: {select:[]}, |
| | | dic:{select:[]}, |
| | | }, |
| | | requiredAdd: ['sonLaboratory','inspectionItem', 'manHour', 'inspectionItemType','inspectionValueType','laboratory','unit','method','price','manDay','sample'], |
| | | requiredUp: ['sonLaboratory','inspectionItem', 'manHour', 'inspectionItemType','inspectionValueType','laboratory','unit','method','price','manDay','sample'] |
| | | }, |
| | | testObjectData: { |
| | | entity: { |
| | | specimenName: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | isIndex: false, |
| | | showSelect: true, |
| | | select: true, |
| | | do: [{ |
| | | id: 'update', |
| | | font: '编辑', |
| | | type: 'text', |
| | | method: 'doDiy', |
| | | field: ['createUserName', 'updateUserName'] |
| | | }, { |
| | | id: 'delete', |
| | | font: '删除', |
| | | type: 'text', |
| | | method: 'doDiy' |
| | | }], |
| | | tagField: {}, |
| | | selectField: {}, |
| | | requiredAdd: ['specimenName','code'], |
| | | requiredUp: ['specimenName','code'] |
| | | }, |
| | | itemParameterEntityCopy: {}, |
| | | testObjectDataEntityCopy: {}, |
| | | upIndex: 0, |
| | | addDia: false, |
| | | addPower: true, |
| | | select: 0 |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.itemParameterEntityCopy = this.HaveJson(this.itemParameterData.entity) |
| | | this.testObjectDataEntityCopy = this.HaveJson(this.testObjectData.entity) |
| | | this.selectEnumByCategory() |
| | | // this.selectEnumByCategoryForValue() |
| | | this.selectEnumByCategoryForSpecial() |
| | | this.selectEnumByCategoryForInspectionValueType() |
| | | this.obtainItemParameterList() |
| | | this.selectStandardMethods() |
| | | this.selectTestObjectByName() |
| | | this.getStandardTemplate() |
| | | this.selectEnumByCategoryForSLaboratory() |
| | | import ValueTable from '../tool/value-table.vue' |
| | | export default { |
| | | components: { |
| | | ValueTable |
| | | }, |
| | | data() { |
| | | return { |
| | | radio: '-1', |
| | | showItemParameter: true, |
| | | showTestObject: false, |
| | | itemParameterData: { |
| | | entity: { |
| | | inspectionItem: null, |
| | | inspectionItemSubclass: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | isIndex: false, |
| | | showSelect: true, |
| | | select: true, |
| | | row: 2, |
| | | do: [{ |
| | | id: 'update', |
| | | font: '编辑', |
| | | type: 'text', |
| | | method: 'doDiy', |
| | | field: [] |
| | | }, { |
| | | id: 'delete', |
| | | font: '删除', |
| | | type: 'text', |
| | | method: 'doDiy' |
| | | }], |
| | | tagField: { |
| | | inspectionItemType: { |
| | | select: [] |
| | | }, |
| | | bsm: { |
| | | select: [] |
| | | }, |
| | | inspectionValueType: { |
| | | select: [] |
| | | }, |
| | | laboratory: { |
| | | select: [] |
| | | }, |
| | | method: { |
| | | select: [] |
| | | }, |
| | | templateId: { |
| | | select: [] |
| | | }, |
| | | sonLaboratory: { |
| | | select: [] |
| | | }, |
| | | unit: { |
| | | select: [] |
| | | }, |
| | | dic: { |
| | | select: [] |
| | | }, |
| | | }, |
| | | selectField: { |
| | | inspectionItemType: { |
| | | select: [] |
| | | }, |
| | | bsm: { |
| | | select: [] |
| | | }, |
| | | inspectionValueType: { |
| | | select: [] |
| | | }, |
| | | laboratory: { |
| | | select: [] |
| | | }, |
| | | templateId: { |
| | | select: [] |
| | | }, |
| | | method: { |
| | | select: [], |
| | | choose: true |
| | | }, |
| | | sonLaboratory: { |
| | | select: [] |
| | | }, |
| | | unit: { |
| | | select: [] |
| | | }, |
| | | dic: { |
| | | select: [] |
| | | }, |
| | | }, |
| | | cascaderField:{ |
| | | sample:{ |
| | | tree:[] |
| | | }, |
| | | // 字段配置 |
| | | props:{ |
| | | value:'name', |
| | | label:'name', |
| | | checkStrictly: false |
| | | } |
| | | }, |
| | | requiredAdd: ['sonLaboratory', 'inspectionItem', 'manHour', 'inspectionItemType', 'inspectionValueType', |
| | | 'unit', 'method', 'price', 'manDay' |
| | | ], |
| | | requiredUp: ['sonLaboratory', 'inspectionItem', 'manHour', 'inspectionItemType', 'inspectionValueType', |
| | | 'unit', 'method', 'price', 'manDay' |
| | | ] |
| | | }, |
| | | testObjectData: { |
| | | entity: { |
| | | specimenName: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | isIndex: false, |
| | | showSelect: true, |
| | | select: true, |
| | | do: [{ |
| | | id: 'update', |
| | | font: '编辑', |
| | | type: 'text', |
| | | method: 'doDiy', |
| | | field: ['createUserName', 'updateUserName', 'product'] |
| | | }, { |
| | | id: 'delete', |
| | | font: '删除', |
| | | type: 'text', |
| | | method: 'doDiy' |
| | | }, { |
| | | font: '产品维护', |
| | | type: 'text', |
| | | method: 'upProduct' |
| | | }], |
| | | tagField: { |
| | | laboratoryId: { |
| | | select: [] |
| | | } |
| | | }, |
| | | selectField: { |
| | | laboratoryId: { |
| | | select: [] |
| | | } |
| | | }, |
| | | requiredAdd: ['specimenName', 'code', 'laboratoryId'], |
| | | requiredUp: ['specimenName', 'code', 'laboratoryId'] |
| | | }, |
| | | itemParameterEntityCopy: {}, |
| | | testObjectDataEntityCopy: {}, |
| | | upIndex: 0, |
| | | addDia: false, |
| | | addPower: true, |
| | | select: 0, |
| | | laboratory: [], |
| | | productLoad: false, |
| | | diaProduct: false, |
| | | productData: { |
| | | entity: { |
| | | objectId: 0, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | isPage: false, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: true, |
| | | do: [{ |
| | | id: 'update', |
| | | font: '编辑', |
| | | type: 'text', |
| | | method: 'doDiy', |
| | | field: [] |
| | | }, { |
| | | id: 'delete', |
| | | font: '删除', |
| | | type: 'text', |
| | | method: 'doDiy' |
| | | }], |
| | | tagField: {}, |
| | | selectField: {}, |
| | | requiredAdd: ['name','nameEn'], |
| | | requiredUp: ['name','nameEn'] |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.itemParameterEntityCopy = this.HaveJson(this.itemParameterData.entity) |
| | | this.testObjectDataEntityCopy = this.HaveJson(this.testObjectData.entity) |
| | | this.selectEnumByCategory() |
| | | // this.selectEnumByCategoryForValue() |
| | | this.selectEnumByCategoryForSpecial() |
| | | this.selectEnumByCategoryForInspectionValueType() |
| | | this.obtainItemParameterList() |
| | | this.selectStandardMethods() |
| | | this.selectTestObjectByName() |
| | | this.getStandardTemplate() |
| | | this.selectEnumByCategoryForSLaboratory() |
| | | this.selectDocUnit() |
| | | this.selectEnumByCategoryForUnit() |
| | | this.getPower('0') |
| | | }, |
| | | methods: { |
| | | selectorSwitch(radio) { |
| | | if (this.radio === '0') { |
| | | this.showItemParameter = true; |
| | | this.showTestObject = false; |
| | | /* this.$nextTick(() => { |
| | | this.$refs.itemParameterTable.selectList() |
| | | }) */ |
| | | } else { |
| | | this.showTestObject = true; |
| | | this.showItemParameter = false; |
| | | } |
| | | this.getPower(radio) |
| | | }, |
| | | refreshTable() { |
| | | if (this.radio === '0') { |
| | | this.$refs['itemParameterTable'].selectList() |
| | | } else { |
| | | this.$refs['testObjectTable'].selectList() |
| | | } |
| | | }, |
| | | refresh() { |
| | | this.itemParameterData.entity = this.HaveJson(this.itemParameterEntityCopy) |
| | | this.testObjectData.entity = this.HaveJson(this.testObjectDataEntityCopy) |
| | | this.upIndex++ |
| | | }, |
| | | openAdd() { |
| | | if (this.radio === '0') { |
| | | this.$refs.itemParameterTable.openAddDia(this.$api.capacityScope.addItemParameter); |
| | | } else { |
| | | this.$refs.testObjectTable.openAddDia(this.$api.capacityScope.addTestObject); |
| | | } |
| | | }, |
| | | selectEnumByCategory() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "检验项类型" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.inspectionItemType.select = res.data |
| | | res.data[1].type = 'info' |
| | | this.itemParameterData.tagField.inspectionItemType.select = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForValue() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "取值类型" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.valueType.select = res.data |
| | | this.itemParameterData.tagField.valueType.select = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForSpecial() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "是否" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.bsm.select = res.data |
| | | this.itemParameterData.tagField.bsm.select = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForInspectionValueType() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "检验值类型" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.inspectionValueType.select = res.data |
| | | this.itemParameterData.tagField.inspectionValueType.select = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForSLaboratory() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "子实验室" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.sonLaboratory.select = res.data |
| | | this.itemParameterData.tagField.sonLaboratory.select = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForUnit() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "单位" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.unit.select = res.data |
| | | this.itemParameterData.tagField.unit.select = res.data |
| | | }) |
| | | }, |
| | | this.selectEnumByCategoryForUnit() |
| | | this.getPower('0') |
| | | }, |
| | | methods: { |
| | | selectorSwitch(radio) { |
| | | if (this.radio === '0') { |
| | | this.showItemParameter = true; |
| | | this.showTestObject = false; |
| | | /* this.$nextTick(() => { |
| | | this.$refs.itemParameterTable.selectList() |
| | | }) */ |
| | | } else { |
| | | this.showTestObject = true; |
| | | this.showItemParameter = false; |
| | | } |
| | | this.getPower(radio) |
| | | }, |
| | | refreshTable() { |
| | | if (this.radio === '0') { |
| | | this.$refs['itemParameterTable'].selectList() |
| | | } else { |
| | | this.$refs['testObjectTable'].selectList() |
| | | } |
| | | }, |
| | | refresh() { |
| | | this.itemParameterData.entity = this.HaveJson(this.itemParameterEntityCopy) |
| | | this.testObjectData.entity = this.HaveJson(this.testObjectDataEntityCopy) |
| | | this.upIndex++ |
| | | }, |
| | | openAdd() { |
| | | if (this.radio === '0') { |
| | | this.$refs.itemParameterTable.openAddDia(this.$api.capacityScope.addItemParameter); |
| | | } else { |
| | | this.$refs.testObjectTable.openAddDia(this.$api.capacityScope.addTestObject); |
| | | } |
| | | }, |
| | | selectEnumByCategory() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "检验项类型" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.inspectionItemType.select = res.data |
| | | res.data[1].type = 'info' |
| | | this.itemParameterData.tagField.inspectionItemType.select = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForValue() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "取值类型" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.valueType.select = res.data |
| | | this.itemParameterData.tagField.valueType.select = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForSpecial() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "是否" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.bsm.select = res.data |
| | | this.itemParameterData.tagField.bsm.select = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForInspectionValueType() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "检验值类型" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.inspectionValueType.select = res.data |
| | | this.itemParameterData.tagField.inspectionValueType.select = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForSLaboratory() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "子实验室" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.sonLaboratory.select = res.data |
| | | this.itemParameterData.tagField.sonLaboratory.select = res.data |
| | | }) |
| | | }, |
| | | selectEnumByCategoryForUnit() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "单位" |
| | | }).then(res => { |
| | | this.itemParameterData.selectField.unit.select = res.data |
| | | this.itemParameterData.tagField.unit.select = res.data |
| | | }) |
| | | }, |
| | | selectDocUnit() { |
| | | this.$axios.post(this.$api.enums.getDic).then(res => { |
| | | this.itemParameterData.selectField.dic.select = res.data.map(m=>{ |
| | | this.$axios.post(this.$api.enums.getDic).then(res => { |
| | | this.itemParameterData.selectField.dic.select = res.data.map(m => { |
| | | return { |
| | | label: m, |
| | | value:m |
| | | value: m |
| | | } |
| | | }) |
| | | this.itemParameterData.tagField.dic.select = res.data.map(m=>{ |
| | | this.itemParameterData.tagField.dic.select = res.data.map(m => { |
| | | return { |
| | | label: m, |
| | | value:m |
| | | value: m |
| | | } |
| | | }) |
| | | }) |
| | | }, |
| | | obtainItemParameterList() { |
| | | this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a=>{ |
| | | data.push({ |
| | | label: a.laboratoryName, |
| | | value: a.laboratoryName |
| | | }) |
| | | }) |
| | | this.itemParameterData.selectField.laboratory.select = data |
| | | this.itemParameterData.tagField.laboratory.select = data |
| | | }) |
| | | }, |
| | | selectStandardMethods() { |
| | | this.$axios.get(this.$api.standardMethod.selectStandardMethods).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a=>{ |
| | | data.push({ |
| | | label: a.code, |
| | | value: a.code |
| | | }) |
| | | }) |
| | | this.itemParameterData.selectField.method.select = data |
| | | this.itemParameterData.tagField.method.select = data |
| | | }) |
| | | }, |
| | | selectTestObjectByName() { |
| | | this.$axios.get(this.$api.capacityScope.selectTestObjectByName).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.specimenName, |
| | | value: a.id, |
| | | type: 'success' |
| | | }) |
| | | }) |
| | | this.itemParameterData.selectField.sample.select = data |
| | | this.itemParameterData.tagField.sample.select = data |
| | | }) |
| | | }, |
| | | getStandardTemplate() { |
| | | this.$axios.get(this.$api.StandardTemplate.getStandardTemplate).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id, |
| | | type: 'success' |
| | | }) |
| | | }) |
| | | this.itemParameterData.selectField.templateId.select = data |
| | | this.itemParameterData.tagField.templateId.select = data |
| | | }) |
| | | }, |
| | | // 权限分配 |
| | | getPower(radio) { |
| | | let power = JSON.parse(sessionStorage.getItem('power')) |
| | | let up = false |
| | | let add = false |
| | | let del = false |
| | | let select = 0 |
| | | for (var i = 0; i < power.length; i++) { |
| | | if (power[i].menuMethod == 'selectItemParameterList') { |
| | | select += 1 |
| | | } |
| | | if (power[i].menuMethod == 'selectTestObjectList') { |
| | | select += 2 |
| | | } |
| | | if (this.radio === '0') { |
| | | if (power[i].menuMethod == 'upItemParameter') { |
| | | up = true |
| | | } |
| | | if (power[i].menuMethod == 'delItemParameter') { |
| | | del = true |
| | | } |
| | | if (power[i].menuMethod == 'addItemParameter') { |
| | | add = true |
| | | } |
| | | } else { |
| | | if (power[i].menuMethod == 'upTestObject') { |
| | | up = true |
| | | } |
| | | if (power[i].menuMethod == 'delTestObject') { |
| | | del = true |
| | | } |
| | | if (power[i].menuMethod == 'addTestObject') { |
| | | add = true |
| | | } |
| | | } |
| | | } |
| | | if (this.radio === '0') { |
| | | if (!del) { |
| | | this.itemParameterData.do.splice(1, 1) |
| | | } |
| | | if (!up) { |
| | | this.itemParameterData.do.splice(0, 1) |
| | | } |
| | | } else { |
| | | if (!del) { |
| | | this.testObjectData.do.splice(1, 1) |
| | | } |
| | | if (!up) { |
| | | this.testObjectData.do.splice(0, 1) |
| | | } |
| | | } |
| | | this.addPower = add |
| | | this.select = select |
| | | if (select == 1 || select == 3) this.radio = radio |
| | | else if (select == 2) this.radio = '1' |
| | | else this.radio = '-1' |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | obtainItemParameterList() { |
| | | this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.laboratoryName, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | this.itemParameterData.selectField.laboratory.select = data |
| | | this.itemParameterData.tagField.laboratory.select = data |
| | | this.testObjectData.selectField.laboratoryId.select = data |
| | | this.testObjectData.tagField.laboratoryId.select = data |
| | | this.laboratory = data |
| | | }) |
| | | }, |
| | | selectStandardMethods() { |
| | | this.$axios.get(this.$api.standardMethod.selectStandardMethods).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.code, |
| | | value: a.code |
| | | }) |
| | | }) |
| | | this.itemParameterData.selectField.method.select = data |
| | | this.itemParameterData.tagField.method.select = data |
| | | }) |
| | | }, |
| | | selectTestObjectByName() { |
| | | this.$axios.get(this.$api.capacityScope.getItemTree).then(res => { |
| | | res.data.forEach(a=>{ |
| | | this.cascaderFieldData(a) |
| | | }) |
| | | this.itemParameterData.cascaderField.sample.tree = res.data |
| | | }) |
| | | }, |
| | | cascaderFieldData(val){ |
| | | if(val.children === undefined) { |
| | | return |
| | | }else if(val.children.length==0){[ |
| | | delete val.children |
| | | ]}else{ |
| | | val.children.forEach(a=>{ |
| | | this.cascaderFieldData(a) |
| | | }) |
| | | } |
| | | }, |
| | | getStandardTemplate() { |
| | | this.$axios.get(this.$api.StandardTemplate.getStandardTemplate).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id, |
| | | type: 'success' |
| | | }) |
| | | }) |
| | | this.itemParameterData.selectField.templateId.select = data |
| | | this.itemParameterData.tagField.templateId.select = data |
| | | }) |
| | | }, |
| | | // 权限分配 |
| | | getPower(radio) { |
| | | let power = JSON.parse(sessionStorage.getItem('power')) |
| | | let up = false |
| | | let add = false |
| | | let del = false |
| | | let product = false |
| | | let select = 0 |
| | | for (var i = 0; i < power.length; i++) { |
| | | if (power[i].menuMethod == 'selectItemParameterList') { |
| | | select += 1 |
| | | } |
| | | if (power[i].menuMethod == 'selectTestObjectList') { |
| | | select += 2 |
| | | } |
| | | if (this.radio === '0') { |
| | | if (power[i].menuMethod == 'upItemParameter') { |
| | | up = true |
| | | } |
| | | if (power[i].menuMethod == 'delItemParameter') { |
| | | del = true |
| | | } |
| | | if (power[i].menuMethod == 'addItemParameter') { |
| | | add = true |
| | | } |
| | | } else { |
| | | if (power[i].menuMethod == 'upTestObject') { |
| | | up = true |
| | | } |
| | | if (power[i].menuMethod == 'delTestObject') { |
| | | del = true |
| | | } |
| | | if (power[i].menuMethod == 'addTestObject') { |
| | | add = true |
| | | } |
| | | if (power[i].menuMethod == 'selectProductListByObjectId') { |
| | | product = true |
| | | } |
| | | } |
| | | } |
| | | if (this.radio === '0') { |
| | | if (!del) { |
| | | this.itemParameterData.do.splice(1, 1) |
| | | } |
| | | if (!up) { |
| | | this.itemParameterData.do.splice(0, 1) |
| | | } |
| | | } else { |
| | | if (!product) { |
| | | this.testObjectData.do.splice(2, 1) |
| | | } |
| | | if (!del) { |
| | | this.testObjectData.do.splice(1, 1) |
| | | } |
| | | if (!up) { |
| | | this.testObjectData.do.splice(0, 1) |
| | | } |
| | | } |
| | | this.addPower = add |
| | | this.select = select |
| | | if (select == 1 || select == 3) this.radio = radio |
| | | else if (select == 2) this.radio = '1' |
| | | else this.radio = '-1' |
| | | }, |
| | | upProduct(row) { |
| | | this.productData.entity.objectId = row.id |
| | | this.diaProduct = true |
| | | }, |
| | | openAdd2(){ |
| | | this.$refs.productData.openAddDia(this.$api.capacityScope.addProduct, {objectId: this.productData.entity.objectId}); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | |
| | | type: 'text', |
| | | method: 'fileManagement' |
| | | }], |
| | | tagField: {}, |
| | | tagField: { |
| | | type:{ |
| | | select:[] |
| | | } |
| | | }, |
| | | selectField: {}, |
| | | requiredAdd: ['laboratoryName', 'laboratoryNumber', 'head', 'phoneNumber'], |
| | | requiredUp: ['laboratoryName', 'laboratoryNumber', 'head', 'phoneNumber'] |
| | |
| | | showSelect: false, |
| | | select: false, |
| | | do: [], |
| | | tagField: { |
| | | type:{ |
| | | select:[] |
| | | } |
| | | }, |
| | | tagField: {}, |
| | | selectField: { |
| | | type:{ |
| | | select:[] |
| | |
| | | props: { multiple: false,emitPath:false,}, |
| | | options:[ |
| | | { |
| | | value:0, |
| | | value:'实验室资质', |
| | | label:'实验室资质', |
| | | children:[] |
| | | }, |
| | | { |
| | | value:1, |
| | | value:'额外类型', |
| | | label:'额外类型', |
| | | children:null |
| | | }, |
| | |
| | | return |
| | | } |
| | | let arr = res.data.body.records.map(m=>{ |
| | | m.value = m.id; |
| | | m.value = m.name; |
| | | m.label = m.name; |
| | | return m |
| | | }) |
| | |
| | | let up = false |
| | | let del = false |
| | | let add = false |
| | | let file = false |
| | | let file = false |
| | | for (var i = 0; i < power.length; i++) { |
| | | if (power[i].menuMethod == 'upParameter') { |
| | | up = true |
| | |
| | | v-model="formData.explanation"></el-input> |
| | | </div> |
| | | </div> |
| | | <!-- <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" |
| | | type="datetime" |
| | | size="small" |
| | | format="yyyy-MM-dd HH:mm:ss" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | clearable |
| | | placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </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.recentlyTime" |
| | | <el-date-picker style="width:100%" v-model="formData.dateOfIssuance" |
| | | type="datetime" |
| | | size="small" |
| | | format="yyyy-MM-dd HH:mm:ss" |
| | |
| | | placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | <div class="search_thing" style="margin-bottom: 16px;"> |
| | | <div class="search_label" style="width:120px"><span class="required-span">* </span>到期时间:</div> |
| | | <div class="search_input"> |
| | |
| | | <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="dialogVisible2 = true">新增</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">状态:</div> |
| | | <el-select v-model="componentData.entity.deviceStatus" placeholder="全部"> |
| | | <el-select v-model="componentData.entity.deviceStatus" placeholder="全部" size="small"> |
| | | <el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable |
| | | v-model="componentData.entity.specificationModel" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">设备分类:</div> |
| | | <el-select v-model="componentData.entity.largeCategory" placeholder="请选择"> |
| | | <el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <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> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <el-button size="medium" type="primary" @click="dialogVisible2 = true">新增</el-button> |
| | | </el-col> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | |
| | | |
| | | //本地 |
| | | 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';//测试服 |
| | | //胜云服务器 |