From aca7c994977ecb1cc8fb3b7740a04192135a40a9 Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期一, 04 九月 2023 15:04:20 +0800 Subject: [PATCH] modified: .env.development modified: src/views/CNAS/nonConformanceManage/index.vue modified: src/views/CNAS/reviewAnnualPlan/index.vue modified: src/views/CNAS/satisfactionSurveys/index.vue modified: src/views/experiment/checkTheReport/index.vue modified: src/views/experiment/inspectionApplication/index.vue modified: src/views/experiment/nonConformanceReview/index.vue modified: src/views/experiment/nonConformingFeedback/index.vue modified: src/views/experiment/reportAuditing/index.vue modified: src/views/inspectionManagement/commissionInspection/index.vue modified: src/views/inspectionManagement/reportForInspection/index.vue modified: src/views/laboratory/ledger/index.vue modified: src/views/laboratory/measure/index.vue modified: src/views/laboratory/personnel/index.vue modified: src/views/laboratory/role/index.vue modified: src/views/message/toDo/index.vue --- src/views/laboratory/ledger/index.vue | 823 ++++++++++++++++++++++++++------------------------------- 1 files changed, 377 insertions(+), 446 deletions(-) diff --git a/src/views/laboratory/ledger/index.vue b/src/views/laboratory/ledger/index.vue index 329e21b..9746cd5 100644 --- a/src/views/laboratory/ledger/index.vue +++ b/src/views/laboratory/ledger/index.vue @@ -4,10 +4,7 @@ <div class="search-bar"> <el-form ref="form" :inline="true" :model="searchData"> <el-form-item> - <el-input - v-model="searchData.keyword" - placeholder="璇疯緭鍏ョ紪鍙�/璁惧鍚嶇О/鍨嬪彿瑙勬牸" - > + <el-input v-model="searchData.keyword" placeholder="璇疯緭鍏ョ紪鍙�/璁惧鍚嶇О/鍨嬪彿瑙勬牸"> <i slot="prefix" class="el-input__icon el-icon-search" /> </el-input> </el-form-item> @@ -19,7 +16,8 @@ </el-form> </div> <div class="serve-btn"> - <el-button type="primary" icon="el-icon-plus" @click="addDrawerVisible = true">鏂板浠櫒</el-button> + <el-button type="primary" icon="el-icon-plus" + @click="addDrawerVisible = true; equipmentform.equipmentMeasurement = 1; equipmentform.whetherDataAcquisition = 1">鏂板浠櫒</el-button> </div> </div> <div class="content-main"> @@ -27,24 +25,16 @@ <div class="bom-item-search"> <el-row> <el-col :span="19"> - <el-input - v-model="filterText" - placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" - /> + <el-input v-model="filterText" placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" /> </el-col> <el-col :span="5"> - <el-button type="primary" size="small" @click="addClassVisible = 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> - <el-tree - ref="classTree" - :data="classTree" - :props="defaultProps" - :default-expand-all="true" - :filter-node-method="filterNode" - @node-click="nodeClickHandler" - /> + <el-tree 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"> @@ -55,74 +45,30 @@ {{ item.label }} </el-radio-button> </el-radio-group> - <el-checkbox v-model="isOut" @change="getExpireTable" :style="{'marginLeft':'12px'}">宸茶繃鏈�</el-checkbox> + <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> --> </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-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" - /> - <el-table-column - prop="specifications_models" - label="瑙勬牸鍨嬪彿" - min-width="150" - /> - <el-table-column - prop="name" - label="淇濈浜�" - min-width="200" - /> - <el-table-column - prop="termValidity" - label="璁¢噺鎴鏈夋晥鏈�" - min-width="200" - /> - <el-table-column - prop="conditions" - label="璁惧鐘舵��" - min-width="120" - > + <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%;"> + <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" /> + <el-table-column prop="specifications_models" label="瑙勬牸鍨嬪彿" min-width="150" /> + <el-table-column prop="name" label="淇濈浜�" min-width="200" /> + <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 :type="scope.row.conditions === 0 ? 'primary' : 'success'" disable-transitions>{{ + scope.row.conditions | conditionsFilter }}</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" - > + <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> <el-button type="text" size="small" @click="clickDelete(scope.row)">鍒犻櫎</el-button> @@ -133,45 +79,33 @@ <div> <!-- 娣诲姞鍒嗙被 --> <el-dialog title="娣诲姞鍒嗙被" :visible.sync="addClassVisible" width="33%"> - <el-form :model="addTreeForm"> - <el-form-item label="鍒嗙被鍚嶇О" label-width="100px"> - <el-input v-model="addTreeForm.name" autocomplete="off" /> + <el-form :model="addTreeForm" ref="addTreeForm"> + <el-form-item prop="name" label="鍒嗙被鍚嶇О" label-width="100px" :rules="[ + { required: true, message: '鍒嗙被鍚嶇О涓嶈兘涓虹┖' } + ]"> + <el-input placeholder="璇峰~鍐欏垎绫诲悕绉�" v-model="addTreeForm.name" /> </el-form-item> <el-form-item label="鐖剁骇鍒嗙被" label-width="100px"> - <el-select 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"> - <el-button @click="addClassVisible = false">鍙� 娑�</el-button> - <el-button type="primary">纭� 瀹�</el-button> + <el-button @click="resetTreeForm('addTreeForm')">鍙� 娑�</el-button> + <el-button type="primary" @click="submitTreeForm('addTreeForm')">纭� 瀹�</el-button> </div> </el-dialog> </div> <div> - <el-pagination - :current-page="currentPage" - :page-sizes="[10, 15, 20, 25]" - :page-size="pageSize" - layout="total, sizes, prev, pager, next, jumper" - :total="total" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> + <el-pagination :current-page="currentPage" :page-sizes="[10, 15, 20, 25]" :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" + @current-change="handleCurrentChange" /> </div> </div> </div> </div> <!-- 浠櫒璇︽儏--> - <el-drawer - title="浠櫒璁惧璇︽儏" - :visible.sync="detailDrawer" - size="80%" - class="detailDrawer" - @close="closeDetailDrawer" - > + <el-drawer title="浠櫒璁惧璇︽儏" :visible.sync="detailDrawer" size="80%" class="detailDrawer" @close="closeDetailDrawer"> <div> <div class="detail-info"> <div class="tips-main"> @@ -186,8 +120,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> @@ -220,10 +154,11 @@ <span><i class="el-icon-edit" />淇濈浜猴細{{ equipmentDetail.userId }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />鏄惁鏀寔鏁伴噰锛歿{ equipmentDetail.whetherDataAcquisition==1 ? '鏀寔': '涓嶆敮鎸�' }}</span> + <span><i class="el-icon-edit" />鏄惁鏀寔鏁伴噰锛歿{ equipmentDetail.whetherDataAcquisition == 1 ? '鏀寔' : '涓嶆敮鎸�' + }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />浠櫒璁惧璁¢噺锛歿{ equipmentDetail.equipmentMeasurement==1 ? '闇�瑕�': '涓嶉渶瑕�' }}</span> + <span><i class="el-icon-edit" />浠櫒璁惧璁¢噺锛歿{ equipmentDetail.equipmentMeasurement == 1 ? '闇�瑕�' : '涓嶉渶瑕�' }}</span> </div> <div class="message-item"> <span><i class="el-icon-edit" />璁¢噺鍛ㄦ湡锛歿{ equipmentDetail.termValidity }}</span> @@ -235,71 +170,40 @@ </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"> + <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" - > + <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" - > + <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" - > + <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" - > + <!-- <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" /> @@ -309,54 +213,18 @@ </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" - > + <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 @@ -365,134 +233,100 @@ >{{ scope.row.result === 0 ? '鏈悓鎰�' : '宸插悓鎰�' }}</el-tag> --> </template> </el-table-column> - <el-table-column - prop="remarks" - label="澶囨敞" - min-width="200" - /> + <el-table-column prop="remarks" label="澶囨敞" min-width="200" /> </el-table> </el-tab-pane> </el-tabs> </div> </el-drawer> <!-- 娣诲姞浠櫒/淇敼浠櫒淇℃伅 --> - <el-drawer - ref="addDrawer" - :title="equipmentDetail.id?'淇敼浠櫒璁惧淇℃伅':'鏂板浠櫒璁惧'" - :append-to-body="true" - :visible.sync="addDrawerVisible" - class="addDrawer" - size="40%" - @close="closeAddOrChangeDrawer" - > + <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: 'change' } + ]"> + <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" - placeholder="璇烽�夋嫨浠櫒璁惧鐘舵��" - style="width:100%" - > - <el-option - v-for="item in conditionsOptions" - :key="item.value" - :label="item.label" - :value="item.value" - /> + <el-form-item label="鐘舵�侊細" prop="conditions" + :rules="[{ required: true, message: '璇烽�夋嫨浠櫒璁惧鐘舵��', trigger: 'change' }]" 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 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="璇烽�夋嫨鍒拌揣鏃ユ湡" - style="width:100%" - /> + <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-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 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> @@ -511,97 +345,67 @@ </el-form-item> </el-col> </el-row> - <el-row v-show="equipmentform.equipmentMeasurement===1" :gutter="50"> + <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-input v-model="equipmentform.termValidity" placeholder="璇峰~鍐欒閲忔湁鏁堟湡" 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-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 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-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-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" /> </el-select> </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-date-picker - v-model="measureForm.date" - type="daterange" - range-separator="鑷�" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - /> + <el-form-item label="妫�瀹氭湁鏁堟湡" prop="date" :rules="[{ required: true, message: '璇烽�夋嫨妫�瀹氭湁鏁堟湡', trigger: 'change' }]"> + <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 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="璐熻矗浜�" - style="width:100%" - > - <el-option - v-for="item in resultOptions" - :key="item.id" - :label="item.label" - :value="item.value" - /> + <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> </el-form-item> </el-col> @@ -609,36 +413,21 @@ <el-row :gutter="20"> <el-col :span="24"> <el-form-item label="鎬ц兘鎸囨爣"> - <el-input - v-model="measureForm.performanceIndex" - type="textarea" - :rows="2" - placeholder="璇疯緭鍏ュ唴瀹�" - /> + <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-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-upload class="upload-demo" action="#" :on-change="handleUpload" :auto-upload="false"> <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button> </el-upload> </el-form-item> @@ -648,14 +437,11 @@ <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> <!-- 鍒犻櫎浠櫒寮瑰嚭妗� --> - <el-dialog - title="鎻愮ず" - :visible.sync="deletedialogVisible" - width="30%"> + <el-dialog title="鎻愮ず" :visible.sync="deletedialogVisible" width="30%"> <span>纭畾鍒犻櫎璇ヤ华鍣ㄥ悧锛�</span> <span slot="footer" class="dialog-footer"> <el-button @click="deletedialogVisible = false">鍙� 娑�</el-button> @@ -666,10 +452,12 @@ </template> <script> -import { getClassifyList, getInstrumentList, +import { + getClassifyList, getInstrumentList, addInstrumentUser, addInstrument, getInstrumentDetail, getEquipmentPointList, addEquipmentPoint, - getMetricalInformationList, changeInstrument, addMetricalInformation, deleteInstrument } from '@/api/laboratory/ledger' + getMetricalInformationList, changeInstrument, addMetricalInformation, deleteInstrument, addClassify +} from '@/api/laboratory/ledger' import { parseTime } from '@/utils/index' export default { filters: { @@ -745,7 +533,10 @@ // 鍒嗙被tree鏁版嵁锛屽垎绫婚厤缃」 classTree: [], // 娣诲姞鍒嗙被鍙傛暟 - addTreeForm: {}, + addTreeForm: { + name: null, + type: null + }, // tree榛樿鍊� defaultProps: { children: 'children', @@ -797,19 +588,28 @@ // 鐮佺偣琛ㄦ牸 codePointsTable: [ { - 'unit': 'mm', - 'descriptiveness': '鐤簡锛屽仛涓嶄簡', - 'equipmentPoint': 'Area-1', - 'name': '灏忓皬', - 'updateTime': '2023-07-24', + '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: null + }, activeTabsName: 'codePoints', // 鐮佺偣琛ㄦ牸鐨勭姸鎬侊細鏁版嵁灞曠ずfalse/鏂板杈撳叆true codePointesTableStatus: false, @@ -824,7 +624,8 @@ conditionTable: '', nodeclicked: '', expireData: '', - instrumentId: '' + instrumentId: '', + addTreeFormClassTree: [] } }, watch: { @@ -849,7 +650,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() { @@ -873,7 +685,7 @@ // 鑺傜偣鐐瑰嚮澶勭悊 nodeClickHandler(data, node, element) { this.nodeclicked = data - // console.log(data) + console.log(data) // 鍙湁鏁版嵁涓惡甯d鎵嶈兘鍙戦�佹煡璇㈣姹� if (data.id) { this.getEquipmentTable({ classifyId: data.id, pageSize: this.pageSize, pageNo: this.currentPage, whetherWhether: this.isOut }) @@ -883,7 +695,6 @@ 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 @@ -914,12 +725,12 @@ this.codePointsTable = [] } const newObj = {} - newObj.name = '灏忓皬' // 褰撳墠鐢ㄦ埛鐨勫悕绉� - newObj.updateTime = '2023-07-24' // 鑾峰彇褰撳墠鏃堕棿 - newObj.equipmentPoint = 'Area-1' - newObj.equipmentPointName = '瀵间綋灞忚斀锛堝鍘氶潰绉級' + newObj.name = '' // 褰撳墠鐢ㄦ埛鐨勫悕绉� + newObj.updateTime = '' // 鑾峰彇褰撳墠鏃堕棿 + newObj.equipmentPoint = '' + newObj.equipmentPointName = '' newObj.descriptiveness = '' - newObj.unit = 'mm' + newObj.unit = '' newObj.instrumentId = this.equipmentDetail.id this.codePointsTable.push(newObj) }, @@ -949,18 +760,29 @@ 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() { + 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) { // 鏍煎紡鍖栨棩鏈� - 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) @@ -975,7 +797,6 @@ console.log('淇敼浠櫒鍙傛暟', this.equipmentform) try { const res = await changeInstrument(this.equipmentform) - console.log(res) this.$message.success('淇敼鎴愬姛') this.addDrawerVisible = false this.detailDrawer = false @@ -983,8 +804,24 @@ this.$message.error('娣诲姞澶辫触') } }, + cancelAddEq() { + this.addDrawerVisible = false + // this.resetForm('addNewEquipment') + }, + resetForm(formName) { + this.$refs[formName].resetFields(); + }, + cancelAddMeasure() { + this.measureFormVisible = false + 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)) { @@ -1005,6 +842,8 @@ 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) { @@ -1111,18 +950,77 @@ this.deletedialogVisible = true }, async deleteInstrument() { - // console.log(row.id) - await deleteInstrument({ instrumentId: this.instrumentId }) + await deleteInstrument({ instrumentId: this.instrumentId }).then(res=>{ + this.$message.error('鍒犻櫎鎴愬姛锛�'); + let d = this.nodeclicked + console.log(d); + this.nodeClickHandler(d); + }).catch(()=>{ + this.$message.error('鍒犻櫎澶辫触锛�'); + }); this.deletedialogVisible = false + }, + async submitTreeForm(formName) { + let _that = this + this.$refs[formName].validate((valid) => { + if (valid) { + _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 } } } </script> <style lang="scss" scoped> -.demo-drawer__content{ +.demo-drawer__content { margin-left: 50px; } + .demo-drawer__footer { display: flex; justify-content: space-between; @@ -1142,148 +1040,176 @@ margin-right: 60px; margin-bottom: 24px; } -.ledger-main{ + +.ledger-main { width: 100%; height: 100%; - // 椤甸潰澶撮儴鏉′欢鎼滅储 - .page-header-search{ + + // 椤甸潰澶撮儴鏉′欢鎼滅储 + .page-header-search { background: #fff; display: flex; justify-content: space-between; - padding: 0 24px 12px 24px; - .search-bar{ - .el-radio-button.is-active{ + padding: 15px 24px 12px 24px; + + .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; - } + + .el-form { + .el-form-item { + margin-bottom: 0px !important; + + .el-input { + width: 360px; + } } } } } -// 椤甸潰涓績鍐呭鍖哄煙 - .content-main{ + // 椤甸潰涓績鍐呭鍖哄煙 + .content-main { display: flex; height: 100%; min-height: calc(100vh - 88px); padding: 15px; - >div{ + + >div { padding: 20px; background: #fff; } - .library-bom{ + + .library-bom { flex: 2; margin-right: 12px; - .bom-item-search{ + height: 80vh; + + .bom-item-search { margin-bottom: 12px; - ::v-deep .el-input{ - input{ + + ::v-deep .el-input { + input { height: 33px; line-height: 33px; } } } - .bom-item-search .el-row{ - // display: flex; - .el-col{ - text-align: right; - } - } + + .bom-item-search .el-row { + + // display: flex; + .el-col { + text-align: right; + } + } + .el-tree { margin-top: 12px; } } - .library-table{ + + .library-table { flex: 8; max-width: 80%; margin-left: 12px; display: flex; flex-direction: column; - .table-box{ - margin-top: 30px; + height: 80vh; + + .table-box { + margin-top: 30px; + flex: 1; + background: #fff; + display: flex; + flex-direction: column; + + .el-table { flex: 1; - background: #fff; + } + + >div:nth-child(2) { display: flex; - flex-direction: column; - .el-table { - flex: 1; - } - >div:nth-child(2){ - display: flex; - justify-content: end; - margin: 10px 0; - } + justify-content: end; + margin: 10px 0; + } } } } } -.addDrawer{ - ::v-deep .el-drawer__body{ - // padding: 24px !important; - overflow-y: scroll; - overflow-x: hidden; - } + +.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{ + +.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; margin: 0; margin-bottom: 12px; border-radius: 6px; overflow: hidden; - .tips-main{ + + .tips-main { padding: 10px 20px 0 20px; display: flex; justify-content: space-between; align-items: center; height: 50px; - .tips-btn{ + + .tips-btn { margin-bottom: 10px; } - .tips{ - height: 100%; - display: flex; - height: 24px; - align-items: center; - font-size: 16px; - >span{ - display: inline-block; - margin-right: 10px; - width: 4px; - height: 16px; - background: #0077DB; - } - >div{ + + .tips { height: 100%; - line-height: 26px; - } - .el-button{ - padding: 0; - } + display: flex; + height: 24px; + align-items: center; + font-size: 16px; + + >span { + display: inline-block; + margin-right: 10px; + width: 4px; + height: 16px; + background: #0077DB; + } + + >div { + height: 100%; + line-height: 26px; + } + + .el-button { + padding: 0; + } } } // 鍩烘湰淇℃伅鍜屼紒涓氫俊鎭殑姣忎竴涓俊鎭」鏍峰紡 - .message{ + .message { padding: 0px 20px 8px 20px; display: flex; flex-wrap: wrap; border-top: 1px solid #F2F6FC; - >div{ + + >div { flex: 30%; max-width: 30%; padding: 8px; @@ -1293,22 +1219,27 @@ height: 40px; display: flex; align-items: center; - >span{ + + >span { color: #303133; font-size: 14px; - >i{ + + >i { margin-right: 8px; } } } } } - } -.measureForm{ +} + +.measureForm { + // - .el-form-item{ + .el-form-item { + // - .el-date-editor{ + .el-date-editor { width: 100%; } } -- Gitblit v1.9.3