zhangherong
2025-04-29 f058c1e6949fb494214f006c5770187efc5f5ab1
art: 设备管理-设备台账-设备工艺参数添加
已添加1个文件
已修改1个文件
333 ■■■■■ 文件已修改
src/views/eam/equipment/EamEquipmentList.vue 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/equipment/modules/EamEquipmentProcessList.vue 278 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/equipment/EamEquipmentList.vue
@@ -85,10 +85,10 @@
      <a-button type="primary" icon="download" @click="handleTemplateXlsDownload">导入模板下载</a-button>
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="handleOpenNameplateModal(selectionRows)">
            <a-icon type="printer"/>
            æ‰“印铭牌
          </a-menu-item>
<!--          <a-menu-item key="1" @click="handleOpenNameplateModal(selectionRows)">-->
<!--            <a-icon type="printer"/>-->
<!--            æ‰“印铭牌-->
<!--          </a-menu-item>-->
          <a-menu-item key="2" @click="batchDel" v-if="isShowAuth('eam:equipment:delete')">
            <a-icon type="delete"/>
            åˆ é™¤
@@ -143,9 +143,9 @@
          <a-dropdown>
            <a class="ant-dropdown-link">更多 <a-icon type="down"/></a>
            <a-menu slot="overlay">
              <a-menu-item>
                <a href="javascript:;" @click="handleOpenNameplateModal([record])">铭牌</a>
              </a-menu-item>
<!--              <a-menu-item>-->
<!--                <a href="javascript:;" @click="handleOpenNameplateModal([record])">铭牌</a>-->
<!--              </a-menu-item>-->
              <a-menu-item>
                <a href="javascript:;" @click="handleOpenResumeDrawer(record)">履历</a>
              </a-menu-item>
@@ -181,6 +181,12 @@
      <a-tab-pane tab="保养标准" :key="5">
        <eam-maintenance-standard-list ref="tabPaneTableListRef5" :isDisplayOperation="false"/>
      </a-tab-pane>
      <a-tab-pane tab="工艺参数" :key="6" v-if="isOpenProcess">
        <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"/>
      </a-tab-pane>
    </a-tabs>
    <!-- è¡¨å•区域 -->
@@ -205,6 +211,7 @@
  import EamInspectionOrderList from '../maintenance/EamInspectionOrderList'
  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'
  export default {
    name: 'EamEquipmentList',
@@ -217,7 +224,8 @@
      NameplateModal,
      EamEquipmentModal,
      EamEquipmentAttachmentList,
      EamWeekMaintenanceOrderList
      EamWeekMaintenanceOrderList,
      EamEquipmentProcessList
    },
    data() {
      return {
@@ -474,13 +482,15 @@
        printedRows: [],
        activeTabKey: 1,
        appHomeUrl: '',
        currentTableRowRecord: {}
        currentTableRowRecord: {},
        isOpenProcess: false,
        isOpenPrecision: false,
      }
    },
    computed: {
      importExcelUrl: function() {
        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
      }
      },
    },
    created() {
      this.loadAllProductionTree()
@@ -567,7 +577,27 @@
        this.$refs['tabPaneTableListRef' + this.activeTabKey].queryParam.equipmentId = null
        this.$refs['tabPaneTableListRef' + this.activeTabKey].dataSource = []
        this.$refs['tabPaneTableListRef' + this.activeTabKey].onClearSelected()
        if (selectedRowKeys.length === 1) this.loadTabPaneTableData(selectedRowKeys[0])
        if (selectedRowKeys.length === 1) {
          let row = this.dataSource.find(row => row.id === selectedRowKeys[0]);
          if(row) {
            this.isOpenProcess = (row.processParametersFlag === '1')
            this.isOpenPrecision = (row.precisionParametersFlag === '1')
          }else {
            this.isOpenProcess = false
            this.isOpenPrecision = false
          }
          this.loadTabPaneTableData(selectedRowKeys[0])
        }else {
          this.isOpenProcess = false
          this.isOpenPrecision = false
        }
        //tab标签被销毁了,返回第一个tab
        if(!this.isOpenProcess && this.activeTabKey === 6) {
          this.activeTabKey = 1;
        }
        if(!this.isOpenPrecision && this.activeTabKey === 7) {
          this.activeTabKey = 1;
        }
      },
      handleTemplateXlsDownload() {
@@ -581,7 +611,8 @@
            this.appHomeUrl = res.result.settingValue
          }
        })
      }
      },
    }
  }
</script>
src/views/eam/equipment/modules/EamEquipmentProcessList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,278 @@
<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: processParameterList, 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="计量单位" field="parameterUnit" align="center"></vxe-table-column>
      <vxe-table-column title="参数范围" field="parameterPeriod" align="center"
                        :edit-render="{name : '$input'}"></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-spin>
</template>
<script>
import { deleteAction, getAction, httpAction } from '@/api/manage'
export default {
  name: 'EamEquipmentProcessModal',
  data() {
    return {
      title: '操作',
      confirmLoading: false,
      url: {
        add: '/eam/equipmentProcessParameters/add',
        edit: '/eam/equipmentProcessParameters/edit',
        list: '/eam/equipmentProcessParameters/list',
        delete: '/eam/equipmentProcessParameters/delete',
        deleteBatch: '/eam/equipmentProcessParameters/deleteBatch',
        processParamList: '/eam/processParameters/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
      },
      dataSource: [],
      processParameterList: [],
      queryParam: {
        equipmentId: '-1'
      },
      validRules: {
        parameterId: [
          { required: true, message: '请选择参数!' }
        ],
        parameterPeriod: [
          { required: true, message: '请输入参数范围!' }
        ]
      }
    }
  },
  created() {
    this.loadProcessParameterList()
  },
  methods: {
    handleParamSelectChange($event, value) {
      let parameter = this.processParameterList.find(item => item.id === value.value)
      if (parameter) {
        $event.row.parameterUnit = parameter.parameterUnit
        $event.row.parameterCode = parameter.parameterCode
      } else {
        $event.row.parameterUnit = undefined
        $event.row.parameterCode = undefined
      }
    },
    loadProcessParameterList() {
      getAction(this.url.processParamList).then(res => {
        if (res.success) {
          this.processParameterList = [...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
      }
    }
  }
}
</script>
<style lang="less" scoped>
</style>