| | |
| | | <div class="search"> |
| | | <el-button size="small" type="primary" @click="refreshTableList">刷 新</el-button> |
| | | <el-button size="small" type="primary" @click="openDia('add')">新 增</el-button> |
| | | <el-button :loading="outLoading" size="small" type="primary" @click="openHandleOut">导 出</el-button> |
| | | </div> |
| | | <div> |
| | | <lims-table :tableData="tableData" :column="column" |
| | |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="usageTableDia" |
| | | title="设备保养计划表" width="80%" @close="closeDialog"> |
| | | <div style="display: flex;align-items: center;"> |
| | | <el-button size="small" type="primary" @click="addTableRow">添加</el-button> |
| | | <el-button size="small" type="primary" @click="addTableRow" v-if="operationType !== 'check'">添加</el-button> |
| | | <span style="width: 60px;margin-left: 10px">年份:</span> |
| | | <el-date-picker v-model="form.impowerYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" |
| | | placeholder="选择年"> |
| | | placeholder="选择年" :disabled="operationType === 'check'"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div style="margin: 10px 0"> |
| | | <el-table ref="usageTableData" :data="usageTableData" id="templateParamTable" row-key="deviceId" |
| | | <el-table ref="deviceImpowerDetails" :data="deviceImpowerDetails" id="templateParamTable" row-key="deviceId" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border |
| | | height="560px" style="width: 100% ;"> |
| | | <el-table-column align="center" header-align="center" label="序号" type="index" width="60"></el-table-column> |
| | |
| | | size="small" :disabled="operationType === 'check'"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="设备编号" min-width="140" prop="deviceNumber"> |
| | | <el-table-column label="设备编号" min-width="140" prop="managementNumber"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.deviceNumber" clearable |
| | | <el-input v-model="scope.row.managementNumber" clearable |
| | | size="small" :disabled="operationType === 'check'"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="规格型号" min-width="120" prop="model"> |
| | | <el-table-column label="规格型号" min-width="120" prop="specificationModel"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.model" clearable |
| | | <el-input v-model="scope.row.specificationModel" clearable |
| | | size="small" :disabled="operationType === 'check'"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | :disabled="operationType === 'check'"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="被授权人" min-width="120" prop="delegatee"> |
| | | <el-table-column label="被授权人" min-width="160" prop="delegatee"> |
| | | <template slot-scope="scope"> |
| | | <el-select v-model="scope.row.delegatedUserArr" |
| | | clearable filterable multiple |
| | |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" label="操作" width="80" align="center"> |
| | | <el-table-column label="操作" width="80" align="center" v-if="operationType !== 'check'"> |
| | | <template slot-scope="scope"> |
| | | <el-button style="color: #f56c6c" type="text" @click="deleteRow(scope.$index)">删除</el-button> |
| | | </template> |
| | |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column label="设备名称" prop="label" width="190"></el-table-column> |
| | | <el-table-column prop="value" label="设备编号" width="130"></el-table-column> |
| | | <el-table-column prop="managementNumber" label="归属实验室"></el-table-column> |
| | | <el-table-column prop="storagePoint" label="归属实验室"></el-table-column> |
| | | </el-table> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="addEquipDia = false">取 消</el-button> |
| | | <el-button :loading="submitFormLoading" type="primary" @click="changeMachineName">确认</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="notificationDia" title="提交审核" width="30%" @close="closeNotificationDia"> |
| | | <span style="margin-top: 10px;display: inline-block"> |
| | | 请选择审核人: |
| | | <el-select v-model="auditId" clearable filterable size="small" style="width: 90%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="notificationLoading" @click="closeNotificationDia">取 消</el-button> |
| | | <el-button :loading="notificationLoading" type="primary" @click="notification">提 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | |
| | | import { |
| | | addImpower, |
| | | deleteImpower, deviceScopeSearch, getImpowerDetail, reviewImpowerStatus, |
| | | selectDeviceImpowerByPage, updateImpower |
| | | selectDeviceImpowerByPage, submitReviewImpowerStatus, updateImpower, exportDeviceImpower |
| | | } from "@/api/cnas/resourceDemand/device"; |
| | | import {exportQualityMonitorDetail} from "@/api/cnas/process/ensureResults/qualityMonitor"; |
| | | import {selectUserCondition} from "@/api/system/user"; |
| | | import {mapGetters} from "vuex"; |
| | | |
| | | export default { |
| | | name: '', |
| | |
| | | { label: '授权人', prop: 'audit' }, |
| | | { label: '授权日期', prop: 'auditDate' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: '授权状态', |
| | | prop: 'status', |
| | | formatData: (params) => { |
| | | if (params === 1) { |
| | | return '已授权' |
| | | } else if (params == 0) { |
| | | return '未授权' |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | | return 'success' |
| | | } else if (params === 0) { |
| | | return 'danger' |
| | | } else { |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | label: '操作', |
| | | operation: [ |
| | |
| | | clickFun: (row) => { |
| | | this.openDia('edit', row); |
| | | }, |
| | | disabled: (row) => { |
| | | return row.status === 1; |
| | | }, |
| | | }, |
| | | { |
| | | name: '授权', |
| | | name: '审核通知', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.tellApprove(row.impowerId); |
| | | }, |
| | | disabled: (row) => { |
| | | return row.status === 1; |
| | | }, |
| | | }, |
| | | { |
| | | name: '审核', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openDia('check', row); |
| | | }, |
| | | disabled: (row) => { |
| | | return row.status === 1 || this.userId !== row.auditId; |
| | | }, |
| | | }, |
| | | { |
| | | name: '导出', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openHandleOut(row); |
| | | } |
| | | }, |
| | | { |
| | | name: '删除', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDeleteClick(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return row.status === 1; |
| | | }, |
| | | }, |
| | | ] |
| | |
| | | responsibleOptions: [], |
| | | operationType: '', |
| | | usageTableDia: false, |
| | | usageTableData: [], |
| | | deviceImpowerDetails: [], |
| | | submitFormLoading: false, |
| | | addEquipDia: false, |
| | | equipOptions: [], |
| | |
| | | impowerYear: '' |
| | | }, |
| | | delegatedUser: [], |
| | | impowerId: '' |
| | | impowerId: '', |
| | | notificationDia: false, |
| | | auditId: '', |
| | | notificationLoading: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // 打开提交批准弹框 |
| | | tellApprove(impowerId) { |
| | | this.getUserList() |
| | | this.notificationDia = true |
| | | this.impowerId = impowerId |
| | | }, |
| | | // 提交批准通知 |
| | | notification() { |
| | | if (!this.auditId) { |
| | | this.$message.warning('请选择审核人') |
| | | return |
| | | } |
| | | this.notificationLoading = true |
| | | submitReviewImpowerStatus({ |
| | | auditId: this.auditId, |
| | | impowerId: this.impowerId, |
| | | }).then(res => { |
| | | this.notificationLoading = false |
| | | if (res.code == 200) { |
| | | this.closeNotificationDia() |
| | | this.refreshTableList() |
| | | } |
| | | }).catch(err => { |
| | | this.notificationLoading = false |
| | | }) |
| | | }, |
| | | // 关闭提交批准弹框 |
| | | closeNotificationDia() { |
| | | this.notificationDia = false |
| | | this.auditId = '' |
| | | }, |
| | | // 打开操作弹框 |
| | | openDia (type, row) { |
| | | this.operationType = type |
| | | this.usageTableDia = true |
| | | this.form = { |
| | | impowerYear: '', |
| | | usageTableData: [], |
| | | deviceImpowerDetails: [], |
| | | } |
| | | this.usageTableData = [] |
| | | this.deviceImpowerDetails = [] |
| | | if (row) { |
| | | this.impowerId = row.impowerId |
| | | getImpowerDetail({ impowerId: this.impowerId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.form = res.data |
| | | this.usageTableData = this.form.usageTableData |
| | | this.deviceImpowerDetails = this.form.deviceImpowerDetails |
| | | this.deviceImpowerDetails.forEach(item => { |
| | | this.$set(item, 'delegatedUserArr', item.delegatedUser.split(',')) |
| | | }) |
| | | } |
| | | }).catch(error => { |
| | | console.error(error) |
| | |
| | | }, |
| | | // 删除表格行 |
| | | deleteRow(index) { |
| | | this.usageTableData.splice(index, 1) |
| | | this.deviceImpowerDetails.splice(index, 1) |
| | | }, |
| | | // 提交新增和修改 |
| | | submitForm() { |
| | | this.form.usageTableData = this.HaveJson(this.usageTableData) |
| | | this.form.usageTableData.forEach((item) => { |
| | | this.form.deviceImpowerDetails = this.HaveJson(this.deviceImpowerDetails) |
| | | this.form.deviceImpowerDetails.forEach((item) => { |
| | | item.delegatedUser = item.delegatedUserArr.join(',') |
| | | }) |
| | | this.submitFormLoading = true |
| | |
| | | changeMachineName() { |
| | | this.deviceMaintenancePlanDetails = [] |
| | | this.selectionRows.map(val => { |
| | | this.usageTableData.push({ deviceId: val.id, deviceName: val.label, deviceNumber: val.value, model: val.specificationModel, delegatedUserArr: this.delegatedUser }) |
| | | this.deviceImpowerDetails.push({ deviceId: val.id, deviceName: val.label, managementNumber: val.value, specificationModel: val.specificationModel, delegatedUserArr: this.delegatedUser }) |
| | | }) |
| | | this.addEquipDia = false |
| | | }, |
| | |
| | | this.equipOptions = res.data.map(m => { |
| | | m.value = m.managementNumber |
| | | m.label = m.deviceName |
| | | m.storagePoint = m.storagePoint |
| | | return m |
| | | }) |
| | | } |
| | |
| | | }) |
| | | }, |
| | | openHandleOut (row) { |
| | | exportQualityMonitorDetail({ impowerId: row.impowerId }).then(res => { |
| | | exportDeviceImpower({ impowerId: row.impowerId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.monitorName + '.docx') |
| | | this.$download.saveAs(blob, '设备使用授权表' + '.docx') |
| | | }) |
| | | }, |
| | | handleDeleteClick(row) { |
| | |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteImpower({ id: row.impowerId }).then(res => { |
| | | deleteImpower({ impowerId: row.impowerId }).then(res => { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '删除成功!' |
| | |
| | | } |
| | | }, |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["userId"]), |
| | | }, |
| | | }; |
| | | </script> |
| | | |