小小儁爺
2025-10-30 b01acc5451b09593762522e9baff2615120696ec
src/views/workOrder/produceOrderList.vue
@@ -7,10 +7,17 @@
      >
        <div style="font-weight: bolder;">订单状态</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus===''}" @click="statusChange('')">全部</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='NEW'}" @click="statusChange('NEW')">新订单</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CREATING'}" @click="statusChange('CREATING')">部分下达</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CREATED'}" @click="statusChange('CREATED')">全部下达</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CLOSED'}" @click="statusChange('CLOSED')">已关闭</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='NEW'}" @click="statusChange('NEW')">新订单
        </div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CREATING'}"
             @click="statusChange('CREATING')">部分下达
        </div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CREATED'}"
             @click="statusChange('CREATED')">全部下达
        </div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CLOSED'}" @click="statusChange('CLOSED')">
          已关闭
        </div>
      </div>
      <div class="bodyTopButtonGroup" style="justify-content: space-between;margin-top: 5px;">
@@ -74,22 +81,22 @@
              </el-select>
            </el-form-item>
            <el-form-item label="订单编号" style=" display: flex;">
              <el-input v-model="form.erpordercode" placeholder="请输入" style="width: 200px" />
              <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-input v-model="form.saleordercode" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="产品编码" style=" display: flex;">
              <el-input v-model="form.partcode" style="width: 200px" placeholder="请输入" />
              <el-input v-model="form.partcode" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="产品名称" style=" display: flex;">
              <el-input v-model="form.partname" style="width: 200px" placeholder="请输入" />
              <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-input v-model="form.partspec" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <DateType
@@ -237,7 +244,7 @@
          <el-table-column
            show-tooltip-when-overflow
            prop="saleOrderCode"
            label="销售订单"
            label="销售订单/预测单"
            sortable="custom"
            width="150"
          >
@@ -273,6 +280,30 @@
            </template>
          </el-table-column>
          <el-table-column
            prop="TopInventoryCode"
            label="顶级物料编码"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="130"
          >
            <template slot-scope="{row}">
              <div v-if="row.TopInventoryCode">{{ row.TopInventoryCode }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="TopInventoryName"
            label="顶级物料名称"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="130"
          >
            <template slot-scope="{row}">
              <div v-if="row.TopInventoryName">{{ row.TopInventoryName }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="qty"
            label="订单数量"
            width="150"
@@ -286,66 +317,66 @@
            width="150"
            sortable="custom"
          />
<!--          <el-table-column-->
<!--            prop="priuserdefnvc1"-->
<!--            label="客户名称"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc1 ? row.priuserdefnvc1 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc6"-->
<!--            label="客户编码"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc6 ? row.priuserdefnvc6 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc2"-->
<!--            label="对内名称"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc2 ? row.priuserdefnvc2 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc3"-->
<!--            label="CTP日期"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc3 ? row.priuserdefnvc3 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc4"-->
<!--            label="钢刀编号"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc4 ? row.priuserdefnvc4 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc5"-->
<!--            label="盒型"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc5 ? row.priuserdefnvc5 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc1"-->
          <!--            label="客户名称"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc1 ? row.priuserdefnvc1 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc6"-->
          <!--            label="客户编码"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc6 ? row.priuserdefnvc6 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc2"-->
          <!--            label="对内名称"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc2 ? row.priuserdefnvc2 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc3"-->
          <!--            label="CTP日期"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc3 ? row.priuserdefnvc3 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc4"-->
          <!--            label="钢刀编号"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc4 ? row.priuserdefnvc4 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc5"-->
          <!--            label="盒型"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc5 ? row.priuserdefnvc5 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <el-table-column
            prop="clerkuser"
            label="销售业务员"
@@ -473,12 +504,21 @@
                    @click="edit('edit',row)"
                  />
                </el-tooltip>
                <el-tooltip v-del-tab-index class="item" effect="dark" content="订单关闭" placement="top">
                <el-tooltip v-del-tab-index class="item" effect="dark" :content="row.status!=='CLOSED'?'订单关闭':'订单启动'" placement="top">
                  <i
                    v-if="row.status!=='CLOSED'"
                    class="el-icon-switch-button"
                    :style="{color:'red'}"
                    style="cursor: pointer;margin-left: 15px"
                    @click="orderClose(row)"
                  />
                  <i
                    v-if="row.status==='CLOSED'"
                    class="el-icon-thumb"
                    :style="{color:$store.state.settings.theme}"
                    style="cursor: pointer;margin-left: 15px"
                    @click="orderClose(row.id)"
                    @click="orderOpen(row)"
                  />
                </el-tooltip>
@@ -519,26 +559,35 @@
    >
      <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="106px">
        <el-form-item label="订单编号" prop="erpordercode">
          <el-input v-model="dialogForm.erpordercode" disabled style="width: 200px" />
          <el-input v-model="dialogForm.erpordercode" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="产品编码" prop="partcode">
          <el-input v-model="dialogForm.partcode" disabled style="width: 200px" />
          <el-input v-model="dialogForm.partcode" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="产品名称" prop="partname">
          <el-input v-model="dialogForm.partname" disabled style="width: 200px" />
          <el-input v-model="dialogForm.partname" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="产品规格" prop="partspec">
          <el-input v-model="dialogForm.partspec" disabled style="width: 200px" />
          <el-input v-model="dialogForm.partspec" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="顶级物料编码" prop="TopInventoryCode">
          <el-input v-model="dialogForm.TopInventoryCode" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="顶级物料名称" prop="TopInventoryName">
          <el-input v-model="dialogForm.TopInventoryName" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="生产车间" prop="wkshopname">
          <el-input v-model="dialogForm.wkshopname" disabled style="width: 200px" />
          <el-input v-model="dialogForm.wkshopname" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="所属仓库" prop="warehousename">
          <el-input v-model="dialogForm.warehousename" disabled style="width: 200px" />
          <el-input v-model="dialogForm.warehousename" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="订单数量" prop="erpqty">
          <el-input v-model="dialogForm.erpqty" disabled style="width: 200px" />
          <el-input v-model="dialogForm.erpqty" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="已下单数" prop="relse_qty">
          <el-input
@@ -636,7 +685,7 @@
<script>
import Pagination from '@/components/Pagination'
import { handleDatetime } from '@/utils/global'
import {handleDatetime} from '@/utils/global'
import elDragDialog from '@/directive/el-drag-dialog'
import waves from '@/directive/waves'
import {
@@ -644,10 +693,10 @@
  DeleteErpOrder,
  ErpOrderSearch,
  MarkBatchSaveErpOrder,
  MarkSaveErpOrder
  MarkSaveErpOrder, ReverseClosedErpOrder
} from '@/api/WorkOrder'
import { SeaveSearchErpOrder } from '@/api/ErpSyncMes'
import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
import {SeaveSearchErpOrder} from '@/api/ErpSyncMes'
import {PrentOrganizationNoCompany} from '@/api/GeneralBasicData'
import DateType from '@/components/DateType'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
@@ -656,7 +705,7 @@
  components: {
    Pagination, DateType
  },
  directives: { elDragDialog, waves },
  directives: {elDragDialog, waves},
  data() {
    const validateName = (rule, value, callback) => {
      if (!value) {
@@ -698,10 +747,10 @@
      },
      erporderstusArr: [
        { code: 'NEW', name: '新订单' },
        { code: 'CREATING', name: '部分下达' },
        { code: 'CREATED', name: '全部下达' },
        { code: 'CLOSED', name: '已关闭' }
        {code: 'NEW', name: '新订单'},
        {code: 'CREATING', name: '部分下达'},
        {code: 'CREATED', name: '全部下达'},
        {code: 'CLOSED', name: '已关闭'}
      ],
      wkshopcodeArr: [],
      total: 10,
@@ -729,6 +778,10 @@
        ordernum: '', // 下单单数
        relse_qty: '', // 已下单数量
        idTopInventory: '', // 顶级物料id
        TopInventoryCode: '', // 顶级物料编码
        TopInventoryName: '', // 顶级物料名称
        clerkuser: '', // 销售业务员
        saleOrderDeliveryDate: '', // 预计交付日期
@@ -745,13 +798,13 @@
        //   { required: true, validator: validateName, trigger: ['blur', 'change'] }
        // ],
        markqty: [
          { required: true, message: '请输入下单数量', trigger: ['blur', 'change'] }
          {required: true, message: '请输入下单数量', trigger: ['blur', 'change']}
        ],
        ordernum: [
          { required: true, message: '请输入下单单数', trigger: ['blur', 'change'] }
          {required: true, message: '请输入下单单数', trigger: ['blur', 'change']}
        ],
        saleOrderDeliveryDate: [
          { required: true, message: '请选择预计交付日期', trigger: ['blur', 'change'] }
          {required: true, message: '请选择预计交付日期', trigger: ['blur', 'change']}
        ]
      },
@@ -804,7 +857,7 @@
    },
    async getPrentOrganizationNoCompany() {
      const { data: res } = await PrentOrganizationNoCompany()
      const {data: res} = await PrentOrganizationNoCompany()
      this.wkshopcodeArr = res
    },
    async getErpOrderSearch() {
@@ -853,7 +906,7 @@
      this.total = res.count
    },
    // 排序改变时
    sortChange({ column, prop, order }) {
    sortChange({column, prop, order}) {
      if (order === 'descending') {
        order = 'desc'
      } else if (order === 'ascending') {
@@ -939,7 +992,7 @@
              cancelButtonText: '取消',
              type: 'warning'
            }).then(() => {
              DeleteErpOrder({ erpordercode: item.wo, erporderid: id }).then(res => {
              DeleteErpOrder({erpordercode: item.wo, erporderid: id}).then(res => {
                if (res.code === '200') {
                  this.$message.success('订单删除成功!')
                  this.getErpOrderSearch()
@@ -953,28 +1006,41 @@
      })
    },
    // 订单关闭
    async orderClose(id) {
      this.tableData.forEach(item => {
        if (item.id === id) {
          if (item.status !== 'NEW') {
            return this.$message.info('此订单非新订单,无法关闭!')
          } else {
            this.$confirm('是否确认关闭订单?', '提示', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning'
            }).then(() => {
              ClosedErpOrder({ erpordercode: item.wo, erporderid: id }).then(res => {
                if (res.code === '200') {
                  this.$message.success('订单关闭成功!')
                  this.getErpOrderSearch()
                }
              })
            }).catch(() => {
              this.$message.info('已取消关闭!')
            })
    async orderClose(row) {
      if (row.status !== 'NEW') {
        return this.$message.info('此订单非新订单,无法关闭!')
      } else {
        this.$confirm('是否确认关闭订单?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          ClosedErpOrder({erpordercode: row.wo, erporderid: row.id}).then(res => {
            if (res.code === '200') {
              this.$message.success('订单关闭成功!')
              this.getErpOrderSearch()
            }
          })
        }).catch(() => {
          this.$message.info('已取消关闭!')
        })
      }
    },
    // 订单开启
    async orderOpen(row) {
      this.$confirm('是否确认启动订单,该订单下的所有工单将会开启!', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        ReverseClosedErpOrder({erpordercode: row.wo, erporderid: row.id}).then(res => {
          if (res.code === '200') {
            this.$message.success('订单启动成功!')
            this.getErpOrderSearch()
          }
        }
        })
      }).catch(() => {
        this.$message.info('已取消关闭!')
      })
    },
    batchHandle() {
@@ -1065,6 +1131,11 @@
        this.dialogForm.markqty = parseFloat(row.qty) - parseFloat(row.relse_qty)
        this.dialogForm.ordernum = 1
        this.dialogForm.relse_qty = row.relse_qty
        this.dialogForm.idTopInventory = row.idTopInventory
        this.dialogForm.TopInventoryCode = row.TopInventoryCode
        this.dialogForm.TopInventoryName = row.TopInventoryName
        this.dialogForm.clerkuser = row.clerkuser
        this.dialogForm.paystartdate = row.planstartdate
@@ -1093,6 +1164,10 @@
        markqty: '', // 下单数量
        ordernum: '', // 下单单数
        relse_qty: '', // 已下单数量
        idTopInventory: '', // 顶级物料id
        TopInventoryCode: '', // 顶级物料编码
        TopInventoryName: '', // 顶级物料名称
        payenddate: '', // 预计完工日期
        paystartdate: '', // 预计开工日期
@@ -1130,6 +1205,11 @@
            'partcode': this.dialogForm.partcode,
            'wkshopcode': this.dialogForm.wkshopcode,
            'warehousecode': this.dialogForm.warehousecode,
            'idTopInventory': this.dialogForm.idTopInventory,
            'TopInventoryCode': this.dialogForm.TopInventoryCode,
            'TopInventoryName': this.dialogForm.TopInventoryName,
            'clerkuser': this.dialogForm.clerkuser,
            'erpqty': this.dialogForm.erpqty,
            'markqty': this.dialogForm.markqty,
@@ -1162,11 +1242,11 @@
        this.$refs.tableDataRef.doLayout()
      })
    },
    tableRowClassName({ row, rowIndex }) {
    tableRowClassName({row, rowIndex}) {
      return 'custom-row'
    },
    getSummaries(param) {
      const { columns, data } = param
      const {columns, data} = param
      const sums = []
      const i = 7
      columns.forEach((column, index) => {
@@ -1363,12 +1443,13 @@
  padding: 10px 10px 0 10px;
}
.statusItem{
.statusItem {
  margin-left: 20px;
  cursor: pointer;
  color: #a7a7a7;
}
.statusItemLight{
.statusItemLight {
  font-weight: bolder;
  color: #42b983;
}