value
2023-09-07 523d7a54fb07fdf756fbc4faa5eb7fef7263a556
src/views/laboratory/measure/index.vue
@@ -2,29 +2,32 @@
  <div>
    <div class="content-main">
      <div class="top-bar">
        <el-form :hidden="lookVisible" ref="form" :inline="true" :model="searchData">
          <el-form-item :label="this.radioValue === 0 ? '仪器设备编号:' : '计划单号:'" class="sermargin">
            <el-input v-model="searchData.code" @blur="blurSearch()" class="input-form" placeholder="请输入">
        <el-form style="margin-top: 10px;" :hidden="lookVisible" ref="form" :inline="true" :model="searchData">
          <el-form-item :label="this.radioValue === 0 ? '仪器设备编号:' : '计划编号:'" class="sermargin">
            <el-input size="small" v-model="searchData.code" @blur="blurSearch()" class="input-form" placeholder="请输入">
            </el-input>
          </el-form-item>
          <el-form-item v-if="this.radioValue === 1">
            <el-button size="small" type="primary" @click="searchPlan">查询</el-button>
          </el-form-item>
          <el-form-item v-if="this.radioValue === 0" :label="this.radioValue === 0 ? '仪器设备名称:' : '设备名称'"
            class="sermargin">
            <el-input v-model="searchData.name" class="input-form" placeholder="请输入">
            <el-input size="small" v-model="searchData.name" class="input-form" placeholder="请输入">
            </el-input>
          </el-form-item>
          <el-form-item v-if="this.radioValue === 0" :label="this.radioValue === 0 ? '计量单位:' : '计量单位:'"
            style="margin-right: 20px;">
            <el-input v-model="searchData.measureunit" class="input-form" placeholder="请输入">
            <el-input size="small" v-model="searchData.measureunit" class="input-form" placeholder="请输入">
            </el-input>
          </el-form-item>
        </el-form>
        <el-form :hidden="lookVisible">
        <el-form :hidden="lookVisible" style="margin-top: 10px;">
          <el-form-item v-if="this.radioValue === 0" class="rightBtn">
            <el-button type="primary" @click="search">查询</el-button>
            <el-button type="primary" plain @click="reset()">重置</el-button>
            <el-button size="small" type="primary" @click="search">查询</el-button>
            <el-button size="small" type="primary" plain @click="reset()">重置</el-button>
          </el-form-item>
          <el-form-item v-if="this.radioValue === 1" class="rightBtn">
            <el-button type="primary" @click="addPlan()" icon="el-icon-plus">新增计划</el-button>
            <el-button size="small" type="primary" @click="addPlan()" icon="el-icon-plus">新增计划</el-button>
          </el-form-item>
        </el-form>
      </div>
@@ -39,8 +42,8 @@
          </div>
        </div>
        <div class="table-box">
          <el-table v-if="this.radioValue == 0" :max-height="800" :cell-style="{ textAlign: 'center' }"
            :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }"
          <el-table v-if="this.radioValue == 0" :max-height="500" :cell-style="{ textAlign: 'left' }"
            :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'left' }"
            :data="measureLedgerTable" style="width: 100%">
            <el-table-column type="index" min-width="10%" />
            <el-table-column prop="equipmentCode" label="仪器设备编号" min-width="10%" />
@@ -70,19 +73,19 @@
            <el-table-column prop="name" label="负责人" min-width="10%" />
            <el-table-column prop="createTime" label="创建日期" min-width="10%" />
            <el-table-column prop="name" label="创建人" min-width="8%" />
            <el-table-column prop="code" label="计量编号" min-width="8%" />
            <el-table-column prop="code" label="计量编号" min-width="12%" />
            <el-table-column label="操作" min-width="15%">
              <template slot-scope="scope">
                <el-button type="text" @click="lookMeasurement(scope.row.equipmentCode)" size="small">查看计量履历</el-button>
                <!-- <el-button type="text" @click="lookMeasurement(scope.row.equipmentCode)" size="small">查看计量履历</el-button> -->
                <el-button type="text" size="small">查看附件</el-button>
              </template>
            </el-table-column>
          </el-table>
          <el-table v-show="this.radioValue == 1" :max-height="800" :cell-style="{ textAlign: 'center' }"
          <el-table v-show="this.radioValue == 1" :max-height="500" :cell-style="{ textAlign: 'center' }"
            :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }"
            :data="measurePlanTable" style="width: 100%">
            <el-table-column type="index" min-width="10%" />
            <el-table-column prop="plannedOrderNumber" label="计划单号" min-width="10%" />
            <el-table-column prop="plannedOrderNumber" label="计划编号" min-width="10%" />
            <el-table-column prop="palanDate" label="计划日期" min-width="10%">
              <template lot-scope="scope">
                <!-- {{ scope.row.palanDate }} -->
@@ -109,19 +112,30 @@
            </el-table-column>
          </el-table>
          <!-- 分页器 -->
          <div style="display: flex;justify-content: end;">
          <div style="display: flex;justify-content: end;padding: 10px 0;">
            <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
              :current-page="currentPage" :page-sizes="[5, 10, 20]" :page-size="pageSize"
              :current-page="currentPage" :page-sizes="[10, 20, 30]" :page-size="pageSize"
              layout="total, sizes, prev, pager, next, jumper" :total="total">
            </el-pagination>
          </div>
        </div>
      </div>
      <el-drawer title="我是标题" :visible.sync="drawer" :direction="direction" :before-close="handleClose">
        <span>我来啦!</span>
      </el-drawer>
      <div>
        <el-button v-if="selectInfoBtn" @click="combackLookPlan"
          style="position: fixed;top: 43px;right: 14px; z-index: 1000;" type="primary" icon="el-icon-refresh-left"
          size="mini" plain>返回</el-button>
        <div v-if="addBtn"
          style="display: flex;justify-content: center;width: 10%;position: fixed;top: 43px;right: 14px; z-index: 1000;">
          <el-button @click="addTop = -82; addBtn = false;lookVisible= false" size="mini" style="width: 60px;">返回</el-button>
          <el-button size="mini" @click="measureAdd" style="width: 60px;" type="primary">保存</el-button>
        </div>
      </div>
      <div
        :style="`position: absolute;top:${addTop}vh;left: 9px;transition: 1s;width: 99%;height: 82vh;background-color: #fff;z-index: 21;`">
        <Add ref="add" />
      </div>
      <div id="myMOdel"
        :style="`position: absolute;transition: 1s;top:${mymodelTop}px; left: 9px; width: 100%; height: 60vh; background-color: #fff;z-index: 20;`">
        :style="`position: absolute;transition: 1s;top:${mymodelTop}px; left: 9px; width: 99%; height: 100vh; background-color: #fff;z-index: 20;`">
        <el-col :span="10">
          <p style="font-size: 13px;padding-left: 40px;">计划信息</p>
        </el-col>
@@ -130,7 +144,7 @@
            <el-form-item>
              <el-col :span="8">计划编号:<span style="color: black;">{{ planInfo.plannedOrderNumber }}</span></el-col>
              <el-col :span="8">负责人:<span style="color: black;">{{ planInfo.measurePerson }}</span></el-col>
              <el-col :span="8">计划时间:<span style="color: black;">{{ planInfo.palanDate }}</span></el-col>
              <el-col :span="8">计划时间:<span style="color: black;">{{ planInfo.planDate }}</span></el-col>
            </el-form-item>
            <el-form-item>
              <el-col :span="8">计量单位:<span style="color: black;">{{ planInfo.unit }}</span></el-col>
@@ -148,39 +162,156 @@
              :show-text="false"></el-progress>
          </el-col>
        </el-col>
        <el-col  style="width:93%;height: 20vh;margin-top: 30px; margin-left: 40px;">
          <el-table :data="measureData">
            <el-table-column type="inde" label="序号"/>
            <el-table-column type="inde" label="仪器设备编号"/>
            <el-table-column type="inde" label="仪器设备名称"/>
            <el-table-column type="inde" label="测量范围"/>
            <el-table-column type="inde" label="计算周期"/>
            <el-table-column type="inde" label="计算结果"/>
            <el-table-column type="inde" label="计算日期"/>
            <el-table-column type="inde" label="计算有效期"/>
            <el-table-column type="inde" label="负责人"/>
            <el-table-column type="inde" label="创建日期"/>
            <el-table-column type="inde" label="创建人"/>
            <el-table-column type="inde" label="计量单位"/>
            <el-table-column type="inde" label="计量编号"/>
        <el-col style="width:93%;height: 20vh;margin-top: 30px; margin-left: 40px;">
          <el-table max-height="300" :data="measureData">
            <el-table-column type="index" label="序号" />
            <el-table-column prop="equipmentCode" label="仪器设备编号" />
            <el-table-column prop="equipmentName" label="仪器设备名称" />
            <el-table-column prop="measuringRange" label="测量范围" />
            <el-table-column prop="termValidity" label="计算周期">
              <template slot-scope="scope">
                {{ scope.row.termValidity }}月
              </template>
            </el-table-column>
            <el-table-column prop="result" label="计算结果">
              <template slot-scope="scopeResult">
                <div v-if="scopeResult.row.result === 1">
                  <span style="color: rgb(78, 210, 16);">正常</span>
                </div>
                <div v-else-if="scopeResult.row.result === 2">
                  <span style="color: rgb(27, 202, 233);">矫正后可用</span>
                </div>
                <div v-else-if="scopeResult.row.result == '' || scopeResult.row.result == null">
                  <span style="color: #424744;">暂未计量</span>
                </div>
                <div v-else>
                  <span style="color: red;">失准</span>
                </div>
              </template>
            </el-table-column>
            <el-table-column label="计算日期">
              <template slot-scope="scopeEndDate">
                <span v-if="scopeEndDate.row.endDate != '' && scopeEndDate.row.endDate != null">{{
                  scopeEndDate.row.endDate
                }}</span>
                <span v-else>无</span>
              </template>
            </el-table-column>
            <el-table-column prop="validit" label="计算有效期" />
            <el-table-column prop="measurementName" label="负责人" />
            <el-table-column prop="imCreateTime" label="创建日期" />
            <el-table-column prop="measurementName" label="创建人" />
            <el-table-column prop="measurementUnit" label="计量单位" />
            <el-table-column prop="code" label="计量编号" />
            <el-table-column prop="equipmentCode" label="操作">
              <template slot-scope="scope">
                <a @click="measureUp(scope)" style="color: deepskyblue;">计量</a>
              </template>
            </el-table-column>
          </el-table>
        </el-col>
        <el-col style="width: 93%;margin-left: 40px; display: flex;justify-content: end;">
        <el-col style="width: 93%;margin-left: 40px; margin-top: 250px;display: flex;justify-content: end;">
          <el-pagination @size-change="handleSizeChangePlan" @current-change="handleCurrentChangePllan"
              :current-page="currentPagePlan" :page-sizes="[5, 10, 20]" :page-size="pageSizePlan"
              layout="total, sizes, prev, pager, next, jumper" :total="totalPlan">
            </el-pagination>
            :current-page="currentPagePlan" :page-sizes="[5, 10]" :page-size="pageSizePlan"
            layout="total, sizes, prev, pager, next, jumper" :total="totalPlan">
          </el-pagination>
        </el-col>
      </div>
      <el-dialog class="measureForm" title="计量" :visible.sync="dialogVisible">
        <el-form label-position="top" ref="upmeasureForm" :model="measureUpInfo">
          <el-row :gutter="20">
            <el-col :span="24">
              <el-form-item label="检定有效期" prop="date"
                :rules="[{ required: true, message: '请选择检定有效期', trigger: 'change' }]">
                <el-date-picker v-model="measureUpInfo.date" type="date" placeholder="选择日期">
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="不确定度" prop="uncertainty"
                :rules="[{ required: true, message: '请填写不确定度', trigger: 'blur' }]">
                <el-input placeholder="请填写不确定度" v-model="measureUpInfo.uncertainty" />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="结果" prop="result" :rules="[{ required: true, message: '请选择结果', trigger: 'change' }]">
                <el-select v-model="measureUpInfo.result" clearable filterable :allow-create="true" placeholder="请选择结果"
                  style="width:100%">
                  <el-option v-for="item in result" :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="measureUpInfo.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="measureUpInfo.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="handleUploadupdated" :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="upMeasure">确 定</el-button>
          <el-button @click="dialogVisible = false">取 消</el-button>
        </span>
      </el-dialog>
    </div>
  </div>
</template>
<script>
import { getPlanPageList, getStandingPageList } from '@/api/laboratory/measure'
import { getPlanPageList, getStandingPageList, getPlanMeasureInstrument, limitGetPlanMeasureRequest, updateMetricalInformationInfo } from '@/api/laboratory/measure'
import { default as Add } from "./Add.vue";
export default {
  components: {
    Add: () => import('./Add.vue')
  },
  data() {
    return {
      dialogVisible: false,
      tableIndex: null,
      selectInfoBtn: false,
      addBtn: false,
      measureUpInfo: {
        id: null,
        code: null,
        result: null,
        date: null,
        uncertainty: null,
        performanceIndex: null,
        remarks: null,
        file: null,
        termValidity: null
      },
      result: [{
        label: '合格',
        value: 1
      }, {
        label: '矫正后可用',
        value: 2
      }, {
        label: '不合格',
        value: 3
      }],
      searchData: {
        code: '',
        name: '',
@@ -194,93 +325,28 @@
        value: 1,
        label: '计量计划'
      }],
      measureLedgerTable: [{
        equipment_code: 'JSTC-W1-00001',  // 仪器设备编号
        equipment_name: '数字电桥',   // 仪器设备名称
        measure_range: '---',  // 测量范围
        measurecycle: '12月',   // 计量周期
        mesureresult: 1,   // 计量结果
        date: '2022-07-20',   // 计量日期
        term_validity: '2023-07-20',   // 计量有效期
        head: '黄小明' ,  // 负责人
        create_time: '2023-07-20', // 创建日期
        create_person: '黄小明', // 创建人
        measure_code: 'QCX20230720' // 计量编号
      },{
        equipment_code: 'JSTC-W1-00001',  // 仪器设备编号
        equipment_name: '数字电桥',   // 仪器设备名称
        measure_range: '---',  // 测量范围
        measurecycle: '12月',   // 计量周期
        mesureresult: 0,   // 计量结果
        date: '2022-07-20',   // 计量日期
        term_validity: '2023-07-20',   // 计量有效期
        head: '黄小明' ,  // 负责人
        create_time: '2023-07-20', // 创建日期
        create_person: '黄小明', // 创建人
        measure_code: 'QCX20230720' // 计量编号
      },{
        equipment_code: 'JSTC-W1-00001',  // 仪器设备编号
        equipment_name: '数字电桥',   // 仪器设备名称
        measure_range: '---',  // 测量范围
        measurecycle: '12月',   // 计量周期
        mesureresult: 1,   // 计量结果
        date: '2022-07-20',   // 计量日期
        term_validity: '2023-07-20',   // 计量有效期
        head: '黄小明' ,  // 负责人
        create_time: '2023-07-20', // 创建日期
        create_person: '黄小明', // 创建人
        measure_code: 'QCX20230720' // 计量编号
      }],
      measurePlanTable: [{
        measure_number: 'QC568946512', // 计量单号
        equipment_code: '010101', // 设备编号
        equipment_name: '拉力机', // 设备名称
        scheduled_date: '2023-04-08 ~ 2023-08-08', // 计划日期
        measure_state: 1, // 计量状态
        head: '黄小明', // 计量负责人
        department: '地线检测', // 计量单位
        creater: '黄小明', // 创建人
        create_date: '2023-07-20', // 创建日期
      },{
        measure_number: 'QC568946512', // 计量单号
        equipment_code: '010101', // 设备编号
        equipment_name: '拉力机', // 设备名称
        scheduled_date: '2023-04-08 ~ 2023-08-08', // 计划日期
        measure_state: 1, // 计量状态
        head: '黄小明', // 计量负责人
        department: '地线检测', // 计量单位
        creater: '黄小明', // 创建人
        create_date: '2023-07-20', // 创建日期
      },{
        measure_number: 'QC568946512', // 计量单号
        equipment_code: '010101', // 设备编号
        equipment_name: '拉力机', // 设备名称
        scheduled_date: '2023-04-08 ~ 2023-08-08', // 计划日期
        measure_state: 0, // 计量状态
        head: '黄小明', // 计量负责人
        department: '地线检测', // 计量单位
        creater: '黄小明', // 创建人
        create_date: '2023-07-20', // 创建日期
      }],
      measureLedgerTable: [],
      measurePlanTable: [],
      currentPage: 1,
      pageSize: 5,
      pageSize: 10,
      total: 0,
      currentPagePlan: 1,
      pageSizePlan: 5,
      pageSizePlan: 10,
      totalPlan: 0,
      drawer: false,
      direction: 'rtl',
      lookVisible: false,
      measureData: [],
      planInfo: {
        plannedOrderNumber: 7897897987,
        measurePerson: '某某人',
        palanDate: "2021-09-08 ~ 2024-08-09",
        planDate: "2021-09-08 ~ 2024-08-09",
        unit: '某某检测局',
        createPerson: '某某负责人',
        createTime: '2021-09-08'
      },
      mymodelTop: -450//14
      mymodelTop: -1000,//14
      addTop: -85,
      planId: 0
    }
  },
  created() {
@@ -288,43 +354,128 @@
    // this.getPlanPageList()
  },
  methods: {
    handleSizeChangePlan(){
    upResult() {
      this.measureData[this.tableIndex].result = this.resultUp
    },
    handleCurrentChangePllan(){
    async upMeasure() {
      let res = await updateMetricalInformationInfo(this.measureUpInfo)
      if (res) {
        this.$message({
          message: '操作成功!',
          type: 'success'
        });
        this.limitGetPlanMeasureInstrument()
        this.dialogVisible = false
      }
    },
    handleUploadupdated() {
    },
    measureUp(scope) {
      this.dialogVisible = true
      this.tableIndex = scope.$index
      this.measureUpInfo.result = scope.row.result
      this.measureUpInfo.code = scope.row.code
      this.measureUpInfo.date = scope.row.endDate
      this.measureUpInfo.id = scope.row.imId
      this.measureUpInfo.uncertainty = scope.row.uncertainty
      this.measureUpInfo.performanceIndex = scope.row.performanceIndex
      this.measureUpInfo.remarks = scope.row.remarks
      this.measureUpInfo.termValidity = scope.row.termValidity
    },
    async measureAdd() {
      let res = await this.$refs.add.add()
      if (!res) {
        return
      }
      this.addTop = -82
      this.$message({
        message: '操作成功!',
        type: 'success'
      });
      this.lookVisible = false
      this.addBtn = false
      // this.limitGetPlanMeasureInstrument()
      this.getPlanPageList()
    },
    async handleSizeChangePlan(num) {
      this.pageSizePlan = num
      this.currentPage
      await this.limitGetPlanMeasureInstrument()
    },
    handleCurrentChangePllan(num) {
      this.currentPagePlan = num;
      this.limitGetPlanMeasureInstrument();
    },
    addPlan() {
      this.drawer = true
      this.addTop = 2
      this.lookVisible = true
      this.$parent.mainShowAdd()
      this.addBtn = true
    },
    async limitGetPlanMeasureInstrument() {
      let param = {
        id: this.planId,
        currentPage: this.currentPagePlan,
        pageSize: this.pageSizePlan
      }
      const res = await limitGetPlanMeasureRequest(param);
      console.log(res.data.total);
      // this.totalPlan = res.data.taotal;
      this.measureData = res.data.list;
      console.log(this.totalPlan);
    },
    lookPalan(id) {
      this.planId = id
      this.getPlanAndInfoAndIns(id)
      this.lookVisible = true
      this.mymodelTop=10
      this.mymodelTop = 2
      this.selectInfoBtn = true
      this.$parent.triggerMainBtnPlan()
    },
    combackLookPlan(){
    async getPlanAndInfoAndIns(id) {
      let res = await getPlanMeasureInstrument({ "id": id, "currentPage": this.currentPagePlan, "pageSize": this.pageSize });
      for (const key in res.data.list) {
        this.planInfo[key] = res.data.list[key]
      }
      this.planInfo.planDate = this.planInfo.beginTime + " ~ " + this.planInfo.endTime
      this.planInfo.metricalInfoAndInsList.forEach(item => {
        if (item.endDate != '' && item.endDate != null) {
          item.validit = this.addMonths(item.endDate, item.termValidity)
        } else {
          item.validit = '无'
        }
      })
      this.measureData = this.planInfo.metricalInfoAndInsList
      this.totalPlan = res.data.total
    },
    combackLookPlan() {
      this.lookVisible = false
      this.mymodelTop=-450
      this.mymodelTop = -1000
      this.selectInfoBtn = false
    },
    blurSearch() {
      if (this.radioValue === 1) {
        console.log("计划");
      }
    },
    handleClose() {
      this.drawer = false
    },
    handleCurrentChange() {
      this.getStandingPageList()
    handleCurrentChange(num) {
      this.currentPage = num
      this.radioValue ? this.getPlanPageList() : this.getStandingPageList()
    },
    handleSizeChange() {
      this.getStandingPageList()
    handleSizeChange(num) {
      this.pageSize = num
      this.radioValue ? this.getPlanPageList() : this.getStandingPageList()
    },
    async getStandingPageList() {
      const res = await getStandingPageList({
      let param = {
        currentPage: this.currentPage, pageSize: this.pageSize,
        code: this.searchData.code, name: this.searchData.name, unit: this.searchData.measureunit
      })
      }
      const res = await getStandingPageList(param)
      this.measureLedgerTable = res.data.records
      this.total = res.data.total
      this.measureLedgerTable.forEach(item => {
@@ -357,6 +508,9 @@
    search() {
      this.getStandingPageList()
    },
    searchPlan(){
      this.getPlanPageList()
    },
    reset(formName) {
      this.searchData.name = ''
      this.searchData.code = ''
@@ -367,24 +521,27 @@
      this.reset()
    },
    async getPlanPageList() {
      const res = await getPlanPageList({
        currentPage: this.currentPage, pageSize: this.pageSize,
        code: this.searchData.code, name: this.searchData.name, unit: this.searchData.measureunit
      })
      // console.log(111);
      let param = {
        currentPage: this.currentPage,
        pageSize: this.pageSize,
        plannedOrderNumber: this.searchData.code
      }
      const res = await getPlanPageList(param)
      res.data.list.forEach(item => {
        item.palanDate = item.beginTime + " ~ " + item.endTime
      })
      this.measurePlanTable = res.data.list
      this.total = res.data.total
      console.log(333);
    },
    lookMeasurement(code) {
      console.log(code);
    async lookMeasurement(code) {
    },
  }
}
</script>
<style scoped>
<style scoped lang="scss">
.top-bar {
  margin: -25px -15px;
  background: #fff;