From 07bb6f12403fb15a68fc439ac55d82f473b4da74 Mon Sep 17 00:00:00 2001 From: hailin <1356886193@qq.com> Date: 星期四, 27 七月 2023 09:46:54 +0800 Subject: [PATCH] 设备台账的第二次提交 --- src/views/laboratory/ledger/index.vue | 1128 +++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 747 insertions(+), 381 deletions(-) diff --git a/src/views/laboratory/ledger/index.vue b/src/views/laboratory/ledger/index.vue index 242feea..d8e1d65 100644 --- a/src/views/laboratory/ledger/index.vue +++ b/src/views/laboratory/ledger/index.vue @@ -19,7 +19,7 @@ </el-form> </div> <div class="serve-btn"> - <el-button type="primary" icon="el-icon-plus" @click="drawerFormVisible = true">鏂板浜哄憳</el-button> + <el-button type="primary" icon="el-icon-plus" @click="addDrawerVisible = true">鏂板浠櫒</el-button> </div> </div> <div class="content-main"> @@ -28,12 +28,11 @@ <el-row> <el-col :span="19"> <el-input - v-model="filterText" placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" /> </el-col> <el-col :span="5"> - <el-button type="primary" size="small" @click="FormVisible = true"><i class="el-icon-plus" /></el-button> + <el-button type="primary" size="small" @click="addClassVisible = true"><i class="el-icon-plus" /></el-button> </el-col> </el-row> </div> @@ -50,12 +49,10 @@ <div class="table-header"> <div class="search-bar"> <el-radio-group v-model="radioValue"> - <el-radio-button label="鍏ㄩ儴" /> - <el-radio-button label="杩愯" /> - <el-radio-button label="寰呮満" /> - <el-radio-button label="妫�淇�" /> - <el-radio-button label="鏁呴殰" /> - <el-radio-button label="鎶ュ簾" /> + <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" :style="{'marginLeft':'12px'}">宸茶繃鏈�</el-checkbox> </div> @@ -109,9 +106,9 @@ > <template slot-scope="scope"> <el-tag - :type="scope.row.businessStatus === 0 ? 'primary' : 'success'" + :type="scope.row.conditions === 0 ? 'primary' : 'success'" disable-transitions - >{{ scope.row.businessStatus === 0 ? '鏈悓鎰�' : '宸插悓鎰�' }}</el-tag> + >{{ scope.row.conditions | conditionsFilter }}</el-tag> </template> </el-table-column> <el-table-column @@ -119,11 +116,7 @@ label="瀛樻斁鍦�" min-width="200" /> - <el-table-column - prop="storage_place" - label="瀛樻斁鍦�" - min-width="200" - /> + <el-table-column label="鎿嶄綔" min-width="120" @@ -138,20 +131,20 @@ <!-- 寮瑰嚭琛ㄥ崟椤� --> <div> <!-- 娣诲姞鍒嗙被 --> - <el-dialog title="娣诲姞鍒嗙被" :visible.sync="FormVisible" width="33%"> - <el-form :model="treeForm"> + <el-dialog title="娣诲姞鍒嗙被" :visible.sync="addClassVisible" width="33%"> + <el-form :model="addTreeForm"> <el-form-item label="鍒嗙被鍚嶇О" label-width="100px"> - <el-input v-model="treeForm.name" autocomplete="off" /> + <el-input v-model="addTreeForm.name" autocomplete="off" /> </el-form-item> <el-form-item label="鐖剁骇鍒嗙被" label-width="100px"> - <el-select v-model="treeForm.type" placeholder="璇烽�夋嫨"> + <el-select v-model="addTreeForm.type" placeholder="璇烽�夋嫨"> <el-option label="鍘熸潗鏂�" value="0" /> <el-option label="鐢电嚎鐢电紗" value="1" /> </el-select> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> - <el-button @click="FormVisible = false">鍙� 娑�</el-button> + <el-button @click="addClassVisible = false">鍙� 娑�</el-button> <el-button type="primary">纭� 瀹�</el-button> </div> </el-dialog> @@ -170,185 +163,13 @@ </div> </div> </div> - <!-- 鎶藉眽 --> - <el-drawer - title="鏂板浠櫒璁惧" - :before-close="handleClose" - :visible.sync="drawerFormVisible" - direction="rtl" - custom-class="demo-drawer" - ref="drawer" - size="40%" - > - <div class="demo-drawer__content"> - <el-form label-position="top" :model="equipmentform"> - <el-row :gutter="50"> - <el-col :span="11"> - <el-form-item label="鎵�灞炲垎绫伙細" label-width="80"> - <el-select - v-model="equipmentform.classifyId" - clearable - filterable - :allow-create="true" - placeholder="璇烽�夋嫨" - @blur="productSelect" - style="width:100%" - > - <el-option - v-for="item in fatherOpetions" - :key="item.id" - :label="item.label" - :value="item.label" - /> - </el-select> - </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> - </el-col> - </el-row> - <el-row :gutter="50"> - <el-col :span="11"> - <el-form-item label="浠櫒璁惧鍚嶇О锛�" label-width="80"> - <el-input v-model="equipmentform.name" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="11"> - <el-form-item label="鐘舵�侊細" label-width="80"> - <el-select - v-model="equipmentform.classifyId" - clearable - filterable - :allow-create="true" - placeholder="璇烽�夋嫨浠櫒璁惧鐘舵��" - @blur="productSelect" - style="width:100%" - > - <el-option - v-for="item in fatherOpetions" - :key="item.id" - :label="item.label" - :value="item.label" - /> - </el-select> - </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.specification_models" 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-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-form-item> - </el-col> - <el-col :span="11"> - <el-form-item label="鐢熶骇鍘傚锛�" label-width="80"> - <el-input v-model="equipmentform.manufacturer" 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-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="璇烽�夋嫨鍒拌揣鏃ユ湡" - style="width:100%"> - </el-date-picker> - </el-form-item> - </el-col> - </el-row> - <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="璇烽�夋嫨楠屾敹鏃ユ湡" - style="width:100%"> - </el-date-picker> - </el-form-item> - </el-col> - <el-col :span="11"> - <el-form-item label="淇濈浜猴細" label-width="80"> - <el-select - v-model="equipmentform.keeper" - clearable - filterable - :allow-create="true" - placeholder="璇烽�夋嫨淇濈浜�" - @blur="productSelect" - style="width:100%" - > - <el-option - v-for="item in fatherOpetions" - :key="item.id" - :label="item.label" - :value="item.label" - /> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="50"> - <el-col :span="11"> - <el-form-item label="鏄惁鏀寔鏁伴噰锛�" label-width="80"> - <el-radio v-model="equipmentform.whetherDataAcquisition" label="1">鏄�</el-radio> - <el-radio v-model="equipmentform.whetherDataAcquisition" label="2">鍚�</el-radio> - </el-form-item> - </el-col> - <el-col :span="11"> - <el-form-item label="浠櫒璁惧璁¢噺锛�" label-width="80"> - <el-radio v-model="equipmentform.equipmentMeasurement" label="1">闇�瑕�</el-radio> - <el-radio v-model="equipmentform.equipmentMeasurement" label="2">涓嶉渶瑕�</el-radio> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="50"> - <el-col :span="11"> - <el-form-item label="鎻忚堪锛�" label-width="80"> - <el-input - type="textarea" - :rows="2" - placeholder="璇疯緭鍏ュ唴瀹�" - v-model=equipmentform.descriptiveness - style="width:217%"> - </el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <div class="demo-drawer__footer"> - <el-button @click="drawerFormVisible = false" class="el-button--default">鍙� 娑�</el-button> - <el-button type="primary" class="el-button--primary el-button--medium">纭� 瀹�</el-button> - </div> - </div> - </el-drawer> - <!-- --> + <!-- 浠櫒璇︽儏--> <el-drawer title="浠櫒璁惧璇︽儏" :visible.sync="detailDrawer" size="80%" class="detailDrawer" + @close="closeDetailDrawer" > <div> <div class="detail-info"> @@ -358,113 +179,557 @@ <div>鍩烘湰淇℃伅</div> </div> <div class="tips-btn"> - <span><i class="el-icon-edit" />鎿嶄綔锛�</span> - <el-button type="text" @click="dialogFormVisible = true">缂栬緫</el-button> + <el-button type="primary" @click="addDrawerVisible = true">缂栬緫</el-button> </div> </div> <div class="message"> - <div class="message-item"><span><i class="el-icon-edit" />鎵�灞炲垎绫伙細</span></div> + <div class="message-item"><span><i class="el-icon-edit" />鎵�灞炲垎绫伙細{{ equipmentDetail.classifyId }}</span></div> <div class="message-item"> - <span><i class="el-icon-edit" />鍒涘缓浜猴細</span> + <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> </div> <div class="message-item"> - <span><i class="el-icon-edit" />寤烘。鏃ユ湡锛�</span> + <span><i class="el-icon-edit" />寤烘。鏃ユ湡锛歿{ equipmentDetail.acceptanceDate }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />璁惧缂栧彿锛�</span> + <span><i class="el-icon-edit" />璁惧缂栧彿锛歿{ equipmentDetail.equipmentCode }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />鍨嬪彿瑙勬牸锛�</span> + <span><i class="el-icon-edit" />鍨嬪彿瑙勬牸锛歿{ equipmentDetail.specificationsModels }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />娴嬮噺鑼冨洿锛�</span> + <span><i class="el-icon-edit" />娴嬮噺鑼冨洿锛歿{ equipmentDetail.measuringRange }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />涓嶇‘瀹氬害/璇樊锛�</span> + <span><i class="el-icon-edit" />涓嶇‘瀹氬害/璇樊锛歿{ equipmentDetail.errorRate }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />鐢熶骇鍘傚锛�</span> + <span><i class="el-icon-edit" />鐢熶骇鍘傚锛歿{ equipmentDetail.manufacturer }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />瀛樻斁鍦扮偣锛�</span> + <span><i class="el-icon-edit" />瀛樻斁鍦扮偣锛歿{ equipmentDetail.storagePlace }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />鍒拌揣鏃ユ湡锛�</span> + <span><i class="el-icon-edit" />鍒拌揣鏃ユ湡锛歿{ equipmentDetail.arrivalDate }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />楠屾敹鏃ユ湡锛�</span> + <span><i class="el-icon-edit" />楠屾敹鏃ユ湡锛歿{ equipmentDetail.acceptanceDate }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />淇濈浜猴細</span> + <span><i class="el-icon-edit" />淇濈浜猴細{{ equipmentDetail.userId }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />鏄惁鏀寔鏁伴噰锛�</span> + <span><i class="el-icon-edit" />鏄惁鏀寔鏁伴噰锛歿{ equipmentDetail.whetherDataAcquisition==1 ? '鏀寔': '涓嶆敮鎸�' }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />浠櫒璁惧璁¢噺锛�</span> + <span><i class="el-icon-edit" />浠櫒璁惧璁¢噺锛歿{ equipmentDetail.equipmentMeasurement==1 ? '闇�瑕�': '涓嶉渶瑕�' }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />璁¢噺鍛ㄦ湡锛�</span> + <span><i class="el-icon-edit" />璁¢噺鍛ㄦ湡锛歿{ equipmentDetail.termValidity }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />鎻忚堪锛�</span> + <span><i class="el-icon-edit" />鎻忚堪锛歿{ equipmentDetail.descriptiveness }}</span> </div> </div> </div> - <el-tabs> - <el-tab-pane label="鐢ㄦ埛绠$悊" name="first">鐢ㄦ埛绠$悊</el-tab-pane> - <el-tab-pane label="閰嶇疆绠$悊" name="second">閰嶇疆绠$悊</el-tab-pane> - <el-tab-pane label="瑙掕壊绠$悊" name="third">瑙掕壊绠$悊</el-tab-pane> - <el-tab-pane label="瀹氭椂浠诲姟琛ュ伩" name="fourth">瀹氭椂浠诲姟琛ュ伩</el-tab-pane> + <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"> + <el-button @click="addNewCodePoints">娣诲姞</el-button> + <el-button @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%" + > + <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" /> + </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" /> + </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" /> + </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" /> + </template> + </el-table-column> + + </el-table> + </el-tab-pane> + <el-tab-pane label="璁¢噺淇℃伅" name="measure"> + <el-button :style="{marginBottom: '18px'}" @click="measureFormVisible = true">鏂板璁¢噺淇℃伅</el-button> + <el-table + ref="measureTable" + :cell-style="{textAlign: 'center'}" + :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" + :data="measureTable" + style="width: 100%" + > + <el-table-column + type="index" + label="搴忓彿" + min-width="90" + /> + <el-table-column + prop="name" + label="璐熻矗浜�" + min-width="200" + /> + <el-table-column + prop="measurement_unit" + label="璁¢噺鍗曚綅" + min-width="150" + /> + <el-table-column + prop="beginDate" + label="寮�濮嬫棩鏈�" + min-width="150" + /> + <el-table-column + prop="endDate" + label="缁撴潫鏃ユ湡" + min-width="150" + /> + <el-table-column + prop="performance_index" + label="鎬ц兘鎸囨爣" + min-width="200" + /> + <el-table-column + prop="uncertainty" + label="涓嶇‘瀹氬害" + min-width="200" + /> + <el-table-column + prop="conditions" + label="缁撴灉" + min-width="120" + > + <template slot-scope="scope"> + {{ scope.row.result }} + <!-- <el-tag + :type="scope.row.result === 0 ? 'primary' : 'success'" + disable-transitions + >{{ scope.row.result === 0 ? '鏈悓鎰�' : '宸插悓鎰�' }}</el-tag> --> + </template> + </el-table-column> + <el-table-column + prop="remarks" + label="澶囨敞" + min-width="200" + /> + </el-table> + </el-tab-pane> </el-tabs> - <el-drawer - title="缂栬緫" - :append-to-body="true" - :visible.sync="editDrawer" - > - <p>_(:蟹銈濃垹)_</p> - </el-drawer> </div> </el-drawer> + <!-- 娣诲姞浠櫒/淇敼浠櫒淇℃伅 --> + <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-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> + </el-col> + <el-col :span="11"> + <el-form-item label="璁惧缂栧彿锛�" label-width="80"> + <el-input v-model="equipmentform.equipmentCode" 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> + </el-col> + <el-col :span="11"> + <el-form-item label="鐘舵�侊細" label-width="80"> + <el-select + v-model="equipmentform.conditions" + clearable + filterable + :allow-create="true" + placeholder="璇烽�夋嫨浠櫒璁惧鐘舵��" + style="width:100%" + > + <el-option + v-for="item in conditionsOptions" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </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.specificationsModels" 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-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-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="鐢熶骇鍘傚锛�" label-width="80"> + <el-input v-model="equipmentform.manufacturer" 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-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="璇烽�夋嫨鍒拌揣鏃ユ湡" + style="width:100%" + /> + </el-form-item> + </el-col> + </el-row> + <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="璇烽�夋嫨楠屾敹鏃ユ湡" + 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="璇烽�夋嫨淇濈浜�" + style="width:100%" + > + <el-option + v-for="item in userOpetions" + :key="item.id" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="50"> + <el-col :span="11"> + <el-form-item label="鏄惁鏀寔鏁伴噰锛�" label-width="80"> + <el-radio v-model="equipmentform.whetherDataAcquisition" :label="1">鏀寔</el-radio> + <el-radio v-model="equipmentform.whetherDataAcquisition" :label="0">涓嶆敮鎸�</el-radio> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="浠櫒璁惧璁¢噺锛�" label-width="80"> + <el-radio v-model="equipmentform.equipmentMeasurement" :label="1">闇�瑕�</el-radio> + <el-radio v-model="equipmentform.equipmentMeasurement" :label="0">涓嶉渶瑕�</el-radio> + </el-form-item> + </el-col> + </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> + </el-col> + </el-row> + <el-row :gutter="50"> + <el-col :span="11"> + <el-form-item label="鎻忚堪锛�" label-width="80"> + <el-input + v-model="equipmentform.descriptiveness" + type="textarea" + :rows="2" + placeholder="璇疯緭鍏ュ唴瀹�" + style="width:217%" + /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <div class="demo-drawer__footer"> + <el-button class="el-button--default" @click="addDrawerVisible = false">鍙� 娑�</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-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="璐熻矗浜�"> + <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" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璁¢噺鍗曚綅"> + <el-input v-model="measureForm.measurementUnit" /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label="妫�瀹氭湁鏁堟湡"> + <el-date-picker + v-model="measureForm.date" + type="daterange" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="涓嶇‘瀹氬害"> + <el-input 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="璐熻矗浜�" + style="width:100%" + > + <el-option + v-for="item in resultOptions" + :key="item.id" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label="鎬ц兘鎸囨爣"> + <el-input + v-model="measureForm.performanceIndex" + type="textarea" + :rows="2" + placeholder="璇疯緭鍏ュ唴瀹�" + /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label="澶囨敞"> + <el-input + v-model="measureForm.remarks" + type="textarea" + :rows="2" + placeholder="璇疯緭鍏ュ唴瀹�" + /> + </el-form-item> + </el-col> + </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-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button> + </el-upload> + </el-form-item> + </el-col> + </el-row> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="addMeasure">纭� 瀹�</el-button> + + <el-button @click="measureFormVisible = false">鍙� 娑�</el-button> + </span> + </el-dialog> </div> </template> <script> -import { getClassifyList, getInstrumentList } from '@/api/laboratory/ledger' +import { getClassifyList, getInstrumentList, + addInstrumentUser, addInstrument, getInstrumentDetail, + getEquipmentPointList, addEquipmentPoint, + getMetricalInformationList, changeInstrument, addMetricalInformation } 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 + } + }, data() { return { - // 琛ㄦ牸鏁版嵁 - classTree: [{ - id: 1, - label: '涓�绾� 1', - children: [{ - id: 4, - label: '浜岀骇 1-1', - children: [{ - id: 9, - label: '涓夌骇 1-1-1' - }, { - id: 10, - label: '涓夌骇 1-1-2' - }] - }] - }], - treeForm: [{ - name: '', - type: '' - }], - personnerlTable: [{ - specification_models: 'WCDMS-1', // 鍨嬪彿瑙勬牸 - equipment_name: '鏁板瓧鐢垫ˉ', // 浠櫒璁惧鍚嶇О - term_validity: 12, // 璁¢噺鎴鏈夋晥鏈� - equipment_code: 'JSTC-W1-00001', // 浠櫒璁惧缂栧彿 - keeper: 0, // 淇濈浜� - id: 1, // 搴忓彿 - conditions: 1, // 璁惧鐘舵�� - storage_place: '鍦扮悆浜氭床涓浗姹熻嫃鍗楅��' // 瀛樻斁鍦� - }], + // 鐢ㄦ埛涓嬫媺妗嗛厤缃」 + userOpetions: [], + // 浠櫒鐘舵�侀厤缃」 + conditionsOptions: [ + { + label: '杩愯', + value: 1 + }, + { + label: '鏁呴殰', + value: 2 + }, + { + label: '鎶ヤ慨', + value: 3 + }, + { + label: '妫�淇�', + value: 4 + }, + { + label: '寰呮満', + value: 5 + } + ], + // 璁¢噺鐘舵�侀厤缃」 + resultOptions: [ + { + label: '鍚堟牸', + value: 1 + }, + { + label: '鏍℃鍚庡彲鐢�', + value: 2 + }, + { + label: '涓嶅悎鏍�', + value: 3 + } + + ], + // 鍒嗙被tree鏁版嵁锛屽垎绫婚厤缃」 + classTree: [], + // 娣诲姞鍒嗙被鍙傛暟 + addTreeForm: {}, // tree榛樿鍊� defaultProps: { children: 'children', @@ -475,12 +740,17 @@ keyword: '' }, // 琛ㄦ牸鎼滅储鍗曢�夊�� - radioValue: '鍏ㄩ儴', + radioValue: '0', // 琛ㄦ牸鎼滅储宸茶繃鏈� + // 鏄惁杩囨湡 isOut: false, - FormVisible: false, - drawerFormVisible: false, - loading: false, + // 鎺у埗娣诲姞鍒嗙被妯℃�佹鏄剧ず + addClassVisible: false, + // 鎺у埗鏂板璁¢噺妯℃�佹鏄剧ず + measureFormVisible: false, + // 鎺у埗娣诲姞淇敼浠櫒鎶藉眽鐨勬樉绀� + addDrawerVisible: false, + // 娣诲姞淇敼浠櫒鍙傛暟瀵硅薄 equipmentform: { acceptanceDate: '', // 楠屾敹鏃ユ湡 arrivalDate: '', // 鍒拌揣鏃ユ湡 @@ -488,24 +758,45 @@ conditions: '', // 鐘舵�� descriptiveness: '', // 鎻忚堪 equipmentCode: '', // 璁惧缂栧彿 - equipmentMeasurement: '', // 浠櫒璁惧璁¢噺 + equipmentMeasurement: 1, // 浠櫒璁惧璁¢噺 equipmentName: '', // 浠櫒璁惧鍚嶇О errorRate: '', // 涓嶇‘瀹氬害/鍑嗙‘搴�/鏈�澶у厑璁歌宸� - keeper: '', // 淇濈浜� + userId: '', // 淇濈浜� manufacturer: '', // 鐢熶骇鍘傚 measuringRange: '', // 娴嬮噺鑼冨洿 specificationsModels: '', // 鍨嬪彿瑙勬牸 storagePlace: '', // 瀛樻斁鍦扮偣 - whetherDataAcquisition: '' // 鏄惁鏀寔鏁伴噰 + whetherDataAcquisition: 1 // 鏄惁鏀寔鏁伴噰 }, - timer: null, - formLabelWidth: '80', + // 鎺у埗璁惧浠櫒璇︽儏鎶藉眽鏄剧ず detailDrawer: false, - editDrawer: false, + // 璁惧鏁版嵁鍒楄〃 equipmentTable: [], + // 鍒嗛〉鍙傛暟 currentPage: 1, pageSize: 10, - total: 0 + total: 0, + // 鐮佺偣琛ㄦ牸 + codePointsTable: [ + { + 'unit': 'mm', + 'descriptiveness': '鐤簡锛屽仛涓嶄簡', + 'equipmentPoint': 'Area-1', + 'name': '灏忓皬', + 'updateTime': '2023-07-24', + 'id': 1, + 'equipmentPointName': '瀵间綋灞忚斀锛堝鍘氶潰绉級' + } + ], + // 璁¢噺淇℃伅琛� + measureTable: [], + // 娣诲姞璁¢噺淇℃伅鍙傛暟瀵硅薄 + measureForm: {}, + activeTabsName: 'codePoints', + // 鐮佺偣琛ㄦ牸鐨勭姸鎬侊細鏁版嵁灞曠ずfalse/鏂板杈撳叆true + codePointesTableStatus: false, + // 璁惧璇︽儏瀵硅薄 + equipmentDetail: {} } }, watch: { @@ -515,12 +806,43 @@ }, created() { this.getThreeData() + this.getUserOptions() }, methods: { - openDetail(row) { - console.log(row) - this.detailDrawer = true + // 鑾峰彇鍒嗙被鏁版嵁 + async getThreeData() { + const { data } = await getClassifyList() + // console.log(data) + this.classTree = data.map(item => { + if (item.children) { + item.children = item.children.map(childrenItem => { + return { ...childrenItem, label: childrenItem.son_name, value: childrenItem.id } + }) + } + return { ...item, label: item.father_name, value: item.id ? item.id : item.father_name } + }) + // console.log(this.classTree) }, + // 鑾峰彇鐢ㄦ埛淇℃伅閰嶇疆椤� + async getUserOptions() { + const { data } = await addInstrumentUser() + this.userOpetions = data.map(item => ({ ...item, label: item.name, value: item.id })) + }, + // 鏄剧ず浠櫒璇︽儏 + 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) { console.log(data) // 鍙湁鏁版嵁涓惡甯d鎵嶈兘鍙戦�佹煡璇㈣姹� @@ -528,53 +850,154 @@ this.getEquipmentTable({ classifyId: data.id, pageSize: this.pageSize, pageNo: this.currentPage }) } }, + // 鑾峰彇浠櫒鍒楄〃鏁版嵁 async getEquipmentTable(ages) { - console.log('鏉′欢瀵硅薄', ages) + // console.log('鏉′欢瀵硅薄', ages) const { data } = await getInstrumentList(ages) - console.log(data) + // console.log(data) this.equipmentTable = data.row this.total = data.total }, + // 杩囨护鑺傜偣 filterNode(value, data) { if (!value) return true return data.label.indexOf(value) !== -1 }, - async getThreeData() { - const { data } = await getClassifyList() - console.log(data) - this.classTree = data.map(item => { - if (item.children) { - item.children = item.children.map(childrenItem => { - return { ...childrenItem, label: childrenItem.son_name } - }) - } - return { ...item, label: item.father_name } - }) - console.log(this.classTree) - }, + // 鏀瑰彉椤甸潰鏁版嵁澶у皬 handleSizeChange() { // 褰撳墠椤靛ぇ灏� }, + // 鏀瑰彉褰撳墠椤� handleCurrentChange() { // 褰撳墠椤垫洿鏀� + }, + // 鏄剧ず璁惧鐮佺偣 + addCodePoints() { + // 娣诲姞鏂扮爜鐐癸紝娓呯┖鍘熸暟缁� + this.codePointesTableStatus = true + this.codePointsTable = undefined + }, + // 鏂板璁惧鐮佺偣 + addNewCodePoints() { + // + if (!this.codePointsTable) { + this.codePointsTable = [] + } + const newObj = {} + newObj.name = '灏忓皬' // 褰撳墠鐢ㄦ埛鐨勫悕绉� + newObj.updateTime = '2023-07-24' // 鑾峰彇褰撳墠鏃堕棿 + newObj.equipmentPoint = 'Area-1' + newObj.equipmentPointName = '瀵间綋灞忚斀锛堝鍘氶潰绉級' + newObj.descriptiveness = '' + newObj.unit = 'mm' + newObj.instrumentId = this.equipmentDetail.id + this.codePointsTable.push(newObj) + }, + // 淇濆瓨鎻愪氦鏂板璁惧鐮佺偣 + async saveCodePoins() { + console.log(this.codePointsTable) + if (!this.codePointsTable) { + this.codePointsTable = [] + } + 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) + } + await this.closeCodePoins() + }, + // 鍙栨秷鏂板璁惧鐮佺偣 + async closeCodePoins() { + this.codePointesTableStatus = false + this.codePointsTable = undefined + const { data: pointList } = await getEquipmentPointList({ InstrumentId: this.equipmentDetail.id }) + this.codePointsTable = pointList + }, + // 鐐瑰嚮鏂板浠櫒璁惧鎴栧綋瀛樺湪浠櫒璇︽儏鏃舵槸淇敼浠櫒璁惧淇℃伅 + 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.$message.success('娣诲姞鎴愬姛') + this.addDrawerVisible = false + this.equipmentform = {} + return + } + 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('娣诲姞澶辫触') + } + }, + // 娣诲姞璁¢噺淇℃伅 + 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('娣诲姞澶辫触') + } + }, + // 鍏抽棴璁惧璇︽儏鎶藉眽 + closeDetailDrawer() { + this.equipmentDetail = {} + this.codePointsTable = [] + this.measureTable = [] + }, + // 鍏抽棴娣诲姞淇敼璁惧鎶藉眽 + closeAddOrChangeDrawer() { + if (!this.equipmentDetail.id) { + this.equipmentform = {} + } + }, + // 鏂囦欢涓婁紶 + handleUpload(file, fileList) { + // console.log(file, fileList) + this.measureForm.file = file } - }, - handleClose(done) { - if (this.loading) { - return - } - this.$confirm('纭畾瑕佹彁浜よ〃鍗曞悧锛�') - .then(_ => { - this.loading = true - this.timer = setTimeout(() => { - done() - // 鍔ㄧ敾鍏抽棴闇�瑕佷竴瀹氱殑鏃堕棿 - setTimeout(() => { - this.loading = false - }, 400) - }, 2000) - }) - .catch(_ => {}) } } </script> @@ -582,7 +1005,6 @@ <style lang="scss" scoped> .demo-drawer__content{ margin-left: 50px; - // margin-right: 5px; } .demo-drawer__footer { display: flex; @@ -593,6 +1015,7 @@ background-color: #fff; color: #333; width: 45%; + margin-bottom: 24px; } .demo-drawer__footer .el-button--primary { @@ -600,6 +1023,7 @@ color: #fff; width: 45%; margin-right: 60px; + margin-bottom: 24px; } .ledger-main{ width: 100%; @@ -648,28 +1072,6 @@ line-height: 33px; } } - .tips{ - height: 33px !important; - display: flex; - height: 24px; - align-items: center; - font-size: 16px; - // margin-bottom: 12px; - >span{ - display: inline-block; - margin-right: 10px; - width: 4px; - height: 16px; - background: #0077DB; - } - >div{ - height: 100%; - line-height: 36px; - } - .el-button{ - padding: 0; - } - } } .bom-item-search .el-row{ // display: flex; @@ -679,25 +1081,6 @@ } .el-tree { margin-top: 12px; - ::v-deep .el-tree-node__content{ - height: 24px !important; - font-size: 14px; - display: inline-block !important; - padding: 2px; - color: #333; - } - ::v-deep .el-tree-node__content:hover{ - background: rgba(58,124,253,0.1) !important; - // opacity: 0.31; - border-radius: 3px; - color: #333 !important; - } - ::v-deep .el-tree-node:focus>.el-tree-node__content{ - background: rgba(58,124,253,0.1) !important; - // opacity: 0.31; - border-radius: 3px; - color: #333 !important; - } } } .library-table{ @@ -706,19 +1089,10 @@ margin-left: 12px; display: flex; flex-direction: column; - - /* .table-header{ - display: flex; - justify-content: space-between; - .el-form-item{ - margin-bottom: 30px !important; - } - } */ .table-box{ margin-top: 30px; flex: 1; background: #fff; - // padding: 20px 20px 10px 20px; display: flex; flex-direction: column; .el-table { @@ -733,42 +1107,34 @@ } } - .detailDrawer{ +} +.addDrawer{ + ::v-deep .el-drawer__body{ + // padding: 24px !important; + overflow-y: scroll; + overflow-x: hidden; + } +} +.detailDrawer{ ::v-deep .el-drawer__body{ padding: 24px !important; + overflow-y: scroll; } .detail-info{ background: #fff; - box-shadow: rgba(100, 100, 111, 0.2) 0px 5px 15px; - - // padding: 10px 20px 10px 20px; + box-shadow: rgba(100, 100, 111, 0.2) 0px 5px 15px; margin: 0; margin-bottom: 12px; border-radius: 6px; overflow: hidden; .tips-main{ - // margin: ; padding: 10px 20px 0 20px; display: flex; justify-content: space-between; align-items: center; height: 50px; - // height: ; - &:hover{ - background: #85bff810; - .tips-btn{ - display: block; - left: 0; - opacity:1; - } - } .tips-btn{ - height: 100%; - // display: none; - position: relative; - opacity:0; - left: 100px; - transition: all 0.3s ease-in-out; + margin-bottom: 10px; } .tips{ height: 100%; @@ -776,7 +1142,6 @@ height: 24px; align-items: center; font-size: 16px; - // margin-bottom: 12px; >span{ display: inline-block; margin-right: 10px; @@ -801,14 +1166,12 @@ display: flex; flex-wrap: wrap; border-top: 1px solid #F2F6FC; - // border-top: 1px solid #F2F6FC; >div{ flex: 30%; max-width: 30%; padding: 8px; color: #606266; align-items: center; - // height: 65px; font-size: 12px; height: 40px; display: flex; @@ -816,18 +1179,21 @@ >span{ color: #303133; font-size: 14px; - // >i{ margin-right: 8px; } } } - // >div:nth-child(5){ - // flex: 60%; - // max-width: 60%; - // } } } } +.measureForm{ + // + .el-form-item{ + // + .el-date-editor{ + width: 100%; + } + } } </style> -- Gitblit v1.9.3