小小儁爺
2024-08-08 d20654ba067e5c0621d4d7d95915cbe47a10fe87
src/views/produceManager/produceOrder.vue
@@ -9,12 +9,28 @@
          @click="syncERP"
        >同步ERP
        </el-button>
        <el-button
          v-waves
          icon="el-icon-switch-button"
          @click="orderClose"
        >关闭订单
        </el-button>
        <div style="display: flex">
          <el-button
            v-waves
            type="primary"
            icon="el-icon-bottom"
            @click="batchHandle"
          >批量下达
          </el-button>
          <!--                  <el-button-->
          <!--                    v-waves-->
          <!--                    icon="el-icon-switch-button"-->
          <!--                    @click="orderClose"-->
          <!--                  >关闭订单-->
          <!--                  </el-button>-->
          <!--                  <el-button-->
          <!--                    v-waves-->
          <!--                    icon="el-icon-delete"-->
          <!--                    @click="orderDel"-->
          <!--                  >删除订单-->
          <!--                  </el-button>-->
        </div>
      </div>
      <div class="bodyTopFormGroup">
@@ -45,18 +61,24 @@
            <el-form-item label="订单编号" style=" display: flex;">
              <el-input v-model="form.erpordercode" placeholder="请输入" style="width: 200px" />
            </el-form-item>
            <el-form-item label="销售订单" style=" display: flex;">
              <el-input v-model="form.saleordercode" style="width: 200px" placeholder="请输入" />
            </el-form-item>
            <el-form-item label="产品编码" style=" display: flex;">
              <el-input v-model="form.partcode" style="width: 200px" placeholder="请输入" />
            </el-form-item>
            <el-form-item label="产品名称" style=" display: flex;">
            <el-form-item v-show="isExpandForm" label="产品名称" style=" display: flex;">
              <el-input v-model="form.partname" style="width: 200px" placeholder="请输入" />
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="产品规格" style=" display: flex;">
              <el-input v-model="form.partspec" style="width: 200px" placeholder="请输入" />
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="创建人员" style=" display: flex;">
              <el-input v-model="form.creatuser" style="width: 200px" placeholder="请输入" />
            </el-form-item>
            <!--            <el-form-item v-show="isExpandForm" label="创建人员" style=" display: flex;">-->
            <!--              <el-input v-model="form.creatuser" style="width: 200px" placeholder="请输入" />-->
            <!--            </el-form-item>-->
            <el-form-item
              v-show="isExpandForm"
              label="预计开工时间"
@@ -150,25 +172,27 @@
          :header-cell-style="this.$headerCellStyle"
          :cell-style="this.$cellStyle"
          @sort-change="sortChange"
          @row-click="rowClick"
          @selection-change="handleSelectionChange"
        >
          <!--          <el-table-column-->
          <!--            type="selection"-->
          <!--            width="50"-->
          <!--          />-->
          <!--          @row-click="rowClick"-->
          <el-table-column
            type="selection"
            width="50"
            fixed
          >
            <template slot-scope="{row}">
              <el-radio
                v-model="radioSelectedId"
                :label="row.id"
                style="color: transparent;padding-left: 10px;"
              />
              <!--              @change.native="getCurrentRow(row.id)"-->
            </template>
          </el-table-column>
            :selectable="selected"
          />
          <!--          <el-table-column-->
          <!--            width="50"-->
          <!--            fixed-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              <el-radio-->
          <!--                v-model="radioSelectedId"-->
          <!--                :label="row.id"-->
          <!--                style="color: transparent;padding-left: 10px;"-->
          <!--              />-->
          <!--              &lt;!&ndash;              @change.native="getCurrentRow(row.id)"&ndash;&gt;-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <el-table-column
            prop="RowNum"
            width="50"
@@ -196,6 +220,18 @@
            sortable="custom"
            min-width="150"
          />
          <el-table-column
            show-tooltip-when-overflow
            prop="saleOrderCode"
            label="销售订单"
            sortable="custom"
            width="150"
          >
            <template slot-scope="{row}">
              <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="partcode"
            label="产品编码"
@@ -311,17 +347,35 @@
          <el-table-column
            label="操作"
            fixed="right"
            width="80"
            width="120"
          >
            <template slot-scope="{row}">
              <div class="operationClass">
                <el-tooltip class="item" effect="dark" content="下达" placement="top">
                <el-tooltip v-del-tab-index class="item" effect="dark" content="订单下达" placement="top">
                  <!--                <el-button v-waves type="text" @click="edit('edit',row)">下达</el-button>-->
                  <i
                    class="el-icon-bottom"
                    :style="{color:$store.state.settings.theme}"
                    style="cursor: pointer;margin-left: 5px"
                    @click="edit('edit',row)"
                  />
                </el-tooltip>
                <el-tooltip v-del-tab-index class="item" effect="dark" content="订单关闭" placement="top">
                  <i
                    class="el-icon-switch-button"
                    :style="{color:$store.state.settings.theme}"
                    style="cursor: pointer;margin-left: 15px"
                    @click="orderClose(row.id)"
                  />
                </el-tooltip>
                <el-tooltip v-del-tab-index class="item" effect="dark" content="订单删除" placement="top">
                  <i
                    class="el-icon-delete"
                    :style="{color:$store.state.settings.theme}"
                    style="cursor: pointer;margin-left: 15px"
                    @click="orderDel(row.id)"
                  />
                </el-tooltip>
              </div>
@@ -335,7 +389,7 @@
        :page.sync="form.page"
        :limit.sync="form.rows"
        align="right"
        layout="total,prev, pager, next,sizes"
        layout="total,prev, pager, next,sizes,jumper"
        popper-class="select_bottom"
        @pagination="getErpOrderSearch"
      />
@@ -445,7 +499,13 @@
<script>
import Pagination from '@/components/Pagination'
import { ClosedErpOrder, ErpOrderSearch, MarkSaveErpOrder } from '@/api/produceManager'
import {
  ClosedErpOrder,
  DeleteErpOrder,
  ErpOrderSearch,
  MarkBatchSaveErpOrder,
  MarkSaveErpOrder
} from '@/api/produceManager'
import { handleDatetime } from '@/utils/global'
import { SeaveSearchErpOrder } from '@/api/ErpSyncMes'
import elDragDialog from '@/directive/el-drag-dialog'
@@ -453,7 +513,7 @@
const SER_HZ = /^[\u4e00-\u9fa5]+$/
export default {
  name: 'SCDD',
  name: 'ProduceOrder',
  components: {
    Pagination
  },
@@ -482,6 +542,7 @@
        partname: '', // 产品名称
        partspec: '', // 产品规格
        creatuser: '', // 创建人员
        saleordercode: '', // 销售订单
        // paystartdate: '', // 交付时间
        paystartdate: '', // 预计开工时间
        payenddate: '', // 预计完工时间
@@ -521,6 +582,8 @@
        relse_qty: '', // 已下单数量
        saleOrderDeliveryDate: '', // 预计交付日期
        saleordercode: '', // 销售订单
        saleOrderDeliveryDateIsDisabled: false// 预计交付日期字段是否可修改
      },
      operation: '',
@@ -546,7 +609,8 @@
        disabledDate(time) {
          return time.getTime() < Date.now() - 8.64e7
        }
      }
      },
      multipleSelection: []
      // expireTimeOption: {
      //   disabledDate(time) {
@@ -585,6 +649,7 @@
        partspec: this.form.partspec, // 产品规格
        paystartdate: tempDate2, // 交付时间
        payenddate: tempDate, // 交付时间
        saleordercode: this.form.saleordercode,
        creatuser: this.form.creatuser, // 创建人员
        // createdate: this.form.createdate.toString().length > 0 ? handleDatetime(this.form.createdate) : '', // 创建时间
@@ -637,6 +702,8 @@
        //     this.$message.error('同步失败!')
        //   }, 10000)
        // }
      }).catch(e => {
        loading.close()
      })
    },
    // 查询
@@ -653,23 +720,47 @@
      this.form.paystartdate = ''
      this.form.payenddate = ''
      this.form.creatuser = ''
      this.form.erpordercode = ''
      this.form.createdate = ''
      this.getErpOrderSearch()
    },
    // 单选框选中获取当前行信息
    getCurrentRow(id) {
      this.radioSelectedId = id
    },
    rowClick(row) {
      this.radioSelectedId = row.id
    // getCurrentRow(id) {
    //   this.radioSelectedId = id
    // },
    // rowClick(row) {
    //   this.radioSelectedId = row.id
    // },
    // 订单删除
    orderDel(id) {
      this.tableData.forEach(item => {
        if (item.id === id) {
          if (item.status === 'CLOSED') {
            return this.$message.info('此订单已关闭,无法删除!')
          } else {
            this.$confirm('是否确认关闭订单?', '提示', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning'
            }).then(() => {
              DeleteErpOrder({ erpordercode: item.wo, erporderid: id }).then(res => {
                if (res.code === '200') {
                  this.$message.success('订单删除成功!')
                  this.getErpOrderSearch()
                }
              })
            }).catch(() => {
              this.$message.info('已取消删除!')
            })
          }
        }
      })
    },
    // 订单关闭
    async orderClose() {
      if (this.radioSelectedId.length < 1) {
        return this.$message.info('请先选择订单!')
      }
    async orderClose(id) {
      this.tableData.forEach(item => {
        if (item.id === this.radioSelectedId) {
        if (item.id === id) {
          if (item.status !== 'NEW') {
            return this.$message.info('此订单非新订单,无法关闭!')
          } else {
@@ -678,7 +769,7 @@
              cancelButtonText: '取消',
              type: 'warning'
            }).then(() => {
              ClosedErpOrder({ erpordercode: item.wo, erporderid: this.radioSelectedId }).then(res => {
              ClosedErpOrder({ erpordercode: item.wo, erporderid: id }).then(res => {
                if (res.code === '200') {
                  this.$message.success('订单关闭成功!')
                  this.getErpOrderSearch()
@@ -698,7 +789,7 @@
    },
    // 修改按钮
    edit(operation, row) {
      if (parseFloat(row.qty) === parseFloat(row.relse_qty)) {
      if (parseFloat(row.qty) === parseFloat(row.relse_qty) || row.status === 'CLOSED') {
        return this.$message.info('此工单已全部下达!')
      }
@@ -716,6 +807,8 @@
        this.dialogForm.wkshopname = row.wkshp_name
        this.dialogForm.warehousecode = row.stck_code
        this.dialogForm.warehousename = row.stck_name
        this.dialogForm.saleordercode = row.saleOrderCode
        this.dialogForm.saleOrderDeliveryDate = row.saleOrderDeliveryDate
@@ -740,6 +833,8 @@
      this.dialogForm.warehousename = ''
      this.dialogForm.saleOrderDeliveryDate = ''
      this.dialogForm.saleordercode = ''
      this.dialogForm.erpqty = ''
      this.dialogForm.markqty = ''
@@ -782,6 +877,7 @@
            'markqty': this.dialogForm.markqty,
            'ordernum': this.dialogForm.ordernum,
            'relse_qty': this.dialogForm.relse_qty,
            'saleordercode': this.dialogForm.saleordercode,
            'saleOrderDeliveryDate': handleDatetime(this.dialogForm.saleOrderDeliveryDate) + ' 00:00:00'
          }
@@ -798,6 +894,53 @@
        }
      })
    },
    handleSelectionChange(val) {
      this.multipleSelection = val
    },
    batchHandle() {
      this.$confirm('是否批量下达?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        if (this.multipleSelection.length === 0) {
          return this.$message.info('请先选择订单!')
        }
        // console.log(JSON.parse(JSON.stringify(this.multipleSelection)))
        const data = []
        this.multipleSelection.forEach(i => {
          data.push({
            'erporderid': i.id,
            'erpordercode': i.wo,
            'partcode': i.partcode,
            'wkshopcode': i.wkshp_code,
            'warehousecode': i.stck_code,
            'erpqty': i.qty,
            'markqty': i.qty,
            'ordernum': 1,
            'relse_qty': i.qty,
            'saleordercode': i.saleOrderCode,
            // 'saleOrderDeliveryDate': i.saleOrderDeliveryDate
            'saleOrderDeliveryDate': handleDatetime(new Date()) + ' 00:00:00'
          })
        })
        // console.log(data)
        MarkBatchSaveErpOrder(data).then(res => {
          if (res.code === '200') {
            this.multipleSelection = []
            this.$message.success('批量下达成功!')
            this.getErpOrderSearch()
          } else {
            this.$message.error('批量下达失败!')
          }
        })
      }).catch(() => {
        this.$message.info('已取消下达!')
      })
    },
    selected(row, index) {
      return row.status === 'NEW'
    },
    // 获取页面高度
    getHeight() {
      this.$nextTick(() => {