lyh
2025-06-16 e48436b9c5dd3f0365f77339f84b37eea95b56e2
src/views/dnc/base/modules/ProductStructure/Cutter/CutterTableList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,239 @@
<template>
  <div>
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-col :md="5" :sm="5">
            <a-form-item label="刀具编号">
              <a-input placeholder="请输入刀具编号" v-model="queryParam.cutterCode" allow-clear/>
            </a-form-item>
          </a-col>
          <a-col :md="5" :sm="5">
            <a-form-item label="刀具名称">
              <a-input placeholder="请输入刀具名称" v-model="queryParam.cutterName" allow-clear/>
            </a-form-item>
          </a-col>
          <a-col :md="4" :sm="4">
            <a-space>
              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
              <a-button type="primary" @click="handleAdd" icon="plus" v-has="'cutter_add'">新增</a-button>
              <a-button type="primary" @click="handleSend()" icon="export">发送刀具系统</a-button>
            </a-space>
          </a-col>
        </a-row>
      </a-form>
    </div>
    <a-table :columns="columns" :data-source="dataSource" bordered :pagination="ipagination" :size="size" rowKey="id"
             @change="handleTableChange" :scroll="{y:189}">
      <template slot="action" slot-scope="text, record">
        <a @click="handleChoose(record)">选择刀具</a>
        <a-divider type="vertical"/>
        <a-dropdown>
          <a class="ant-dropdown-link">
            æ›´å¤š
            <a-icon type="down"/>
          </a>
          <a-menu slot="overlay">
            <a-menu-item>
              <a href="javascript:;" @click="handleDetail(record)">详情</a>
            </a-menu-item>
            <a-menu-item>
              <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                <a>删除</a>
              </a-popconfirm>
            </a-menu-item>
          </a-menu>
        </a-dropdown>
      </template>
    </a-table>
    <CutterModal ref="cutterModalRef" :currentTreeNodeInfo="currentLevelInfo" @submitSuccess="loadData"/>
    <DncToolsSelectModal ref="dncToolsSelectModal" @submitSuccess="loadData"/>
  </div>
</template>
<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import CutterModal from '@views/dnc/base/modules/ProductStructure/Cutter/CutterModal.vue'
import DncToolsSelectModal from '@views/tms/modules/baseTools/DncToolsSelectModal.vue'
import { getAction, httpAction } from '@api/manage'
import dncApi from '@api/dnc'
export default {
  name: 'CutterTableList',
  components: { DncToolsSelectModal, CutterModal },
  mixins: [JeecgListMixin],
  props: {
    currentLevelInfo: {
      type: Object
    },
    size: {
      type: String
    }
  },
  data() {
    return {
      disableMixinCreated: true,
      columns: [
        {
          title: '序号',
          dataIndex: 'rowIndex',
          key: 'rowIndex',
          width: 65,
          align: 'center',
          customRender: function(t, r, index) {
            return parseInt(index) + 1
          }
        },
        { title: '刀具编号', dataIndex: 'cutterCode', width: 200, align: 'center' },
        { title: '刀具名称', dataIndex: 'cutterName', width: 100, align: 'center' },
        { title: '刀具简称', dataIndex: 'cutterType', width: 80, align: 'center' },
        { title: '刀具规格', dataIndex: 'cutterSpec', align: 'center' },
        { title: '额定寿命', dataIndex: 'lifetime', width: 150, align: 'center' },
        { title: '刀位', dataIndex: 'cutterSpacing', width: 50, align: 'center' },
        { title: '刀具数量', dataIndex: 'quantity', width: 80, align: 'center' },
        { title: '描述', dataIndex: 'description', width: 200, align: 'center' },
        { title: '操作', dataIndex: 'action', scopedSlots: { customRender: 'action' }, align: 'center', width: 150 }
      ],
      url: {
        list: '/nc/cutter/getByBusinessId',
        delete: '/nc/cutter/delete',
        exportXlsUrl: '/nc/cutter/exportXls',
        importExcelUrl: '/nc/cutter/importExcel',
        sendCutterUrl: '/nc/cutter/sendCutterUrl',
      }
    }
  },
  computed: {
    importExcelUrl: function() {
      return `${window._CONFIG['domianURL']}${this.url.importExcelUrl}`
    }
  },
  methods: {
    setQueryParamAndLoadData(pageNo = 1) {
      if (this.currentLevelInfo.classificationId_dictText==='nc'){
        const {docId,attributionType,attributionId} = this.currentLevelInfo
        this.queryParam = Object.assign({}, { docId:docId,attributionType:attributionType,attributionId:attributionId })
      }
      if (this.currentLevelInfo.deviceManagementId !== null && this.currentLevelInfo.deviceManagementId !== undefined){
        const {attributionType,id} = this.currentLevelInfo
        this.queryParam = Object.assign({}, {attributionType:attributionType,attributionId:id })
      }
      if (this.currentLevelInfo.id !== null && this.currentLevelInfo.type !== null && this.currentLevelInfo.type !== undefined && this.currentLevelInfo.id !== undefined){
        const { id, type } = this.currentLevelInfo
        this.queryParam = Object.assign({}, { attributionId: id, attributionType: type })
      }
      this.loadData(pageNo)
    },
    searchQuery(pageNo = 1) {
      if (this.currentLevelInfo.classificationId_dictText==='nc'){
        const {docId,attributionType,attributionId} = this.currentLevelInfo
        this.queryParam = Object.assign({}, { docId:docId,attributionType:attributionType,attributionId:attributionId })
      }
      if (this.currentLevelInfo.deviceManagementId !== null && this.currentLevelInfo.deviceManagementId !== undefined){
        const {attributionType,id} = this.currentLevelInfo
        this.queryParam = Object.assign({}, {attributionType:attributionType,attributionId:id })
      }
      if (this.currentLevelInfo.id !== null && this.currentLevelInfo.type !== null && this.currentLevelInfo.type !== undefined && this.currentLevelInfo.id !== undefined){
        const { id, type } = this.currentLevelInfo
        this.queryParam = Object.assign({}, { attributionId: id, attributionType: type })
      }
      this.loadData(pageNo)
    },
    handleAdd() {
      if (!this.$refs.cutterModalRef) return
      this.$refs.cutterModalRef.title = '添加刀具'
      this.$refs.cutterModalRef.disableSubmit = false
      this.$refs.cutterModalRef.handleCutterAdd()
    },
    /**
     * ç¼–辑表格行信息
     * @param record è¡¨æ ¼è¡Œä¿¡æ¯
     */
    handleEdit(record) {
      if (!this.$refs.cutterModalRef) return
      this.$refs.cutterModalRef.title = '编辑刀具信息'
      this.$refs.cutterModalRef.disableSubmit = false
      this.$refs.cutterModalRef.handleCutterEdit(record)
    },
    /**
     * æŸ¥çœ‹è¡¨æ ¼å®Œæ•´è¡Œä¿¡æ¯
     * @param record è¡¨æ ¼è¡Œä¿¡æ¯
     */
    handleDetail: function(record) {
      if (!this.$refs.cutterModalRef) return
      this.$refs.cutterModalRef.title = '刀具详情'
      this.$refs.cutterModalRef.disableSubmit = true
      this.$refs.cutterModalRef.handleCutterEdit(record)
    },
    /**
     * é€‰æ‹©åˆ€å…·
     */
    handleChoose(record){
      if (record.cutterName.match(/\d+(\.\d+)?/g) !== null) {
        record.cutterName = record.cutterName.match(/\d+(\.\d+)?/g)[0]
      }
      const param = {
        aliasLabel: record.cutterType,
        diameter: record.cutterName,
        cutterId: record.id
      }
      this.$refs.dncToolsSelectModal.open(param)
      this.$refs.dncToolsSelectModal.title = '选择刀具'
    },
    /**
     * å‘送刀具系统
     */
    handleSend(){
      const that = this
      const { docId,attributionId, attributionType } = this.currentLevelInfo
      that.$confirm({
        title: '提示',
        content: `确认发送刀具系统吗?`,
        okText: '确认',
        cancelText: '取消',
        onOk: () => {
          dncApi.sendToolsApi({ docId, attributionId, attributionType })
            .then(res => {
              if (res.success) {
                that.$notification.success({
                  message: '消息',
                  description: res.message
                })
              } else {
                that.$notification.error({
                  message: '消息',
                  description: res.message
                })
              }
            })
            .catch(err => {
              that.$notification.error({
                message: '消息',
                description: err.message
              })
            })
            .finally(() => {
              that.$destroyAll()
            })
        },
        onCancel: () => {
          that.$destroyAll()
        }
      })
    }
  }
}
</script>