From 5b7bc2b1d4b2bad72a64651be0607de5cce578e3 Mon Sep 17 00:00:00 2001
From: 小小儁爺 <1694218219@qq.com>
Date: 星期四, 20 三月 2025 14:54:33 +0800
Subject: [PATCH] 1.新增报工记录页面

---
 src/views/workOrder/workOrderList.vue |  338 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 260 insertions(+), 78 deletions(-)

diff --git a/src/views/workOrder/workOrderList.vue b/src/views/workOrder/workOrderList.vue
index af688a1..a559944 100644
--- a/src/views/workOrder/workOrderList.vue
+++ b/src/views/workOrder/workOrderList.vue
@@ -8,6 +8,8 @@
           <el-button v-waves type="success" icon="el-icon-connection" @click="send">娲惧彂</el-button>
         </div>
 
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+
         <!--        <el-button v-waves icon="el-icon-switch-button" @click="orderClose">鍏抽棴宸ュ崟</el-button>-->
       </div>
 
@@ -168,6 +170,113 @@
             fixed
           />
           <el-table-column
+            prop="injectnumber"
+            label="娉ㄥ鏈哄彿"
+            show-tooltip-when-overflow
+            width="110"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">{{ row.injectnumber?row.injectnumber:'/' }}</template>
+          </el-table-column>
+          <el-table-column
+            prop="customername"
+            label="瀹㈡埛鍚嶇О"
+            show-tooltip-when-overflow
+            width="110"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">{{ row.customername?row.customername:'/' }}</template>
+          </el-table-column>
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            show-tooltip-when-overflow
+            sortable="custom"
+            min-width="120"
+          />
+          <el-table-column
+            prop="partname"
+            min-width="150"
+            label="浜у搧鍚嶇О"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            sortable="custom"
+            width="110"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.partspec">{{ row.partspec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="colour"
+            label="棰滆壊"
+            show-tooltip-when-overflow
+            width="110"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">{{ row.colour?row.colour:'/' }}</template>
+          </el-table-column>
+
+          <el-table-column
+            prop="weight"
+            label="閲嶉噺"
+            show-tooltip-when-overflow
+            width="110"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">{{ row.weight?row.weight:'/' }}</template>
+          </el-table-column>
+
+          <el-table-column
+            prop="totalnumber"
+            label="鎬绘枡"
+            show-tooltip-when-overflow
+            width="110"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">{{ row.totalnumber?row.totalnumber:'/' }}</template>
+          </el-table-column>
+
+          <el-table-column
+            prop="plan_qty"
+            label="宸ュ崟鏁�"
+            sortable="custom"
+            show-tooltip-when-overflow
+            width="100"
+          />
+          <el-table-column
+            prop="saleOrderCode"
+            label="閿�鍞鍗�"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="clerkuser"
+            label="閿�鍞笟鍔″憳"
+            sortable="custom"
+            show-tooltip-when-overflow
+            width="150"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.clerkuser">{{ row.clerkuser }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
             prop="status"
             label="宸ュ崟鐘舵��"
             sortable="custom"
@@ -185,6 +294,21 @@
               <div v-if="row.status==='SCHED'">宸叉帓绋�</div>
             </template>
           </el-table-column>
+
+          <el-table-column
+            prop="wotype"
+            label="鍗曟嵁绫诲瀷"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="120"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.wotype==='PO'">鏍囧噯宸ュ崟</div>
+              <div v-else-if="row.wotype==='FO'">鎶ュ簾琛ュ崟</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+
           <el-table-column
             prop="wo_code"
             label="宸ュ崟缂栧彿"
@@ -204,76 +328,7 @@
               <div v-else>/</div>
             </template>
           </el-table-column>
-          <el-table-column
-            prop="saleOrderCode"
-            label="閿�鍞鍗�"
-            sortable="custom"
-            show-tooltip-when-overflow
-            min-width="160"
-          >
-            <template slot-scope="{row}">
-              <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div>
-              <div v-else>/</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            prop="wotype"
-            label="鍗曟嵁绫诲瀷"
-            sortable="custom"
-            show-tooltip-when-overflow
-            min-width="120"
-          >
-            <template slot-scope="{row}">
-              <div v-if="row.wotype==='PO'">鏍囧噯宸ュ崟</div>
-              <div v-else-if="row.wotype==='FO'">鎶ュ簾琛ュ崟</div>
-              <div v-else>/</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            prop="partcode"
-            label="浜у搧缂栫爜"
-            show-tooltip-when-overflow
-            sortable="custom"
-            min-width="120"
-          />
-          <el-table-column
-            prop="partname"
-            min-width="150"
-            label="浜у搧鍚嶇О"
-            show-tooltip-when-overflow
-            sortable="custom"
-          />
-          <el-table-column
-            prop="partspec"
-            label="浜у搧瑙勬牸"
-            sortable="custom"
-            width="110"
-            show-tooltip-when-overflow
-          >
-            <template slot-scope="{row}">
-              <div v-if="row.partspec">{{ row.partspec }}</div>
-              <div v-else>/</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            prop="plan_qty"
-            label="宸ュ崟鏁�"
-            sortable="custom"
-            show-tooltip-when-overflow
-            width="100"
-          />
-          <el-table-column
-            prop="clerkuser"
-            label="閿�鍞笟鍔″憳"
-            sortable="custom"
-            show-tooltip-when-overflow
-            width="150"
-          >
-            <template slot-scope="{row}">
-              <div v-if="row.clerkuser">{{ row.clerkuser }}</div>
-              <div v-else>/</div>
-            </template>
-          </el-table-column>
+
           <el-table-column
             prop="wkshp_name"
             label="鐢熶骇杞﹂棿"
@@ -348,7 +403,7 @@
                     :style="{color:$store.state.settings.theme}"
                     class="el-icon-printer"
                     style="cursor: pointer;margin-right: 15px"
-                    @click.stop="handlePrint(row.wo_code)"
+                    @click.stop="handlePrint(row)"
                   />
                 </el-tooltip>
 
@@ -503,7 +558,7 @@
       :title="operation==='add'?'鏂板':(operation==='edit'?'淇敼':'璇︽儏')"
       :visible.sync="dialogVisible"
       width="1200px"
-      top="8vh"
+      top="3vh"
       :close-on-click-modal="false"
       @closed="handleClose"
       @close="handleClose"
@@ -655,6 +710,35 @@
             placeholder="閫夋嫨鏃ユ湡"
           />
           <!--          :disabled="dialogForm.deliverydate"-->
+        </el-form-item>
+
+        <el-form-item label="娉ㄥ鏈哄彿">
+          <el-input v-model="dialogForm.injectnumber" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="瀹㈡埛鍚嶇О">
+          <el-select
+            v-model="dialogForm.customercode"
+            filterable
+            :popper-append-to-body="false"
+            style="width: 200px;"
+            placeholder="璇烽�夋嫨瀹㈡埛"
+          >
+            <el-option
+              v-for="item in customerArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="棰滆壊">
+          <el-input v-model="dialogForm.colour" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="閲嶉噺">
+          <el-input v-model="dialogForm.weight" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="鎬绘枡">
+          <el-input v-model="dialogForm.totalnumber" style="width: 200px" />
         </el-form-item>
 
         <el-divider content-position="left">宸ュ簭淇℃伅</el-divider>
@@ -1273,6 +1357,23 @@
                 </el-form-item>
                 <el-form-item label="宸ュ崟鏁伴噺:" class="formContent">
                   {{ formApprove.plan_qty }}
+                </el-form-item>
+
+                <el-form-item label="娉ㄥ鏈哄彿:" class="formContent">
+                  {{ formApprove.injectnumber }}
+                </el-form-item>
+                <el-form-item label="瀹㈡埛鍚嶇О:" class="formContent">
+                  {{ formApprove.customername }}
+                </el-form-item>
+                <el-form-item label="棰滆壊:" class="formContent">
+                  {{ formApprove.colour }}
+                </el-form-item>
+
+                <el-form-item label="閲嶉噺:" class="formContent">
+                  {{ formApprove.weight }}
+                </el-form-item>
+                <el-form-item label="鎬绘枡:" class="formContent">
+                  {{ formApprove.totalnumber }}
                 </el-form-item>
                 <!--                <el-form-item label="宸ヨ壓璺嚎:" class="formContent">-->
                 <!--                  {{ formApprove.routename }}-->
@@ -1981,15 +2082,16 @@
 import {
   AddMesOrderCodeSearch,
   AddUpdateMesOrder, DeleteMesOrder,
-  MesBadOrderSearch, MesOrderDistribution, MesOrderNewStepContent,
+  MesBadOrderSearch, MesOrderDistribution, MesOrderExcelSearch, MesOrderNewStepContent,
   MesOrderSearch,
   UpdateMesOrderStepSearch
 } from '@/api/WorkOrder'
 import { PartSelect } from '@/api/ProductModel'
-import { PrentOrganization, PrentOrganizationNoCompany, StepData } from '@/api/GeneralBasicData'
+import { CustomerPermissions, PrentOrganization, PrentOrganizationNoCompany, StepData } from '@/api/GeneralBasicData'
 import Sortable from 'sortablejs'
 import ElDragSelect from '@/components/DragSelect'
-import { MesOrderPrintSearch } from '@/api/GridReport' // base on element-ui
+import { MesOrderPrintSearch } from '@/api/GridReport'
+import { GroupSalaryReportExcelSearch } from '@/api/ReportManager' // base on element-ui
 
 export default {
   name: 'WorkOrderList',
@@ -2055,8 +2157,17 @@
         deliverydate: '', // 浜や粯鏃堕棿
         data_sources: '', // 鏁版嵁鏉ユ簮
 
+        injectnumber: '', // 娉ㄥ鏈哄彿
+        customercode: '', // 瀹㈡埛缂栫爜
+        customername: '', // 瀹㈡埛鍚嶇О
+        colour: '', // 棰滆壊
+
+        weight: '', // 閲嶉噺
+        totalnumber: '', // 鎬绘枡
+
         mesmaxqty: 0// 宸ュ崟鐨勬渶澶у��
       },
+      customerArr: [],
       ordertypeArr: [// 宸ュ崟绫诲瀷
         { code: 'PO', name: '鏍囧噯宸ュ崟' },
         { code: 'FO', name: '鎶ュ簾琛ュ崟' }
@@ -2103,6 +2214,21 @@
         ],
         bomId: [
           { required: true, message: '璇烽�夋嫨鐗╂枡娓呭崟', trigger: ['blur', 'change'] }
+        ],
+        injectnumber: [
+          { required: true, message: '璇疯緭鍏ユ敞濉戞満鍙�', trigger: ['blur', 'change'] }
+        ],
+        customercode: [
+          { required: true, message: '璇烽�夋嫨瀹㈡埛', trigger: ['blur', 'change'] }
+        ],
+        colour: [
+          { required: true, message: '璇疯緭鍏ラ鑹�', trigger: ['blur', 'change'] }
+        ],
+        weight: [
+          { required: true, message: '璇疯緭鍏ラ噸閲�', trigger: ['blur', 'change'] }
+        ],
+        totalnumber: [
+          { required: true, message: '璇疯緭鍏ユ�绘枡', trigger: ['blur', 'change'] }
         ]
 
       },
@@ -2276,6 +2402,32 @@
     // })
   },
   methods: {
+    async download() {
+      // let tempDate = this.form.operdate
+      // if (tempDate.length > 0) {
+      //   tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      // }
+      const data = {
+        wkshopcode: this.form.wkshopcode, // 杞﹂棿缂栫爜
+        mesorderstus: this.form.mesorderstus, // 宸ュ崟鐘舵�佺爜
+        mesordercode: this.form.mesordercode, // 宸ュ崟缂栧彿
+        partcode: this.form.partcode, // 浜у搧缂栫爜
+        ordertype: this.form.ordertype, // ordertype
+        sourceorder: this.form.sourceorder, // 婧愬崟鍗曞彿
+        saleordercode: this.form.saleordercode, // 閿�鍞鍗�
+        partname: this.form.partname, // 浜у搧鍚嶇О
+        partspec: this.form.partspec, // 浜у搧瑙勬牸
+        creatuser: this.form.creatuser, // 鍒涘缓浜哄憳
+        createdate: this.form.createdate ? handleDatetime(this.form.createdate) : '' // 鍒涘缓鏃堕棿
+      }
+
+      const { data: res } = await MesOrderExcelSearch(data)
+      window.location.href = res
+    },
+    async getCustomerPermissions() {
+      const { data: res } = await CustomerPermissions()
+      this.customerArr = res
+    },
     setSort() {
       const el = this.$refs.stepTableDataRef.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
       this.sortable = Sortable.create(el, {
@@ -2304,6 +2456,7 @@
         if (res.code === '200') {
           this.getSelect()
           this.getPrentOrganizationNoCompany()
+          this.getCustomerPermissions()
         }
       })
     },
@@ -2401,6 +2554,7 @@
       this.form.sourceorder = ''
       this.form.ordertype = ''
       this.form.createdate = ''
+      this.form.saleordercode = ''
       this.getMesOrderSearch()
     },
     // 鏂板鎸夐挳
@@ -2504,6 +2658,13 @@
       this.dialogForm.deliverydate = row.saleOrderDeliveryDate.substring(0, 11)
       this.dialogForm.mesqty = row.plan_qty
 
+      this.dialogForm.injectnumber = row.injectnumber
+      this.dialogForm.customercode = row.customercode
+      this.dialogForm.colour = row.colour
+
+      this.dialogForm.weight = row.weight
+      this.dialogForm.totalnumber = row.totalnumber
+
       const data = {
         sourceid: this.dialogForm.sourceorderid,
         sourcewo: this.dialogForm.sourceorder,
@@ -2601,7 +2762,13 @@
         wkshopname: '', // 鐢熶骇杞﹂棿鍚嶇О
 
         deliverydate: '', // 浜や粯鏃堕棿
-        data_sources: '' // 鏁版嵁鏉ユ簮
+        data_sources: '', // 鏁版嵁鏉ユ簮
+
+        injectnumber: '',
+        customercode: '',
+        colour: '',
+        weight: '',
+        totalnumber: ''
       }
       this.stepSelectedValue = []
       this.stepTableData = []
@@ -2650,6 +2817,15 @@
             wkshopcode: this.dialogForm.wkshopcode,
             woqty: this.dialogForm.mesqty, // 宸ュ崟鏁伴噺
             deliverydate: this.dialogForm.deliverydate, // 浜や粯鏃堕棿
+
+            injectnumber: this.dialogForm.injectnumber,
+            customercode: this.dialogForm.customercode,
+            customername: this.customerArr.find(i => i.code === this.dialogForm.customercode).name,
+            colour: this.dialogForm.colour,
+
+            weight: this.dialogForm.weight,
+            totalnumber: this.dialogForm.totalnumber,
+
             data_sources: this.dialogForm.data_sources, // 鏁版嵁鏉ユ簮
             isstep: workListSub.length > 0 ? 'Y' : 'N', //
             workListSub
@@ -2717,13 +2893,13 @@
       this.dialogVisibleSearch = false
     },
     // 澶勭悊鎵撳嵃
-    handlePrint(wo_code) {
+    handlePrint(row) {
       // const number = Math.random() * Math.random()
       // this.number = number === 0 ? (10 + Math.random()) : number
       // console.log(number)
 
       const data2 = {
-        mesordercode: wo_code || this.dialogForm.mesordercode
+        mesordercode: row.wo_code || this.dialogForm.mesordercode
       }
       MesOrderPrintSearch(data2).then(res2 => {
         if (res2.code === '200') {
@@ -2739,6 +2915,12 @@
           this.formApprove.routename = localStorage.getItem('username') // 鎵撳嵃浜哄憳
           this.formApprove.lm_date = res3[0].lm_date
 
+          this.formApprove.injectnumber = row.injectnumber || '/'
+          this.formApprove.customername = row.customername || '/'
+          this.formApprove.colour = row.colour || '/'
+          this.formApprove.weight = row.weight || '/'
+          this.formApprove.totalnumber = row.totalnumber || '/'
+
           this.$nextTick(() => {
             res3.forEach(i => {
               this.bindQRCode(i.seq, i.stepqrcode, 'small')

--
Gitblit v1.9.3