1
李喆(开发组)
2025-08-11 9d5d3cacf6e5f70dca3f461123ee9a9466c96c79
src/views/basesetting/machine.vue
@@ -1,44 +1,66 @@
<template>
  <basic-container>
    <avue-crud
      :addBtn="false"
      :option="option"
      :table-loading="loading"
      :data="data"
      ref="crud"
      v-model:search="search"
      v-model:page="mypage"
      @search-change="searchChange"
      @search-reset="searchReset"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @on-load="onLoad"
    >
      <template #menu-left>
        <el-button type="primary" size="default" icon="el-icon-circle-plus" plain @click="handleExport">导出</el-button>
        <el-button type="primary" size="default" icon="el-icon-circle-plus" plain @click="handleView">导入</el-button>
        <!-- <el-button type="primary" size="default" icon="el-icon-circle-plus" plain @click="handleAdd">新增</el-button> -->
      </template>
      <template #menu="scope">
        <el-button type="primary" text size="default" icon="el-icon-upload" @click.stop="handleEdit(scope.row, scope.index)">编辑</el-button>
        <el-button type="primary" text size="default" icon="el-icon-upload" @click.stop="handleDel(scope.row, scope.index)">删除</el-button>
        <el-button type="primary" text size="default" icon="el-icon-upload" @click.stop="handleUp(scope.row, scope.index)">产生机床回传机构树</el-button>
      </template>
  <el-row>
    <el-col :span="5">
      <div class="box">
        <el-scrollbar>
          <basic-container>
            <avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick" />
          </basic-container>
        </el-scrollbar>
      </div>
    </el-col>
    <el-col :span="19">
      <basic-container>
        <avue-crud
          :addBtn="false"
          :option="option"
          :table-loading="loading"
          :data="data"
          ref="crud"
          v-model:search="search"
          v-model:page="mypage"
          @search-change="searchChange"
          @search-reset="searchReset"
          @current-change="currentChange"
          @size-change="sizeChange"
          @refresh-change="refreshChange"
          @on-load="onLoad"
        >
          <template #menu-left>
            <el-button type="primary" size="default" icon="el-icon-circle-plus" plain @click="handleExport">导出</el-button>
      <template #status="{ row }">
        <span>{{ row.status=="1"?"启用":"禁用" }}</span>
      </template>
    </avue-crud>
    <el-dialog :title="machineTitle" append-to-body v-model="editBox" width="60%">
      <avue-form ref="editFormModal1" :option="editFormModal" v-model="editForm" @submit="formSubmit" @resetForm="resetForm">
        <template #ownerDept="{}">
          <el-tree-select v-model="editForm.ownerDept" :data="organizationTreeList"/>
        </template>
      </avue-form>
    </el-dialog>
  </basic-container>
            <el-upload :show-file-list="false" class="upload-demo"
                action="/api/blade-mdm/machine/import"
                       :on-change="handleChange">
              <el-button type="primary" plain size="default">导入</el-button>
            </el-upload>
            <el-button type="primary" size="default" icon="el-icon-circle-plus" plain @click="handleAdd">新增</el-button>
          </template>
          <template #menu="scope">
            <el-button type="primary" text size="default" icon="el-icon-upload" @click.stop="handleEdit(scope.row, scope.index)">编辑</el-button>
            <el-button type="primary" text size="default" icon="el-icon-upload" @click.stop="handleDel(scope.row, scope.index)">删除</el-button>
            <el-button type="primary" text size="default" icon="el-icon-upload" @click.stop="handleUp(scope.row, scope.index)">产生机床回传机构树</el-button>
          </template>
          <template #status="{ row }">
            <span>{{ row.status=="1"?"启用":"禁用" }}</span>
          </template>
        </avue-crud>
        <el-dialog :title="machineTitle" append-to-body v-model="editBox" width="60%">
          <avue-form ref="editFormModal1" :option="editFormModal" v-model="editForm" @submit="formSubmit" @resetForm="resetForm">
            <template #ownerDept="{}">
              <el-tree-select v-model="editForm.ownerDept" :data="organizationTreeList" :props="treePropsConfig"/>
            </template>
          </avue-form>
        </el-dialog>
      </basic-container>
    </el-col>
  </el-row>
</template>
<script>
@@ -47,10 +69,43 @@
import NProgress from 'nprogress';
import { downloadXls } from '@/utils/util';
import 'nprogress/nprogress.css';
import { getDeptLazyTree } from '@/api/system/dept';
export default {
  data() {
    var that = this;
    return {
      treeOption: {
        nodeKey: 'id',
        lazy: true,
        treeLoad: function (node, resolve) {
          const parentId = node.level === 0 ? 0 : node.data.id;
          getDeptLazyTree(parentId).then(res => {
            resolve(
              res.data.data.map(item => {
                return {
                  ...item,
                  leaf: !item.hasChildren,
                };
              })
            );
          });
        },
        addBtn: false,
        menu: false,
        size: 'small',
        props: {
          labelText: '标题',
          label: 'title',
          value: 'value',
          children: 'children',
        },
      },
      treeData: [],
      treePropsConfig: {
        value:  'id',
        label: 'title',
        children: 'children'
      },
      organizationTreeList: [],
      machineTitle: "新增",
      isAdd: true,
@@ -80,7 +135,8 @@
            type: 'input',
            prop: 'keyword',
            search: true,
            hide: true
            hide: true,
            showColumn: false
          },
          {
            label: '机床编号',
@@ -133,6 +189,13 @@
            type: 'input',
            span: 12,
            dataType: 'string',
            rules: [
              {
                required: true,
                message: '请输入机床编号',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '机床型号',
@@ -140,6 +203,13 @@
            type: 'input',
            span: 12,
            dataType: 'string',
            rules: [
              {
                required: true,
                message: '请输入机床型号',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '机床类型',
@@ -150,7 +220,14 @@
            props: {
              label: 'dictValue',
              value: 'dictKey',
            }
            },
            rules: [
              {
                required: true,
                message: '请选择机床类型',
                trigger: 'change'
              }
            ]
          },
          {
            label: '所属机床组',
@@ -161,7 +238,14 @@
            props: {
              label: 'dictValue',
              value: 'dictKey',
            }
            },
            rules: [
              {
                required: true,
                message: '请选择所属机床组',
                trigger: 'change'
              }
            ]
          },
          {
            label: '操作员',
@@ -173,18 +257,19 @@
          {
            label: '所属组织',
            prop: 'ownerDept',
            span: 12
            type: 'tree',
            span: 12,
            rules: [
              {
                required: true,
                message: '请选择所属组织',
                trigger: 'click'
              }
            ]
          },
          {
            label: '生产商',
            prop: 'manufacturer',
            type: 'input',
            span: 12,
            dataType: 'string',
          },
          {
            label: '轮询时间(小时)',
            prop: 'pollingHours',
            type: 'input',
            span: 12,
            dataType: 'string',
@@ -237,6 +322,14 @@
    };
  },
  methods: {
    handleChange(a,b,c) {
      console.log(a,b,c);
    },
    nodeClick(data) {
      this.treeDeptId = data.id;
      this.mypage.current = 1;
      this.onLoad(this.page);
    },
    handleAdd() {
      this.machineTitle = "新增";
      this.isAdd = true;
@@ -331,22 +424,17 @@
        var url = '/blade-mdm/machine/update';
      }
      this.loading = true;
      axios({
        url: url,
        method: 'post',
        data: obj,
      }).then(
        res => {
          this.loading = false;
          this.$message({
            type: 'success',
            message: '操作成功!',
          });
      axios({url: url,method: 'post',data: obj}).then(res => {
        this.loading = false;
        if(res,res.data.success) {
          this.editBox = false;
          this.$message({type: 'success',message: '操作成功!'});
          this.onLoad();
          done();
        }else {
          this.$message({type: 'error',message: res.data.msg});
        }
      );
        done();
      });
    },
    handleView() {
@@ -369,28 +457,31 @@
      
    },
    onLoad() {
      this.loading = true;
      var obj = {
        keyword: this.search.keyword,
        machineGroupCode: this.search.machineGroupCode,
        current: this.mypage.current,
        size: this.mypage.size,
      }
      axios({
        url: '/blade-mdm/machine/page',
        method: 'get',
        date: obj,
      }).then(
        res => {
          const data = res.data.data;
          this.mypage.total = data.total;
          this.data = data.records;
          this.loading = false;
        },
        error => {
      this.$nextTick(()=> {
        this.loading = true;
        var obj = {
          keyword: this.search.keyword,
          machineGroupCode: this.search.machineGroupName,
          current: this.mypage.current,
          size: this.mypage.size,
          deptId: this.treeDeptId
        }
      );
        axios({
          url: '/blade-mdm/machine/page',
          method: 'get',
          params: obj,
        }).then(
          res => {
            const data = res.data.data;
            this.mypage.total = data.total;
            this.data = data.records;
            this.loading = false;
          },
          error => {
          }
        );
      })
    },
    traversalLabelValueToTree(tree) {  //遍历数组
      return tree.map(node => {
@@ -408,26 +499,19 @@
      });
    }
  },
  mounted() {
    //判断版本  0:涉密网,1:工控网;//工控网5个,涉密网4个
    // 工控网是/blade-mdm/system/dept/lazy-list
    // 涉密网是/blade-mdm/dept/lazy-list
    axios({url: '/blade-mdm/system/param/getValue?paramKey=networkType',method: 'get'}).then(res => {
        // if(res.data.data === "0") {
        //   var aurl = "/blade-mdm/dept/lazy-list";
        // }else {
        //   var aurl = "/blade-mdm/system/dept/lazy-list";
        // }
        var aurl = "/blade-mdm/dept/lazy-list";
        axios({url: aurl,method: 'get'}).then(resp => {
          this.organizationTreeList = this.traversalLabelValueToTree(resp.data.data);
        })
      }
    );
  mounted() {
    //所属组织 /api/blade-system/dept/tree
    axios({url: '/blade-system/dept/tree',method: 'get'}).then(resp => {
      this.organizationTreeList = this.traversalLabelValueToTree(resp.data.data);
    })
  }
};
</script>
<style lang="scss">
.upload-demo {
  display: inline-block;
  margin-left: 6px;
  margin-right: 6px;
}
</style>