From 571da48131c3647c6e1468aab82c5b7e8a14ac28 Mon Sep 17 00:00:00 2001
From: Mr.Shi <1878285526@qq.com>
Date: 星期一, 14 八月 2023 18:26:01 +0800
Subject: [PATCH] h5出库入库

---
 h5_standard/src/components/newCom/Material.vue             |  375 ++++++
 h5_standard/.env.development                               |    9 
 h5_standard/src/components/common/Warehouse.vue            |    9 
 h5_standard/src/views/workOrder/reportingForWork.vue       | 1476 +++++++++++++++++++++++++
 h5_standard/src/apis/WorkOrderAPI.ts                       |   18 
 web_standard/package-lock.json                             |  160 +-
 h5_standard/src/router/module/workOrder/index.ts           |    9 
 h5_standard/src/components/newCom/location.vue             |  256 ++++
 h5_standard/src/views/needToBeDealtWith/addWarehousing.vue |  511 ++++++++
 h5_standard/src/router/module/needToBeDealtWith/index.ts   |    4 
 h5_standard/src/views/needToBeDealtWith/outbound.vue       |  403 ++++++
 h5_standard/src/components/newCom/quality.vue              |  259 ++++
 12 files changed, 3,381 insertions(+), 108 deletions(-)

diff --git a/h5_standard/.env.development b/h5_standard/.env.development
index 9f9c1d8..506a37f 100644
--- a/h5_standard/.env.development
+++ b/h5_standard/.env.development
@@ -12,17 +12,14 @@
 # 钀嶅鏈湴
 # VUE_APP_API = 'http://192.168.0.12:10012/'
 
-
 # 浠诲悍鏈湴
-VUE_APP_API = 'http://192.168.0.15:10021/'
+# VUE_APP_API = 'http://192.168.0.15:10021/'
 
-# VUE_APP_API = 'https://dmtest.ahapp.net/doumeeplant_api/'
+VUE_APP_API = 'https://dmtest.ahapp.net/doumeeplant_api/'
 
 # VUE_APP_API = 'http://192.168.0.13:10012/'
 
 # VUE_APP_API = 'http://192.168.0.15:10012/'
 
-
-
 # 鍒樼纾�
-# VUE_APP_API = 'http://192.168.0.18:10012/'
+# VUE_APP_API = 'http://192.168.0.18:10012/'
\ No newline at end of file
diff --git a/h5_standard/src/apis/WorkOrderAPI.ts b/h5_standard/src/apis/WorkOrderAPI.ts
index e545091..e4cb636 100644
--- a/h5_standard/src/apis/WorkOrderAPI.ts
+++ b/h5_standard/src/apis/WorkOrderAPI.ts
@@ -469,4 +469,22 @@
       method: 'get',
       params
   })
+}
+
+// 鏂板鍑哄簱
+export function createForStandard (data: any): Promise<any> {
+    return httpRequest({
+        url: '/ext/wOutboundExt/createForStandard',
+        method: 'post',
+        data
+    })
+}
+
+// 搴撳瓨璋冩暣銆侀噰璐叆搴撳叆搴撳崟鍒涘缓
+export function wOutBoundForStockUp (data: any): Promise<any> {
+    return httpRequest({
+        url: '/ext/wOutboundExt/wOutBoundForStockUp',
+        method: 'post',
+        data
+    })
 }
\ No newline at end of file
diff --git a/h5_standard/src/components/common/Warehouse.vue b/h5_standard/src/components/common/Warehouse.vue
index 72312dd..c9579da 100644
--- a/h5_standard/src/components/common/Warehouse.vue
+++ b/h5_standard/src/components/common/Warehouse.vue
@@ -2,7 +2,7 @@
     <van-popup
         v-model:show="props.show"
         position="bottom"
-        :style="{ height: '100%' }">
+        :style="{ height: props.height }">
         <div class="title">
             <div class="close" @click="close"><van-icon name="arrow-down" size="30" color="#ffffff" /></div>
         </div>
@@ -16,8 +16,7 @@
                     v-model:loading="loading"
                     :finished="finished"
                     finished-text="娌℃湁鏇村浜唦"
-                    @load="onLoad"
-                >
+                    @load="onLoad">
                     <div class="content_list">
                         <div class="content_list_item" v-for="(item, i) in list" :key="i" @click="jump(item)">
                             <div class="content_list_item_name">{{item.name}}</div>
@@ -136,6 +135,10 @@
         systemDicDataId: {
             type: String,
             default: ''
+        },
+        height: {
+            type: String,
+            default: '100%'
         }
     })
 
diff --git a/h5_standard/src/components/newCom/Material.vue b/h5_standard/src/components/newCom/Material.vue
new file mode 100644
index 0000000..5621f22
--- /dev/null
+++ b/h5_standard/src/components/newCom/Material.vue
@@ -0,0 +1,375 @@
+<template>
+    <van-popup
+        v-model:show="props.show"
+        position="bottom"
+        :style="{ height: '80%' }">
+        <div class="title">
+            <div class="close" @click="close"><van-icon name="arrow-down" size="30" color="#ffffff" /></div>
+        </div>
+        <div class="content">
+            <div class="content_search content_top">
+                <v-Search @searchInput="searchInput" @submit="submit" :isShow="false" placeholder="鎼滅储鐗╂枡鍚嶇О"></v-Search>
+            </div>
+            <div class="content_total">鍏眥{form.total}}鏉℃暟鎹�</div>
+            <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+                <van-list
+                    v-model:loading="loading"
+                    :finished="finished"
+                    finished-text="娌℃湁鏇村浜唦"
+                    @load="onLoad"
+                >
+                    <div class="content_list">
+                        <!-- <div class="page_content" v-for="(item1, idx) in list" :key="idx" @click="jump(item1)">
+                            <div class="page_content_title">
+                                <div class="page_content_title_top">
+                                    <span v-if="item1.batch">{{ item1.mmodelUnionName + ' | ' + item1.mmodelCode }}</span>
+                                    <span v-else>{{ item1.mmodelUnionName + ' | ' + item1.mmodelCode }}</span>
+                                    <span>{{item1.outActnum}}{{item1.unitName}}</span>
+                                </div>
+                                <div class="page_content_title_bottom">
+                                    <span class="green" v-if="item1.qualityType === 0">鍚堟牸&nbsp;<span class="black">/</span>&nbsp;</span>
+                                    <span class="warning" v-else-if="item1.qualityType === 1">涓嶈壇&nbsp;<span class="black">/</span>&nbsp;</span>
+                                    <span class="error" v-else-if="item1.qualityType === 2">鎶ュ簾&nbsp;<span class="black">/</span>&nbsp;</span>
+                                    <span v-else>-&nbsp;/&nbsp;</span>
+                                    <span>{{item1.procedureName ? item1.procedureName : '-'}}&nbsp;/&nbsp;</span>
+                                    <span>{{item1.batch ? item1.batch : '-'}}</span>
+                                </div>
+                            </div>
+                        </div> -->
+                        <div class="content_list_item" v-for="(item, i) in list" :key="i" @click="jump(item)">
+                            <div class="content_list_item_name">{{item.mmodelUnionName}}</div>
+                        </div>
+                    </div>
+                </van-list>
+            </van-pull-refresh>
+        </div>
+    </van-popup>
+</template>
+
+<script setup lang="ts">
+    import { defineProps, defineEmits, onMounted, ref, reactive } from 'vue'
+    import { materialDistributeExt } from '@/apis/ExWarehouse'
+    import { model } from '@/interface'
+    import { judgmentPlatform } from "@/utils/utils"
+    import vSearch from '@/components/common/Search.vue'
+
+    // 鎼滅储鏁版嵁鎺ュ彛
+    interface form extends model {
+        total: number,
+        name: string
+    }
+
+    const form = reactive<form>({
+        capacity: 50,
+        page: 0,
+        total: 0,
+        name: '',
+    })
+
+    // 鎼滅储鍒嗙被鏍囩
+    let tagList = ref<Array<{id: string, name: string, num: string}>>([])
+
+    // 鍒楄〃鏁版嵁
+    const list: any = ref([]);
+    const loading = ref(false);
+    const finished = ref(false);
+    const refreshing = ref(false)
+    let isOne = ref<boolean>(true)
+
+    // 鎼滅储妗�
+    const searchInput = (data: any) => {
+        form.page = 0
+        finished.value = false
+        list.value = []
+        form.name = data
+        onLoad()
+    }
+
+    // 鎼滅储鎻愪氦
+    const submit = (): void => {
+        form.page = 0
+        finished.value = false
+        list.value = []
+        onLoad()
+    }
+
+    // 杩斿洖涓婁竴椤靛甫鍙傛暟
+    const jump = (item: any) => {
+        emit('value', item)
+    }
+
+    // 鑾峰彇鐗╂枡鍒楄〃鏁版嵁
+    const onLoad = async () => {
+        if (!finished.value) {
+            loading.value = true;
+            form.page = form.page + 1
+            materialDistributeExt({
+                capacity: form.capacity,
+                page: form.page,
+                model: {
+                    mmodelUnionName: form.name,
+                    status: 1
+                }
+            }).then(res => {
+                if (refreshing.value) {
+                    list.value = []
+                    refreshing.value = false;
+                }
+                loading.value = false;
+                if (res.code === 200 && res.data.records && res.data.records.length !== 0) {
+                    form.total = res.data.total
+                    list.value.push(...res.data.records)
+                } else {
+                    finished.value = true;
+                }
+            }).catch((err: any) => {
+                loading.value = false;
+                finished.value = true;
+                if (refreshing.value) {
+                    list.value = []
+                    refreshing.value = false;
+                }
+            })
+        }
+    }
+
+    // 涓嬫媺鍒锋柊浼樺寲椤甸潰
+    const onRefresh = () => {
+        finished.value = false;
+        form.page = 0
+        loading.value = true;
+        onLoad()
+    }
+
+    let status = ref<boolean>(false)
+
+    const props = defineProps({
+        show: {
+            type: Boolean,
+            required: true
+        }
+    })
+
+    const emit = defineEmits(['close', 'value'])
+
+    // 鍏抽棴鍥炶皟
+    const close = () => {
+        emit('close')
+    }
+
+    onMounted(() => {
+        status.value = judgmentPlatform()
+    })
+</script>
+
+<style lang="scss" scoped>
+    .title {
+        position: fixed;
+        right: 50px;
+        bottom: 100px;
+        z-index: 9;
+        .close {
+            width: 80px;
+            height: 80px;
+            border-radius: 50%;
+            background: #999999;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+        }
+    }
+    .content {
+        .content_code {
+            position: fixed;
+            right: 30px;
+            bottom: 100px;
+            img {
+                width: 138px;
+                height: 138px;
+            }
+        }
+        .content_top {
+            top: 0 !important;
+        }
+        .content_search {
+            padding: 30px;
+            background: white;
+            position: sticky;
+            top: 88px;
+            z-index: 9;
+            .content_search_x {
+                height: 24px;
+            }
+        }
+        .content_total {
+            padding: 24px 30px;
+            background: #F7F7F7;
+            font-size: 24px;
+            font-weight: 400;
+            color: #666666;
+            position: sticky;
+            z-index: 99;
+            top: 127px;
+        }
+        .content_list {
+            width: 100%;
+            height: 100%;
+            display: flex;
+            flex-direction: column;
+            .page_content {
+                margin-top: 36px;
+                padding: 0 30px;
+                box-sizing: border-box;
+                .page_content_title {
+                    display: flex;
+                    flex-direction: column;
+                    margin-bottom: 10px;
+                    .page_content_title_top {
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        span {
+                            &:nth-child(1) {
+                                font-size: 30px;
+                                font-weight: 500;
+                                color: #222222;
+                            }
+                            &:nth-child(2) {
+                                flex-shrink: 0;
+                                font-size: 24px;
+                                font-weight: 400;
+                                color: #333333;
+                                span {
+                                    font-size: 24px;
+                                    color: $nav-color;
+                                }
+                            }
+                        }
+                    }
+                    .page_content_title_bottom {
+                        .green {
+                            color: $nav-stateColor7 !important;
+                            .black {
+                                color: black !important;
+                            }
+                        }
+                        .warning {
+                            color: $nav-stateColor5 !important;
+                            .black {
+                                color: black !important;
+                            }
+                        }
+                        .error {
+                            color: $nav-stateColor4 !important;
+                            .black {
+                                color: black !important;
+                            }
+                        }
+                        span {
+                            font-size: 24px;
+                            font-weight: 400;
+                            color: #666666;
+                        }
+                    }
+                }
+                .lineBorder {
+                    border: none !important;
+                    padding-bottom: 0 !important;
+                    margin-bottom: 24px;
+                }
+                .page_content_list {
+                    width: 100%;
+                    display: flex;
+                    align-items: center;
+                    flex-wrap: wrap;
+                    &:first-child {
+                        margin: 0;
+                    }
+                    &:last-child {
+                        border: none;
+                    }
+                    .page_content_list_nums {
+                        width: 30%;
+                        display: flex;
+                        .page_content_list_num_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                        }
+                        .page_content_list_num_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                    .page_content_list_num {
+                        width: 70%;
+                        display: flex;
+                        .page_content_list_num_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                        }
+                        .page_content_list_num_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                    .page_content_list_items {
+                        width: 30%;
+                        display: flex;
+                        margin-top: 24px;
+                        .page_content_list_item_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                            flex-shrink: 0;
+                        }
+                        .page_content_list_item_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                    .page_content_list_item {
+                        width: 70%;
+                        display: flex;
+                        .page_content_list_item_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                            flex-shrink: 0;
+                        }
+                        .page_content_list_item_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                }
+            }
+            .content_list_item {
+                padding: 30px;
+                display: flex;
+                border-bottom: 1px solid #ececec;
+                .serious {
+                    color: $nav-stateColor4 !important;
+                }
+                .success {
+                    color: $nav-stateColor2 !important;
+                }
+                .warning {
+                    color: $nav-stateColor5 !important;
+                }
+                .content_list_item_status {
+                    font-size: 28px;
+                    margin-right: 10px;
+                }
+                .content_list_item_name {
+                    font-size: 28px;
+                }
+            }
+        }
+    }
+</style>
diff --git a/h5_standard/src/components/newCom/location.vue b/h5_standard/src/components/newCom/location.vue
new file mode 100644
index 0000000..77cc21f
--- /dev/null
+++ b/h5_standard/src/components/newCom/location.vue
@@ -0,0 +1,256 @@
+<template>
+    <van-popup
+        v-model:show="props.show"
+        position="bottom"
+        :style="{ height: '60%' }">
+        <div class="title">
+            <div class="close" @click="close"><van-icon name="arrow-down" size="30" color="#ffffff" /></div>
+        </div>
+        <div class="content">
+            <div class="content_list">
+                <div class="content_list_item" v-for="(item, i) in props.list" :key="i" @click="jump(item)">
+                    <div class="content_list_item_name">{{item.unionName}}</div>
+                </div>
+            </div>
+        </div>
+    </van-popup>
+</template>
+
+<script setup lang="ts">
+    import { defineProps, defineEmits, ref } from 'vue'
+
+    // 杩斿洖涓婁竴椤靛甫鍙傛暟
+    const jump = (item: any) => {
+        emit('value', item)
+    }
+
+    const props: any = defineProps({
+        show: {
+            type: Boolean,
+            required: true
+        },
+        list: {
+            type: Array,
+            required: true
+        }
+    })
+
+    const emit = defineEmits(['close', 'value'])
+
+    // 鍏抽棴鍥炶皟
+    const close = () => {
+        emit('close')
+    }
+</script>
+
+<style lang="scss" scoped>
+    .title {
+        position: fixed;
+        right: 50px;
+        bottom: 100px;
+        z-index: 9;
+        .close {
+            width: 80px;
+            height: 80px;
+            border-radius: 50%;
+            background: #999999;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+        }
+    }
+    .content {
+        .content_code {
+            position: fixed;
+            right: 30px;
+            bottom: 100px;
+            img {
+                width: 138px;
+                height: 138px;
+            }
+        }
+        .content_top {
+            top: 0 !important;
+        }
+        .content_search {
+            padding: 30px;
+            background: white;
+            position: sticky;
+            top: 88px;
+            z-index: 9;
+            .content_search_x {
+                height: 24px;
+            }
+        }
+        .content_total {
+            padding: 24px 30px;
+            background: #F7F7F7;
+            font-size: 24px;
+            font-weight: 400;
+            color: #666666;
+            position: sticky;
+            z-index: 99;
+            top: 127px;
+        }
+        .content_list {
+            width: 100%;
+            height: 100%;
+            display: flex;
+            flex-direction: column;
+            .page_content {
+                margin-top: 36px;
+                padding: 0 30px;
+                box-sizing: border-box;
+                .page_content_title {
+                    display: flex;
+                    flex-direction: column;
+                    margin-bottom: 10px;
+                    .page_content_title_top {
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        span {
+                            &:nth-child(1) {
+                                font-size: 30px;
+                                font-weight: 500;
+                                color: #222222;
+                            }
+                            &:nth-child(2) {
+                                flex-shrink: 0;
+                                font-size: 24px;
+                                font-weight: 400;
+                                color: #333333;
+                                span {
+                                    font-size: 24px;
+                                    color: $nav-color;
+                                }
+                            }
+                        }
+                    }
+                    .page_content_title_bottom {
+                        .green {
+                            color: $nav-stateColor7 !important;
+                            .black {
+                                color: black !important;
+                            }
+                        }
+                        .warning {
+                            color: $nav-stateColor5 !important;
+                            .black {
+                                color: black !important;
+                            }
+                        }
+                        .error {
+                            color: $nav-stateColor4 !important;
+                            .black {
+                                color: black !important;
+                            }
+                        }
+                        span {
+                            font-size: 24px;
+                            font-weight: 400;
+                            color: #666666;
+                        }
+                    }
+                }
+                .lineBorder {
+                    border: none !important;
+                    padding-bottom: 0 !important;
+                    margin-bottom: 24px;
+                }
+                .page_content_list {
+                    width: 100%;
+                    display: flex;
+                    align-items: center;
+                    flex-wrap: wrap;
+                    &:first-child {
+                        margin: 0;
+                    }
+                    &:last-child {
+                        border: none;
+                    }
+                    .page_content_list_nums {
+                        width: 30%;
+                        display: flex;
+                        .page_content_list_num_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                        }
+                        .page_content_list_num_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                    .page_content_list_num {
+                        width: 70%;
+                        display: flex;
+                        .page_content_list_num_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                        }
+                        .page_content_list_num_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                    .page_content_list_items {
+                        width: 30%;
+                        display: flex;
+                        margin-top: 24px;
+                        .page_content_list_item_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                            flex-shrink: 0;
+                        }
+                        .page_content_list_item_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                    .page_content_list_item {
+                        width: 70%;
+                        display: flex;
+                        .page_content_list_item_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                            flex-shrink: 0;
+                        }
+                        .page_content_list_item_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                }
+            }
+            .content_list_item {
+                padding: 30px;
+                display: flex;
+                border-bottom: 1px solid #ececec;
+                .serious {
+                    color: $nav-stateColor4 !important;
+                }
+                .success {
+                    color: $nav-stateColor2 !important;
+                }
+                .warning {
+                    color: $nav-stateColor5 !important;
+                }
+                .content_list_item_status {
+                    font-size: 28px;
+                    margin-right: 10px;
+                }
+                .content_list_item_name {
+                    font-size: 28px;
+                }
+            }
+        }
+    }
+</style>
diff --git a/h5_standard/src/components/newCom/quality.vue b/h5_standard/src/components/newCom/quality.vue
new file mode 100644
index 0000000..20bf926
--- /dev/null
+++ b/h5_standard/src/components/newCom/quality.vue
@@ -0,0 +1,259 @@
+<template>
+    <van-popup
+        v-model:show="props.show"
+        position="bottom"
+        :style="{ height: '60%' }">
+        <div class="title">
+            <div class="close" @click="close"><van-icon name="arrow-down" size="30" color="#ffffff" /></div>
+        </div>
+        <div class="content">
+            <div class="content_list">
+                <div class="content_list_item" v-for="(item, i) in list" :key="i" @click="jump(item)">
+                    <div class="content_list_item_name">{{item.name}}</div>
+                </div>
+            </div>
+        </div>
+    </van-popup>
+</template>
+
+<script setup lang="ts">
+    import { defineProps, defineEmits, ref } from 'vue'
+
+    let list = ref([
+        { name: '鍚堟牸', id: '0' },
+        { name: '涓嶈壇', id: '1' },
+        { name: '鎶ュ簾', id: '2' },
+        { name: '娣峰悎', id: '3' }
+    ])
+
+    // 杩斿洖涓婁竴椤靛甫鍙傛暟
+    const jump = (item: any) => {
+        emit('value', item)
+    }
+
+    const props: any = defineProps({
+        show: {
+            type: Boolean,
+            required: true
+        }
+    })
+
+    const emit = defineEmits(['close', 'value'])
+
+    // 鍏抽棴鍥炶皟
+    const close = () => {
+        emit('close')
+    }
+</script>
+
+<style lang="scss" scoped>
+    .title {
+        position: fixed;
+        right: 50px;
+        bottom: 100px;
+        z-index: 9;
+        .close {
+            width: 80px;
+            height: 80px;
+            border-radius: 50%;
+            background: #999999;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+        }
+    }
+    .content {
+        .content_code {
+            position: fixed;
+            right: 30px;
+            bottom: 100px;
+            img {
+                width: 138px;
+                height: 138px;
+            }
+        }
+        .content_top {
+            top: 0 !important;
+        }
+        .content_search {
+            padding: 30px;
+            background: white;
+            position: sticky;
+            top: 88px;
+            z-index: 9;
+            .content_search_x {
+                height: 24px;
+            }
+        }
+        .content_total {
+            padding: 24px 30px;
+            background: #F7F7F7;
+            font-size: 24px;
+            font-weight: 400;
+            color: #666666;
+            position: sticky;
+            z-index: 99;
+            top: 127px;
+        }
+        .content_list {
+            width: 100%;
+            height: 100%;
+            display: flex;
+            flex-direction: column;
+            .page_content {
+                margin-top: 36px;
+                padding: 0 30px;
+                box-sizing: border-box;
+                .page_content_title {
+                    display: flex;
+                    flex-direction: column;
+                    margin-bottom: 10px;
+                    .page_content_title_top {
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        span {
+                            &:nth-child(1) {
+                                font-size: 30px;
+                                font-weight: 500;
+                                color: #222222;
+                            }
+                            &:nth-child(2) {
+                                flex-shrink: 0;
+                                font-size: 24px;
+                                font-weight: 400;
+                                color: #333333;
+                                span {
+                                    font-size: 24px;
+                                    color: $nav-color;
+                                }
+                            }
+                        }
+                    }
+                    .page_content_title_bottom {
+                        .green {
+                            color: $nav-stateColor7 !important;
+                            .black {
+                                color: black !important;
+                            }
+                        }
+                        .warning {
+                            color: $nav-stateColor5 !important;
+                            .black {
+                                color: black !important;
+                            }
+                        }
+                        .error {
+                            color: $nav-stateColor4 !important;
+                            .black {
+                                color: black !important;
+                            }
+                        }
+                        span {
+                            font-size: 24px;
+                            font-weight: 400;
+                            color: #666666;
+                        }
+                    }
+                }
+                .lineBorder {
+                    border: none !important;
+                    padding-bottom: 0 !important;
+                    margin-bottom: 24px;
+                }
+                .page_content_list {
+                    width: 100%;
+                    display: flex;
+                    align-items: center;
+                    flex-wrap: wrap;
+                    &:first-child {
+                        margin: 0;
+                    }
+                    &:last-child {
+                        border: none;
+                    }
+                    .page_content_list_nums {
+                        width: 30%;
+                        display: flex;
+                        .page_content_list_num_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                        }
+                        .page_content_list_num_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                    .page_content_list_num {
+                        width: 70%;
+                        display: flex;
+                        .page_content_list_num_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                        }
+                        .page_content_list_num_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                    .page_content_list_items {
+                        width: 30%;
+                        display: flex;
+                        margin-top: 24px;
+                        .page_content_list_item_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                            flex-shrink: 0;
+                        }
+                        .page_content_list_item_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                    .page_content_list_item {
+                        width: 70%;
+                        display: flex;
+                        .page_content_list_item_label {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #666666;
+                            flex-shrink: 0;
+                        }
+                        .page_content_list_item_nr {
+                            font-size: 26px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                    }
+                }
+            }
+            .content_list_item {
+                padding: 30px;
+                display: flex;
+                border-bottom: 1px solid #ececec;
+                .serious {
+                    color: $nav-stateColor4 !important;
+                }
+                .success {
+                    color: $nav-stateColor2 !important;
+                }
+                .warning {
+                    color: $nav-stateColor5 !important;
+                }
+                .content_list_item_status {
+                    font-size: 28px;
+                    margin-right: 10px;
+                }
+                .content_list_item_name {
+                    font-size: 28px;
+                }
+            }
+        }
+    }
+</style>
diff --git a/h5_standard/src/router/module/needToBeDealtWith/index.ts b/h5_standard/src/router/module/needToBeDealtWith/index.ts
index d17bcd1..ba07e65 100644
--- a/h5_standard/src/router/module/needToBeDealtWith/index.ts
+++ b/h5_standard/src/router/module/needToBeDealtWith/index.ts
@@ -29,7 +29,7 @@
                 path: '/needToBeDealtWith/outbound',
                 name: 'outbound',
                 meta: {
-                    title: '鍑哄簱',
+                    title: '鏂板鍑哄簱',
                     keepAlive: false
                 },
                 component: () => import('@/views/needToBeDealtWith/outbound.vue')
@@ -38,7 +38,7 @@
                 path: '/needToBeDealtWith/addWarehousing',
                 name: 'addWarehousing',
                 meta: {
-                    title: '鍏ュ簱',
+                    title: '鏂板鍏ュ簱',
                     keepAlive: false
                 },
                 component: () => import('@/views/needToBeDealtWith/addWarehousing.vue')
diff --git a/h5_standard/src/router/module/workOrder/index.ts b/h5_standard/src/router/module/workOrder/index.ts
index b5b8356..b2df459 100644
--- a/h5_standard/src/router/module/workOrder/index.ts
+++ b/h5_standard/src/router/module/workOrder/index.ts
@@ -186,6 +186,15 @@
                     keepAlive: false
                 },
                 component: () => import('@/views/workOrder/location.vue')
+            },
+            {
+                path: '/workOrder/reportingForWork',
+                name: 'reportingForWork',
+                meta: {
+                    title: '涓�閿姤宸�',
+                    keepAlive: false
+                },
+                component: () => import('@/views/workOrder/reportingForWork.vue')
             }
         ]
     }
diff --git a/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue b/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue
index d8e4816..55b20d0 100644
--- a/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue
+++ b/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue
@@ -1,18 +1,511 @@
 <template>
-    <div class="page">
-        鏂板鍏ュ簱
+    <div class="rework">
+        <div class="rework_list">
+            <div class="rework_list_item" @click="typeShow = true">
+                <span><b>*</b>鍗曟嵁绫诲瀷</span>
+                <div class="rework_list_item_right">
+                    <span :class="form.typeName ? 'black' : ''">{{form.typeName ? form.typeName : '璇烽�夋嫨'}}</span>
+                    <van-icon name="arrow" size="20" color="#999999" />
+                </div>
+            </div>
+            <div class="rework_list_item" @click="warehouseShow = true">
+                <span><b>*</b>鍏ュ簱浠撳簱</span>
+                <div class="rework_list_item_right">
+                    <span :class="form.warehouseName ? 'black' : ''">{{form.warehouseName ? form.warehouseName : '璇烽�夋嫨'}}</span>
+                    <van-icon name="arrow" size="20" color="#999999" />
+                </div>
+            </div>
+        </div>
+        <div class="rework_qd">
+            <div class="rework_qd_title">
+                <div class="rework_qd_title_left">
+                    <div class="x"></div>
+                    <span>{{`鍏ュ簱鐗╂枡娓呭崟${list.length}`}}</span>
+                </div>
+                <div class="rework_qd_title_right" @click="addItem">
+                    <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" />
+                    <span>澧炲姞鍏ュ簱</span>
+                </div>
+            </div>
+            <van-swipe-cell v-for="(item, index) in list" :key="index">
+                <div class="rework_qd_list">
+                    <div class="rework_qd_item" @click="openL(index)">
+                        <span><b>*</b>鍏ュ簱璐т綅</span>
+                        <div class="rework_qd_item_right">
+                            <span :class="item.locationName ? 'black' : ''">{{item.locationName ? item.locationName : '璇烽�夋嫨'}}</span>
+                            <van-icon name="arrow" size="20" color="#999999" />
+                        </div>
+                    </div>
+                    <div class="rework_qd_item" @click="openMaterial(index)">
+                        <span><b>*</b>鍏ュ簱鐗╂枡</span>
+                        <div class="rework_qd_item_right">
+                            <span :class="item.materialName ? 'black' : ''">{{item.materialName ? item.materialName : '璇烽�夋嫨'}}</span>
+                            <van-icon name="arrow" size="20" color="#999999" />
+                        </div>
+                    </div>
+                    <!-- <div class="rework_qd_item" v-if="form.type != 25">
+                        <span>鐢熶骇宸ュ簭</span>
+                        <div class="rework_qd_item_right">
+                            <span :class="item.procedureName ? 'black' : ''">{{item.procedureName ? item.procedureName : '璇烽�夋嫨'}}</span>
+                            <van-icon name="arrow" size="20" color="#999999" />
+                        </div>
+                    </div> -->
+                    <div class="rework_qd_item" @click="openQ(index)">
+                        <span><b>*</b>璐ㄩ噺灞炴��</span>
+                        <div class="rework_qd_item_right">
+                            <span :class="item.qualityTypeName ? 'black' : ''">{{item.qualityTypeName ? item.qualityTypeName : '璇烽�夋嫨'}}</span>
+                            <van-icon name="arrow" size="20" color="#999999" />
+                        </div>
+                    </div>
+                    <div class="rework_qd_item">
+                        <span>鎵规鍙�</span>
+                        <div class="rework_qd_item_right">
+                            <input type="text" v-model="item.batch" placeholder="璇疯緭鍏�" />
+                        </div>
+                    </div>
+                    <div class="rework_qd_item">
+                        <span><b>*</b>鍏ュ簱鏁伴噺<template v-if="item.unitName">({{ item.unitName }})</template></span>
+                        <div class="rework_qd_item_right">
+                            <input type="text" v-model="item.num" placeholder="0" />
+                        </div>
+                    </div>
+                </div>
+                <template #right>
+                    <van-button style="height: 100%;" square type="danger" text="鍒犻櫎" @click="dele(index)" />
+                </template>
+            </van-swipe-cell>
+        </div>
+        <div class="rework_zw"></div>
+        <div class="rework_footer">
+            <button class="rework_footer_submit" @click="onConfirm">鎻愪氦</button>
+        </div>
+        <!-- 浠撳簱 -->
+        <Warehouse :show="warehouseShow" @close="close" @value="getValue" />
+        <!-- 鐗╂枡 -->
+        <Material :show="materialsShow" @close="close1" @value="getValue1" />
+        <!-- 璐ㄩ噺灞炴�� -->
+        <Quality :show="qualityShow" @close="close2" @value="getValue2" />
+        <!-- 閫夋嫨璐т綅 -->
+        <Location :show="locationShow" :list="locationList" @close="close3" @value="getValue3" />
+        <!-- 鍗曟嵁绫诲瀷 -->
+        <van-popup v-model:show="typeShow" position="bottom" :style="{ height: '50%' }">
+            <van-picker
+                :columns="columns"
+                @confirm="onConfirm1"
+                @cancel="onCancel"
+                :columns-field-names="customFieldName"
+            />
+        </van-popup>
     </div>
 </template>
 
 <script setup lang="ts">
+    import { onMounted, ref, reactive } from 'vue'
+    import { useRouter } from 'vue-router'
+    import { Toast } from 'vant'
+    import { createForStandard, getListByWarehouseId, wOutBoundForStockUp } from '@/apis/WorkOrderAPI'
+    import Warehouse from '@/components/common/Warehouse.vue'
+    import Material from '@/components/newCom/Material.vue'
+    import Quality from '@/components/newCom/quality.vue'
+    import Location from '@/components/newCom/location.vue'
 
+    const router = useRouter()
+    // 琛ㄥ崟鏁版嵁
+    let form: any = reactive({
+        warehouseName: '',
+        warehouseId: '',
+        type: '',
+        typeName: ''
+    })
+
+    let locationList: any = ref([])
+
+    let i = ref(0)
+
+    let columns = ref([
+        { name: '閲囪喘鍏ュ簱', id: 25 },
+        { name: '搴撳瓨璋冩暣', id: 28 }
+    ])
+    const customFieldName = {
+      text: 'name'
+    };
+    let list = ref<Array<any>>([
+        {
+            batch: '',
+            locationId: '',
+            locationName: '',
+            materialId: '',
+            materialName: '',
+            num: '',
+            procedureId: '',
+            procedureName: '',
+            qualityType: '',
+            qualityTypeName: '',
+            unitId: '',
+            unitName: ''
+        }
+    ])
+    let warehouseShow = ref<boolean>(false)
+    let materialsShow = ref<boolean>(false)
+    let qualityShow = ref<boolean>(false)
+    let locationShow = ref<boolean>(false)
+    let typeShow = ref<boolean>(false)
+
+    // 鎵撳紑閫夋嫨鐗╂枡
+    const openMaterial = (index: number) => {
+        i.value = index
+        materialsShow.value = true
+    }
+    // 鎵撳紑閫夋嫨鐗╂枡
+    const openQ = (index: number) => {
+        i.value = index
+        qualityShow.value = true
+    }
+    // 鎵撳紑閫夋嫨璐т綅
+    const openL = (index: number) => {
+        if (!form.warehouseId) return Toast('璇烽�夋嫨鍏ュ簱浠撳簱')
+        i.value = index
+        locationShow.value = true
+    }
+    const addItem = () => {
+        // if (!form.warehouseId) return Toast('璇烽�夋嫨鍏ュ簱浠撳簱')
+        list.value.push({
+            batch: '',
+            locationId: '',
+            locationName: '',
+            materialId: '',
+            materialName: '',
+            num: '',
+            procedureId: '',
+            procedureName: '',
+            qualityType: '',
+            qualityTypeName: '',
+            unitId: '',
+            unitName: ''
+        })
+    }
+
+    const onConfirm1 = (value: any) => {
+        form.typeName = value.name
+        form.type = value.id
+        typeShow.value = false
+    };
+    const onCancel = () => {
+        typeShow.value = false
+    }
+    
+    // 鑾峰彇褰撳ぉ骞存湀鏃�
+    const getDay = () => {
+        var date = new Date();
+        var year = date.getFullYear();
+        var month = date.getMonth() + 1;
+        var day = date.getDate();
+        return `${year}-${month <= 9 ? `0${month}` : month}-${day <= 9 ? `0${day}` : day}`
+    }
+
+    // 鎻愪氦
+    const onConfirm = () => {
+        if (!form.type) return Toast('璇烽�夋嫨鍗曟嵁绫诲瀷')
+        if (!form.warehouseId) return Toast('璇烽�夋嫨鍏ュ簱浠撳簱')
+        if (list.value.length === 0) return Toast('璇峰厛娣诲姞鍏ュ簱鐗╂枡')
+        for (let i = 0; i < list.value.length; i++) {
+            if (!list.value[i].locationId) return Toast(`绗�${i+1}椤瑰叆搴撹揣浣嶄笉鑳戒负绌篳)
+            if (!list.value[i].materialId) return Toast(`绗�${i+1}椤瑰叆搴撶墿鏂欎笉鑳戒负绌篳)
+            if (!list.value[i].qualityType) return Toast(`绗�${i+1}椤硅川閲忓睘鎬т笉鑳戒负绌篳)
+            if (!list.value[i].num || list.value[i].num == '' || list.value[i].num == 0) {
+                return Toast(`绗�${i + 1}椤瑰叆搴撴暟閲忓繀椤诲ぇ浜�0`)
+            }
+        }
+        wOutBoundForStockUp({
+            type: form.type,
+            planDate: getDay(),
+            validDate: getDay(),
+            warehouseId: form.warehouseId,
+            woutboundInBodyBeanList: list.value
+        }).then(res => {
+            if (res.code === 200) {
+                Toast.success({message: '鍏ュ簱鎴愬姛'})
+                setTimeout(() => {
+                    router.go(-1)
+                }, 2000)
+            }
+        })
+    }
+
+    // 鎵撳紑閫夋嫨鐗╂枡
+    const openMs = () => {
+        if (!form.warehouseId) return Toast('璇峰厛閫夋嫨鍑哄簱浠撳簱')
+        const { selected }: any = Material.value
+        let ids = list.value.map(item => item.id)
+        Material.value.selected = ids
+        materialsShow.value = true
+    }
+
+    // 鍒犻櫎
+    const dele = (index: any) => {
+        if (list.value.length === 1) {
+            Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+            return
+        }
+        list.value.splice(index, 1)
+    }
+    // 鍏抽棴浠撳簱閫夋嫨寮规
+    const close = (): void => {
+        warehouseShow.value = false
+    }
+    // 鍏抽棴浠撳簱閫夋嫨寮规
+    const close1 = (): void => {
+        materialsShow.value = false
+    }
+    // 鍏抽棴浠撳簱閫夋嫨寮规
+    const close2 = (): void => {
+        qualityShow.value = false
+    }
+    // 鍏抽棴璐т綅閫夋嫨寮规
+    const close3 = (): void => {
+        locationShow.value = false
+    }
+    // 閫夋嫨浠撳簱鍥炶皟
+    const getValue = (item: any): void => {
+        form.warehouseName = item.name
+        form.warehouseId = item.id
+        getListByWarehouseId({ wareHouseId: item.id })
+            .then(res => {
+                if (res.code === 200) {
+                    locationList.value = res.data
+                    list.value.forEach(item => {
+                        item.locationId = ''
+                        item.locationName = ''
+                    })
+                }
+            })
+        warehouseShow.value = false
+    }
+    // 閫夋嫨鐗╂枡
+    const getValue1 = (item: any): void => {
+        console.log(item)
+        list.value[i.value].materialName = item.mmodelUnionName
+        list.value[i.value].materialId = item.id
+        list.value[i.value].unitId = item.unitId
+        list.value[i.value].unitName = item.umodelName
+        materialsShow.value = false
+    }
+    // 閫夋嫨璐ㄩ噺灞炴��
+    const getValue2 = (item: any): void => {
+        list.value[i.value].qualityType = item.id
+        list.value[i.value].qualityTypeName = item.name
+        qualityShow.value = false
+    }
+    // 閫夋嫨璐т綅
+    const getValue3 = (item: any): void => {
+        list.value[i.value].locationId = item.id
+        list.value[i.value].locationName = item.unionName
+        locationShow.value = false
+    }
+    onMounted(() => {
+        // 鑾峰彇宸ヨ淇℃伅
+        // getLKInfo(route.query.id as string)
+    })
 </script>
 
 <style lang="scss" scoped>
-.page {
-    width: 100%;
-    height: 100%;
-    position: absolute;
-    background: #F7F7F7;
-}
-</style>
\ No newline at end of file
+    .rework {
+        width: 100%;
+        height: 100%;
+        position: absolute;
+        .rework_list {
+            display: flex;
+            flex-direction: column;
+            background: white;
+            padding: 0 30px;
+            box-sizing: border-box;
+            .rework_list_item {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                height: 98px;
+                border-bottom: 1PX solid #E5E5E5;
+                &:last-child {
+                    border: none;
+                }
+                span {
+                    font-size: 30px;
+                    font-weight: 400;
+                    color: #222222;
+                    flex-shrink: 0;
+                    b {
+                        font-size: 30px;
+                        color: red;
+                        margin-right: 5px;
+                    }
+                }
+                .rework_list_item_right {
+                    flex: 1;
+                    display: flex;
+                    align-items: center;
+                    justify-content: flex-end;
+                    span {
+                        font-size: 28px;
+                        font-weight: 400;
+                        color: #999999;
+                    }
+                    .black {
+                        color: black !important;
+                    }
+                    input {
+                        width: 230px;
+                        height: 60px;
+                        font-size: 28px;
+                        border-radius: 8px;
+                        padding: 0 30px;
+                        text-align: right;
+                        box-sizing: border-box;
+                        border: 1px solid #CCCCCC;
+                    }
+                    input::-webkit-input-placeholder { /* WebKit browsers */
+                        font-size: 28px;
+                        font-weight: 400;
+                        color: #B2B2B2;
+                    }
+                }
+            }
+        }
+        .rework_qd {
+            margin-top: 40px;
+            width: 100%;
+            background: #F7F7F7;
+            .rework_qd_title {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                padding: 0 30px 30px 30px;
+                .rework_qd_title_left {
+                    display: flex;
+                    align-items: center;
+                    span {
+                        font-size: 32px;
+                        font-weight: 500;
+                        color: #222222;
+                    }
+                    .x {
+                        width: 8px;
+                        height: 30px;
+                        background: #4275FC;
+                        border-radius: 2px;
+                        margin-right: 12px;
+                    }
+                }
+                .rework_qd_title_right {
+                    display: flex;
+                    align-items: center;
+                    img {
+                        width: 28px;
+                        height: 28px;
+                        margin-right: 12px;
+                    }
+                    span {
+                        font-size: 28px;
+                        font-family: PingFangSC-Regular, PingFang SC;
+                        font-weight: 400;
+                        color: #4275FC;
+                    }
+                }
+            }
+            .rework_qd_list {
+                display: flex;
+                flex-direction: column;
+                padding: 0 30px;
+                background: #FFFFFF;
+                box-sizing: border-box;
+                margin-bottom: 30px;
+                .rework_qd_item {
+                    display: flex;
+                    align-items: center;
+                    justify-content: space-between;
+                    height: 98px;
+                    border-bottom: 1PX solid #E5E5E5;
+                    &:last-child {
+                        border: none;
+                    }
+                    span {
+                        font-size: 30px;
+                        font-weight: 400;
+                        color: #222222;
+                        flex-shrink: 0;
+                        b {
+                            font-size: 30px;
+                            color: red;
+                            margin-right: 5px;
+                        }
+                    }
+                    .rework_qd_item_right {
+                        display: flex;
+                        align-items: center;
+                        span {
+                            font-size: 28px;
+                            font-weight: 400;
+                            color: #999999;
+                        }
+                        .black {
+                            color: black !important;
+                        }
+                        input {
+                            width: 230px;
+                            height: 60px;
+                            font-size: 28px;
+                            border-radius: 8px;
+                            padding: 0 30px;
+                            text-align: right;
+                            box-sizing: border-box;
+                            border: 1px solid #CCCCCC;
+                        }
+                        input::-webkit-input-placeholder { /* WebKit browsers */
+                            font-size: 28px;
+                            font-weight: 400;
+                            color: #B2B2B2;
+                        }
+                    }
+                }
+            }
+        }
+        .rework_zw {
+            height: 168px;
+        }
+        .rework_footer {
+            width: calc(100% - 60px);
+            position: fixed;
+            bottom: 0;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            padding: 0 30px 68px 30px;
+            .rework_footer_add {
+                flex: 1;
+                height: 88px;
+                font-size: 30px;
+                font-weight: 500;
+                color: $nav-color;
+                background: #FFFFFF;
+                box-shadow: 0 0 12px 0 rgba(0,0,0,0.0800);
+                border-radius: 8px;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+            }
+            .rework_footer_submit {
+                flex: 1;
+                height: 88px;
+                font-size: 30px;
+                font-weight: 500;
+                color: #ffffff;
+                background: $nav-color;
+                box-shadow: 0 0 12px 0 rgba(0,0,0,0.0800);
+                border-radius: 8px;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                border: none;
+            }
+        }
+    }
+</style>
diff --git a/h5_standard/src/views/needToBeDealtWith/outbound.vue b/h5_standard/src/views/needToBeDealtWith/outbound.vue
index 5738353..634b0f8 100644
--- a/h5_standard/src/views/needToBeDealtWith/outbound.vue
+++ b/h5_standard/src/views/needToBeDealtWith/outbound.vue
@@ -1,18 +1,403 @@
 <template>
-    <div class="page">
-        鏂板鍑哄簱
+    <div class="rework">
+        <div class="rework_list">
+            <div class="rework_list_item" @click="typeShow = true">
+                <span><b>*</b>鍗曟嵁绫诲瀷</span>
+                <div class="rework_list_item_right">
+                    <span :class="form.typeName ? 'black' : ''">{{form.typeName ? form.typeName : '璇烽�夋嫨'}}</span>
+                    <van-icon name="arrow" size="20" color="#999999" />
+                </div>
+            </div>
+            <div class="rework_list_item" @click="warehouseShow = true">
+                <span><b>*</b>鍑哄簱浠撳簱</span>
+                <div class="rework_list_item_right">
+                    <span :class="form.warehouseName ? 'black' : ''">{{form.warehouseName ? form.warehouseName : '璇烽�夋嫨'}}</span>
+                    <van-icon name="arrow" size="20" color="#999999" />
+                </div>
+            </div>
+        </div>
+        <div class="rework_qd">
+            <div class="rework_qd_title">
+                <div class="rework_qd_title_left">
+                    <div class="x"></div>
+                    <span>{{`鍑哄簱鐗╂枡娓呭崟${list.length}`}}</span>
+                </div>
+                <div class="rework_qd_title_right" @click="openMs">
+                    <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" />
+                    <span>澧炲姞鍑哄簱</span>
+                </div>
+            </div>
+            <van-swipe-cell v-for="(item, index) in list" :key="index">
+                <div class="rework_qd_item">
+                    <img class="rework_qd_item_dele" @click="dele(index)" src="@/assets/icon/chuku_ic_delete@2x.png" alt="" />
+                    <div class="rework_qd_item_wl">
+                        <span>{{ item.materialName }} | {{ item.materialCode }}</span>
+                    </div>
+                    <div class="rework_qd_item_cate">
+                        <span class="green" v-if="item.qualityType === '0'">鍚堟牸&nbsp;|&nbsp;</span>
+                        <span class="yellow" v-if="item.qualityType === '1'">涓嶈壇&nbsp;|&nbsp;</span>
+                        <span class="red" v-if="item.qualityType === '2'">鎶ュ簾&nbsp;|&nbsp;</span>
+                        <span>{{ item.procedureName }}&nbsp;|&nbsp;</span>
+                        <span>{{ item.batch }}</span>
+                    </div>
+                    <div class="rework_qd_item_hw">
+                        <span>鍑哄簱璐т綅锛歿{ item.locationName }}</span>
+                        <div class="rework_qd_item_hw_right">
+                            <span>鏁伴噺锛�</span>
+                            <input type="number" v-model="item.num" placeholder="0" />
+                            <span>{{ item.unitName }}</span>
+                        </div>
+                    </div>
+                </div>
+                <!-- <template #right>
+                    <van-button style="height: 100%;" square type="danger" text="鍒犻櫎" @click="dele(index)" />
+                </template> -->
+            </van-swipe-cell>
+        </div>
+        <div class="rework_zw"></div>
+        <div class="rework_footer">
+            <button class="rework_footer_submit" @click="onConfirm">鎻愪氦</button>
+        </div>
+        <Warehouse :show="warehouseShow" @close="close" @value="getValue" />
+        <Materials ref="Material" :show="materialsShow" :id="form.warehouseId.toString()" @close="close1" @value="getValue1" />
+        <!-- 鍗曟嵁绫诲瀷 -->
+        <van-popup v-model:show="typeShow" position="bottom" :style="{ height: '50%' }">
+            <van-picker
+                :columns="columns"
+                @confirm="onConfirm1"
+                @cancel="onCancel"
+                :columns-field-names="customFieldName"
+            />
+        </van-popup>
     </div>
 </template>
 
 <script setup lang="ts">
+    import { onMounted, ref, reactive } from 'vue'
+    import { useRouter } from 'vue-router'
+    import { Toast } from 'vant'
+    import { createForStandard } from '@/apis/WorkOrderAPI'
+    import Warehouse from '@/components/common/Warehouse.vue'
+    import Materials from '@/components/common/Materials.vue'
+    const Material = ref(null)
+    const router = useRouter()
+    // 琛ㄥ崟鏁版嵁
+    let form = reactive({
+        warehouseName: '',
+        warehouseId: '',
+        type: '',
+        typeName: ''
+    })
 
+    let columns = ref([
+        { name: '閿�鍞嚭搴�', id: 18 },
+        { name: '搴撳瓨璋冩暣', id: 28 },
+        { name: '浠撳簱鎶ュ簾', id: 21 }
+    ])
+    const customFieldName = {
+      text: 'name'
+    };
+    let mIds = ref('')
+    let list = ref<Array<any>>([])
+    let warehouseShow = ref<boolean>(false)
+    let materialsShow = ref<boolean>(false)
+    let typeShow = ref<boolean>(false)
+
+    const onConfirm1 = (value: any) => {
+        form.typeName = value.name
+        form.type = value.id
+        typeShow.value = false
+    };
+    const onCancel = () => {
+        typeShow.value = false
+    }
+    
+    // 鑾峰彇褰撳ぉ骞存湀鏃�
+    const getDay = () => {
+      var date = new Date();
+      var year = date.getFullYear();
+      var month = date.getMonth() + 1;
+      var day = date.getDate();
+      return `${year}-${month <= 9 ? `0${month}` : month}-${day <= 9 ? `0${day}` : day}`
+    }
+
+    // 鎻愪氦
+    const onConfirm = () => {
+        if (!form.type) return Toast('璇烽�夋嫨鍗曟嵁绫诲瀷')
+        for (let i = 0; i < list.value.length; i++) {
+            if (!list.value[i].num || list.value[i].num == '' || list.value[i].num == 0) {
+                return Toast(`绗�${i + 1}涓嚭搴撶墿鏂欐暟閲忓繀椤诲ぇ浜�0`)
+            }
+            if (list.value[i].num > list.value[i].total) {
+                return Toast(`绗�${i + 1}涓墿鏂欐暟閲忎笉鑳藉ぇ浜庡簱瀛橀噺锛乣)
+            }
+        }
+        createForStandard({
+            billType: form.type,
+            planDate: getDay(),
+            origin: 0,
+            type: 0,
+            warehouseId: form.warehouseId,
+            woutBoundDetailBeans: list.value
+        }).then(res => {
+            if (res.code === 200) {
+                Toast.success({message: '鍑哄簱鎴愬姛'})
+                setTimeout(() => {
+                    router.go(-1)
+                }, 2000)
+            }
+        })
+    }
+
+    // 鎵撳紑閫夋嫨鐗╂枡
+    const openMs = () => {
+        if (!form.warehouseId) return Toast('璇峰厛閫夋嫨鍑哄簱浠撳簱')
+        const { selected }: any = Material.value
+        let ids = list.value.map(item => item.id)
+        Material.value.selected = ids
+        materialsShow.value = true
+    }
+
+    // 鍒犻櫎
+    const dele = (index: any) => {
+        if (list.value.length === 1) {
+            Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+            return
+        }
+        list.value.splice(index, 1)
+    }
+    // 鍏抽棴浠撳簱閫夋嫨寮规
+    const close = (): void => {
+        warehouseShow.value = false
+    }
+    // 鍏抽棴浠撳簱閫夋嫨寮规
+    const close1 = (): void => {
+        materialsShow.value = false
+    }
+    // 閫夋嫨浠撳簱鍥炶皟
+    const getValue = (item: any): void => {
+        form.warehouseName = item.name
+        form.warehouseId = item.id
+        warehouseShow.value = false
+    }
+    const getValue1 = (item: any): void => {
+        item.forEach((row: any) => {
+            row.total = row.num
+        })
+        list.value = [...item, ...list.value]
+        materialsShow.value = false
+        console.log(list.value)
+    }
+    
+    onMounted(() => {
+        // 鑾峰彇宸ヨ淇℃伅
+        // getLKInfo(route.query.id as string)
+    })
 </script>
 
 <style lang="scss" scoped>
-.page {
-    width: 100%;
-    height: 100%;
-    position: absolute;
-    background: #F7F7F7;
-}
-</style>
\ No newline at end of file
+    .rework {
+        width: 100%;
+        height: 100%;
+        position: absolute;
+        .rework_list {
+            display: flex;
+            flex-direction: column;
+            background: white;
+            padding: 0 30px;
+            box-sizing: border-box;
+            .rework_list_item {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                height: 98px;
+                border-bottom: 1PX solid #E5E5E5;
+                &:last-child {
+                    border: none;
+                }
+                span {
+                    font-size: 30px;
+                    font-weight: 400;
+                    color: #222222;
+                    flex-shrink: 0;
+                    b {
+                        font-size: 30px;
+                        color: red;
+                        margin-right: 5px;
+                    }
+                }
+                .rework_list_item_right {
+                    display: flex;
+                    align-items: center;
+                    span {
+                        font-size: 28px;
+                        font-weight: 400;
+                        color: #999999;
+                    }
+                    .black {
+                        color: black !important;
+                    }
+                    input {
+                        width: 230px;
+                        font-size: 28px;
+                        border: none;
+                    }
+                    input::-webkit-input-placeholder { /* WebKit browsers */
+                        font-size: 28px;
+                        font-weight: 400;
+                        color: #B2B2B2;
+                    }
+                }
+            }
+        }
+        .rework_qd {
+            margin-top: 40px;
+            .rework_qd_title {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                padding: 0 30px 30px 30px;
+                .rework_qd_title_left {
+                    display: flex;
+                    align-items: center;
+                    span {
+                        font-size: 32px;
+                        font-weight: 500;
+                        color: #222222;
+                    }
+                    .x {
+                        width: 8px;
+                        height: 30px;
+                        background: #4275FC;
+                        border-radius: 2px;
+                        margin-right: 12px;
+                    }
+                }
+                .rework_qd_title_right {
+                    display: flex;
+                    align-items: center;
+                    img {
+                        width: 28px;
+                        height: 28px;
+                        margin-right: 12px;
+                    }
+                    span {
+                        font-size: 28px;
+                        font-family: PingFangSC-Regular, PingFang SC;
+                        font-weight: 400;
+                        color: #4275FC;
+                    }
+                }
+            }
+            .rework_qd_item {
+                background: #ffffff;
+                padding: 30px;
+                display: flex;
+                flex-direction: column;
+                margin-bottom: 30px;
+                position: relative;
+                .rework_qd_item_dele {
+                    position: absolute;
+                    right: 0;
+                    top: 0;
+                    width: 48px;
+                    height: 48px;
+                }
+                .rework_qd_item_wl {
+                    span {
+                        font-size: 30px;
+                        font-family: PingFangSC-Medium, PingFang SC;
+                        font-weight: 500;
+                        color: #222222;
+                    }
+                }
+                .rework_qd_item_cate {
+                    margin-top: 18px;
+                    span {
+                        font-size: 24px;
+                        font-family: PingFangSC-Regular, PingFang SC;
+                        font-weight: 400;
+                        color: #666666;
+                    }
+                }
+                .rework_qd_item_hw {
+                    width: 100%;
+                    display: flex;
+                    align-items: center;
+                    justify-content: space-between;
+                    margin-top: 24px;
+                    span {
+                        font-size: 26px;
+                        font-family: PingFangSC-Regular, PingFang SC;
+                        font-weight: 400;
+                        color: #333333;
+                    }
+                    .rework_qd_item_hw_right {
+                        display: flex;
+                        align-items: center;
+                        span {
+                            font-size: 26px;
+                            font-family: PingFangSC-Regular, PingFang SC;
+                            font-weight: 400;
+                            color: #666666;
+                        }
+                        input {
+                            width: 140px;
+                            height: 60px;
+                            font-size: 28px;
+                            font-family: PingFangSC-Regular, PingFang SC;
+                            font-weight: 400;
+                            color: #333333;
+                            background: #FFFFFF;
+                            border-radius: 8px;
+                            border: 1px solid #CCCCCC;
+                            margin: 0 20px;
+                            padding: 0 30px;
+                            box-sizing: border-box;
+                            text-align: right;
+                        }
+                    }
+                }
+            }
+        }
+        .rework_zw {
+            height: 168px;
+        }
+        .rework_footer {
+            width: calc(100% - 60px);
+            position: fixed;
+            bottom: 0;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            padding: 0 30px 68px 30px;
+            .rework_footer_add {
+                flex: 1;
+                height: 88px;
+                font-size: 30px;
+                font-weight: 500;
+                color: $nav-color;
+                background: #FFFFFF;
+                box-shadow: 0 0 12px 0 rgba(0,0,0,0.0800);
+                border-radius: 8px;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+            }
+            .rework_footer_submit {
+                flex: 1;
+                height: 88px;
+                font-size: 30px;
+                font-weight: 500;
+                color: #ffffff;
+                background: $nav-color;
+                box-shadow: 0 0 12px 0 rgba(0,0,0,0.0800);
+                border-radius: 8px;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                border: none;
+            }
+        }
+    }
+</style>
diff --git a/h5_standard/src/views/workOrder/reportingForWork.vue b/h5_standard/src/views/workOrder/reportingForWork.vue
new file mode 100644
index 0000000..bd1cbe8
--- /dev/null
+++ b/h5_standard/src/views/workOrder/reportingForWork.vue
@@ -0,0 +1,1476 @@
+<template>
+    <div class="bg">
+        <!--  鎶曟枡鏄庣粏/鍚堟牸浜у嚭鏄庣粏/涓嶈壇浜у嚭鏄庣粏  -->
+        <div class="bg_list">
+            <div class="bg_list_item">
+                <div class="bg_list_item_top">
+                    <div class="bg_list_item_top_left">
+                        <div class="bg_list_item_top_left_x"></div>
+                        <span>鎶曟枡鏄庣粏</span>
+                        <!-- <span class="blue left">{{tlTotal()}}</span> -->
+                    </div>
+                    <div class="bg_list_item_top_right" @click="jumpTL" v-if="proxy.$auth('h5:workorderinput:create') && (info.bomType !== 1 || info.bomType == 0 || !info.bomType)">
+                        <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" />
+                        <span>鎵嬪姩褰曞叆</span>
+                    </div>
+                </div>
+                <template v-if="feedingData && feedingData.length > 0">
+                    <van-swipe-cell v-for="(item, index) in feedingData" :key="index">
+                        <div class="bg_list_item_num">
+                            <div class="bg_list_item_num_item">
+                                <!-- <span>{{item.code}}</span> -->
+                                <div class="bg_list_item_num_item_wl">
+                                    <span> {{ item.materialName }}{{ item.procedureName ? `&nbsp;|&nbsp;${item.procedureName}` : '' }}</span>
+                                    <div class="bg_list_item_num_item_wl_lx">
+                                        <span class="green" v-if="item.qualityType == 0">鍚堟牸&nbsp;/&nbsp;</span>
+                                        <span class="yellow" v-if="item.qualityType == 1">涓嶈壇&nbsp;/&nbsp;</span>
+                                        <span class="red" v-if="item.qualityType == 2">鎶ュ簾&nbsp;/&nbsp;</span>
+                                        <span>{{ item.locationName }}</span>
+                                        <span>{{ item.batch ? `&nbsp;/&nbsp;${item.batch}` : '' }}</span>
+                                    </div>
+                                </div>
+                                <div class="bg_list_item_num_item_sr">
+                                    <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderinput:update')" @blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)" type="number" />
+                                    <span>{{item.unitName}}</span>
+                                </div>
+                            </div>
+                        </div>
+                        <template #right v-if="proxy.$auth('h5:workorderinput:delete')">
+                            <van-button style="height: 100%;" square text="鍒犻櫎" @click="deleItem(item.id, 'T')" type="danger" />
+                        </template>
+                    </van-swipe-cell>
+                </template>
+                <template v-else>
+                    <div class="kong">
+                        <span>鏆傛棤鏁版嵁</span>
+                    </div>
+                </template>
+            </div>
+            <div class="bg_list_item">
+                <div class="bg_list_item_top">
+                    <div class="bg_list_item_top_left">
+                        <div class="bg_list_item_top_left_x"></div>
+                        <span>浜у嚭鏄庣粏</span>
+                    </div>
+                </div>
+                <!-- <template v-if="produceData && produceData.length > 0"> -->
+                    <!-- v-for="(item, index) in produceData" :key="index" -->
+                    <van-swipe-cell>
+                        <div class="bg_list_item_num">
+                            <div class="bg_list_item_num_item">
+                                <span>鑹搧鏁�</span>
+                                <div class="bg_list_item_num_item_sr">
+                                    <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
+                                    <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+                                    <input type="number" v-model="produceFrom.qualified" @blur="changeCC('0', produceFrom.qualified, produceFrom.qualifiedId)" placeholder="璇疯緭鍏�" />
+                                    <span v-if="info.umodel">{{info.umodel.name}}</span>
+                                </div>
+                            </div>
+                        </div>
+                    </van-swipe-cell>
+                    <van-swipe-cell>
+                        <div class="bg_list_item_num">
+                            <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+                            <div class="bg_list_item_num_item">
+                                <span>涓嶈壇鏁�</span>
+                                <div class="bg_list_item_num_item_sr">
+                                    <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
+                                    <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+                                    <input type="number" v-model="produceFrom.undesirable" @blur="changeCC('1', produceFrom.undesirable, produceFrom.undesirableId)" placeholder="璇疯緭鍏�" />
+                                    <span v-if="info.umodel">{{info.umodel.name}}</span>
+                                </div>
+                            </div>
+                        </div>
+                    </van-swipe-cell>
+                    <!-- <van-swipe-cell>
+                        <div class="bg_list_item_num">
+                            <div class="bg_list_item_num_item" @click="show = true">
+                                <span>涓嶈壇椤�</span>
+                                <div class="bg_list_item_num_item_sr">
+                                    <span>璁剧疆 ></span>
+                                </div>
+                            </div>
+                        </div>
+                    </van-swipe-cell> -->
+                <!-- </template>
+                <template v-else>
+                    <div class="kong">
+                        <span>鏆傛棤鏁版嵁</span>
+                    </div>
+                </template> -->
+            </div>
+            <!-- <div class="bg_list_item">
+                <div class="bg_list_item_top">
+                    <div class="bg_list_item_top_left">
+                        <div class="bg_list_item_top_left_x"></div>
+                        <span>鍚堟牸浜у嚭鏄庣粏</span>
+                        <span class="blue left">{{ccTotal()}}</span>
+                    </div>
+                    <div class="bg_list_item_top_right" @click="jumpCC" v-if="proxy.$auth('h5:workorderoutput:create')">
+                        <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" />
+                        <span>鎵嬪姩褰曞叆</span>
+                    </div>
+                </div>
+                <template v-if="produceData && produceData.length > 0">
+                    <van-swipe-cell v-for="(item, index) in produceData" :key="index">
+                        <div class="bg_list_item_num">
+                            <div class="bg_list_item_num_item">
+                                <span>{{item.code}}</span>
+                                <div class="bg_list_item_num_item_sr">
+                                    <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderoutput:update')" @blur="change(item.id, item.num, 'C', item.maxNum, item)" type="number" />
+                                    <span>{{item.company}}</span>
+                                </div>
+                            </div>
+                        </div>
+                        <template #right v-if="proxy.$auth('h5:workorderoutput:delete')">
+                            <van-button style="height: 100%;" square text="鍒犻櫎" @click="deleItem(item.id, 'C')" type="danger" />
+                        </template>
+                    </van-swipe-cell>
+                </template>
+                <template v-else>
+                    <div class="kong">
+                        <span>鏆傛棤鏁版嵁</span>
+                    </div>
+                </template>
+            </div>
+
+            <div class="bg_list_item">
+                <div class="bg_list_item_top">
+                    <div class="bg_list_item_top_left">
+                        <div class="warning"></div>
+                        <span>涓嶈壇浜у嚭鏄庣粏</span>
+                        <span class="yellow left">{{blTotal()}}</span>
+                    </div>
+                </div>
+                <template v-if="undesirable && undesirable.length > 0">
+                    <van-swipe-cell v-for="(item, index) in undesirable" :key="index">
+                        <div class="bg_list_item_num">
+                            <div class="bg_list_item_num_item">
+                                <span>{{item.code}}</span>
+                                <div class="bg_list_item_num_item_sr">
+                                    <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderoutput:update')" @blur="change(item.id, item.num, 'C', item.maxNum, item)" type="number" />
+                                    <span>{{item.company}}</span>
+                                </div>
+                            </div>
+                        </div>
+                        <template #right v-if="proxy.$auth('h5:workorderoutput:delete')">
+                            <van-button style="height: 100%;" square text="鍒犻櫎" @click="deleItem(item.id, 'C')" type="danger" />
+                        </template>
+                    </van-swipe-cell>
+                </template>
+                <template v-else>
+                    <div class="kong">
+                        <span>鏆傛棤鏁版嵁</span>
+                    </div>
+                </template>
+            </div>
+
+            <div class="bg_list_item">
+                <div class="bg_list_item_top">
+                    <div class="bg_list_item_top_left">
+                        <div class="error"></div>
+                        <span>鎶ュ簾浜у嚭鏄庣粏</span>
+                        <span class="red left">{{bfTotal()}}</span>
+                    </div>
+                </div>
+                <template v-if="scrap && scrap.length > 0">
+                    <van-swipe-cell v-for="(item, index) in scrap" :key="index">
+                        <div class="bg_list_item_num">
+                            <div class="bg_list_item_num_item">
+                                <span>{{item.code}}</span>
+                                <div class="bg_list_item_num_item_sr">
+                                    <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderoutput:update')" @blur="change(item.id, item.num, 'C', item.maxNum, item)" type="number" />
+                                    <span>{{item.company}}</span>
+                                </div>
+                            </div>
+                        </div>
+                        <template #right v-if="proxy.$auth('h5:workorderoutput:delete')">
+                            <van-button style="height: 100%;" square text="鍒犻櫎" @click="deleItem(item.id, 'C')" type="danger" />
+                        </template>
+                    </van-swipe-cell>
+                </template>
+                <template v-else>
+                    <div class="kong">
+                        <span>鏆傛棤鏁版嵁</span>
+                    </div>
+                </template>
+            </div> -->
+        </div>
+        <div class="details_dj">
+            <div class="details_dj_title">
+                <div class="details_dj_title_left">
+                    <div class="details_x"></div>
+                    <span>鐢熶骇鐐规</span>
+                </div>
+                <div class="details_dj_title_right" @click="jumpdj" v-if="proxy.$auth('h5:workorder:processRecord')">
+                    <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" />
+                    <span>鎵嬪姩褰曞叆</span>
+                </div>
+            </div>
+            <div class="details_dj_list">
+                <van-list
+                    v-model:loading="loading"
+                    :finished="finished"
+                    finished-text="娌℃湁鏇村浜唦"
+                    @load="pageDJs">
+                    <van-swipe-cell v-for="(item, index) in djData" :key="index">
+                        <div class="details_dj_list_item">
+                            <span>{{item.attrName}}锛歿{item.val}}</span>
+                            <span>{{item.userName}} {{item.createTime}}</span>
+                        </div>
+                        <template #right>
+                            <van-button square type="danger" style="height: 100%;" @click="dele(item.id)" text="鍒犻櫎" />
+                        </template>
+                    </van-swipe-cell>
+                </van-list>
+            </div>
+        </div>
+        <!--  鎶ュ伐鎸夐挳  -->
+        <template v-if="info.status === 2 || info.procedureNeedcheck === 1">
+            <div class="bh_zw"></div>
+            <div class="bg_footer">
+                <div class="bg_footer_submit" @click="submit">纭鎶ュ伐</div>
+            </div>
+        </template>
+        <!--  鎵爜缁勪欢  -->
+        <v-ScanCode
+            :openCode="openCode"
+            :infos="['璇锋壂鎻忓伐瑁呯爜']"
+            @closePopup="closePopup"
+            @onDecode="onDecode" />
+        <!--  鎶ュ伐缁熻鏁版嵁  -->
+        <van-popup v-model:show="statistics" round :closeable="true" position="bottom" :style="{ height: '53%' }">
+            <div class="tg">
+                <div class="tg_header">璇风‘璁ゆ姤宸ヤ俊鎭�</div>
+                <div class="tg_table">
+                    <div class="tg_table_header">
+                        <div class="tg_table_header_item">绫诲瀷</div>
+                        <div class="tg_table_header_item">鐗╂枡鍚嶇О</div>
+                        <!-- <div class="tg_table_header_item">宸ヨ鏁伴噺</div> -->
+                        <div class="tg_table_header_item">鐗╂枡鏁伴噺</div>
+                    </div>
+                    <div class="nr" v-if="statisticsData.length > 0">
+                        <div class="tg_table_nr" v-for="(item, index) in statisticsData" :key="index">
+                            <div class="tg_table_nr_item">{{item.name}}</div>
+                            <div class="tg_table_nr_item">{{item.materialName}}</div>
+                            <!-- <div class="tg_table_nr_item">{{item.gznum}}</div> -->
+                            <div class="tg_table_nr_item" :style="item.name === '宸ュ崟鏈姇鏂�' ? 'color: #DE5243' : ''">{{item.num}}</div>
+                        </div>
+                    </div>
+                    <div class="nr" v-else>
+                        <div class="tg_table_nr">
+                            <div class="tg_table_nr_item1">鏆傛棤鏁版嵁</div>
+                        </div>
+                    </div>
+                </div>
+                <div class="tg_footer">
+                    <button class="tg_footer_qr" @click="submitBG" v-if="proxy.$auth('h5:workorderoutput:confirm') && isSubmit">纭鎶ュ伐</button>
+                    <div class="tg_footer_fh" @click="gofh" v-else-if="!isSubmit">杩斿洖淇敼</div>
+                </div>
+            </div>
+        </van-popup>
+        <!-- 閫夋嫨涓嶈壇椤� -->
+        <van-popup v-model:show="show" round position="bottom" :style="{ height: '53%' }">
+            <div class="bl">
+                <div class="bl_head">
+                    <span @click="show = false">鍙栨秷</span>
+                    <span>涓嶈壇椤�</span>
+                    <span>纭</span>
+                </div>
+                <div class="bl_list">
+                    <div class="bl_list_item" v-for="(item, i) in 12" :key="i">
+                        <div class="bl_list_item_left">
+                            <input type="checkbox" :checked="true" name="" id="" />
+                            <span>鏈夊垝鐥�</span>
+                        </div>
+                        <div class="bl_list_item_right">
+                            <input type="number" placeholder="璇疯緭鍏�" />
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script setup lang="ts">
+    import { getCurrentInstance, nextTick, onMounted, ref, reactive } from 'vue'
+    import { useRouter, useRoute } from "vue-router"
+    import { Dialog, Toast } from 'vant'
+    import { REGULAR } from '@/utils/utils'
+    import {
+        getBarcodeContent,
+        queryById,
+        getOrocessRecord,
+        deleteCT,
+        updateById,
+        comfirmDone,
+        comfirmDoneStandard,
+        getListByCondition,
+        allForStandard,
+        pageDJ,
+        deletedj,
+        dealWorkorderRecordStandard,
+        getWorkorderRecordListStandard
+    } from '@/apis/WorkOrderAPI'
+    import { QRCodeType } from '@/enum'
+    const { proxy }: any = getCurrentInstance()
+    import VWorkOrderInfo from '@/components/common/WorkOrderInfo.vue'
+
+    const router = useRouter()
+    const route = useRoute()
+
+    const loading = ref(false);
+    const finished = ref(false);
+    let show = ref(false)
+    // 鐐规鏁版嵁
+    let djData: any = ref([])
+    // 鍒嗛〉鏌ヨ鏁版嵁
+    let page = reactive({
+        capacity: 10,
+        page: 0
+    })
+
+    // 浜у嚭鍚堟牸/涓嶈壇
+    let produceFrom = reactive({
+        qualifiedId: '',
+        qualified: '',  // 鍚堟牸
+        undesirableId: '',
+        undesirable: '' // 涓嶈壇
+    })
+
+    // 璇︽儏鏁版嵁
+    const info: any = ref({})
+
+    // 鍒ゆ柇鏄惁鑳芥彁浜�
+    let isSubmit: any = ref<boolean>(false)
+
+    // 涓嶈壇鏄庣粏
+    let undesirable: any = ref([])
+
+    // 鎶ュ簾鏄庣粏
+    let scrap: any = ref([])
+
+    // 鎵爜绫诲瀷
+    let type: any = ref('')
+
+    // 缁熻鏁版嵁
+    let statisticsData: any = ref([
+        // {
+        //     name: '宸ュ崟鎶曟枡',
+        //     materialName: '榛勬矙',
+        //     num: 0
+        // },
+        // {
+        //     name: '宸ュ崟鍚堟牸浜у嚭',
+        //     materialName: '榛勬矙',
+        //     num: 0
+        // },
+        // {
+        //     name: '宸ュ崟涓嶈壇浜у嚭',
+        //     materialName: '榛勬矙',
+        //     num: 0
+        // },
+        // {
+        //     name: '宸ュ崟鏈姇鏂�',
+        //     materialName: '榛勬矙',
+        //     num: 0
+        // }
+    ])
+
+    // 鎶曟枡鏁版嵁
+    const feedingData: any = ref([])
+
+    // 浜у嚭鏁版嵁
+    const produceData: any = ref([])
+
+    // 鎺у埗鎵爜鏄剧ず闅愯棌
+    const openCode = ref<boolean>(false)
+
+    // 鎺у埗鎶ュ伐缁熻
+    const statistics = ref<boolean>(false)
+
+    // 鎶曟枡缁熻
+    const tlTotal = (): string => {
+        if (feedingData.value.length > 0) {
+            let total: number = 0
+            feedingData.value.forEach((element: any) => {
+                total = total + element.num
+            })
+            return `${total}`
+        }
+        return ''
+    }
+
+    // 淇敼浜у嚭
+    const changeCC = (downType: string, num: number, recordId: string) => {
+        if (!num) return
+        console.log(produceFrom.qualified + produceFrom.undesirable)
+        if ((produceFrom.qualified + produceFrom.undesirable) > info.value.planNum) {
+            return Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘澶т簬璁″垝鏁伴噺', duration: 2000 })
+        }
+        if (num >= 0) {
+            dealWorkorderRecordStandard({
+                downType, num, recordId, workorderId: route.query.id
+            }).then(res => {
+                if (res.code === 200) {
+                    getOrocessRecordCC()
+                }
+            })
+        } else {
+            if (downType == 0) {
+                produceFrom.qualified = 0
+            } else {
+                produceFrom.undesirable = 0
+            }
+            Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘灏忎簬0', duration: 2000 })
+        }
+    }
+
+    // 璺宠浆鐐规
+    const jumpdj = () => {
+        router.push({ name: 'spotCheck', query: { id: route.query.id } })
+    }
+
+    // 鍒犻櫎鐐规
+    const dele = (id: string | number): void => {
+        deletedj(id)
+            .then(res => {
+                if (res.code === 200) {
+                    djData.value = []
+                    finished.value = false
+                    page.page = 0
+                    pageDJs()
+                }
+            })
+    }
+
+    // 鐐规鏁版嵁
+    const pageDJs = () => {
+        if (!finished.value) {
+            page.page = page.page + 1
+            loading.value = true
+            pageDJ({
+                capacity: page.capacity,
+                page: page.page,
+                model: {
+                    workorderId: route.query.id
+                }
+            }).then(res => {
+                if (res.code === 200 && res.data && res.data.records.length !== 0) {
+                    djData.value.push(...res.data.records)
+                } else {
+                    finished.value = true
+                }
+                loading.value = false
+            }).catch(err => {
+                loading.value = false
+                finished.value = true
+            })
+        }
+    }
+
+    // 缁熻
+    const ccTotal = (): string => {
+        if (produceData.value.length > 0) {
+            let total: number = 0
+            produceData.value.forEach((element: any) => {
+                total = total + element.num
+            })
+            return `${total}${produceData.value[0].company}`
+        }
+        return ''
+    }
+
+    // 缁熻
+    const blTotal = (): string => {
+        if (undesirable.value.length > 0) {
+            let total: number = 0
+            undesirable.value.forEach((element: any) => {
+                total = total + element.num
+            })
+            return `${total}${undesirable.value[0].company}`
+        }
+        return ''
+    }
+
+    // 缁熻
+    const bfTotal = (): string => {
+        if (scrap.value.length > 0) {
+            let total: number = 0
+            scrap.value.forEach((element: any) => {
+                total = total + element.num
+            })
+            return `${total}${scrap.value[0].company}`
+        }
+        return ''
+    }
+
+    // 鍒犻櫎浜у嚭/鎶曟枡
+    const deleItem = (id: any, type: string) => {
+        Dialog.confirm({
+            title: '鎻愮ず',
+            message: '纭畾鍒犻櫎姝ゆ潯璁板綍鍚楋紵',
+        }).then(() => {
+            deleteCT(id)
+                .then(res => {
+                    if (res.code === 200 && type === 'C') {
+                        getOrocessRecordCC()
+                    } else if (res.code === 200 && type === 'T') {
+                        getOrocessRecords()
+                    }
+                })
+        }).catch(() => {
+            // on cancel
+        })
+    }
+
+    // 璺宠浆鎵嬪姩浜у嚭
+    const jumpCC = () => {
+        router.push({ name: 'manualOutput', query: { id: route.query.id, num: produceData.value.length > 0 ? produceData.value[0].num : '' } })
+    }
+
+    // 璺宠浆鎵嬪姩鎶曟枡
+    const jumpTL = () => {
+        router.push({ name: 'manualFeeding', query: { id: route.query.id } })
+    }
+
+    // 鍏抽棴鎵爜缁勪欢
+    const closePopup = (): void => {
+        openCode.value = false
+    }
+
+    // 鑾峰彇鎵爜鍊�
+    const onDecode = (data: string[]): void => {
+        getBarcodeContent({
+            barcode: data[0]
+        }).then(res => {
+            if (res.code === 200) {
+                if (res.data.barcodeType === QRCodeType.GZ) {
+                    if (type.value === 'tl') {    // 鎶曟枡鎿嶄綔
+                        getListByCondition({ id: res.data.id })
+                            .then(gz => {
+                                if (gz.code === 200) {
+                                    if (gz.data[0].status !== 1) {
+                                        router.push({ name: 'codeScanningFeeding', query: { id: route.query.id, gzId: res.data.id } })
+                                    } else {
+                                        Toast.fail({ message: '鎵弿鐨勫伐瑁呯姸鎬佷笉鑳戒负绌�', duration: 2000 })
+                                    }
+                                }
+                            })
+                    }
+                    if (type.value === 'cc') {    // 浜у嚭鎿嶄綔
+                        router.push({ name: 'codeScanningOutput', query: { id: route.query.id, gzId: res.data.id } })
+                    }
+                } else {
+                    Toast({ message: '璇锋壂鎻忔纭殑绡瓙鐮�', duration: 2000 })
+                }
+            }
+        })
+        nextTick(() => {
+            openCode.value = false
+        })
+    }
+
+    // 璺宠浆鎵嬪姩鎶曟枡
+    const jump = () => {
+        router.push({ name: 'manualFeeding', query: { id: route.query.id } })
+    }
+
+    // 璺宠浆鎵爜鎶曟枡
+    const jump1 = (types: string) => {
+        type.value = types
+        openCode.value = true
+    }
+
+    // 鏌ヨ宸ュ崟璇︽儏
+    const queryByIds = () => {
+        queryById(route.query.id).then(res => {
+            if (res.code === 200) {
+                info.value = res.data
+            }
+        })
+    }
+
+    // 鏌ヨ宸ュ崟鐢熶骇璁板綍---鎶曟枡
+    const getOrocessRecords = () => {
+        feedingData.value = []
+        allForStandard({
+            workorderId: route.query.id,
+            type: 0
+        }).then(res => {
+            if (res.code === 200) {
+                feedingData.value = res.data
+                // res.data.forEach((item: any) => {
+                //     feedingData.value.push({ id: item.id, company: item.umodel.name, gz: item.amodel.code, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
+                // })
+            }
+        })
+    }
+
+    // 鏌ヨ宸ュ崟鐢熶骇璁板綍---浜у嚭
+    const getOrocessRecordCC = () => {
+        produceData.value = []
+        undesirable.value = []
+        scrap.value = []
+        getWorkorderRecordListStandard({
+            workorderId: route.query.id
+        }).then(res => {
+            if (res.code === 200) {
+                if (res.data.length > 0) {
+                    res.data.forEach((item: any) => {
+                        if (item.doneType === 1) {
+                            produceFrom.undesirable = item.num
+                            produceFrom.undesirableId = item.id
+                        } else {
+                            produceFrom.qualified = item.num
+                            produceFrom.qualifiedId = item.id
+                        }
+                    })
+                }
+                // res.data.forEach((item: any) => {
+                //     if (item.doneType === 0 || !item.doneType) { // 鍚堟牸 | 娣峰悎
+
+                //         produceData.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
+                //     } else if (item.doneType === 1) { // 涓嶈壇
+                //         undesirable.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
+                //     } else if (item.doneType === 2) { // 鎶ュ簾
+                //         scrap.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
+                //     }
+                // })
+            }
+        })
+    }
+
+    // 缂栬緫鎶曟枡/浜у嚭
+    const change = (id: any, num: any, type: any, maxNum: number, item: object, unitAttribute: number): void => {
+        let obj: any = item
+        if (type === 'T') {
+            if (unitAttribute == 0 && num != '') {
+                if(!REGULAR.positiveInteger.test(num)){
+                    obj.num = obj.ynum
+                    Toast({ message: '鍙兘杈撳叆姝f暣鏁�' })
+                    return
+                }
+            }
+            if (unitAttribute == 1 && num != '') {
+                if(!REGULAR.number.test(num)){
+                    Toast({ message: '鍙兘杈撳叆姝f暣鏁版垨灏忔暟锛堟渶澶氬洓浣嶏級' })
+                    obj.num = obj.ynum
+                    return
+                }
+            }
+            if (num > maxNum) {
+                obj.num = obj.ynum
+                Toast.fail({ message: '瓒呭嚭宸ヨ鎬绘暟' })
+                return
+            }
+        } else if (type === 'C' && num > info.value.planNum) {
+            obj.num = obj.ynum
+            Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘瓒呰繃璁″垝鏁伴噺' })
+            return
+        }
+        updateById({ id: id, num: num }).then(res => {
+            if (res.code === 200 && type === 'T') {
+                getOrocessRecords()
+            } else if (res.code === 200 && type === 'C') {
+                getOrocessRecordCC()
+            }
+        })
+    }
+
+    // 纭鎶ュ伐
+    const submit = () => {
+        if (info.value.bomType === 1) {  // 鎷夊紡
+            console.log('鎷夊紡')
+            statisticsData.value = []
+            if (info.value.hasBom === 0) {
+                console.log('鏃燽om')
+                // let data: any = [
+                //     { name: '宸ュ崟鎶曟枡', gznum: feedingData.value.length, wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 },
+                //     { name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: produceData.value.length > 0 ? produceData.value[0].name : '', wlnum: 0 },
+                //     { name: '宸ュ崟涓嶈壇浜у嚭', gznum: 0, wlmc: '', wlnum: 0 },
+                //     { name: '宸ュ崟鏈姇鏂�', gznum: '', wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 }
+                // ]
+                // if (undesirable.value.length > 0) {   // 鍒ゆ柇鏈夋病鏈変笉鑹�
+                //     data[2].wlmc = undesirable.value[0].name
+                //     data[2].gznum = data[2].gznum + undesirable.value.length
+                // }
+                // if (scrap.value.length > 0) {   // 鍒ゆ柇鏈夋病鏈変笉鑹�
+                //     data[2].wlmc = scrap.value[0].name
+                //     data[2].gznum = data[2].gznum + scrap.value.length
+                // }
+                // let tl: number = 0
+                // let cc: number = 0
+                // let bl: number = 0
+                // undesirable.value.forEach((item: any) => {  // 涓嶈壇
+                //     bl = bl + item.num
+                // })
+                // scrap.value.forEach((item: any) => {  // 鎶ュ簾
+                //     bl = bl + item.num
+                // })
+                // if (produceData.value.length > 0) {   // 鍒ゆ柇鏈夋病鏈夊悎鏍间骇鍑�
+                //     produceData.value.forEach((item: any) => {  // 浜у嚭
+                //         cc = cc + item.num
+                //     })
+                // }
+                // feedingData.value.forEach((item: any) => {  // 鎶曟枡
+                //     tl = tl + item.num
+                // })
+                // data[0].wlnum = tl.toString() + info.value.umodel.name
+                // if (produceData.value.length > 0) {
+                //     data[1].wlnum = cc.toString() + info.value.umodel.name
+                // }
+                // data[2].wlnum = bl.toString() + info.value.umodel.name
+                // let total: number = info.value.planNum - (Number(cc) + Number(bl))
+                // data[data.length - 1].wlnum = (info.value.planNum - Number(cc) - Number(bl)).toString() + info.value.umodel.name
+                // if (total === 0) {
+                //     isSubmit.value = true
+                // } else {
+                //     isSubmit.value = false
+                // }
+
+                let arr: any = []
+                let tl = 0
+                let res = getGroupNum(feedingData.value)
+                for (let i in res) {
+                    let num = 0
+                    res[i].forEach((item: any) => {
+                        num += item.num
+                    })
+                    arr.push({ name: '宸ュ崟鎶曟枡', materialName: i + res[i][0].procedureName, num: num })
+                }
+                feedingData.value.forEach((item: any) => {
+                    tl += item.num
+                })
+                statisticsData.value = [...statisticsData.value, ...arr]
+                statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName:  info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
+                statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName:  info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
+                statisticsData.value.push({ name: '宸ュ崟鏈姇鏂�', materialName: '', num: info.value.planNum - Number(produceFrom.qualified) - Number(produceFrom.undesirable) })
+                let total: number = info.value.planNum - (Number(produceFrom.qualified) + Number(produceFrom.undesirable))
+                if (total === 0) {
+                    isSubmit.value = true
+                } else {
+                    isSubmit.value = false
+                }
+                // if (Number(tl) <= info.value.planNum) {
+                //   let total: number = Number(tl) - Number(cc) - Number(bl)  // 鏄惁鏈変綑
+                //   data[data.length - 1].wlnum = (Number(tl) - Number(cc) - Number(bl)).toString() + info.value.umodel.name
+                //   if (total === 0) {
+                //     isSubmit.value = true
+                //   } else {
+                //     isSubmit.value = false
+                //   }
+                // } else {
+                //   isSubmit.value = false
+                // }
+                // statisticsData.value = data
+            } else if (info.value.hasBom === 1) {  // 鏈塨om鎯呭喌
+                console.log('鏈塨om')
+                // let cc: number = 0
+                // let bl: number = 0
+                // let newData: any = {}
+                // if (feedingData.value.length > 0) {  // 鎶曟枡
+                //     feedingData.value.forEach((e: any) => {
+                //         if (Object.keys(newData).indexOf('' + e.name) === -1) {
+                //             newData[e.name] = []
+                //         }
+                //         newData[e.name].push(e)
+                //     })
+                //     for (let key in newData) {
+                //         let obj = { name: '宸ュ崟鎶曟枡', gznum: newData[key].length, wlmc: key, wlnum: 0, num: 0 }
+                //         newData[key].forEach((item: any) => {
+                //             obj.wlnum = obj.wlnum + item.num
+                //             obj.num = item.num
+                //         })
+                //         obj.wlnum = obj.wlnum.toString() + newData[key][0].company as never
+                //         statisticsData.value.push(obj)
+                //     }
+                // }
+                // if (produceData.value.length > 0) {  // 浜у嚭
+                //     produceData.value.forEach((item: any) => {
+                //         cc = cc + item.num
+                //     })
+                //     statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: info.value.mmodel.name, wlnum: cc + info.value.umodel.name, num: cc })
+                // }
+                // if (undesirable.value.length > 0 || scrap.value.length > 0) {  // 涓嶈壇/鎶ュ簾
+                //     undesirable.value.forEach((item: any) => {
+                //         bl = bl + item.num
+                //     })
+                //     scrap.value.forEach((item: any) => {
+                //         bl = bl + item.num
+                //     })
+                //     statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', gznum: undesirable.value.length + scrap.value.length, wlmc: info.value.mmodel.name, wlnum: bl + info.value.umodel.name, num: bl })
+                // }
+                // let totaltl: number = 0
+                // let totalcc: number = 0
+                // let totalbl: number = 0
+                // statisticsData.value.forEach((item: any) => {
+                //     if (item.name === '宸ュ崟鎶曟枡') {
+                //         totaltl = totaltl + item.num
+                //     } else if (item.name === '宸ュ崟鍚堟牸浜у嚭') {
+                //         totalcc = totalcc + item.num
+                //     } else if (item.name === '宸ュ崟涓嶈壇浜у嚭') {
+                //         totalbl = totalbl + item.num
+                //     }
+                // })
+                // isSubmit.value = totalcc + totalbl <= info.value.planNum;
+                let arr: any = []
+                let tl = 0
+                let res = getGroupNum(feedingData.value)
+                for (let i in res) {
+                    let num = 0
+                    res[i].forEach((item: any) => {
+                        num += item.num
+                    })
+                    arr.push({ name: '宸ュ崟鎶曟枡', materialName: i, num: num })
+                }
+                feedingData.value.forEach((item:any) => {
+                    tl += item.num
+                })
+                statisticsData.value = [...statisticsData.value, ...arr]
+                statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName:  info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
+                statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName:  info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
+                isSubmit.value = produceFrom.qualified + produceFrom.undesirable <= info.value.planNum;
+            }
+        } else {
+            console.log('鎺ㄥ紡')
+            if (feedingData.value.length === 0) {
+                Toast.fail({ message: '鎶曟枡鏄庣粏涓嶈兘涓虹┖' })
+                return
+            }
+            statisticsData.value = []
+            if (info.value.hasBom === 0) {
+                console.log('鏃燽om')
+                // let data: any = [
+                //     { name: '宸ュ崟鎶曟枡', gznum: feedingData.value.length, wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 },
+                //     { name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: produceData.value.length > 0 ? produceData.value[0].name : '', wlnum: 0 },
+                //     { name: '宸ュ崟涓嶈壇浜у嚭', gznum: 0, wlmc: '', wlnum: 0 },
+                //     { name: '宸ュ崟鏈姇鏂�', gznum: '', wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 }
+                // ]
+                // if (undesirable.value.length > 0) {   // 鍒ゆ柇鏈夋病鏈変笉鑹�
+                //     data[2].wlmc = undesirable.value[0].name
+                //     data[2].gznum = data[2].gznum + undesirable.value.length
+                // }
+                // if (scrap.value.length > 0) {   // 鍒ゆ柇鏈夋病鏈変笉鑹�
+                //     data[2].wlmc = scrap.value[0].name
+                //     data[2].gznum = data[2].gznum + scrap.value.length
+                // }
+                // let tl = 0
+                // let cc = 0
+                // let bl = 0
+                // undesirable.value.forEach((item: any) => {  // 涓嶈壇
+                //     bl = bl + item.num
+                // })
+                // scrap.value.forEach((item: any) => {  // 鎶ュ簾
+                //     bl = bl + item.num
+                // })
+                // if (produceData.value.length > 0) {   // 鍒ゆ柇鏈夋病鏈夊悎鏍间骇鍑�
+                //     produceData.value.forEach((item: any) => {  // 浜у嚭
+                //         cc = cc + item.num
+                //     })
+                // }
+                // feedingData.value.forEach((item: any) => {  // 鎶曟枡
+                //     tl = tl + item.num
+                // })
+                // data[0].wlnum = tl.toString() + info.value.umodel.name
+                // if (produceData.value.length > 0) {
+                //     data[1].wlnum = cc.toString() + info.value.umodel.name
+                // }
+                // data[2].wlnum = bl.toString() + info.value.umodel.name
+                // if (Number(tl) <= info.value.planNum) {
+                //     let total: number = Number(tl) - Number(cc) - Number(bl)  // 鏄惁鏈変綑
+                //     data[data.length - 1].wlnum = (Number(tl) - Number(cc) - Number(bl)).toString() + info.value.umodel.name
+                //     if (total === 0) {
+                //         isSubmit.value = true
+                //     } else {
+                //         isSubmit.value = false
+                //     }
+                // } else {
+                //     isSubmit.value = false
+                // }
+                // statisticsData.value = data
+                let arr: any = []
+                let tl = 0
+                let res = getGroupNum(feedingData.value)
+                for (let i in res) {
+                    let num = 0
+                    res[i].forEach((item: any) => {
+                        num += item.num
+                    })
+                    arr.push({ name: '宸ュ崟鎶曟枡', materialName: i + '-' + res[i][0].procedureName, num: num })
+                }
+                feedingData.value.forEach((item:any) => {
+                    tl += item.num
+                })
+                statisticsData.value = [...statisticsData.value, ...arr]
+                statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
+                statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
+                if (Number(tl) <= info.value.planNum) {
+                    let total: number = Number(tl) - Number(produceFrom.qualified) - Number(produceFrom.undesirable)  // 鏄惁鏈変綑
+                    statisticsData.value.push({ name: '宸ュ崟鏈姇鏂�', materialName: '', num: (Number(tl) - Number(produceFrom.qualified) - Number(produceFrom.undesirable)).toFixed(2) })
+                    if (total === 0) {
+                        isSubmit.value = true
+                    } else {
+                        isSubmit.value = false
+                    }
+                } else {
+                    isSubmit.value = false
+                }
+            } else if (info.value.hasBom === 1) {  // 鏈塨om鎯呭喌
+                console.log('鏈塨om')
+                let arr: any = []
+                let tl = 0
+                let res = getGroupNum(feedingData.value)
+                for (let i in res) {
+                    let num = 0
+                    res[i].forEach((item: any) => {
+                        num += item.num
+                    })
+                    arr.push({ name: '宸ュ崟鎶曟枡', materialName: i, num: num })
+                }
+                feedingData.value.forEach((item:any) => {
+                    tl += item.num
+                })
+                statisticsData.value = [...statisticsData.value, ...arr]
+                statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
+                statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
+                // isSubmit.value = produceFrom.qualified + produceFrom.undesirable <= info.value.planNum;
+                isSubmit.value = true
+            }
+        }
+        statistics.value = true
+    }
+
+    // 鏍规嵁鏌愪釜瀛楁杩涜鍒嗙粍
+    const getGroupNum = (arr: any) => {
+        let newArry: any = {};
+        for (let i = 0; i < arr.length; i++) {
+            if (newArry[arr[i].materialName]) {
+                newArry[arr[i].materialName].push(arr[i])
+            } else {
+                newArry[arr[i].materialName] = [arr[i]]
+            }
+        }
+        return newArry;
+    }
+
+    // 杩斿洖淇敼
+    const gofh = () => {
+        statistics.value = false
+    }
+
+    // 纭鎶ュ伐
+    const submitBG = () => {
+        comfirmDoneStandard({
+            id: route.query.id
+        }).then(res => {
+            if (res.code === 200) {
+                Toast.success({ message: '鎶ュ伐鎴愬姛', forbidClick: true, duration: 2000 })
+                setTimeout(() => {
+                    router.go(-2)
+                }, 2000)
+            }
+        })
+    }
+
+    onMounted(() => {
+        pageDJs()
+        queryByIds()
+        getOrocessRecords()
+        getOrocessRecordCC()
+    })
+</script>
+
+<style lang="scss" scoped>
+    .bg {
+        width: 100%;
+        /*height: 100%;*/
+        position: absolute;
+        background: #F7F7F7;
+        .details_cz {
+            width: 100%;
+            padding: 30px;
+            box-sizing: border-box;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            .details_cz_sdtl {
+                width: 330px;
+                height: 76px;
+                background: #FFFFFF;
+                border-radius: 36px;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                img {
+                    width: 28px;
+                    height: 28px;
+                    margin-right: 14px;
+                }
+                span {
+                    font-size: 26px;
+                    font-weight: 400;
+                    color: #222222;
+                }
+            }
+            .details_cz_smtl {
+                /*width: 330px;*/
+                flex: 1;
+                height: 76px;
+                background: $nav-color;
+                border-radius: 36px;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                img {
+                    width: 28px;
+                    height: 28px;
+                    margin-right: 14px;
+                }
+                span {
+                    font-size: 26px;
+                    font-weight: 400;
+                    color: #ffffff;
+                }
+            }
+        }
+        .bg_list {
+            width: 100%;
+            display: flex;
+            flex-direction: column;
+            margin-top: 30px;
+            .bg_list_item {
+                display: flex;
+                flex-direction: column;
+                margin-bottom: 40px;
+                .kong {
+                    text-align: center;
+                    padding: 30px 0;
+                    background: #ffffff;
+                    font-size: 25px;
+                    span {
+                        color: #474747;
+                    }
+                }
+                .bg_list_item_top {
+                    display: flex;
+                    align-items: center;
+                    justify-content: space-between;
+                    padding-left: 30px;
+                    padding-right: 30px;
+                    margin-bottom: 30px;
+                    .bg_list_item_top_left {
+                        display: flex;
+                        align-items: center;
+                        .left {
+                            margin-left: 12px;
+                            font-size: 28px;
+                        }
+                        .warning {
+                            width: 8px;
+                            height: 30px;
+                            border-radius: 2px;
+                            margin-right: 12px;
+                            background: $nav-stateColor5 !important;
+                        }
+                        .error {
+                            width: 8px;
+                            height: 30px;
+                            border-radius: 2px;
+                            margin-right: 12px;
+                            background: $nav-stateColor4 !important;
+                        }
+                        .bg_list_item_top_left_x {
+                            width: 8px;
+                            height: 30px;
+                            background: $nav-color;
+                            border-radius: 2px;
+                            margin-right: 12px;
+                        }
+                        span {
+                            font-size: 32px;
+                            font-weight: 500;
+                            color: #222222;
+                            display: flex;
+                            align-items: center;
+                        }
+                    }
+                    .bg_list_item_top_right {
+                        display: flex;
+                        align-items: center;
+                        img {
+                            width: 28px;
+                            height: 28px;
+                            margin-right: 12px;
+                        }
+                        span {
+                            font-size: 28px;
+                            font-weight: 400;
+                            color: $nav-color;
+                        }
+                    }
+                }
+                .bg_list_item_num {
+                    width: 100%;
+                    background: white;
+                    padding: 0 30px;
+                    box-sizing: border-box;
+                    .kong {
+                        text-align: center;
+                        font-size: 25px;
+                        padding: 30px 0;
+                        background: #ffffff;
+                    }
+                    .bg_list_item_num_item {
+                        display: flex;
+                        align-items: center;
+                        // height: 118px;
+                        padding: 15px 0;
+                        box-sizing: border-box;
+                        justify-content: space-between;
+                        border-bottom: 1px solid #E5E5E5;
+                        &:last-child {
+                            border: none;
+                        }
+                        .bg_list_item_num_item_wl {
+                            flex-shrink: 0;
+                            display: flex;
+                            flex-direction: column;
+                            span {
+                                font-size: 34px;
+                                color: #222222;
+                            }
+                            .bg_list_item_num_item_wl_lx {
+                                margin-top: 10px;
+                                span {
+                                    color: #222222;
+                                    font-size: 28px;
+                                }
+                            }
+                        }
+                        .warning {
+                            color: $nav-stateColor5 !important;
+                        }
+                        .err {
+                            color: $nav-stateColor4 !important;
+                        }
+                        span {
+                            flex-shrink: 0;
+                            overflow: hidden;
+                            text-overflow: ellipsis;
+                            white-space: nowrap;
+                            .warning {
+                                color: $nav-stateColor5 !important;
+                                margin-right: 5px;
+                            }
+                            .err {
+                                color: $nav-stateColor4 !important;
+                                margin-right: 5px;
+                            }
+                            &:nth-child(1) {
+                                font-size: 30px;
+                                font-weight: 400;
+                                color: #222222;
+                            }
+                            &:nth-child(2) {
+                                font-size: 28px;
+                                font-weight: 400;
+                                color: #333333;
+                                flex-shrink: 0;
+                            }
+                        }
+                        .bg_list_item_num_item_sr {
+                            flex: 1;
+                            display: flex;
+                            align-items: center;
+                            justify-content: flex-end;
+                            input::-webkit-input-placeholder {
+                                font-size: 28px;
+                            }
+                            input {
+                                text-align: right;
+                                width: 180px;
+                                height: 60px;
+                                border-radius: 8px;
+                                border: 1PX solid #E5E5E5;
+                                margin-right: 20px;
+                                font-size: 28px;
+                                font-weight: 400;
+                                color: #333333;
+                                padding: 0 30px
+                            }
+                            span {
+                                font-size: 28px;
+                                font-weight: 400;
+                                color: #666666;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        .details_dj {
+            display: flex;
+            flex-direction: column;
+            .details_dj_title {
+                width: 100%;
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                padding: 0 30px 30px 30px;
+                box-sizing: border-box;
+                .details_dj_title_left {
+                    display: flex;
+                    align-items: center;
+                    .details_x {
+                        width: 8px;
+                        height: 30px;
+                        background: $nav-color;
+                        border-radius: 2px;
+                        margin-right: 12px;
+                    }
+                    span {
+                        font-size: 32px;
+                        font-weight: 500;
+                        color: #222222;
+                    }
+                }
+                .details_dj_title_right {
+                    display: flex;
+                    align-items: center;
+                    img {
+                        width: 28px;
+                        height: 28px;
+                        margin-right: 12px;
+                    }
+                    span {
+                        font-size: 28px;
+                        font-weight: 400;
+                        color: $nav-color;
+                    }
+                }
+            }
+            .details_dj_list {
+                width: 100%;
+                /*padding: 30px;*/
+                box-sizing: border-box;
+                background: #ffffff;
+                display: flex;
+                flex-direction: column;
+                .details_dj_list_item {
+                    display: flex;
+                    flex-direction: column;
+                    border-bottom: 1px solid #E5E5E5;
+                    padding: 30px;
+                    /*margin: 30px;*/
+                    /*padding-bottom: 30px;*/
+                    /*margin-bottom: 30px !important;*/
+                    span {
+                        &:nth-child(1) {
+                            font-size: 28px;
+                            font-weight: 400;
+                            color: #222222;
+                        }
+                        &:nth-child(2) {
+                            font-size: 24px;
+                            font-weight: 400;
+                            color: #999999;
+                            margin-top: 24px;
+                        }
+                    }
+                }
+            }
+        }
+        .bh_zw {
+            height: 160px;
+        }
+        .bg_footer {
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            width: 100%;
+            padding: 0 30px 60px 30px;
+            box-sizing: border-box;
+            .bg_footer_submit {
+                width: 690px;
+                height: 88px;
+                background: $nav-color;
+                box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
+                border-radius: 8px;
+                font-size: 30px;
+                font-weight: 500;
+                color: #FFFFFF;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+            }
+        }
+        .tg {
+            width: 100%;
+            height: 100%;
+            padding: 30px;
+            box-sizing: border-box;
+            .tg_header {
+                width: 100%;
+                height: 45px;
+                text-align: center;
+                line-height: 45px;
+                font-size: 30px;
+                font-weight: 500;
+                color: #222222;
+            }
+            .tg_table {
+                width: 100%;
+                margin-top: 40px;
+                .tg_table_header {
+                    width: 100%;
+                    height: 72px;
+                    background: #EFF2FC;
+                    display: flex;
+                    align-items: center;
+                    .tg_table_header_item {
+                        flex: 1;
+                        font-size: 26px;
+                        font-weight: 500;
+                        color: #333333;
+                        display: flex;
+                        align-items: center;
+                        justify-content: center;
+                    }
+                }
+            }
+            .nr {
+                max-height: 400px;
+                overflow-x: scroll;
+                .tg_table_nr {
+                    width: 100%;
+                    padding: 24px 10px;
+                    box-sizing: border-box;
+                    display: flex;
+                    align-items: center;
+                    background: white;
+                    box-shadow: inset 0px -2px 0px 0px #E5E5E5;
+                    .tg_table_nr_item {
+                        flex: 1;
+                        font-size: 26px;
+                        font-weight: 500;
+                        color: #333333;
+                        display: flex;
+                        align-items: center;
+                        justify-content: center;
+                    }
+                    .tg_table_nr_item1 {
+                        flex: 1;
+                        font-size: 26px;
+                        font-weight: 500;
+                        color: #333333;
+                        display: flex;
+                        align-items: center;
+                        justify-content: center;
+                    }
+                }
+            }
+        }
+        .tg_footer {
+            width: calc(100% - 60px);
+            position: fixed;
+            bottom: 0;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            box-sizing: border-box;
+            padding-bottom: 40px;
+            .tg_footer_fh {
+                width: 100%;
+                height: 88px;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                background: rgba(66, 117, 252, 0.05);
+                border-radius: 8px;
+                border: 1PX solid #4275FC;
+                font-size: 32px;
+                font-weight: 500;
+                color: $nav-color;
+            }
+            .tg_footer_qr {
+                width: 100%;
+                height: 88px;
+                border: none;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                background: $nav-color;
+                border-radius: 8px;
+                font-size: 32px;
+                font-weight: 500;
+                color: #FFFFFF;
+            }
+        }
+        .bl {
+            padding: 30px;
+            box-sizing: border-box;
+            display: flex;
+            flex-direction: column;
+            .bl_head {
+                width: 100%;
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                span {
+                    font-size: 28px;
+                    color: #222222;
+                    &:nth-child(2) {
+                        font-size: 32px !important;
+                    }
+                }
+            }
+            .bl_list {
+                width: 100%;
+                height: 580px;
+                overflow-y: scroll;
+                margin-top: 30px;
+                .bl_list_item {
+                    width: 100%;
+                    height: 60px;
+                    display: flex;
+                    align-items: center;
+                    justify-content: space-between;
+                    margin-bottom: 20px;
+                    &:last-child {
+                        margin-bottom: 0 !important;
+                    }
+                    .bl_list_item_left {
+                        flex: 1;
+                        display: flex;
+                        align-items: center;
+                        input {
+                            width: 30px;
+                            height: 30px;
+                            margin: 0 !important;
+                        }
+                        span {
+                            font-size: 30px;
+                            color: #222222;
+                            margin-left: 10px;
+                        }
+                    }
+                    .bl_list_item_right {
+                        flex: 1;
+                        height: 50px;
+                        text-align: right;
+                        input {
+                            padding-left: 5px;
+                            width: 160px;
+                            height: 100%;
+                            font-size: 28px;
+                            border-radius: 10px;
+                            border: 2px solid #999999
+                        }
+                    }
+                }
+            }
+        }
+    }
+</style>
diff --git a/web_standard/package-lock.json b/web_standard/package-lock.json
index 4be03c4..97a11f7 100644
--- a/web_standard/package-lock.json
+++ b/web_standard/package-lock.json
@@ -1814,63 +1814,6 @@
           "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
           "dev": true
         },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true,
-          "optional": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true,
-          "optional": true
-        },
-        "loader-utils": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
-          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^2.1.2"
-          }
-        },
         "ssri": {
           "version": "8.0.1",
           "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
@@ -1878,28 +1821,6 @@
           "dev": true,
           "requires": {
             "minipass": "^3.1.1"
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "vue-loader-v16": {
-          "version": "npm:vue-loader@16.8.3",
-          "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
-          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chalk": "^4.1.0",
-            "hash-sum": "^2.0.0",
-            "loader-utils": "^2.0.0"
           }
         }
       }
@@ -13414,6 +13335,87 @@
         }
       }
     },
+    "vue-loader-v16": {
+      "version": "npm:vue-loader@16.8.3",
+      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
+      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chalk": "^4.1.0",
+        "hash-sum": "^2.0.0",
+        "loader-utils": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true,
+          "optional": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true,
+          "optional": true
+        },
+        "loader-utils": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "vue-qr": {
       "version": "4.0.9",
       "resolved": "https://registry.npmmirror.com/vue-qr/-/vue-qr-4.0.9.tgz",

--
Gitblit v1.9.3