zhangherong
2025-04-29 86a6a39153a72dbc624e28559aa41b9570a2339e
art: 设备管理-设备台账-设备精度参数添加
已添加1个文件
已修改1个文件
296 ■■■■■ 文件已修改
src/views/eam/equipment/EamEquipmentList.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/equipment/modules/EamEquipmentPrecisionList.vue 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/equipment/EamEquipmentList.vue
@@ -185,7 +185,7 @@
        <eam-equipment-process-list ref="tabPaneTableListRef6" :isDisplayOperation="false"/>
      </a-tab-pane>
      <a-tab-pane tab="设备精度" :key="7" v-if="isOpenPrecision">
        <eam-equipment-process-list ref="tabPaneTableListRef7" :isDisplayOperation="false"/>
        <eam-equipment-precision-list ref="tabPaneTableListRef7" :isDisplayOperation="false"/>
      </a-tab-pane>
    </a-tabs>
@@ -212,6 +212,7 @@
  import EamEquipmentAttachmentList from '@views/eam/equipment/EamEquipmentAttachmentList.vue'
  import EamWeekMaintenanceOrderList from '@views/eam/maintenance/EamWeekMaintenanceOrderList.vue'
  import EamEquipmentProcessList from '@views/eam/equipment/modules/EamEquipmentProcessList.vue'
  import EamEquipmentPrecisionList from '@views/eam/equipment/modules/EamEquipmentPrecisionList.vue'
  export default {
    name: 'EamEquipmentList',
@@ -225,7 +226,8 @@
      EamEquipmentModal,
      EamEquipmentAttachmentList,
      EamWeekMaintenanceOrderList,
      EamEquipmentProcessList
      EamEquipmentProcessList,
      EamEquipmentPrecisionList
    },
    data() {
      return {
src/views/eam/equipment/modules/EamEquipmentPrecisionList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,290 @@
<template>
  <a-spin :spinning="confirmLoading">
    <vxe-toolbar>
      <template v-slot:buttons>
        <vxe-button status="primary" @click="insertEvent()">新增</vxe-button>
        <vxe-button status="danger" @click="handleBatchRemove()">批量删除</vxe-button>
      </template>
    </vxe-toolbar>
    <vxe-table
      ref="editableDetailTable"
      border
      resizable
      show-overflow
      keep-source
      :height="300"
      :loading="confirmLoading"
      :data="dataSource"
      :edit-rules="validRules"
      :edit-config="{trigger: 'manual', mode: 'row', showStatus: true}"
      style="margin-top: 8px;">
      <vxe-table-column type="checkbox" width="60"></vxe-table-column>
      <vxe-table-column type="seq" width="60"></vxe-table-column>
      <vxe-table-column title="ID" field="id" :visible="false"></vxe-table-column>
      <vxe-table-column title="equipmentId" field="equipmentId" :visible="false"></vxe-table-column>
      <vxe-table-column title="检测项目" field="parameterId" align="center"
                        :edit-render="{name : '$select', options: precisionParameterList, optionProps: {label:'parameterName', value:'id'}, props: {clearable:true}, events: {change:handleParamSelectChange}}"></vxe-table-column>
      <vxe-table-column title="参数编码" field="parameterCode" align="center"></vxe-table-column>
      <vxe-table-column title="允差值(mm)" field="parameterValue" align="center"
                        :edit-render="{name : '$input'}"></vxe-table-column>
      <vxe-table-column title="实际值" field="actualValue" align="center"></vxe-table-column>
      <vxe-table-column title="操作" width="160">
        <template v-slot="{row}">
          <template v-if="hasEditStatus(row)">
            <vxe-button @click="saveRowEvent(row)">保存</vxe-button>
            <vxe-button @click="cancelRowEvent(row)">取消</vxe-button>
          </template>
          <template v-else>
            <vxe-button @click="editRowEvent(row)">编辑</vxe-button>
            <vxe-button @click="handleRemove(row)">删除</vxe-button>
          </template>
        </template>
      </vxe-table-column>
    </vxe-table>
    <a-pagination
      v-bind="ipagination"
      @change="handlePageChange"
      @showSizeChange="handleShowSizeChange"
    />
  </a-spin>
</template>
<script>
import { deleteAction, getAction, httpAction } from '@/api/manage'
export default {
  name: 'EamEquipmentPrecisionList',
  data() {
    return {
      title: '操作',
      confirmLoading: false,
      url: {
        add: '/eam/equipmentPrecisionParameters/add',
        edit: '/eam/equipmentPrecisionParameters/edit',
        list: '/eam/equipmentPrecisionParameters/list',
        delete: '/eam/equipmentPrecisionParameters/delete',
        deleteBatch: '/eam/equipmentPrecisionParameters/deleteBatch',
        precisionParamList: '/eam/precisionParameters/listAll'
      },
      /* åˆ†é¡µå‚æ•° */
      ipagination: {
        current: 1,
        pageSize: 10,
        pageSizeOptions: ['10', '20', '30'],
        showTotal: (total, range) => {
          return range[0] + '-' + range[1] + ' å…±' + total + '条'
        },
        showQuickJumper: true,
        showSizeChanger: true,
        total: 0,
        size: 'small'
      },
      dataSource: [],
      precisionParameterList: [],
      queryParam: {
        equipmentId: '-1'
      },
      validRules: {
        parameterId: [
          { required: true, message: '请选择参数!' }
        ],
        parameterValue: [
          { required: true, message: '请输入允差值!' }
        ]
      }
    }
  },
  created() {
    this.loadPrecisionParameterList()
  },
  methods: {
    handleParamSelectChange($event, value) {
      let parameter = this.precisionParameterList.find(item => item.id === value.value)
      if (parameter) {
        $event.row.parameterCode = parameter.parameterCode
      } else {
        $event.row.parameterCode = undefined
      }
    },
    loadPrecisionParameterList() {
      getAction(this.url.precisionParamList).then(res => {
        if (res.success) {
          this.precisionParameterList = [...res.result]
        }
      })
    },
    onClearSelected() {
      this.dataSource = []
      this.queryParam.equipmentId = '-1'
      this.ipagination.current = 1
      this.ipagination.total = 0
    },
    loadData(args) {
      if (!this.url.list) {
        this.$message.error('请设置url.list属性!')
        return
      }
      if (args === 1) {
        this.ipagination.current = 1
      }
      // å°è£…查询条件
      let formData = {
        pageNo: args,
        pageSize: this.ipagination.pageSize,
        equipmentId: this.queryParam.equipmentId
      }
      // è°ƒç”¨æŸ¥è¯¢æ•°æ®æŽ¥å£
      this.confirmLoading = true
      getAction(this.url.list, formData).then(res => {
        if (res.success) {
          // åŽå°æŸ¥è¯¢å›žæ¥çš„ total,数据总数量
          this.dataSource = res.result.records || res.result
          if (res.result.total) {
            this.ipagination.total = res.result.total
          } else {
            this.ipagination.total = 0
          }
        } else {
          this.$message.warning(res.message)
        }
      }).finally(() => {
        // è¿™é‡Œæ˜¯æ— è®ºæˆåŠŸæˆ–å¤±è´¥éƒ½ä¼šæ‰§è¡Œçš„æ–¹æ³•ï¼Œåœ¨è¿™é‡Œå…³é—­loading
        this.confirmLoading = false
      })
    },
    async insertEvent() {
      let record = { equipmentId: this.queryParam.equipmentId }
      let { row: newRow } = await this.$refs.editableDetailTable.insert(record)
      await this.$refs.editableDetailTable.setActiveCell(newRow, 'parameterId')
    },
    async saveRowEvent(row) {
      let that = this
      const errMap = await that.$refs.editableDetailTable.validate().catch(errMap => errMap)
      if (errMap) {
        that.$message.warning('校验不通过,请补充必填项!')
        return
      }
      that.confirmLoading = true
      let httpurl = ''
      let method = ''
      if (!row.id) {
        httpurl += that.url.add
        method = 'post'
      } else {
        httpurl += that.url.edit
        method = 'put'
      }
      let res = await httpAction(httpurl, row, method)
      if (res.success) {
        that.$message.success(res.message)
        that.loadData(that.ipagination.current)
        await that.$refs.editableDetailTable.clearActived()
      } else {
        that.$message.warning(res.message)
      }
      that.confirmLoading = false
    },
    handleRemove(row) {
      let xTable = this.$refs.editableDetailTable
      let that = this
      this.$confirm({
        content: `确认要删除吗?`,
        onOk: () => {
          if (row.id) {
            //后端删除
            deleteAction(that.url.delete, { id: row.id }).then((res) => {
              if (res.success) {
                that.reCalculatePage(1)
                that.$message.success(res.message)
                that.loadData(that.ipagination.current)
              } else {
                that.$message.warning(res.message)
              }
            })
          } else {
            //前端删除
            xTable.remove(row)
          }
        },
        onCancel: () => {
          xTable.setActiveCell(row, 'parameterId')
        }
      })
    },
    handleBatchRemove(){
      let xTable = this.$refs.editableDetailTable
      let that = this
      let checkboxRecords = xTable.getCheckboxRecords();
      if(checkboxRecords && checkboxRecords.length > 0) {
        let ids = checkboxRecords.map(record => record.id);
        this.$confirm({
          title: "确认删除",
          content: "是否删除选中数据?",
          onOk: function () {
            that.confirmLoading = true;
            deleteAction(that.url.deleteBatch, {ids: ids.join(',')}).then((res) => {
              if (res.success) {
                //重新计算分页问题
                that.reCalculatePage(checkboxRecords.length)
                that.$message.success(res.message);
                that.loadData(that.ipagination.current);
              } else {
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
            });
          }
        });
      } else {
        that.$message.warning('请先选中数据行!');
      }
    },
    editRowEvent(row) {
      this.$refs.editableDetailTable.setActiveRow(row)
    },
    cancelRowEvent(row) {
      let xTable = this.$refs.editableDetailTable
      this.$confirm({
        content: `确认要放弃编辑吗?`,
        onOk: () => {
          xTable.revertData()
        },
        onCancel: () => {
          xTable.setActiveCell(row, 'parameterId')
        }
      })
    },
    hasEditStatus(row) {
      const $table = this.$refs.editableDetailTable
      if ($table) {
        return $table.isActiveByRow(row)
      }
      return false
    },
    reCalculatePage(count) {
      //总数量-count
      let total = this.ipagination.total - count
      //获取删除后的分页数
      let currentIndex = Math.ceil(total / this.ipagination.pageSize)
      //删除后的分页数<所在当前页
      if (currentIndex < this.ipagination.current) {
        this.ipagination.current = currentIndex
      }
    },
    handlePageChange(current, pageSize){
      this.$set(this.ipagination, 'current', current)
      this.$emit('change', {current, pageSize})
    },
    handleShowSizeChange(current, pageSize){
      this.$set(this.ipagination, 'pageSize', pageSize)
      this.$emit('change', {current, pageSize})
    },
  }
}
</script>
<style lang="less" scoped>
</style>