From 4fae15f72f9367f8b9c544ce539d58f5a59aaf2f Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期三, 06 九月 2023 13:22:54 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.218.113:9001/r/lims-before --- src/views/laboratory/ledger/index.vue | 313 +++++++++++++++++++++++++++------------------------ 1 files changed, 167 insertions(+), 146 deletions(-) diff --git a/src/views/laboratory/ledger/index.vue b/src/views/laboratory/ledger/index.vue index 9a35f5c..51edbca 100644 --- a/src/views/laboratory/ledger/index.vue +++ b/src/views/laboratory/ledger/index.vue @@ -1,23 +1,9 @@ <template> <div class="ledger-main"> <div class="page-header-search"> - <div class="search-bar"> - <el-form ref="form" :inline="true" :model="searchData"> - <el-form-item> - <el-input v-model="searchData.keyword" placeholder="璇疯緭鍏ョ紪鍙�/璁惧鍚嶇О/鍨嬪彿瑙勬牸"> - <i slot="prefix" class="el-input__icon el-icon-search" /> - </el-input> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="filterTableData">鏌ヨ</el-button> - <el-button type="primary" plain @click="resetBtn">閲嶇疆</el-button> - <!-- <el-button type="text">楂樼骇鎼滅储<i class="el-icon-arrow-down el-icon--right" /></el-button> --> - </el-form-item> - </el-form> - </div> <div class="serve-btn"> <el-button type="primary" icon="el-icon-plus" - @click="addDrawerVisible = true; equipmentform.equipmentMeasurement = 1; equipmentform.whetherDataAcquisition = 1">鏂板浠櫒</el-button> + @click="showAddDrawer()">鏂板浠櫒</el-button> </div> </div> <div class="content-main"> @@ -39,16 +25,29 @@ <div class="library-table"> <div class="table-header"> <div class="search-bar"> - <el-radio-group v-model="radioValue" @change="getConditionTable"> - <!-- <el-radio-button label="0">鍏ㄩ儴</el-radio-button> --> - <el-radio-button v-for="item in conditionsOptions" :key="item.value" :label="item.value"> - {{ item.label }} - </el-radio-button> - </el-radio-group> - <el-checkbox v-model="isOut" @change="getExpireTable" :style="{ 'marginLeft': '12px' }">宸茶繃鏈�</el-checkbox> - </div> - <div class="serve-btn"> - <!-- <el-button type="primary" icon="el-icon-plus">鏂板浜哄憳</el-button> --> + <el-row :gutter="20"> + <el-col :span="8"> + <el-form ref="form" :inline="true" :model="searchData"> + <el-form-item> + <el-input v-model="searchData.keyword" placeholder="璇疯緭鍏ョ紪鍙�/璁惧鍚嶇О/鍨嬪彿瑙勬牸"> + <i slot="prefix" class="el-input__icon el-icon-search" /> + </el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="filterTableData">鏌ヨ</el-button> + <el-button type="primary" plain @click="resetBtn">閲嶇疆</el-button> + </el-form-item> + </el-form> + </el-col> + <el-col :span="16"> + <el-radio-group v-model="radioValue" @change="getConditionTable"> + <el-radio-button v-for="item in conditionsOptions" :key="item.value" :label="item.value"> + {{ item.label }} + </el-radio-button> + </el-radio-group> + <el-checkbox v-model="isOut" @change="getExpireTable" :style="{ 'marginLeft': '12px' }">宸茶繃鏈�</el-checkbox> + </el-col> + </el-row> </div> </div> <div class="table-box"> @@ -173,11 +172,9 @@ </div> <el-tabs v-model="activeTabsName"> <el-tab-pane label="璁惧鐮佺偣" name="codePoints"> - <el-button v-show="!codePointesTableStatus" :style="{ marginBottom: '18px' }" - @click="addCodePoints">鏂板璁惧鐮佺偣</el-button> - <div v-show="codePointesTableStatus" :style="{ marginBottom: '18px' }" class="btns"> + <div :style="{ marginBottom: '18px' }" class="btns"> <el-button @click="addNewCodePoints">娣诲姞</el-button> - <el-button @click="saveCodePoins">淇濆瓨</el-button> + <el-button v-show="codePointesTableStatus" @click="saveCodePoins">淇濆瓨</el-button> <el-button @click="closeCodePoins">鍙栨秷</el-button> </div> @@ -187,29 +184,26 @@ <el-table-column type="index" label="搴忓彿" min-width="90" /> <el-table-column prop="equipmentPoint" label="鐮佺偣缂栫爜" min-width="150"> <template slot-scope="scope"> - <span v-show="!codePointesTableStatus">{{ scope.row.equipmentPoint }}</span> - <el-input v-show="codePointesTableStatus" v-model="scope.row.equipmentPoint" /> + <el-input v-if="codePointesTableStatus && scope.row.isInput" v-model="scope.row.equipmentPoint" /> + <span v-else>{{ scope.row.equipmentPoint }}</span> </template> </el-table-column> - <el-table-column prop="equipmentPointName" label="鐮佺偣鍚嶇О" min-width="150"> <template slot-scope="scope"> - <span v-show="!codePointesTableStatus">{{ scope.row.equipmentPointName }}</span> - <el-input v-show="codePointesTableStatus" v-model="scope.row.equipmentPointName" /> + <el-input v-if="codePointesTableStatus && scope.row.isInput" v-model="scope.row.equipmentPointName" /> + <span v-else>{{ scope.row.equipmentPointName }}</span> </template> </el-table-column> <el-table-column prop="unit" label="鍗曚綅" min-width="150"> <template slot-scope="scope"> - <span v-show="!codePointesTableStatus">{{ scope.row.unit }}</span> - <el-input v-show="codePointesTableStatus" v-model="scope.row.unit" /> + <el-input v-if="codePointesTableStatus && scope.row.isInput" v-model="scope.row.unit" /> + <span v-else>{{ scope.row.unit }}</span> </template> </el-table-column> - <!-- <el-table-column prop="name" label="鏇存柊浜�" min-width="100" /> - <el-table-column prop="updateTime" label="鏇存柊鏃ユ湡" min-width="120" /> --> <el-table-column prop="descriptiveness" label="鎻忚堪" min-width="200"> <template slot-scope="scope"> - <span v-show="!codePointesTableStatus">{{ scope.row.descriptiveness }}</span> - <el-input v-show="codePointesTableStatus" v-model="scope.row.descriptiveness" /> + <el-input v-if="codePointesTableStatus && scope.row.isInput" v-model="scope.row.descriptiveness" /> + <span v-else>{{ scope.row.descriptiveness }}</span> </template> </el-table-column> @@ -272,7 +266,7 @@ <el-col :span="11"> <el-form-item label="鐘舵�侊細" prop="conditions" :rules="[{ required: true, message: '璇烽�夋嫨浠櫒璁惧鐘舵��', trigger: 'blur' }]" label-width="80"> - <el-select v-model="equipmentform.conditions" clearable filterable :allow-create="true" + <el-select v-model="equipmentform.conditions" clearable :allow-create="true" placeholder="璇烽�夋嫨浠櫒璁惧鐘舵��" style="width:100%"> <el-option v-for="item in conditionsOptions" :key="item.value" :label="item.label" :value="item.value" /> @@ -327,7 +321,7 @@ </el-col> <el-col :span="11"> <el-form-item label="淇濈浜猴細" label-width="80"> - <el-select v-model="equipmentform.userId" clearable filterable :allow-create="true" placeholder="璇烽�夋嫨淇濈浜�" + <el-select v-model="equipmentform.userId" clearable :allow-create="true" placeholder="璇烽�夋嫨淇濈浜�" style="width:100%"> <el-option v-for="item in userOpetions" :key="item.id" :label="item.label" :value="item.value" /> </el-select> @@ -375,7 +369,7 @@ <el-form label-position="top" ref="addmeasureForm" :model="measureForm"> <el-row :gutter="20"> <el-col :span="12"> - <el-form-item label="璐熻矗浜�" prop="userId" :rules="[{ required: true, message: '璇烽�夋嫨璐熻矗浜�', trigger: 'blur' }]"> + <el-form-item label="璐熻矗浜�" prop="userId" :rules="[{ required: true, message: '璇烽�夋嫨璐熻矗浜�', trigger: 'change' }]"> <el-select v-model="measureForm.userId" clearable filterable :allow-create="true" placeholder="璐熻矗浜�" style="width:100%"> <el-option v-for="item in userOpetions" :key="item.id" :label="item.label" :value="item.value" /> @@ -405,7 +399,7 @@ </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="缁撴灉" prop="result" :rules="[{ required: true, message: '璇烽�夋嫨缁撴灉', trigger: 'blur' }]"> + <el-form-item label="缁撴灉" prop="result" :rules="[{ required: true, message: '璇烽�夋嫨缁撴灉', trigger: 'change' }]"> <el-select v-model="measureForm.result" clearable filterable :allow-create="true" placeholder="璇烽�夋嫨缁撴灉" style="width:100%"> <el-option v-for="item in resultOptions" :key="item.id" :label="item.label" :value="item.value" /> @@ -429,7 +423,7 @@ </el-row> <el-row :gutter="20"> <el-col :span="24"> - <el-form-item label=""> + <el-form-item label="" prop="file"> <el-upload ref="upload" class="upload-demo" action="#" :on-change="handleUpload" :auto-upload="false"> <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button> </el-upload> @@ -470,10 +464,6 @@ userOpetions: [], // 浠櫒鐘舵�侀厤缃」 conditionsOptions: [ - { - label: '鍏ㄩ儴', - value: 0 - }, { label: '杩愯', value: 1 @@ -569,6 +559,7 @@ // 鐮佺偣琛ㄦ牸 codePointsTable: [ { + 'isInput':false, 'unit': '', 'descriptiveness': '', 'equipmentPoint': '', @@ -589,7 +580,7 @@ result: null, performanceIndex: null, remarks: null, - file: null + file: "" }, activeTabsName: 'codePoints', // 鐮佺偣琛ㄦ牸鐨勭姸鎬侊細鏁版嵁灞曠ずfalse/鏂板杈撳叆true @@ -615,8 +606,7 @@ }, measureFormVisible(newVal){ if(newVal === false){ - this.measureForm.file = null; - this.$refs['upload'].clearFiles(); + this.resetForm("addmeasureForm"); } } }, @@ -625,6 +615,27 @@ this.getUserOptions() }, methods: { + //鏄剧ず鏂板浠櫒妯℃�佹 + showAddDrawer(){ + this.addDrawerVisible = true; + this.equipmentform = { + acceptanceDate: '', // 楠屾敹鏃ユ湡 + arrivalDate: '', // 鍒拌揣鏃ユ湡 + classifyId: '', // 鎵�灞炲垎绫� + conditions: '', // 鐘舵�� + descriptiveness: '', // 鎻忚堪 + equipmentCode: '', // 璁惧缂栧彿 + equipmentMeasurement: 1, // 浠櫒璁惧璁¢噺 + equipmentName: '', // 浠櫒璁惧鍚嶇О + errorRate: '', // 涓嶇‘瀹氬害/鍑嗙‘搴�/鏈�澶у厑璁歌宸� + userId: '', // 淇濈浜� + manufacturer: '', // 鐢熶骇鍘傚 + measuringRange: '', // 娴嬮噺鑼冨洿 + specificationsModels: '', // 鍨嬪彿瑙勬牸 + storagePlace: '', // 瀛樻斁鍦扮偣 + whetherDataAcquisition: 1 // 鏄惁鏀寔鏁伴噰 + } + }, // 鑾峰彇鍒嗙被鏁版嵁 async getThreeData() { const { data } = await getClassifyList() @@ -657,7 +668,6 @@ }, // 鏄剧ず浠櫒璇︽儏 async openDetail(row) { - // console.log(row) this.detailDrawer = true const { data } = await getInstrumentDetail({ InstrumentId: row.id }) this.equipmentDetail = data @@ -703,15 +713,13 @@ addCodePoints() { // 娣诲姞鏂扮爜鐐癸紝娓呯┖鍘熸暟缁� this.codePointesTableStatus = true - this.codePointsTable = undefined }, // 鏂板璁惧鐮佺偣 addNewCodePoints() { - // - if (!this.codePointsTable) { - this.codePointsTable = [] - } + console.log(this.equipmentDetail.id); + this.codePointesTableStatus = true; const newObj = {} + newObj.isInput = true, newObj.name = '' // 褰撳墠鐢ㄦ埛鐨勫悕绉� newObj.updateTime = '' // 鑾峰彇褰撳墠鏃堕棿 newObj.equipmentPoint = '' @@ -719,25 +727,21 @@ newObj.descriptiveness = '' newObj.unit = '' newObj.instrumentId = this.equipmentDetail.id - this.codePointsTable.push(newObj) + this.codePointsTable.unshift(newObj) }, // 淇濆瓨鎻愪氦鏂板璁惧鐮佺偣 async saveCodePoins() { - console.log(this.codePointsTable) - if (!this.codePointsTable) { - this.codePointsTable = [] + if (this.codePointsTable.length === 0) { + return this.$message.error('璇风偣鍑绘坊鍔犳寜閽坊鍔犳暟鎹�') } - if (this.codePointsTable.length === 0) return this.$message.error('璇风偣鍑绘坊鍔犳寜閽坊鍔犳暟鎹�') - try { - for (const item of this.codePointsTable) { - const { code, data, message } = await addEquipmentPoint(item) - console.log(data) - if (code !== 200) throw new Error(message) - this.$message.success('娣诲姞鎴愬姛') - } - } catch (error) { + let data = this.codePointsTable.filter(item => { + return item.instrumentId != null; + }) + await addEquipmentPoint(data).then(()=>{ + this.$message.success('娣诲姞鎴愬姛') + }).catch(error=>{ this.$message.error(error.message) - } + }) await this.closeCodePoins() }, // 鍙栨秷鏂板璁惧鐮佺偣 @@ -758,92 +762,105 @@ }, // 鐐瑰嚮鏂板浠櫒璁惧鎴栧綋瀛樺湪浠櫒璇︽儏鏃舵槸淇敼浠櫒璁惧淇℃伅 async addNewEquipment() { - let v = this.submitForm('addNewEquipment') - if (!v) { - return - } - if (Array.isArray(this.equipmentform.classifyId)) { - this.equipmentform.classifyId = this.equipmentform.classifyId.pop() - } - if (!this.equipmentDetail.id) { - // 鏍煎紡鍖栨棩鏈� - this.equipmentform.arrivalDate = parseTime(this.equipmentform.arrivalDate, '{y}-{m}-{d}') - this.equipmentform.acceptanceDate = parseTime(this.equipmentform.acceptanceDate, '{y}-{m}-{d}') - // this.equipmentform.termValidity = parseTime(this.equipmentform?.termValidity, '{y}-{m}-{d}') - try { - const res = await addInstrument(this.equipmentform) - console.log(res) - } catch (error) { - this.$message.error('娣诲姞澶辫触') + this.$refs["addNewEquipment"].validate(async(valid)=>{ + if(valid){ + if (Array.isArray(this.equipmentform.classifyId)) { + this.equipmentform.classifyId = this.equipmentform.classifyId.pop() + } + if (!this.equipmentDetail.id) { + // 鏍煎紡鍖栨棩鏈� + this.equipmentform.arrivalDate = parseTime(this.equipmentform.arrivalDate, '{y}-{m}-{d}') + this.equipmentform.acceptanceDate = parseTime(this.equipmentform.acceptanceDate, '{y}-{m}-{d}') + // this.equipmentform.termValidity = parseTime(this.equipmentform?.termValidity, '{y}-{m}-{d}') + await addInstrument(this.equipmentform).then(()=>{ + this.$message.success('娣诲姞鎴愬姛') + }).catch(error=>{ + this.$message.error(error.message); + }) + let d = this.nodeclicked; + this.nodeClickHandler(d); + this.addDrawerVisible = false + this.equipmentform = {} + return + } + console.log('淇敼浠櫒鍙傛暟', this.equipmentform) + await changeInstrument(this.equipmentform).then(()=>{ + this.$message.success('淇敼鎴愬姛') + let d = this.nodeclicked; + this.nodeClickHandler(d); + this.addDrawerVisible = false + this.detailDrawer = false + }).catch(error=>{ + this.$message.error(error.message); + }) } - this.$message.success('娣诲姞鎴愬姛') - let d = this.nodeclicked; - this.nodeClickHandler(d); - this.addDrawerVisible = false - this.equipmentform = {} - return - } - console.log('淇敼浠櫒鍙傛暟', this.equipmentform) - try { - const res = await changeInstrument(this.equipmentform) - this.$message.success('淇敼鎴愬姛') - let d = this.nodeclicked; - this.nodeClickHandler(d); - this.addDrawerVisible = false - this.detailDrawer = false - } catch (error) { - this.$message.error('娣诲姞澶辫触') - } + }); }, cancelAddEq() { this.resetForm('addDrawer') this.addDrawerVisible = false }, resetForm(formName) { + this.measureForm = { + userId: null, + measurementUnit: null, + date: null, + uncertainty: null, + result: null, + performanceIndex: null, + remarks: null, + file: "" + } this.$refs[formName].resetFields(); }, cancelAddMeasure() { this.$refs['upload'].clearFiles(); this.measureForm.file = null; this.measureFormVisible = false - this.resetForm('addmeasureForm') + this.resetForm('addmeasureForm'); }, // 娣诲姞璁¢噺淇℃伅 async addMeasure() { - let v = this.submitForm('addmeasureForm') - console.log(v); - if (!v) { - return - } - // 鏍煎紡鍖栨椂闂� - this.measureForm.instrumentId = this.equipmentDetail.id - if (Array.isArray(this.measureForm.date)) { - this.measureForm.beginDate = parseTime(this.measureForm.date[0], '{y}-{m}-{d}') - this.measureForm.endDate = parseTime(this.measureForm.date[1], '{y}-{m}-{d}') - } - console.log(this.measureForm) - const formData = new FormData() - formData.append('file', this.measureForm.file?.raw, this.measureForm.file?.name) - console.log(this.measureForm) - for (const key in this.measureForm) { - console.log(key) - // if (key === 'file') return - formData.append(key, this.measureForm[key]) - } - console.log(formData) - try { - const { data } = await addMetricalInformation(formData) - console.log(data) - this.$message.success('娣诲姞鎴愬姛') - const { data: informationList } = await getMetricalInformationList({ InstrumentId: this.equipmentDetail.id }) - this.measureTable = informationList - this.measureForm = {} - this.measureFormVisible = false - } catch (error) { - this.$message.error('娣诲姞澶辫触') - } - this.measureForm.file = null; - this.$refs['upload'].clearFiles(); + this.$refs['addmeasureForm'].validate(async(valid)=>{ + if(valid){ + // 鏍煎紡鍖栨椂闂� + this.measureForm.instrumentId = this.equipmentDetail.id + if (Array.isArray(this.measureForm.date)) { + this.measureForm.beginDate = parseTime(this.measureForm.date[0], '{y}-{m}-{d}') + this.measureForm.endDate = parseTime(this.measureForm.date[1], '{y}-{m}-{d}') + } + console.log(this.measureForm) + const formData = new FormData() + if(this.measureForm.file == null || this.measureForm.file == ""){ + this.$message.warning("璇烽�夋嫨瑕佷笂浼犵殑鏂囦欢!"); + return; + }else{ + formData.append('file', this.measureForm.file?.raw, this.measureForm.file?.name) + } + console.log(this.measureForm) + for (const key in this.measureForm) { + console.log(key) + // if (key === 'file') return + formData.append(key, this.measureForm[key]) + } + console.log(formData) + try { + const { data } = await addMetricalInformation(formData) + console.log(data) + this.$message.success('娣诲姞鎴愬姛') + const { data: informationList } = await getMetricalInformationList({ InstrumentId: this.equipmentDetail.id }) + this.measureTable = informationList + this.measureForm = {} + this.measureFormVisible = false + } catch (error) { + this.$message.error('娣诲姞澶辫触') + } + this.measureForm.file = null; + this.$refs['upload'].clearFiles(); + }else{ + console.log(32); + } + }); }, // 鍏抽棴璁惧璇︽儏鎶藉眽 closeDetailDrawer() { @@ -861,7 +878,7 @@ }, // 鏂囦欢涓婁紶 handleUpload(file, fileList) { - // console.log(file, fileList) + console.log(file, fileList) this.measureForm.file = file }, // 鏍规嵁杈撳叆鐨勮澶囩紪鍙凤紝璁惧鍚嶇О鎴栬�呭瀷鍙疯鏍煎叧閿瓧杩涜杩囨护鍒楄〃 @@ -874,6 +891,8 @@ }, resetBtn() { this.searchData.keyword = '' + this.radioValue = 0; + this.isOut = false; this.equipmentTable = this.oldtableData }, getConditionTable() { @@ -1047,20 +1066,22 @@ display: flex; justify-content: space-between; padding: 15px 24px 12px 24px; - + .serve-btn{ + position: relative; + left: 92%; + } .search-bar { .el-radio-button.is-active { color: #409EFF !important; background: #ecf5ff !important; border-color: #b3d8ff !important; } - .el-form { .el-form-item { margin-bottom: 0px !important; .el-input { - width: 360px; + width: 500px; } } } -- Gitblit v1.9.3