| | |
| | | </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"> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | > |
| | | <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 |
| | |
| | | label="存放地" |
| | | min-width="200" |
| | | /> |
| | | <el-table-column |
| | | prop="storage_place" |
| | | label="存放地" |
| | | min-width="200" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="操作" |
| | | min-width="120" |
| | |
| | | <!-- 弹出表单页 --> |
| | | <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> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 抽屉 --> |
| | | <!-- 仪器详情--> |
| | | <el-drawer |
| | | title="新增仪器设备" |
| | | :before-close="handleClose" |
| | | :visible.sync="drawerFormVisible" |
| | | direction="rtl" |
| | | custom-class="demo-drawer" |
| | | ref="drawer" |
| | | title="仪器设备详情" |
| | | :visible.sync="detailDrawer" |
| | | size="80%" |
| | | class="detailDrawer" |
| | | @close="closeDetailDrawer" |
| | | > |
| | | <div> |
| | | <div class="detail-info"> |
| | | <div class="tips-main"> |
| | | <div class="tips"> |
| | | <span /> |
| | | <div>基本信息</div> |
| | | </div> |
| | | <div class="tips-btn"> |
| | | <el-button type="primary" @click="addDrawerVisible = true">编辑</el-button> |
| | | </div> |
| | | </div> |
| | | <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> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />建档日期:{{ equipmentDetail.acceptanceDate }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />设备编号:{{ equipmentDetail.equipmentCode }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />型号规格:{{ equipmentDetail.specificationsModels }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />测量范围:{{ equipmentDetail.measuringRange }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />不确定度/误差:{{ equipmentDetail.errorRate }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />生产厂家:{{ equipmentDetail.manufacturer }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />存放地点:{{ equipmentDetail.storagePlace }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />到货日期:{{ equipmentDetail.arrivalDate }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />验收日期:{{ equipmentDetail.acceptanceDate }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />保管人:{{ equipmentDetail.userId }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <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> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />计量周期:{{ equipmentDetail.termValidity }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />描述:{{ equipmentDetail.descriptiveness }}</span> |
| | | </div> |
| | | </div> |
| | | </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 @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> |
| | | </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-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-cascader v-model="equipmentform.classifyId" :options="classTree" :show-all-levels="false" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="11"> |
| | |
| | | <el-row :gutter="50"> |
| | | <el-col :span="11"> |
| | | <el-form-item label="仪器设备名称:" label-width="80"> |
| | | <el-input v-model="equipmentform.name" autocomplete="off" /> |
| | | <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.classifyId" |
| | | v-model="equipmentform.conditions" |
| | | clearable |
| | | filterable |
| | | :allow-create="true" |
| | | placeholder="请选择仪器设备状态" |
| | | @blur="productSelect" |
| | | style="width:100%" |
| | | > |
| | | <el-option |
| | | v-for="item in fatherOpetions" |
| | | :key="item.id" |
| | | v-for="item in conditionsOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | <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-input v-model="equipmentform.specificationsModels" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="11"> |
| | |
| | | v-model="equipmentform.arrivalDate" |
| | | type="date" |
| | | placeholder="请选择到货日期" |
| | | style="width:100%"> |
| | | </el-date-picker> |
| | | style="width:100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | v-model="equipmentform.acceptanceDate" |
| | | type="date" |
| | | placeholder="请选择验收日期" |
| | | style="width:100%"> |
| | | </el-date-picker> |
| | | style="width:100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item label="保管人:" label-width="80"> |
| | | <el-select |
| | | v-model="equipmentform.keeper" |
| | | v-model="equipmentform.userId" |
| | | clearable |
| | | filterable |
| | | :allow-create="true" |
| | | placeholder="请选择保管人" |
| | | @blur="productSelect" |
| | | style="width:100%" |
| | | > |
| | | <el-option |
| | | v-for="item in fatherOpetions" |
| | | v-for="item in userOpetions" |
| | | :key="item.id" |
| | | :label="item.label" |
| | | :value="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | <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-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="2">不需要</el-radio> |
| | | <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-col :span="11"> |
| | | <el-form-item label="描述:" label-width="80"> |
| | | <el-input |
| | | v-model="equipmentform.descriptiveness" |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请输入内容" |
| | | v-model=equipmentform.descriptiveness |
| | | style="width:217%"> |
| | | </el-input> |
| | | style="width:217%" |
| | | /> |
| | | </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> |
| | | <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-drawer |
| | | title="仪器设备详情" |
| | | :visible.sync="detailDrawer" |
| | | size="80%" |
| | | class="detailDrawer" |
| | | <!-- 新增计量信息弹窗 --> |
| | | <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%" |
| | | > |
| | | <div> |
| | | <div class="detail-info"> |
| | | <div class="tips-main"> |
| | | <div class="tips"> |
| | | <span /> |
| | | <div>基本信息</div> |
| | | </div> |
| | | <div class="tips-btn"> |
| | | <span><i class="el-icon-edit" />操作:</span> |
| | | <el-button type="text" @click="dialogFormVisible = 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" />创建人:</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> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />设备编号:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />型号规格:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />测量范围:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />不确定度/误差:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />生产厂家:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />存放地点:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />到货日期:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />验收日期:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />保管人:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />是否支持数采:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />仪器设备计量:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />计量周期:</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />描述:</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> |
| | | <el-drawer |
| | | title="编辑" |
| | | :append-to-body="true" |
| | | :visible.sync="editDrawer" |
| | | <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%" |
| | | > |
| | | <p>_(:зゝ∠)_</p> |
| | | </el-drawer> |
| | | </div> |
| | | </el-drawer> |
| | | <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', |
| | |
| | | keyword: '' |
| | | }, |
| | | // 表格搜索单选值 |
| | | radioValue: '全部', |
| | | radioValue: '0', |
| | | // 表格搜索已过期 |
| | | // 是否过期 |
| | | isOut: false, |
| | | FormVisible: false, |
| | | drawerFormVisible: false, |
| | | loading: false, |
| | | // 控制添加分类模态框显示 |
| | | addClassVisible: false, |
| | | // 控制新增计量模态框显示 |
| | | measureFormVisible: false, |
| | | // 控制添加修改仪器抽屉的显示 |
| | | addDrawerVisible: false, |
| | | // 添加修改仪器参数对象 |
| | | equipmentform: { |
| | | acceptanceDate: '', // 验收日期 |
| | | arrivalDate: '', // 到货日期 |
| | |
| | | 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: { |
| | |
| | | }, |
| | | 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) |
| | | // 只有数据中携带id才能发送查询请求 |
| | |
| | | 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() { |
| | | // 当前页更改 |
| | | } |
| | | }, |
| | | handleClose(done) { |
| | | if (this.loading) { |
| | | // 显示设备码点 |
| | | 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 |
| | | } |
| | | this.$confirm('确定要提交表单吗?') |
| | | .then(_ => { |
| | | this.loading = true |
| | | this.timer = setTimeout(() => { |
| | | done() |
| | | // 动画关闭需要一定的时间 |
| | | setTimeout(() => { |
| | | this.loading = false |
| | | }, 400) |
| | | }, 2000) |
| | | }) |
| | | .catch(_ => {}) |
| | | 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 |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <style lang="scss" scoped> |
| | | .demo-drawer__content{ |
| | | margin-left: 50px; |
| | | // margin-right: 5px; |
| | | } |
| | | .demo-drawer__footer { |
| | | display: flex; |
| | |
| | | background-color: #fff; |
| | | color: #333; |
| | | width: 45%; |
| | | margin-bottom: 24px; |
| | | } |
| | | |
| | | .demo-drawer__footer .el-button--primary { |
| | |
| | | color: #fff; |
| | | width: 45%; |
| | | margin-right: 60px; |
| | | margin-bottom: 24px; |
| | | } |
| | | .ledger-main{ |
| | | width: 100%; |
| | |
| | | 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; |
| | |
| | | } |
| | | .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{ |
| | |
| | | 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 { |
| | |
| | | } |
| | | } |
| | | |
| | | } |
| | | .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; |
| | | 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%; |
| | |
| | | height: 24px; |
| | | align-items: center; |
| | | font-size: 16px; |
| | | // margin-bottom: 12px; |
| | | >span{ |
| | | display: inline-block; |
| | | margin-right: 10px; |
| | |
| | | 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; |
| | |
| | | >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> |