From 34a7e21b3508ac0f5f011d958210fdb7176d726b Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期六, 09 九月 2023 11:54:05 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.0.22:9001/r/lims-before --- src/views/laboratory/ledger/index.vue | 561 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 328 insertions(+), 233 deletions(-) diff --git a/src/views/laboratory/ledger/index.vue b/src/views/laboratory/ledger/index.vue index 555d0b6..7d96ba1 100644 --- a/src/views/laboratory/ledger/index.vue +++ b/src/views/laboratory/ledger/index.vue @@ -1,22 +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">鏂板浠櫒</el-button> + <el-button size="small" type="primary" icon="el-icon-plus" + @click="showAddDrawer()">鏂板浠櫒</el-button> </div> </div> <div class="content-main"> @@ -24,7 +11,7 @@ <div class="bom-item-search"> <el-row> <el-col :span="19"> - <el-input v-model="filterText" placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" /> + <el-input size="small" v-model="filterText" clearable placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" /> </el-col> <el-col :span="5"> <el-button type="primary" size="small" @click="addClassVisible = true"><i @@ -32,28 +19,41 @@ </el-col> </el-row> </div> - <el-tree ref="classTree" :data="classTree" :props="defaultProps" :default-expand-all="true" + <el-tree :highlight-current="true" ref="classTree" :data="classTree" :props="defaultProps" :default-expand-all="true" :filter-node-method="filterNode" @node-click="nodeClickHandler" /> </div> <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 width="200"> + <el-input size="small" 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 size="small" type="primary" @click="filterTableData">鏌ヨ</el-button> + <el-button size="small" 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"> - <el-table ref="equipmentTable" node-key="father_name" :cell-style="{ textAlign: 'center' }" - :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" - :data="equipmentTable" style="width: 100%"> + <el-table ref="equipmentTable" node-key="father_name" :cell-style="{ textAlign: 'left' }" + :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'left' }" + :data="equipmentTable" style="width: 100%;height: 100vh"> <el-table-column type="index" label="搴忓彿" min-width="90" /> <el-table-column prop="equipment_code" label="浠櫒璁惧缂栧彿" min-width="200" /> <el-table-column prop="equipment_name" label="浠櫒璁惧鍚嶇О" min-width="150" /> @@ -62,12 +62,14 @@ <el-table-column prop="termValidity" label="璁¢噺鎴鏈夋晥鏈�" min-width="200" /> <el-table-column prop="conditions" label="璁惧鐘舵��" min-width="120"> <template slot-scope="scope"> - <el-tag :type="scope.row.conditions === 0 ? 'primary' : 'success'" disable-transitions>{{ - scope.row.conditions | conditionsFilter }}</el-tag> + <el-tag v-if="scope.row.conditions === 1" type="success" disable-transitions>杩愯</el-tag> + <el-tag v-if="scope.row.conditions === 2" type="danger" disable-transitions>鏁呴殰</el-tag> + <el-tag v-if="scope.row.conditions === 3" type="warning" disable-transitions>鎶ヤ慨</el-tag> + <el-tag v-if="scope.row.conditions === 4" type="warning" disable-transitions>妫�淇�</el-tag> + <el-tag v-if="scope.row.conditions === 5" disable-transitions>寰呮満</el-tag> </template> </el-table-column> <el-table-column prop="storage_place" label="瀛樻斁鍦�" min-width="200" /> - <el-table-column label="鎿嶄綔" min-width="120" fixed="right"> <template slot-scope="scope"> <el-button type="text" size="small" @click="openDetail(scope.row)">缂栬緫</el-button> @@ -83,14 +85,11 @@ <el-form-item prop="name" label="鍒嗙被鍚嶇О" label-width="100px" :rules="[ { required: true, message: '鍒嗙被鍚嶇О涓嶈兘涓虹┖' } ]"> - <el-input v-model="addTreeForm.name" - /> + <el-input placeholder="璇峰~鍐欏垎绫诲悕绉�" v-model="addTreeForm.name" /> </el-form-item> <el-form-item label="鐖剁骇鍒嗙被" label-width="100px"> - <el-select style="width: 100%;" v-model="addTreeForm.type" placeholder="璇烽�夋嫨"> - <el-option label="鍘熸潗鏂�" value="0" /> - <el-option label="鐢电嚎鐢电紗" value="1" /> - </el-select> + <el-cascader v-model="addTreeForm.type" :options="addTreeFormClassTree" style="width: 374.88px;" + :show-all-levels="false" /> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> @@ -123,8 +122,8 @@ <div class="message"> <div class="message-item"><span><i class="el-icon-edit" />鎵�灞炲垎绫伙細{{ equipmentDetail.classifyId }}</span></div> <div class="message-item"> - <span><i class="el-icon-edit" />鍒涘缓浜猴細{{ equipmentDetail.createUserId }}</span> - <el-tag type="primary"><i class="el-icon-info" :style="{ marginRight: '4px', color: '#409EFF' }" /></el-tag> + <span><i class="el-icon-user" />鍒涘缓浜猴細{{ equipmentDetail.createUserId }}</span> + <!-- <el-tag type="primary"><i class="el-icon-info" :style="{ marginRight: '4px', color: '#409EFF' }" /></el-tag> --> </div> <div class="message-item"> <span><i class="el-icon-edit" />寤烘。鏃ユ湡锛歿{ equipmentDetail.acceptanceDate }}</span> @@ -154,7 +153,7 @@ <span><i class="el-icon-edit" />楠屾敹鏃ユ湡锛歿{ equipmentDetail.acceptanceDate }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />淇濈浜猴細{{ equipmentDetail.userId }}</span> + <span><i class="el-icon-edit" />淇濈浜猴細{{ equipmentDetail.userName }}</span> </div> <div class="message-item"> <span><i class="el-icon-edit" />鏄惁鏀寔鏁伴噰锛歿{ equipmentDetail.whetherDataAcquisition == 1 ? '鏀寔' : '涓嶆敮鎸�' @@ -173,43 +172,38 @@ </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> <el-table ref="codePointsTable" :cell-style="{ textAlign: 'center' }" :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" - :data="codePointsTable" style="width: 100%"> + :data="codePointsTable" style="width: 100%;overflow: scroll;height:314px;"> <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> @@ -246,28 +240,33 @@ <el-drawer ref="addDrawer" :title="equipmentDetail.id ? '淇敼浠櫒璁惧淇℃伅' : '鏂板浠櫒璁惧'" :append-to-body="true" :visible.sync="addDrawerVisible" class="addDrawer" size="40%" @close="closeAddOrChangeDrawer"> <div class="demo-drawer__content"> - <el-form label-position="top" :model="equipmentform"> + <el-form label-position="top" ref="addNewEquipment" :model="equipmentform"> <el-row :gutter="50"> <el-col :span="11"> - <el-form-item label="鎵�灞炲垎绫伙細" label-width="80"> - <el-cascader v-model="equipmentform.classifyId" :options="classTree" :show-all-levels="false" /> + <el-form-item label="鎵�灞炲垎绫伙細" prop="classifyId" label-width="80" :rules="[ + { required: true, message: '璇烽�夋嫨鎵�灞炲垎绫�', trigger: 'blur' } + ]"> + <el-cascader style="width: 100%;" v-model="equipmentform.classifyId" :options="classTree" :show-all-levels="false" /> </el-form-item> </el-col> <el-col :span="11"> - <el-form-item label="璁惧缂栧彿锛�" label-width="80"> - <el-input v-model="equipmentform.equipmentCode" autocomplete="off" /> + <el-form-item label="璁惧缂栧彿锛�" prop="equipmentCode" + :rules="[{ required: true, message: '璇峰~鍐欒澶囩紪鍙�', trigger: 'blur' }]" label-width="80"> + <el-input v-model="equipmentform.equipmentCode" placeholder="璇峰~鍐欒澶囩紪鍙�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="50"> <el-col :span="11"> - <el-form-item label="浠櫒璁惧鍚嶇О锛�" label-width="80"> - <el-input v-model="equipmentform.equipmentName" autocomplete="off" /> + <el-form-item label="浠櫒璁惧鍚嶇О锛�" prop="equipmentName" + :rules="[{ required: true, message: '璇峰~鍐欎华鍣ㄨ澶囧悕绉�', trigger: 'blur' }]" label-width="80"> + <el-input v-model="equipmentform.equipmentName" placeholder="璇峰~鍐欎华鍣ㄨ澶囧悕绉�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="11"> - <el-form-item label="鐘舵�侊細" label-width="80"> - <el-select v-model="equipmentform.conditions" clearable filterable :allow-create="true" + <el-form-item label="鐘舵�侊細" prop="conditions" + :rules="[{ required: true, message: '璇烽�夋嫨浠櫒璁惧鐘舵��', trigger: 'blur' }]" label-width="80"> + <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" /> @@ -277,37 +276,38 @@ </el-row> <el-row :gutter="50"> <el-col :span="11"> - <el-form-item label="鍨嬪彿瑙勬牸锛�" label-width="80"> - <el-input v-model="equipmentform.specificationsModels" autocomplete="off" /> + <el-form-item label="鍨嬪彿瑙勬牸锛�" prop="specificationsModels" + :rules="[{ required: true, message: '璇峰~鍐欏瀷鍙疯鏍�', trigger: 'blur' }]" label-width="80"> + <el-input v-model="equipmentform.specificationsModels" placeholder="璇峰~鍐欏瀷鍙疯鏍�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="11"> <el-form-item label="娴嬮噺鑼冨洿锛�" label-width="80"> - <el-input v-model="equipmentform.measuringRange" autocomplete="off" /> + <el-input v-model="equipmentform.measuringRange" placeholder="璇峰~鍐欐祴閲忚寖鍥�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="50"> <el-col :span="11"> <el-form-item label="涓嶇‘瀹氬害/鍑嗙‘搴�/鏈�澶у厑璁歌宸細" label-width="80"> - <el-input v-model="equipmentform.errorRate" autocomplete="off" /> + <el-input v-model="equipmentform.errorRate" placeholder="璇峰~鍐欎笉纭畾搴�/鍑嗙‘搴�/鏈�澶у厑璁歌宸�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="11"> <el-form-item label="鐢熶骇鍘傚锛�" label-width="80"> - <el-input v-model="equipmentform.manufacturer" autocomplete="off" /> + <el-input v-model="equipmentform.manufacturer" placeholder="璇峰~鍐欑敓浜у巶瀹�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="50"> <el-col :span="11"> <el-form-item label="瀛樻斁鍦扮偣锛�" label-width="80"> - <el-input v-model="equipmentform.storagePlace" autocomplete="off" /> + <el-input v-model="equipmentform.storagePlace" placeholder="璇峰~鍐欏瓨鏀惧湴鐐�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="11"> <el-form-item label="鍒拌揣鏃ユ湡锛�" label-width="80"> - <el-date-picker v-model="equipmentform.arrivalDate" type="date" placeholder="璇烽�夋嫨鍒拌揣鏃ユ湡" + <el-date-picker value-format="yyyy-MM-dd" v-model="equipmentform.arrivalDate" type="date" placeholder="璇烽�夋嫨鍒拌揣鏃ユ湡" style="width:100%" /> </el-form-item> </el-col> @@ -315,13 +315,13 @@ <el-row :gutter="50"> <el-col :span="11"> <el-form-item label="楠屾敹鏃ユ湡锛�" label-width="80"> - <el-date-picker v-model="equipmentform.acceptanceDate" type="date" placeholder="璇烽�夋嫨楠屾敹鏃ユ湡" + <el-date-picker value-format="yyyy-MM-dd" v-model="equipmentform.acceptanceDate" type="date" placeholder="璇烽�夋嫨楠屾敹鏃ユ湡" style="width:100%" /> </el-form-item> </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> @@ -344,8 +344,8 @@ </el-row> <el-row v-show="equipmentform.equipmentMeasurement === 1" :gutter="50"> <el-col :span="12"> - <el-form-item label="璁¢噺鎴鏈夋晥鏈燂細" label-width="80"> - <el-input v-model="equipmentform.termValidity" type="number" /> + <el-form-item label="璁¢噺鍛ㄦ湡(鏈�)锛�" label-width="80"> + <el-input min="0" v-model="equipmentform.termValidity" placeholder="璇峰~鍐欒閲忓懆鏈�" type="number" /> </el-form-item> </el-col> </el-row> @@ -359,17 +359,17 @@ </el-row> </el-form> <div class="demo-drawer__footer"> - <el-button class="el-button--default" @click="addDrawerVisible = false">鍙� 娑�</el-button> + <el-button class="el-button--default" @click="cancelAddEq">鍙� 娑�</el-button> <el-button type="primary" class="el-button--primary el-button--medium" @click="addNewEquipment">纭� 瀹�</el-button> </div> </div> </el-drawer> <!-- 鏂板璁¢噺淇℃伅寮圭獥 --> <el-dialog class="measureForm" title="鏂板璁¢噺" :visible.sync="measureFormVisible"> - <el-form label-position="top" :model="measureForm"> + <el-form label-position="top" ref="addmeasureForm" :model="measureForm"> <el-row :gutter="20"> <el-col :span="12"> - <el-form-item label="璐熻矗浜�"> + <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" /> @@ -377,14 +377,15 @@ </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="璁¢噺鍗曚綅"> - <el-input v-model="measureForm.measurementUnit" /> + <el-form-item label="璁¢噺鍗曚綅" prop="measurementUnit" + :rules="[{ required: true, message: '璇峰~鍐欒閲忓崟浣�', trigger: 'blur' }]"> + <el-input placeholder="璇峰~鍐欒閲忓崟浣�" v-model="measureForm.measurementUnit" /> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="24"> - <el-form-item label="妫�瀹氭湁鏁堟湡"> + <el-form-item label="妫�瀹氭湁鏁堟湡" prop="date" :rules="[{ required: true, message: '璇烽�夋嫨妫�瀹氭湁鏁堟湡', trigger: 'blur' }]"> <el-date-picker v-model="measureForm.date" type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" /> </el-form-item> @@ -392,13 +393,14 @@ </el-row> <el-row :gutter="20"> <el-col :span="12"> - <el-form-item label="涓嶇‘瀹氬害"> - <el-input v-model="measureForm.uncertainty" /> + <el-form-item label="涓嶇‘瀹氬害" prop="uncertainty" + :rules="[{ required: true, message: '璇峰~鍐欎笉纭畾搴�', trigger: 'blur' }]"> + <el-input placeholder="璇峰~鍐欎笉纭畾搴�" v-model="measureForm.uncertainty" /> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="缁撴灉"> - <el-select v-model="measureForm.result" clearable filterable :allow-create="true" placeholder="璐熻矗浜�" + <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" /> </el-select> @@ -421,8 +423,8 @@ </el-row> <el-row :gutter="20"> <el-col :span="24"> - <el-form-item label=""> - <el-upload class="upload-demo" action="#" :on-change="handleUpload" :auto-upload="false"> + <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> </el-form-item> @@ -432,7 +434,7 @@ <span slot="footer" class="dialog-footer"> <el-button type="primary" @click="addMeasure">纭� 瀹�</el-button> - <el-button @click="measureFormVisible = false">鍙� 娑�</el-button> + <el-button @click="cancelAddMeasure">鍙� 娑�</el-button> </span> </el-dialog> <!-- 鍒犻櫎浠櫒寮瑰嚭妗� --> @@ -451,43 +453,17 @@ getClassifyList, getInstrumentList, addInstrumentUser, addInstrument, getInstrumentDetail, getEquipmentPointList, addEquipmentPoint, - getMetricalInformationList, changeInstrument, addMetricalInformation, deleteInstrument + getMetricalInformationList, changeInstrument, addMetricalInformation, deleteInstrument, addClassify } from '@/api/laboratory/ledger' import { parseTime } from '@/utils/index' export default { - filters: { - conditionsFilter(value) { - let returnValue = null - switch (+value) { - case 1: - returnValue = '杩愯' - break - case 2: - returnValue = '鏁呴殰' - break - case 3: - returnValue = '鎶ヤ慨' - break - case 4: - returnValue = '妫�淇�' - break - case 5: - returnValue = '寰呮満' - break - } - return returnValue - } - }, + filters: {}, data() { return { // 鐢ㄦ埛涓嬫媺妗嗛厤缃」 userOpetions: [], // 浠櫒鐘舵�侀厤缃」 conditionsOptions: [ - { - label: '鍏ㄩ儴', - value: 0 - }, { label: '杩愯', value: 1 @@ -528,7 +504,10 @@ // 鍒嗙被tree鏁版嵁锛屽垎绫婚厤缃」 classTree: [], // 娣诲姞鍒嗙被鍙傛暟 - addTreeForm: {}, + addTreeForm: { + name: null, + type: null + }, // tree榛樿鍊� defaultProps: { children: 'children', @@ -580,19 +559,29 @@ // 鐮佺偣琛ㄦ牸 codePointsTable: [ { - 'unit': 'mm', - 'descriptiveness': '鐤簡锛屽仛涓嶄簡', - 'equipmentPoint': 'Area-1', - 'name': '灏忓皬', - 'updateTime': '2023-07-24', + 'isInput':false, + 'unit': '', + 'descriptiveness': '', + 'equipmentPoint': '', + 'name': '', + 'updateTime': '', 'id': 1, - 'equipmentPointName': '瀵间綋灞忚斀锛堝鍘氶潰绉級' + 'equipmentPointName': '' } ], // 璁¢噺淇℃伅琛� measureTable: [], // 娣诲姞璁¢噺淇℃伅鍙傛暟瀵硅薄 - measureForm: {}, + measureForm: { + userId: null, + measurementUnit: null, + date: null, + uncertainty: null, + result: null, + performanceIndex: null, + remarks: null, + file: "" + }, activeTabsName: 'codePoints', // 鐮佺偣琛ㄦ牸鐨勭姸鎬侊細鏁版嵁灞曠ずfalse/鏂板杈撳叆true codePointesTableStatus: false, @@ -607,12 +596,18 @@ conditionTable: '', nodeclicked: '', expireData: '', - instrumentId: '' + instrumentId: '', + addTreeFormClassTree: [] } }, watch: { filterText(val) { this.$refs.classTree.filter(val) + }, + measureFormVisible(newVal){ + if(newVal === false){ + this.cancelAddMeasure(); + } } }, created() { @@ -620,10 +615,30 @@ 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() - // console.log(data) this.classTree = data.map(item => { if (item.children) { item.children = item.children.map(childrenItem => { @@ -632,7 +647,18 @@ } return { ...item, label: item.father_name, value: item.id ? item.id : item.father_name } }) - // console.log(this.classTree) + this.addTreeFormClassTree = JSON.parse(JSON.stringify(this.classTree)) + let father = { + children: null, + father_name: "鏃�", + id: 0, + label: "鏃�", + value: 0 + } + this.addTreeFormClassTree.unshift(father) + this.addTreeFormClassTree.forEach(item => { + item.children = null + }) }, // 鑾峰彇鐢ㄦ埛淇℃伅閰嶇疆椤� async getUserOptions() { @@ -641,22 +667,18 @@ }, // 鏄剧ず浠櫒璇︽儏 async openDetail(row) { - // console.log(row) this.detailDrawer = true const { data } = await getInstrumentDetail({ InstrumentId: row.id }) this.equipmentDetail = data this.equipmentform = data - console.log(this.equipmentform) const { data: pointList } = await getEquipmentPointList({ InstrumentId: this.equipmentDetail.id }) this.codePointsTable = pointList const { data: informationList } = await getMetricalInformationList({ InstrumentId: this.equipmentDetail.id }) this.measureTable = informationList - console.log(informationList) }, // 鑺傜偣鐐瑰嚮澶勭悊 nodeClickHandler(data, node, element) { this.nodeclicked = data - // console.log(data) // 鍙湁鏁版嵁涓惡甯d鎵嶈兘鍙戦�佹煡璇㈣姹� if (data.id) { this.getEquipmentTable({ classifyId: data.id, pageSize: this.pageSize, pageNo: this.currentPage, whetherWhether: this.isOut }) @@ -664,9 +686,7 @@ }, // 鑾峰彇浠櫒鍒楄〃鏁版嵁 async getEquipmentTable(ages) { - // console.log('鏉′欢瀵硅薄', ages) const { data } = await getInstrumentList(ages) - console.log(data) this.equipmentTable = data.row this.total = data.total this.oldtableData = this.equipmentTable @@ -684,45 +704,33 @@ handleCurrentChange() { // 褰撳墠椤垫洿鏀� }, - // 鏄剧ず璁惧鐮佺偣 - addCodePoints() { - // 娣诲姞鏂扮爜鐐癸紝娓呯┖鍘熸暟缁� - this.codePointesTableStatus = true - this.codePointsTable = undefined - }, // 鏂板璁惧鐮佺偣 addNewCodePoints() { - // - if (!this.codePointsTable) { - this.codePointsTable = [] - } + this.codePointesTableStatus = true; const newObj = {} - newObj.name = '灏忓皬' // 褰撳墠鐢ㄦ埛鐨勫悕绉� - newObj.updateTime = '2023-07-24' // 鑾峰彇褰撳墠鏃堕棿 - newObj.equipmentPoint = 'Area-1' - newObj.equipmentPointName = '瀵间綋灞忚斀锛堝鍘氶潰绉級' + newObj.isInput = true, + newObj.name = '' // 褰撳墠鐢ㄦ埛鐨勫悕绉� + newObj.updateTime = '' // 鑾峰彇褰撳墠鏃堕棿 + newObj.equipmentPoint = '' + newObj.equipmentPointName = '' newObj.descriptiveness = '' - newObj.unit = 'mm' + 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) { - this.$message.error(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() }, // 鍙栨秷鏂板璁惧鐮佺偣 @@ -732,73 +740,115 @@ const { data: pointList } = await getEquipmentPointList({ InstrumentId: this.equipmentDetail.id }) this.codePointsTable = pointList }, + async submitForm(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + return true + } else { + return false; + } + }); + }, // 鐐瑰嚮鏂板浠櫒璁惧鎴栧綋瀛樺湪浠櫒璇︽儏鏃舵槸淇敼浠櫒璁惧淇℃伅 async addNewEquipment() { - if (Array.isArray(this.equipmentform.classifyId)) { - this.equipmentform.classifyId = this.equipmentform.classifyId.pop() - } - if (!this.equipmentDetail.id) { - // 鏍煎紡鍖栨棩鏈� - console.log('鏂板浠櫒') - 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}') - console.log('鏂板浠櫒璁惧鍙傛暟', this.equipmentform) - 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('娣诲姞鎴愬姛') - this.addDrawerVisible = false - this.equipmentform = {} - return + }); + }, + 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: "" } - console.log('淇敼浠櫒鍙傛暟', this.equipmentform) - try { - const res = await changeInstrument(this.equipmentform) - console.log(res) - this.$message.success('淇敼鎴愬姛') - this.addDrawerVisible = false - this.detailDrawer = false - } catch (error) { - this.$message.error('娣诲姞澶辫触') - } + this.$refs[formName].resetFields(); + }, + cancelAddMeasure() { + this.measureForm.file = null; + this.measureFormVisible = false + this.resetForm('addmeasureForm'); + this.$refs['upload'].clearFiles(); }, // 娣诲姞璁¢噺淇℃伅 async addMeasure() { - // 鏍煎紡鍖栨椂闂� - 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('娣诲姞鎴愬姛') - this.measureForm = {} - this.measureFormVisible = false - } catch (error) { - this.$message.error('娣诲姞澶辫触') - } + 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}') + } + 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) + } + for (const key in this.measureForm) { + formData.append(key, this.measureForm[key]) + } + try { + await addMetricalInformation(formData) + 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(); + } + }); }, // 鍏抽棴璁惧璇︽儏鎶藉眽 closeDetailDrawer() { this.equipmentDetail = {} this.codePointsTable = [] this.measureTable = [] + this.measureForm.file = null; }, // 鍏抽棴娣诲姞淇敼璁惧鎶藉眽 closeAddOrChangeDrawer() { @@ -808,7 +858,6 @@ }, // 鏂囦欢涓婁紶 handleUpload(file, fileList) { - // console.log(file, fileList) this.measureForm.file = file }, // 鏍规嵁杈撳叆鐨勮澶囩紪鍙凤紝璁惧鍚嶇О鎴栬�呭瀷鍙疯鏍煎叧閿瓧杩涜杩囨护鍒楄〃 @@ -821,10 +870,11 @@ }, resetBtn() { this.searchData.keyword = '' + this.radioValue = 0; + this.isOut = false; this.equipmentTable = this.oldtableData }, getConditionTable() { - // console.log(this.radioValue) let filteredTable = this.oldtableData.filter(item => { return item.conditions === this.radioValue }) @@ -867,12 +917,10 @@ let expireItem for (expireItem of this.expireData) { this.equipmentTable = this.oldtableData.filter(item => { - console.log(this.radioValue) console.log('item', item) console.log('expireItem', expireItem) return item.conditions === this.radioValue && item.equipment_code === expireItem.equipment_code }) - console.log(this.equipmentTable) } } else { this.equipmentTable = this.expireData @@ -894,23 +942,66 @@ this.deletedialogVisible = true }, async deleteInstrument() { - // console.log(row.id) - await deleteInstrument({ instrumentId: this.instrumentId }) + await deleteInstrument({ instrumentId: this.instrumentId }).then(res=>{ + this.$message.success('鍒犻櫎鎴愬姛锛�'); + let d = this.nodeclicked + this.nodeClickHandler(d); + }).catch(()=>{ + this.$message.error('鍒犻櫎澶辫触锛�'); + }); this.deletedialogVisible = false }, - submitTreeForm(formName) { + async submitTreeForm(formName) { + let _that = this this.$refs[formName].validate((valid) => { if (valid) { - alert('submit!'); + _that.addClassifyInfo() } else { console.log('error submit!!'); return false; } }); }, + async addClassifyInfo() { + let _that = this + let data = { + fatherName: null, + sonName: null + } + + if (_that.addTreeForm.type != null && _that.addTreeForm.type[0] != 0) { + data.fatherName = _that.addTreeFormClassTree.filter(item => { + return item.value == _that.addTreeForm.type[0] + })[0].label + data.sonName = _that.addTreeForm.name + } else { + data.fatherName = _that.addTreeForm.name + } // return; + let add = await addClassify(data); + switch (add.message.split('-$')[0]) { + case '1': + this.$message({ + message: '鎿嶄綔鎴愬姛锛�', + type: 'success' + }); + _that.getThreeData() + _that.resetTreeForm('addTreeForm') + break; + case '2': + this.$message({ + message: '宸插瓨鍦ㄨ鍒嗙被', + type: 'warning' + }); + break; + case '0': + this.$message.error('娣诲姞澶辫触锛佽鑱旂郴绠$悊鍛�'); + break; + } + + }, resetTreeForm(formName) { this.$refs[formName].resetFields(); - this.addClassVisible=false + this.addClassVisible = false } } } @@ -950,21 +1041,23 @@ background: #fff; display: flex; justify-content: space-between; - padding: 0 24px 12px 24px; - + 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; } } } @@ -986,6 +1079,7 @@ .library-bom { flex: 2; margin-right: 12px; + height: 80vh; .bom-item-search { margin-bottom: 12px; @@ -1017,6 +1111,7 @@ margin-left: 12px; display: flex; flex-direction: column; + height: 80vh; .table-box { margin-top: 30px; -- Gitblit v1.9.3