loulijun2021
2022-12-31 b012ab3a1e5495be068c543eb8f0482124db13b5
src/views/scgl/zdpc.vue
@@ -40,15 +40,17 @@
          ref="tableDataRef"
          class="tableFixed"
          :data="tableData"
          :height="(tableHeight-300)+'px'"
          :height="(tableHeight-400)+'px'"
          border
          :row-class-name="tableRowClassName"
          :style="{width: 100+'%',height:(tableHeight-300)+'px',}"
          :style="{width: 100+'%',height:(tableHeight-400)+'px',}"
          highlight-current-row
          :header-cell-style="this.$headerCellStyle"
          :cell-style="this.$cellStyle"
          @sort-change="sortChangeTop"
          @row-click="getCurrentRow"
        >
          <!--          @row-click="rowClick"-->
          <el-table-column
            width="50"
            fixed
@@ -56,10 +58,9 @@
            <template slot-scope="{row}">
              <el-radio
                v-model="radioSelectedId"
                :label="row.id"
                style="color: transparent;padding-left: 10px;"
                @change.native="getCurrentRowTop(row.id)"
                :label="row.AdvaScheId"
              />
            </template>
          </el-table-column>
          <el-table-column
@@ -69,60 +70,102 @@
            label="序号"
          />
          <el-table-column
            prop="org_code"
            prop="AdvaSchePiroQue"
            show-tooltip-when-overflow
            label="优先级"
            width="90"
            sortable="custom"
          />
          <el-table-column
            prop="org_name"
            prop="AdvaScheWorkShop"
            label="生产车间"
            width="110"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="description"
            prop="AdvaScheWorkCode"
            label="工单编号"
            min-width="160"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="parentorg_name"
            prop="AdvaSchePartNumber"
            label="产品编码"
            min-width="110"
            show-tooltip-when-overflow
            sortable="custom"
          />
          >
            <!--            <template slot-scope="{row}">-->
            <!--              <div v-if="row.AdvaSchePartNumber">{{ row.AdvaSchePartNumber }}</div>-->
            <!--              <div v-else>/</div>-->
            <!--            </template>-->
          </el-table-column>
          <el-table-column
            prop="lm_user"
            prop="AdvaSchePartName"
            min-width="160"
            show-tooltip-when-overflow
            label="产品名称"
            sortable="custom"
          />
          <el-table-column
            prop="lm_user"
            prop="AdvaSchePartSpec"
            label="产品规格"
            width="110"
            show-tooltip-when-overflow
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.AdvaSchePartSpec">{{ row.AdvaSchePartSpec }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            prop="AdvaScheQty"
            label="数量"
            show-tooltip-when-overflow
            width="110"
            sortable="custom"
          />
          <el-table-column
            prop="lm_user"
            prop="AdvaScheEndDate"
            label="要求交付时间"
            sortable="custom"
            show-tooltip-when-overflow
            width="160"
          />
          <el-table-column
            prop="lm_user"
            label="交付状态"
            prop="AdvaScheStus"
            label="排程状态"
            show-tooltip-when-overflow
            width="110"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.AdvaScheStus==='NOSCHED'">待排程</div>
              <div v-if="row.AdvaScheStus==='SCHED'">已排程</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            prop="AdvaScheBotProcName"
            label="排程工序"
            show-tooltip-when-overflow
            width="110"
            sortable="custom"
          />
          <el-table-column
            prop="lm_user"
            prop="AdvaSchePCStartDate"
            label="计划排程时间"
            width="160"
            sortable="custom"
          />
            show-tooltip-when-overflow
          >
            <template slot-scope="{row}">
              <div v-if="row.AdvaSchePCStartDate">{{ row.AdvaSchePCStartDate }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
        </el-table>
      </div>
@@ -139,68 +182,59 @@
      <!--      自动排程部分的代码-->
      <div class="autoScheduling">
        <el-tabs>
          <el-row>
            <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>
        <div class="bodyTopFormGroup">
          <el-form
            ref="form"
            :model="formBottom"
            inline
            style="display: flex;justify-content: space-between"
          >
            <div class="elForm">
              <el-form-item label-width="70px" label="排程日期" style=" display: flex;">
                <el-date-picker
                  v-model="formBottom.scheDate"
                  type="daterange"
                  range-separator="~"
                  format="yyyy-MM-dd"
                  value-format="yyyy-MM-dd"
                  start-placeholder="开始日期"
                  end-placeholder="结束日期"
                  size="small"
                  :picker-options="pickerOptions1"
                  :clearable="false"
                  @change="change_time"
                />
              </el-form-item>
              <el-form-item label="排程方式" style=" display: flex;">
                <el-select v-model="formBottom.types" :disabled="radioSelectedId===''" style="width:120px" @change="changeTypes">
                  <el-option value="N" label="设备优先" />
                  <el-option value="Y" label="时间优先" />
                </el-select>
              </el-form-item>
              <el-form-item label="时间刻度(分钟)" style=" display: flex;">
                <el-select v-model.number="formBottom.scale" style="width: 120px;">
                  <el-option v-for="item in scaleList" :key="item" :value="item" :label="item" />
                </el-select>
            <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-form-item>
              <el-form-item label="换型时间(分钟)" style=" display: flex;">
                <el-input
                  id="scale"
                  v-model="times"
                  v-model="formBottom.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>
              </el-form-item>
              <el-form-item label="预排进度" style=" display: flex;">
                <span>
                  <span style="text-decoration:underline;">{{ real_num }}</span> /
                  <span style="text-decoration:underline">{{ meter }}</span>
                  <span style="text-decoration:underline;">{{ formBottom.real_num }}</span> /
                  <span style="text-decoration:underline">{{ formBottom.meter }}</span>
                </span>
              </div>
            </el-col>
            <el-col :span="3" style="display: flex">
              </el-form-item>
            </div>
            <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened?'5%':'10%'}">
              <el-button
                type="primary"
                icon="el-icon-document-remove"
@@ -213,11 +247,13 @@
                @click="click_yes"
              >提交
              </el-button>
            </el-col>
          </el-row>
          <el-row />
        </el-tabs>
            </div>
          </el-form>
          <div
            class="bodyTopFormExpand"
            style="height: 5px"
          />
        </div>
        <div class="container" style="margin: 10px;">
          <v-gantt-chart
@@ -227,7 +263,7 @@
            :cell-height="cellHeight"
            :time-lines="timeLines"
            :title-height="titleHeight"
            :scale="scale"
            :scale="formBottom.scale"
            :title-width="titleWidth"
            show-current-time
            :hide-header="hideHeader"
@@ -257,11 +293,11 @@
                  {{ 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>
                  <!--                  <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>
@@ -281,9 +317,10 @@
<script>
import Pagination from '@/components/Pagination'
import { OrganizationSearch } from '@/api/jcsz'
import Test from '@/components/Test'
import dayjs from 'dayjs'
import { AdvancedSchedulingSearch, OnclickAdvancedSchedulingDevice, SubmitAlreadyScheduling } from '@/api/scgl'
import { handleDatetime } from '@/utils/global'
const scaleList = `30,60,240,360`.split(',').map(n => parseInt(n))
const timeList = `0,30,60,120,240,480`.split(',').map(n => parseInt(n))
@@ -305,7 +342,7 @@
        wocode: '', // 生产工单号
        partcode: '', // 物料编码
        partname: '', // 物料名称
        prop: 'lm_date', // 排序字段
        prop: 'AdvaScheWorkCode', // 排序字段
        order: 'desc', // 排序字段
        page: 1, // 第几页
        rows: 20 // 每页多少条
@@ -321,7 +358,7 @@
          return time.getTime() <= Date.now() - 24 * 60 * 60 * 1000
        }
      },
      real_num: 0,
      keep_data: [],
      all_status: true,
      look_data: [],
@@ -343,19 +380,26 @@
      showDialog: false,
      time_data: [],
      forms: {
        WorkCode: '',
        WorkShop: '',
        PartNumber: '',
        BotProceCode: '',
        StartTime: '',
        EndTime: ''
        wocode: '', // 工单编号
        wkshpcode: '', // 车间编码
        partcode: '', // 物料编码
        botproccode: '', // 瓶颈工序编码(首道工序)
        startdate: '', // 开始日期
        enddate: ''// 结束日期
      },
      click_one: 0,
      datasC: [],
      radio: '',
      // value1: ['2022-11-04', '2022-11-09'],
      value1: '',
      types: 'N',
      formBottom: {
        scheDate: [handleDatetime(new Date()), handleDatetime(new Date())], // 排程日期
        types: 'N', // 排程方式
        scale: 60, // 时间刻度
        times: 0, // 换型时间
        real_num: 0, // 预排进度
        meter: 0// 节拍
      },
      no: false,
      total: 0,
      mn_data: [],
@@ -392,12 +436,12 @@
      cellHeight: 30,
      titleHeight: 40,
      titleWidth: 250,
      scale: 60,
      datasNum: 100,
      // datasNum: 100,
      datasA: [],
      // datasB: mockDatas(100),
      dataKey: 'id',
      times: 0,
      timeList: timeList,
      scaleList: scaleList,
      scrollToTime: dayjs()
@@ -409,162 +453,36 @@
      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-11-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-11-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-11-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-11-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': ''
              }
            ]
          },
          {
            'YearDate': '2022-11-07',
            '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-11-08',
            'children': [
              {
                'AdvaDevicNumber': 'LKFDL_SC-PC029',
                'AdvaDevicName': '金鼎数控车床029',
                'AdvaDevicCropMob': '30',
                '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)
    },
    // datasNum(newV) {
    //   // this.datasA = mockDatas(newV)
    //   // this.datasB = mockDatas(newV)
    // },
    scrollToY(val) {
      this.positionA = { x: val }
    }
  },
  created() {
    this.getAdvancedSchedulingSearch()
    this.AdvancedSchedulingSearch()
    // this.AdvancedSchedulingWorkShop()
    this.OnclickAdvancedSchedulingDevice()
  },
  mounted() {
    window.addEventListener('resize', this.getHeight)
    this.getHeight()
    // this.change_time()
    // this.click_schedule()
  },
  methods: {
    async getAdvancedSchedulingSearch() {
      const res = await OrganizationSearch(this.formTop)
      const res = await AdvancedSchedulingSearch(this.formTop)
      this.tableData = res.data
      this.totalTop = res.count
    },
@@ -593,10 +511,6 @@
      this.formTop.partname = ''
      this.getAdvancedSchedulingSearch()
    },
    // 单选框点击
    getCurrentRowTop(val) {
      console.log(val)
    },
    // 获取页面高度
    getHeight() {
      this.$nextTick(() => {
@@ -608,6 +522,25 @@
    tableRowClassName({ row, rowIndex }) {
      return 'custom-row'
    },
    // 行点击事件
    // async   rowClick(row, event, column) {
    //   this.radioSelectedId = row.AdvaScheId
    //
    //   // this.meter = row.AdvaScheQty * 1 - row.AdvaScheYPQty * 1 //可以做个数
    //
    //   const data = {
    //     wocode: row.AdvaScheWorkCode,
    //     wkshpcode: row.AdvaScheWorkShopid,
    //     partcode: row.AdvaSchePartNumber,
    //     botproccode: row.AdvaScheBotProcid,
    //     startdate: handleDatetime(new Date()),
    //     enddate: row.AdvaScheEndDate
    //   }
    //
    //   const res = await OnclickAdvancedSchedulingDevice(data)
    //   console.log(res)
    // },
    /*
     排程部分的方法
     */
@@ -616,38 +549,21 @@
      //   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
      if (this.formBottom.times < 0) {
        this.formBottom.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()
        this.getOnclickAdvancedSchedulingDevice()
      } else {
        for (const i in this.bm_data) {
          this.bm_data[i].status = false
@@ -657,18 +573,20 @@
          this.facility_data[i].gtArray = []
        }
      }
      // this.click_schedule()
    },
    changeTypes() {
      this.OnclickAdvancedSchedulingDevice()
      this.getOnclickAdvancedSchedulingDevice()
    },
    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()
      this.time_data[0] = this.formBottom.scheDate[0] + ' 00:00'
      this.time_data[1] = this.formBottom.scheDate[1] + ' 23:59'
      this.forms.startdate = this.formBottom.scheDate[0]
      this.forms.enddate = this.formBottom.scheDate[1]
      this.getOnclickAdvancedSchedulingDevice()
    },
    click_box(val) {
      console.log(val, 567)
      if (!val.status) {
        for (const i in this.facility_data) {
          const new_arr = []
@@ -687,7 +605,7 @@
            this.false_arr.push(this.bm_data[i].id)
          }
        }
        this.OnclickAdvancedSchedulingDevice()
        this.getOnclickAdvancedSchedulingDevice()
      }
      if (!val.status) {
@@ -703,7 +621,7 @@
            this.false_arr.push(this.bm_data[i].id)
          }
        }
        this.OnclickAdvancedSchedulingDevice()
        this.getOnclickAdvancedSchedulingDevice()
      }
      for (const i in this.bm_data) {
        const arr = []
@@ -714,7 +632,8 @@
        }
        this.bm_data[i].gtArray = arr
      }
      this.real_num = 0
      this.formBottom.real_num = 0
      // this.click_schedule()
    },
    look(data) {
      this.showDialog = true
@@ -729,54 +648,25 @@
      //     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()
      // })
    },
    // sizeChange_look(val) {
    //   this.search_from.rows = val
    //   this.AdvancedSchedulingEquipmenTask()
    // },
    // pageChange_look(val) {
    //   this.search_from.page = val
    //   this.AdvancedSchedulingEquipmenTask()
    // },
    // 点击带出数据
    OnclickAdvancedSchedulingDevice() {
      // this.facility_top()
    async  getOnclickAdvancedSchedulingDevice() {
      await 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
        })
      }
      const res = await OnclickAdvancedSchedulingDevice(this.forms)
      if (res.rus.Message) { this.$message.error(res.rus.Message) }
      this.submit_flag = false
      const list = []
      this.time_all = res
      const cont = res.Cont
      this.real_num = 0
      this.formBottom.real_num = 0
      for (const i in this.time_all.rows[0].children) {
        const obj = {
          id: '',
@@ -787,7 +677,7 @@
            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)',
            h_schedule: 'rgb(100,255,192,0.8)',
            scheduleing: 'rgb(20,182,231,0.8)'
          },
          gtArray: []
@@ -799,7 +689,6 @@
        ].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 != '') {
@@ -966,30 +855,29 @@
          }
        }
      }
      console.log(newList, 321)
      for (const i in list) {
        this.pushTiem(newList, list[i].id, list[i].gtArray)
      }
      this.bm_data = list
      console.log(this.bm_data, 678)
      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) {
            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,
                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,
                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'
                // 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)
            }
          }
@@ -1004,12 +892,13 @@
          }
        }
      }
      // })
      // this.$forceUpdate()
    },
    // 换型时间
    MinutesTest(time) {
      var sdate1 = new Date(time)
      sdate1.setMinutes(sdate1.getMinutes() + this.times * 1)
      sdate1.setMinutes(sdate1.getMinutes() + this.formBottom.times * 1)
      var now =
        sdate1.getFullYear() +
        '-' +
@@ -1059,27 +948,30 @@
      var currentdate = year + seperator1 + month + seperator1 + strDate
      return currentdate
    },
    // 行点击事件
    getCurrentRow(row) {
      this.radioSelectedId = row.AdvaScheId
      // this.show =true
      this.meter = row.AdvaScheQty * 1 - row.AdvaScheYPQty * 1 // 可以做个数
      this.value1 = []
      this.formBottom.meter = row.AdvaScheQty * 1 - row.AdvaScheYPQty * 1 // 可以做个数
      this.formBottom.scheDate = []
      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.formBottom.scheDate.push(this.getNowFormatDate())
      this.formBottom.scheDate.push(row.AdvaScheEndDate)
      if (this.formBottom.scheDate != '') {
        this.time_data[0] = this.formBottom.scheDate[0] + ' 00:00'
        this.time_data[1] = this.formBottom.scheDate[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.forms.wocode = row.AdvaScheWorkCode
      this.forms.wkshpcode = row.AdvaScheWorkShopid
      this.forms.partcode = row.AdvaSchePartNumber
      this.forms.botproccode = row.AdvaScheBotProcid
      this.forms.startdate = this.getNowFormatDate()
      this.forms.enddate = row.AdvaScheEndDate
      this.getOnclickAdvancedSchedulingDevice()
      this.formUpdata.WorkCode = row.AdvaScheWorkCode
      this.formUpdata.BotProceCode = row.AdvaScheBotProcid
      this.search_from.WorkTime =
@@ -1087,13 +979,9 @@
      this.search_from.BotProceName = row.AdvaScheBotProcName
    },
    // 提交排程
    click_yes() {
    async  click_yes() {
      if (this.submit_flag) {
        this.$message({
          showClose: true,
          type: 'error',
          message: '数量未排完,请设置产能时间'
        })
        this.$message.error('数量未排完,请设置产能时间')
      } else {
        const list = [] // 提交数组
        for (const i in this.bm_data) {
@@ -1131,55 +1019,41 @@
        updata = JSON.stringify(updata)
        this.formUpdata.json = updata
        if (list == '') {
          this.$message({
            showClose: true,
            message: '请先预排',
            type: 'error'
          })
          this.$message.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()
          })
        const formData = new FormData()
        formData.append('wocode', this.formUpdata.WorkCode)
        formData.append('botprocecode', this.formUpdata.BotProceCode)
        formData.append('json', this.formUpdata.json)
        const res = await SubmitAlreadyScheduling(formData)
        if (res.code === '200') {
          this.$message.success(res.Message)
        }
        this.formBottom.meter = 0
        this.formBottom.real_num = 0
        await this.getOnclickAdvancedSchedulingDevice()
        await this.getAdvancedSchedulingSearch()
      }
    },
    // 时间/设备优先排程
    click_schedule() {
      const timestamp = new Date().toLocaleDateString()
      if (new Date(this.value1[0]) < new Date(timestamp)) {
        this.$message({
          showClose: true,
          type: 'error',
          message: '排程时间不可以小于当前时间'
        })
      if (new Date(this.formBottom.scheDate[0]) < new Date(timestamp)) {
        this.$message.error('排程时间不可以小于当前时间!')
        return false
      }
      this.nitialize()
      // 设备优先
      if (this.bm_data != '' && this.types == 'N') {
      this.nitialize()// 手动过滤所有设备已排程
      console.log(this.facility_data, 67890)
      if (this.bm_data != '' && this.formBottom.types == 'N') { // 设备优先
        this.fun_time()
        this.change_num(this.bm_data)
      } else if (this.facility_data != '' && this.types == 'Y') {
      } else if (this.facility_data != '' && this.formBottom.types == 'Y') { // 时间优先
        this.time_nitalize()
        this.fun_facility()
        this.dataTransition()
@@ -1193,23 +1067,21 @@
        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') {
          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 // 真实已排数量
      this.formBottom.real_num = 0 // 真实已排数量
      let num = 0 // 取整已排数量
      const arr_num = [] // 已排数据
      let mend_num = 0
@@ -1223,19 +1095,19 @@
      }
      for (const n in arr_num) {
        this.real_num += arr_num[n].real_number
        this.formBottom.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
      this.formBottom.real_num = Math.ceil(this.formBottom.real_num)
      const y10 = this.formBottom.meter - this.formBottom.real_num
      if (y10 <= 10) {
        this.real_num = this.meter
        mend_num = this.meter - num
        this.formBottom.real_num = this.formBottom.meter
        mend_num = this.formBottom.meter - num
      } else {
      }
      if (this.real_num * 1 == this.meter * 1) {
        // mend_num =  this.meter - num
      if (this.formBottom.real_num * 1 == this.formBottom.meter * 1) {
        // mend_num =  this.formBottom.meter - num
      } else {
        this.submit_flag = true
      }
@@ -1252,7 +1124,7 @@
      }
    },
    fun_time() {
      let all_num = this.meter
      let all_num = this.formBottom.meter
      const all_time = []
      let flag1 = 0
      const mod = this.bm_data[0].mod
@@ -1393,7 +1265,7 @@
        }
        this.facility_data[i].gtArray = newArr
      }
      let all_num = this.meter
      let all_num = this.formBottom.meter
      const all_time = []
      const flag1 = 0
      // let nowTime = this.facility_data[0].AdvaDevicRhythm*all_num  //数量OK
@@ -1412,7 +1284,7 @@
        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()) {
            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
@@ -1426,7 +1298,7 @@
        const schedule_arr = end_arr.filter(item => {
          const remain = nend_arr.some(sitem => {
            return new Date(sitem.start).getTime() === new Date(item.start).getTime() &&
            return new Date(sitem.start).getTime() == new Date(item.start).getTime() &&
              new Date(item.end).getTime() < new Date(sitem.end).getTime()
          })
          return remain
@@ -1435,7 +1307,7 @@
        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() &&
              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)
@@ -1572,11 +1444,9 @@
      }
    },
    // 设备优先
    facility_top() {
      // automaticScheduling
      //   .OnclickAdvancedSchedulingDevice(this.forms)
      //   .then(res => {
      const res = this.testValue
    async  facility_top() {
      const res = await OnclickAdvancedSchedulingDevice(this.forms)
      this.show = true
      const data = res.rows
      const cont = res.Cont
@@ -1592,7 +1462,7 @@
            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)',
            h_schedule: 'rgb(100,255,192,0.8)',
            scheduleing: 'rgb(20,182,231,0.8)'
          },
          gtArray: []
@@ -1604,6 +1474,8 @@
        this.title_list.push(obj)
      }
      console.log(12321)
      console.log(data, 1)
      for (const i in data) {
        for (const j in data[i].children) {
          if (data[i].children[j].OneStartDate != '') {
@@ -1737,18 +1609,18 @@
      if (cont != '') {
        for (const i in cont) {
          const date_time = cont[i].TIME_START.split(' ')
          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,
              id: cont[i].eqp_code,
              date: cont_date,
              number: cont[i].ALLOC_QTY,
              cl_name: cont[i].PART_NAME,
              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,
              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) {
@@ -1757,7 +1629,6 @@
          }
        }
      }
      // })
    },
    // 排程方法
    formSeconds(s1, start, mod) {
@@ -1865,15 +1736,17 @@
  top: 40px;
  left: 0;
}
/*自动排程部分*/
.autoScheduling {
  display: flex;
  flex-direction: column;
  /*padding: 0 10px;*/
  /* height: calc(100vh - 100px); */
  background-color:#f8f8fa ;
  /*background-color: #f8f8fa;*/
  background-color: #fff;
  margin-top: 20px;
  /*height: 390px;*/
  height: 490px;
}
label {
@@ -1890,31 +1763,10 @@
  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 {
@@ -1932,11 +1784,6 @@
  align-items: center;
}
.colorBar {
  width: 10px;
  height: 100%;
}
.carId {
  flex: 1;
}
@@ -1944,63 +1791,6 @@
.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>
@@ -2120,7 +1910,15 @@
  ::v-deep .el-table__fixed {
    height: 100% !important;
  }
}
::v-deep .gantt-header-title{
  background-color: #fff;
  //border-left: 1px solid #eee !important;
  //border-bottom: 1px solid #eee !important;
}
</style>
<style>
@@ -2129,3 +1927,39 @@
}
</style>
<!--<style>-->
<!--input[type=range]:focus {-->
<!--  display: none;-->
<!--}-->
<!--input[type=range] {-->
<!--  -webkit-appearance: none;-->
<!--  width: 500px;-->
<!--  border-radius: 10px;-->
<!--  /*这个属性设置使填充进度条时的图形为圆角*/-->
<!--}-->
<!--input[type=range]::-webkit-slider-runnable-track {-->
<!--  height: 20px;-->
<!--  border-radius: 10px;-->
<!--  /*将轨道设为圆角的*/-->
<!--  /* box-shadow: 0 1px 1px #def3f8, inset 0 .125em .125em #0d1112; */-->
<!--  border: solid 1px red;-->
<!--}-->
<!--input[type=range]::-webkit-slider-thumb {-->
<!--  -webkit-appearance: none;-->
<!--  height: 30px;-->
<!--  width: 120px;-->
<!--  margin-top: -5px;-->
<!--  /*使滑块超出轨道部分的偏移量相等*/-->
<!--  background: #ffffff;-->
<!--  /* border-radius: 50%; */-->
<!--  /*外观设置为圆形*/-->
<!--  border: solid 0.125em rgba(205, 224, 230, 0.5);-->
<!--  /*设置边框*/-->
<!--  /* box-shadow: 0 .125em .125em #3b4547; */-->
<!--  /*添加底部阴影*/-->
<!--}-->
<!--</style>-->