| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- 设å¤å·¥å
·æç» --> |
| | | <template> |
| | | <div class="role_manage"> |
| | | <div class="search" v-show="!showData"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">ç¶æï¼</div> |
| | | <el-select |
| | | v-model="queryParams.deviceStatus" |
| | | placeholder="å
¨é¨" |
| | | size="small" |
| | | > |
| | | <el-option |
| | | v-for="item in deviceStatusList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">设å¤åç§°ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | v-model="queryParams.deviceName" |
| | | @keyup.enter.native="refreshTable()" |
| | | > |
| | | </el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">è§æ ¼åå·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | v-model="queryParams.specificationModel" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div style="padding-left: 30px"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()" |
| | | >æ¥ è¯¢</el-button |
| | | > |
| | | <el-button size="small" type="primary" @click="dialogVisible2 = true" |
| | | >æ° å¢</el-button |
| | | > |
| | | <el-button size="small" type="primary" @click="handleDownOne" |
| | | >导 åº</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | <div class="table" v-show="!showData"> |
| | | <lims-table |
| | | :tableData="tableData" |
| | | :column="column" |
| | | :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 320px)'" |
| | | :page="page" |
| | | @pagination="pagination" |
| | | ></lims-table> |
| | | </div> |
| | | <el-dialog |
| | | :title="isUp ? '设å¤è¯¦æ
' : 'æ¡£æ¡ä¿®è®¢'" |
| | | :visible.sync="dialogVisible" |
| | | width="70%" |
| | | top="5vh" |
| | | :before-close="handleClose" |
| | | > |
| | | <el-row style="display: flex; justify-content: space-around"> |
| | | <!-- 左边å¸å± --> |
| | | <el-col :span="7"> |
| | | <el-col> |
| | | <!-- å¾ç --> |
| | | <el-image |
| | | class="img" |
| | | style="width: 100%; height: 320px; marginbottom: 16px" |
| | | :src="javaApi + '/img/' + formData.imageUpload" |
| | | > |
| | | <div |
| | | slot="error" |
| | | class="image-error" |
| | | style=" |
| | | width: calc(100% -2px); |
| | | height: 318px; |
| | | border-radius: 16px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | border: 1px solid #eeeeee; |
| | | " |
| | | > |
| | | <i |
| | | class="el-icon-picture-outline" |
| | | style="font-size: 60px; color: #666666" |
| | | ></i> |
| | | </div> |
| | | </el-image> |
| | | <!-- 表å --> |
| | | <el-form |
| | | :label-position="labelPosition" |
| | | :model="formData" |
| | | label-width="120px" |
| | | > |
| | | <el-form-item label="仪å¨åç§°:" required> |
| | | <el-input |
| | | :disabled="isUp" |
| | | v-model="formData.deviceName" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="仪å¨åç§°EN:" required> |
| | | <el-input |
| | | :disabled="isUp" |
| | | v-model="formData.enDeviceName" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è§æ ¼åå·:" required> |
| | | <el-input |
| | | :disabled="isUp" |
| | | v-model="formData.specificationModel" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç产åå®¶:"> |
| | | <el-input |
| | | :disabled="isUp" |
| | | v-model="formData.manufacturer" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | </el-col> |
| | | <!-- ä¸é´å¸å± --> |
| | | <el-col :span="7"> |
| | | <el-form |
| | | :label-position="labelPosition" |
| | | :model="formData" |
| | | label-width="116px" |
| | | > |
| | | <el-form-item label="æ ¡åæå¡æºæ:"> |
| | | <el-input |
| | | disabled |
| | | v-model="formData.calibrationServices" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åºåç¼å·:"> |
| | | <el-input |
| | | :disabled="isUp" |
| | | v-model="formData.factoryNo" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="管çç¼å·:" required> |
| | | <el-input |
| | | :disabled="isUp" |
| | | v-model="formData.managementNumber" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è´ç½®æ¥æ:"> |
| | | <el-date-picker |
| | | :disabled="isUp" |
| | | style="width: 100%" |
| | | v-model="formData.acquisitionDate" |
| | | type="date" |
| | | format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | size="small" |
| | | placeholder="éæ©æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="å¯ç¨æ¥æ:" required> |
| | | <el-date-picker |
| | | :disabled="isUp" |
| | | style="width: 100%" |
| | | v-model="formData.activationDate" |
| | | type="date" |
| | | format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | size="small" |
| | | placeholder="éæ©æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="管ç人:"> |
| | | <el-select |
| | | v-model="formData.equipmentManager" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | :disabled="isUp" |
| | | v-for="item in responsiblePersonList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="åæ¾ç¹:"> |
| | | <el-input |
| | | :disabled="isUp" |
| | | v-model="formData.storagePoint" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ææ¯ææ :"> |
| | | <el-input |
| | | :disabled="isUp" |
| | | v-model="formData.technicalIndicators" |
| | | :rows="7" |
| | | type="textarea" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | <!-- å³è¾¹å¸å± --> |
| | | <el-col :span="7"> |
| | | <el-form |
| | | :label-position="labelPosition" |
| | | :model="formData" |
| | | label-width="140px" |
| | | ref="ruleForm" |
| | | > |
| | | <!-- å®éªå®¤å表 --> |
| | | <el-form-item label="æå±é¨é¨:"> |
| | | <el-select |
| | | :disabled="isUp" |
| | | v-model="formData.subordinateDepartmentsId" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in subordinateDepartmentsList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ£æµé¡¹ç®:"> |
| | | <el-cascader |
| | | :disabled="isUp" |
| | | v-model="formData.insProductIds" |
| | | :options="options" |
| | | :show-all-levels="false" |
| | | :props="props" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 100%" |
| | | :collapse-tags="!isUp" |
| | | separator="," |
| | | filterable |
| | | clearable |
| | | ></el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="æè¿æ ¡åæ¥æ:" v-if="isUp"> |
| | | <el-date-picker |
| | | :disabled="isUp" |
| | | style="width: 100%" |
| | | v-model="formData.latestTraceability" |
| | | format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" |
| | | type="date" |
| | | size="small" |
| | | placeholder="éæ©æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="䏿¬¡æ ¡åæ¥æ:" v-if="isUp"> |
| | | <el-date-picker |
| | | :disabled="isUp" |
| | | style="width: 100%" |
| | | v-model="formData.latestTraceability" |
| | | format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" |
| | | type="date" |
| | | size="small" |
| | | placeholder="éæ©æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="设å¤ç±»å:"> |
| | | <el-select |
| | | :disabled="isUp" |
| | | v-model="formData.largeCategory" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in equipmentList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="åä»·(ä¸å
):"> |
| | | <el-input |
| | | :disabled="isUp" |
| | | v-model="formData.unitPrice" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å½åç¶æ:" required> |
| | | <el-select |
| | | :disabled="isUp" |
| | | v-model="formData.deviceStatus" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in deviceStatusList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ ¡åå¨æï¼æï¼:" required> |
| | | <el-input |
| | | :disabled="isUp" |
| | | v-model="formData.calibrationDate" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å¾ç:"> |
| | | <div |
| | | style=" |
| | | border: 1px solid #dcdfe6; |
| | | border-radius: 4px; |
| | | height: 32px; |
| | | lineheight: 32px; |
| | | display: flex; |
| | | justify-content: space-around; |
| | | font-size: 13px; |
| | | " |
| | | > |
| | | <div v-show="formData.imageName" class="picName"> |
| | | {{ formData.imageName }} |
| | | </div> |
| | | <el-upload |
| | | :disabled="isUp" |
| | | :action="action" |
| | | :on-success="handleSuccessUpImg2" |
| | | :show-file-list="false" |
| | | accept="image/jpg,image/jpeg,image/png" |
| | | :headers="uploadHeader" |
| | | :on-change="beforeUpload" |
| | | :on-error="onError" |
| | | ref="upload" |
| | | > |
| | | <el-button type="text" style="height: 30px; padding-top: 8px" |
| | | >ä¸ä¼ </el-button |
| | | > |
| | | </el-upload> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row v-if="!isUp"> |
| | | <el-button @click="handleClose">å æ¶</el-button> |
| | | <el-button type="primary" @click="submitForm" :loading="upLoad" |
| | | >ç¡® å®</el-button |
| | | > |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- æ°å¢--> |
| | | <el-dialog |
| | | title="æ°å¢è®¾å¤" |
| | | top="5vh" |
| | | :visible.sync="dialogVisible2" |
| | | width="70%" |
| | | :before-close="handleClose2" |
| | | > |
| | | <el-row style="display: flex; justify-content: space-around"> |
| | | <!-- 左边å¸å± --> |
| | | <el-col :span="7"> |
| | | <el-col> |
| | | <!-- å¾ç --> |
| | | <el-image |
| | | class="img" |
| | | style="width: 100%; height: 320px; margin-bottom: 16px" |
| | | :src="javaApi + '/img/' + formData2.imageUpload" |
| | | > |
| | | <div |
| | | slot="error" |
| | | class="image-error" |
| | | style=" |
| | | width: calc(100% -2px); |
| | | height: 318px; |
| | | border-radius: 16px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | border: 1px solid #eeeeee; |
| | | " |
| | | > |
| | | <i |
| | | class="el-icon-picture-outline" |
| | | style="font-size: 60px; color: #666666" |
| | | ></i> |
| | | </div> |
| | | </el-image> |
| | | <!-- 表å --> |
| | | <el-form |
| | | :label-position="labelPosition" |
| | | :model="formData2" |
| | | label-width="120px" |
| | | > |
| | | <el-form-item label="仪å¨åç§°:" required> |
| | | <el-input |
| | | v-model="formData2.deviceName" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="仪å¨åç§°EN:" required> |
| | | <el-input |
| | | v-model="formData2.enDeviceName" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è§æ ¼åå·:" required> |
| | | <el-input |
| | | v-model="formData2.specificationModel" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç产åå®¶:"> |
| | | <el-input |
| | | v-model="formData2.manufacturer" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | </el-col> |
| | | <!-- ä¸é´å¸å± --> |
| | | <el-col :span="7"> |
| | | <el-form |
| | | :label-position="labelPosition" |
| | | :model="formData2" |
| | | label-width="110px" |
| | | > |
| | | <!-- <el-form-item label="ç产åå®¶EN:"> |
| | | <el-input v-model="formData2.factoryNo" size="small"></el-input> |
| | | </el-form-item> --> |
| | | <el-form-item label="æ ¡åæå¡æºæ:"> |
| | | <el-input |
| | | v-model="formData2.calibrationServices" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åºåç¼å·:"> |
| | | <el-input v-model="formData2.factoryNo" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="管çç¼å·:" required> |
| | | <el-input |
| | | v-model="formData2.managementNumber" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è´ç½®æ¥æ:"> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="formData2.acquisitionDate" |
| | | type="date" |
| | | format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | size="small" |
| | | placeholder="éæ©æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="å¯ç¨æ¥æ:" required> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="formData2.activationDate" |
| | | type="date" |
| | | format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | size="small" |
| | | placeholder="éæ©æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="管ç人:"> |
| | | <el-select |
| | | v-model="formData2.equipmentManager" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in responsiblePersonList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="åæ¾ç¹:"> |
| | | <el-input |
| | | v-model="formData2.storagePoint" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ææ¯ææ :"> |
| | | <el-input |
| | | v-model="formData2.technicalIndicators" |
| | | :rows="7" |
| | | type="textarea" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | <!-- å³è¾¹å¸å± --> |
| | | <el-col :span="7"> |
| | | <el-form |
| | | :label-position="labelPosition" |
| | | :model="formData2" |
| | | label-width="120px" |
| | | ref="ruleForm" |
| | | > |
| | | <!-- å®éªå®¤å表 --> |
| | | <el-form-item label="æå±é¨é¨:"> |
| | | <el-select |
| | | v-model="formData2.subordinateDepartmentsId" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in subordinateDepartmentsList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ£æµé¡¹ç®:"> |
| | | <el-cascader |
| | | v-model="formData2.insProductIds" |
| | | :options="options" |
| | | :show-all-levels="false" |
| | | :props="props" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 100%" |
| | | collapse-tags |
| | | separator="," |
| | | filterable |
| | | clearable |
| | | ></el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="设å¤ç±»å:"> |
| | | <el-select |
| | | v-model="formData2.largeCategory" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in equipmentList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="åä»·(ä¸å
):"> |
| | | <el-input v-model="formData2.unitPrice" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å½åç¶æ:" required> |
| | | <el-select |
| | | v-model="formData2.deviceStatus" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in deviceStatusList" |
| | | :key="item.id" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ ¡åå¨æï¼æï¼:" required> |
| | | <el-input |
| | | v-model="formData2.calibrationDate" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å¾ç:"> |
| | | <div |
| | | style=" |
| | | border: 1px solid #dcdfe6; |
| | | border-radius: 4px; |
| | | height: 32px; |
| | | line-height: 32px; |
| | | display: flex; |
| | | justify-content: space-around; |
| | | font-size: 13px; |
| | | " |
| | | > |
| | | <div v-show="formData2.imageName" class="picName"> |
| | | {{ formData2.imageName }} |
| | | </div> |
| | | <el-upload |
| | | :action="action" |
| | | :on-success="handleSuccessUpImg2" |
| | | :show-file-list="false" |
| | | accept="image/jpg,image/jpeg,image/png" |
| | | :headers="uploadHeader" |
| | | :on-change="beforeUpload" |
| | | :on-error="onError" |
| | | ref="upload" |
| | | > |
| | | <el-button type="text" style="height: 30px; padding-top: 8px" |
| | | >ä¸ä¼ </el-button |
| | | > |
| | | </el-upload> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleClose2">å æ¶</el-button> |
| | | <el-button type="primary" @click="submitForm2" :loading="upLoad2" |
| | | >ç¡® å®</el-button |
| | | > |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="æ°éé
ç½®" :visible.sync="dialogVisible3" width="400px"> |
| | | <div class="search_thing" style="margin-bottom: 14px"> |
| | | <div class="search_label"> |
| | | <span style="color: red; margin-right: 4px">*</span>IPï¼ |
| | | </div> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | v-model="configForm.ip" |
| | | ></el-input> |
| | | </div> |
| | | <div class="search_thing" style="margin-bottom: 14px"> |
| | | <div class="search_label"> |
| | | <span style="color: red; margin-right: 4px">*</span>ééå°åï¼ |
| | | </div> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | v-model="configForm.collectUrl" |
| | | ></el-input> |
| | | </div> |
| | | <div class="search_thing" style="margin-bottom: 14px"> |
| | | <div class="search_label"> |
| | | <span style="color: red; margin-right: 4px">*</span>å¨åå°åï¼ |
| | | </div> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | v-model="configForm.storageUrl" |
| | | ></el-input> |
| | | </div> |
| | | <div class="search_thing" style="margin-bottom: 14px"> |
| | | <div class="search_label"> |
| | | <span style="color: red; margin-right: 4px">*</span>åç
§ï¼ |
| | | </div> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | v-model="configForm.refer" |
| | | ></el-input> |
| | | </div> |
| | | <div class="search_thing" style="margin-bottom: 14px"> |
| | | <div class="search_label"> |
| | | <span style="color: red; margin-right: 4px">*</span>Xï¼ |
| | | </div> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | v-model="configForm.x" |
| | | ></el-input> |
| | | </div> |
| | | <div class="search_thing" style="margin-bottom: 14px"> |
| | | <div class="search_label"> |
| | | <span style="color: red; margin-right: 4px">*</span>Yï¼ |
| | | </div> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | v-model="configForm.y" |
| | | ></el-input> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">å
¬å¼ï¼</div> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | v-model="configForm.formula" |
| | | ></el-input> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="dialogVisible3 = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="submitForm3" :loading="upLoad3" |
| | | >ç¡® å®</el-button |
| | | > |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <dataAcquisitionConfig v-if="showData" :deviceId="deviceId" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import dataAcquisitionConfig from "./acquisitionConfig.vue"; |
| | | import { |
| | | obtainItemParameterList, |
| | | exportEquipmentDetails, |
| | | getInsProduction, |
| | | upDeviceParameter, |
| | | addDeviceParameter, |
| | | numberCollect, |
| | | getDeviceParameter, |
| | | delDeviceParameter, |
| | | } from "@/api/cnas/resourceDemand/device.js"; |
| | | import { selectUserCondition } from "@/api/system/user"; |
| | | export default { |
| | | props: { |
| | | clickNodeVal: { |
| | | type: Object, |
| | | default: () => { |
| | | return {}; |
| | | }, |
| | | }, |
| | | }, |
| | | components: { |
| | | limsTable, |
| | | dataAcquisitionConfig, |
| | | }, |
| | | data() { |
| | | return { |
| | | dateFormat: "yyyy-MM-dd", |
| | | deviceId: "", |
| | | fileTypeOptions: [ |
| | | { label: "csv", value: ".csv" }, |
| | | { label: "db", value: ".db" }, |
| | | { label: "mdb", value: ".mdb" }, |
| | | { label: "word", value: ".docx" }, |
| | | { label: "excel", value: ".xlsx" }, |
| | | { label: "txt", value: ".txt" }, |
| | | { label: "png", value: ".png" }, |
| | | ], |
| | | //æ¯å¦æ¯æ¡£æ¡ä¿®è®¢ true䏿¯ falseæ¯ |
| | | isUp: true, |
| | | formData: { |
| | | authorizedPerson: [], |
| | | }, |
| | | formData2: { |
| | | imageUpload: "", |
| | | imageName: "", |
| | | deviceStatus: "", |
| | | authorizedPerson: [], |
| | | }, |
| | | value: "", |
| | | props: { multiple: true, emitPath: false, value: "id", label: "name" }, |
| | | options: [], |
| | | labelPosition: "right", |
| | | dialogVisible: false, |
| | | dialogVisible2: false, |
| | | addPower: false, |
| | | showData: false, // æ°éé
ç½®é¡µé¢ |
| | | tableList: [], |
| | | addDia: true, |
| | | addPower: true, |
| | | //设å¤ç±»åå表 |
| | | equipmentList: [], |
| | | // è´è´£äººå表 |
| | | responsiblePersonList: [], |
| | | // ææäººå表 |
| | | authorizerList: [], |
| | | // å½åç¶æå表 |
| | | deviceStatusList: [], |
| | | // æå±é¨é¨ |
| | | subordinateDepartmentsList: [], |
| | | upLoad: false, |
| | | upLoad2: false, |
| | | dialogVisible3: false, |
| | | upLoad3: false, |
| | | configForm: {}, |
| | | laboratoryNameIsNull: false, |
| | | queryParams: {}, |
| | | tableData: [], |
| | | column: [ |
| | | { |
| | | label: "设å¤åç§°", |
| | | prop: "deviceName", |
| | | dataType: "link", |
| | | linkEvent: { method: "selectAllByOne", vueComponent: this }, |
| | | }, |
| | | { label: "设å¤åç§°EN", prop: "enDeviceName" }, |
| | | { |
| | | label: "è§æ ¼åå·", |
| | | prop: "specificationModel", |
| | | }, |
| | | { label: "ç产åå®¶", prop: "manufacturer" }, |
| | | { label: "åºåç¼å·", prop: "factoryNo" }, |
| | | { label: "管çç¼å·", prop: "managementNumber" }, |
| | | { label: "ææ¯ææ ", prop: "technicalIndicators" }, |
| | | { label: "è´ç½®æ¥æ", prop: "acquisitionDate" }, |
| | | { label: "å¯ç¨æ¥æ", prop: "activationDate" }, |
| | | { label: "管ç人", prop: "equipmentManagerUser" }, |
| | | { label: "åæ¾ç¹", prop: "storagePoint" }, |
| | | { label: "æå±é¨é¨", prop: "laboratoryName" }, |
| | | { label: "æ£éªé¡¹ç®", prop: "insProductItem" }, |
| | | { label: "æ ¡åæå¡æºæ", prop: "calibrationServices" }, |
| | | { label: "æè¿æ ¡åæ¥æ", prop: "lastCalibrationDateTwo" }, |
| | | { label: "æè¿æ ¸æ¥æ¥æ", prop: "lastCalibrationDate" }, |
| | | { label: "䏿¬¡æ ¡åæ¥æ", prop: "nextCalibrationDateTwo" }, |
| | | { label: "䏿¬¡æ ¸æ¥æ¥æ", prop: "nextCalibrationDate" }, |
| | | { |
| | | label: "设å¤åç±»", |
| | | prop: "largeCategory", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.equipmentList.find((m) => m.value == params).label; |
| | | }, |
| | | formatType: (params) => { |
| | | return this.equipmentList.find((m) => m.value == params).type; |
| | | }, |
| | | }, |
| | | { label: "åä»·", prop: "unitPrice" }, |
| | | { |
| | | label: "设å¤ç¶æ", |
| | | prop: "deviceStatus", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.deviceStatusList.find((m) => m.value == params).label; |
| | | }, |
| | | formatType: (params) => { |
| | | return this.deviceStatusList.find((m) => m.value == params).type; |
| | | }, |
| | | }, |
| | | { label: "æ ¡å卿(æ)", prop: "calibrationDate" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "æä½", |
| | | operation: [ |
| | | { |
| | | name: "æ¡£æ¡ä¿®è®¢", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.isUpdate(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "æ°éé
ç½®", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleConfig(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return row.insProductItem == null || row.insProductItem === ""; |
| | | }, |
| | | }, |
| | | { |
| | | name: "å é¤", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDelete(row); |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | }; |
| | | }, |
| | | computed: { |
| | | action() { |
| | | return this.javaApi + "/deviceScope/uploadFile"; |
| | | }, |
| | | }, |
| | | mounted() { |
| | | this.selectEnumByCategory(); |
| | | this.selectDevicePrincipal(); |
| | | this.obtainItemParameterList(); |
| | | this.getInsProductIds(); |
| | | // åå§å |
| | | this.clickSidebar(this.clickNodeVal); |
| | | }, |
| | | methods: { |
| | | //åç±» |
| | | handleNotification(cate) { |
| | | this.queryParams.largeCategory = cate; |
| | | }, |
| | | obtainItemParameterList() { |
| | | obtainItemParameterList().then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | | label: a.laboratoryName, |
| | | value: a.id, |
| | | }); |
| | | }); |
| | | this.subordinateDepartmentsList = data; |
| | | }); |
| | | }, |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { |
| | | laboratoryNameIsNull: this.laboratoryNameIsNull, |
| | | ...this.queryParams, |
| | | ...this.page, |
| | | }; |
| | | delete param.total; |
| | | getDeviceParameter({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | | }, |
| | | refresh() { |
| | | this.queryParams = {}; |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | refreshTable() { |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | // å¯¼åº |
| | | handleDownOne() { |
| | | this.outLoading = true; |
| | | exportEquipmentDetails().then((res) => { |
| | | this.outLoading = false; |
| | | const blob = new Blob([res], { type: "application/octet-stream" }); |
| | | this.$download.saveAs(blob, "设å¤ä»ªå¨ä¸è§è¡¨.doc"); |
| | | }); |
| | | }, |
| | | // è·ååå
¸ |
| | | selectEnumByCategory() { |
| | | // 设å¤ç¶æ |
| | | this.getDicts("device_status").then((response) => { |
| | | this.deviceStatusList = this.dictToValue(response.data); |
| | | }); |
| | | // 设å¤åç±» |
| | | this.getDicts("device_type").then((response) => { |
| | | this.equipmentList = this.dictToValue(response.data); |
| | | }); |
| | | }, |
| | | // è·åè´è´£äººå表 |
| | | selectDevicePrincipal() { |
| | | selectUserCondition().then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id, |
| | | }); |
| | | }); |
| | | this.responsiblePersonList = data; |
| | | this.authorizerList = data; |
| | | }); |
| | | }, |
| | | getInsProductIds() { |
| | | getInsProduction().then((res) => { |
| | | this.options = res.data.map((m, i) => { |
| | | m.id = m.name; |
| | | let children = m.children.map((n) => { |
| | | n.label = n.name; |
| | | n.value = n.id; |
| | | return n; |
| | | }); |
| | | return m; |
| | | }); |
| | | this.options.forEach((item) => { |
| | | if (item.children.length == 0) { |
| | | item.children = null; |
| | | } else { |
| | | item.children.forEach((m) => { |
| | | if (m.children.length == 0) { |
| | | m.children = null; |
| | | } else { |
| | | m.children.forEach((n) => { |
| | | if (n.children && n.children.length == 0) { |
| | | n.children = null; |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }); |
| | | }, |
| | | handleClose() { |
| | | this.formData = { |
| | | authorizedPerson: [], |
| | | }; |
| | | this.formData2 = { |
| | | imageUpload: "", |
| | | imageName: "", |
| | | authorizedPerson: [], |
| | | }; |
| | | this.dialogVisible = false; |
| | | this.upLoad = false; |
| | | }, |
| | | handleClose2() { |
| | | this.formData = { |
| | | authorizedPerson: [], |
| | | }; |
| | | this.formData2 = { |
| | | imageUpload: "", |
| | | imageName: "", |
| | | authorizedPerson: [], |
| | | }; |
| | | this.dialogVisible2 = false; |
| | | this.upLoad = false; |
| | | }, |
| | | selectAllByOne(row) { |
| | | this.isUp = true; |
| | | //æå¼å¼¹æ¡ |
| | | this.dialogVisible = true; |
| | | //row = ç¹å»å¯¹åºè¡å¼ |
| | | //å¤å¶ç»formData |
| | | this.formData = this.HaveJson(row); |
| | | console.log(row.insProductIds + "valll"); |
| | | this.formData.insProductIds = row.insProductIds |
| | | ? row.insProductIds.split(",") |
| | | : []; |
| | | }, |
| | | isUpdate(row) { |
| | | //ä¿®æ¹ isUp 为档æ¡ä¿®æ¹ |
| | | this.isUp = false; |
| | | //æå¼å¼¹æ¡ |
| | | this.dialogVisible = true; |
| | | //row = ç¹å»å¯¹åºè¡å¼ä¸è¡å¼ |
| | | //å¤å¶ç»formData |
| | | this.formData = this.HaveJson(row); |
| | | if (typeof row.insProductIds === "number") { |
| | | row.insProductIds = row.insProductIds + ""; |
| | | } |
| | | this.formData.deviceStatus = this.formData.deviceStatus + ""; |
| | | this.formData.insProductIds = row.insProductIds |
| | | ? row.insProductIds.split(",") |
| | | : []; |
| | | // å°æ¶é´æ ¼å¼ä¸ºyyyy-MM-dd è¿è¡è½¬æ¢ |
| | | const dateRegex = /^\d{4}-\d{2}-\d{2}$/; |
| | | Object.keys(this.formData).forEach((key) => { |
| | | if (dateRegex.test(this.formData[key])) { |
| | | this.formData[key] = `${this.formData[key]} 00:00:00`; |
| | | } |
| | | }); |
| | | }, |
| | | beforeUpload(file) { |
| | | if (file.size > 1024 * 1024 * 10) { |
| | | this.$message.error("ä¸ä¼ æä»¶ä¸è¶
è¿10M"); |
| | | this.$refs.upload.clearFiles(); |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }, |
| | | onError(err, file, fileList) { |
| | | this.$message.error("ä¸ä¼ 失败"); |
| | | this.$refs.upload.clearFiles(); |
| | | }, |
| | | // ä¸ä¼ å¾çæå |
| | | handleSuccessUpImg(response) { |
| | | if (response.code == 200) { |
| | | this.formData.imageUpload = response.data.url; |
| | | this.formData.imageName = response.data.name; |
| | | } |
| | | }, |
| | | handleSuccessUpImg2(response) { |
| | | if (response.code == 200) { |
| | | this.$nextTick(() => { |
| | | this.formData.imageUpload = response.data.url; |
| | | this.formData.imageName = response.data.name; |
| | | this.formData2.imageUpload = response.data.url; |
| | | this.formData2.imageName = response.data.name; |
| | | }); |
| | | } |
| | | }, |
| | | submitForm() { |
| | | if (!this.formData.deviceName) { |
| | | this.$message.error("æªè¾å
¥ä»ªå¨åç§°"); |
| | | return; |
| | | } |
| | | if (!this.formData.enDeviceName) { |
| | | this.$message.error("æªè¾å
¥ä»ªå¨åç§°EN"); |
| | | return; |
| | | } |
| | | if (!this.formData.specificationModel) { |
| | | this.$message.error("æªè¾å
¥è§æ ¼åå·"); |
| | | return; |
| | | } |
| | | if (!this.formData.managementNumber) { |
| | | this.$message.error("æªè¾å
¥ç®¡çç¼å·"); |
| | | return; |
| | | } |
| | | if (!this.formData.activationDate) { |
| | | this.$message.error("æªè¾å
¥æ ¡åæææ"); |
| | | return; |
| | | } |
| | | if (!this.formData.subordinateDepartmentsId) { |
| | | this.$message.error("æªéæ©æå±é¨é¨"); |
| | | return; |
| | | } |
| | | if ( |
| | | this.formData.deviceStatus === "" || |
| | | this.formData.deviceStatus === null |
| | | ) { |
| | | this.$message.error("æªéæ©å½åç¶æ"); |
| | | return; |
| | | } |
| | | if (!this.formData.calibrationDate) { |
| | | this.$message.error("æªè¾å
¥æ ¡åå¨æï¼æï¼"); |
| | | return; |
| | | } |
| | | delete this.formData.createTime; |
| | | delete this.formData.updateTime; |
| | | delete this.formData.createUser; |
| | | delete this.formData.updateUser; |
| | | const formData = this.HaveJson(this.formData); |
| | | formData.insProductIds = formData.insProductIds |
| | | ? formData.insProductIds.join() |
| | | : ""; |
| | | if (formData.authorizedPerson.length === 0) { |
| | | formData.authorizedPerson = ""; |
| | | } else { |
| | | formData.authorizedPerson = JSON.stringify(formData.authorizedPerson); |
| | | } |
| | | this.upLoad = true; |
| | | upDeviceParameter(formData) |
| | | .then((res) => { |
| | | this.$message.success("ä¿®æ¹æå"); |
| | | this.upLoad = false; |
| | | this.refreshTable("page"); |
| | | this.dialogVisible = false; |
| | | }) |
| | | .catch((e) => { |
| | | this.$message.error("ä¿®æ¹å¤±è´¥"); |
| | | this.dialogVisible = false; |
| | | this.upLoad = false; |
| | | }); |
| | | }, |
| | | // æäº¤æ¡£æ¡ä¿®è®¢--æ°å¢ |
| | | submitForm2() { |
| | | if (!this.formData2.deviceName) { |
| | | this.$message.error("æªè¾å
¥ä»ªå¨åç§°"); |
| | | return; |
| | | } |
| | | if (!this.formData2.enDeviceName) { |
| | | this.$message.error("æªè¾å
¥ä»ªå¨åç§°EN"); |
| | | return; |
| | | } |
| | | if (!this.formData2.specificationModel) { |
| | | this.$message.error("æªè¾å
¥è§æ ¼åå·"); |
| | | return; |
| | | } |
| | | if (!this.formData2.managementNumber) { |
| | | this.$message.error("æªè¾å
¥ç®¡çç¼å·"); |
| | | return; |
| | | } |
| | | if (!this.formData2.activationDate) { |
| | | this.$message.error("æªè¾å
¥æ ¡åæææ"); |
| | | return; |
| | | } |
| | | if (!this.formData2.deviceStatus) { |
| | | this.$message.error("æªéæ©å½åç¶æ"); |
| | | return; |
| | | } |
| | | if (!this.formData2.calibrationDate) { |
| | | this.$message.error("è¾å
¥æ ¡åå¨æï¼æï¼"); |
| | | return; |
| | | } |
| | | const formData = this.HaveJson(this.formData2); |
| | | formData.insProductIds = formData.insProductIds |
| | | ? formData.insProductIds.join() |
| | | : ""; |
| | | if (formData.authorizedPerson.length === 0) { |
| | | formData.authorizedPerson = ""; |
| | | } else { |
| | | formData.authorizedPerson = JSON.stringify(formData.authorizedPerson); |
| | | } |
| | | this.upLoad2 = true; |
| | | addDeviceParameter(formData) |
| | | .then((res) => { |
| | | this.$message.success("æäº¤æå"); |
| | | this.upLoad2 = false; |
| | | this.refreshTable("page"); |
| | | this.dialogVisible2 = false; |
| | | this.formData2 = { |
| | | imageUpload: "", |
| | | imageName: "", |
| | | authorizedPerson: [], |
| | | }; |
| | | }) |
| | | .catch((e) => { |
| | | this.$message.error("æäº¤å¤±è´¥"); |
| | | this.dialogVisible2 = false; |
| | | this.upLoad2 = false; |
| | | }); |
| | | }, |
| | | handleConfig(row) { |
| | | let list = []; |
| | | if (row.insProductItem) { |
| | | list = row.insProductItem.split(";"); |
| | | } |
| | | let list2 = []; |
| | | list.map((item) => { |
| | | const obj = Object.assign({ |
| | | deviceId: row.id, |
| | | insProductItem: item, |
| | | }); |
| | | list2.push(obj); |
| | | }); |
| | | this.tableList = list2; |
| | | this.deviceId = row.id; |
| | | this.$nextTick(() => { |
| | | this.showData = true; |
| | | }); |
| | | }, |
| | | closeDataVue() { |
| | | this.clickSidebar(this.clickNodeVal); |
| | | this.showData = false; |
| | | }, |
| | | submitForm3() { |
| | | if (!this.configForm.ip) { |
| | | this.$message.error("请填åIP"); |
| | | return; |
| | | } |
| | | if (!this.configForm.collectUrl) { |
| | | this.$message.error("请填åééå°å"); |
| | | return; |
| | | } |
| | | if (!this.configForm.storageUrl) { |
| | | this.$message.error("请填åå¨åå°å"); |
| | | return; |
| | | } |
| | | if (!this.configForm.refer) { |
| | | this.$message.error("请填ååç
§"); |
| | | return; |
| | | } |
| | | if (!this.configForm.x) { |
| | | this.$message.error("请填åX"); |
| | | return; |
| | | } |
| | | if (!this.configForm.y) { |
| | | this.$message.error("请填åY"); |
| | | return; |
| | | } |
| | | |
| | | this.upLoad3 = true; |
| | | numberCollect(this.configForm) |
| | | .then((res) => { |
| | | this.upLoad3 = false; |
| | | this.$message.success("æä½æå"); |
| | | this.refreshTable("page"); |
| | | this.dialogVisible3 = false; |
| | | }) |
| | | .catch((e) => { |
| | | this.$message.error("æä½å¤±è´¥"); |
| | | this.dialogVisible3 = false; |
| | | this.upLoad3 = false; |
| | | }); |
| | | }, |
| | | // ç¹å»ä¾§è¾¹æ å·æ° |
| | | clickSidebar(clickNodeVal) { |
| | | this.laboratoryNameIsNull = false; |
| | | // æ¯å¦åå¨valueï¼åå¨value代表为ä¸çº§ |
| | | if (!clickNodeVal.value) { |
| | | this.list = []; |
| | | this.queryParams.laboratoryName = null; |
| | | this.queryParams.storagePoint = null; |
| | | // çäº1代表为æ çä¸çº§ï¼label为é¨é¨ |
| | | if (clickNodeVal.label == "å
¶ä»") { |
| | | this.laboratoryNameIsNull = true; |
| | | this.refreshTable("page"); |
| | | return; |
| | | } |
| | | if (clickNodeVal.level == 1) { |
| | | this.queryParams.laboratoryName = clickNodeVal.label; |
| | | // çäºäºçº§ãlabel为åå¨å°ç¹ |
| | | } else if (clickNodeVal.level == 2) { |
| | | // å
¶ä»è¡¨ç¤ºæ²¡æé
ç½®å®éªå®¤ï¼åªé
ç½®äºå°ç¹ |
| | | if (clickNodeVal.parent.label == "å
¶ä»") { |
| | | this.laboratoryNameIsNull = true; |
| | | } else { |
| | | this.queryParams.laboratoryName = clickNodeVal.parent.label; |
| | | } |
| | | this.queryParams.storagePoint = clickNodeVal.label; |
| | | } |
| | | this.refreshTable("page"); |
| | | } |
| | | }, |
| | | handleDelete(row) { |
| | | this.$confirm("æ¯å¦å é¤è¯¥æ¡æ°æ®?", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | delDeviceParameter({ id: row.id }).then((res) => { |
| | | this.$message.success("å 餿å"); |
| | | this.refresh(); |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | }, |
| | | watch: { |
| | | // çå¬ç¹å»el-treeçæ°æ®ï¼è¿è¡æ°æ®å·æ° |
| | | clickNodeVal(newVal) { |
| | | this.clickSidebar(newVal); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .role_manage { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .title { |
| | | line-height: 15px; |
| | | } |
| | | |
| | | .search { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | .search_thing { |
| | | width: 14em; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 80px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 80px); |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 12px; |
| | | background-color: #fff; |
| | | height: calc(100vh - 17em); |
| | | } |
| | | |
| | | .el-form-item { |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | | .picName { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | white-space: nowrap; |
| | | word-break: break-all; |
| | | width: 120px; |
| | | } |
| | | </style> |