From 0f0195b43a05ba00b89cb3f73ef2763c194e5741 Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期二, 26 九月 2023 11:14:18 +0800
Subject: [PATCH] 1.工序报工35%

---
 src/views/produce/stepReport.vue |  470 +++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 399 insertions(+), 71 deletions(-)

diff --git a/src/views/produce/stepReport.vue b/src/views/produce/stepReport.vue
index 054e9dc..ec84618 100644
--- a/src/views/produce/stepReport.vue
+++ b/src/views/produce/stepReport.vue
@@ -1,6 +1,42 @@
 <template>
   <div>
     <div class="body" style="padding-top: 10px;" :style="{height:mainHeight+'px'}">
+
+      <div style="position: absolute;right:36px;z-index: 2;top: 13px">
+        <el-button
+          v-if="activeName==='鐢熶骇鍒楄〃'&&tableData.length>0"
+          v-waves
+          icon="el-icon-thumb"
+          type="primary"
+          @click="report()"
+        >鎶ュ伐
+        </el-button>
+        <el-button
+          v-if="activeName==='澶栧崗鍙戞枡'&&tableData.length>0"
+          v-waves
+          type="primary"
+          icon="el-icon-thumb"
+          @click="sendOut"
+        >鍙戞枡
+        </el-button>
+        <el-button
+          v-if="activeName==='澶栧崗鏀舵枡'&&tableData.length>0"
+          v-waves
+          type="primary"
+          icon="el-icon-thumb"
+          @click="takeIn"
+        >鏀舵枡
+        </el-button>
+        <el-button
+          v-if="activeName==='涓嶈壇寰呭鐞�'&&tableData.length>0"
+          v-waves
+          type="primary"
+          icon="el-icon-thumb"
+          @click="handleBad"
+        >澶勭悊
+        </el-button>
+      </div>
+
       <el-tabs
         ref="elTabs"
         v-model="activeName"
@@ -38,17 +74,17 @@
                 <el-form-item label="浜у搧鍚嶇О" style=" display: flex;">
                   <el-input v-model="form.partname" placeholder="璇疯緭鍏�" style="width: 200px" />
                 </el-form-item>
-                <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">
-                  <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" />
-                </el-form-item>
+                <!--                <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
 
               </div>
               <div
                 class="bodySearchReset"
                 :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
               >
-                <el-button v-waves type="primary" icon="el-icon-search" @click="">鏌ヨ</el-button>
-                <el-button v-waves type="info" icon="el-icon-refresh" @click="">閲嶇疆</el-button>
+                <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+                <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
               </div>
             </el-form>
             <div
@@ -85,9 +121,22 @@
               :header-cell-style="headerCellStyle()"
               :cell-style="cellStyle()"
               @sort-change="sortChange"
+              @row-click="rowClick"
             >
               <el-table-column
-                prop="RowNum"
+                width="50"
+                fixed
+              >
+                <template slot-scope="{row}">
+                  <el-radio
+                    v-model="radioSelected"
+                    :label="row.id"
+                    style="color: transparent;padding-left: 10px;"
+                  />
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="rowNum"
                 width="50"
                 label="搴忓彿"
                 fixed
@@ -124,29 +173,29 @@
               />
               <el-table-column
                 prop="partname"
-                width="160"
+                min-width="110"
                 show-tooltip-when-overflow
                 label="浜у搧鍚嶇О"
                 sortable="custom"
               />
               <el-table-column
+                prop="partspec"
+                min-width="110"
+                show-tooltip-when-overflow
+                label="瑙勬牸鍨嬪彿"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  {{ row.partspec ? row.partspec : '/' }}
+                </template>
+              </el-table-column>
+              <el-table-column
                 prop="stepname"
-                label="宸ュ簭"
+                label="宸ュ簭鍚嶇О"
                 show-tooltip-when-overflow
                 width="120"
                 sortable="custom"
               />
-              <!--              <el-table-column-->
-              <!--                prop="descr"-->
-              <!--                label="宸ュ簭鎻忚堪"-->
-              <!--                min-width="150"-->
-              <!--                sortable="custom"-->
-              <!--              >-->
-              <!--                <template slot-scope="{row}">-->
-              <!--                  <div v-if="row.descr">{{ row.descr }}</div>-->
-              <!--                  <div v-else>/</div>-->
-              <!--                </template>-->
-              <!--              </el-table-column>-->
               <el-table-column
                 prop="plan_qty"
                 label="浠诲姟鏁伴噺"
@@ -154,16 +203,6 @@
                 sortable="custom"
                 show-tooltip-when-overflow
               />
-              <el-table-column
-                label="鏈姤宸ユ暟閲�"
-                width="120"
-                show-tooltip-when-overflow
-              >
-                <!--                sortable="custom"-->
-                <template slot-scope="{row}">
-                  <div>{{ row.plan_qty - row.good_qty - row.ng_qty }}</div>
-                </template>
-              </el-table-column>
               <el-table-column
                 prop="good_qty"
                 show-tooltip-when-overflow
@@ -179,49 +218,52 @@
                 sortable="custom"
               />
               <el-table-column
-                prop="bad_qty"
-                label="宸叉姤搴熸暟閲�"
+                prop="laborbad_qty"
+                label="宸ュ簾鏁伴噺"
                 width="120"
                 show-tooltip-when-overflow
                 sortable="custom"
               />
               <el-table-column
-                prop="plan_startdate"
-                label="璁″垝寮�宸ユ棩鏈�"
+                prop="materielbad_qty"
+                label="鏂欏簾鏁伴噺"
+                width="120"
                 show-tooltip-when-overflow
-                width="150"
                 sortable="custom"
-              >
-                <template slot-scope="{row}">
-                  <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div>
-                  <div v-else>/</div>
-                </template>
-              </el-table-column>
+              />
+
               <el-table-column
-                prop="plan_enddate"
-                label="璁″垝瀹屽伐鏃ユ湡"
-                width="150"
-                sortable="custom"
-                show-tooltip-when-overflow
+                label="鎿嶄綔"
+                width="120"
                 fixed="right"
               >
                 <template slot-scope="{row}">
-                  <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div>
-                  <div v-else>/</div>
+                  <div class="operationClass">
+                    <el-button v-if="activeName==='鐢熶骇鍒楄〃'" v-waves icon="el-icon-thumb" type="text" @click="report(row)">
+                      鎶ュ伐
+                    </el-button>
+                    <el-button
+                      v-if="activeName==='澶栧崗鍙戞枡'"
+                      v-waves
+                      icon="el-icon-thumb"
+                      type="text"
+                      @click="sendOut(row)"
+                    >鍙戞枡
+                    </el-button>
+                    <el-button v-if="activeName==='澶栧崗鏀舵枡'" v-waves icon="el-icon-thumb" type="text" @click="takeIn(row)">
+                      鏀舵枡
+                    </el-button>
+                    <el-button
+                      v-if="activeName==='涓嶈壇寰呭鐞�'"
+                      v-waves
+                      icon="el-icon-thumb"
+                      type="text"
+                      @click="handleBad(row)"
+                    >澶勭悊
+                    </el-button>
+                  </div>
                 </template>
               </el-table-column>
-              <!--              <el-table-column-->
-              <!--                label="鎿嶄綔"-->
-              <!--                width="150"-->
-              <!--                fixed="right"-->
-              <!--              >-->
-              <!--                <template slot-scope="{row}">-->
-              <!--                  <div class="operationClass">-->
-              <!--                    <el-button v-waves type="text" @click="edit('edit',row)">缂栬緫</el-button>-->
-              <!--                    <el-button v-waves type="text" @click="del(row)">鍒犻櫎</el-button>-->
-              <!--                  </div>-->
-              <!--                </template>-->
-              <!--              </el-table-column>-->
             </el-table>
           </div>
           <!--鍒嗛〉-->
@@ -232,13 +274,129 @@
             align="right"
             layout="total,prev, pager, next,sizes"
             popper-class="select_bottom"
-            @pagination="getMesOrderStepSearch"
+            @pagination="search"
           />
         </el-tab-pane>
 
       </el-tabs>
 
     </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="dialogTitle"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="80px">
+        <el-form-item label="宸ュ崟缂栧彿" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.wo_code }}</div>
+          <!--          <el-input v-model="dialogForm.wo_code" style="width: 200px" />-->
+        </el-form-item>
+        <el-form-item label="浜у搧缂栫爜" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.partnumber }}</div>
+          <!--          <el-input v-model="dialogForm.partnumber" style="width: 200px" />-->
+        </el-form-item>
+        <el-form-item label="浜у搧鍚嶇О" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.partname }}</div>
+          <!--          <el-input v-model="dialogForm.partname" style="width: 200px" />-->
+        </el-form-item>
+        <el-form-item label="瑙勬牸鍨嬪彿" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.partspec }}</div>
+          <!--          <el-input v-model="dialogForm.partspec" style="width: 200px" />-->
+        </el-form-item>
+        <el-form-item label="褰撳墠宸ュ簭" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.stepname }}</div>
+          <!--          <el-input v-model="dialogForm.stepname" style="width: 200px" />-->
+        </el-form-item>
+        <el-form-item label="涓嬮亾宸ュ簭" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.nextstepname }}</div>
+          <!--          <el-input v-model="dialogForm.nextstepname" style="width: 200px" />-->
+        </el-form-item>
+        <el-form-item label="浠诲姟鏁伴噺" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.planqty }}</div>
+          <!--          <el-input v-model="dialogForm.planqty" style="width: 200px" />-->
+        </el-form-item>
+        <el-form-item label="鏈姤/宸叉姤" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.noreportqty + '/' + dialogForm.reportqty }}</div>
+          <!--          <el-input v-model="dialogForm.planqty" style="width: 200px" />-->
+        </el-form-item>
+        <el-form-item label="璁′欢鏂瑰紡">
+          <el-radio-group v-model="dialogForm.reckway" style="width: 200px;" @change="reckwayChange">
+            <el-radio label="person">涓汉</el-radio>
+            <el-radio label="group">鐝粍</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item v-if="dialogForm.reckway==='group'" prop="usergroupcode" label="鐝粍">
+          <el-select
+            v-model="dialogForm.usergroupcode"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            clearable
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in usergroupArr"
+              :key="item.postcode"
+              :label="item.postname"
+              :value="item.postcode"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="reportuser" label="鎶ュ伐浜哄憳">
+          <el-select
+            v-model="dialogForm.reportuser"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            clearable
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in reportuserArr"
+              :key="item.postcode"
+              :label="item.postname"
+              :value="item.postcode"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="eqpcode" label="鎶ュ伐璁惧">
+          <el-select
+            v-model="dialogForm.eqpcode"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            clearable
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in eqpArr"
+              :key="item.postcode"
+              :label="item.postname"
+              :value="item.postcode"
+            />
+          </el-select>
+        </el-form-item>
+
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
 
   </div>
 </template>
@@ -249,7 +407,13 @@
 import { getCookie } from '@/utils/auth'
 import elDragDialog from '@/directive/el-drag-dialog'
 import waves from '@/directive/waves'
-import { MesOrderStepSearch } from '@/api/WorkOrder'
+import {
+  MesOrderNgStepSearch,
+  MesOrderNgSubStepSearch,
+  MesOrderStepSearch, MesOrderStepStart,
+  MesOrderWxStepSearch
+} from '@/api/WorkOrder'
+import { validateCode } from '@/utils/global'
 
 export default {
   name: 'SCKBG',
@@ -279,7 +443,59 @@
         { code: 'OUT', name: '澶栧崗鍙戞枡' },
         { code: 'IN', name: '澶栧崗鏀舵枡' },
         { code: 'BAD', name: '涓嶈壇寰呭鐞�' }
-      ]
+      ],
+      radioSelected: '', // 澶氶�夋閫変腑鍊�
+
+      dialogVisible: false,
+      dialogTitle: '', // 瀵硅瘽妗嗗皬鏍囬
+
+      dialogForm: {
+        'wo_code': '',
+        'partnumber': '',
+        'partname': '',
+        'partspec': '',
+        'seq': '',
+        'stepcode': '',
+        'stepname': '',
+        'stepprice': '', // 宸ュ簭鍗曚环
+        'nextstepcode': '',
+        'nextstepname': '',
+        'nextstepprice': '',
+        'stepdesc': '',
+        'planqty': 0,
+        'startqty': 0,
+        'noreportqty': 0,
+        'reportqty': 0,
+        'noputqty': 0,
+        'wkshopcode': '',
+        'wkshopname': '',
+        'eqpcode': '',
+        'eqpname': '',
+
+        remarks: '', // 澶囨敞
+        inbarcode: '', // 鍏ュ簱鏉$爜
+        defectlist: '', // 涓嶈壇姹囨��
+        reckway: 'person', // 璁′欢鏂瑰紡(鐝粍:group銆佷釜浜�:person)
+        usergroupcode: '', // 鐝粍缂栫爜
+        reportuser: '' // 鎶ュ伐浜哄憳
+
+      },
+      dialogFormRules: {
+        postcode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        postname: [
+          { required: true, message: '璇疯緭鍏ュ矖浣嶅悕绉�', trigger: ['blur', 'change'] }
+        ]
+      },
+      reckwayArr: [// 鎶ュ伐绫诲瀷
+        { code: 'group', name: '鐝粍' },
+        { code: 'person', name: '涓汉' }
+      ],
+      reportuserArr: [], // 鎶ュ伐浜哄憳
+      usergroupArr: [], // 鎶ュ伐鐝粍
+      eqpArr: [], // 鎶ュ伐璁惧
+      defectArr: []// 涓嶈壇缂洪櫡
 
     }
   },
@@ -299,23 +515,26 @@
       switch (this.activeName) {
         case '鐢熶骇鍒楄〃':
           belong = 'produceCodeZZ'
+          this.dialogTitle = '鎶ュ伐'
           break
         case '澶栧崗鍙戞枡':
           belong = 'produceCodeOUT'
+          this.dialogTitle = '鍙戞枡'
           break
         case '澶栧崗鏀舵枡':
           belong = 'produceCodeIN'
+          this.dialogTitle = '鏀舵枡'
           break
         case '涓嶈壇寰呭鐞�':
           belong = 'produceCodeBAD'
+          this.dialogTitle = '涓嶈壇澶勭悊'
           break
       }
       this.enterNative(this.form.wocode, belong)
+      this.search()
     },
     enterNative(val, belong) {
-      console.log(val, belong, 89898989)
       if (belong === 'produceCodeZZ') {
-        console.log('杩涙潵浜嗭紒')
         this.$nextTick(() => {
           $('input[name=\'produceCodeZZ\']')[0].focus()
         })
@@ -347,15 +566,97 @@
       }
       this.form.order = order
       this.form.prop = prop
-      // this.getMesOrderStepSearch()
-      this.search()// search 鏂规硶閲岄潰搴旇鎶婂洓绉嶆儏鍐靛垪鍑烘潵  鏄庡ぉ鎺ョ潃鍐�
-    },
-    async getMesOrderStepSearch() {
-      const { data: res } = await MesOrderStepSearch()
+      this.search()
     },
     // 鏌ヨ
-    search() {
-      this.getMesOrderStepSearch()
+    async search() {
+      if (this.activeName === '鐢熶骇鍒楄〃') {
+        const res = await MesOrderStepSearch(this.form)
+        this.tableData = res.data
+        this.total = res.count
+      }
+      if (this.activeName === '澶栧崗鍙戞枡' || this.activeName === '澶栧崗鏀舵枡') {
+        const res = await MesOrderWxStepSearch(this.form)
+        this.tableData = res.data
+        this.total = res.count
+      }
+
+      if (this.activeName === '涓嶈壇寰呭鐞�') {
+        const res = await MesOrderNgStepSearch(this.form)
+        this.tableData = res.data
+        this.total = res.count
+      }
+    },
+    // 鎶ュ伐
+    report(row) {
+      if (row) {
+        this.getMesOrderStepStart('ZZ', '', row.wo_code, row.stepcode)
+      } else {
+        const temp = this.tableData.find(i => i.id === this.radioSelected)
+        this.getMesOrderStepStart('ZZ', '', temp.wo_code, temp.stepcode)
+      }
+    },
+    // 鍙戞枡
+    sendOut(row) {
+      if (row) {
+        this.getMesOrderStepStart('WX', 'OUT', row.wo_code, row.stepcode)
+      } else {
+        const temp = this.tableData.find(i => i.id === this.radioSelected)
+        this.getMesOrderStepStart('WX', 'OUT', temp.wo_code, temp.stepcode)
+      }
+    },
+    // 鏀舵枡
+    takeIn(row) {
+      if (row) {
+        this.getMesOrderStepStart('WX', 'IN', row.wo_code, row.stepcode)
+      } else {
+        const temp = this.tableData.find(i => i.id === this.radioSelected)
+        this.getMesOrderStepStart('WX', 'IN', temp.wo_code, temp.stepcode)
+      }
+    },
+    // 涓嶈壇澶勭悊
+    handleBad(row) {
+
+    },
+    // 鐢熶骇寮�鎶ュ伐锛氭姤宸�/澶栧崗(鍙戞枡/鏀舵枡)鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛
+    async getMesOrderStepStart(OperType, SelectType, wocode, stepcode) {
+      const data = {
+        OperType, SelectType, wocode, stepcode
+      }
+      let res = await MesOrderStepStart(data)
+      if (res.code === '200') {
+        res = res.data
+        this.dialogForm.wo_code = res.wo_code
+        this.dialogForm.partnumber = res.partnumber
+        this.dialogForm.partname = res.partname
+        this.dialogForm.partspec = res.partspec
+        this.dialogForm.seq = res.seq
+        this.dialogForm.stepcode = res.stepcode
+        this.dialogForm.stepname = res.stepname
+        this.dialogForm.stepprice = res.stepprice
+        this.dialogForm.nextstepcode = res.nextstepcode
+        this.dialogForm.nextstepname = res.nextstepname
+        this.dialogForm.nextstepprice = res.nextstepprice
+        this.dialogForm.stepdesc = res.stepdesc
+        this.dialogForm.planqty = res.planqty
+        this.dialogForm.startqty = res.startqty
+        this.dialogForm.noreportqty = res.noreportqty// 鏈姤鏁伴噺
+        this.dialogForm.reportqty = res.reportqty // 宸叉姤鏁伴噺
+        this.dialogForm.noputqty = res.noputqty
+        this.dialogForm.wkshopcode = res.wkshopcode
+        this.dialogForm.wkshopname = res.wkshopname
+        this.dialogForm.eqpcode = res.eqpcode
+        this.dialogForm.eqpname = res.eqpname
+
+        this.dialogVisible = true
+      }
+    },
+    // 鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(涓嶈壇鏄庣粏)
+    async getMesOrderNgSubStepSearch(wocode, stepcode) {
+      const data = {
+        wocode, stepcode
+      }
+      const res = await MesOrderNgSubStepSearch(data)
     },
     // 瀵硅瘽妗嗗叧闂簨浠�
     handleClose() {
@@ -374,6 +675,12 @@
       //   }
       // })
     },
+    reckwayChange(val) {
+
+    },
+    rowClick(row, event, column) {
+      this.radioSelected = row.id
+    },
     // 鑾峰彇椤甸潰楂樺害
     getHeight() {
       this.$nextTick(() => {
@@ -381,6 +688,12 @@
         this.tableHeight = this.mainHeight - 275
         // this.$refs.tableDataRef.doLayout()
       })
+    },
+    reset() {
+      this.form.wocode = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
     },
 
     headerCellStyle() {
@@ -392,3 +705,18 @@
   }
 }
 </script>
+<style lang="scss" scoped>
+
+::v-deep .elTableDiv .el-radio__label {
+  display: none !important;
+}
+
+.dialogFormItem {
+  margin: 0 10px 0 0;
+}
+
+.dialogFormItemDiv {
+  width: 200px;
+}
+
+</style>

--
Gitblit v1.9.3