gaoluyang
2025-03-11 ed537a5c6553973997f5c4849c262cef30635b38
设备搬迁-设备总览、设备工具明细、资源预定、作业指导书联调
已修改5个文件
139 ■■■■■ 文件已修改
src/api/cnas/resourceDemand/device.js 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/device-overview.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/management.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/operationInstruction.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/resource-reservation.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/cnas/resourceDemand/device.js
@@ -1198,11 +1198,18 @@
    data: data,
  });
}
//作业指导书查询
export function pageByPageQueryOfHomeworkInstructions(query) {
  return request({
    url: "/instruction/pageByPageQueryOfHomeworkInstructions",
    method: "get",
    params: query,
  });
}
//作业指导书 审批
export function approvalOfHomeworkInstructionManual(data) {
  return request({
    url: "/deviceInstruction/approvalOfHomeworkInstructionManual",
    url: "/instruction/approvalOfHomeworkInstructionManual",
    method: "post",
    data: data,
  });
@@ -1211,7 +1218,7 @@
//作业指导书 删除
export function homeworkGuidebook(query) {
  return request({
    url: "/deviceInstruction/homeworkGuidebook",
    url: "/instruction/homeworkGuidebook",
    method: "delete",
    params: query,
  });
@@ -1220,7 +1227,7 @@
//作业指导书 编辑查询
export function homeworkGuidebookEditor(query) {
  return request({
    url: "/deviceInstruction/homeworkGuidebookEditor",
    url: "/instruction/homeworkGuidebookEditor",
    method: "get",
    params: query,
  });
@@ -1229,7 +1236,7 @@
//作业指导书新增
export function newHomeworkGuidebookAdded(data) {
  return request({
    url: "/deviceInstruction/newHomeworkGuidebookAdded",
    url: "/instruction/newHomeworkGuidebookAdded",
    method: "post",
    data: data,
  });
@@ -1238,20 +1245,12 @@
//作业指导书受控文件删除
export function deleteHomeworkGuidebook(query) {
  return request({
    url: "/deviceInstruction/deleteHomeworkGuidebook",
    url: "/instruction/deleteHomeworkGuidebook",
    method: "delete",
    params: query,
  });
}
//作业指导书 查询
export function pageByPageQueryOfHomeworkInstructions(query) {
  return request({
    url: "/deviceInstruction/pageByPageQueryOfHomeworkInstructions",
    method: "get",
    params: query,
  });
}
//设备预约接口
export function reservationSelectDevice(query) {
  return request({
@@ -1260,7 +1259,7 @@
    params: query,
  });
}
//设备预约接口
//设备预约接口 删除
export function reservationDelete(query) {
  return request({
    url: "/reservation/delete",
@@ -1268,7 +1267,7 @@
    params: query,
  });
}
//设备预约接口
//设备预约接口 保存
export function reservationSave(query) {
  return request({
    url: "/reservation/save",
src/views/CNAS/resourceDemand/device/component/device-overview.vue
@@ -145,8 +145,8 @@
<template>
  <div class="role_manage">
    <div>
      <el-form :model="entity" inline label-position="right" label-width="80px">
    <div style="margin-top: 10px">
      <el-form :model="entity" inline label-position="right">
        <el-form-item label="状态:">
          <el-select v-model="entity.deviceStatus" placeholder="全部" size="small" clearable>
            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
@@ -164,24 +164,6 @@
          @click="currentPage = 1, keyMap = {}, list = [], finishLoding = false, refreshTable()">查 询</el-button>
        </el-form-item>
      </el-form>
      <!-- <div class="search_thing">
        <div class="search_label">状态:</div>
        <el-select v-model="entity.deviceStatus" placeholder="全部" size="small" clearable>
          <el-option v-for="item in options" :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="entity.deviceName"></el-input>
            </div>
      </div> -->
      <!-- <div class="search_thing" style="padding-left: 30px;">
      </div> -->
    </div>
    <div class="table" v-loading="loading">
      <scroll-pagination @load="refreshTable()" :finishLoding="finishLoding" :list="list"
@@ -255,7 +237,6 @@
      entity: {
        deviceStatus: null,
        deviceName: null,
        orderBy: { field: "id", order: "asc" }
      },
      options: [],
      list: [],
@@ -298,8 +279,8 @@
        ...this.entity
      }).then(res => {
        if (res.code == 200) {
          this.total = res.data.body.total
          let list = res.data.body.records.map(m => {
          this.total = res.data.total
          let list = res.data.records.map(m => {
            switch (m.deviceStatus) {
              case 0:
                // 正常
src/views/CNAS/resourceDemand/device/component/management.vue
@@ -268,7 +268,7 @@
        <el-col :span="7">
          <el-form :label-position="labelPosition" :model="formData2" label-width="120px" ref="ruleForm">
            <!-- 实验室列表 -->
            <el-form-item label="所属部门:">
            <el-form-item label="所属部门:" required>
              <el-select v-model="formData2.subordinateDepartmentsId" placeholder="请选择" size="small"
                         style="width:100%">
                <el-option v-for="item in subordinateDepartmentsList" :key="item.value"
@@ -421,11 +421,9 @@
            labelPosition: 'right',
            dialogVisible: false,
            dialogVisible2: false,
            addPower: false,
            showData: false, // 数采配置页面
            tableList: [],
            addDia: true,
            addPower: true,
            //设备类型列表
            equipmentList: [],
            // 负责人列表
@@ -445,7 +443,7 @@
            queryParams: {},
            tableData: [],
            column: [
                { label: "设备名称", prop: "deviceName", dataType: 'link', linkMethod: 'selectAllByOne' },
                { label: "设备名称", prop: "deviceName", dataType: 'link', linkMethod: 'selectAllByOne', width: 120 },
                { label: "设备名称EN", prop: "enDeviceName" },
                {
                    label: "规格型号",
@@ -469,10 +467,18 @@
                {
                    label: "设备分类", prop: "largeCategory", dataType: "tag",
                    formatData: (params) => {
            if (this.equipmentList.find(m => m.value == params)) {
                        return this.equipmentList.find(m => m.value == params).label
            } else {
              return null
            }
                    },
                    formatType: (params) => {
            if (this.equipmentList.find(m => m.value == params)) {
                        return this.equipmentList.find(m => m.value == params).type
            } else {
              return null
            }
                    }
                },
                { label: "单价", prop: "unitPrice" },
@@ -821,6 +827,10 @@
                this.$message.error('输入校准周期(月)')
                return
            }
            if (!this.formData2.subordinateDepartmentsId) {
                this.$message.error('请选择所属部门')
                return
            }
            const formData = this.HaveJson(this.formData2)
            formData.insProductIds = formData.insProductIds ? formData.insProductIds.join() : ''
            if (formData.authorizedPerson.length === 0) {
src/views/CNAS/resourceDemand/device/component/operationInstruction.vue
@@ -31,9 +31,9 @@
        <template v-slot="scope">
          <el-button type="text" size="small" @click="downloadFile(scope.row.fileSystemName)">下载</el-button>
          <el-button type="text" size="small" style="color: red;"
            @click="deleteHomeworkGuidebook(scope.row)">删除</el-button>
          <el-button type="text" size="small" @click="instructionEditFun(scope.row)">编辑</el-button>
          <el-button type="text" size="small" @click="approval(scope.row)">审批</el-button>
            @click="deleteHomeworkGuidebook(scope.row)" :disabled="scope.row.status === true">删除</el-button>
          <el-button type="text" size="small" @click="instructionEditFun(scope.row)" :disabled="scope.row.status === true">编辑</el-button>
          <el-button type="text" size="small" @click="approval(scope.row)" :disabled="scope.row.status === true">审批</el-button>
        </template>
      </el-table-column>
    </el-table>
@@ -309,18 +309,7 @@
      });
    },
    downloadFile(fileName) {
      let state = /\.(jpg|jpeg|png|gif)$/i.test(fileName)
      if (state) {
        let url = this.javaApi + '/img/' + fileName;
        fileDownload.downloadIamge(url, fileName)
      } else {
        const url = this.javaApi + '/word/' + fileName
        const link = document.createElement('a');
        link.href = url;
        link.download = fileName;
        link.click();
        this.$message.success('下载成功')
      }
      this.$download.saveAs(fileName, fileName)
    },
    instructionEditFun(row) {
      this.dialogVisible = true
src/views/CNAS/resourceDemand/device/component/resource-reservation.vue
@@ -2,8 +2,7 @@
<template>
  <div class="role_manage">
    <el-row class="title">
      <el-col :span="8" style="text-align: left;">预定总览</el-col>
      <el-col :span="16" style="text-align: right;padding-bottom:10px">
      <el-col :span="24" style="text-align: right;padding:10px 0">
        <el-date-picker
          v-model="startTime"
          format="yyyy-MM-dd"
@@ -19,7 +18,7 @@
          size="mini"
          type="date"
          value-format="yyyy-MM-dd"/>
        <el-button size="mini" type="primary" @click="ValidateAndQuery">查 询</el-button>
        <el-button size="mini" type="primary" @click="ValidateAndQuery" style="margin-left: 10px">查 询</el-button>
      </el-col>
    </el-row>
    <div class="table-container">
@@ -134,7 +133,6 @@
    }
  },
  data() {
    return {
      timeSlots: ['09:00-12:00', '13:00-18:00', '18:00-22:00'],
      dates: [],
@@ -154,7 +152,6 @@
      startTime: '',
      endTime: '',
      entity: {
        deviceName: null,
        laboratoryName: '',
        storagePoint: '',
      },
@@ -169,15 +166,6 @@
        reservationSpecification: ''
      },
      total: '',
      componentData: {
        entity: {
          largeCategory: null,
          orderBy: {
            field: 'id',
            order: 'asc'
          }
        },
      },
      yuyue: null,
      yuyuetime: '',
      rules: {
@@ -202,14 +190,12 @@
      this.clickSidebar(newVal)
    }
  },
  created() {
    this.clickSidebar(this.clickNodeVal)
    this.initDate();
  },
  mounted() {
    this.getStartTimeAndEndTime();
    // this.getStartTimeAndEndTime();
  },
  methods: {
    isBeforeDate() {
@@ -218,7 +204,7 @@
      const appointment = this.appointment && this.appointment.split('-')
      let appointment0 = ''
      let appointment1 = ''
      if (appointment !== '') {
      if (appointment) {
        appointment0 = appointment[0].slice(0, 2)
        appointment1 = appointment[1].slice(0, 2)
      }
@@ -238,7 +224,7 @@
      if (!row || row.dateList === null || row.dateList === undefined || row.dateList === "") {
        return '预约';
      }
      var dateLst = row.dateList
      const dateLst = row.dateList
      for (const dateLstElement of dateLst) {
        if (dateLstElement.date === date) {
          if (dateLstElement.value === 0) {
@@ -312,12 +298,16 @@
    getStartTimeAndEndTime() {
      //查询逻辑
      this.tableLoading = true;
      reservationSelectDevice({
      const params = {
          current: this.currentPage,
          size: this.pageSize,
        ...this.entity,
        laboratoryNameIsNull: this.laboratoryNameIsNull
      }).then(res => {
        starttime: this.startTime,
        endtime: this.endTime,
        laboratoryNameIsNull: this.laboratoryNameIsNull,
        laboratoryName: this.entity.laboratoryName,
        storagePoint: this.entity.storagePoint,
      }
      reservationSelectDevice(params).then(res => {
        this.tableLoading = false;
        if (res.code === 200) {
          this.tableData = res.data;
@@ -326,17 +316,20 @@
        this.tableLoading = false;
      })
    },
    // 打开预约弹框
    openModal(date, row) {
      console.log('date', date);
      console.log('row', row);
      this.yuyue = row;
      this.yuyuetime = date;
      this.appointment = row.time
      this.showModal = true;
      this.getList();
    },
    // 打开新建预定弹框
    openAdd() {
      this.addVisiable = true;
      this.addReservation.deviceId = this.yuyue.id;
      // this.addReservation.deviceNumber = this.yuyue.deviceNumber;
      this.addReservation.deviceName = this.yuyue.deviceName;
      this.addReservation.reservationTime = this.yuyuetime + " " + this.yuyue.time;
      this.addReservation.specificTime = this.yuyue.time;
@@ -393,9 +386,10 @@
        }
      });
    },
    // 预定信息查询
    getList() {
      const params = {
        selectReservationParameterPage: this.yuyue.id,
        deviceId: this.yuyue.id,
        reservationTime: this.yuyuetime,
        specificTime: this.yuyue.time,
      }