yangys
2025-08-26 dd4e133fbe3402cb62d657491c44628280bb4f56
src/views/wel/shemi.vue
@@ -1,5 +1,6 @@
<template>
<template >
  <basic-container>
    <div class="norightmenu">
    <avue-crud
      :addBtn="false"
      :option="option"
@@ -17,25 +18,25 @@
    >
      <template #search>
        <el-row :gutter="24">
          <el-col :span="8" class="search-data-flex">
            <span class="search-data-title">程序状态:</span>
            <el-checkbox-group v-model="searchTreeData.programStatus">
          <el-col :span="6" class="search-data-flex">
            <span class="search-data-title w68">程序状态:</span>
            <el-checkbox-group v-model="searchTreeData.programStatus" class="marginR12">
              <el-checkbox value="1" label="试切" />
              <el-checkbox value="2" label="固化" />
              <el-checkbox value="3" label="偏离" />
            </el-checkbox-group>
          </el-col>
          <el-col :span="8" class="search-data-flex">
          <el-col :span="4" class="search-data-flex">
            <span class="search-data-title">零组件号:</span>
            <el-select v-model="searchTreeData.drawingNo" filterable remote reserve-keyword placeholder="零组件号" :remote-method="remoteMethod" :loading="searchLoading">
              <el-option v-for="item in drawingNoList" :key="item.value" :label="item.label" :value="item.value"/></el-select>
          </el-col>
          <el-col :span="8" class="search-data-flex">
            <span class="search-data-title">时间范围:</span>
            <el-date-picker v-model="searchTreeData.createTime" type="daterange" range-separator="To" start-placeholder="开始时间" end-placeholder="结束时间" :size="size" format="YYYY-MM-DD" value-format="YYYY-MM-DD" :disabled-date="disabledDate" @change="createTimeChange"/>
            <el-date-picker v-model="searchTreeData.createTime" type="daterange" start-placeholder="开始时间" end-placeholder="结束时间" :size="size" format="YYYY-MM-DD" value-format="YYYY-MM-DD"  @change="createTimeChange"/><!--:disabled-date="disabledDate" 不需要禁用日期-->
          </el-col>
          <el-col :span="8">
            <el-button type="primary" @click="searchTree"><el-icon class="el-icon--right" style="margin-right: 6px;"><Search /></el-icon>搜索</el-button>
          <el-col :span="6" class="search-data-flex">
            <el-button type="primary" @click="searchTree" :loading="treeSearchLoad"><el-icon class="el-icon--right" style="margin-right: 6px;"><Search /></el-icon>搜索</el-button>
            <el-button :icon="Delete" @click="setClearTree"><el-icon class="el-icon--right" style="margin-right: 6px;"><Delete /></el-icon>清空</el-button>
          </el-col>
        </el-row>
@@ -53,12 +54,14 @@
        <!-- <el-button :size="size" text v-if="row.nodeType == 70" icon="el-icon-pie-chart" type="primary" @click="upgrade(row)" placeholder="升版" title="升版"></el-button> -->
        <!-- 工控网才有 -->
        <!-- <el-button :size="size" text v-if="row.nodeType == 70" icon="el-icon-position" type="primary" @click="downsend(row)" placeholder="下发" title="下发"></el-button> -->
        <!-- 替换 -->
        <!-- 替换  v-if="permission.auto_dispatch"-->
        <el-button :size="size" text v-if="row.nodeType == 60 && row.parentIds.indexOf('0,1,')>-1" icon="el-icon-switch" type="primary" @click="replacement(row)" placeholder="替换" title="替换"></el-button>
        <el-button :size="size" text v-if="row.nodeType == 60 && row.parentIds.indexOf('0,2')>-1 && row.isLocked != 1" icon="el-icon-lock" type="primary" @click="locked(row,true)" placeholder="锁定" title="锁定"></el-button>
        <el-button :size="size" text v-if="row.nodeType == 60 && row.parentIds.indexOf('0,2')>-1 && row.isLocked == 1" icon="el-icon-unlock" type="primary" @click="locked(row,false)" placeholder="解锁" title="解锁"></el-button>
        <el-button :size="size" text v-if="permission.lock_button && row.nodeType == 60 && row.parentIds.indexOf('0,2')>-1 && row.isLocked != 1" icon="el-icon-lock" type="primary" @click="locked(row,true)" placeholder="锁定" title="锁定"></el-button>
        <el-button :size="size" text v-if="permission.lock_button && row.nodeType == 60 && row.parentIds.indexOf('0,2')>-1 && row.isLocked == 1" icon="el-icon-unlock" type="primary" @click="locked(row,false)" placeholder="解锁" title="解锁"></el-button>
      </template>
    </avue-crud>
  </div>
    <!-- 新增节点 -->
    <el-dialog :title="modalTitle" append-to-body v-model="modalBox">
      <avue-form :option="modalOption" v-model="modalForm" @submit="modalSubmit" @reset-change="modalCancel"/>
@@ -123,6 +126,7 @@
  data() {
    let rejectText = '驳回';//+this.row.categoryName;
    return {
      treeSearchLoad: false,
      drawingNoList: [],
      searchLoading: false,
      searchTreeData: {
@@ -507,6 +511,7 @@
    };
  },
  computed: {
    ...mapGetters(['userInfo', 'permission']),
    uploadmodalOption() {
      return {
        submitText: "保存",
@@ -645,6 +650,7 @@
  },
  methods: {
    disabledDate(time) {
      //不需要禁用日期
      // 获取当前日期
      const today = new Date();
      today.setHours(0, 0, 0, 0); // 设置为当天开始时间
@@ -654,10 +660,11 @@
      threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3);
      threeMonthsAgo.setHours(0, 0, 0, 0);
      
      // 禁用今天之后的日期和三个月前的日期之前的日期
      return time.getTime() > today.getTime() || time.getTime() < threeMonthsAgo.getTime();
      // 禁用今天之后的日期 即可
      return time.getTime() > today.getTime() || time.getTime() < threeMonthsAgo.getTime();//
    },
    createTimeChange(value) {
      console.log('createTimeChange',value)
      this.searchTreeData.createTimeBegin = value[0];
      this.searchTreeData.createTimeEnd = value[1];
    },
@@ -825,7 +832,7 @@
      return null; // 未找到
    },
    highlightTargetRow() {  // 高亮目标行
      const targetName = this.search.name;
      const targetName = this.searchTreeData.drawingNo;
      this.targetRow = this.findTargetRow(this.treeData, targetName);
      if (this.targetRow && this.$refs.crud) {
        this.$refs.crud.setCurrentRow(this.targetRow); // 高亮目标行
@@ -834,14 +841,16 @@
    searchTree() {
      if(this.searchTreeData.programStatus.length == 0) return;
      if(this.searchTreeData.drawingNo == "") return;
      this.treeSearchLoad = true;
      this.searchTreeData.status = this.searchTreeData.programStatus.join();
      axios({
        url: '/blade-mdm/program/node/search-list2',
        method: 'get',
        params: this.searchTreeData,
        params: this.searchTreeData
      }).then(res => {
        this.treeSearchLoad = false;
        if(res.data.data.length == 0) return;
        this.option.defaultExpandAll = true;
        this.option.defaultExpandAll = true; 
        this.treeData = this.removeHasChildren(res.data.data);
        this.$nextTick(() => {
          this.highlightTargetRow();  // 设置当前行高亮
@@ -1227,9 +1236,30 @@
    },
    getPre() {
      alert(1)
    }
    },
    subtractMonths(date, months) {
        const newDate = new Date(date);
        const currentMonth = newDate.getMonth();
        newDate.setMonth(currentMonth - months);
        return newDate;
    },
    getBeginDate() {
        var beginDate = this.subtractMonths(new Date(),3);
        return `${beginDate.getFullYear()}-${(beginDate.getMonth() + 1).toString().padStart(2, '0')}-${beginDate.getDate().toString().padStart(2, '0')}`;
    },
    getToday() {
      let today = new Date();
      return `${today.getFullYear()}-${(today.getMonth() + 1).toString().padStart(2, '0')}-${today.getDate().toString().padStart(2, '0')}`;
    },
  },
  mounted() {
    let b = this.getBeginDate()
    //this.defaultTimeRange = [b,this.getToday()];
    let defTimeRange = [b,this.getToday()];
    this.searchTreeData.createTime = defTimeRange
    this.createTimeChange(defTimeRange)
    this.tabsOption = this.tabsOption1;
    //获取nodetype
    axios({url: '/blade-system/dict-biz/dictionary?code=nc_node_type',method: 'get'}).then(res => {
@@ -1241,6 +1271,9 @@
</script>
<style lang="scss">
.norightmenu .avue-crud .avue-crud__header {
            display: none !important;
      }
.delFile {
  color: red;
  margin-left: 12px;
@@ -1291,10 +1324,16 @@
    font-size: 12px;
    margin-right: 8px;
    display: inline-block;
    width: 68px;
    width: 95px;
  }
  .search-data-flex {
    display: flex!important;
    align-items: center;
  }
  .w68 {
    width: 68px;
  }
  .marginR12 label {
    margin-right: 12px;
  }
</style>