From b01acc5451b09593762522e9baff2615120696ec Mon Sep 17 00:00:00 2001
From: 小小儁爺 <1694218219@qq.com>
Date: 星期四, 30 十月 2025 14:04:50 +0800
Subject: [PATCH] 1.新增 订单开启、工单开启功能  2.新增顶级物料字段

---
 src/views/workOrder/produceOrderList.vue |  319 +++++++++++++++++++++++++++++++++-------------------
 1 files changed, 200 insertions(+), 119 deletions(-)

diff --git a/src/views/workOrder/produceOrderList.vue b/src/views/workOrder/produceOrderList.vue
index 978206d..82a6d56 100644
--- a/src/views/workOrder/produceOrderList.vue
+++ b/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;
 }

--
Gitblit v1.9.3