From 0177daf2022ff2b760e8cd00df8bba105f96db81 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 28 二月 2024 09:29:12 +0800
Subject: [PATCH] 销售订单&原材料检验

---
 src/api/plan/customerOrderInterrelated.js        |   25 +++
 src/views/quality/processconfiguration/index.vue |    6 
 src/views/plan/customerorder/index.vue           |  166 +++++++++++++++++++++--
 src/api/quality/rawMaterial.js                   |    8 +
 src/views/accounting/jmreport/index.vue          |   82 +++++++++++
 src/api/accounting/personReport.js               |    9 +
 src/views/quality/rawMaterial/index.vue          |   70 +++++++++
 7 files changed, 347 insertions(+), 19 deletions(-)

diff --git a/src/api/accounting/personReport.js b/src/api/accounting/personReport.js
new file mode 100644
index 0000000..4536637
--- /dev/null
+++ b/src/api/accounting/personReport.js
@@ -0,0 +1,9 @@
+import request from '@/router/axios'
+
+export function pageList(query) {
+  return request({
+    url: '/mes/product/personReport',
+    method: 'get',
+    params: query
+  })
+}
diff --git a/src/api/plan/customerOrderInterrelated.js b/src/api/plan/customerOrderInterrelated.js
new file mode 100644
index 0000000..7ce04ff
--- /dev/null
+++ b/src/api/plan/customerOrderInterrelated.js
@@ -0,0 +1,25 @@
+import request from '@/router/axios'
+
+export function interrelatedOrder(data) {
+  return request({
+    url: '/mes/customerOrderInterrelated/interrelatedOrder',
+    method: 'post',
+    data: data
+  })
+}
+
+export function getInterrelatedOrder(id) {
+  return request({
+    url: '/mes/customerOrderInterrelated/getInterrelatedOrder/'+id,
+    method: 'get',
+  })
+}
+
+export function checkHanderOrder(orderId) {
+    return request({
+      url: '/mes/customerOrderInterrelated/checkHanderOrder/' + orderId,
+      method: 'post',
+    })
+  }
+
+
diff --git a/src/api/quality/rawMaterial.js b/src/api/quality/rawMaterial.js
index 407f523..65279b7 100644
--- a/src/api/quality/rawMaterial.js
+++ b/src/api/quality/rawMaterial.js
@@ -8,6 +8,14 @@
   })
 }
 
+export function checkPutIFS(id,data) {
+  return request({
+    url: '/mes/rawInspect/check/'+id,
+    method: 'post',
+    data: data
+  })
+}
+
 export function selectDevice() {
   return request({
     url: '/mes/rawInsProduct/selectDevice',
diff --git a/src/views/accounting/jmreport/index.vue b/src/views/accounting/jmreport/index.vue
new file mode 100644
index 0000000..0d5f8ab
--- /dev/null
+++ b/src/views/accounting/jmreport/index.vue
@@ -0,0 +1,82 @@
+<template>
+    <div class="mod-config">
+        <basic-container>
+            <ttable
+                :table="table"
+                @handleSelectionChange="handleSelectionChange"
+                :prelang="prelang"
+                :options="options"
+                :ajaxFun="ajaxFun"
+                ref="reportWorkTable">
+                <template #toolbar></template>
+            </ttable>
+        </basic-container>
+    </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import ttable from '@/views/common/ztt-table.vue'
+import { pageList } from '@/api/accounting/personReport'
+export default {
+    components: {
+        ttable
+    },
+    computed: {
+        ...mapGetters(['permissions'])
+    },
+    data(){
+        return {
+            multipleSelection: [],
+            ajaxFun: pageList,
+            options: {
+                height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾
+                stripe: true, // 鏄惁涓烘枒椹汗 table
+                highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈
+                border: true, // 鏄惁鏈夌旱鍚戣竟妗�
+                lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇
+                fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮�
+                multiSelect: true, //
+                seqNo: true,
+                isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳
+                isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H
+                isSearch: true, // 楂樼骇鏌ヨ鎸夐挳
+                defaultOrderBy: { column: 'createTime', direction: 'desc' },
+                cancelRunCreated: true
+            },
+            table: {
+                total: 0,
+                currentPage: 1,
+                pageSize: 20,
+                data: [],
+                // 鏍囬
+                column: [
+                    {
+                        minWidth: '100',
+                        width: '100px',
+                        prop: 'contractNo',
+                        label: '鍚堝悓缂栧彿',
+                        sort: true,
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text',
+                    },
+                ],
+                toolbar: [],
+                operator: null
+            },
+            prelang: "operation",
+        }
+    },
+    methods:{
+        // table鑷甫浜嬩欢
+        handleSelectionChange(val) {
+            this.multipleSelection = val
+        },
+    }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/src/views/plan/customerorder/index.vue b/src/views/plan/customerorder/index.vue
index 7990386..e69e1ae 100644
--- a/src/views/plan/customerorder/index.vue
+++ b/src/views/plan/customerorder/index.vue
@@ -8,6 +8,7 @@
         :prelang="prelang"
         :options="options"
         :ajaxFun="ajaxFun"
+        :toolbarMaxLength="4"
         :paramArr="type"
         ref="customerOrderTable"
       >
@@ -241,10 +242,35 @@
         <el-button type="primary" @click="startSync">纭� 瀹�</el-button>
       </span>
     </el-dialog>
+    <el-dialog
+    title="宸插叧鑱旈攢鍞鍗�"
+    :visible.sync="showInterrelatedOrderDialog"
+    width="60%">
+        <el-table border height="100" :data="interrelatedOrderData">
+            <el-table-column type="index" align="center" label="搴忓彿"></el-table-column>
+            <el-table-column prop="contractNo" show-overflow-tooltip align="center" label="鍚堝悓缂栧彿"></el-table-column>
+            <el-table-column prop="entityName" show-overflow-tooltip align="center" label="宸ョ▼鍚嶇О"></el-table-column>
+            <el-table-column prop="sourceId" show-overflow-tooltip align="center" label="娣诲姞鏉ユ簮">
+                <template scope="scope">
+                    <el-tag v-if="scope.row.sourceId == 0" type="success">鍚屾</el-tag>
+                    <el-tag v-if="scope.row.sourceId == 1" type="info">鎵嬪姩</el-tag>
+                </template>
+            </el-table-column>
+            <el-table-column prop="placeOrderDate" show-overflow-tooltip align="center" label="涓嬪崟鏃ユ湡"></el-table-column>
+            <el-table-column prop="customerName" show-overflow-tooltip align="center" label="瀹㈡埛鍚嶇О"></el-table-column>
+            <el-table-column prop="coState" min-width="100" show-overflow-tooltip align="center" label="閿�鍞鍗曠姸鎬�"></el-table-column>
+            <el-table-column prop="partNo" show-overflow-tooltip align="center" label="浜у搧缂栧彿"></el-table-column>
+            <el-table-column prop="productName" show-overflow-tooltip align="center" label="浜у搧鍚嶇О"></el-table-column>
+            <el-table-column prop="productType" show-overflow-tooltip align="center" label="闅跺睘鍝佺墝"></el-table-column>
+            <el-table-column prop="otcUnit" show-overflow-tooltip align="center" label="鍗曚綅"></el-table-column>
+            <el-table-column prop="buyQtyDue" show-overflow-tooltip align="center" label="鏁伴噺"></el-table-column>
+        </el-table>
+    </el-dialog>
   </div>
 </template>
 
 <script>
+import {interrelatedOrder,getInterrelatedOrder,checkHanderOrder} from '@/api/plan/customerOrderInterrelated'
 import ConfirmPullCustomerorder from './confirm-pull-customerorder'
 import TableForm from './customerorder-form'
 import TableFormDEesc from './customerorder-form-desc'
@@ -285,6 +311,9 @@
 export default {
   data() {
     return {
+      interrelatedOrderId: null,
+      interrelatedOrderData: [],
+      showInterrelatedOrderDialog: false,
       uniqueStateArr: [],
       dataForm: {
         selectTime: null,
@@ -400,7 +429,7 @@
         isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳
         isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H
         isSearch: true, // 楂樼骇鏌ヨ鎸夐挳
-        defaultOrderBy: { column: 'createTime', direction: 'desc' },
+        defaultOrderBy: { column: 'placeOrderDate', direction: 'desc' },
         cancelRunCreated: true
       },
       table: {
@@ -497,7 +526,7 @@
           {
             minWidth: '120',
             prop: 'isAudit',
-            label: '瀹℃牳鐘舵��',
+            label: 'PLM瀹℃牳鐘舵��',
             sort: true,
             isTrue: true,
             isSearch: true,
@@ -507,15 +536,19 @@
               return this.isAuditList
             }
           },
-          // {
-          //   minWidth: '80',
-          //   prop: 'sourceId',
-          //   label: '璁㈠崟鏉ユ簮',
-          //   sort: true,
-          //   isTrue: true,
-          //   isSearch: true,
-          //   searchInfoType: 'text'
-          // },
+          {
+            minWidth: '120',
+            prop: 'isPass',
+            label: '瀹℃牳閫氳繃鐘舵��',
+            sort: true,
+            isTrue: true,
+            isSearch: true,
+            searchInfoType: 'select',
+            formatter: this.checkIsPass,
+            optList: () => {
+                return this.isPassList
+            }
+          },
           {
             minWidth: '120',
             width: '100px',
@@ -655,6 +688,25 @@
           //   fun: this.packageExportHandle
           // },
           {
+            text: '瀹℃牳',
+            type: 'text',
+            size: 'small',
+            fun: this.checkHandOrder,
+            showFun: (row)=>{return row.sourceId==='1'},
+            show: {
+              val: [
+                false,
+              ],
+              key: 'isPass'
+            }
+          },
+          {
+            text: '宸插叧鑱旇鍗�',
+            type: 'text',
+            size: 'small',
+            fun: this.showInterrelatedOrder,
+          },
+          {
             text: '鍒犻櫎',
             type: 'text',
             size: 'small',
@@ -673,8 +725,8 @@
         operatorConfig: {
           fixed: 'right',
           label: '鎿嶄綔',
-          width: 100,
-          minWidth: 100
+          width: 200,
+          minWidth: 200
         }
       },
       addOrUpdateVisible: false,
@@ -780,7 +832,8 @@
         }
       ],
       showSalesPartBatch: false,
-      addOrUpdateEescVisible: false
+      addOrUpdateEescVisible: false,
+      isPassList: [{label:'鏈�氳繃',value: false},{label: '閫氳繃',value: true}]
     }
   },
   components: {
@@ -812,6 +865,17 @@
         }
       },
       immediate: true
+    },
+    interrelatedOrderId(newVal){
+        if(newVal){
+            getInterrelatedOrder(newVal).then(res=>{
+                if(res.status===200){
+                    this.interrelatedOrderData = res.data.data
+                }
+            }).catch(error=>{
+                console.error(error)
+            })
+        }
     }
   },
   mounted() {
@@ -862,6 +926,13 @@
         fun: this.downloadWord,
         permitArr: ['03plan','04planed'],
     })
+    this.table.toolbar.push({
+        text: '鍏宠仈璁㈠崟',
+        disabled: false,
+        type: 'primary',
+        fun: this.interrelatedOrderFun,
+        permitArr: [],
+    })
     if (this.permissions.customerorder_create_masterplan) {
       this.table.toolbar.push({
         text: '涓荤敓浜ц鍒�',
@@ -872,6 +943,57 @@
     }
   },
   methods: {
+    checkHandOrder(val){
+        this.$confirm('纭瀹℃牳閫氳繃璇ラ攢鍞鍗曞悧?', '鎻愮ず', {
+          confirmButtonText: '閫氳繃',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+            checkHanderOrder(val.id).then(res=>{
+            if(res.status===200){
+                this.$message.success("瀹℃牳閫氳繃")
+                this.getData()
+            }
+          }).catch(error=>{
+            console.error(error)
+          })
+        }).catch(() => {});
+    },
+    interrelatedOrderFun(){
+        if(this.multipleSelection.length!=2){
+            this.$message.error("璇烽�夋嫨涓ゆ潯閿�鍞鍗�")
+            return
+        }
+        let autoId = null
+        let handId = null
+        this.multipleSelection.forEach(ele=>{
+            if(ele.sourceId==0){
+                autoId = ele.id
+            }else if(ele.sourceId==1){
+                handId = ele.id
+            }
+        })
+        if(autoId==null || handId==null){
+            this.$message.error("娣诲姞鏉ユ簮椤讳负鎵嬪姩鍜屽悓姝�")
+            return
+        }
+        interrelatedOrder({
+            customerOrderAutoId: autoId,
+            customerOrderHandId: handId
+        }).then(res=>{
+            if(res.status===200){
+                this.$message.success("鍏宠仈鎴愬姛")
+            }
+        }).catch(error=>{
+            console.error(error)
+        })
+    },
+    //灞曠ず宸插叧鑱旇鍗�
+    showInterrelatedOrder(currentOrder){
+        this.interrelatedOrderId = currentOrder.id
+        this.showInterrelatedOrderDialog = true
+    },
+
     //涓嬭浇word
     downloadWord(){
         let ids = this.multipleSelection.map(ele=>ele.id)
@@ -960,6 +1082,18 @@
       } else {
         this.$message.error('璇烽�夋嫨閿�鍞鍗�')
       }
+    },
+    checkIsPass(row, column, cellValue){
+        this.isPassList.forEach((obj) => {
+            if (obj.value === cellValue) {
+                if(obj.value){
+                    cellValue = "<span style='color:#34BD66;'>"+obj.label+"</span>"
+                }else{
+                    cellValue = "<span style='color:#E84738;'>"+obj.label+"</span>"
+                }
+            }
+        })
+        return cellValue
     },
     formatDutyDate(row, column, cellValue) {
       if (cellValue) {
@@ -1404,6 +1538,10 @@
       } else {
         if (this.judgeCoState(this.multipleSelection)) {
           if (event == 'RELEVANCE') {
+            if(!this.multipleSelection[0].isPass){
+                this.$message.error("璇峰厛瀹℃牳閫氳繃锛屽啀鍏宠仈宸ヨ壓鏂囦欢")
+                return
+            }
             const firstPartNo = this.multipleSelection[0].partNo
             this.multipleSelection.forEach((item) => {
               if (item.isDocument) {
diff --git a/src/views/quality/processconfiguration/index.vue b/src/views/quality/processconfiguration/index.vue
index 79b88e5..84e9848 100644
--- a/src/views/quality/processconfiguration/index.vue
+++ b/src/views/quality/processconfiguration/index.vue
@@ -322,7 +322,11 @@
             text: '瀹℃牳缁撴灉',
             type: 'text',
             size: 'small',
-            fun: this.AuditResult
+            fun: this.AuditResult,
+            show: {
+                key: 'type',
+                val: ['杩囩▼妫�楠�','浜у搧妫�楠�','鍖呰妫�楠�']
+            }
           })
     }
     this.table.operator = arr.length>0 ? arr : null
diff --git a/src/views/quality/rawMaterial/index.vue b/src/views/quality/rawMaterial/index.vue
index cad0189..fc085ef 100644
--- a/src/views/quality/rawMaterial/index.vue
+++ b/src/views/quality/rawMaterial/index.vue
@@ -54,7 +54,7 @@
 </template>
 <script>
 import ttable from '@/views/common/ztt-table.vue'
-import { getRawInspectList,delObj,exportRawMaterial,getObj,downloadReport } from '@/api/quality/rawMaterial'
+import { getRawInspectList,delObj,exportRawMaterial,getObj,downloadReport,checkPutIFS } from '@/api/quality/rawMaterial'
 import RawMaterialForm from './rawMaterial-form'
 import * as fecha from 'element-ui/lib/utils/date'
 import { mapGetters } from 'vuex'
@@ -112,6 +112,18 @@
                         searchInfoType: 'select',
                         optList: () => {
                             return this.typeList
+                        }
+                    },
+                    {
+                        minWidth: '120',
+                        prop: 'checkState',
+                        label: '瀹℃牳鐘舵��',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'select',
+                        formatter: this.checkStateFormat,
+                        optList: () => {
+                            return this.checkStateList
                         }
                     },
                     {
@@ -237,6 +249,7 @@
             insStateList: [{label:'鍏ㄩ儴',value:''},{label:'宸叉娴�',value:'1'},{label:'鏈娴�',value:'0'}],
             StateList: [{label:'鍏ㄩ儴',value:''},{label:'宸插悎鏍�',value:'1'},{label:'涓嶅悎鏍�',value:'0'}],
             typeList: [{label:'鍏ㄩ儴',value:''},{label:'棣栨',value:'棣栨'},{label:'杩旀',value:'杩旀'}],
+            checkStateList: [{label:'鏈鏍�',value:'0'},{label:'瀹℃牳閫氳繃',value:'1'},{label:'瀹℃牳涓嶉�氳繃',value:'2'}],
         }
     },
     components: {
@@ -262,13 +275,28 @@
 
             })
         }
+        this.table.operator = [{
+            text: '瀹℃牳',
+            type: 'text',
+            size: 'small',
+            fun: this.examineHandle,
+            showFun: (row)=>{return row.type==='棣栨'},
+            show: {
+                key: 'checkState',
+                val: ['0']
+            }
+        }]
         if(this.permissions.quality_rawMaterial_del){
-            this.table.operator = [{
+            this.table.operator.push({
                     text: '浣滃簾',
                     type: 'text',
                     size: 'small',
-                    fun: this.deleteHandle
-                }]
+                    fun: this.deleteHandle,
+                    show: {
+                        key: 'judgeState',
+                        val: ['',null]
+                    }
+                })
         }
      },
     computed: {
@@ -282,6 +310,32 @@
         }
     },
     methods:{
+        examineHandle(val){
+            this.$confirm('鏄惁瀹℃牳閫氳繃璇ユ楠岄」?', '鎻愮ず', {
+                distinguishCancelAndClose: true,
+                confirmButtonText: '閫氳繃',
+                cancelButtonText: '涓嶉�氳繃',
+                type: 'warning'
+            }).then(() => {
+                checkPutIFS(val.id,{result: 1}).then(res=>{
+                    if(res.status===200){
+                        console.log(res)
+                    }
+                }).catch(error=>{
+                    console.error(error)
+                })
+            }).catch((action) => {
+                if(action === 'cancel'){
+                    checkPutIFS(val.id,{result: 2}).then(res=>{
+                        if(res.status===200){
+                            console.log(res)
+                        }
+                    }).catch(error=>{
+                        console.error(error)
+                    })
+                }
+            });
+        },
         downloadReport(){
             let selection = this.multipleSelection
             if(!selection || selection.length < 1){
@@ -420,6 +474,14 @@
                 return "<span style='color:#34BD66;'>鍚堟牸</span>"
             }
         },
+        checkStateFormat(row, column, cellValue){
+            this.checkStateList.forEach((obj) => {
+                if (obj.value === cellValue) {
+                    cellValue = obj.label
+                }
+            })
+            return cellValue
+        },
         formatDateTime(row, column, cellValue) {
             return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : ''
         },

--
Gitblit v1.9.3