loulijun2021
2022-09-02 90ef969b6f22908736a1d885d87418751dba2e46
1.gantt  demo实现备份
已重命名25个文件
已添加2个文件
已修改5个文件
已删除1个文件
6403 ■■■■■ 文件已修改
src/components/TestLeft/index.vue 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/.babelrc 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/.gitignore 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/LICENSE 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/README.md 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/index.js 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/assets/block.png 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/components/blocks/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/components/dynamic-render.js 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/components/left-bar/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/components/mark-line/current-time.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/components/mark-line/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/components/time-line/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/gantt.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/gantt.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/index.js 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/utils/debounce.js 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/utils/gtUtils.js 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/utils/throttle.js 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/utils/timeLineUtils.js 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/lib/utils/tool.js 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/package.json 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/test/gtUtils.test.js 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/test/timeblock.test.js 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-gantt-chart/webpack.config.js 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/gantt_back/gantt_all_back.vue 1854 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/gantt_back/gantt_back.vue 1785 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/gantt_back/index1_back.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sbgl/byjl.vue 828 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sbgl/djjl.vue 1853 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/sckbg.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zlgl/gxjy.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/TestLeft/index.vue
ÎļþÒÑɾ³ý
src/components/v-gantt-chart/.babelrc
src/components/v-gantt-chart/.gitignore
src/components/v-gantt-chart/LICENSE
src/components/v-gantt-chart/README.md
src/components/v-gantt-chart/index.js
src/components/v-gantt-chart/lib/assets/block.png

src/components/v-gantt-chart/lib/components/blocks/index.vue
src/components/v-gantt-chart/lib/components/dynamic-render.js
src/components/v-gantt-chart/lib/components/left-bar/index.vue
src/components/v-gantt-chart/lib/components/mark-line/current-time.vue
src/components/v-gantt-chart/lib/components/mark-line/index.vue
src/components/v-gantt-chart/lib/components/time-line/index.vue
src/components/v-gantt-chart/lib/gantt.scss
src/components/v-gantt-chart/lib/gantt.vue
src/components/v-gantt-chart/lib/index.js
src/components/v-gantt-chart/lib/utils/debounce.js
src/components/v-gantt-chart/lib/utils/gtUtils.js
src/components/v-gantt-chart/lib/utils/throttle.js
src/components/v-gantt-chart/lib/utils/timeLineUtils.js
src/components/v-gantt-chart/lib/utils/tool.js
src/components/v-gantt-chart/package.json
src/components/v-gantt-chart/test/gtUtils.test.js
src/components/v-gantt-chart/test/timeblock.test.js
src/components/v-gantt-chart/webpack.config.js
src/main.js
@@ -60,6 +60,9 @@
import clearTabIndex from './utils/clearTabIndex.js' // åˆ é™¤el-tooltip tabindex
clearTabIndex.install(Vue)
import vGanttChart from './components/v-gantt-chart/index' // å¼•用修改过的gantt
Vue.use(vGanttChart)
new Vue({
  el: '#app',
  router,
src/views/gantt_back/gantt_all_back.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1854 @@
<template>
  <div id="app">
    <div class="app-container">
      <el-tabs>
        <el-form ref="form" :model="form" :rules="rulescx" label-width="100px" size="medium">
          <el-row>
            <el-col :span="6" :offset="1">
              <el-form-item prop="WorkShop" label="生产车间">
                <el-select v-model="form.WorkShop" style="width:257px" filterable>
                  <el-option
                    v-for="item in list"
                    :key="item.CODE"
                    :label="item.NAME"
                    :value="item.CODE"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6" :offset="1">
              <el-form-item prop="PartNumber" label="产品编码">
                <el-input v-model="form.PartNumber" placeholder="请输入" style="width:257px" />
              </el-form-item>
            </el-col>
            <el-col :span="5" :offset="1">
              <el-form-item prop="PartName" label="产品名称">
                <el-input v-model="form.PartName" placeholder="请输入" style="width:257px" />
              </el-form-item>
            </el-col>
            <el-col :span="3" :offset="1">
              <el-button type="text" class="marginLeft rg color" @click="resetFormcx()">重置</el-button>
              <el-button
                class="filter-item marginLeft button_style rg"
                size="medium"
                icon="el-icon-search"
                @click="Search()"
              >查询
              </el-button>
            </el-col>
          </el-row>
        </el-form>
      </el-tabs>
      <el-table
        class="table"
        :data="mn_data"
        :header-cell-style="{background:'#f5f5f5'}"
        height="280"
        @sort-change="sortChange"
      >
        <el-table-column width="34" fixed>
          <template slot-scope="scope">
            <el-radio
              v-model="radio"
              :label="scope.$index"
              class="textRadio"
              @change.native="getCurrentRow(scope.row)"
            >&nbsp;
            </el-radio>
          </template>
        </el-table-column>
        <el-table-column
          label="序号"
          prop="AdvaScheSeq"
          width="80"
          sortable="custom"
          :sort-orders="['ascending', 'descending']"
        />
        <el-table-column
          label="优先级"
          prop="AdvaSchePiroQue"
          sortable="custom"
          :sort-orders="['ascending', 'descending']"
        >
          <template slot-scope="scope">
            <div v-if="scope.row.AdvaSchePiroQue == '正常'">
              <span class="icon_true" />
              {{ scope.row.AdvaSchePiroQue }}
            </div>
            <div v-if="scope.row.AdvaSchePiroQue == '紧急'">
              <span class="icon_gz" />
              {{ scope.row.AdvaSchePiroQue }}
            </div>
            <div v-if="scope.row.AdvaSchePiroQue == '特急'">
              <span class="icon_ty" />
              {{ scope.row.AdvaSchePiroQue }}
            </div>
          </template>
        </el-table-column>
        <el-table-column
          label="生产车间"
          prop="AdvaScheWorkShop"
          sortable="custom"
          :sort-orders="['ascending', 'descending']"
        />
        <el-table-column
          label="工单编号"
          prop="AdvaScheWorkCode"
          sortable="custom"
          :sort-orders="['ascending', 'descending']"
        />
        <el-table-column
          label="产品编码"
          prop="AdvaSchePartNumber"
          sortable="custom"
          :sort-orders="['ascending', 'descending']"
        />
        <el-table-column
          label="产品名称"
          prop="AdvaSchePartName"
          width="150"
          sortable="custom"
          :sort-orders="['ascending', 'descending']"
        />
        <el-table-column
          label="产品规格"
          prop="AdvaSchePartSpec"
          sortable="custom"
          :sort-orders="['ascending', 'descending']"
        />
        <el-table-column
          label="数量"
          prop="AdvaScheQty"
          width="80"
          sortable="custom"
          :sort-orders="['ascending', 'descending']"
        />
        <el-table-column
          label="要求交付时间"
          prop="AdvaScheEndDate"
          width="200"
          sortable="custom"
          :sort-orders="['ascending', 'descending']"
        >
          <template slot-scope="scope">{{ scope.row.AdvaScheEndDate }}</template>
        </el-table-column>
        <!-- <el-table-column  label="结束日期" prop="AdvaScheEndDate">
        </el-table-column>-->
        <el-table-column label="交付状态" prop="AdvaScheSpeed" sortable="custom" :sort-orders="['ascending', 'descending']">
          <template slot-scope="scope">
            <div v-if="scope.row.Flag == 'Y' && scope.row.AdvaScheStus != 'NEW'">
              <span class="icon_true" /> æ­£å¸¸
            </div>
            <div v-if="scope.row.Flag == 'N' && scope.row.AdvaScheStus != 'NEW'">
              <span v-if="scope.row.Flag == 'N'" class="icon_ty" />延期
            </div>
          </template>
        </el-table-column>
        <el-table-column
          label="排程工序"
          prop="AdvaScheBotProcName"
          sortable="custom"
          :sort-orders="['ascending', 'descending']"
          width="160"
        />
        <el-table-column label="计划排程时间" width="200" sortable="custom" :sort-orders="['ascending', 'descending']">
          <template
            slot-scope="scope"
          >{{ scope.row.AdvaSchePCStartDate }} ~ {{ scope.row.AdvaSchePCEndDate }}
          </template>
        </el-table-column>
      </el-table>
      <!--      <pagination-view-->
      <!--        :currentPage="form.page"-->
      <!--        :total="total"-->
      <!--        @size-change="sizeChange"-->
      <!--        @current-change="pageChange"-->
      <!--      ></pagination-view>-->
    </div>
    <el-dialog title="查看" :visible.sync="showDialog" width="60%">
      <el-table class="table" :data="look_data" :header-cell-style="{background:'#f5f5f5'}">
        <el-table-column label="序号" prop="AdvaTaskSeq" width="80" />
        <el-table-column label="工单编号" prop="AdvaTaskWork" />
        <el-table-column label="工单状态" prop="AdvaTaskStatus" />
        <el-table-column label="产品编码" prop="AdvaTaskPartNumber" />
        <el-table-column label="开始时间" prop="AdvaTaskStartDate" width="160" />
        <el-table-column label="结束时间" prop="AdvaTaskEndDate" width="160" />
        <el-table-column label="生产数量" prop="AdvaTaskQty" />
        <el-table-column label="生产工序" prop="AdvaTaskBotProcName" />
      </el-table>
      <div style="overflow: hidden">
        <!--        <pagination-view-->
        <!--          :currentPage="search_from.page"-->
        <!--          :total="look_total"-->
        <!--          @size-change="sizeChange_look"-->
        <!--          @current-change="pageChange_look"-->
        <!--        ></pagination-view>-->
      </div>
    </el-dialog>
    <el-tabs v-show="show">
      <el-row style="margin-bottom:20px">
        <!-- <el-col :span="2">
       <el-input v-model="form.Seach"  @keyup.enter.native="SeachKey" placeholder="请输入关键词" size="small"></el-input>
        </el-col>-->
        <el-col :span="7" :offset="1">
          <span class="t_size" style="margin-left:7px">排程日期</span>
          <el-date-picker
            v-model="value1"
            type="daterange"
            range-separator="~"
            format="yyyy-MM-dd"
            value-format="yyyy-MM-dd"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
            size="small"
            :picker-options="pickerOptions1"
            @change="change_time"
          />
        </el-col>
        <el-col :span="3">
          <span class="t_size">排程方式</span>
          <el-select v-model="types" size="small" style="width:120px" @change="changeTypes">
            <el-option value="N" label="设备优先" />
            <el-option value="Y" label="时间优先" />
          </el-select>
        </el-col>
        <el-col :span="3" :offset="1">
          <div style="height:32px;">
            <span class="t_size">时间刻度</span>
            <select id="scale" v-model.number="scale">
              <option v-for="i in scaleList" :key="i">{{ i }}</option>
            </select>
            <span class="t_size">分钟</span>
          </div>
        </el-col>
        <el-col :span="3">
          <div style="height:32px;">
            <span class="t_size">换型时间</span>
            <el-input
              id="scale"
              v-model="times"
              type="number"
              size="mini"
              style="display:inline-block;width:80px;"
              @change="no_zero"
            />
            <span class="t_size">分钟</span>
          </div>
        </el-col>
        <el-col :span="3">
          <div style="height:32px;line-height: 28px;">
            <span class="t_size">预排进度</span>
            <span>
              <span style="text-decoration:underline;">{{ real_num }}</span> /
              <span style="text-decoration:underline">{{ meter }}</span>
            </span>
          </div>
        </el-col>
        <el-col :span="3">
          <el-button
            type="primary"
            size="mini"
            icon="el-icon-document-remove"
            style="margin-left:20px;"
            @click="click_schedule"
          >预排
          </el-button>
          <el-button
            type="primary"
            size="mini"
            icon="el-icon-document-checked"
            @click="click_yes"
          >提交
          </el-button>
          <p />
        </el-col>
      </el-row>
      <el-row />
    </el-tabs>
    <div v-show="show" class="container">
      <v-gantt-chart
        :start-time="time_data[0]"
        :end-time="time_data[1]"
        :cell-width="cellWidth"
        :cell-height="cellHeight"
        :time-lines="timeLines"
        :title-height="titleHeight"
        :scale="scale"
        :title-width="titleWidth"
        show-current-time
        :hide-header="hideHeader"
        :data-key="dataKey"
        :array-keys="arrayKeys"
        :scroll-to-postion="positionA"
        :datas="bm_data"
        @scrollLeft="scrollLeftA"
      >
        <!-- <template v-slot:block="{data,item}"> -->
        <template slot="block" slot-scope="{data,item}">
          <Test
            :data="data"
            :update-time-lines="updateTimeLines"
            :cell-height="cellHeight"
            :current-time="currentTime"
            :item="item"
          />
        </template>
        <template slot="left" slot-scope="{data}">
          <div class="name">
            <div class="carId">
              <el-checkbox
                v-model="data.status"
                style="margin-right:5px;"
                @change="click_box(data)"
              />
              {{ data.id }} {{ data.name }}
            </div>
            <div class="speed">
              <el-tooltip class="item" effect="dark" content="查看" placement="top">
                <el-button type="text" size="mini" @click="look(data)">
                  <i class="el-icon-document size i-color" />
                </el-button>
              </el-tooltip>
            </div>
          </div>
        </template>
        <template slot="title">
          <span class="tc">工位列表</span>
          <el-checkbox v-model="all_status" class="box_style" @change="changeLift()" />
          <input v-model.number="cellWidth" type="range" min="20" max="100" class="box_styles">
        </template>
      </v-gantt-chart>
    </div>
  </div>
</template>
<script>
import Test from '@/components/Test'
// import PaginationView from '@/components/PaginationView'
// import TestLeft from '@/components/TestLeft'
// import { mockDatas } from './index1.js'
import dayjs from 'dayjs'
// import automaticScheduling from '@/api/automaticScheduling'
const scaleList = `30,60,240,360`.split(',').map(n => parseInt(n))
const timeList = `0,30,60,120,240,480`.split(',').map(n => parseInt(n))
// import { mockDatas } from './index1.js'
export default {
  components: { Test },
  data() {
    return {
      show: false,
      pickerOptions1: {
        disabledDate(time) {
          return time.getTime() <= Date.now() - 24 * 60 * 60 * 1000
        }
      },
      real_num: 0,
      keep_data: [],
      all_status: true,
      look_data: [],
      look_total: 0,
      cl_name: '',
      cl_code: '',
      work_order: '',
      false_arr: [],
      ckeckVal: true,
      AdvaScheUom: '',
      list: [],
      form: {
        WorkShop: '',
        PartNumber: '',
        PartName: '',
        rows: 10,
        page: 1
      },
      showDialog: false,
      time_data: [],
      forms: {
        WorkCode: '',
        WorkShop: '',
        PartNumber: '',
        BotProceCode: '',
        StartTime: '',
        EndTime: ''
      },
      click_one: 0,
      datasC: [],
      radio: '',
      value1: '',
      types: 'N',
      no: false,
      total: 0,
      mn_data: [],
      bm_data: [],
      facility_data: [],
      end_start: '',
      timeLines: [
        {
          time: dayjs()
            .add(2, 'hour')
            .toString()
        },
        {
          time: dayjs()
            .add(5, 'hour')
            .toString(),
          color: '#747e80'
        }
      ],
      formUpdata: {
        WorkCode: '',
        BotProceCode: '',
        json: []
      },
      currentTime: dayjs(),
      startTime: dayjs()
        .subtract(5, 'hour')
        .toString(),
      endTime: dayjs()
        .add(2, 'day')
        .add(2, 'hour')
        .toString(),
      cellWidth: 50,
      cellHeight: 30,
      titleHeight: 40,
      titleWidth: 250,
      scale: 60,
      datasNum: 100,
      datasA: [],
      datasB: mockDatas(100),
      dataKey: 'id',
      times: 0,
      timeList: timeList,
      scaleList: scaleList,
      scrollToTime: dayjs()
        .add(1, 'day')
        .toString(),
      scrollToPostion: { x: 10000, y: 10000 },
      hideHeader: false,
      arrayKeys: ['gtArray', 'error'],
      scrollToY: 0,
      positionB: {},
      positionA: {},
      meter: 0, // èŠ‚æ‹
      title_list: [],
      imp_id: '',
      submit_flag: false,
      search_from: {
        page: 1,
        rows: 10,
        WorkTime: '',
        BotProceName: ''
      }
    }
  },
  watch: {
    datasNum(newV) {
      this.datasA = mockDatas(newV)
      this.datasB = mockDatas(newV)
    },
    scrollToY(val) {
      this.positionA = { x: val }
    }
  },
  created: function() {
    this.AdvancedSchedulingSearch()
    this.AdvancedSchedulingWorkShop()
  },
  methods: {
    AdvancedSchedulingWorkShop() {
      automaticScheduling.AdvancedSchedulingWorkShop().then(res => {
        this.list = res
      })
    },
    Search() {
      this.form.page = 1
      this.show = false
      this.radio = ''
      this.AdvancedSchedulingSearch()
    },
    resetFormcx() {
      this.$nextTick(() => {
        this.$refs.form.resetFields()
      })
    },
    no_zero() {
      if (this.times < 0) {
        this.times = 0
      }
    },
    sortChange(column, prop, order) {
      this.radio = '';
      (this.form.prop = column.prop), (this.form.order = column.order)
      this.show = false
      this.AdvancedSchedulingSearch()
    },
    SeachKey() {
      this.form.page = 1
      this.AdvancedSchedulingSearch()
      this.show = false
      this.radio = ''
    },
    changeLift() {
      if (this.all_status) {
        this.false_arr = []
        this.OnclickAdvancedSchedulingDevice()
      } else {
        for (const i in this.bm_data) {
          this.bm_data[i].status = false
          this.bm_data[i].gtArray = []
        }
        for (const i in this.facility_data) {
          this.facility_data[i].gtArray = []
        }
      }
    },
    changeTypes() {
      this.OnclickAdvancedSchedulingDevice()
    },
    change_time() {
      this.time_data[0] = this.value1[0] + ' 00:00'
      this.time_data[1] = this.value1[1] + ' 23:59'
      this.forms.StartTime = this.value1[0]
      this.forms.EndTime = this.value1[1]
      this.OnclickAdvancedSchedulingDevice()
    },
    click_box(val) {
      if (!val.status) {
        for (const i in this.facility_data) {
          const new_arr = []
          for (const j in this.facility_data[i].gtArray) {
            if (this.facility_data[i].gtArray[j].id == val.id) {
            } else {
              new_arr.push(this.facility_data[i].gtArray[j])
            }
          }
          this.facility_data[i].gtArray = new_arr
        }
      } else {
        this.false_arr = []
        for (const i in this.bm_data) {
          if (!this.bm_data[i].status) {
            this.false_arr.push(this.bm_data[i].id)
          }
        }
        this.OnclickAdvancedSchedulingDevice()
      }
      if (!val.status) {
        for (const i in this.bm_data) {
          if (!this.bm_data[i].status) {
            this.bm_data[i].gtArray = []
          }
        }
      } else {
        this.false_arr = []
        for (const i in this.bm_data) {
          if (!this.bm_data[i].status) {
            this.false_arr.push(this.bm_data[i].id)
          }
        }
        this.OnclickAdvancedSchedulingDevice()
      }
      for (const i in this.bm_data) {
        const arr = []
        for (const j in this.bm_data[i].gtArray) {
          if (this.bm_data[i].gtArray[j].type != 'schedule') {
            arr.push(this.bm_data[i].gtArray[j])
          }
        }
        this.bm_data[i].gtArray = arr
      }
      this.real_num = 0
    },
    look(data) {
      this.showDialog = true
      this.search_from.DeviceCode = data.id
      this.AdvancedSchedulingEquipmenTask()
    },
    AdvancedSchedulingEquipmenTask() {
      automaticScheduling
        .AdvancedSchedulingEquipmenTask(this.search_from)
        .then(res => {
          this.look_data = res.rows
          this.look_total = res.total
        })
    },
    sizeChange_look(val) {
      this.search_from.rows = val
      this.AdvancedSchedulingEquipmenTask()
    },
    pageChange_look(val) {
      this.search_from.page = val
      this.AdvancedSchedulingEquipmenTask()
    },
    sizeChange(val) {
      this.form.rows = val
      this.show = false
      this.radio = ''
      this.AdvancedSchedulingSearch()
    },
    pageChange(val) {
      this.form.page = val
      this.show = false
      this.radio = ''
      this.AdvancedSchedulingSearch()
    },
    // æŸ¥è¯¢
    AdvancedSchedulingSearch() {
      automaticScheduling.AdvancedSchedulingSearch(this.form).then(res => {
        this.mn_data = res.rows
        this.total = res.total
        this.oneClick()
      })
    },
    // ç‚¹å‡»å¸¦å‡ºæ•°æ®
    OnclickAdvancedSchedulingDevice() {
      this.facility_top()
      automaticScheduling
        .OnclickAdvancedSchedulingDevice(this.forms)
        .then(res => {
          if (res.rus.message) {
            this.$message({
              showClose: true,
              type: 'error',
              message: res.rus.message
            })
          }
          this.submit_flag = false
          const list = []
          this.time_all = res
          const cont = res.Cont
          this.real_num = 0
          for (const i in this.time_all.rows[0].children) {
            const obj = {
              id: '',
              name: '',
              AdvaDevicRhythm: '',
              status: true,
              colorPair: {
                dark: 'rgb(83, 186, 241,0.8)',
                light: 'rgb(83, 186, 241,0.1)',
                light_capacity: 'rgb(209,239,237,0.8)',
                h_schedule: ' rgb(100,255,192,0.8)',
                scheduleing: 'rgb(20,182,231,0.8)'
              },
              gtArray: []
            }
            obj.id = this.time_all.rows[0].children[i].AdvaDevicNumber
            obj.name = this.time_all.rows[0].children[i].AdvaDevicName
            obj.AdvaDevicRhythm = this.time_all.rows[0].children[
              i
            ].AdvaDevicRhythm
            list.push(obj)
          }
          for (const i in this.time_all.rows) {
            for (const j in this.time_all.rows[i].children) {
              if (this.time_all.rows[i].children[j].OneStartDate != '') {
                this.time_all.rows[i].children[
                  j
                ].OneStartDate = this.time_all.rows[i].children[
                  j
                ].OneStartDate.split('~')
                this.time_all.rows[i].children[j].OneStartDate[0] =
                  this.time_all.rows[i].YearDate +
                  ' ' +
                  this.time_all.rows[i].children[j].OneStartDate[0]
                this.time_all.rows[i].children[j].OneStartDate[1] =
                  this.time_all.rows[i].YearDate +
                  ' ' +
                  this.time_all.rows[i].children[j].OneStartDate[1]
              }
              if (this.time_all.rows[i].children[j].TwoStartDate != '') {
                this.time_all.rows[i].children[
                  j
                ].TwoStartDate = this.time_all.rows[i].children[
                  j
                ].TwoStartDate.split('~')
                this.time_all.rows[i].children[j].TwoStartDate[0] =
                  this.time_all.rows[i].YearDate +
                  ' ' +
                  this.time_all.rows[i].children[j].TwoStartDate[0]
                this.time_all.rows[i].children[j].TwoStartDate[1] =
                  this.time_all.rows[i].YearDate +
                  ' ' +
                  this.time_all.rows[i].children[j].TwoStartDate[1]
              }
              if (this.time_all.rows[i].children[j].ThreeStartDate != '') {
                this.time_all.rows[i].children[
                  j
                ].ThreeStartDate = this.time_all.rows[i].children[
                  j
                ].ThreeStartDate.split('~')
                this.time_all.rows[i].children[j].ThreeStartDate[0] =
                  this.time_all.rows[i].YearDate +
                  ' ' +
                  this.time_all.rows[i].children[j].ThreeStartDate[0]
                this.time_all.rows[i].children[j].ThreeStartDate[1] =
                  this.time_all.rows[i].YearDate +
                  ' ' +
                  this.time_all.rows[i].children[j].ThreeStartDate[1]
              }
              if (this.time_all.rows[i].children[j].FourStartDate != '') {
                this.time_all.rows[i].children[
                  j
                ].FourStartDate = this.time_all.rows[i].children[
                  j
                ].FourStartDate.split('~')
                this.time_all.rows[i].children[j].FourStartDate[0] =
                  this.time_all.rows[i].YearDate +
                  ' ' +
                  this.time_all.rows[i].children[j].FourStartDate[0]
                this.time_all.rows[i].children[j].FourStartDate[1] =
                  this.time_all.rows[i].YearDate +
                  ' ' +
                  this.time_all.rows[i].children[j].FourStartDate[1]
              }
              if (this.time_all.rows[i].children[j].FiveStartDate != '') {
                this.time_all.rows[i].children[
                  j
                ].FiveStartDate = this.time_all.rows[i].children[
                  j
                ].FiveStartDate.split('~')
                this.time_all.rows[i].children[j].FiveStartDate[0] =
                  this.time_all.rows[i].YearDate +
                  ' ' +
                  this.time_all.rows[i].children[j].FiveStartDate[0]
                this.time_all.rows[i].children[j].FiveStartDate[1] =
                  this.time_all.rows[i].YearDate +
                  ' ' +
                  this.time_all.rows[i].children[j].FiveStartDate[1]
              }
            }
          }
          // ç»„合新的结构
          const newList = []
          for (const i in this.time_all.rows) {
            for (const j in this.time_all.rows[i].children) {
              if (this.time_all.rows[i].children[j].OneStartDate != '') {
                const data1 = {
                  id: '',
                  start: '',
                  end: '',
                  mod: ''
                }
                data1.id = this.time_all.rows[i].children[j].AdvaDevicNumber
                data1.start = this.time_all.rows[i].children[j].OneStartDate[0]
                data1.end = this.time_all.rows[i].children[j].OneStartDate[1]
                data1.mod =
                  (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
                  100
                newList.push(data1)
              }
              if (this.time_all.rows[i].children[j].TwoStartDate != '') {
                const data2 = {
                  id: '',
                  start: '',
                  end: '',
                  mod: ''
                }
                data2.id = this.time_all.rows[i].children[j].AdvaDevicNumber
                data2.start = this.time_all.rows[i].children[j].TwoStartDate[0]
                data2.end = this.time_all.rows[i].children[j].TwoStartDate[1]
                data2.mod =
                  (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
                  100
                newList.push(data2)
              }
              if (this.time_all.rows[i].children[j].ThreeStartDate != '') {
                const data3 = {
                  id: '',
                  start: '',
                  end: '',
                  mod: ''
                }
                data3.id = this.time_all.rows[i].children[j].AdvaDevicNumber
                data3.start = this.time_all.rows[i].children[
                  j
                ].ThreeStartDate[0]
                data3.end = this.time_all.rows[i].children[j].ThreeStartDate[1]
                data3.mod =
                  (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
                  100
                newList.push(data3)
              }
              if (this.time_all.rows[i].children[j].FourStartDate != '') {
                const data4 = {
                  id: '',
                  start: '',
                  end: '',
                  mod: ''
                }
                data4.id = this.time_all.rows[i].children[j].AdvaDevicNumber
                data4.start = this.time_all.rows[i].children[
                  j
                ].FourStartDate[0]
                data4.end = this.time_all.rows[i].children[j].FourStartDate[1]
                data4.mod =
                  (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
                  100
                newList.push(data4)
              }
              if (this.time_all.rows[i].children[j].FiveStartDate != '') {
                const data5 = {
                  id: '',
                  start: '',
                  end: '',
                  mod: ''
                }
                data5.id = this.time_all.rows[i].children[j].AdvaDevicNumber
                data5.start = this.time_all.rows[i].children[
                  j
                ].FiveStartDate[0]
                data5.end = this.time_all.rows[i].children[j].FiveStartDate[1]
                data5.mod =
                  (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
                  100
                newList.push(data5)
              }
            }
          }
          for (const i in list) {
            this.pushTiem(newList, list[i].id, list[i].gtArray)
          }
          this.bm_data = list
          const _this = this
          if (cont != '') {
            for (const i in cont) {
              for (const j in this.bm_data) {
                if (this.bm_data[j].id == cont[i].EQP_CODE) {
                  const data = {
                    id: cont[i].EQP_CODE,
                    number: cont[i].ALLOC_QTY,
                    cl_name: cont[i].PART_NAME,
                    cl_code: this.cl_code,
                    work_order: cont[i].WO_CODE,
                    STATUS: _this.AdvaScheUom,
                    start: cont[i].TIME_START,
                    end: cont[i].TIME_END,
                    type: cont[i].STATUS == 'S' ? 'h_schedule' : 'bm_schedule'
                  }
                  this.bm_data[j].flag = 'isCont'
                  this.bm_data[j].gtArray.unshift(data)
                }
              }
            }
          }
          if (this.false_arr != '') {
            for (const j in this.bm_data) {
              if (this.false_arr.indexOf(this.bm_data[j].id) >= 0) {
                this.bm_data[j].gtArray = []
                this.bm_data[j].status = false
              }
            }
          }
        })
    },
    // æ¢åž‹æ—¶é—´
    MinutesTest(time) {
      var sdate1 = new Date(time)
      sdate1.setMinutes(sdate1.getMinutes() + this.times * 1)
      var now =
        sdate1.getFullYear() +
        '-' +
        this.add_one(sdate1.getMonth()) +
        '-' +
        sdate1.getDate() +
        ' ' +
        sdate1.getHours() +
        ':' +
        sdate1.getMinutes() +
        ':' +
        sdate1.getSeconds()
      return now
    },
    // +1
    add_one(date) {
      return parseInt(date) + 1
    },
    // æ’入产能时间段
    pushTiem(newList, id, arr) {
      for (const i in newList) {
        if (newList[i].id == id) {
          const data = {
            start: newList[i].start,
            end: newList[i].end,
            id: newList[i].id,
            mod: newList[i].mod,
            type: 'capacity'
          }
          arr.push(data)
        }
      }
    },
    getNowFormatDate() {
      var date = new Date()
      var seperator1 = '-'
      var year = date.getFullYear()
      var month = date.getMonth() + 1
      // var strDate = date.getDate()+1;
      var strDate = date.getDate()
      if (month >= 1 && month <= 9) {
        month = '0' + month
      }
      if (strDate >= 0 && strDate <= 9) {
        strDate = '0' + strDate
      }
      var currentdate = year + seperator1 + month + seperator1 + strDate
      return currentdate
    },
    getCurrentRow(row) {
      // this.show =true
      this.meter = row.AdvaScheQty * 1 - row.AdvaScheYPQty * 1 // å¯ä»¥åšä¸ªæ•°
      this.value1 = []
      this.cl_name = row.AdvaSchePartName
      this.cl_code = row.AdvaSchePartNumber
      this.AdvaScheUom = row.AdvaScheUom
      this.work_order = row.AdvaScheWorkCode
      this.value1.push(this.getNowFormatDate())
      this.value1.push(row.AdvaScheEndDate)
      if (this.value1 != '') {
        this.time_data[0] = this.value1[0] + ' 00:00'
        this.time_data[1] = this.value1[1] + ' 23:59'
      }
      this.forms.WorkCode = row.AdvaScheWorkCode
      this.forms.WorkShop = row.AdvaScheWorkShopid
      this.forms.PartNumber = row.AdvaSchePartNumber
      this.forms.BotProceCode = row.AdvaScheBotProcid
      this.forms.StartTime = this.getNowFormatDate()
      this.forms.EndTime = row.AdvaScheEndDate
      this.OnclickAdvancedSchedulingDevice()
      this.formUpdata.WorkCode = row.AdvaScheWorkCode
      this.formUpdata.BotProceCode = row.AdvaScheBotProcid
      this.search_from.WorkTime =
        this.getNowFormatDate() + '~' + row.AdvaScheEndDate
      this.search_from.BotProceName = row.AdvaScheBotProcName
    },
    // æäº¤æŽ’程
    click_yes() {
      if (this.submit_flag) {
        this.$message({
          showClose: true,
          type: 'error',
          message: '数量未排完,请设置产能时间'
        })
      } else {
        const list = [] // æäº¤æ•°ç»„
        for (const i in this.bm_data) {
          const arr = []
          for (const j in this.bm_data[i].gtArray) {
            if (this.bm_data[i].gtArray[j].type == 'schedule') {
              arr.push(this.bm_data[i].gtArray[j])
            }
          }
          if (arr != '') {
            for (const i in arr) {
              const data = {
                AlreDevicNumber: '',
                AlreStartDate: '',
                AlreEndDate: '',
                AlreQty: ''
              }
              data.AlreDevicNumber = arr[i].id
              data.AlreStartDate = arr[i].start
              data.AlreEndDate = arr[i].end
              data.AlreQty = arr[i].number
              list.push(data)
            }
          }
        }
        // æŽ’程相同设备获取开始时间 ç»“束时间 æ•°é‡çš„æ€»å’Œ
        // è¿‡æ»¤
        let updata = []
        for (const i in list) {
          if (list[i].AlreStartDate != '') {
            updata.push(list[i])
          }
        }
        updata = JSON.stringify(updata)
        this.formUpdata.json = updata
        if (list == '') {
          this.$message({
            showClose: true,
            message: '请先预排',
            type: 'error'
          })
          return false
        }
        automaticScheduling
          .SubmitAlreadyScheduling(this.formUpdata)
          .then(res => {
            if (res.statusCode == 300) {
              this.$message({
                showClose: true,
                message: res.message,
                type: 'error'
              })
            } else {
              this.$message({
                showClose: true,
                message: res.message,
                type: 'success'
              })
            }
            this.meter = 0
            this.real_num = 0
            this.OnclickAdvancedSchedulingDevice()
            this.AdvancedSchedulingSearch()
          })
      }
    },
    // æ—¶é—´/设备优先排程
    click_schedule() {
      const timestamp = new Date().toLocaleDateString()
      if (new Date(this.value1[0]) < new Date(timestamp)) {
        this.$message({
          showClose: true,
          type: 'error',
          message: '排程时间不可以小于当前时间'
        })
        return false
      }
      this.nitialize()
      // è®¾å¤‡ä¼˜å…ˆ
      if (this.bm_data != '' && this.types == 'N') {
        this.fun_time()
        this.change_num(this.bm_data)
      } else if (this.facility_data != '' && this.types == 'Y') {
        this.time_nitalize()
        this.fun_facility()
        this.dataTransition()
        this.change_num(this.bm_data)
      }
    },
    // æ‰‹åŠ¨è¿‡æ»¤æ‰€æœ‰æ—¶é—´å·²æŽ’ç¨‹
    time_nitalize() {
      for (const i in this.facility_data) {
        this.facility_data[i].gtArray = this.facility_data[i].gtArray.filter(item => item.type != 'schedule')
      }
    },
    // æ‰‹åŠ¨è¿‡æ»¤æ‰€æœ‰è®¾å¤‡å·²æŽ’ç¨‹
    nitialize() {
      for (const i in this.bm_data) {
        const newArr = []
        for (const j in this.bm_data[i].gtArray) {
          if (this.bm_data[i].gtArray[j].type != 'schedule') {
            newArr.push(this.bm_data[i].gtArray[j])
          }
        }
        this.bm_data[i].gtArray = newArr
      }
    },
    // ç»™æŽ’程最后一个修改数量
    change_num(arr) {
      this.real_num = 0 // çœŸå®žå·²æŽ’数量
      let num = 0 // å–整已排数量
      const arr_num = [] // å·²æŽ’数据
      let mend_num = 0
      const len = 0
      for (const i in arr) {
        for (const j in arr[i].gtArray) {
          if (arr[i].gtArray[j].type == 'schedule') {
            arr_num.unshift(arr[i].gtArray[j])
          }
        }
      }
      for (const n in arr_num) {
        this.real_num += arr_num[n].real_number
        num += arr_num[n].number * 1
      }
      this.real_num = Math.ceil(this.real_num)
      const y10 = this.meter - this.real_num
      if (y10 <= 10) {
        this.real_num = this.meter
        mend_num = this.meter - num
      } else {
      }
      if (this.real_num * 1 == this.meter * 1) {
        // mend_num =  this.meter - num
      } else {
        this.submit_flag = true
      }
      for (const i in this.bm_data) {
        for (const j in this.bm_data[i].gtArray) {
          if (
            this.bm_data[i].gtArray[j].type == 'schedule' &&
            this.bm_data[i].gtArray[j].end_num
          ) {
            this.bm_data[i].gtArray[j].number =
              this.bm_data[i].gtArray[j].number * 1 + mend_num
          }
        }
      }
    },
    fun_time() {
      let all_num = this.meter
      const all_time = []
      let flag1 = 0
      const mod = this.bm_data[0].mod
      //  let nowTime = this.bm_data[0].AdvaDevicRhythm*all_num
      for (const i in this.bm_data) {
        let end_arr = [] // å·²æŽ’程的数组
        let nend_arr = [] // å¾…排程的数组
        const add_arr = [] // å·²æŽ’程的数组
        let capacity_arr = [] // è¦æŽ’程的数组
        this.bm_data[i].gtArray.sort((a, b) => new Date(a.end).getTime() - new Date(b.end).getTime())
        // let capacity_end = ''
        end_arr = this.bm_data[i].gtArray.filter(item => item.type == 'h_schedule')
        nend_arr = this.bm_data[i].gtArray.filter(item => item.type == 'capacity')
        if (end_arr && end_arr.length > 0) {
          capacity_arr = nend_arr.map(item => {
            // æŽ’除掉已经排程的存在hshedule,start,end都相等的情况
            const schedule = end_arr.filter(schedule => {
              return new Date(item.start).getTime() <= new Date(schedule.start).getTime() &&
                new Date(item.end).getTime() > new Date(schedule.end).getTime()
            })
            if (schedule && schedule.length > 0) {
              item.start = this.MinutesTest(schedule[0]['end'])
            }
            const schedule1 = end_arr.filter(schedule => {
              return new Date(item.start).getTime() == new Date(schedule.start).getTime() &&
                new Date(item.end).getTime() == new Date(schedule.end).getTime()
            })
            if (schedule1 && schedule1.length > 0) {
              item.capacity = false
            }
            return item
          }).filter(item => item.capacity != false)
        } else {
          capacity_arr = nend_arr
        }
        const id_obj = {
          id: '',
          start_time: ''
        }
        if (end_arr != '') {
          (id_obj.id = end_arr[0].id), (id_obj.start_time = end_arr[0].end)
        }
        for (const w in capacity_arr) {
          let end_time = ''
          let mistiming = ''
          const data = {
            id: capacity_arr[w].id,
            start: '',
            end: '',
            type: 'schedule',
            cl_name: this.cl_name,
            cl_code: this.cl_code,
            work_order: this.work_order,
            number: 0,
            real_number: 0
          }
          if (
            id_obj.start_time != '' &&
            flag1 == 0 &&
            new Date(id_obj.start_time) >= new Date(capacity_arr[w].start)
          ) {
            data.start = this.MinutesTest(id_obj.start_time)
            flag1 = 1
          } else {
            data.start = capacity_arr[w].start
          }
          let nowTime =
            (this.bm_data[i].AdvaDevicRhythm * all_num) / capacity_arr[w].mod
          end_time = this.formSeconds(nowTime, data.start, capacity_arr[w].mod) // æ€»å…±çš„结束时间
          data.end = end_time
          mistiming = this.formTime(
            end_time,
            capacity_arr[w].end,
            capacity_arr[w].mod
          ) // æ€»å…±çš„结束时间-当前的结束时间 = å‰©ä¸‹å¤šä¹…æ—¶é—´
          if (mistiming >= 0) {
            console.log(
              new Date(data.end) - new Date(data.start),
              capacity_arr[w].mod,
              this.bm_data[i].AdvaDevicRhythm,
              '阿斯顿发斯蒂芬'
            )
            data.number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              this.bm_data[i].AdvaDevicRhythm /
              1000
            data.real_number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              this.bm_data[i].AdvaDevicRhythm /
              1000
            data.number = data.number.toFixed(0)
            data.end_num = true
            if (new Date(data.start) >= new Date(data.end)) {
            } else {
              this.bm_data[i].gtArray.push(data)
            }
            return false
          } else {
            data.end = capacity_arr[w].end
            data.number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              this.bm_data[i].AdvaDevicRhythm /
              1000
            data.real_number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              this.bm_data[i].AdvaDevicRhythm /
              1000
            data.number = data.number.toFixed(0)
            nowTime =
              (all_num - data.real_number) * this.bm_data[i].AdvaDevicRhythm
            all_num = all_num - data.real_number
            if (new Date(data.start) >= new Date(data.end)) {
            } else {
              this.bm_data[i].gtArray.push(data)
            }
          }
        }
      }
    },
    // è®¾å¤‡æŽ’程方法
    fun_facility() {
      // æŽ’除未勾选项
      for (const i in this.facility_data) {
        const newArr = []
        for (const j in this.facility_data[i].gtArray) {
          if (this.false_arr.indexOf(this.facility_data[i].gtArray[j].id) < 0) {
            newArr.push(this.facility_data[i].gtArray[j])
          }
        }
        this.facility_data[i].gtArray = newArr
      }
      let all_num = this.meter
      const all_time = []
      const flag1 = 0
      // let nowTime = this.facility_data[0].AdvaDevicRhythm*all_num  //数量OK
      for (const i in this.facility_data) {
        let end_arr = []
        let nend_arr = [] // æŽ’程的数组
        const add_arr = [] // å·²æŽ’程的数组
        let capacity_arr = [] // è¦æŽ’程的数组
        // this.facility_data[i].gtArray.sort((a,b) => new Date(a.end).getTime() - new Date(b.end).getTime())
        // let capacity_end = ''
        end_arr = this.facility_data[i].gtArray.filter(item => item.type == 'h_schedule')
        nend_arr = this.facility_data[i].gtArray.filter(item => item.type == 'capacity')
        console.log(nend_arr)
        capacity_arr = JSON.parse(JSON.stringify(nend_arr))
        end_arr.forEach(item => {
          for (let i = 0; i < capacity_arr.length; i++) {
            if (new Date(capacity_arr[i].start).getTime() === new Date(item.start).getTime()) {
              console.log(i, capacity_arr[i], '哇哈哈')
              capacity_arr.splice(i, 1)
              break
            }
          }
        })
        console.log(capacity_arr, '大西瓜')
        if (!capacity_arr || capacity_arr.length == 0) break
        // const firstCapacity = capacity_arr[0]
        const schedule_arr = end_arr.filter(item => {
          const remain = nend_arr.some(sitem => {
            return new Date(sitem.start).getTime() === new Date(item.start).getTime() &&
              new Date(item.end).getTime() < new Date(sitem.end).getTime()
          })
          return remain
        })
        console.log(schedule_arr)
        if (schedule_arr && schedule_arr.length > 0) {
          const scheduleCan = schedule_arr.map(item => {
            const capcity = nend_arr.filter(sitem => {
              return new Date(sitem.start).getTime() === new Date(item.start).getTime() &&
                new Date(item.end).getTime() < new Date(sitem.end).getTime()
            })[0]
            console.log('capacity', capcity)
            capcity.start = this.MinutesTest(item.end)
            return capcity
          })
          const newSchedule = JSON.parse(JSON.stringify(scheduleCan))
          capacity_arr = newSchedule.concat(capacity_arr)
        }
        console.log(schedule_arr)
        console.log('可排程数组', capacity_arr)
        const id_obj = {}
        if (end_arr != '') {
          (id_obj.id = end_arr[0].id), (id_obj.start_time = end_arr[0].end)
        }
        for (const w in capacity_arr) {
          let end_time
          let mistiming
          const data = {
            id: capacity_arr[w].id,
            start: '',
            end: '',
            type: 'schedule',
            cl_name: this.cl_name,
            cl_code: this.cl_code,
            work_order: this.work_order,
            number: 0,
            real_number: 0
          }
          //  console.log(id_obj.start_time)
          if (
            id_obj &&
            new Date(id_obj.start_time).getTime() >=
            new Date(capacity_arr[w].start).getTime()
          ) {
            if (data.id == id_obj.id) {
              data.start = this.MinutesTest(id_obj.start_time)
              //  flag1 =1
            } else {
              data.start = capacity_arr[w].start
              //  console.log(data.start)
              //  flag1 =1
            }
          } else {
            data.start = capacity_arr[w].start
          }
          // let nowTime = this.facility_data[0].AdvaDevicRhythm*all_num
          let nowTime =
            (capacity_arr[w].rhythm * all_num) / capacity_arr[w].mod
          end_time = this.formSeconds(nowTime, data.start)
          data.end = end_time
          mistiming = this.formTime(end_time, capacity_arr[w].end)
          if (mistiming >= 0) {
            data.number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              capacity_arr[w].rhythm /
              1000
            data.real_number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              capacity_arr[w].rhythm /
              1000
            data.number = data.number.toFixed(0)
            data.end_num = true
            if (new Date(data.start) >= new Date(data.end)) {
            } else {
              this.facility_data[i].gtArray.push(data)
            }
            return false
          } else {
            data.end = capacity_arr[w].end
            data.number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              capacity_arr[w].rhythm /
              1000
            data.real_number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              capacity_arr[w].rhythm /
              1000
            data.number = data.number.toFixed(0)
            nowTime = (all_num - data.real_number) * capacity_arr[w].rhythm
            all_num = all_num - data.real_number
            //  nowTime = mistiming * -1
            if (new Date(data.start) >= new Date(data.end)) {
            } else {
              this.facility_data[i].gtArray.push(data)
            }
          }
        }
      }
    },
    // ç»™è®¾å¤‡è½¬æ¢æ ¼å¼
    dataTransition() {
      this.bm_data = []
      const data = this.facility_data
      const all = []
      const list = this.title_list
      for (const i in data) {
        for (const j in data[i].gtArray) {
          all.push(data[i].gtArray[j])
        }
      }
      for (const i in list) {
        list[i].gtArray = []
        this.pushTiemsss(all, list[i].id, list[i].gtArray)
      }
      for (const n in list) {
        if (list[n].gtArray.length == 0) {
          list[n].status = false
        }
      }
      // console.log(list)
      this.bm_data = list
    },
    // æ’入产能时间段
    pushTiemsss(newList, id, arr) {
      for (const i in newList) {
        if (newList[i].id == id) {
          arr.push(newList[i])
        }
      }
    },
    // è®¾å¤‡ä¼˜å…ˆ
    facility_top() {
      automaticScheduling
        .OnclickAdvancedSchedulingDevice(this.forms)
        .then(res => {
          this.show = true
          const data = res.rows
          const cont = res.Cont
          this.title_list = []
          for (const i in data[0].children) {
            const obj = {
              id: '',
              name: '',
              status: true,
              AdvaDevicRhythm: '',
              // mod:'',
              colorPair: {
                dark: 'rgb(83, 186, 241,0.8)',
                light: 'rgb(83, 186, 241,0.1)',
                light_capacity: 'rgb(209,239,237,0.8)',
                h_schedule: ' rgb(100,255,192,0.8)',
                scheduleing: 'rgb(20,182,231,0.8)'
              },
              gtArray: []
            }
            obj.id = data[0].children[i].AdvaDevicNumber
            obj.name = data[0].children[i].AdvaDevicName
            obj.AdvaDevicRhythm = data[0].children[i].AdvaDevicRhythm
            // obj.mod =data[0].children[i].AdvaDevicCropMob *1
            this.title_list.push(obj)
          }
          for (const i in data) {
            for (const j in data[i].children) {
              if (data[i].children[j].OneStartDate != '') {
                data[i].children[j].OneStartDate = data[i].children[
                  j
                ].OneStartDate.split('~')
                data[i].children[j].OneStartDate[0] =
                  data[i].YearDate + ' ' + data[i].children[j].OneStartDate[0]
                data[i].children[j].OneStartDate[1] =
                  data[i].YearDate + ' ' + data[i].children[j].OneStartDate[1]
              }
              if (data[i].children[j].TwoStartDate != '') {
                data[i].children[j].TwoStartDate = data[i].children[
                  j
                ].TwoStartDate.split('~')
                data[i].children[j].TwoStartDate[0] =
                  data[i].YearDate + ' ' + data[i].children[j].TwoStartDate[0]
                data[i].children[j].TwoStartDate[1] =
                  data[i].YearDate + ' ' + data[i].children[j].TwoStartDate[1]
              }
              if (data[i].children[j].ThreeStartDate != '') {
                data[i].children[j].ThreeStartDate = data[i].children[
                  j
                ].ThreeStartDate.split('~')
                data[i].children[j].ThreeStartDate[0] =
                  data[i].YearDate +
                  ' ' +
                  data[i].children[j].ThreeStartDate[0]
                data[i].children[j].ThreeStartDate[1] =
                  data[i].YearDate +
                  ' ' +
                  data[i].children[j].ThreeStartDate[1]
              }
              if (data[i].children[j].FourStartDate != '') {
                data[i].children[j].FourStartDate = data[i].children[
                  j
                ].FourStartDate.split('~')
                data[i].children[j].FourStartDate[0] =
                  data[i].YearDate + ' ' + data[i].children[j].FourStartDate[0]
                data[i].children[j].FourStartDate[1] =
                  data[i].YearDate + ' ' + data[i].children[j].FourStartDate[1]
              }
              if (data[i].children[j].FiveStartDate != '') {
                data[i].children[j].FiveStartDate = data[i].children[
                  j
                ].FiveStartDate.split('~')
                data[i].children[j].FiveStartDate[0] =
                  data[i].YearDate + ' ' + data[i].children[j].FiveStartDate[0]
                data[i].children[j].FiveStartDate[1] =
                  data[i].YearDate + ' ' + data[i].children[j].FiveStartDate[1]
              }
            }
          }
          // æ›´æ”¹æ ¼å¼
          this.facility_data = []
          for (const i in data) {
            const time = {
              date: data[i].YearDate,
              AdvaDevicRhythm: '',
              gtArray: []
            }
            if (data[i].children != '') {
              time.AdvaDevicRhythm = data[i].children[0].AdvaDevicRhythm
            }
            for (const j in data[i].children) {
              if (data[i].children[j].OneStartDate != '') {
                const icu1 = {
                  name: data[i].children[j].AdvaDevicName,
                  id: data[i].children[j].AdvaDevicNumber,
                  type: 'capacity',
                  rhythm: data[i].children[j].AdvaDevicRhythm,
                  start: data[i].children[j].OneStartDate[0],
                  end: data[i].children[j].OneStartDate[1],
                  mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
                }
                time.gtArray.push(icu1)
              }
              if (data[i].children[j].TwoStartDate != '') {
                const icu2 = {
                  name: data[i].children[j].AdvaDevicName,
                  id: data[i].children[j].AdvaDevicNumber,
                  type: 'capacity',
                  rhythm: data[i].children[j].AdvaDevicRhythm,
                  start: data[i].children[j].TwoStartDate[0],
                  end: data[i].children[j].TwoStartDate[1],
                  mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
                }
                time.gtArray.push(icu2)
              }
              if (data[i].children[j].ThreeStartDate != '') {
                const icu3 = {
                  name: data[i].children[j].AdvaDevicName,
                  id: data[i].children[j].AdvaDevicNumber,
                  type: 'capacity',
                  rhythm: data[i].children[j].AdvaDevicRhythm,
                  start: data[i].children[j].ThreeStartDate[0],
                  end: data[i].children[j].ThreeStartDate[1],
                  mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
                }
                time.gtArray.push(icu3)
              }
              if (data[i].children[j].FourStartDate != '') {
                const icu4 = {
                  name: data[i].children[j].AdvaDevicName,
                  id: data[i].children[j].AdvaDevicNumber,
                  type: 'capacity',
                  rhythm: data[i].children[j].AdvaDevicRhythm,
                  start: data[i].children[j].FourStartDate[0],
                  end: data[i].children[j].FourStartDate[1],
                  mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
                }
                time.gtArray.push(icu4)
              }
              if (data[i].children[j].FiveStartDate != '') {
                const icu5 = {
                  name: data[i].children[j].AdvaDevicName,
                  id: data[i].children[j].AdvaDevicNumber,
                  type: 'capacity',
                  rhythm: data[i].children[j].AdvaDevicRhythm,
                  start: data[i].children[j].FiveStartDate[0],
                  end: data[i].children[j].FiveStartDate[1],
                  mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
                }
                time.gtArray.push(icu5)
              }
            }
            this.facility_data.push(time)
          }
          if (cont != '') {
            for (const i in cont) {
              const date_time = cont[i].TIME_START.split(' ')
              const cont_date = date_time[0]
              for (const j in this.facility_data) {
                const data = {
                  id: cont[i].EQP_CODE,
                  date: cont_date,
                  number: cont[i].ALLOC_QTY,
                  cl_name: cont[i].PART_NAME,
                  cl_code: this.cl_code,
                  work_order: cont[i].WO_CODE,
                  start: cont[i].TIME_START,
                  end: cont[i].TIME_END,
                  type: 'h_schedule'
                }
                if (this.facility_data[j].date == data.date) {
                  this.facility_data[j].gtArray.unshift(data)
                }
              }
            }
          }
        })
    },
    // æŽ’程方法
    formSeconds(s1, start, mod) {
      const nowData = new Date(start)
      // ç®—出当前排程的结束时间
      return this.transitionTime(
        new Date(nowData.setSeconds(nowData.getSeconds() + s1))
      )
    },
    // è½¬åŒ–标准时间
    transitionTime(time) {
      const d = new Date(time)
      return (
        d.getFullYear() +
        '-' +
        (d.getMonth() + 1) +
        '-' +
        d.getDate() +
        ' ' +
        d.getHours() +
        ':' +
        d.getMinutes() +
        ':' +
        d.getSeconds()
      )
    },
    // æ—¶é—´æ¯”较
    formTime(d1, d2, mod) {
      // d1 æŽ’除结束时间  d2 å½“前产能结束时间
      const time1 = new Date(d1)
      const time2 = new Date(d2)
      return parseInt(time2 - time1) / 1000
    },
    formatSeconds(value) {
      var secondTime = parseInt(value) // ç§’
      var minuteTime = 0 // åˆ†
      var hourTime = 0 // å°æ—¶
      if (secondTime > 60) {
        // å¦‚果秒数大于60,将秒数转换成整数
        // èŽ·å–åˆ†é’Ÿï¼Œé™¤ä»¥60取整数,得到整数分钟
        minuteTime = parseInt(secondTime / 60)
        // èŽ·å–ç§’æ•°ï¼Œç§’æ•°å–ä½˜ï¼Œå¾—åˆ°æ•´æ•°ç§’æ•°
        secondTime = parseInt(secondTime % 60)
        // å¦‚果分钟大于60,将分钟转换成小时
        if (minuteTime > 60) {
          // èŽ·å–å°æ—¶ï¼ŒèŽ·å–åˆ†é’Ÿé™¤ä»¥60,得到整数小时
          hourTime = parseInt(minuteTime / 60)
          // èŽ·å–å°æ—¶åŽå–ä½˜çš„åˆ†ï¼ŒèŽ·å–åˆ†é’Ÿé™¤ä»¥60取佘的分
          minuteTime = parseInt(minuteTime % 60)
        }
      }
      var result = '' + parseInt(secondTime) + ''
      if (minuteTime > 0) {
        result = '' + parseInt(minuteTime) + ':' + result
      }
      if (hourTime > 0) {
        result = '' + parseInt(hourTime) + ':' + result
      }
      return result
    },
    updateTimeLines(timeA, timeB) {
      this.timeLines = [
        {
          time: timeA
        },
        {
          time: timeB,
          color: '#747e80'
        }
      ]
    },
    scrollLeftA(val) {
      this.positionB = { x: val }
    },
    scrollLeftB(val) {
      this.positionA = { x: val }
    },
    // è®¾ç½®åˆå§‹åŒ–数据
    oneClick() {
      // this.getCurrentRow(this.mn_data[0])
    }
  }
}
</script>
<style scoped>
body {
  font: 12px;
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}
.box_style {
  position: relative;
  top: 40px;
  left: -75px;
}
.box_styles {
  position: relative;
  top: 40px;
  left: 0;
}
#app {
  display: flex;
  flex-direction: column;
  padding: 0 10px;
  /* height: calc(100vh - 100px); */
}
label {
  margin-left: 10px;
}
input {
  width: 40px;
  height: 20px;
  vertical-align: middle;
}
input[type="range"] {
  width: 100px;
}
.top-bar {
  /* height: 30px; */
  margin-bottom: 20px;
}
.container {
  display: flex;
  flex-direction: column;
  flex: 1;
}
.main-footer {
  /* height: 30px; */
}
.ib {
  display: inline-block;
}
.w250 {
  width: 250px;
}
.el-slider {
  width: 100px;
}
.tc {
  text-align: center;
}
.name {
  display: flex;
  box-sizing: border-box;
  overflow: hidden;
  height: 100%;
  width: 100%;
  padding: 0 5px 0 0;
  border-radius: 8px 0 0 8px;
  align-items: center;
}
.colorBar {
  width: 10px;
  height: 100%;
}
.carId {
  flex: 1;
}
.tc {
  color: #909399;
  font-size: 14px;
}
.type {
  padding: 0 5px 0 0;
  font-size: 1.2rem;
}
.t_size {
  font-size: 14px;
}
.icon_true {
  height: 8px;
  display: inline-block;
  width: 8px;
  background: #00a79d;
  margin-right: 7px;
  border-radius: 15px;
}
.icon_ty {
  height: 8px;
  display: inline-block;
  width: 8px;
  background: red;
  margin-right: 7px;
  border-radius: 15px;
}
.icon_gz {
  height: 8px;
  display: inline-block;
  width: 8px;
  background: yellow;
  margin-right: 7px;
  border-radius: 15px;
}
/* .el-col-offset-1 {
    margin-left: 0.5% !important;
} */
.marginLeft {
  margin-left: 15px;
}
.button_style {
  background: #00a79d;
  color: #ffff;
  border-color: #00a79d;
}
.rg {
  float: right;
}
.color {
  color: #909399;
}
</style>
src/views/gantt_back/gantt_back.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1785 @@
<template>
  <div id="app">
    <el-tabs style="margin: 30px">
      <el-row style="margin-bottom:20px">
        <el-col :span="7" :offset="1">
          <span class="t_size" style="margin-left:7px">排程日期</span>
          <el-date-picker
            v-model="value1"
            type="daterange"
            range-separator="~"
            format="yyyy-MM-dd"
            value-format="yyyy-MM-dd"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
            size="small"
            :picker-options="pickerOptions1"
            @change="change_time"
          />
        </el-col>
        <el-col :span="3">
          <span class="t_size">排程方式</span>
          <el-select v-model="types" size="small" style="width:120px" @change="changeTypes">
            <el-option value="N" label="设备优先" />
            <el-option value="Y" label="时间优先" />
          </el-select>
        </el-col>
        <el-col :span="3" :offset="1">
          <div style="height:32px;">
            <span class="t_size">时间刻度</span>
            <select id="scale" v-model.number="scale">
              <option v-for="i in scaleList" :key="i">{{ i }}</option>
            </select>
            <span class="t_size">分钟</span>
          </div>
        </el-col>
        <el-col :span="3">
          <div style="height:32px;">
            <span class="t_size">换型时间</span>
            <el-input
              id="scale"
              v-model="times"
              type="number"
              size="mini"
              style="display:inline-block;width:80px;"
              @change="no_zero"
            />
            <span class="t_size">分钟</span>
          </div>
        </el-col>
        <el-col :span="3">
          <div style="height:32px;line-height: 28px;">
            <span class="t_size">预排进度</span>
            <span>
              <span style="text-decoration:underline;">{{ real_num }}</span> /
              <span style="text-decoration:underline">{{ meter }}</span>
            </span>
          </div>
        </el-col>
        <el-col :span="3">
          <el-button
            type="primary"
            size="mini"
            icon="el-icon-document-remove"
            style="margin-left:20px;"
            @click="click_schedule"
          >预排
          </el-button>
          <el-button
            type="primary"
            size="mini"
            icon="el-icon-document-checked"
            @click="click_yes"
          >提交
          </el-button>
          <p />
        </el-col>
      </el-row>
      <el-row />
    </el-tabs>
    <div class="container" style="margin: 30px;">
      <v-gantt-chart
        :start-time="time_data[0]"
        :end-time="time_data[1]"
        :cell-width="cellWidth"
        :cell-height="cellHeight"
        :time-lines="timeLines"
        :title-height="titleHeight"
        :scale="scale"
        :title-width="titleWidth"
        show-current-time
        :hide-header="hideHeader"
        :data-key="dataKey"
        :array-keys="arrayKeys"
        :scroll-to-postion="positionA"
        :datas="bm_data"
        @scrollLeft="scrollLeftA"
      >
        <!-- <template v-slot:block="{data,item}"> -->
        <template slot="block" slot-scope="{data,item}">
          <Test
            :data="data"
            :update-time-lines="updateTimeLines"
            :cell-height="cellHeight"
            :current-time="currentTime"
            :item="item"
          />
        </template>
        <template slot="left" slot-scope="{data}">
          <div class="name">
            <div class="carId">
              <el-checkbox
                v-model="data.status"
                style="margin-right:5px;"
                @change="click_box(data)"
              />
              {{ data.id }} {{ data.name }}
            </div>
            <div class="speed">
              <el-tooltip class="item" effect="dark" content="查看" placement="top">
                <el-button type="text" size="mini" @click="look(data)">
                  <i class="el-icon-document size i-color" />
                </el-button>
              </el-tooltip>
            </div>
          </div>
        </template>
        <template slot="title">
          <span class="tc">工位列表</span>
          <el-checkbox v-model="all_status" class="box_style" @change="changeLift()" />
          <input v-model.number="cellWidth" type="range" min="20" max="100" class="box_styles">
        </template>
      </v-gantt-chart>
    </div>
  </div>
</template>
<script>
import Test from '@/components/Test'
// import PaginationView from '@/components/PaginationView'
// import TestLeft from '@/components/TestLeft'
// import { mockDatas } from './index1.js'
import dayjs from 'dayjs'
// import automaticScheduling from '@/api/automaticScheduling'
const scaleList = `30,60,240,360`.split(',').map(n => parseInt(n))
const timeList = `0,30,60,120,240,480`.split(',').map(n => parseInt(n))
export default {
  components: { Test },
  data() {
    return {
      show: false,
      pickerOptions1: {
        disabledDate(time) {
          return time.getTime() <= Date.now() - 24 * 60 * 60 * 1000
        }
      },
      real_num: 0,
      keep_data: [],
      all_status: true,
      look_data: [],
      look_total: 0,
      cl_name: '',
      cl_code: '',
      work_order: '',
      false_arr: [],
      ckeckVal: true,
      AdvaScheUom: '',
      list: [],
      form: {
        WorkShop: '',
        PartNumber: '',
        PartName: '',
        rows: 10,
        page: 1
      },
      showDialog: false,
      time_data: [],
      forms: {
        WorkCode: '',
        WorkShop: '',
        PartNumber: '',
        BotProceCode: '',
        StartTime: '',
        EndTime: ''
      },
      click_one: 0,
      datasC: [],
      radio: '',
      value1: '',
      types: 'N',
      no: false,
      total: 0,
      mn_data: [],
      bm_data: [],
      facility_data: [],
      end_start: '',
      timeLines: [
        {
          time: dayjs()
            .add(2, 'hour')
            .toString()
        },
        {
          time: dayjs()
            .add(5, 'hour')
            .toString(),
          color: '#747e80'
        }
      ],
      formUpdata: {
        WorkCode: '',
        BotProceCode: '',
        json: []
      },
      currentTime: dayjs(),
      startTime: dayjs()
        .subtract(5, 'hour')
        .toString(),
      endTime: dayjs()
        .add(2, 'day')
        .add(2, 'hour')
        .toString(),
      cellWidth: 50,
      cellHeight: 30,
      titleHeight: 40,
      titleWidth: 250,
      scale: 60,
      datasNum: 100,
      datasA: [],
      // datasB: mockDatas(100),
      dataKey: 'id',
      times: 0,
      timeList: timeList,
      scaleList: scaleList,
      scrollToTime: dayjs()
        .add(1, 'day')
        .toString(),
      scrollToPostion: { x: 10000, y: 10000 },
      hideHeader: false,
      arrayKeys: ['gtArray', 'error'],
      scrollToY: 0,
      positionB: {},
      positionA: {},
      meter: 0, // èŠ‚æ‹
      title_list: [],
      imp_id: '',
      submit_flag: false,
      search_from: {
        page: 1,
        rows: 10,
        WorkTime: '',
        BotProceName: ''
      },
      testValue: {
        'rus': {
          'statusCode': '',
          'message': '',
          'MOD_S': '',
          'MAR_S': '',
          'EQP_S': '',
          'CUT_S': '',
          'FIXT_S': '',
          'HouseNumber': '',
          'navTabId': '',
          'dialogid': '',
          'rel': '',
          'dt': null,
          'list': {},
          'callbackType': '',
          'forwardUrl': ''
        },
        'rows': [
          {
            'YearDate': '2022-09-01',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          },
          {
            'YearDate': '2022-09-02',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          },
          {
            'YearDate': '2022-09-03',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          },
          {
            'YearDate': '2022-09-04',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          },
          {
            'YearDate': '2022-09-05',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          },
          {
            'YearDate': '2022-09-06',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          }
        ],
        'Cont': null
      }
    }
  },
  watch: {
    datasNum(newV) {
      // this.datasA = mockDatas(newV)
      // this.datasB = mockDatas(newV)
    },
    scrollToY(val) {
      this.positionA = { x: val }
    }
  },
  created() {
    this.AdvancedSchedulingSearch()
    // this.AdvancedSchedulingWorkShop()
    this.OnclickAdvancedSchedulingDevice()
  },
  methods: {
    AdvancedSchedulingWorkShop() {
      // automaticScheduling.AdvancedSchedulingWorkShop().then(res => {
      //   this.list = res
      // })
    },
    Search() {
      this.form.page = 1
      this.show = false
      this.radio = ''
      this.AdvancedSchedulingSearch()
    },
    resetFormcx() {
      this.$nextTick(() => {
        this.$refs.form.resetFields()
      })
    },
    no_zero() {
      if (this.times < 0) {
        this.times = 0
      }
    },
    sortChange(column, prop, order) {
      this.radio = '';
      (this.form.prop = column.prop), (this.form.order = column.order)
      this.show = false
      this.AdvancedSchedulingSearch()
    },
    SeachKey() {
      this.form.page = 1
      this.AdvancedSchedulingSearch()
      this.show = false
      this.radio = ''
    },
    changeLift() {
      if (this.all_status) {
        this.false_arr = []
        this.OnclickAdvancedSchedulingDevice()
      } else {
        for (const i in this.bm_data) {
          this.bm_data[i].status = false
          this.bm_data[i].gtArray = []
        }
        for (const i in this.facility_data) {
          this.facility_data[i].gtArray = []
        }
      }
    },
    changeTypes() {
      this.OnclickAdvancedSchedulingDevice()
    },
    change_time() {
      this.time_data[0] = this.value1[0] + ' 00:00'
      this.time_data[1] = this.value1[1] + ' 23:59'
      this.forms.StartTime = this.value1[0]
      this.forms.EndTime = this.value1[1]
      this.OnclickAdvancedSchedulingDevice()
    },
    click_box(val) {
      if (!val.status) {
        for (const i in this.facility_data) {
          const new_arr = []
          for (const j in this.facility_data[i].gtArray) {
            if (this.facility_data[i].gtArray[j].id == val.id) {
            } else {
              new_arr.push(this.facility_data[i].gtArray[j])
            }
          }
          this.facility_data[i].gtArray = new_arr
        }
      } else {
        this.false_arr = []
        for (const i in this.bm_data) {
          if (!this.bm_data[i].status) {
            this.false_arr.push(this.bm_data[i].id)
          }
        }
        this.OnclickAdvancedSchedulingDevice()
      }
      if (!val.status) {
        for (const i in this.bm_data) {
          if (!this.bm_data[i].status) {
            this.bm_data[i].gtArray = []
          }
        }
      } else {
        this.false_arr = []
        for (const i in this.bm_data) {
          if (!this.bm_data[i].status) {
            this.false_arr.push(this.bm_data[i].id)
          }
        }
        this.OnclickAdvancedSchedulingDevice()
      }
      for (const i in this.bm_data) {
        const arr = []
        for (const j in this.bm_data[i].gtArray) {
          if (this.bm_data[i].gtArray[j].type != 'schedule') {
            arr.push(this.bm_data[i].gtArray[j])
          }
        }
        this.bm_data[i].gtArray = arr
      }
      this.real_num = 0
    },
    look(data) {
      this.showDialog = true
      this.search_from.DeviceCode = data.id
      this.AdvancedSchedulingEquipmenTask()
    },
    AdvancedSchedulingEquipmenTask() {
      // automaticScheduling
      //   .AdvancedSchedulingEquipmenTask(this.search_from)
      //   .then(res => {
      //     this.look_data = res.rows
      //     this.look_total = res.total
      //   })
    },
    sizeChange_look(val) {
      this.search_from.rows = val
      this.AdvancedSchedulingEquipmenTask()
    },
    pageChange_look(val) {
      this.search_from.page = val
      this.AdvancedSchedulingEquipmenTask()
    },
    sizeChange(val) {
      this.form.rows = val
      this.show = false
      this.radio = ''
      this.AdvancedSchedulingSearch()
    },
    pageChange(val) {
      this.form.page = val
      this.show = false
      this.radio = ''
      this.AdvancedSchedulingSearch()
    },
    // æŸ¥è¯¢
    AdvancedSchedulingSearch() {
      // automaticScheduling.AdvancedSchedulingSearch(this.form).then(res => {
      //   this.mn_data = res.rows
      //   this.total = res.total
      //   this.oneClick()
      // })
    },
    // ç‚¹å‡»å¸¦å‡ºæ•°æ®
    OnclickAdvancedSchedulingDevice() {
      // this.facility_top()
      // automaticScheduling
      //   .OnclickAdvancedSchedulingDevice(this.forms)
      //   .then(res => {
      const res = this.testValue
      if (res.rus.message) {
        this.$message({
          showClose: true,
          type: 'error',
          message: res.rus.message
        })
      }
      this.submit_flag = false
      const list = []
      this.time_all = res
      const cont = res.Cont
      this.real_num = 0
      for (const i in this.time_all.rows[0].children) {
        const obj = {
          id: '',
          name: '',
          AdvaDevicRhythm: '',
          status: true,
          colorPair: {
            dark: 'rgb(83, 186, 241,0.8)',
            light: 'rgb(83, 186, 241,0.1)',
            light_capacity: 'rgb(209,239,237,0.8)',
            h_schedule: ' rgb(100,255,192,0.8)',
            scheduleing: 'rgb(20,182,231,0.8)'
          },
          gtArray: []
        }
        obj.id = this.time_all.rows[0].children[i].AdvaDevicNumber
        obj.name = this.time_all.rows[0].children[i].AdvaDevicName
        obj.AdvaDevicRhythm = this.time_all.rows[0].children[
          i
        ].AdvaDevicRhythm
        list.push(obj)
      }
      for (const i in this.time_all.rows) {
        for (const j in this.time_all.rows[i].children) {
          if (this.time_all.rows[i].children[j].OneStartDate != '') {
            this.time_all.rows[i].children[
              j
            ].OneStartDate = this.time_all.rows[i].children[
              j
            ].OneStartDate.split('~')
            this.time_all.rows[i].children[j].OneStartDate[0] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].OneStartDate[0]
            this.time_all.rows[i].children[j].OneStartDate[1] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].OneStartDate[1]
          }
          if (this.time_all.rows[i].children[j].TwoStartDate != '') {
            this.time_all.rows[i].children[
              j
            ].TwoStartDate = this.time_all.rows[i].children[
              j
            ].TwoStartDate.split('~')
            this.time_all.rows[i].children[j].TwoStartDate[0] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].TwoStartDate[0]
            this.time_all.rows[i].children[j].TwoStartDate[1] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].TwoStartDate[1]
          }
          if (this.time_all.rows[i].children[j].ThreeStartDate != '') {
            this.time_all.rows[i].children[
              j
            ].ThreeStartDate = this.time_all.rows[i].children[
              j
            ].ThreeStartDate.split('~')
            this.time_all.rows[i].children[j].ThreeStartDate[0] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].ThreeStartDate[0]
            this.time_all.rows[i].children[j].ThreeStartDate[1] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].ThreeStartDate[1]
          }
          if (this.time_all.rows[i].children[j].FourStartDate != '') {
            this.time_all.rows[i].children[
              j
            ].FourStartDate = this.time_all.rows[i].children[
              j
            ].FourStartDate.split('~')
            this.time_all.rows[i].children[j].FourStartDate[0] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].FourStartDate[0]
            this.time_all.rows[i].children[j].FourStartDate[1] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].FourStartDate[1]
          }
          if (this.time_all.rows[i].children[j].FiveStartDate != '') {
            this.time_all.rows[i].children[
              j
            ].FiveStartDate = this.time_all.rows[i].children[
              j
            ].FiveStartDate.split('~')
            this.time_all.rows[i].children[j].FiveStartDate[0] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].FiveStartDate[0]
            this.time_all.rows[i].children[j].FiveStartDate[1] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].FiveStartDate[1]
          }
        }
      }
      // ç»„合新的结构
      const newList = []
      for (const i in this.time_all.rows) {
        for (const j in this.time_all.rows[i].children) {
          if (this.time_all.rows[i].children[j].OneStartDate != '') {
            const data1 = {
              id: '',
              start: '',
              end: '',
              mod: ''
            }
            data1.id = this.time_all.rows[i].children[j].AdvaDevicNumber
            data1.start = this.time_all.rows[i].children[j].OneStartDate[0]
            data1.end = this.time_all.rows[i].children[j].OneStartDate[1]
            data1.mod =
              (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
              100
            newList.push(data1)
          }
          if (this.time_all.rows[i].children[j].TwoStartDate != '') {
            const data2 = {
              id: '',
              start: '',
              end: '',
              mod: ''
            }
            data2.id = this.time_all.rows[i].children[j].AdvaDevicNumber
            data2.start = this.time_all.rows[i].children[j].TwoStartDate[0]
            data2.end = this.time_all.rows[i].children[j].TwoStartDate[1]
            data2.mod =
              (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
              100
            newList.push(data2)
          }
          if (this.time_all.rows[i].children[j].ThreeStartDate != '') {
            const data3 = {
              id: '',
              start: '',
              end: '',
              mod: ''
            }
            data3.id = this.time_all.rows[i].children[j].AdvaDevicNumber
            data3.start = this.time_all.rows[i].children[
              j
            ].ThreeStartDate[0]
            data3.end = this.time_all.rows[i].children[j].ThreeStartDate[1]
            data3.mod =
              (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
              100
            newList.push(data3)
          }
          if (this.time_all.rows[i].children[j].FourStartDate != '') {
            const data4 = {
              id: '',
              start: '',
              end: '',
              mod: ''
            }
            data4.id = this.time_all.rows[i].children[j].AdvaDevicNumber
            data4.start = this.time_all.rows[i].children[
              j
            ].FourStartDate[0]
            data4.end = this.time_all.rows[i].children[j].FourStartDate[1]
            data4.mod =
              (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
              100
            newList.push(data4)
          }
          if (this.time_all.rows[i].children[j].FiveStartDate != '') {
            const data5 = {
              id: '',
              start: '',
              end: '',
              mod: ''
            }
            data5.id = this.time_all.rows[i].children[j].AdvaDevicNumber
            data5.start = this.time_all.rows[i].children[
              j
            ].FiveStartDate[0]
            data5.end = this.time_all.rows[i].children[j].FiveStartDate[1]
            data5.mod =
              (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
              100
            newList.push(data5)
          }
        }
      }
      for (const i in list) {
        this.pushTiem(newList, list[i].id, list[i].gtArray)
      }
      this.bm_data = list
      const _this = this
      if (cont != '') {
        for (const i in cont) {
          for (const j in this.bm_data) {
            if (this.bm_data[j].id == cont[i].EQP_CODE) {
              const data = {
                id: cont[i].EQP_CODE,
                number: cont[i].ALLOC_QTY,
                cl_name: cont[i].PART_NAME,
                cl_code: this.cl_code,
                work_order: cont[i].WO_CODE,
                STATUS: _this.AdvaScheUom,
                start: cont[i].TIME_START,
                end: cont[i].TIME_END,
                type: cont[i].STATUS == 'S' ? 'h_schedule' : 'bm_schedule'
              }
              this.bm_data[j].flag = 'isCont'
              this.bm_data[j].gtArray.unshift(data)
            }
          }
        }
      }
      if (this.false_arr != '') {
        for (const j in this.bm_data) {
          if (this.false_arr.indexOf(this.bm_data[j].id) >= 0) {
            this.bm_data[j].gtArray = []
            this.bm_data[j].status = false
          }
        }
      }
      // })
    },
    // æ¢åž‹æ—¶é—´
    MinutesTest(time) {
      var sdate1 = new Date(time)
      sdate1.setMinutes(sdate1.getMinutes() + this.times * 1)
      var now =
        sdate1.getFullYear() +
        '-' +
        this.add_one(sdate1.getMonth()) +
        '-' +
        sdate1.getDate() +
        ' ' +
        sdate1.getHours() +
        ':' +
        sdate1.getMinutes() +
        ':' +
        sdate1.getSeconds()
      return now
    },
    // +1
    add_one(date) {
      return parseInt(date) + 1
    },
    // æ’入产能时间段
    pushTiem(newList, id, arr) {
      for (const i in newList) {
        if (newList[i].id == id) {
          const data = {
            start: newList[i].start,
            end: newList[i].end,
            id: newList[i].id,
            mod: newList[i].mod,
            type: 'capacity'
          }
          arr.push(data)
        }
      }
    },
    getNowFormatDate() {
      var date = new Date()
      var seperator1 = '-'
      var year = date.getFullYear()
      var month = date.getMonth() + 1
      // var strDate = date.getDate()+1;
      var strDate = date.getDate()
      if (month >= 1 && month <= 9) {
        month = '0' + month
      }
      if (strDate >= 0 && strDate <= 9) {
        strDate = '0' + strDate
      }
      var currentdate = year + seperator1 + month + seperator1 + strDate
      return currentdate
    },
    getCurrentRow(row) {
      // this.show =true
      this.meter = row.AdvaScheQty * 1 - row.AdvaScheYPQty * 1 // å¯ä»¥åšä¸ªæ•°
      this.value1 = []
      this.cl_name = row.AdvaSchePartName
      this.cl_code = row.AdvaSchePartNumber
      this.AdvaScheUom = row.AdvaScheUom
      this.work_order = row.AdvaScheWorkCode
      this.value1.push(this.getNowFormatDate())
      this.value1.push(row.AdvaScheEndDate)
      if (this.value1 != '') {
        this.time_data[0] = this.value1[0] + ' 00:00'
        this.time_data[1] = this.value1[1] + ' 23:59'
      }
      this.forms.WorkCode = row.AdvaScheWorkCode
      this.forms.WorkShop = row.AdvaScheWorkShopid
      this.forms.PartNumber = row.AdvaSchePartNumber
      this.forms.BotProceCode = row.AdvaScheBotProcid
      this.forms.StartTime = this.getNowFormatDate()
      this.forms.EndTime = row.AdvaScheEndDate
      this.OnclickAdvancedSchedulingDevice()
      this.formUpdata.WorkCode = row.AdvaScheWorkCode
      this.formUpdata.BotProceCode = row.AdvaScheBotProcid
      this.search_from.WorkTime =
        this.getNowFormatDate() + '~' + row.AdvaScheEndDate
      this.search_from.BotProceName = row.AdvaScheBotProcName
    },
    // æäº¤æŽ’程
    click_yes() {
      if (this.submit_flag) {
        this.$message({
          showClose: true,
          type: 'error',
          message: '数量未排完,请设置产能时间'
        })
      } else {
        const list = [] // æäº¤æ•°ç»„
        for (const i in this.bm_data) {
          const arr = []
          for (const j in this.bm_data[i].gtArray) {
            if (this.bm_data[i].gtArray[j].type == 'schedule') {
              arr.push(this.bm_data[i].gtArray[j])
            }
          }
          if (arr != '') {
            for (const i in arr) {
              const data = {
                AlreDevicNumber: '',
                AlreStartDate: '',
                AlreEndDate: '',
                AlreQty: ''
              }
              data.AlreDevicNumber = arr[i].id
              data.AlreStartDate = arr[i].start
              data.AlreEndDate = arr[i].end
              data.AlreQty = arr[i].number
              list.push(data)
            }
          }
        }
        // æŽ’程相同设备获取开始时间 ç»“束时间 æ•°é‡çš„æ€»å’Œ
        // è¿‡æ»¤
        let updata = []
        for (const i in list) {
          if (list[i].AlreStartDate != '') {
            updata.push(list[i])
          }
        }
        updata = JSON.stringify(updata)
        this.formUpdata.json = updata
        if (list == '') {
          this.$message({
            showClose: true,
            message: '请先预排',
            type: 'error'
          })
          return false
        }
        automaticScheduling
          .SubmitAlreadyScheduling(this.formUpdata)
          .then(res => {
            if (res.statusCode == 300) {
              this.$message({
                showClose: true,
                message: res.message,
                type: 'error'
              })
            } else {
              this.$message({
                showClose: true,
                message: res.message,
                type: 'success'
              })
            }
            this.meter = 0
            this.real_num = 0
            this.OnclickAdvancedSchedulingDevice()
            this.AdvancedSchedulingSearch()
          })
      }
    },
    // æ—¶é—´/设备优先排程
    click_schedule() {
      const timestamp = new Date().toLocaleDateString()
      if (new Date(this.value1[0]) < new Date(timestamp)) {
        this.$message({
          showClose: true,
          type: 'error',
          message: '排程时间不可以小于当前时间'
        })
        return false
      }
      this.nitialize()
      // è®¾å¤‡ä¼˜å…ˆ
      if (this.bm_data != '' && this.types == 'N') {
        this.fun_time()
        this.change_num(this.bm_data)
      } else if (this.facility_data != '' && this.types == 'Y') {
        this.time_nitalize()
        this.fun_facility()
        this.dataTransition()
        this.change_num(this.bm_data)
      }
    },
    // æ‰‹åŠ¨è¿‡æ»¤æ‰€æœ‰æ—¶é—´å·²æŽ’ç¨‹
    time_nitalize() {
      for (const i in this.facility_data) {
        this.facility_data[i].gtArray = this.facility_data[i].gtArray.filter(item => item.type != 'schedule')
      }
    },
    // æ‰‹åŠ¨è¿‡æ»¤æ‰€æœ‰è®¾å¤‡å·²æŽ’ç¨‹
    nitialize() {
      for (const i in this.bm_data) {
        const newArr = []
        for (const j in this.bm_data[i].gtArray) {
          if (this.bm_data[i].gtArray[j].type != 'schedule') {
            newArr.push(this.bm_data[i].gtArray[j])
          }
        }
        this.bm_data[i].gtArray = newArr
      }
    },
    // ç»™æŽ’程最后一个修改数量
    change_num(arr) {
      this.real_num = 0 // çœŸå®žå·²æŽ’数量
      let num = 0 // å–整已排数量
      const arr_num = [] // å·²æŽ’数据
      let mend_num = 0
      const len = 0
      for (const i in arr) {
        for (const j in arr[i].gtArray) {
          if (arr[i].gtArray[j].type == 'schedule') {
            arr_num.unshift(arr[i].gtArray[j])
          }
        }
      }
      for (const n in arr_num) {
        this.real_num += arr_num[n].real_number
        num += arr_num[n].number * 1
      }
      this.real_num = Math.ceil(this.real_num)
      const y10 = this.meter - this.real_num
      if (y10 <= 10) {
        this.real_num = this.meter
        mend_num = this.meter - num
      } else {
      }
      if (this.real_num * 1 == this.meter * 1) {
        // mend_num =  this.meter - num
      } else {
        this.submit_flag = true
      }
      for (const i in this.bm_data) {
        for (const j in this.bm_data[i].gtArray) {
          if (
            this.bm_data[i].gtArray[j].type == 'schedule' &&
            this.bm_data[i].gtArray[j].end_num
          ) {
            this.bm_data[i].gtArray[j].number =
              this.bm_data[i].gtArray[j].number * 1 + mend_num
          }
        }
      }
    },
    fun_time() {
      let all_num = this.meter
      const all_time = []
      let flag1 = 0
      const mod = this.bm_data[0].mod
      //  let nowTime = this.bm_data[0].AdvaDevicRhythm*all_num
      for (const i in this.bm_data) {
        let end_arr = [] // å·²æŽ’程的数组
        let nend_arr = [] // å¾…排程的数组
        const add_arr = [] // å·²æŽ’程的数组
        let capacity_arr = [] // è¦æŽ’程的数组
        this.bm_data[i].gtArray.sort((a, b) => new Date(a.end).getTime() - new Date(b.end).getTime())
        // let capacity_end = ''
        end_arr = this.bm_data[i].gtArray.filter(item => item.type == 'h_schedule')
        nend_arr = this.bm_data[i].gtArray.filter(item => item.type == 'capacity')
        if (end_arr && end_arr.length > 0) {
          capacity_arr = nend_arr.map(item => {
            // æŽ’除掉已经排程的存在hshedule,start,end都相等的情况
            const schedule = end_arr.filter(schedule => {
              return new Date(item.start).getTime() <= new Date(schedule.start).getTime() &&
                new Date(item.end).getTime() > new Date(schedule.end).getTime()
            })
            if (schedule && schedule.length > 0) {
              item.start = this.MinutesTest(schedule[0]['end'])
            }
            const schedule1 = end_arr.filter(schedule => {
              return new Date(item.start).getTime() == new Date(schedule.start).getTime() &&
                new Date(item.end).getTime() == new Date(schedule.end).getTime()
            })
            if (schedule1 && schedule1.length > 0) {
              item.capacity = false
            }
            return item
          }).filter(item => item.capacity != false)
        } else {
          capacity_arr = nend_arr
        }
        const id_obj = {
          id: '',
          start_time: ''
        }
        if (end_arr != '') {
          (id_obj.id = end_arr[0].id), (id_obj.start_time = end_arr[0].end)
        }
        for (const w in capacity_arr) {
          let end_time = ''
          let mistiming = ''
          const data = {
            id: capacity_arr[w].id,
            start: '',
            end: '',
            type: 'schedule',
            cl_name: this.cl_name,
            cl_code: this.cl_code,
            work_order: this.work_order,
            number: 0,
            real_number: 0
          }
          if (
            id_obj.start_time != '' &&
            flag1 == 0 &&
            new Date(id_obj.start_time) >= new Date(capacity_arr[w].start)
          ) {
            data.start = this.MinutesTest(id_obj.start_time)
            flag1 = 1
          } else {
            data.start = capacity_arr[w].start
          }
          let nowTime =
            (this.bm_data[i].AdvaDevicRhythm * all_num) / capacity_arr[w].mod
          end_time = this.formSeconds(nowTime, data.start, capacity_arr[w].mod) // æ€»å…±çš„结束时间
          data.end = end_time
          mistiming = this.formTime(
            end_time,
            capacity_arr[w].end,
            capacity_arr[w].mod
          ) // æ€»å…±çš„结束时间-当前的结束时间 = å‰©ä¸‹å¤šä¹…æ—¶é—´
          if (mistiming >= 0) {
            console.log(
              new Date(data.end) - new Date(data.start),
              capacity_arr[w].mod,
              this.bm_data[i].AdvaDevicRhythm,
              '阿斯顿发斯蒂芬'
            )
            data.number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              this.bm_data[i].AdvaDevicRhythm /
              1000
            data.real_number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              this.bm_data[i].AdvaDevicRhythm /
              1000
            data.number = data.number.toFixed(0)
            data.end_num = true
            if (new Date(data.start) >= new Date(data.end)) {
            } else {
              this.bm_data[i].gtArray.push(data)
            }
            return false
          } else {
            data.end = capacity_arr[w].end
            data.number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              this.bm_data[i].AdvaDevicRhythm /
              1000
            data.real_number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              this.bm_data[i].AdvaDevicRhythm /
              1000
            data.number = data.number.toFixed(0)
            nowTime =
              (all_num - data.real_number) * this.bm_data[i].AdvaDevicRhythm
            all_num = all_num - data.real_number
            if (new Date(data.start) >= new Date(data.end)) {
            } else {
              this.bm_data[i].gtArray.push(data)
            }
          }
        }
      }
    },
    // è®¾å¤‡æŽ’程方法
    fun_facility() {
      // æŽ’除未勾选项
      for (const i in this.facility_data) {
        const newArr = []
        for (const j in this.facility_data[i].gtArray) {
          if (this.false_arr.indexOf(this.facility_data[i].gtArray[j].id) < 0) {
            newArr.push(this.facility_data[i].gtArray[j])
          }
        }
        this.facility_data[i].gtArray = newArr
      }
      let all_num = this.meter
      const all_time = []
      const flag1 = 0
      // let nowTime = this.facility_data[0].AdvaDevicRhythm*all_num  //数量OK
      for (const i in this.facility_data) {
        let end_arr = []
        let nend_arr = [] // æŽ’程的数组
        const add_arr = [] // å·²æŽ’程的数组
        let capacity_arr = [] // è¦æŽ’程的数组
        // this.facility_data[i].gtArray.sort((a,b) => new Date(a.end).getTime() - new Date(b.end).getTime())
        // let capacity_end = ''
        end_arr = this.facility_data[i].gtArray.filter(item => item.type == 'h_schedule')
        nend_arr = this.facility_data[i].gtArray.filter(item => item.type == 'capacity')
        console.log(nend_arr)
        capacity_arr = JSON.parse(JSON.stringify(nend_arr))
        end_arr.forEach(item => {
          for (let i = 0; i < capacity_arr.length; i++) {
            if (new Date(capacity_arr[i].start).getTime() === new Date(item.start).getTime()) {
              console.log(i, capacity_arr[i], '哇哈哈')
              capacity_arr.splice(i, 1)
              break
            }
          }
        })
        console.log(capacity_arr, '大西瓜')
        if (!capacity_arr || capacity_arr.length == 0) break
        // const firstCapacity = capacity_arr[0]
        const schedule_arr = end_arr.filter(item => {
          const remain = nend_arr.some(sitem => {
            return new Date(sitem.start).getTime() === new Date(item.start).getTime() &&
              new Date(item.end).getTime() < new Date(sitem.end).getTime()
          })
          return remain
        })
        console.log(schedule_arr)
        if (schedule_arr && schedule_arr.length > 0) {
          const scheduleCan = schedule_arr.map(item => {
            const capcity = nend_arr.filter(sitem => {
              return new Date(sitem.start).getTime() === new Date(item.start).getTime() &&
                new Date(item.end).getTime() < new Date(sitem.end).getTime()
            })[0]
            console.log('capacity', capcity)
            capcity.start = this.MinutesTest(item.end)
            return capcity
          })
          const newSchedule = JSON.parse(JSON.stringify(scheduleCan))
          capacity_arr = newSchedule.concat(capacity_arr)
        }
        console.log(schedule_arr)
        console.log('可排程数组', capacity_arr)
        const id_obj = {}
        if (end_arr != '') {
          (id_obj.id = end_arr[0].id), (id_obj.start_time = end_arr[0].end)
        }
        for (const w in capacity_arr) {
          let end_time
          let mistiming
          const data = {
            id: capacity_arr[w].id,
            start: '',
            end: '',
            type: 'schedule',
            cl_name: this.cl_name,
            cl_code: this.cl_code,
            work_order: this.work_order,
            number: 0,
            real_number: 0
          }
          //  console.log(id_obj.start_time)
          if (
            id_obj &&
            new Date(id_obj.start_time).getTime() >=
            new Date(capacity_arr[w].start).getTime()
          ) {
            if (data.id == id_obj.id) {
              data.start = this.MinutesTest(id_obj.start_time)
              //  flag1 =1
            } else {
              data.start = capacity_arr[w].start
              //  console.log(data.start)
              //  flag1 =1
            }
          } else {
            data.start = capacity_arr[w].start
          }
          // let nowTime = this.facility_data[0].AdvaDevicRhythm*all_num
          let nowTime =
            (capacity_arr[w].rhythm * all_num) / capacity_arr[w].mod
          end_time = this.formSeconds(nowTime, data.start)
          data.end = end_time
          mistiming = this.formTime(end_time, capacity_arr[w].end)
          if (mistiming >= 0) {
            data.number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              capacity_arr[w].rhythm /
              1000
            data.real_number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              capacity_arr[w].rhythm /
              1000
            data.number = data.number.toFixed(0)
            data.end_num = true
            if (new Date(data.start) >= new Date(data.end)) {
            } else {
              this.facility_data[i].gtArray.push(data)
            }
            return false
          } else {
            data.end = capacity_arr[w].end
            data.number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              capacity_arr[w].rhythm /
              1000
            data.real_number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
              capacity_arr[w].rhythm /
              1000
            data.number = data.number.toFixed(0)
            nowTime = (all_num - data.real_number) * capacity_arr[w].rhythm
            all_num = all_num - data.real_number
            //  nowTime = mistiming * -1
            if (new Date(data.start) >= new Date(data.end)) {
            } else {
              this.facility_data[i].gtArray.push(data)
            }
          }
        }
      }
    },
    // ç»™è®¾å¤‡è½¬æ¢æ ¼å¼
    dataTransition() {
      this.bm_data = []
      const data = this.facility_data
      const all = []
      const list = this.title_list
      for (const i in data) {
        for (const j in data[i].gtArray) {
          all.push(data[i].gtArray[j])
        }
      }
      for (const i in list) {
        list[i].gtArray = []
        this.pushTiemsss(all, list[i].id, list[i].gtArray)
      }
      for (const n in list) {
        if (list[n].gtArray.length == 0) {
          list[n].status = false
        }
      }
      // console.log(list)
      this.bm_data = list
    },
    // æ’入产能时间段
    pushTiemsss(newList, id, arr) {
      for (const i in newList) {
        if (newList[i].id == id) {
          arr.push(newList[i])
        }
      }
    },
    // è®¾å¤‡ä¼˜å…ˆ
    facility_top() {
      // automaticScheduling
      //   .OnclickAdvancedSchedulingDevice(this.forms)
      //   .then(res => {
      const res = this.testValue
      this.show = true
      const data = res.rows
      const cont = res.Cont
      this.title_list = []
      for (const i in data[0].children) {
        const obj = {
          id: '',
          name: '',
          status: true,
          AdvaDevicRhythm: '',
          // mod:'',
          colorPair: {
            dark: 'rgb(83, 186, 241,0.8)',
            light: 'rgb(83, 186, 241,0.1)',
            light_capacity: 'rgb(209,239,237,0.8)',
            h_schedule: ' rgb(100,255,192,0.8)',
            scheduleing: 'rgb(20,182,231,0.8)'
          },
          gtArray: []
        }
        obj.id = data[0].children[i].AdvaDevicNumber
        obj.name = data[0].children[i].AdvaDevicName
        obj.AdvaDevicRhythm = data[0].children[i].AdvaDevicRhythm
        // obj.mod =data[0].children[i].AdvaDevicCropMob *1
        this.title_list.push(obj)
      }
      for (const i in data) {
        for (const j in data[i].children) {
          if (data[i].children[j].OneStartDate != '') {
            data[i].children[j].OneStartDate = data[i].children[
              j
            ].OneStartDate.split('~')
            data[i].children[j].OneStartDate[0] =
              data[i].YearDate + ' ' + data[i].children[j].OneStartDate[0]
            data[i].children[j].OneStartDate[1] =
              data[i].YearDate + ' ' + data[i].children[j].OneStartDate[1]
          }
          if (data[i].children[j].TwoStartDate != '') {
            data[i].children[j].TwoStartDate = data[i].children[
              j
            ].TwoStartDate.split('~')
            data[i].children[j].TwoStartDate[0] =
              data[i].YearDate + ' ' + data[i].children[j].TwoStartDate[0]
            data[i].children[j].TwoStartDate[1] =
              data[i].YearDate + ' ' + data[i].children[j].TwoStartDate[1]
          }
          if (data[i].children[j].ThreeStartDate != '') {
            data[i].children[j].ThreeStartDate = data[i].children[
              j
            ].ThreeStartDate.split('~')
            data[i].children[j].ThreeStartDate[0] =
              data[i].YearDate +
              ' ' +
              data[i].children[j].ThreeStartDate[0]
            data[i].children[j].ThreeStartDate[1] =
              data[i].YearDate +
              ' ' +
              data[i].children[j].ThreeStartDate[1]
          }
          if (data[i].children[j].FourStartDate != '') {
            data[i].children[j].FourStartDate = data[i].children[
              j
            ].FourStartDate.split('~')
            data[i].children[j].FourStartDate[0] =
              data[i].YearDate + ' ' + data[i].children[j].FourStartDate[0]
            data[i].children[j].FourStartDate[1] =
              data[i].YearDate + ' ' + data[i].children[j].FourStartDate[1]
          }
          if (data[i].children[j].FiveStartDate != '') {
            data[i].children[j].FiveStartDate = data[i].children[
              j
            ].FiveStartDate.split('~')
            data[i].children[j].FiveStartDate[0] =
              data[i].YearDate + ' ' + data[i].children[j].FiveStartDate[0]
            data[i].children[j].FiveStartDate[1] =
              data[i].YearDate + ' ' + data[i].children[j].FiveStartDate[1]
          }
        }
      }
      // æ›´æ”¹æ ¼å¼
      this.facility_data = []
      for (const i in data) {
        const time = {
          date: data[i].YearDate,
          AdvaDevicRhythm: '',
          gtArray: []
        }
        if (data[i].children != '') {
          time.AdvaDevicRhythm = data[i].children[0].AdvaDevicRhythm
        }
        for (const j in data[i].children) {
          if (data[i].children[j].OneStartDate != '') {
            const icu1 = {
              name: data[i].children[j].AdvaDevicName,
              id: data[i].children[j].AdvaDevicNumber,
              type: 'capacity',
              rhythm: data[i].children[j].AdvaDevicRhythm,
              start: data[i].children[j].OneStartDate[0],
              end: data[i].children[j].OneStartDate[1],
              mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
            }
            time.gtArray.push(icu1)
          }
          if (data[i].children[j].TwoStartDate != '') {
            const icu2 = {
              name: data[i].children[j].AdvaDevicName,
              id: data[i].children[j].AdvaDevicNumber,
              type: 'capacity',
              rhythm: data[i].children[j].AdvaDevicRhythm,
              start: data[i].children[j].TwoStartDate[0],
              end: data[i].children[j].TwoStartDate[1],
              mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
            }
            time.gtArray.push(icu2)
          }
          if (data[i].children[j].ThreeStartDate != '') {
            const icu3 = {
              name: data[i].children[j].AdvaDevicName,
              id: data[i].children[j].AdvaDevicNumber,
              type: 'capacity',
              rhythm: data[i].children[j].AdvaDevicRhythm,
              start: data[i].children[j].ThreeStartDate[0],
              end: data[i].children[j].ThreeStartDate[1],
              mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
            }
            time.gtArray.push(icu3)
          }
          if (data[i].children[j].FourStartDate != '') {
            const icu4 = {
              name: data[i].children[j].AdvaDevicName,
              id: data[i].children[j].AdvaDevicNumber,
              type: 'capacity',
              rhythm: data[i].children[j].AdvaDevicRhythm,
              start: data[i].children[j].FourStartDate[0],
              end: data[i].children[j].FourStartDate[1],
              mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
            }
            time.gtArray.push(icu4)
          }
          if (data[i].children[j].FiveStartDate != '') {
            const icu5 = {
              name: data[i].children[j].AdvaDevicName,
              id: data[i].children[j].AdvaDevicNumber,
              type: 'capacity',
              rhythm: data[i].children[j].AdvaDevicRhythm,
              start: data[i].children[j].FiveStartDate[0],
              end: data[i].children[j].FiveStartDate[1],
              mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
            }
            time.gtArray.push(icu5)
          }
        }
        this.facility_data.push(time)
      }
      if (cont != '') {
        for (const i in cont) {
          const date_time = cont[i].TIME_START.split(' ')
          const cont_date = date_time[0]
          for (const j in this.facility_data) {
            const data = {
              id: cont[i].EQP_CODE,
              date: cont_date,
              number: cont[i].ALLOC_QTY,
              cl_name: cont[i].PART_NAME,
              cl_code: this.cl_code,
              work_order: cont[i].WO_CODE,
              start: cont[i].TIME_START,
              end: cont[i].TIME_END,
              type: 'h_schedule'
            }
            if (this.facility_data[j].date == data.date) {
              this.facility_data[j].gtArray.unshift(data)
            }
          }
        }
      }
      // })
    },
    // æŽ’程方法
    formSeconds(s1, start, mod) {
      const nowData = new Date(start)
      // ç®—出当前排程的结束时间
      return this.transitionTime(
        new Date(nowData.setSeconds(nowData.getSeconds() + s1))
      )
    },
    // è½¬åŒ–标准时间
    transitionTime(time) {
      const d = new Date(time)
      return (
        d.getFullYear() +
        '-' +
        (d.getMonth() + 1) +
        '-' +
        d.getDate() +
        ' ' +
        d.getHours() +
        ':' +
        d.getMinutes() +
        ':' +
        d.getSeconds()
      )
    },
    // æ—¶é—´æ¯”较
    formTime(d1, d2, mod) {
      // d1 æŽ’除结束时间  d2 å½“前产能结束时间
      const time1 = new Date(d1)
      const time2 = new Date(d2)
      return parseInt(time2 - time1) / 1000
    },
    formatSeconds(value) {
      var secondTime = parseInt(value) // ç§’
      var minuteTime = 0 // åˆ†
      var hourTime = 0 // å°æ—¶
      if (secondTime > 60) {
        // å¦‚果秒数大于60,将秒数转换成整数
        // èŽ·å–åˆ†é’Ÿï¼Œé™¤ä»¥60取整数,得到整数分钟
        minuteTime = parseInt(secondTime / 60)
        // èŽ·å–ç§’æ•°ï¼Œç§’æ•°å–ä½˜ï¼Œå¾—åˆ°æ•´æ•°ç§’æ•°
        secondTime = parseInt(secondTime % 60)
        // å¦‚果分钟大于60,将分钟转换成小时
        if (minuteTime > 60) {
          // èŽ·å–å°æ—¶ï¼ŒèŽ·å–åˆ†é’Ÿé™¤ä»¥60,得到整数小时
          hourTime = parseInt(minuteTime / 60)
          // èŽ·å–å°æ—¶åŽå–ä½˜çš„åˆ†ï¼ŒèŽ·å–åˆ†é’Ÿé™¤ä»¥60取佘的分
          minuteTime = parseInt(minuteTime % 60)
        }
      }
      var result = '' + parseInt(secondTime) + ''
      if (minuteTime > 0) {
        result = '' + parseInt(minuteTime) + ':' + result
      }
      if (hourTime > 0) {
        result = '' + parseInt(hourTime) + ':' + result
      }
      return result
    },
    updateTimeLines(timeA, timeB) {
      this.timeLines = [
        {
          time: timeA
        },
        {
          time: timeB,
          color: '#747e80'
        }
      ]
    },
    scrollLeftA(val) {
      this.positionB = { x: val }
    },
    scrollLeftB(val) {
      this.positionA = { x: val }
    },
    // è®¾ç½®åˆå§‹åŒ–数据
    oneClick() {
      // this.getCurrentRow(this.mn_data[0])
    }
  }
}
</script>
<style scoped>
body {
  font: 12px;
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}
.box_style {
  position: relative;
  top: 40px;
  left: -75px;
}
.box_styles {
  position: relative;
  top: 40px;
  left: 0;
}
#app {
  display: flex;
  flex-direction: column;
  padding: 0 10px;
  /* height: calc(100vh - 100px); */
}
label {
  margin-left: 10px;
}
input {
  width: 40px;
  height: 20px;
  vertical-align: middle;
}
input[type="range"] {
  width: 100px;
}
.top-bar {
  /* height: 30px; */
  margin-bottom: 20px;
}
.container {
  display: flex;
  flex-direction: column;
  flex: 1;
}
.main-footer {
  /* height: 30px; */
}
.ib {
  display: inline-block;
}
.w250 {
  width: 250px;
}
.el-slider {
  width: 100px;
}
.tc {
  text-align: center;
}
.name {
  display: flex;
  box-sizing: border-box;
  overflow: hidden;
  height: 100%;
  width: 100%;
  padding: 0 5px 0 0;
  border-radius: 8px 0 0 8px;
  align-items: center;
}
.colorBar {
  width: 10px;
  height: 100%;
}
.carId {
  flex: 1;
}
.tc {
  color: #909399;
  font-size: 14px;
}
.type {
  padding: 0 5px 0 0;
  font-size: 1.2rem;
}
.t_size {
  font-size: 14px;
}
.icon_true {
  height: 8px;
  display: inline-block;
  width: 8px;
  background: #00a79d;
  margin-right: 7px;
  border-radius: 15px;
}
.icon_ty {
  height: 8px;
  display: inline-block;
  width: 8px;
  background: red;
  margin-right: 7px;
  border-radius: 15px;
}
.icon_gz {
  height: 8px;
  display: inline-block;
  width: 8px;
  background: yellow;
  margin-right: 7px;
  border-radius: 15px;
}
/* .el-col-offset-1 {
    margin-left: 0.5% !important;
} */
.marginLeft {
  margin-left: 15px;
}
.button_style {
  background: #00a79d;
  color: #ffff;
  border-color: #00a79d;
}
.rg {
  float: right;
}
.color {
  color: #909399;
}
</style>
src/views/gantt_back/index1_back.js
ÎļþÃû´Ó src/views/sbgl/index1.js ÐÞ¸Ä
@@ -1,6 +1,5 @@
import dayjs from 'dayjs'
import Mock from 'mockjs'
const colorList = ['(252, 105, 100)', '(247, 167, 71)', '(116, 202, 90)', '(83, 186, 241)', '(208, 142, 2231)']
const nameList = '希望号,飞翼号,光明号,窥探号,力神号,警官号,闪电流星号,博士号,霹雳火神号,狙击手号,希望之光号,南海忍者号,火速E3号,山神号,安全卫士号,铁锤号,寿星号,星星号,罗曼斯卡,欲望号,霹雳雷电号,消防号,欧洲之星号'.split(',')
src/views/sbgl/byjl.vue
@@ -1,828 +0,0 @@
<template>
  <div>
    <el-tabs>
      <el-row style="margin-bottom:20px">
        <!-- <el-col :span="2">
       <el-input v-model="form.Seach"  @keyup.enter.native="SeachKey" placeholder="请输入关键词" size="small"></el-input>
        </el-col>-->
        <el-col :span="7" :offset="1">
          <span class="t_size" style="margin-left:7px">排程日期</span>
          <el-date-picker
            v-model="value1"
            type="daterange"
            range-separator="~"
            format="yyyy-MM-dd"
            value-format="yyyy-MM-dd"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
            size="small"
            :picker-options="pickerOptions1"
          />
        </el-col>
        <el-col :span="3">
          <span class="t_size">排程方式</span>
          <el-select v-model="types" size="small" style="width:120px" @change="changeTypes">
            <el-option value="N" label="设备优先" />
            <el-option value="Y" label="时间优先" />
          </el-select>
        </el-col>
        <el-col :span="3" :offset="1">
          <div style="height:32px;">
            <span class="t_size">时间刻度</span>
            <select id="scale" v-model.number="scale">
              <option v-for="i in scaleList" :key="i">{{ i }}</option>
            </select>
            <span class="t_size">分钟</span>
          </div>
        </el-col>
        <el-col :span="3">
          <div style="height:32px;">
            <span class="t_size">换型时间</span>
            <el-input
              id="scale"
              v-model="times"
              type="number"
              size="mini"
              style="display:inline-block;width:80px;"
              @change="no_zero"
            />
            <span class="t_size">分钟</span>
          </div>
        </el-col>
        <el-col :span="3">
          <div style="height:32px;line-height: 28px;">
            <span class="t_size">预排进度</span>
            <span>
              <span style="text-decoration:underline;">{{ real_num }}</span> /
              <span style="text-decoration:underline">{{ meter }}</span>
            </span>
          </div>
        </el-col>
        <el-col :span="3">
          <el-button
            type="primary"
            size="mini"
            icon="el-icon-document-remove"
            style="margin-left:20px;"
          >预排
            <!--            @click="click_schedule"-->
          </el-button>
          <el-button
            type="primary"
            size="mini"
            icon="el-icon-document-checked"
          >提交
            <!--            @click="click_yes"-->
          </el-button>
          <p />
        </el-col>
      </el-row>
      <el-row />
    </el-tabs>
    <div class="container">
      <v-gantt-chart
        :start-time="time_data[0]"
        :end-time="time_data[1]"
        :cell-width="cellWidth"
        :cell-height="cellHeight"
        :time-lines="timeLines"
        :title-height="titleHeight"
        :scale="scale"
        :title-width="titleWidth"
        show-current-time
        :hide-header="hideHeader"
        :data-key="dataKey"
        :array-keys="arrayKeys"
        :scroll-to-postion="positionA"
        :datas="bm_data"
      >
        <!--        @scrollLeft="scrollLeftA"-->
        <template slot="block" slot-scope="{data,item}">
          <Test
            :data="data"
            :update-time-lines="updateTimeLines"
            :cell-height="cellHeight"
            :current-time="currentTime"
            :item="item"
          />
        </template>
        <template slot="left" slot-scope="{data}">
          <div class="name">
            <div class="carId">
              <el-checkbox
                v-model="data.status"
                style="margin-right:5px;"
              />
              <!--              @change="click_box(data)"-->
              {{ data.id }} {{ data.name }}
            </div>
            <div class="speed">
              <el-tooltip class="item" effect="dark" content="查看" placement="top">
                <el-button type="text" size="mini">
                  <!--                  @click="look(data)"-->
                  <i class="el-icon-document size i-color" />
                </el-button>
              </el-tooltip>
            </div>
          </div>
        </template>
        <template slot="title">
          <span class="tc">工位列表</span>
          <el-checkbox v-model="all_status" class="box_style" @change="changeLift()" />
          <input v-model.number="cellWidth" type="range" min="20" max="100" class="box_styles">
        </template>
      </v-gantt-chart>
    </div>
  </div>
</template>
<script>
import dayjs from 'dayjs'
import { mockDatas } from '@/views/sbgl/index1'
export default {
  name: 'Byjl',
  data() {
    return {
      show: true,
      pickerOptions1: {
        disabledDate(time) {
          return time.getTime() <= Date.now() - 24 * 60 * 60 * 1000
        }
      },
      real_num: 0,
      keep_data: [],
      all_status: true,
      look_data: [],
      look_total: 0,
      cl_name: '',
      cl_code: '',
      work_order: '',
      false_arr: [],
      ckeckVal: true,
      AdvaScheUom: '',
      list: [],
      form: {
        WorkShop: '',
        PartNumber: '',
        PartName: '',
        rows: 10,
        page: 1
      },
      showDialog: false,
      time_data: [],
      forms: {
        WorkCode: '',
        WorkShop: '',
        PartNumber: '',
        BotProceCode: '',
        StartTime: '',
        EndTime: ''
      },
      click_one: 0,
      datasC: [],
      radio: '',
      value1: '',
      types: 'N',
      no: false,
      total: 0,
      mn_data: [],
      bm_data: [],
      facility_data: [],
      end_start: '',
      timeLines: [
        {
          time: dayjs()
            .add(2, 'hour')
            .toString()
        },
        {
          time: dayjs()
            .add(5, 'hour')
            .toString(),
          color: '#747e80'
        }
      ],
      formUpdata: {
        WorkCode: '',
        BotProceCode: '',
        json: []
      },
      currentTime: dayjs(),
      startTime: dayjs()
        .subtract(5, 'hour')
        .toString(),
      endTime: dayjs()
        .add(2, 'day')
        .add(2, 'hour')
        .toString(),
      cellWidth: 50,
      cellHeight: 30,
      titleHeight: 40,
      titleWidth: 250,
      scale: 60,
      datasNum: 100,
      // datasA: [],
      // datasB: mockDatas(100),
      dataKey: 'id',
      times: 0,
      timeList: timeList,
      scaleList: scaleList,
      scrollToTime: dayjs()
        .add(1, 'day')
        .toString(),
      scrollToPostion: { x: 10000, y: 10000 },
      hideHeader: false,
      arrayKeys: ['gtArray', 'error'],
      scrollToY: 0,
      positionB: {},
      positionA: {},
      meter: 0, // èŠ‚æ‹
      title_list: [],
      imp_id: '',
      submit_flag: false,
      search_from: {
        page: 1,
        rows: 10,
        WorkTime: '',
        BotProceName: ''
      },
      testValue: {
        'rus': {
          'statusCode': '',
          'message': '',
          'MOD_S': '',
          'MAR_S': '',
          'EQP_S': '',
          'CUT_S': '',
          'FIXT_S': '',
          'HouseNumber': '',
          'navTabId': '',
          'dialogid': '',
          'rel': '',
          'dt': null,
          'list': {},
          'callbackType': '',
          'forwardUrl': ''
        },
        'rows': [
          {
            'YearDate': '2022-09-01',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          },
          {
            'YearDate': '2022-09-02',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          },
          {
            'YearDate': '2022-09-03',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          },
          {
            'YearDate': '2022-09-04',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          },
          {
            'YearDate': '2022-09-05',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          },
          {
            'YearDate': '2022-09-06',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '78',
                'AdvaDevicRhythm': '10',
                'OneStartDate': '08:00~11:30',
                'TwoStartDate': '12:30~17:00',
                'ThreeStartDate': '',
                'FourStartDate': '',
                'FiveStartDate': ''
              }
            ]
          }
        ],
        'Cont': null
      }
    }
  },
  mounted() {
    this.OnclickAdvancedSchedulingDevice()
  },
  methods: {
    OnclickAdvancedSchedulingDevice() {
      this.facility_top()
      // automaticScheduling
      //   .OnclickAdvancedSchedulingDevice(this.forms)
      //   .then(res => {
      const res = this.testValue
      // if (res.rus.message) {
      //   this.$message({
      //     showClose: true,
      //     type: 'error',
      //     message: res.rus.message
      //   })
      // }
      this.submit_flag = false
      const list = []
      this.time_all = res
      const cont = res.Cont
      this.real_num = 0
      for (const i in this.time_all.rows[0].children) {
        const obj = {
          id: '',
          name: '',
          AdvaDevicRhythm: '',
          status: true,
          colorPair: {
            dark: 'rgb(83, 186, 241,0.8)',
            light: 'rgb(83, 186, 241,0.1)',
            light_capacity: 'rgb(209,239,237,0.8)',
            h_schedule: ' rgb(100,255,192,0.8)',
            scheduleing: 'rgb(20,182,231,0.8)'
          },
          gtArray: []
        }
        obj.id = this.time_all.rows[0].children[i].AdvaDevicNumber
        obj.name = this.time_all.rows[0].children[i].AdvaDevicName
        obj.AdvaDevicRhythm = this.time_all.rows[0].children[
          i
        ].AdvaDevicRhythm
        list.push(obj)
      }
      console.log(list, 1)
      for (const i in this.time_all.rows) {
        for (const j in this.time_all.rows[i].children) {
          if (this.time_all.rows[i].children[j].OneStartDate != '') {
            this.time_all.rows[i].children[
              j
            ].OneStartDate = this.time_all.rows[i].children[
              j
            ].OneStartDate.split('~')
            this.time_all.rows[i].children[j].OneStartDate[0] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].OneStartDate[0]
            this.time_all.rows[i].children[j].OneStartDate[1] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].OneStartDate[1]
          }
          if (this.time_all.rows[i].children[j].TwoStartDate != '') {
            this.time_all.rows[i].children[
              j
            ].TwoStartDate = this.time_all.rows[i].children[
              j
            ].TwoStartDate.split('~')
            this.time_all.rows[i].children[j].TwoStartDate[0] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].TwoStartDate[0]
            this.time_all.rows[i].children[j].TwoStartDate[1] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].TwoStartDate[1]
          }
          if (this.time_all.rows[i].children[j].ThreeStartDate != '') {
            this.time_all.rows[i].children[
              j
            ].ThreeStartDate = this.time_all.rows[i].children[
              j
            ].ThreeStartDate.split('~')
            this.time_all.rows[i].children[j].ThreeStartDate[0] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].ThreeStartDate[0]
            this.time_all.rows[i].children[j].ThreeStartDate[1] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].ThreeStartDate[1]
          }
          if (this.time_all.rows[i].children[j].FourStartDate != '') {
            this.time_all.rows[i].children[
              j
            ].FourStartDate = this.time_all.rows[i].children[
              j
            ].FourStartDate.split('~')
            this.time_all.rows[i].children[j].FourStartDate[0] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].FourStartDate[0]
            this.time_all.rows[i].children[j].FourStartDate[1] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].FourStartDate[1]
          }
          if (this.time_all.rows[i].children[j].FiveStartDate != '') {
            this.time_all.rows[i].children[
              j
            ].FiveStartDate = this.time_all.rows[i].children[
              j
            ].FiveStartDate.split('~')
            this.time_all.rows[i].children[j].FiveStartDate[0] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].FiveStartDate[0]
            this.time_all.rows[i].children[j].FiveStartDate[1] =
              this.time_all.rows[i].YearDate +
              ' ' +
              this.time_all.rows[i].children[j].FiveStartDate[1]
          }
        }
      }
      // ç»„合新的结构
      const newList = []
      for (const i in this.time_all.rows) {
        for (const j in this.time_all.rows[i].children) {
          if (this.time_all.rows[i].children[j].OneStartDate != '') {
            const data1 = {
              id: '',
              start: '',
              end: '',
              mod: ''
            }
            data1.id = this.time_all.rows[i].children[j].AdvaDevicNumber
            data1.start = this.time_all.rows[i].children[j].OneStartDate[0]
            data1.end = this.time_all.rows[i].children[j].OneStartDate[1]
            data1.mod =
              (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
              100
            newList.push(data1)
          }
          if (this.time_all.rows[i].children[j].TwoStartDate != '') {
            const data2 = {
              id: '',
              start: '',
              end: '',
              mod: ''
            }
            data2.id = this.time_all.rows[i].children[j].AdvaDevicNumber
            data2.start = this.time_all.rows[i].children[j].TwoStartDate[0]
            data2.end = this.time_all.rows[i].children[j].TwoStartDate[1]
            data2.mod =
              (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
              100
            newList.push(data2)
          }
          if (this.time_all.rows[i].children[j].ThreeStartDate != '') {
            const data3 = {
              id: '',
              start: '',
              end: '',
              mod: ''
            }
            data3.id = this.time_all.rows[i].children[j].AdvaDevicNumber
            data3.start = this.time_all.rows[i].children[
              j
            ].ThreeStartDate[0]
            data3.end = this.time_all.rows[i].children[j].ThreeStartDate[1]
            data3.mod =
              (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
              100
            newList.push(data3)
          }
          if (this.time_all.rows[i].children[j].FourStartDate != '') {
            const data4 = {
              id: '',
              start: '',
              end: '',
              mod: ''
            }
            data4.id = this.time_all.rows[i].children[j].AdvaDevicNumber
            data4.start = this.time_all.rows[i].children[
              j
            ].FourStartDate[0]
            data4.end = this.time_all.rows[i].children[j].FourStartDate[1]
            data4.mod =
              (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
              100
            newList.push(data4)
          }
          if (this.time_all.rows[i].children[j].FiveStartDate != '') {
            const data5 = {
              id: '',
              start: '',
              end: '',
              mod: ''
            }
            data5.id = this.time_all.rows[i].children[j].AdvaDevicNumber
            data5.start = this.time_all.rows[i].children[
              j
            ].FiveStartDate[0]
            data5.end = this.time_all.rows[i].children[j].FiveStartDate[1]
            data5.mod =
              (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /
              100
            newList.push(data5)
          }
        }
      }
      for (const i in list) {
        this.pushTiem(newList, list[i].id, list[i].gtArray)
      }
      this.bm_data = list
      const _this = this
      if (cont != '') {
        for (const i in cont) {
          for (const j in this.bm_data) {
            if (this.bm_data[j].id == cont[i].EQP_CODE) {
              const data = {
                id: cont[i].EQP_CODE,
                number: cont[i].ALLOC_QTY,
                cl_name: cont[i].PART_NAME,
                cl_code: this.cl_code,
                work_order: cont[i].WO_CODE,
                STATUS: _this.AdvaScheUom,
                start: cont[i].TIME_START,
                end: cont[i].TIME_END,
                type: cont[i].STATUS == 'S' ? 'h_schedule' : 'bm_schedule'
              }
              this.bm_data[j].flag = 'isCont'
              this.bm_data[j].gtArray.unshift(data)
            }
          }
        }
      }
      if (this.false_arr != '') {
        for (const j in this.bm_data) {
          if (this.false_arr.indexOf(this.bm_data[j].id) >= 0) {
            this.bm_data[j].gtArray = []
            this.bm_data[j].status = false
          }
        }
      }
      // })
    },
    // è®¾å¤‡ä¼˜å…ˆ
    facility_top() {
      // automaticScheduling
      //   .OnclickAdvancedSchedulingDevice(this.forms)
      //   .then(res => {
      const res = this.testValue
      this.show = true
      const data = res.rows
      const cont = res.Cont
      this.title_list = []
      for (const i in data[0].children) {
        const obj = {
          id: '',
          name: '',
          status: true,
          AdvaDevicRhythm: '',
          // mod:'',
          colorPair: {
            dark: 'rgb(83, 186, 241,0.8)',
            light: 'rgb(83, 186, 241,0.1)',
            light_capacity: 'rgb(209,239,237,0.8)',
            h_schedule: ' rgb(100,255,192,0.8)',
            scheduleing: 'rgb(20,182,231,0.8)'
          },
          gtArray: []
        }
        obj.id = data[0].children[i].AdvaDevicNumber
        obj.name = data[0].children[i].AdvaDevicName
        obj.AdvaDevicRhythm = data[0].children[i].AdvaDevicRhythm
        // obj.mod =data[0].children[i].AdvaDevicCropMob *1
        this.title_list.push(obj)
      }
      for (const i in data) {
        for (const j in data[i].children) {
          if (data[i].children[j].OneStartDate != '') {
            data[i].children[j].OneStartDate = data[i].children[
              j
            ].OneStartDate.split('~')
            data[i].children[j].OneStartDate[0] =
              data[i].YearDate + ' ' + data[i].children[j].OneStartDate[0]
            data[i].children[j].OneStartDate[1] =
              data[i].YearDate + ' ' + data[i].children[j].OneStartDate[1]
          }
          if (data[i].children[j].TwoStartDate != '') {
            data[i].children[j].TwoStartDate = data[i].children[
              j
            ].TwoStartDate.split('~')
            data[i].children[j].TwoStartDate[0] =
              data[i].YearDate + ' ' + data[i].children[j].TwoStartDate[0]
            data[i].children[j].TwoStartDate[1] =
              data[i].YearDate + ' ' + data[i].children[j].TwoStartDate[1]
          }
          if (data[i].children[j].ThreeStartDate != '') {
            data[i].children[j].ThreeStartDate = data[i].children[
              j
            ].ThreeStartDate.split('~')
            data[i].children[j].ThreeStartDate[0] =
              data[i].YearDate +
              ' ' +
              data[i].children[j].ThreeStartDate[0]
            data[i].children[j].ThreeStartDate[1] =
              data[i].YearDate +
              ' ' +
              data[i].children[j].ThreeStartDate[1]
          }
          if (data[i].children[j].FourStartDate != '') {
            data[i].children[j].FourStartDate = data[i].children[
              j
            ].FourStartDate.split('~')
            data[i].children[j].FourStartDate[0] =
              data[i].YearDate + ' ' + data[i].children[j].FourStartDate[0]
            data[i].children[j].FourStartDate[1] =
              data[i].YearDate + ' ' + data[i].children[j].FourStartDate[1]
          }
          if (data[i].children[j].FiveStartDate != '') {
            data[i].children[j].FiveStartDate = data[i].children[
              j
            ].FiveStartDate.split('~')
            data[i].children[j].FiveStartDate[0] =
              data[i].YearDate + ' ' + data[i].children[j].FiveStartDate[0]
            data[i].children[j].FiveStartDate[1] =
              data[i].YearDate + ' ' + data[i].children[j].FiveStartDate[1]
          }
        }
      }
      // æ›´æ”¹æ ¼å¼
      this.facility_data = []
      for (const i in data) {
        const time = {
          date: data[i].YearDate,
          AdvaDevicRhythm: '',
          gtArray: []
        }
        if (data[i].children != '') {
          time.AdvaDevicRhythm = data[i].children[0].AdvaDevicRhythm
        }
        for (const j in data[i].children) {
          if (data[i].children[j].OneStartDate != '') {
            const icu1 = {
              name: data[i].children[j].AdvaDevicName,
              id: data[i].children[j].AdvaDevicNumber,
              type: 'capacity',
              rhythm: data[i].children[j].AdvaDevicRhythm,
              start: data[i].children[j].OneStartDate[0],
              end: data[i].children[j].OneStartDate[1],
              mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
            }
            time.gtArray.push(icu1)
          }
          if (data[i].children[j].TwoStartDate != '') {
            const icu2 = {
              name: data[i].children[j].AdvaDevicName,
              id: data[i].children[j].AdvaDevicNumber,
              type: 'capacity',
              rhythm: data[i].children[j].AdvaDevicRhythm,
              start: data[i].children[j].TwoStartDate[0],
              end: data[i].children[j].TwoStartDate[1],
              mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
            }
            time.gtArray.push(icu2)
          }
          if (data[i].children[j].ThreeStartDate != '') {
            const icu3 = {
              name: data[i].children[j].AdvaDevicName,
              id: data[i].children[j].AdvaDevicNumber,
              type: 'capacity',
              rhythm: data[i].children[j].AdvaDevicRhythm,
              start: data[i].children[j].ThreeStartDate[0],
              end: data[i].children[j].ThreeStartDate[1],
              mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
            }
            time.gtArray.push(icu3)
          }
          if (data[i].children[j].FourStartDate != '') {
            const icu4 = {
              name: data[i].children[j].AdvaDevicName,
              id: data[i].children[j].AdvaDevicNumber,
              type: 'capacity',
              rhythm: data[i].children[j].AdvaDevicRhythm,
              start: data[i].children[j].FourStartDate[0],
              end: data[i].children[j].FourStartDate[1],
              mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
            }
            time.gtArray.push(icu4)
          }
          if (data[i].children[j].FiveStartDate != '') {
            const icu5 = {
              name: data[i].children[j].AdvaDevicName,
              id: data[i].children[j].AdvaDevicNumber,
              type: 'capacity',
              rhythm: data[i].children[j].AdvaDevicRhythm,
              start: data[i].children[j].FiveStartDate[0],
              end: data[i].children[j].FiveStartDate[1],
              mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100
            }
            time.gtArray.push(icu5)
          }
        }
        this.facility_data.push(time)
      }
      if (cont != '') {
        for (const i in cont) {
          const date_time = cont[i].TIME_START.split(' ')
          const cont_date = date_time[0]
          for (const j in this.facility_data) {
            const data = {
              id: cont[i].EQP_CODE,
              date: cont_date,
              number: cont[i].ALLOC_QTY,
              cl_name: cont[i].PART_NAME,
              cl_code: this.cl_code,
              work_order: cont[i].WO_CODE,
              start: cont[i].TIME_START,
              end: cont[i].TIME_END,
              type: 'h_schedule'
            }
            if (this.facility_data[j].date == data.date) {
              this.facility_data[j].gtArray.unshift(data)
            }
          }
        }
      }
      //   })
    },
    updateTimeLines() {
    }
  }
}
</script>
<style scoped>
</style>
src/views/sbgl/djjl.vue
@@ -1,1853 +0,0 @@
<!--<template>-->
<!--  <div id="app">-->
<!--    <div class="app-container">-->
<!--      <el-tabs>-->
<!--        <el-form ref="form" :model="form" :rules="rulescx" label-width="100px" size="medium">-->
<!--          <el-row>-->
<!--            <el-col :span="6" :offset="1">-->
<!--              <el-form-item prop="WorkShop" label="生产车间">-->
<!--                <el-select v-model="form.WorkShop" style="width:257px" filterable>-->
<!--                  <el-option-->
<!--                    v-for="item in list"-->
<!--                    :key="item.CODE"-->
<!--                    :label="item.NAME"-->
<!--                    :value="item.CODE"-->
<!--                  />-->
<!--                </el-select>-->
<!--              </el-form-item>-->
<!--            </el-col>-->
<!--            <el-col :span="6" :offset="1">-->
<!--              <el-form-item prop="PartNumber" label="产品编码">-->
<!--                <el-input v-model="form.PartNumber" placeholder="请输入" style="width:257px" />-->
<!--              </el-form-item>-->
<!--            </el-col>-->
<!--            <el-col :span="5" :offset="1">-->
<!--              <el-form-item prop="PartName" label="产品名称">-->
<!--                <el-input v-model="form.PartName" placeholder="请输入" style="width:257px" />-->
<!--              </el-form-item>-->
<!--            </el-col>-->
<!--            <el-col :span="3" :offset="1">-->
<!--              <el-button type="text" class="marginLeft rg color" @click="resetFormcx()">重置</el-button>-->
<!--              <el-button-->
<!--                class="filter-item marginLeft button_style rg"-->
<!--                size="medium"-->
<!--                icon="el-icon-search"-->
<!--                @click="Search()"-->
<!--              >查询-->
<!--              </el-button>-->
<!--            </el-col>-->
<!--          </el-row>-->
<!--        </el-form>-->
<!--      </el-tabs>-->
<!--      <el-table-->
<!--        class="table"-->
<!--        :data="mn_data"-->
<!--        :header-cell-style="{background:'#f5f5f5'}"-->
<!--        height="280"-->
<!--        @sort-change="sortChange"-->
<!--      >-->
<!--        <el-table-column width="34" fixed>-->
<!--          <template slot-scope="scope">-->
<!--            <el-radio-->
<!--              v-model="radio"-->
<!--              :label="scope.$index"-->
<!--              class="textRadio"-->
<!--              @change.native="getCurrentRow(scope.row)"-->
<!--            >&nbsp;-->
<!--            </el-radio>-->
<!--          </template>-->
<!--        </el-table-column>-->
<!--        <el-table-column-->
<!--          label="序号"-->
<!--          prop="AdvaScheSeq"-->
<!--          width="80"-->
<!--          sortable="custom"-->
<!--          :sort-orders="['ascending', 'descending']"-->
<!--        />-->
<!--        <el-table-column-->
<!--          label="优先级"-->
<!--          prop="AdvaSchePiroQue"-->
<!--          sortable="custom"-->
<!--          :sort-orders="['ascending', 'descending']"-->
<!--        >-->
<!--          <template slot-scope="scope">-->
<!--            <div v-if="scope.row.AdvaSchePiroQue == '正常'">-->
<!--              <span class="icon_true" />-->
<!--              {{ scope.row.AdvaSchePiroQue }}-->
<!--            </div>-->
<!--            <div v-if="scope.row.AdvaSchePiroQue == '紧急'">-->
<!--              <span class="icon_gz" />-->
<!--              {{ scope.row.AdvaSchePiroQue }}-->
<!--            </div>-->
<!--            <div v-if="scope.row.AdvaSchePiroQue == '特急'">-->
<!--              <span class="icon_ty" />-->
<!--              {{ scope.row.AdvaSchePiroQue }}-->
<!--            </div>-->
<!--          </template>-->
<!--        </el-table-column>-->
<!--        <el-table-column-->
<!--          label="生产车间"-->
<!--          prop="AdvaScheWorkShop"-->
<!--          sortable="custom"-->
<!--          :sort-orders="['ascending', 'descending']"-->
<!--        />-->
<!--        <el-table-column-->
<!--          label="工单编号"-->
<!--          prop="AdvaScheWorkCode"-->
<!--          sortable="custom"-->
<!--          :sort-orders="['ascending', 'descending']"-->
<!--        />-->
<!--        <el-table-column-->
<!--          label="产品编码"-->
<!--          prop="AdvaSchePartNumber"-->
<!--          sortable="custom"-->
<!--          :sort-orders="['ascending', 'descending']"-->
<!--        />-->
<!--        <el-table-column-->
<!--          label="产品名称"-->
<!--          prop="AdvaSchePartName"-->
<!--          width="150"-->
<!--          sortable="custom"-->
<!--          :sort-orders="['ascending', 'descending']"-->
<!--        />-->
<!--        <el-table-column-->
<!--          label="产品规格"-->
<!--          prop="AdvaSchePartSpec"-->
<!--          sortable="custom"-->
<!--          :sort-orders="['ascending', 'descending']"-->
<!--        />-->
<!--        <el-table-column-->
<!--          label="数量"-->
<!--          prop="AdvaScheQty"-->
<!--          width="80"-->
<!--          sortable="custom"-->
<!--          :sort-orders="['ascending', 'descending']"-->
<!--        />-->
<!--        <el-table-column-->
<!--          label="要求交付时间"-->
<!--          prop="AdvaScheEndDate"-->
<!--          width="200"-->
<!--          sortable="custom"-->
<!--          :sort-orders="['ascending', 'descending']"-->
<!--        >-->
<!--          <template slot-scope="scope">{{ scope.row.AdvaScheEndDate }}</template>-->
<!--        </el-table-column>-->
<!--        &lt;!&ndash; <el-table-column  label="结束日期" prop="AdvaScheEndDate">-->
<!--        </el-table-column>&ndash;&gt;-->
<!--        <el-table-column label="交付状态" prop="AdvaScheSpeed" sortable="custom" :sort-orders="['ascending', 'descending']">-->
<!--          <template slot-scope="scope">-->
<!--            <div v-if="scope.row.Flag == 'Y' && scope.row.AdvaScheStus != 'NEW'">-->
<!--              <span class="icon_true" /> æ­£å¸¸-->
<!--            </div>-->
<!--            <div v-if="scope.row.Flag == 'N' && scope.row.AdvaScheStus != 'NEW'">-->
<!--              <span v-if="scope.row.Flag == 'N'" class="icon_ty" />延期-->
<!--            </div>-->
<!--          </template>-->
<!--        </el-table-column>-->
<!--        <el-table-column-->
<!--          label="排程工序"-->
<!--          prop="AdvaScheBotProcName"-->
<!--          sortable="custom"-->
<!--          :sort-orders="['ascending', 'descending']"-->
<!--          width="160"-->
<!--        />-->
<!--        <el-table-column label="计划排程时间" width="200" sortable="custom" :sort-orders="['ascending', 'descending']">-->
<!--          <template-->
<!--            slot-scope="scope"-->
<!--          >{{ scope.row.AdvaSchePCStartDate }} ~ {{ scope.row.AdvaSchePCEndDate }}-->
<!--          </template>-->
<!--        </el-table-column>-->
<!--      </el-table>-->
<!--      &lt;!&ndash;      <pagination-view&ndash;&gt;-->
<!--      &lt;!&ndash;        :currentPage="form.page"&ndash;&gt;-->
<!--      &lt;!&ndash;        :total="total"&ndash;&gt;-->
<!--      &lt;!&ndash;        @size-change="sizeChange"&ndash;&gt;-->
<!--      &lt;!&ndash;        @current-change="pageChange"&ndash;&gt;-->
<!--      &lt;!&ndash;      ></pagination-view>&ndash;&gt;-->
<!--    </div>-->
<!--    <el-dialog title="查看" :visible.sync="showDialog" width="60%">-->
<!--      <el-table class="table" :data="look_data" :header-cell-style="{background:'#f5f5f5'}">-->
<!--        <el-table-column label="序号" prop="AdvaTaskSeq" width="80" />-->
<!--        <el-table-column label="工单编号" prop="AdvaTaskWork" />-->
<!--        <el-table-column label="工单状态" prop="AdvaTaskStatus" />-->
<!--        <el-table-column label="产品编码" prop="AdvaTaskPartNumber" />-->
<!--        <el-table-column label="开始时间" prop="AdvaTaskStartDate" width="160" />-->
<!--        <el-table-column label="结束时间" prop="AdvaTaskEndDate" width="160" />-->
<!--        <el-table-column label="生产数量" prop="AdvaTaskQty" />-->
<!--        <el-table-column label="生产工序" prop="AdvaTaskBotProcName" />-->
<!--      </el-table>-->
<!--      <div style="overflow: hidden">-->
<!--        &lt;!&ndash;        <pagination-view&ndash;&gt;-->
<!--        &lt;!&ndash;          :currentPage="search_from.page"&ndash;&gt;-->
<!--        &lt;!&ndash;          :total="look_total"&ndash;&gt;-->
<!--        &lt;!&ndash;          @size-change="sizeChange_look"&ndash;&gt;-->
<!--        &lt;!&ndash;          @current-change="pageChange_look"&ndash;&gt;-->
<!--        &lt;!&ndash;        ></pagination-view>&ndash;&gt;-->
<!--      </div>-->
<!--    </el-dialog>-->
<!--    <el-tabs v-show="show">-->
<!--      <el-row style="margin-bottom:20px">-->
<!--        &lt;!&ndash; <el-col :span="2">-->
<!--       <el-input v-model="form.Seach"  @keyup.enter.native="SeachKey" placeholder="请输入关键词" size="small"></el-input>-->
<!--        </el-col>&ndash;&gt;-->
<!--        <el-col :span="7" :offset="1">-->
<!--          <span class="t_size" style="margin-left:7px">排程日期</span>-->
<!--          <el-date-picker-->
<!--            v-model="value1"-->
<!--            type="daterange"-->
<!--            range-separator="~"-->
<!--            format="yyyy-MM-dd"-->
<!--            value-format="yyyy-MM-dd"-->
<!--            start-placeholder="开始日期"-->
<!--            end-placeholder="结束日期"-->
<!--            size="small"-->
<!--            :picker-options="pickerOptions1"-->
<!--            @change="change_time"-->
<!--          />-->
<!--        </el-col>-->
<!--        <el-col :span="3">-->
<!--          <span class="t_size">排程方式</span>-->
<!--          <el-select v-model="types" size="small" style="width:120px" @change="changeTypes">-->
<!--            <el-option value="N" label="设备优先" />-->
<!--            <el-option value="Y" label="时间优先" />-->
<!--          </el-select>-->
<!--        </el-col>-->
<!--        <el-col :span="3" :offset="1">-->
<!--          <div style="height:32px;">-->
<!--            <span class="t_size">时间刻度</span>-->
<!--            <select id="scale" v-model.number="scale">-->
<!--              <option v-for="i in scaleList" :key="i">{{ i }}</option>-->
<!--            </select>-->
<!--            <span class="t_size">分钟</span>-->
<!--          </div>-->
<!--        </el-col>-->
<!--        <el-col :span="3">-->
<!--          <div style="height:32px;">-->
<!--            <span class="t_size">换型时间</span>-->
<!--            <el-input-->
<!--              id="scale"-->
<!--              v-model="times"-->
<!--              type="number"-->
<!--              size="mini"-->
<!--              style="display:inline-block;width:80px;"-->
<!--              @change="no_zero"-->
<!--            />-->
<!--            <span class="t_size">分钟</span>-->
<!--          </div>-->
<!--        </el-col>-->
<!--        <el-col :span="3">-->
<!--          <div style="height:32px;line-height: 28px;">-->
<!--            <span class="t_size">预排进度</span>-->
<!--            <span>-->
<!--              <span style="text-decoration:underline;">{{ real_num }}</span> /-->
<!--              <span style="text-decoration:underline">{{ meter }}</span>-->
<!--            </span>-->
<!--          </div>-->
<!--        </el-col>-->
<!--        <el-col :span="3">-->
<!--          <el-button-->
<!--            type="primary"-->
<!--            size="mini"-->
<!--            icon="el-icon-document-remove"-->
<!--            style="margin-left:20px;"-->
<!--            @click="click_schedule"-->
<!--          >预排-->
<!--          </el-button>-->
<!--          <el-button-->
<!--            type="primary"-->
<!--            size="mini"-->
<!--            icon="el-icon-document-checked"-->
<!--            @click="click_yes"-->
<!--          >提交-->
<!--          </el-button>-->
<!--          <p />-->
<!--        </el-col>-->
<!--      </el-row>-->
<!--      <el-row />-->
<!--    </el-tabs>-->
<!--    <div v-show="show" class="container">-->
<!--      <v-gantt-chart-->
<!--        :start-time="time_data[0]"-->
<!--        :end-time="time_data[1]"-->
<!--        :cell-width="cellWidth"-->
<!--        :cell-height="cellHeight"-->
<!--        :time-lines="timeLines"-->
<!--        :title-height="titleHeight"-->
<!--        :scale="scale"-->
<!--        :title-width="titleWidth"-->
<!--        show-current-time-->
<!--        :hide-header="hideHeader"-->
<!--        :data-key="dataKey"-->
<!--        :array-keys="arrayKeys"-->
<!--        :scroll-to-postion="positionA"-->
<!--        :datas="bm_data"-->
<!--        @scrollLeft="scrollLeftA"-->
<!--      >-->
<!--        &lt;!&ndash; <template v-slot:block="{data,item}"> &ndash;&gt;-->
<!--        <template slot="block" slot-scope="{data,item}">-->
<!--          <Test-->
<!--            :data="data"-->
<!--            :update-time-lines="updateTimeLines"-->
<!--            :cell-height="cellHeight"-->
<!--            :current-time="currentTime"-->
<!--            :item="item"-->
<!--          />-->
<!--        </template>-->
<!--        <template slot="left" slot-scope="{data}">-->
<!--          <div class="name">-->
<!--            <div class="carId">-->
<!--              <el-checkbox-->
<!--                v-model="data.status"-->
<!--                style="margin-right:5px;"-->
<!--                @change="click_box(data)"-->
<!--              />-->
<!--              {{ data.id }} {{ data.name }}-->
<!--            </div>-->
<!--            <div class="speed">-->
<!--              <el-tooltip class="item" effect="dark" content="查看" placement="top">-->
<!--                <el-button type="text" size="mini" @click="look(data)">-->
<!--                  <i class="el-icon-document size i-color" />-->
<!--                </el-button>-->
<!--              </el-tooltip>-->
<!--            </div>-->
<!--          </div>-->
<!--        </template>-->
<!--        <template slot="title">-->
<!--          <span class="tc">工位列表</span>-->
<!--          <el-checkbox v-model="all_status" class="box_style" @change="changeLift()" />-->
<!--          <input v-model.number="cellWidth" type="range" min="20" max="100" class="box_styles">-->
<!--        </template>-->
<!--      </v-gantt-chart>-->
<!--    </div>-->
<!--  </div>-->
<!--</template>-->
<!--<script>-->
<!--import Test from '@/components/Test'-->
<!--// import PaginationView from '@/components/PaginationView'-->
<!--// import TestLeft from '@/components/TestLeft'-->
<!--import { mockDatas } from './index1.js'-->
<!--import dayjs from 'dayjs'-->
<!--import automaticScheduling from '@/api/automaticScheduling'-->
<!--const scaleList = `30,60,240,360`.split(',').map(n => parseInt(n))-->
<!--const timeList = `0,30,60,120,240,480`.split(',').map(n => parseInt(n))-->
<!--export default {-->
<!--  components: { Test },-->
<!--  data() {-->
<!--    return {-->
<!--      show: false,-->
<!--      pickerOptions1: {-->
<!--        disabledDate(time) {-->
<!--          return time.getTime() <= Date.now() - 24 * 60 * 60 * 1000-->
<!--        }-->
<!--      },-->
<!--      real_num: 0,-->
<!--      keep_data: [],-->
<!--      all_status: true,-->
<!--      look_data: [],-->
<!--      look_total: 0,-->
<!--      cl_name: '',-->
<!--      cl_code: '',-->
<!--      work_order: '',-->
<!--      false_arr: [],-->
<!--      ckeckVal: true,-->
<!--      AdvaScheUom: '',-->
<!--      list: [],-->
<!--      form: {-->
<!--        WorkShop: '',-->
<!--        PartNumber: '',-->
<!--        PartName: '',-->
<!--        rows: 10,-->
<!--        page: 1-->
<!--      },-->
<!--      showDialog: false,-->
<!--      time_data: [],-->
<!--      forms: {-->
<!--        WorkCode: '',-->
<!--        WorkShop: '',-->
<!--        PartNumber: '',-->
<!--        BotProceCode: '',-->
<!--        StartTime: '',-->
<!--        EndTime: ''-->
<!--      },-->
<!--      click_one: 0,-->
<!--      datasC: [],-->
<!--      radio: '',-->
<!--      value1: '',-->
<!--      types: 'N',-->
<!--      no: false,-->
<!--      total: 0,-->
<!--      mn_data: [],-->
<!--      bm_data: [],-->
<!--      facility_data: [],-->
<!--      end_start: '',-->
<!--      timeLines: [-->
<!--        {-->
<!--          time: dayjs()-->
<!--            .add(2, 'hour')-->
<!--            .toString()-->
<!--        },-->
<!--        {-->
<!--          time: dayjs()-->
<!--            .add(5, 'hour')-->
<!--            .toString(),-->
<!--          color: '#747e80'-->
<!--        }-->
<!--      ],-->
<!--      formUpdata: {-->
<!--        WorkCode: '',-->
<!--        BotProceCode: '',-->
<!--        json: []-->
<!--      },-->
<!--      currentTime: dayjs(),-->
<!--      startTime: dayjs()-->
<!--        .subtract(5, 'hour')-->
<!--        .toString(),-->
<!--      endTime: dayjs()-->
<!--        .add(2, 'day')-->
<!--        .add(2, 'hour')-->
<!--        .toString(),-->
<!--      cellWidth: 50,-->
<!--      cellHeight: 30,-->
<!--      titleHeight: 40,-->
<!--      titleWidth: 250,-->
<!--      scale: 60,-->
<!--      datasNum: 100,-->
<!--      datasA: [],-->
<!--      datasB: mockDatas(100),-->
<!--      dataKey: 'id',-->
<!--      times: 0,-->
<!--      timeList: timeList,-->
<!--      scaleList: scaleList,-->
<!--      scrollToTime: dayjs()-->
<!--        .add(1, 'day')-->
<!--        .toString(),-->
<!--      scrollToPostion: { x: 10000, y: 10000 },-->
<!--      hideHeader: false,-->
<!--      arrayKeys: ['gtArray', 'error'],-->
<!--      scrollToY: 0,-->
<!--      positionB: {},-->
<!--      positionA: {},-->
<!--      meter: 0, // èŠ‚æ‹-->
<!--      title_list: [],-->
<!--      imp_id: '',-->
<!--      submit_flag: false,-->
<!--      search_from: {-->
<!--        page: 1,-->
<!--        rows: 10,-->
<!--        WorkTime: '',-->
<!--        BotProceName: ''-->
<!--      }-->
<!--    }-->
<!--  },-->
<!--  watch: {-->
<!--    datasNum(newV) {-->
<!--      this.datasA = mockDatas(newV)-->
<!--      this.datasB = mockDatas(newV)-->
<!--    },-->
<!--    scrollToY(val) {-->
<!--      this.positionA = { x: val }-->
<!--    }-->
<!--  },-->
<!--  created: function() {-->
<!--    this.AdvancedSchedulingSearch()-->
<!--    this.AdvancedSchedulingWorkShop()-->
<!--  },-->
<!--  methods: {-->
<!--    AdvancedSchedulingWorkShop() {-->
<!--      automaticScheduling.AdvancedSchedulingWorkShop().then(res => {-->
<!--        this.list = res-->
<!--      })-->
<!--    },-->
<!--    Search() {-->
<!--      this.form.page = 1-->
<!--      this.show = false-->
<!--      this.radio = ''-->
<!--      this.AdvancedSchedulingSearch()-->
<!--    },-->
<!--    resetFormcx() {-->
<!--      this.$nextTick(() => {-->
<!--        this.$refs.form.resetFields()-->
<!--      })-->
<!--    },-->
<!--    no_zero() {-->
<!--      if (this.times < 0) {-->
<!--        this.times = 0-->
<!--      }-->
<!--    },-->
<!--    sortChange(column, prop, order) {-->
<!--      this.radio = '';-->
<!--      (this.form.prop = column.prop), (this.form.order = column.order)-->
<!--      this.show = false-->
<!--      this.AdvancedSchedulingSearch()-->
<!--    },-->
<!--    SeachKey() {-->
<!--      this.form.page = 1-->
<!--      this.AdvancedSchedulingSearch()-->
<!--      this.show = false-->
<!--      this.radio = ''-->
<!--    },-->
<!--    changeLift() {-->
<!--      if (this.all_status) {-->
<!--        this.false_arr = []-->
<!--        this.OnclickAdvancedSchedulingDevice()-->
<!--      } else {-->
<!--        for (const i in this.bm_data) {-->
<!--          this.bm_data[i].status = false-->
<!--          this.bm_data[i].gtArray = []-->
<!--        }-->
<!--        for (const i in this.facility_data) {-->
<!--          this.facility_data[i].gtArray = []-->
<!--        }-->
<!--      }-->
<!--    },-->
<!--    changeTypes() {-->
<!--      this.OnclickAdvancedSchedulingDevice()-->
<!--    },-->
<!--    change_time() {-->
<!--      this.time_data[0] = this.value1[0] + ' 00:00'-->
<!--      this.time_data[1] = this.value1[1] + ' 23:59'-->
<!--      this.forms.StartTime = this.value1[0]-->
<!--      this.forms.EndTime = this.value1[1]-->
<!--      this.OnclickAdvancedSchedulingDevice()-->
<!--    },-->
<!--    click_box(val) {-->
<!--      if (!val.status) {-->
<!--        for (const i in this.facility_data) {-->
<!--          const new_arr = []-->
<!--          for (const j in this.facility_data[i].gtArray) {-->
<!--            if (this.facility_data[i].gtArray[j].id == val.id) {-->
<!--            } else {-->
<!--              new_arr.push(this.facility_data[i].gtArray[j])-->
<!--            }-->
<!--          }-->
<!--          this.facility_data[i].gtArray = new_arr-->
<!--        }-->
<!--      } else {-->
<!--        this.false_arr = []-->
<!--        for (const i in this.bm_data) {-->
<!--          if (!this.bm_data[i].status) {-->
<!--            this.false_arr.push(this.bm_data[i].id)-->
<!--          }-->
<!--        }-->
<!--        this.OnclickAdvancedSchedulingDevice()-->
<!--      }-->
<!--      if (!val.status) {-->
<!--        for (const i in this.bm_data) {-->
<!--          if (!this.bm_data[i].status) {-->
<!--            this.bm_data[i].gtArray = []-->
<!--          }-->
<!--        }-->
<!--      } else {-->
<!--        this.false_arr = []-->
<!--        for (const i in this.bm_data) {-->
<!--          if (!this.bm_data[i].status) {-->
<!--            this.false_arr.push(this.bm_data[i].id)-->
<!--          }-->
<!--        }-->
<!--        this.OnclickAdvancedSchedulingDevice()-->
<!--      }-->
<!--      for (const i in this.bm_data) {-->
<!--        const arr = []-->
<!--        for (const j in this.bm_data[i].gtArray) {-->
<!--          if (this.bm_data[i].gtArray[j].type != 'schedule') {-->
<!--            arr.push(this.bm_data[i].gtArray[j])-->
<!--          }-->
<!--        }-->
<!--        this.bm_data[i].gtArray = arr-->
<!--      }-->
<!--      this.real_num = 0-->
<!--    },-->
<!--    look(data) {-->
<!--      this.showDialog = true-->
<!--      this.search_from.DeviceCode = data.id-->
<!--      this.AdvancedSchedulingEquipmenTask()-->
<!--    },-->
<!--    AdvancedSchedulingEquipmenTask() {-->
<!--      automaticScheduling-->
<!--        .AdvancedSchedulingEquipmenTask(this.search_from)-->
<!--        .then(res => {-->
<!--          this.look_data = res.rows-->
<!--          this.look_total = res.total-->
<!--        })-->
<!--    },-->
<!--    sizeChange_look(val) {-->
<!--      this.search_from.rows = val-->
<!--      this.AdvancedSchedulingEquipmenTask()-->
<!--    },-->
<!--    pageChange_look(val) {-->
<!--      this.search_from.page = val-->
<!--      this.AdvancedSchedulingEquipmenTask()-->
<!--    },-->
<!--    sizeChange(val) {-->
<!--      this.form.rows = val-->
<!--      this.show = false-->
<!--      this.radio = ''-->
<!--      this.AdvancedSchedulingSearch()-->
<!--    },-->
<!--    pageChange(val) {-->
<!--      this.form.page = val-->
<!--      this.show = false-->
<!--      this.radio = ''-->
<!--      this.AdvancedSchedulingSearch()-->
<!--    },-->
<!--    // æŸ¥è¯¢-->
<!--    AdvancedSchedulingSearch() {-->
<!--      automaticScheduling.AdvancedSchedulingSearch(this.form).then(res => {-->
<!--        this.mn_data = res.rows-->
<!--        this.total = res.total-->
<!--        this.oneClick()-->
<!--      })-->
<!--    },-->
<!--    // ç‚¹å‡»å¸¦å‡ºæ•°æ®-->
<!--    OnclickAdvancedSchedulingDevice() {-->
<!--      this.facility_top()-->
<!--      automaticScheduling-->
<!--        .OnclickAdvancedSchedulingDevice(this.forms)-->
<!--        .then(res => {-->
<!--          if (res.rus.message) {-->
<!--            this.$message({-->
<!--              showClose: true,-->
<!--              type: 'error',-->
<!--              message: res.rus.message-->
<!--            })-->
<!--          }-->
<!--          this.submit_flag = false-->
<!--          const list = []-->
<!--          this.time_all = res-->
<!--          const cont = res.Cont-->
<!--          this.real_num = 0-->
<!--          for (const i in this.time_all.rows[0].children) {-->
<!--            const obj = {-->
<!--              id: '',-->
<!--              name: '',-->
<!--              AdvaDevicRhythm: '',-->
<!--              status: true,-->
<!--              colorPair: {-->
<!--                dark: 'rgb(83, 186, 241,0.8)',-->
<!--                light: 'rgb(83, 186, 241,0.1)',-->
<!--                light_capacity: 'rgb(209,239,237,0.8)',-->
<!--                h_schedule: ' rgb(100,255,192,0.8)',-->
<!--                scheduleing: 'rgb(20,182,231,0.8)'-->
<!--              },-->
<!--              gtArray: []-->
<!--            }-->
<!--            obj.id = this.time_all.rows[0].children[i].AdvaDevicNumber-->
<!--            obj.name = this.time_all.rows[0].children[i].AdvaDevicName-->
<!--            obj.AdvaDevicRhythm = this.time_all.rows[0].children[-->
<!--              i-->
<!--            ].AdvaDevicRhythm-->
<!--            list.push(obj)-->
<!--          }-->
<!--          for (const i in this.time_all.rows) {-->
<!--            for (const j in this.time_all.rows[i].children) {-->
<!--              if (this.time_all.rows[i].children[j].OneStartDate != '') {-->
<!--                this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].OneStartDate = this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].OneStartDate.split('~')-->
<!--                this.time_all.rows[i].children[j].OneStartDate[0] =-->
<!--                  this.time_all.rows[i].YearDate +-->
<!--                  ' ' +-->
<!--                  this.time_all.rows[i].children[j].OneStartDate[0]-->
<!--                this.time_all.rows[i].children[j].OneStartDate[1] =-->
<!--                  this.time_all.rows[i].YearDate +-->
<!--                  ' ' +-->
<!--                  this.time_all.rows[i].children[j].OneStartDate[1]-->
<!--              }-->
<!--              if (this.time_all.rows[i].children[j].TwoStartDate != '') {-->
<!--                this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].TwoStartDate = this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].TwoStartDate.split('~')-->
<!--                this.time_all.rows[i].children[j].TwoStartDate[0] =-->
<!--                  this.time_all.rows[i].YearDate +-->
<!--                  ' ' +-->
<!--                  this.time_all.rows[i].children[j].TwoStartDate[0]-->
<!--                this.time_all.rows[i].children[j].TwoStartDate[1] =-->
<!--                  this.time_all.rows[i].YearDate +-->
<!--                  ' ' +-->
<!--                  this.time_all.rows[i].children[j].TwoStartDate[1]-->
<!--              }-->
<!--              if (this.time_all.rows[i].children[j].ThreeStartDate != '') {-->
<!--                this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].ThreeStartDate = this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].ThreeStartDate.split('~')-->
<!--                this.time_all.rows[i].children[j].ThreeStartDate[0] =-->
<!--                  this.time_all.rows[i].YearDate +-->
<!--                  ' ' +-->
<!--                  this.time_all.rows[i].children[j].ThreeStartDate[0]-->
<!--                this.time_all.rows[i].children[j].ThreeStartDate[1] =-->
<!--                  this.time_all.rows[i].YearDate +-->
<!--                  ' ' +-->
<!--                  this.time_all.rows[i].children[j].ThreeStartDate[1]-->
<!--              }-->
<!--              if (this.time_all.rows[i].children[j].FourStartDate != '') {-->
<!--                this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].FourStartDate = this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].FourStartDate.split('~')-->
<!--                this.time_all.rows[i].children[j].FourStartDate[0] =-->
<!--                  this.time_all.rows[i].YearDate +-->
<!--                  ' ' +-->
<!--                  this.time_all.rows[i].children[j].FourStartDate[0]-->
<!--                this.time_all.rows[i].children[j].FourStartDate[1] =-->
<!--                  this.time_all.rows[i].YearDate +-->
<!--                  ' ' +-->
<!--                  this.time_all.rows[i].children[j].FourStartDate[1]-->
<!--              }-->
<!--              if (this.time_all.rows[i].children[j].FiveStartDate != '') {-->
<!--                this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].FiveStartDate = this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].FiveStartDate.split('~')-->
<!--                this.time_all.rows[i].children[j].FiveStartDate[0] =-->
<!--                  this.time_all.rows[i].YearDate +-->
<!--                  ' ' +-->
<!--                  this.time_all.rows[i].children[j].FiveStartDate[0]-->
<!--                this.time_all.rows[i].children[j].FiveStartDate[1] =-->
<!--                  this.time_all.rows[i].YearDate +-->
<!--                  ' ' +-->
<!--                  this.time_all.rows[i].children[j].FiveStartDate[1]-->
<!--              }-->
<!--            }-->
<!--          }-->
<!--          // ç»„合新的结构-->
<!--          const newList = []-->
<!--          for (const i in this.time_all.rows) {-->
<!--            for (const j in this.time_all.rows[i].children) {-->
<!--              if (this.time_all.rows[i].children[j].OneStartDate != '') {-->
<!--                const data1 = {-->
<!--                  id: '',-->
<!--                  start: '',-->
<!--                  end: '',-->
<!--                  mod: ''-->
<!--                }-->
<!--                data1.id = this.time_all.rows[i].children[j].AdvaDevicNumber-->
<!--                data1.start = this.time_all.rows[i].children[j].OneStartDate[0]-->
<!--                data1.end = this.time_all.rows[i].children[j].OneStartDate[1]-->
<!--                data1.mod =-->
<!--                  (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /-->
<!--                  100-->
<!--                newList.push(data1)-->
<!--              }-->
<!--              if (this.time_all.rows[i].children[j].TwoStartDate != '') {-->
<!--                const data2 = {-->
<!--                  id: '',-->
<!--                  start: '',-->
<!--                  end: '',-->
<!--                  mod: ''-->
<!--                }-->
<!--                data2.id = this.time_all.rows[i].children[j].AdvaDevicNumber-->
<!--                data2.start = this.time_all.rows[i].children[j].TwoStartDate[0]-->
<!--                data2.end = this.time_all.rows[i].children[j].TwoStartDate[1]-->
<!--                data2.mod =-->
<!--                  (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /-->
<!--                  100-->
<!--                newList.push(data2)-->
<!--              }-->
<!--              if (this.time_all.rows[i].children[j].ThreeStartDate != '') {-->
<!--                const data3 = {-->
<!--                  id: '',-->
<!--                  start: '',-->
<!--                  end: '',-->
<!--                  mod: ''-->
<!--                }-->
<!--                data3.id = this.time_all.rows[i].children[j].AdvaDevicNumber-->
<!--                data3.start = this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].ThreeStartDate[0]-->
<!--                data3.end = this.time_all.rows[i].children[j].ThreeStartDate[1]-->
<!--                data3.mod =-->
<!--                  (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /-->
<!--                  100-->
<!--                newList.push(data3)-->
<!--              }-->
<!--              if (this.time_all.rows[i].children[j].FourStartDate != '') {-->
<!--                const data4 = {-->
<!--                  id: '',-->
<!--                  start: '',-->
<!--                  end: '',-->
<!--                  mod: ''-->
<!--                }-->
<!--                data4.id = this.time_all.rows[i].children[j].AdvaDevicNumber-->
<!--                data4.start = this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].FourStartDate[0]-->
<!--                data4.end = this.time_all.rows[i].children[j].FourStartDate[1]-->
<!--                data4.mod =-->
<!--                  (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /-->
<!--                  100-->
<!--                newList.push(data4)-->
<!--              }-->
<!--              if (this.time_all.rows[i].children[j].FiveStartDate != '') {-->
<!--                const data5 = {-->
<!--                  id: '',-->
<!--                  start: '',-->
<!--                  end: '',-->
<!--                  mod: ''-->
<!--                }-->
<!--                data5.id = this.time_all.rows[i].children[j].AdvaDevicNumber-->
<!--                data5.start = this.time_all.rows[i].children[-->
<!--                  j-->
<!--                ].FiveStartDate[0]-->
<!--                data5.end = this.time_all.rows[i].children[j].FiveStartDate[1]-->
<!--                data5.mod =-->
<!--                  (this.time_all.rows[i].children[j].AdvaDevicCropMob * 1) /-->
<!--                  100-->
<!--                newList.push(data5)-->
<!--              }-->
<!--            }-->
<!--          }-->
<!--          for (const i in list) {-->
<!--            this.pushTiem(newList, list[i].id, list[i].gtArray)-->
<!--          }-->
<!--          this.bm_data = list-->
<!--          const _this = this-->
<!--          if (cont != '') {-->
<!--            for (const i in cont) {-->
<!--              for (const j in this.bm_data) {-->
<!--                if (this.bm_data[j].id == cont[i].EQP_CODE) {-->
<!--                  const data = {-->
<!--                    id: cont[i].EQP_CODE,-->
<!--                    number: cont[i].ALLOC_QTY,-->
<!--                    cl_name: cont[i].PART_NAME,-->
<!--                    cl_code: this.cl_code,-->
<!--                    work_order: cont[i].WO_CODE,-->
<!--                    STATUS: _this.AdvaScheUom,-->
<!--                    start: cont[i].TIME_START,-->
<!--                    end: cont[i].TIME_END,-->
<!--                    type: cont[i].STATUS == 'S' ? 'h_schedule' : 'bm_schedule'-->
<!--                  }-->
<!--                  this.bm_data[j].flag = 'isCont'-->
<!--                  this.bm_data[j].gtArray.unshift(data)-->
<!--                }-->
<!--              }-->
<!--            }-->
<!--          }-->
<!--          if (this.false_arr != '') {-->
<!--            for (const j in this.bm_data) {-->
<!--              if (this.false_arr.indexOf(this.bm_data[j].id) >= 0) {-->
<!--                this.bm_data[j].gtArray = []-->
<!--                this.bm_data[j].status = false-->
<!--              }-->
<!--            }-->
<!--          }-->
<!--        })-->
<!--    },-->
<!--    // æ¢åž‹æ—¶é—´-->
<!--    MinutesTest(time) {-->
<!--      var sdate1 = new Date(time)-->
<!--      sdate1.setMinutes(sdate1.getMinutes() + this.times * 1)-->
<!--      var now =-->
<!--        sdate1.getFullYear() +-->
<!--        '-' +-->
<!--        this.add_one(sdate1.getMonth()) +-->
<!--        '-' +-->
<!--        sdate1.getDate() +-->
<!--        ' ' +-->
<!--        sdate1.getHours() +-->
<!--        ':' +-->
<!--        sdate1.getMinutes() +-->
<!--        ':' +-->
<!--        sdate1.getSeconds()-->
<!--      return now-->
<!--    },-->
<!--    // +1-->
<!--    add_one(date) {-->
<!--      return parseInt(date) + 1-->
<!--    },-->
<!--    // æ’入产能时间段-->
<!--    pushTiem(newList, id, arr) {-->
<!--      for (const i in newList) {-->
<!--        if (newList[i].id == id) {-->
<!--          const data = {-->
<!--            start: newList[i].start,-->
<!--            end: newList[i].end,-->
<!--            id: newList[i].id,-->
<!--            mod: newList[i].mod,-->
<!--            type: 'capacity'-->
<!--          }-->
<!--          arr.push(data)-->
<!--        }-->
<!--      }-->
<!--    },-->
<!--    getNowFormatDate() {-->
<!--      var date = new Date()-->
<!--      var seperator1 = '-'-->
<!--      var year = date.getFullYear()-->
<!--      var month = date.getMonth() + 1-->
<!--      // var strDate = date.getDate()+1;-->
<!--      var strDate = date.getDate()-->
<!--      if (month >= 1 && month <= 9) {-->
<!--        month = '0' + month-->
<!--      }-->
<!--      if (strDate >= 0 && strDate <= 9) {-->
<!--        strDate = '0' + strDate-->
<!--      }-->
<!--      var currentdate = year + seperator1 + month + seperator1 + strDate-->
<!--      return currentdate-->
<!--    },-->
<!--    getCurrentRow(row) {-->
<!--      // this.show =true-->
<!--      this.meter = row.AdvaScheQty * 1 - row.AdvaScheYPQty * 1 // å¯ä»¥åšä¸ªæ•°-->
<!--      this.value1 = []-->
<!--      this.cl_name = row.AdvaSchePartName-->
<!--      this.cl_code = row.AdvaSchePartNumber-->
<!--      this.AdvaScheUom = row.AdvaScheUom-->
<!--      this.work_order = row.AdvaScheWorkCode-->
<!--      this.value1.push(this.getNowFormatDate())-->
<!--      this.value1.push(row.AdvaScheEndDate)-->
<!--      if (this.value1 != '') {-->
<!--        this.time_data[0] = this.value1[0] + ' 00:00'-->
<!--        this.time_data[1] = this.value1[1] + ' 23:59'-->
<!--      }-->
<!--      this.forms.WorkCode = row.AdvaScheWorkCode-->
<!--      this.forms.WorkShop = row.AdvaScheWorkShopid-->
<!--      this.forms.PartNumber = row.AdvaSchePartNumber-->
<!--      this.forms.BotProceCode = row.AdvaScheBotProcid-->
<!--      this.forms.StartTime = this.getNowFormatDate()-->
<!--      this.forms.EndTime = row.AdvaScheEndDate-->
<!--      this.OnclickAdvancedSchedulingDevice()-->
<!--      this.formUpdata.WorkCode = row.AdvaScheWorkCode-->
<!--      this.formUpdata.BotProceCode = row.AdvaScheBotProcid-->
<!--      this.search_from.WorkTime =-->
<!--        this.getNowFormatDate() + '~' + row.AdvaScheEndDate-->
<!--      this.search_from.BotProceName = row.AdvaScheBotProcName-->
<!--    },-->
<!--    // æäº¤æŽ’程-->
<!--    click_yes() {-->
<!--      if (this.submit_flag) {-->
<!--        this.$message({-->
<!--          showClose: true,-->
<!--          type: 'error',-->
<!--          message: '数量未排完,请设置产能时间'-->
<!--        })-->
<!--      } else {-->
<!--        const list = [] // æäº¤æ•°ç»„-->
<!--        for (const i in this.bm_data) {-->
<!--          const arr = []-->
<!--          for (const j in this.bm_data[i].gtArray) {-->
<!--            if (this.bm_data[i].gtArray[j].type == 'schedule') {-->
<!--              arr.push(this.bm_data[i].gtArray[j])-->
<!--            }-->
<!--          }-->
<!--          if (arr != '') {-->
<!--            for (const i in arr) {-->
<!--              const data = {-->
<!--                AlreDevicNumber: '',-->
<!--                AlreStartDate: '',-->
<!--                AlreEndDate: '',-->
<!--                AlreQty: ''-->
<!--              }-->
<!--              data.AlreDevicNumber = arr[i].id-->
<!--              data.AlreStartDate = arr[i].start-->
<!--              data.AlreEndDate = arr[i].end-->
<!--              data.AlreQty = arr[i].number-->
<!--              list.push(data)-->
<!--            }-->
<!--          }-->
<!--        }-->
<!--        // æŽ’程相同设备获取开始时间 ç»“束时间 æ•°é‡çš„æ€»å’Œ-->
<!--        // è¿‡æ»¤-->
<!--        let updata = []-->
<!--        for (const i in list) {-->
<!--          if (list[i].AlreStartDate != '') {-->
<!--            updata.push(list[i])-->
<!--          }-->
<!--        }-->
<!--        updata = JSON.stringify(updata)-->
<!--        this.formUpdata.json = updata-->
<!--        if (list == '') {-->
<!--          this.$message({-->
<!--            showClose: true,-->
<!--            message: '请先预排',-->
<!--            type: 'error'-->
<!--          })-->
<!--          return false-->
<!--        }-->
<!--        automaticScheduling-->
<!--          .SubmitAlreadyScheduling(this.formUpdata)-->
<!--          .then(res => {-->
<!--            if (res.statusCode == 300) {-->
<!--              this.$message({-->
<!--                showClose: true,-->
<!--                message: res.message,-->
<!--                type: 'error'-->
<!--              })-->
<!--            } else {-->
<!--              this.$message({-->
<!--                showClose: true,-->
<!--                message: res.message,-->
<!--                type: 'success'-->
<!--              })-->
<!--            }-->
<!--            this.meter = 0-->
<!--            this.real_num = 0-->
<!--            this.OnclickAdvancedSchedulingDevice()-->
<!--            this.AdvancedSchedulingSearch()-->
<!--          })-->
<!--      }-->
<!--    },-->
<!--    // æ—¶é—´/设备优先排程-->
<!--    click_schedule() {-->
<!--      const timestamp = new Date().toLocaleDateString()-->
<!--      if (new Date(this.value1[0]) < new Date(timestamp)) {-->
<!--        this.$message({-->
<!--          showClose: true,-->
<!--          type: 'error',-->
<!--          message: '排程时间不可以小于当前时间'-->
<!--        })-->
<!--        return false-->
<!--      }-->
<!--      this.nitialize()-->
<!--      // è®¾å¤‡ä¼˜å…ˆ-->
<!--      if (this.bm_data != '' && this.types == 'N') {-->
<!--        this.fun_time()-->
<!--        this.change_num(this.bm_data)-->
<!--      } else if (this.facility_data != '' && this.types == 'Y') {-->
<!--        this.time_nitalize()-->
<!--        this.fun_facility()-->
<!--        this.dataTransition()-->
<!--        this.change_num(this.bm_data)-->
<!--      }-->
<!--    },-->
<!--    // æ‰‹åŠ¨è¿‡æ»¤æ‰€æœ‰æ—¶é—´å·²æŽ’ç¨‹-->
<!--    time_nitalize() {-->
<!--      for (const i in this.facility_data) {-->
<!--        this.facility_data[i].gtArray = this.facility_data[i].gtArray.filter(item => item.type != 'schedule')-->
<!--      }-->
<!--    },-->
<!--    // æ‰‹åŠ¨è¿‡æ»¤æ‰€æœ‰è®¾å¤‡å·²æŽ’ç¨‹-->
<!--    nitialize() {-->
<!--      for (const i in this.bm_data) {-->
<!--        const newArr = []-->
<!--        for (const j in this.bm_data[i].gtArray) {-->
<!--          if (this.bm_data[i].gtArray[j].type != 'schedule') {-->
<!--            newArr.push(this.bm_data[i].gtArray[j])-->
<!--          }-->
<!--        }-->
<!--        this.bm_data[i].gtArray = newArr-->
<!--      }-->
<!--    },-->
<!--    // ç»™æŽ’程最后一个修改数量-->
<!--    change_num(arr) {-->
<!--      this.real_num = 0 // çœŸå®žå·²æŽ’数量-->
<!--      let num = 0 // å–整已排数量-->
<!--      const arr_num = [] // å·²æŽ’数据-->
<!--      let mend_num = 0-->
<!--      const len = 0-->
<!--      for (const i in arr) {-->
<!--        for (const j in arr[i].gtArray) {-->
<!--          if (arr[i].gtArray[j].type == 'schedule') {-->
<!--            arr_num.unshift(arr[i].gtArray[j])-->
<!--          }-->
<!--        }-->
<!--      }-->
<!--      for (const n in arr_num) {-->
<!--        this.real_num += arr_num[n].real_number-->
<!--        num += arr_num[n].number * 1-->
<!--      }-->
<!--      this.real_num = Math.ceil(this.real_num)-->
<!--      const y10 = this.meter - this.real_num-->
<!--      if (y10 <= 10) {-->
<!--        this.real_num = this.meter-->
<!--        mend_num = this.meter - num-->
<!--      } else {-->
<!--      }-->
<!--      if (this.real_num * 1 == this.meter * 1) {-->
<!--        // mend_num =  this.meter - num-->
<!--      } else {-->
<!--        this.submit_flag = true-->
<!--      }-->
<!--      for (const i in this.bm_data) {-->
<!--        for (const j in this.bm_data[i].gtArray) {-->
<!--          if (-->
<!--            this.bm_data[i].gtArray[j].type == 'schedule' &&-->
<!--            this.bm_data[i].gtArray[j].end_num-->
<!--          ) {-->
<!--            this.bm_data[i].gtArray[j].number =-->
<!--              this.bm_data[i].gtArray[j].number * 1 + mend_num-->
<!--          }-->
<!--        }-->
<!--      }-->
<!--    },-->
<!--    fun_time() {-->
<!--      let all_num = this.meter-->
<!--      const all_time = []-->
<!--      let flag1 = 0-->
<!--      const mod = this.bm_data[0].mod-->
<!--      //  let nowTime = this.bm_data[0].AdvaDevicRhythm*all_num-->
<!--      for (const i in this.bm_data) {-->
<!--        let end_arr = [] // å·²æŽ’程的数组-->
<!--        let nend_arr = [] // å¾…排程的数组-->
<!--        const add_arr = [] // å·²æŽ’程的数组-->
<!--        let capacity_arr = [] // è¦æŽ’程的数组-->
<!--        this.bm_data[i].gtArray.sort((a, b) => new Date(a.end).getTime() - new Date(b.end).getTime())-->
<!--        // let capacity_end = ''-->
<!--        end_arr = this.bm_data[i].gtArray.filter(item => item.type == 'h_schedule')-->
<!--        nend_arr = this.bm_data[i].gtArray.filter(item => item.type == 'capacity')-->
<!--        if (end_arr && end_arr.length > 0) {-->
<!--          capacity_arr = nend_arr.map(item => {-->
<!--            // æŽ’除掉已经排程的存在hshedule,start,end都相等的情况-->
<!--            const schedule = end_arr.filter(schedule => {-->
<!--              return new Date(item.start).getTime() <= new Date(schedule.start).getTime() &&-->
<!--                new Date(item.end).getTime() > new Date(schedule.end).getTime()-->
<!--            })-->
<!--            if (schedule && schedule.length > 0) {-->
<!--              item.start = this.MinutesTest(schedule[0]['end'])-->
<!--            }-->
<!--            const schedule1 = end_arr.filter(schedule => {-->
<!--              return new Date(item.start).getTime() == new Date(schedule.start).getTime() &&-->
<!--                new Date(item.end).getTime() == new Date(schedule.end).getTime()-->
<!--            })-->
<!--            if (schedule1 && schedule1.length > 0) {-->
<!--              item.capacity = false-->
<!--            }-->
<!--            return item-->
<!--          }).filter(item => item.capacity != false)-->
<!--        } else {-->
<!--          capacity_arr = nend_arr-->
<!--        }-->
<!--        const id_obj = {-->
<!--          id: '',-->
<!--          start_time: ''-->
<!--        }-->
<!--        if (end_arr != '') {-->
<!--          (id_obj.id = end_arr[0].id), (id_obj.start_time = end_arr[0].end)-->
<!--        }-->
<!--        for (const w in capacity_arr) {-->
<!--          let end_time = ''-->
<!--          let mistiming = ''-->
<!--          const data = {-->
<!--            id: capacity_arr[w].id,-->
<!--            start: '',-->
<!--            end: '',-->
<!--            type: 'schedule',-->
<!--            cl_name: this.cl_name,-->
<!--            cl_code: this.cl_code,-->
<!--            work_order: this.work_order,-->
<!--            number: 0,-->
<!--            real_number: 0-->
<!--          }-->
<!--          if (-->
<!--            id_obj.start_time != '' &&-->
<!--            flag1 == 0 &&-->
<!--            new Date(id_obj.start_time) >= new Date(capacity_arr[w].start)-->
<!--          ) {-->
<!--            data.start = this.MinutesTest(id_obj.start_time)-->
<!--            flag1 = 1-->
<!--          } else {-->
<!--            data.start = capacity_arr[w].start-->
<!--          }-->
<!--          let nowTime =-->
<!--            (this.bm_data[i].AdvaDevicRhythm * all_num) / capacity_arr[w].mod-->
<!--          end_time = this.formSeconds(nowTime, data.start, capacity_arr[w].mod) // æ€»å…±çš„结束时间-->
<!--          data.end = end_time-->
<!--          mistiming = this.formTime(-->
<!--            end_time,-->
<!--            capacity_arr[w].end,-->
<!--            capacity_arr[w].mod-->
<!--          ) // æ€»å…±çš„结束时间-当前的结束时间 = å‰©ä¸‹å¤šä¹…æ—¶é—´-->
<!--          if (mistiming >= 0) {-->
<!--            console.log(-->
<!--              new Date(data.end) - new Date(data.start),-->
<!--              capacity_arr[w].mod,-->
<!--              this.bm_data[i].AdvaDevicRhythm,-->
<!--              '阿斯顿发斯蒂芬'-->
<!--            )-->
<!--            data.number =-->
<!--              ((new Date(data.end) - new Date(data.start)) *-->
<!--                capacity_arr[w].mod) /-->
<!--              this.bm_data[i].AdvaDevicRhythm /-->
<!--              1000-->
<!--            data.real_number =-->
<!--              ((new Date(data.end) - new Date(data.start)) *-->
<!--                capacity_arr[w].mod) /-->
<!--              this.bm_data[i].AdvaDevicRhythm /-->
<!--              1000-->
<!--            data.number = data.number.toFixed(0)-->
<!--            data.end_num = true-->
<!--            if (new Date(data.start) >= new Date(data.end)) {-->
<!--            } else {-->
<!--              this.bm_data[i].gtArray.push(data)-->
<!--            }-->
<!--            return false-->
<!--          } else {-->
<!--            data.end = capacity_arr[w].end-->
<!--            data.number =-->
<!--              ((new Date(data.end) - new Date(data.start)) *-->
<!--                capacity_arr[w].mod) /-->
<!--              this.bm_data[i].AdvaDevicRhythm /-->
<!--              1000-->
<!--            data.real_number =-->
<!--              ((new Date(data.end) - new Date(data.start)) *-->
<!--                capacity_arr[w].mod) /-->
<!--              this.bm_data[i].AdvaDevicRhythm /-->
<!--              1000-->
<!--            data.number = data.number.toFixed(0)-->
<!--            nowTime =-->
<!--              (all_num - data.real_number) * this.bm_data[i].AdvaDevicRhythm-->
<!--            all_num = all_num - data.real_number-->
<!--            if (new Date(data.start) >= new Date(data.end)) {-->
<!--            } else {-->
<!--              this.bm_data[i].gtArray.push(data)-->
<!--            }-->
<!--          }-->
<!--        }-->
<!--      }-->
<!--    },-->
<!--    // è®¾å¤‡æŽ’程方法-->
<!--    fun_facility() {-->
<!--      // æŽ’除未勾选项-->
<!--      for (const i in this.facility_data) {-->
<!--        const newArr = []-->
<!--        for (const j in this.facility_data[i].gtArray) {-->
<!--          if (this.false_arr.indexOf(this.facility_data[i].gtArray[j].id) < 0) {-->
<!--            newArr.push(this.facility_data[i].gtArray[j])-->
<!--          }-->
<!--        }-->
<!--        this.facility_data[i].gtArray = newArr-->
<!--      }-->
<!--      let all_num = this.meter-->
<!--      const all_time = []-->
<!--      const flag1 = 0-->
<!--      // let nowTime = this.facility_data[0].AdvaDevicRhythm*all_num  //数量OK-->
<!--      for (const i in this.facility_data) {-->
<!--        let end_arr = []-->
<!--        let nend_arr = [] // æŽ’程的数组-->
<!--        const add_arr = [] // å·²æŽ’程的数组-->
<!--        let capacity_arr = [] // è¦æŽ’程的数组-->
<!--        // this.facility_data[i].gtArray.sort((a,b) => new Date(a.end).getTime() - new Date(b.end).getTime())-->
<!--        // let capacity_end = ''-->
<!--        end_arr = this.facility_data[i].gtArray.filter(item => item.type == 'h_schedule')-->
<!--        nend_arr = this.facility_data[i].gtArray.filter(item => item.type == 'capacity')-->
<!--        console.log(nend_arr)-->
<!--        capacity_arr = JSON.parse(JSON.stringify(nend_arr))-->
<!--        end_arr.forEach(item => {-->
<!--          for (let i = 0; i < capacity_arr.length; i++) {-->
<!--            if (new Date(capacity_arr[i].start).getTime() === new Date(item.start).getTime()) {-->
<!--              console.log(i, capacity_arr[i], '哇哈哈')-->
<!--              capacity_arr.splice(i, 1)-->
<!--              break-->
<!--            }-->
<!--          }-->
<!--        })-->
<!--        console.log(capacity_arr, '大西瓜')-->
<!--        if (!capacity_arr || capacity_arr.length == 0) break-->
<!--        // const firstCapacity = capacity_arr[0]-->
<!--        const schedule_arr = end_arr.filter(item => {-->
<!--          const remain = nend_arr.some(sitem => {-->
<!--            return new Date(sitem.start).getTime() === new Date(item.start).getTime() &&-->
<!--              new Date(item.end).getTime() < new Date(sitem.end).getTime()-->
<!--          })-->
<!--          return remain-->
<!--        })-->
<!--        console.log(schedule_arr)-->
<!--        if (schedule_arr && schedule_arr.length > 0) {-->
<!--          const scheduleCan = schedule_arr.map(item => {-->
<!--            const capcity = nend_arr.filter(sitem => {-->
<!--              return new Date(sitem.start).getTime() === new Date(item.start).getTime() &&-->
<!--                new Date(item.end).getTime() < new Date(sitem.end).getTime()-->
<!--            })[0]-->
<!--            console.log('capacity', capcity)-->
<!--            capcity.start = this.MinutesTest(item.end)-->
<!--            return capcity-->
<!--          })-->
<!--          const newSchedule = JSON.parse(JSON.stringify(scheduleCan))-->
<!--          capacity_arr = newSchedule.concat(capacity_arr)-->
<!--        }-->
<!--        console.log(schedule_arr)-->
<!--        console.log('可排程数组', capacity_arr)-->
<!--        const id_obj = {}-->
<!--        if (end_arr != '') {-->
<!--          (id_obj.id = end_arr[0].id), (id_obj.start_time = end_arr[0].end)-->
<!--        }-->
<!--        for (const w in capacity_arr) {-->
<!--          let end_time-->
<!--          let mistiming-->
<!--          const data = {-->
<!--            id: capacity_arr[w].id,-->
<!--            start: '',-->
<!--            end: '',-->
<!--            type: 'schedule',-->
<!--            cl_name: this.cl_name,-->
<!--            cl_code: this.cl_code,-->
<!--            work_order: this.work_order,-->
<!--            number: 0,-->
<!--            real_number: 0-->
<!--          }-->
<!--          //  console.log(id_obj.start_time)-->
<!--          if (-->
<!--            id_obj &&-->
<!--            new Date(id_obj.start_time).getTime() >=-->
<!--            new Date(capacity_arr[w].start).getTime()-->
<!--          ) {-->
<!--            if (data.id == id_obj.id) {-->
<!--              data.start = this.MinutesTest(id_obj.start_time)-->
<!--              //  flag1 =1-->
<!--            } else {-->
<!--              data.start = capacity_arr[w].start-->
<!--              //  console.log(data.start)-->
<!--              //  flag1 =1-->
<!--            }-->
<!--          } else {-->
<!--            data.start = capacity_arr[w].start-->
<!--          }-->
<!--          // let nowTime = this.facility_data[0].AdvaDevicRhythm*all_num-->
<!--          let nowTime =-->
<!--            (capacity_arr[w].rhythm * all_num) / capacity_arr[w].mod-->
<!--          end_time = this.formSeconds(nowTime, data.start)-->
<!--          data.end = end_time-->
<!--          mistiming = this.formTime(end_time, capacity_arr[w].end)-->
<!--          if (mistiming >= 0) {-->
<!--            data.number =-->
<!--              ((new Date(data.end) - new Date(data.start)) *-->
<!--                capacity_arr[w].mod) /-->
<!--              capacity_arr[w].rhythm /-->
<!--              1000-->
<!--            data.real_number =-->
<!--              ((new Date(data.end) - new Date(data.start)) *-->
<!--                capacity_arr[w].mod) /-->
<!--              capacity_arr[w].rhythm /-->
<!--              1000-->
<!--            data.number = data.number.toFixed(0)-->
<!--            data.end_num = true-->
<!--            if (new Date(data.start) >= new Date(data.end)) {-->
<!--            } else {-->
<!--              this.facility_data[i].gtArray.push(data)-->
<!--            }-->
<!--            return false-->
<!--          } else {-->
<!--            data.end = capacity_arr[w].end-->
<!--            data.number =-->
<!--              ((new Date(data.end) - new Date(data.start)) *-->
<!--                capacity_arr[w].mod) /-->
<!--              capacity_arr[w].rhythm /-->
<!--              1000-->
<!--            data.real_number =-->
<!--              ((new Date(data.end) - new Date(data.start)) *-->
<!--                capacity_arr[w].mod) /-->
<!--              capacity_arr[w].rhythm /-->
<!--              1000-->
<!--            data.number = data.number.toFixed(0)-->
<!--            nowTime = (all_num - data.real_number) * capacity_arr[w].rhythm-->
<!--            all_num = all_num - data.real_number-->
<!--            //  nowTime = mistiming * -1-->
<!--            if (new Date(data.start) >= new Date(data.end)) {-->
<!--            } else {-->
<!--              this.facility_data[i].gtArray.push(data)-->
<!--            }-->
<!--          }-->
<!--        }-->
<!--      }-->
<!--    },-->
<!--    // ç»™è®¾å¤‡è½¬æ¢æ ¼å¼-->
<!--    dataTransition() {-->
<!--      this.bm_data = []-->
<!--      const data = this.facility_data-->
<!--      const all = []-->
<!--      const list = this.title_list-->
<!--      for (const i in data) {-->
<!--        for (const j in data[i].gtArray) {-->
<!--          all.push(data[i].gtArray[j])-->
<!--        }-->
<!--      }-->
<!--      for (const i in list) {-->
<!--        list[i].gtArray = []-->
<!--        this.pushTiemsss(all, list[i].id, list[i].gtArray)-->
<!--      }-->
<!--      for (const n in list) {-->
<!--        if (list[n].gtArray.length == 0) {-->
<!--          list[n].status = false-->
<!--        }-->
<!--      }-->
<!--      // console.log(list)-->
<!--      this.bm_data = list-->
<!--    },-->
<!--    // æ’入产能时间段-->
<!--    pushTiemsss(newList, id, arr) {-->
<!--      for (const i in newList) {-->
<!--        if (newList[i].id == id) {-->
<!--          arr.push(newList[i])-->
<!--        }-->
<!--      }-->
<!--    },-->
<!--    // è®¾å¤‡ä¼˜å…ˆ-->
<!--    facility_top() {-->
<!--      automaticScheduling-->
<!--        .OnclickAdvancedSchedulingDevice(this.forms)-->
<!--        .then(res => {-->
<!--          this.show = true-->
<!--          const data = res.rows-->
<!--          const cont = res.Cont-->
<!--          this.title_list = []-->
<!--          for (const i in data[0].children) {-->
<!--            const obj = {-->
<!--              id: '',-->
<!--              name: '',-->
<!--              status: true,-->
<!--              AdvaDevicRhythm: '',-->
<!--              // mod:'',-->
<!--              colorPair: {-->
<!--                dark: 'rgb(83, 186, 241,0.8)',-->
<!--                light: 'rgb(83, 186, 241,0.1)',-->
<!--                light_capacity: 'rgb(209,239,237,0.8)',-->
<!--                h_schedule: ' rgb(100,255,192,0.8)',-->
<!--                scheduleing: 'rgb(20,182,231,0.8)'-->
<!--              },-->
<!--              gtArray: []-->
<!--            }-->
<!--            obj.id = data[0].children[i].AdvaDevicNumber-->
<!--            obj.name = data[0].children[i].AdvaDevicName-->
<!--            obj.AdvaDevicRhythm = data[0].children[i].AdvaDevicRhythm-->
<!--            // obj.mod =data[0].children[i].AdvaDevicCropMob *1-->
<!--            this.title_list.push(obj)-->
<!--          }-->
<!--          for (const i in data) {-->
<!--            for (const j in data[i].children) {-->
<!--              if (data[i].children[j].OneStartDate != '') {-->
<!--                data[i].children[j].OneStartDate = data[i].children[-->
<!--                  j-->
<!--                ].OneStartDate.split('~')-->
<!--                data[i].children[j].OneStartDate[0] =-->
<!--                  data[i].YearDate + ' ' + data[i].children[j].OneStartDate[0]-->
<!--                data[i].children[j].OneStartDate[1] =-->
<!--                  data[i].YearDate + ' ' + data[i].children[j].OneStartDate[1]-->
<!--              }-->
<!--              if (data[i].children[j].TwoStartDate != '') {-->
<!--                data[i].children[j].TwoStartDate = data[i].children[-->
<!--                  j-->
<!--                ].TwoStartDate.split('~')-->
<!--                data[i].children[j].TwoStartDate[0] =-->
<!--                  data[i].YearDate + ' ' + data[i].children[j].TwoStartDate[0]-->
<!--                data[i].children[j].TwoStartDate[1] =-->
<!--                  data[i].YearDate + ' ' + data[i].children[j].TwoStartDate[1]-->
<!--              }-->
<!--              if (data[i].children[j].ThreeStartDate != '') {-->
<!--                data[i].children[j].ThreeStartDate = data[i].children[-->
<!--                  j-->
<!--                ].ThreeStartDate.split('~')-->
<!--                data[i].children[j].ThreeStartDate[0] =-->
<!--                  data[i].YearDate +-->
<!--                  ' ' +-->
<!--                  data[i].children[j].ThreeStartDate[0]-->
<!--                data[i].children[j].ThreeStartDate[1] =-->
<!--                  data[i].YearDate +-->
<!--                  ' ' +-->
<!--                  data[i].children[j].ThreeStartDate[1]-->
<!--              }-->
<!--              if (data[i].children[j].FourStartDate != '') {-->
<!--                data[i].children[j].FourStartDate = data[i].children[-->
<!--                  j-->
<!--                ].FourStartDate.split('~')-->
<!--                data[i].children[j].FourStartDate[0] =-->
<!--                  data[i].YearDate + ' ' + data[i].children[j].FourStartDate[0]-->
<!--                data[i].children[j].FourStartDate[1] =-->
<!--                  data[i].YearDate + ' ' + data[i].children[j].FourStartDate[1]-->
<!--              }-->
<!--              if (data[i].children[j].FiveStartDate != '') {-->
<!--                data[i].children[j].FiveStartDate = data[i].children[-->
<!--                  j-->
<!--                ].FiveStartDate.split('~')-->
<!--                data[i].children[j].FiveStartDate[0] =-->
<!--                  data[i].YearDate + ' ' + data[i].children[j].FiveStartDate[0]-->
<!--                data[i].children[j].FiveStartDate[1] =-->
<!--                  data[i].YearDate + ' ' + data[i].children[j].FiveStartDate[1]-->
<!--              }-->
<!--            }-->
<!--          }-->
<!--          // æ›´æ”¹æ ¼å¼-->
<!--          this.facility_data = []-->
<!--          for (const i in data) {-->
<!--            const time = {-->
<!--              date: data[i].YearDate,-->
<!--              AdvaDevicRhythm: '',-->
<!--              gtArray: []-->
<!--            }-->
<!--            if (data[i].children != '') {-->
<!--              time.AdvaDevicRhythm = data[i].children[0].AdvaDevicRhythm-->
<!--            }-->
<!--            for (const j in data[i].children) {-->
<!--              if (data[i].children[j].OneStartDate != '') {-->
<!--                const icu1 = {-->
<!--                  name: data[i].children[j].AdvaDevicName,-->
<!--                  id: data[i].children[j].AdvaDevicNumber,-->
<!--                  type: 'capacity',-->
<!--                  rhythm: data[i].children[j].AdvaDevicRhythm,-->
<!--                  start: data[i].children[j].OneStartDate[0],-->
<!--                  end: data[i].children[j].OneStartDate[1],-->
<!--                  mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100-->
<!--                }-->
<!--                time.gtArray.push(icu1)-->
<!--              }-->
<!--              if (data[i].children[j].TwoStartDate != '') {-->
<!--                const icu2 = {-->
<!--                  name: data[i].children[j].AdvaDevicName,-->
<!--                  id: data[i].children[j].AdvaDevicNumber,-->
<!--                  type: 'capacity',-->
<!--                  rhythm: data[i].children[j].AdvaDevicRhythm,-->
<!--                  start: data[i].children[j].TwoStartDate[0],-->
<!--                  end: data[i].children[j].TwoStartDate[1],-->
<!--                  mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100-->
<!--                }-->
<!--                time.gtArray.push(icu2)-->
<!--              }-->
<!--              if (data[i].children[j].ThreeStartDate != '') {-->
<!--                const icu3 = {-->
<!--                  name: data[i].children[j].AdvaDevicName,-->
<!--                  id: data[i].children[j].AdvaDevicNumber,-->
<!--                  type: 'capacity',-->
<!--                  rhythm: data[i].children[j].AdvaDevicRhythm,-->
<!--                  start: data[i].children[j].ThreeStartDate[0],-->
<!--                  end: data[i].children[j].ThreeStartDate[1],-->
<!--                  mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100-->
<!--                }-->
<!--                time.gtArray.push(icu3)-->
<!--              }-->
<!--              if (data[i].children[j].FourStartDate != '') {-->
<!--                const icu4 = {-->
<!--                  name: data[i].children[j].AdvaDevicName,-->
<!--                  id: data[i].children[j].AdvaDevicNumber,-->
<!--                  type: 'capacity',-->
<!--                  rhythm: data[i].children[j].AdvaDevicRhythm,-->
<!--                  start: data[i].children[j].FourStartDate[0],-->
<!--                  end: data[i].children[j].FourStartDate[1],-->
<!--                  mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100-->
<!--                }-->
<!--                time.gtArray.push(icu4)-->
<!--              }-->
<!--              if (data[i].children[j].FiveStartDate != '') {-->
<!--                const icu5 = {-->
<!--                  name: data[i].children[j].AdvaDevicName,-->
<!--                  id: data[i].children[j].AdvaDevicNumber,-->
<!--                  type: 'capacity',-->
<!--                  rhythm: data[i].children[j].AdvaDevicRhythm,-->
<!--                  start: data[i].children[j].FiveStartDate[0],-->
<!--                  end: data[i].children[j].FiveStartDate[1],-->
<!--                  mod: (data[i].children[j].AdvaDevicCropMob * 1) / 100-->
<!--                }-->
<!--                time.gtArray.push(icu5)-->
<!--              }-->
<!--            }-->
<!--            this.facility_data.push(time)-->
<!--          }-->
<!--          if (cont != '') {-->
<!--            for (const i in cont) {-->
<!--              const date_time = cont[i].TIME_START.split(' ')-->
<!--              const cont_date = date_time[0]-->
<!--              for (const j in this.facility_data) {-->
<!--                const data = {-->
<!--                  id: cont[i].EQP_CODE,-->
<!--                  date: cont_date,-->
<!--                  number: cont[i].ALLOC_QTY,-->
<!--                  cl_name: cont[i].PART_NAME,-->
<!--                  cl_code: this.cl_code,-->
<!--                  work_order: cont[i].WO_CODE,-->
<!--                  start: cont[i].TIME_START,-->
<!--                  end: cont[i].TIME_END,-->
<!--                  type: 'h_schedule'-->
<!--                }-->
<!--                if (this.facility_data[j].date == data.date) {-->
<!--                  this.facility_data[j].gtArray.unshift(data)-->
<!--                }-->
<!--              }-->
<!--            }-->
<!--          }-->
<!--        })-->
<!--    },-->
<!--    // æŽ’程方法-->
<!--    formSeconds(s1, start, mod) {-->
<!--      const nowData = new Date(start)-->
<!--      // ç®—出当前排程的结束时间-->
<!--      return this.transitionTime(-->
<!--        new Date(nowData.setSeconds(nowData.getSeconds() + s1))-->
<!--      )-->
<!--    },-->
<!--    // è½¬åŒ–标准时间-->
<!--    transitionTime(time) {-->
<!--      const d = new Date(time)-->
<!--      return (-->
<!--        d.getFullYear() +-->
<!--        '-' +-->
<!--        (d.getMonth() + 1) +-->
<!--        '-' +-->
<!--        d.getDate() +-->
<!--        ' ' +-->
<!--        d.getHours() +-->
<!--        ':' +-->
<!--        d.getMinutes() +-->
<!--        ':' +-->
<!--        d.getSeconds()-->
<!--      )-->
<!--    },-->
<!--    // æ—¶é—´æ¯”较-->
<!--    formTime(d1, d2, mod) {-->
<!--      // d1 æŽ’除结束时间  d2 å½“前产能结束时间-->
<!--      const time1 = new Date(d1)-->
<!--      const time2 = new Date(d2)-->
<!--      return parseInt(time2 - time1) / 1000-->
<!--    },-->
<!--    formatSeconds(value) {-->
<!--      var secondTime = parseInt(value) // ç§’-->
<!--      var minuteTime = 0 // åˆ†-->
<!--      var hourTime = 0 // å°æ—¶-->
<!--      if (secondTime > 60) {-->
<!--        // å¦‚果秒数大于60,将秒数转换成整数-->
<!--        // èŽ·å–åˆ†é’Ÿï¼Œé™¤ä»¥60取整数,得到整数分钟-->
<!--        minuteTime = parseInt(secondTime / 60)-->
<!--        // èŽ·å–ç§’æ•°ï¼Œç§’æ•°å–ä½˜ï¼Œå¾—åˆ°æ•´æ•°ç§’æ•°-->
<!--        secondTime = parseInt(secondTime % 60)-->
<!--        // å¦‚果分钟大于60,将分钟转换成小时-->
<!--        if (minuteTime > 60) {-->
<!--          // èŽ·å–å°æ—¶ï¼ŒèŽ·å–åˆ†é’Ÿé™¤ä»¥60,得到整数小时-->
<!--          hourTime = parseInt(minuteTime / 60)-->
<!--          // èŽ·å–å°æ—¶åŽå–ä½˜çš„åˆ†ï¼ŒèŽ·å–åˆ†é’Ÿé™¤ä»¥60取佘的分-->
<!--          minuteTime = parseInt(minuteTime % 60)-->
<!--        }-->
<!--      }-->
<!--      var result = '' + parseInt(secondTime) + ''-->
<!--      if (minuteTime > 0) {-->
<!--        result = '' + parseInt(minuteTime) + ':' + result-->
<!--      }-->
<!--      if (hourTime > 0) {-->
<!--        result = '' + parseInt(hourTime) + ':' + result-->
<!--      }-->
<!--      return result-->
<!--    },-->
<!--    updateTimeLines(timeA, timeB) {-->
<!--      this.timeLines = [-->
<!--        {-->
<!--          time: timeA-->
<!--        },-->
<!--        {-->
<!--          time: timeB,-->
<!--          color: '#747e80'-->
<!--        }-->
<!--      ]-->
<!--    },-->
<!--    scrollLeftA(val) {-->
<!--      this.positionB = { x: val }-->
<!--    },-->
<!--    scrollLeftB(val) {-->
<!--      this.positionA = { x: val }-->
<!--    },-->
<!--    // è®¾ç½®åˆå§‹åŒ–数据-->
<!--    oneClick() {-->
<!--      // this.getCurrentRow(this.mn_data[0])-->
<!--    }-->
<!--  }-->
<!--}-->
<!--</script>-->
<!--<style scoped>-->
<!--body {-->
<!--  font: 12px;-->
<!--  margin: 0;-->
<!--  padding: 0;-->
<!--  width: 100%;-->
<!--  height: 100%;-->
<!--}-->
<!--.box_style {-->
<!--  position: relative;-->
<!--  top: 40px;-->
<!--  left: -75px;-->
<!--}-->
<!--.box_styles {-->
<!--  position: relative;-->
<!--  top: 40px;-->
<!--  left: 0;-->
<!--}-->
<!--#app {-->
<!--  display: flex;-->
<!--  flex-direction: column;-->
<!--  padding: 0 10px;-->
<!--  /* height: calc(100vh - 100px); */-->
<!--}-->
<!--label {-->
<!--  margin-left: 10px;-->
<!--}-->
<!--input {-->
<!--  width: 40px;-->
<!--  height: 20px;-->
<!--  vertical-align: middle;-->
<!--}-->
<!--input[type="range"] {-->
<!--  width: 100px;-->
<!--}-->
<!--.top-bar {-->
<!--  /* height: 30px; */-->
<!--  margin-bottom: 20px;-->
<!--}-->
<!--.container {-->
<!--  display: flex;-->
<!--  flex-direction: column;-->
<!--  flex: 1;-->
<!--}-->
<!--.main-footer {-->
<!--  /* height: 30px; */-->
<!--}-->
<!--.ib {-->
<!--  display: inline-block;-->
<!--}-->
<!--.w250 {-->
<!--  width: 250px;-->
<!--}-->
<!--.el-slider {-->
<!--  width: 100px;-->
<!--}-->
<!--.tc {-->
<!--  text-align: center;-->
<!--}-->
<!--.name {-->
<!--  display: flex;-->
<!--  box-sizing: border-box;-->
<!--  overflow: hidden;-->
<!--  height: 100%;-->
<!--  width: 100%;-->
<!--  padding: 0 5px 0 0;-->
<!--  border-radius: 8px 0 0 8px;-->
<!--  align-items: center;-->
<!--}-->
<!--.colorBar {-->
<!--  width: 10px;-->
<!--  height: 100%;-->
<!--}-->
<!--.carId {-->
<!--  flex: 1;-->
<!--}-->
<!--.tc {-->
<!--  color: #909399;-->
<!--  font-size: 14px;-->
<!--}-->
<!--.type {-->
<!--  padding: 0 5px 0 0;-->
<!--  font-size: 1.2rem;-->
<!--}-->
<!--.t_size {-->
<!--  font-size: 14px;-->
<!--}-->
<!--.icon_true {-->
<!--  height: 8px;-->
<!--  display: inline-block;-->
<!--  width: 8px;-->
<!--  background: #00a79d;-->
<!--  margin-right: 7px;-->
<!--  border-radius: 15px;-->
<!--}-->
<!--.icon_ty {-->
<!--  height: 8px;-->
<!--  display: inline-block;-->
<!--  width: 8px;-->
<!--  background: red;-->
<!--  margin-right: 7px;-->
<!--  border-radius: 15px;-->
<!--}-->
<!--.icon_gz {-->
<!--  height: 8px;-->
<!--  display: inline-block;-->
<!--  width: 8px;-->
<!--  background: yellow;-->
<!--  margin-right: 7px;-->
<!--  border-radius: 15px;-->
<!--}-->
<!--/* .el-col-offset-1 {-->
<!--    margin-left: 0.5% !important;-->
<!--} */-->
<!--.marginLeft {-->
<!--  margin-left: 15px;-->
<!--}-->
<!--.button_style {-->
<!--  background: #00a79d;-->
<!--  color: #ffff;-->
<!--  border-color: #00a79d;-->
<!--}-->
<!--.rg {-->
<!--  float: right;-->
<!--}-->
<!--.color {-->
<!--  color: #909399;-->
<!--}-->
<!--</style>-->
src/views/scgl/sckbg.vue
@@ -1782,6 +1782,7 @@
    },
    // å¯¹è¯æ¡†å…³é—­äº‹ä»¶
    handleClose() {
      this.judgeIsScanningArr = []
      this.form.orderstepqrcode = ''
      this.WXform.orderstepqrcode = ''
      this.badForm.orderstepqrcode = ''
@@ -2084,6 +2085,7 @@
      this.badDialogForm = {}
      this.badDialogForm.operation = getCookie('navTabId')
      this.badTableDataDialog = []
      this.judgeIsScanningArr = []
    },
    async  getMesOrderSelectUserAll() {
      const { data: res } = await MesOrderSelectUser({ usercode: '' })
src/views/zlgl/gxjy.vue
@@ -717,6 +717,8 @@
      this.form.stepcode = ''
      this.form.stepname = ''
      this.judgeIsScanningArr = []
      this.isCancel = true
    },