From 23052b941c61d99716d6ac1e693ab2bfce66b878 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期五, 14 六月 2024 13:34:12 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/center-lims-before into master --- src/components/view/b2-standard.vue | 86 +++++++++++ src/components/do/b1-ins-order/add.vue | 4 src/components/do/b1-ins-order/cable-config.vue | 255 +++++++++++++++++++++++++++++------ src/components/view/a5-capacity-scope.vue | 11 src/main.js | 25 ++- src/assets/api/controller.js | 1 6 files changed, 315 insertions(+), 67 deletions(-) diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index 2f5338c..cf0ed4b 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -209,6 +209,7 @@ upStandardProducts: "/standardTree/upStandardProducts", //鑾峰彇浜у搧鏋舵瀯 selectStandardProductEnumByMethodId: "/standardTree/selectStandardProductEnumByMethodId", //鎵归噺缂栬緫鏌ヨ鎵�鏈夋楠岄」鐩拰妫�楠屽瓙椤规灇涓� getStandTreeBySampleType: "/standardTree/getStandTreeBySampleType", //浠呰幏鍙栧厜绾ょ殑鍨嬪彿 + inExcelOfTree: "/standardTree/inExcelOfTree", //瀵煎叆鏍囧噯搴� } const standardMethod = { diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue index e0749b0..ffa7fc9 100644 --- a/src/components/do/b1-ins-order/add.vue +++ b/src/components/do/b1-ins-order/add.vue @@ -997,7 +997,7 @@ return a })), pairing: JSON.stringify(this.bsm2Val2) - }) + }) }).then(res => { this.saveLoad = false if (res.code == 201) return @@ -1159,6 +1159,8 @@ this.sample.insProduct = [] this.sample.id = this.count this.sample.childSampleList = [] + this.sample.insulating = null + this.sample.sheath = null this.sampleList.push(this.HaveJson(this.sample)) this.count++ } diff --git a/src/components/do/b1-ins-order/cable-config.vue b/src/components/do/b1-ins-order/cable-config.vue index 652cb96..897a0b6 100644 --- a/src/components/do/b1-ins-order/cable-config.vue +++ b/src/components/do/b1-ins-order/cable-config.vue @@ -7,47 +7,67 @@ <el-button size="medium" @click="outConfig"> <span style="color: #3A7BFA;">杩� 鍥�</span> </el-button> + <el-button size="medium" type="primary" @click="save">淇� 瀛�</el-button> </el-col> </el-row> </div> <div class="search"> - <el-radio-group v-model="currentTab" size="small" style="margin-left: 20px;"> + <el-radio-group v-model="currentTab" size="small" style="margin-left: 20px;" @input="changeTab"> <el-radio-button label="缁濈紭">缁� 缂�</el-radio-button> <el-radio-button label="鎶ゅ">鎶� 濂�</el-radio-button> </el-radio-group> <div class="search_thing" v-if="currentTab=='缁濈紭'"> <div class="search_label">鑺暟锛�</div> <el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="vaule0"></el-input> + v-model="insulating.num"></el-input> </div> - <el-button size="small" type="primary"@click="openAdd" style="margin-left: 20px;margin-right: 20px;" v-if="currentTab=='缁濈紭'"> - 纭� 瀹�</el-button> - <div class="search_thing"> + <div class="search_thing" v-if="currentTab=='缁濈紭'"> <div class="search_label">妫�楠屾爣鍑嗭細</div> - <el-select v-model="vaule0" placeholder="璇烽�夋嫨妫�楠屾爣鍑�" size="small" - clearable> - <el-option v-for="item in standardList" :key="item.value" :label="item.label" :value="item.value"> + <el-select v-model="insulating.standardMethodListId" placeholder="璇烽�夋嫨妫�楠屾爣鍑�" size="small" + @change="(value)=>methodChange(value)"> + <el-option v-for="item in standards" :key="item.id" :label="item.code" :value="item.id"> </el-option> </el-select> </div> - <div class="search_thing" style="padding-left: 30px;"> - <el-button size="small" type="primary"@click="openAdd">淇� 瀛�</el-button> + <div class="search_thing" v-if="currentTab=='鎶ゅ'"> + <div class="search_label">妫�楠屾爣鍑嗭細</div> + <el-select v-model="sheath.standardMethodListId" placeholder="璇烽�夋嫨妫�楠屾爣鍑�" size="small" + @change="(value)=>methodChange(value)"> + <el-option v-for="item in standards" :key="item.id" :label="item.code" :value="item.id"> + </el-option> + </el-select> </div> </div> <div class="table"> - <ValueTable ref="ValueTable" - :url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" - :componentData="componentData" :key="upIndex" /> + <el-table class="el-table" ref="productTable" :data="productList" height="100%" tooltip-effect="dark" border + @selection-change="selectProduct" style="margin-bottom: 10px;" @select="upProductSelect" + :row-class-name="tableRowClassName" @select-all="handleAll"> + <el-table-column type="selection" width="65" :selectable="selectable"></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="瀛愬疄楠屽" min-width="130" show-overflow-tooltip></el-table-column> + <el-table-column prop="methodS" label="璇曢獙鏂规硶" min-width="120" show-overflow-tooltip> + </el-table-column> + <el-table-column prop="unit" label="璁¢噺鍗曚綅" width="100" show-overflow-tooltip></el-table-column> + <el-table-column prop="price" label="鍗曚环" width="100" show-overflow-tooltip></el-table-column> + <el-table-column prop="section" label="鍖洪棿" min-width="120" show-overflow-tooltip></el-table-column> + <el-table-column prop="ask" label="瑕佹眰鍊�" min-width="220px"> + <template slot-scope="scope"> + <el-input size="small" placeholder="瑕佹眰鍊�" v-model="scope.row.ask" clearable type="textarea" + :autosize="{ minRows: 1, maxRows: 3}" @change="e=>requestChange(e,scope.row)" + v-if="active==1&&isAskOnlyRead"></el-input> + <span v-else>{{ scope.row.ask }}</span> + </template> + </el-table-column> + </el-table> </div> </div> </template> <script> -import ValueTable from '../../tool/value-table.vue' +import { Tree } from 'element-ui' export default { - components: { - ValueTable - }, props: { active: { type: Number, @@ -59,42 +79,167 @@ standardList:[], vaule0:'', currentTab:'缁濈紭', - componentData: { - entity: { - number: null, - department: null, - laboratory: null, - orderBy: { - field: 'id', - order: 'desc' - } - }, - isIndex: true, - showSelect: true, - select: true, - do: [], - tagField: {}, - linkEvent: { - }, - selectField: { - laboratory: { - select: [] - }, - unit: { - select: [] - }, - - }, - requiredAdd: [], - requiredUp: [] - }, upIndex:0, + productList: [], + productIds: [], + sample: [], + tree: '', + standards: [], + insulating: { + standardMethodListId: null, + insProduct: [], + num: 1 + }, + sheath: { + standardMethodListId: null, + insProduct: [] + }, + isAskOnlyRead: false } + }, + mounted() { + this.$parent.sampleIds.forEach(a => { + for (var i = 0; i < this.$parent.sampleList.length; i++) { + if (this.$parent.sampleList[i].id == a) { + this.sample.push(this.$parent.sampleList[i]) + if(this.$parent.sampleList[i].insulating !== undefined && this.$parent.sampleList[i].insulating !== null){ + this.insulating = this.$parent.sampleList[i].insulating + } + if(this.$parent.sampleList[i].sheath !== undefined && this.$parent.sampleList[i].sheath !== null){ + this.sheath = this.$parent.sampleList[i].sheath + } + break + } + } + }) + let obj = this.$parent.addObj + this.tree = obj.factory + ' - ' + obj.laboratory + ' - ' + obj.sampleType + ' - ' + obj.sample + this.selectsStandardMethodByFLSSM2() + this.productList = this.insulating.insProduct + setTimeout(() => { + this.productList.forEach(a => { + if (a.state == 1) this.toggleSelection(a) + }) + }, 200) }, methods: { outConfig() { this.$parent.cableConfigShow = false }, + selectProduct(val) { + this.productIds = [] + val.forEach(a => { + this.productIds.push(a.id) + }) + }, + upProductSelect(selection, row) { + row.state = row.state == 1 ? 0 : 1 + }, + handleAll(e) { + if (e.length > 0) { + this.productList.map(m => { + m.state = 1 + return m + }) + } else { + this.productList.map(m => { + m.state = 0 + return m + }) + } + this.$nextTick(() => { + this.$refs.productTable.doLayout() + }) + }, + tableRowClassName({ + row, + rowIndex + }) { + if (row.state === 0) { + return 'warning-row'; + } + return ''; + }, + selectable() { + if (this.active > 1) { + return false + } else { + return true + } + }, + selectsStandardMethodByFLSSM2() { + this.standards = [] + this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, { + tree: this.tree + }).then(res => { + this.standards = res.data.standardMethodList + }) + }, + methodChange(val) { + if (val === null || val === '') return + let standard = this.standards.find(a => a.id === val) + if(standard!=null && standard.code==='濮旀墭瑕佹眰'){ + this.isAskOnlyRead = true + }else{ + this.isAskOnlyRead = false + } + this.$axios.post(this.$api.standardTree.selectStandardProductList, { + model: this.$parent.addObj.model, + standardMethodListId: val, + factory: this.tree + ' - ' + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + res.data.forEach(a => { + a.state = 0 + }) + if(this.currentTab==='缁濈紭'){ + this.insulating.insProduct = res.data + }else if(this.currentTab==='鎶ゅ'){ + this.sheath.insProduct = res.data + } + this.productList = res.data + setTimeout(() => { + this.productList.forEach(a => { + if (a.state == 1) this.toggleSelection(a) + }) + }, 200) + }) + }, + toggleSelection(row) { + this.$refs.productTable.toggleRowSelection(row, true); + }, + save(){ + if(this.insulating.insProduct.length === 0 && this.sheath.insProduct.length === 0){ + this.$message.error('缂哄皯閰嶇疆鏃犳硶淇濆瓨') + return + } + if(this.insulating.insProduct.length !== 0){ + if(this.insulating.num === null || this.insulating.num === '' || this.insulating.num <= 0){ + this.$message.error('缂哄皯鑺暟鏃犳硶淇濆瓨') + return + } + } + this.sample.forEach(a=>{ + a.insulating = this.insulating + a.sheath = this.sheath + }) + this.$message.success('宸蹭繚瀛�') + }, + changeTab(val){ + if(val==='缁濈紭'){ + this.productList = this.insulating.insProduct + }else if(val==='鎶ゅ'){ + this.productList = this.sheath.insProduct + } + setTimeout(() => { + this.productList.forEach(a => { + if (a.state == 1) this.toggleSelection(a) + }) + }, 200) + } } } </script> @@ -146,3 +291,21 @@ padding: 20px; } </style> +<style> + .ins_order_config .has-gutter .el-table__cell .cell { + line-height: 30px; + background-color: #fafafa; + } + + .ins_order_config .has-gutter .el-table__cell { + background-color: #fafafa !important; + } + + .ins_order_config .el-table__row .cell { + font-size: 12px; + } + + .ins_order_config .el-table .warning-row .cell { + color: #bababa; + } +</style> diff --git a/src/components/view/a5-capacity-scope.vue b/src/components/view/a5-capacity-scope.vue index 48f9b5e..0d6894c 100644 --- a/src/components/view/a5-capacity-scope.vue +++ b/src/components/view/a5-capacity-scope.vue @@ -516,7 +516,7 @@ if (power[i].menuMethod == 'selectTestObjectList') { select += 2 } - if (this.radio === '0') { + if (radio === '0') { if (power[i].menuMethod == 'upItemParameter') { up = true } @@ -526,7 +526,9 @@ if (power[i].menuMethod == 'addItemParameter') { add = true } - + if (power[i].menuMethod == 'importData') { + inPower = true + } } else { if (power[i].menuMethod == 'upTestObject') { up = true @@ -540,12 +542,9 @@ if (power[i].menuMethod == 'selectProductListByObjectId') { product = true } - if (power[i].menuMethod == 'importData') { - inPower = true - } } } - if (this.radio === '0') { + if (radio === '0') { if (!del) { this.itemParameterData.do.splice(1, 1) } diff --git a/src/components/view/b2-standard.vue b/src/components/view/b2-standard.vue index 51facba..5e6be92 100644 --- a/src/components/view/b2-standard.vue +++ b/src/components/view/b2-standard.vue @@ -147,9 +147,28 @@ color: #bababa; } - .el-table-filter__list { + .standard .el-table-filter__list { max-height: 400px; overflow-y: auto; + } + + .standard .el-upload { + width: 100%; + } + + .standard .el-upload-dragger { + width: 100%; + } + + .standard .handleBtn.is-disabled .el-upload:focus { + color: #C0C4CC !important; + } + + .standard .avatar-uploader .el-upload { + height: 80px; + display: flex; + align-items: center; + justify-content: center; } </style> @@ -189,7 +208,8 @@ <div class="right"> <el-row class="title" style="width: 100%;"> <el-col :span="20" style="font-size: 14px;color: #999;">{{selectTree}}</el-col> - <el-button size="small" type="primary" @click="handleMore" style="position: absolute;right: 0px;top: 1px;" + <el-button size="small" type="primary" style="position: absolute;right: 100px;top: 1px;" @click="uploadDia = true" v-if="inExcelOfTreePower">瀵煎叆</el-button> + <el-button size="small" type="primary" @click="handleMore" style="position: absolute;right: 5px;top: 1px;" v-if="upStandardProduct">鎵归噺缂栬緫</el-button> </el-row> <el-row class="standard_table" v-loading="tableLoad"> @@ -475,6 +495,20 @@ <el-button type="primary" @click="sectionList.push({thing: ''})" icon="el-icon-plus"></el-button> </span> </el-dialog> + <el-dialog title="鏁版嵁瀵煎叆" :visible.sync="uploadDia" width="500px"> + <div style="margin: 0 auto;"> + <el-upload ref="upload" drag :action="javaApi + $api.standardTree.inExcelOfTree" :headers="token" :file-list="fileList" name="file" + :auto-upload="false" accept=".xlsx" :limit="1" :on-change="beforeUpload" :on-success="onSuccess" + :on-error="onError"> + <i class="el-icon-upload"></i> + <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> + </el-upload> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="uploadDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitUpload()" :loading="uploading">涓� 浼�</el-button> + </span> + </el-dialog> </div> </template> @@ -583,7 +617,12 @@ pages: 1, inspectionItem: null, inspectionItemSubclass: null, - sonLaboratory: null + sonLaboratory: null, + uploadDia: false, + token: null, + fileList: [], + inExcelOfTreePower: false, + uploading: false } }, watch: { @@ -620,6 +659,9 @@ this.selectEnumByCategoryForSonLaboratory() this.getStandardTemplate() this.selectStandardMethods() + this.token = { + 'token': sessionStorage.getItem('token') + } }, methods: { filterNode(value, data) { @@ -885,6 +927,7 @@ let delStandardProduct = false let addStandardProduct = false let delStandardTree = false + let inExcelOfTreePower = false for (var i = 0; i < power.length; i++) { if (power[i].menuMethod == 'addStandardTree') { add = true @@ -907,6 +950,9 @@ if (power[i].menuMethod == 'delStandardTree') { delStandardTree = true } + if (power[i].menuMethod == 'inExcelOfTree') { + inExcelOfTreePower = true + } } this.addPower = add this.addStandardMethod = addStandardMethod @@ -915,6 +961,7 @@ this.delStandardProduct = delStandardProduct this.addStandardProduct = addStandardProduct this.delStandardTree = delStandardTree + this.inExcelOfTreePower = inExcelOfTreePower }, upStandardProductList(value, index) { this.$axios.post(this.$api.standardTree.upStandardProductList, { @@ -1406,7 +1453,38 @@ } }) }) - } + }, + beforeUpload(file, fileList) { + if (file.raw.type != 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') { + this.$message.error('涓婁紶鏂囦欢鏍煎紡涓嶆纭�'); + this.$refs.upload.clearFiles() + return false; + } + }, + submitUpload() { + if (this.$refs.upload.uploadFiles.length == 0) { + this.$message.error('鏈�夋嫨鏂囦欢') + return + } + this.uploading = true + this.$refs.upload.submit(); + }, + onSuccess(response, file, fileList) { + this.$refs.upload.clearFiles() + this.uploadDia = false + this.uploading = false + if (response.code == 201) { + this.$message.error(response.message) + return + } + this.$message.success('涓婁紶鎴愬姛') + this.refresh() + }, + onError(err, file, fileList) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload.clearFiles() + this.uploading = false + }, } } </script> diff --git a/src/main.js b/src/main.js index c48e4e1..4293cee 100644 --- a/src/main.js +++ b/src/main.js @@ -12,18 +12,23 @@ import swal from 'sweetalert' // 椤圭洰鍒囨崲 -Vue.prototype.PROJECT = '妫�娴嬩腑蹇�' //椤圭洰鍚嶇О锛氭娴嬩腑蹇冦�佽澶囩數缂� +Vue.prototype.PROJECT = '妫�娴嬩腑蹇�' +// Vue.prototype.PROJECT = '瑁呭鐢电紗' //鏈湴 Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; -// const javaApi = 'http://192.168.144.200:8001';//鏉� -// const javaApi = 'http://192.168.11.249:8001';//寮� -// const javaApi = 'http://192.168.11.2:8001';//鏌� -// const javaApi = 'http://127.0.0.1:8001';//鏅� -const javaApi = 'http://114.132.189.42:1234';//娴嬭瘯鏈� -//鑳滀簯鏈嶅姟鍣� -// Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn"; -// const javaApi = 'http://122.114.52.69:8001'; -// const javaApi = 'http://10.1.200.86:8001';//姝e紡鏈� +const javaApi = 'http://127.0.0.1:8001'; + +//浜� +// Vue.prototype.LOCATIONVUE = "http://114.132.189.42:8080"; +// const javaApi = 'http://114.132.189.42:1234'; + +//妫�娴嬩腑蹇冩寮忓簱 +// Vue.prototype.LOCATIONVUE = "http://10.1.200.86:8080"; +// const javaApi = 'http://10.1.200.86:8001'; + +//瑁呭鐢电紗娴嬭瘯搴� +// Vue.prototype.LOCATIONVUE = "http://10.16.173.59"; +// const javaApi = 'http://10.16.173.59:8001'; Vue.prototype.HaveJson = (val) => { return JSON.parse(JSON.stringify(val)) -- Gitblit v1.9.3