From fa2f172812de8344fa22c4ef088ea2a67257a0d3 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期二, 05 九月 2023 10:21:17 +0800
Subject: [PATCH] Merge branch 'dev' of http://139.186.142.91:10010/r/productDev/dmMes into dev

---
 server/src/main/java/doumeemes/config/shiro/ShiroRedisSessionDAO.java                        |  139 
 minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue                              |  419 
 minipro_standard/static/filter@2x.png                                                        |    0 
 minipro_standard/pages_adjust/pages/transferList/transferList.vue                            |  774 +
 minipro_standard/components/LabelSelection.vue                                               |   88 
 server/src/main/java/doumeemes/config/shiro/ShiroSessionSerializer.java                      |   36 
 minipro_standard/util/api/index.js                                                           |   26 
 minipro_standard/util/request/index.js                                                       |   10 
 server/src/main/resources/application-standardPro.yml                                        |    1 
 minipro_standard/pages/linePatrol/linePatrol.vue                                             |  225 
 minipro_standard/pages_inspect/pages/InspectionDetails/InspectionDetails.vue                 |  249 
 server/src/main/java/doumeemes/config/shiro/ShiroToken.java                                  |   24 
 server/src/main/java/doumeemes/core/annotation/excel/ExcelColumn.java                        |    2 
 minipro_standard/pages_adjust/pages/newOutbound/newOutbound.vue                              |  380 
 minipro_standard/uni_modules/uni-icons/components/uni-icons/icons.js                         | 1169 ++
 minipro_standard/uni_modules/uni-scss/styles/setting/_color.scss                             |   66 
 minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue                 |    4 
 minipro_standard/uni_modules/uni-icons/package.json                                          |   86 
 minipro_standard/uni_modules/uni-scss/styles/tools/functions.scss                            |   19 
 server/src/main/java/doumeemes/api/ext/CategoryExtController.java                            |    2 
 minipro_standard/uni_modules/uni-scss/styles/setting/_text.scss                              |   24 
 h5_standard/src/views/children.vue                                                           |    1 
 minipro_standard/uni_modules/uni-scss/theme.scss                                             |   31 
 server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionDAO.java                       |  108 
 minipro_standard/pages/updatePhone/updatePhone.vue                                           |   41 
 server/src/main/java/doumeemes/config/shiroMemory/ShiroCredentialsMatcher.java               |   45 
 server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java                   |    6 
 minipro_standard/pages/inspectComplete/inspectComplete.vue                                   |  228 
 minipro_standard/pages_adjust/pages/outboundList/outboundList.vue                            |  562 +
 server/README.md                                                                             |    4 
 server/src/main/java/doumeemes/config/shiro/ShiroAuthFilter.java                             |    5 
 server/src/main/java/doumeemes/config/shiroMemory/ShiroAuthFilter.java                       |   30 
 server/src/main/java/doumeemes/config/shiroMemory/ShiroConfig.java                           |  121 
 server/src/main/java/doumeemes/config/shiroMemory/ShiroToken.java                            |   53 
 minipro_standard/pages_adjust/pages/warehousingList/warehousingList.vue                      |  562 +
 minipro_standard/uni_modules/uni-scss/styles/setting/_space.scss                             |   56 
 minipro_standard/components/workOrderInfo.vue                                                |   82 
 minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue                                |  324 
 minipro_standard/uni_modules/uni-collapse/readme.md                                          |   12 
 minipro_standard/uni_modules/uni-scss/styles/setting/_variables.scss                         |  146 
 server/src/main/java/doumeemes/config/shiro/ShiroConfig.java                                 |   46 
 minipro_standard/pages_adjust/static/gongdan_ic_shoudong@2x.png                              |    0 
 minipro_standard/util/api/ExWarehouse.js                                                     |  252 
 server/src/main/java/doumeemes/config/shiro/ShiroSessionDAO.java                             |    9 
 minipro_standard/pages/personal/personal.vue                                                 |   20 
 minipro_standard/pages/allocation/allocation.vue                                             |  269 
 minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue                                   |  494 
 minipro_standard/util/api/PersonalAPI.js                                                     |   36 
 minipro_standard/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue           |  147 
 minipro_standard/uni_modules/uni-scss/styles/setting/_styles.scss                            |  167 
 minipro_standard/pages_adjust/components/Material.vue                                        |  131 
 minipro_standard/package-lock.json                                                           |  451 
 minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.css                     |  663 +
 minipro_standard/util/api/QualityAPI.js                                                      |  118 
 server/src/main/java/doumeemes/config/shiroMemory/ShiroCacheManager.java                     |   43 
 minipro_standard/pages/login/login.vue                                                       |   65 
 minipro_standard/components/Tooling.vue                                                      |  144 
 minipro_standard/pages_adjust/pages/processPlan/processPlan.vue                              |  404 
 h5_standard/src/views/needToBeDealtWith/addWarehousing.vue                                   |    3 
 minipro_standard/pages/OutOperation/OutOperation.vue                                         |  685 +
 minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue                              | 1002 +
 minipro_standard/static/ic_edit@2x.png                                                       |    0 
 minipro_standard/uni_modules/uni-scss/styles/setting/_radius.scss                            |   55 
 h5_standard/src/views/needToBeDealtWith/outbound.vue                                         |    3 
 minipro_standard/util/utils.js                                                               |   30 
 server/src/main/java/doumeemes/config/shiro/ShiroCache.java                                  |   72 
 minipro_standard/store/index.js                                                              |  105 
 minipro_standard/pages_adjust/pages/warehousingDetails1/warehousingDetails1.vue              |  346 
 web_standard/src/api/business/salaryParam.js                                                 |   20 
 minipro_standard/util/api/materialStorage.js                                                 |  115 
 minipro_standard/uni_modules/uni-scss/styles/index.scss                                      |    7 
 minipro_standard/pages/mine/mine.vue                                                         |   73 
 minipro_standard/uni_modules/uni-icons/readme.md                                             |    8 
 h5_standard/src/views/needToBeDealtWith/exWarehouse.vue                                      | 2051 ++-
 minipro_standard/pages/plannedProgress/plannedProgress.vue                                   |  632 +
 minipro_standard/uni.scss                                                                    |   12 
 minipro_standard/pages/planDetails/planDetails.vue                                           |  546 +
 minipro_standard/package.json                                                                |    5 
 minipro_standard/pages/changePassword/changePassword.vue                                     |   35 
 minipro_standard/pages_adjust/components/Warehouse.vue                                       |  136 
 minipro_standard/pages/plannedDistribution/plannedDistribution.vue                           |  609 +
 minipro_standard/manifest.json                                                               |    8 
 minipro_standard/util/api/PlanningAPI.js                                                     |  213 
 server/src/main/java/doumeemes/config/shiroMemory/ShiroCache.java                            |  111 
 server/src/main/java/doumeemes/config/mybatis/MyBatisInterceptor.java                        |    7 
 server/src/main/java/doumeemes/config/shiro/ShiroRealm.java                                  |   25 
 minipro_standard/pages_adjust/pages/InventoryQuery/InventoryQuery.vue                        |  485 
 server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java                          |   27 
 minipro_standard/pages_adjust/pages/addReceipt/addReceipt.vue                                |  462 
 minipro_standard/util/request/requestInterceptors.js                                         |   23 
 minipro_standard/uni_modules/uni-scss/readme.md                                              |    4 
 h5_standard/src/views/workOrder/workOrderReporting.vue                                       | 3764 +++---
 web_standard/public/template/material_import_template.xlsx                                   |    0 
 minipro_standard/uni_modules/uni-icons/components/uni-icons/uni-icons.vue                    |   96 
 minipro_standard/components/SelectMultipleMaterial.vue                                       |  274 
 server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionManager.java                   |   86 
 h5_standard/src/views/requisition/scrapped.vue                                               |    3 
 server/src/main/java/doumeemes/config/shiroMemory/ShiroTokenManager.java                     |   24 
 minipro_standard/main.js                                                                     |    1 
 server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java                     |    4 
 platform_web/src/views/system/loginLog.vue                                                   |   18 
 server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java                  |   21 
 minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.ttf                     |    0 
 minipro_standard/pages_adjust/pages/outboundDetails/outboundDetails.vue                      |  331 
 minipro_standard/uni_modules/uni-collapse/changelog.md                                       |   36 
 minipro_standard/uni_modules/uni-scss/index.scss                                             |    1 
 minipro_standard/pages_adjust/components/user.vue                                            |  127 
 h5_standard/src/utils/request.ts                                                             |    4 
 server/src/main/java/doumeemes/core/utils/WxMiniConfig.java                                  |    5 
 minipro_standard/util/request/responseInterceptors.js                                        |   47 
 minipro_standard/components/selectMaterial.vue                                               |  140 
 server/src/main/resources/application.yml                                                    |    5 
 minipro_standard/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue |  402 
 minipro_standard/pages_adjust/components/location.vue                                        |  101 
 minipro_standard/uni_modules/uni-collapse/package.json                                       |   89 
 web_standard/.env.development                                                                |    4 
 minipro_standard/pages/InOperation/InOperation.vue                                           |  686 +
 minipro_standard/common/css/common.css                                                       |    8 
 server/src/main/java/doumeemes/config/shiro/ShiroSessionManager.java                         |    3 
 minipro_standard/pages/index/index.vue                                                       |  374 
 h5_standard/src/components/common/Access.vue                                                 |  551 
 minipro_standard/pages.json                                                                  |  209 
 minipro_standard/pages_inspect/pages/InspectionRecords/InspectionRecords.vue                 |  643 +
 server/src/main/java/doumeemes/config/shiroMemory/ShiroRealm.java                            |  172 
 minipro_standard/pages_adjust/components/ProductionProcess.vue                               |  111 
 minipro_standard/uni_modules/uni-scss/variables.scss                                         |   62 
 server/src/main/java/doumeemes/config/shiro/ShiroTokenManager.java                           |    2 
 server/src/main/java/doumeemes/api/system/SystemLoginLogController.java                      |    3 
 server/src/main/java/doumeemes/service/system/impl/SystemLoginServiceImpl.java               |    4 
 minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue                |  996 +
 minipro_standard/pages/workbench/workbench.vue                                               |   15 
 minipro_standard/pages_adjust/pages/warehousingDetails/warehousingDetails.vue                |  330 
 server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java                      |  182 
 minipro_standard/common/config.js                                                            |   33 
 server/src/main/java/doumeemes/api/ext/DeviceExtController.java                              |    4 
 minipro_standard/components/InOutInfo.vue                                                    |   82 
 minipro_standard/App.vue                                                                     |    1 
 minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue                    | 1071 ++
 minipro_standard/uni_modules/uni-scss/changelog.md                                           |    8 
 h5_standard/.env.development                                                                 |    2 
 minipro_standard/uni_modules/uni-icons/changelog.md                                          |   22 
 minipro_standard/util/api/agencyAPI.js                                                       |   77 
 platform_web/.env.development                                                                |    4 
 server/src/main/java/doumeemes/config/shiro/ShiroCacheManager.java                           |    2 
 minipro_standard/common/css/lib.css                                                          |   39 
 minipro_standard/util/constData.js                                                           |  145 
 minipro_standard/util/api/WorkOrderAPI.js                                                    |  652 +
 minipro_standard/uni_modules/uni-scss/styles/setting/_border.scss                            |    3 
 minipro_standard/uni_modules/uni-scss/package.json                                           |   82 
 minipro_standard/components/Search.vue                                                       |  181 
 minipro_standard/pages/inspectPatrol/inspectPatrol.vue                                       |  227 
 151 files changed, 26,714 insertions(+), 3,389 deletions(-)

diff --git a/h5_standard/.env.development b/h5_standard/.env.development
index 3621622..5b5d10a 100644
--- a/h5_standard/.env.development
+++ b/h5_standard/.env.development
@@ -10,7 +10,7 @@
 # VUE_APP_API = 'https://106.14.220.133:10012/'
 
 # 钀嶅鏈湴
-# VUE_APP_API = 'http://192.168.0.12:10012/'
+#  VUE_APP_API = 'http://192.168.3.219:10021/'
 
 # 浠诲悍鏈湴
 # VUE_APP_API = 'http://192.168.0.15:10021/'
diff --git a/h5_standard/src/components/common/Access.vue b/h5_standard/src/components/common/Access.vue
index ef366c6..4d923a0 100644
--- a/h5_standard/src/components/common/Access.vue
+++ b/h5_standard/src/components/common/Access.vue
@@ -1,299 +1,308 @@
 <template>
-    <van-popup
-        v-model:show="props.show"
-        position="bottom"
-        :style="{ height: '100%' }">
-        <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_top': status }" class="content_search">
+  <van-popup v-model:show="props.show" position="bottom" :style="{ height: '100%' }">
+    <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_top': status }" class="content_search">
                 <v-Search ref="V" @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="content_list_item" v-for="(item, i) in list" :key="i" @click="jump(item, i)">
-                            <div class="wl">
-                                <div class="content_list_item_name">{{item.locationName}}</div>
-                                <!-- <div class="content_list_item_status green" v-if="item.smodelLabel === Attribute.HG">[{{item.smodelCode}}]</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="content_list_item" v-for="(item, i) in list" :key="i" @click="jump(item, i)">
+              <div class="wl">
+                <div class="content_list_item_name">{{ item.locationName }}</div>
+                <!-- <div class="content_list_item_status green" v-if="item.smodelLabel === Attribute.HG">[{{item.smodelCode}}]</div>
                                 <div class="content_list_item_status yellow" v-else-if="item.smodelLabel === Attribute.BL">[{{item.smodelCode}}]</div>
                                 <div class="content_list_item_status red" v-else-if="item.smodelLabel === Attribute.BF">[{{item.smodelCode}}]</div>
                                 <div class="content_list_item_status black" v-else-if="item.smodelLabel === Attribute.HH">[{{item.smodelCode}}]</div>
                                 <div class="content_list_item_name">{{item.categoryBigName ? item.categoryBigName : ''}}{{item.categoryMiddleName ? item.categoryMiddleName : ''}}{{item.categorySmallName ? item.categorySmallName : ''}}-{{item.code}}</div> -->
-                            </div>
-                            <div class="sx">
-                                <span>{{item.materialName ? item.materialName : '-'}} | {{item.materialCode ? item.materialCode : '-'}} | {{item.num}}{{item.umodelName}}</span>
-                            </div>
-                            <div class="zl">
-                                <span>
-                                    <span class="green" v-if="item.qualityType == 0">鍚堟牸</span>
-                                    <span class="yellow" v-if="item.qualityType == 1">涓嶈壇</span>
-                                    <span class="red" v-if="item.qualityType == 2">鎶ュ簾</span>
-                                    &nbsp;/&nbsp;{{item.pmodelName ? item.pmodelName : '-'}}&nbsp;/&nbsp;{{item.batch ? item.batch : '-'}}
-                                </span>
-                            </div>
-                        </div>
-                    </div>
-                </van-list>
-            </van-pull-refresh>
-        </div>
-    </van-popup>
+              </div>
+              <div class="sx">
+                <span>{{ item.materialName ? item.materialName : '-' }} | {{ item.materialCode ? item.materialCode : '-' }} |
+                  {{ item.num }}{{ item.umodelName }}</span>
+              </div>
+              <div class="zl">
+                <span>
+                  <span class="green" v-if="item.qualityType == 0">鍚堟牸</span>
+                  <span class="yellow" v-if="item.qualityType == 1">涓嶈壇</span>
+                  <span class="red" v-if="item.qualityType == 2">鎶ュ簾</span>
+                  &nbsp;/&nbsp;{{ item.pmodelName ? item.pmodelName : '-' }}&nbsp;/&nbsp;{{ item.batch ? item.batch : '-' }}
+                </span>
+              </div>
+            </div>
+          </div>
+        </van-list>
+      </van-pull-refresh>
+    </div>
+  </van-popup>
 </template>
 
 <script lang="ts" setup>
-    import { defineProps, defineEmits, onMounted, ref, reactive, watch } from 'vue'
-    import { checkAllList, toolingList } from '@/apis/WorkOrderAPI'
-    // import { findListPageForManual } from '@/apis/agencyAPI'
-    import { choiceStockPageByTransfer } from '@/apis/ExWarehouse'
-    import { model } from '@/interface'
-    import { Attribute } from '@/enum'
-    import { judgmentPlatform } from "@/utils/utils"
-    import vSearch from '@/components/common/Search.vue'
-    import vLableSelection from '@/components/common/LabelSelection.vue'
+import { defineProps, defineEmits, onMounted, ref, reactive, watch } from 'vue'
+import { checkAllList, toolingList } from '@/apis/WorkOrderAPI'
+// import { findListPageForManual } from '@/apis/agencyAPI'
+import { choiceStockPageByTransfer } from '@/apis/ExWarehouse'
+import { model } from '@/interface'
+import { Attribute } from '@/enum'
+import { judgmentPlatform } from "@/utils/utils"
+import vSearch from '@/components/common/Search.vue'
+import vLableSelection from '@/components/common/LabelSelection.vue'
 
-    // 鎼滅储鏁版嵁鎺ュ彛
-    interface form extends model {
-        total: number,
-        smodelLabel: string,
-        categoryId: string
-    }
+// 鎼滅储鏁版嵁鎺ュ彛
+interface form extends model {
+  total: number,
+  smodelLabel: string,
+  categoryId: string
+}
 
-    const form = reactive<form>({
-        capacity: 50,
-        page: 0,
-        total: 0,
-        smodelLabel: '',
-        categoryId: ''
-    })
+const form = reactive<form>({
+  capacity: 50,
+  page: 0,
+  total: 0,
+  smodelLabel: '',
+  categoryId: ''
+})
 
-    // 鍒楄〃鏁版嵁
-    const list: any = ref([]);
-    const loading = ref(false);
-    const finished = ref(false);
-    const refreshing = ref(false)
-    let isOne = ref<boolean>(true)
-    // const V = ref(null)
-    let isOpen = ref<boolean>(true)
+// 鍒楄〃鏁版嵁
+const list: any = ref([]);
+const loading = ref(false);
+const finished = ref(false);
+const refreshing = ref(false)
+let isOne = ref<boolean>(true)
+// const V = ref(null)
+let isOpen = ref<boolean>(true)
 
-    const test = () => {
-        // const { text }: any = V.value
-        form.smodelLabel = ''
-        // V.value.text = ''
-    }
+const test = () => {
+  // const { text }: any = V.value
+  form.smodelLabel = ''
+  // V.value.text = ''
+}
 
-    const clickTag = (tag: string): void => {
-        form.categoryId = tag
+const clickTag = (tag: string): void => {
+  form.categoryId = tag
+  list.value = []
+  finished.value = false
+  form.page = 0
+  form.total = 0
+  onLoad()
+}
+
+// 鎼滅储妗�
+const searchInput = (data: any) => {
+  console.log(data)
+  form.page = 0
+  finished.value = false
+  list.value = []
+  form.smodelLabel = data
+  onLoad()
+}
+
+// 鎼滅储鎻愪氦
+const submit = (): void => {
+  form.page = 0
+  finished.value = false
+  list.value = []
+  onLoad()
+}
+
+// 杩斿洖涓婁竴椤靛甫鍙傛暟
+const jump = (item: any, i: number): void => {
+  list.value.splice(i, 1)
+  emit('value', item, list.value.length)
+}
+
+// 鑾峰彇宸ュ崟鍒楄〃鏁版嵁
+const onLoad = async () => {
+  // if (isOne.value) await checkAllLists()
+  if (!finished.value) {
+    loading.value = true;
+    form.page = form.page + 1
+    choiceStockPageByTransfer({
+      capacity: form.capacity,
+      page: form.page,
+      model: {
+        transferId: props.transferId,
+        warehouseId: props.warehouseId
+      }
+    }).then(res => {
+      if (refreshing.value) {
         list.value = []
-        finished.value = false
-        form.page = 0
-        form.total = 0
-        onLoad()
-    }
-
-    // 鎼滅储妗�
-    const searchInput = (data: any) => {
-        console.log(data)
-        form.page = 0
-        finished.value = false
+        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 = []
-        form.smodelLabel = data
-        onLoad()
-    }
-
-    // 鎼滅储鎻愪氦
-    const submit = (): void => {
-        form.page = 0
-        finished.value = false
-        list.value = []
-        onLoad()
-    }
-
-    // 杩斿洖涓婁竴椤靛甫鍙傛暟
-    const jump = (item: any, i: number): void => {
-        list.value.splice(i, 1)
-        emit('value', item, list.value.length)
-    }
-
-    // 鑾峰彇宸ュ崟鍒楄〃鏁版嵁
-    const onLoad = async () => {
-        // if (isOne.value) await checkAllLists()
-        if (!finished.value) {
-            loading.value = true;
-            form.page = form.page + 1
-            choiceStockPageByTransfer({
-                capacity: form.capacity,
-                page: form.page,
-                model: {
-                    transferId: props.transferId,
-                    warehouseId: props.warehouseId
-                }
-            }).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
-        },
-        transferId: {   // 杞簱鍗昳d
-            type: String,
-            required: false
-        },
-        warehouseId: {   // 浠撳簱缂栫爜
-            type: String,
-            required: false
-        }
+        refreshing.value = false;
+      }
     })
+  }
+}
 
-    const emit = defineEmits(['close', 'value'])
+// 涓嬫媺鍒锋柊浼樺寲椤甸潰
+const onRefresh = () => {
+  finished.value = false;
+  form.page = 0
+  loading.value = true;
+  onLoad()
+}
 
-    // 鍏抽棴鍥炶皟
-    const close = () => {
-        emit('close')
+let status = ref<boolean>(false)
+
+const props = defineProps({
+  show: {     // 鏄惁鏄剧ず
+    type: Boolean,
+    required: true
+  },
+  transferId: {   // 杞簱鍗昳d
+    type: String,
+    required: false
+  },
+  warehouseId: {   // 浠撳簱缂栫爜
+    type: String,
+    required: false
+  }
+})
+
+const emit = defineEmits(['close', 'value'])
+
+// 鍏抽棴鍥炶皟
+const close = () => {
+  emit('close')
+}
+
+watch(() => props.show, (news) => {
+  if (!news) {
+    test()
+  } else {
+    if (!isOpen.value) {
+      list.value = []
+      finished.value = false;
+      form.page = 0
+      loading.value = true;
+      onLoad()
     }
+    isOpen.value = false
+  }
+})
 
-    watch(() => props.show, (news) => {
-        if (!news) {
-            test()
-        } else {
-            if (!isOpen.value) {
-                list.value = []
-                finished.value = false;
-                form.page = 0
-                loading.value = true;
-                onLoad()
-            }
-            isOpen.value = false
-        }
-    })
-
-    onMounted(() => {
-        status.value = judgmentPlatform()
-    })
+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;
-        }
+.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 {
-        .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;
-        }
-        .content_list {
-            width: 100%;
-            height: 100%;
-            display: flex;
-            flex-direction: column;
-            .content_list_item {
-                padding: 30px;
-                display: flex;
-                flex-direction: column;
-                border-bottom: 1px solid #ececec;
-                .wl {
-                    display: flex;
-                    align-items: center;
-                    .content_list_item_status {
-                        font-size: 28px;
-                        margin-right: 10px;
-                    }
-                    .content_list_item_name {
-                        font-size: 30px;
-                        font-weight: 500;
-                        color: #111111;
-                    }
-                }
-                .sx {
-                    margin-top: 15px;
-                    span {
-                        font-size: 26px;
-                        font-weight: 400;
-                        color: #444444;
-                    }
-                }
-                .zl {
-                    margin-top: 15px;
-                    span {
-                        font-size: 24px;
-                        font-weight: 400;
-                        color: #666666;
-                    }
-                }
-            }
-        }
+  }
+
+  .content_top {
+    top: 0 !important;
+  }
+
+  .content_search {
+    padding: 30px;
+    background: white;
+    position: sticky;
+    top: 88px;
+    z-index: 9;
+
+    .content_search_x {
+      height: 24px;
     }
-</style>
+  }
+
+  .content_total {
+    padding: 24px 30px;
+    background: #F7F7F7;
+    font-size: 24px;
+    font-weight: 400;
+    color: #666666;
+  }
+
+  .content_list {
+    width: 100%;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+
+    .content_list_item {
+      padding: 30px;
+      display: flex;
+      flex-direction: column;
+      border-bottom: 1px solid #ececec;
+
+      .wl {
+        display: flex;
+        align-items: center;
+
+        .content_list_item_status {
+          font-size: 28px;
+          margin-right: 10px;
+        }
+
+        .content_list_item_name {
+          font-size: 30px;
+          font-weight: 500;
+          color: #111111;
+        }
+      }
+
+      .sx {
+        margin-top: 15px;
+
+        span {
+          font-size: 26px;
+          font-weight: 400;
+          color: #444444;
+        }
+      }
+
+      .zl {
+        margin-top: 15px;
+
+        span {
+          font-size: 24px;
+          font-weight: 400;
+          color: #666666;
+        }
+      }
+    }
+  }
+}</style>
diff --git a/h5_standard/src/utils/request.ts b/h5_standard/src/utils/request.ts
index 06d7b67..d51170a 100644
--- a/h5_standard/src/utils/request.ts
+++ b/h5_standard/src/utils/request.ts
@@ -29,9 +29,9 @@
 // 娣诲姞鍝嶅簲鎷︽埅鍣�
 service.interceptors.response.use(
     (response) => {
-        // if (response.config.url?.indexOf('/lingyang/login') == -1 && response.config.url?.indexOf('/edgp/loginDemo') == -1 && response.config.url?.indexOf('/lingyang/loginDemo') == -1 && response.config.url?.indexOf('/edgp/login') == -1) {
+        if (response.config.url?.indexOf('/lingyang/login') == -1 && response.config.url?.indexOf('/edgp/loginDemo') == -1 && response.config.url?.indexOf('/lingyang/loginDemo') == -1 && response.config.url?.indexOf('/edgp/login') == -1) {
             loading.clear();
-        // }
+        }
         if (response.data.code === 401) {     // 澶勭悊鐧诲綍杩囨湡
             Toast.fail({ message: '鐧诲綍杩囨湡锛屽噯澶囪嚜鍔ㄩ噸鏂扮櫥褰�', duration: 2000, forbidClick: true })
             setTimeout(() => {
diff --git a/h5_standard/src/views/children.vue b/h5_standard/src/views/children.vue
index bd66219..d03ea27 100644
--- a/h5_standard/src/views/children.vue
+++ b/h5_standard/src/views/children.vue
@@ -36,6 +36,7 @@
 
     const title = ref<string>('')
 
+    // alert(window.document.title)
     const pathLists = reactive<string[]>([
         '/index',
         '/workbench',
diff --git a/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue b/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue
index 3ab6379..1d9ab0b 100644
--- a/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue
+++ b/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue
@@ -272,7 +272,8 @@
     // 鍒犻櫎
     const dele = (index: any) => {
         if (list.value.length === 1) {
-            Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+        //    Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+            Toast('鑷冲皯淇濈暀涓�鏉$墿娴佹竻鍗曚俊鎭�')
             return
         }
         list.value.splice(index, 1)
diff --git a/h5_standard/src/views/needToBeDealtWith/exWarehouse.vue b/h5_standard/src/views/needToBeDealtWith/exWarehouse.vue
index d9a065f..cdca4bd 100644
--- a/h5_standard/src/views/needToBeDealtWith/exWarehouse.vue
+++ b/h5_standard/src/views/needToBeDealtWith/exWarehouse.vue
@@ -1,185 +1,185 @@
 <template>
-    <div class="page">
-        <!--    澶撮儴淇℃伅(杞簱鍗�)    -->
-        <div class="page_info" v-if="info.wtransfer && route.query.type == 7">
-            <div class="page_info_title">璁″垝鍑哄簱鏃ユ湡锛歿{info.wtransfer.outPlandate}}</div>
-            <div class="page_info_list">
-                <div class="page_info_list_item">
-                    <div class="page_info_list_item_label">鏉ユ簮绫诲瀷锛�</div>
-                    <div class="page_info_list_item_nr" v-if="info.wtransfer.originType === 0">閲囪喘璁㈠崟</div>
-                    <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 1">鐢熶骇宸ュ崟</div>
-                    <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 2">閿�鍞鍗�</div>
-                    <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 3">杞簱鍗�</div>
-                    <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 4">鐩樼偣鍗�</div>
-                    <div class="page_info_list_item_nr" v-else>-</div>
-                </div>
-<!--                <div class="page_info_list_item">-->
-<!--                    <div class="page_info_list_item_label">鐢抽宸ュ簭锛�</div>-->
-<!--                    <div class="page_info_list_item_nr">{{info.wtransfer.procedureName ? info.wtransfer.procedureName : '-'}}</div>-->
-<!--                </div>-->
-                <div class="page_info_list_item">
-                    <div class="page_info_list_item_label">鏉ユ簮鍗曞彿锛�</div>
-                    <div class="page_info_list_item_nr">{{info.wtransfer.originCode ? info.wtransfer.originCode : '-'}}</div>
-                </div>
-                <div class="page_info_list_item">
-                    <div class="page_info_list_item_label">鐢宠浜哄憳锛�</div>
-                    <div class="page_info_list_item_nr">{{info.wtransfer.outUserName}}/{{info.wtransfer.outDepartName}}</div>
-                </div>
-                <div class="page_info_list_item">
-                    <div class="page_info_list_item_label">鍏ュ簱鎺ユ敹浜猴細</div>
-                    <div class="page_info_list_item_nr">{{info.wtransfer.inUserName}}</div>
-                </div>
-                <div class="page_info_list_item">
-                    <div class="page_info_list_item_label">鐢宠鏃堕棿锛�</div>
-                    <div class="page_info_list_item_nr">{{info.wtransfer.createTime ? info.wtransfer.createTime : '-'}}</div>
-                </div>
-            </div>
-            <div class="page_info_bz" v-if="info.wtransfer.abstracts">
-                <div class="page_info_bz_title">杞簱澶囨敞锛�</div>
-                <div class="page_info_bz_nr">{{info.wtransfer.abstracts}}</div>
-            </div>
+  <div class="page">
+    <!--    澶撮儴淇℃伅(杞簱鍗�)    -->
+    <div class="page_info" v-if="info.wtransfer && route.query.type == 7">
+      <div class="page_info_title">璁″垝鍑哄簱鏃ユ湡锛歿{ info.wtransfer.outPlandate }}</div>
+      <div class="page_info_list">
+        <div class="page_info_list_item">
+          <div class="page_info_list_item_label">鏉ユ簮绫诲瀷锛�</div>
+          <div class="page_info_list_item_nr" v-if="info.wtransfer.originType === 0">閲囪喘璁㈠崟</div>
+          <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 1">鐢熶骇宸ュ崟</div>
+          <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 2">閿�鍞鍗�</div>
+          <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 3">杞簱鍗�</div>
+          <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 4">鐩樼偣鍗�</div>
+          <div class="page_info_list_item_nr" v-else>-</div>
         </div>
-        <!--    澶撮儴淇℃伅(鍑哄簱鍗�)    -->
-        <div class="page_info" v-if="info.woutbound && route.query.type == 8">
-            <div class="page_info_title">璁″垝鍑哄簱鏃ユ湡锛歿{info.woutbound.planDate}}</div>
-            <div class="page_info_list">
-                <div class="page_info_list_item">
-                    <div class="page_info_list_item_label">鏉ユ簮绫诲瀷锛�</div>
-                    <div class="page_info_list_item_nr" v-if="info.woutbound.originType === 0">閲囪喘璁㈠崟</div>
-                    <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 1">鐢熶骇宸ュ崟</div>
-                    <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 2">閿�鍞鍗�</div>
-                    <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 3">杞簱鍗�</div>
-                    <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 4">鐩樼偣鍗�</div>
-                    <div class="page_info_list_item_nr" v-else>-</div>
-                </div>
-<!--                <div class="page_info_list_item">-->
-<!--                    <div class="page_info_list_item_label">鐢抽宸ュ簭锛�</div>-->
-<!--                    <div class="page_info_list_item_nr">{{info.woutbound.procedureName ? info.woutbound.procedureName : '-'}}</div>-->
-<!--                </div>-->
-                <div class="page_info_list_item">
-                    <div class="page_info_list_item_label">鏉ユ簮鍗曞彿锛�</div>
-                    <div class="page_info_list_item_nr">{{info.woutbound.originCode ? info.woutbound.originCode : '-'}}</div>
-                </div>
-                <div class="page_info_list_item">
-                    <div class="page_info_list_item_label">鐢宠浜哄憳锛�</div>
-                    <div class="page_info_list_item_nr">{{info.woutbound.userName}}/{{info.woutbound.userDepartName}}</div>
-                </div>
-                <div class="page_info_list_item">
-                    <div class="page_info_list_item_label">鐢宠鏃堕棿锛�</div>
-                    <div class="page_info_list_item_nr">{{info.woutbound.createTime ? info.woutbound.createTime : '-'}}</div>
-                </div>
-            </div>
-            <div class="page_info_bz" v-if="info.woutbound.abstracts">
-                <div class="page_info_bz_title">杞簱澶囨敞锛�</div>
-                <div class="page_info_bz_nr">{{info.woutbound.abstracts}}</div>
-            </div>
+        <!--                <div class="page_info_list_item">-->
+        <!--                    <div class="page_info_list_item_label">鐢抽宸ュ簭锛�</div>-->
+        <!--                    <div class="page_info_list_item_nr">{{info.wtransfer.procedureName ? info.wtransfer.procedureName : '-'}}</div>-->
+        <!--                </div>-->
+        <div class="page_info_list_item">
+          <div class="page_info_list_item_label">鏉ユ簮鍗曞彿锛�</div>
+          <div class="page_info_list_item_nr">{{ info.wtransfer.originCode ? info.wtransfer.originCode : '-' }}</div>
         </div>
-        <div class="page_h"></div>
-        <!--    鎵撳紑閫夋嫨宸ヨ    -->
-<!--        <div class="switch" v-if="type === QRCodeType.ZKD.toString()">-->
-<!--            <button @click="openxz"><img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="">鎵嬪姩閫夋嫨</button>-->
-<!--        </div>-->
-<!--        <div class="page_h" v-if="type === QRCodeType.ZKD.toString()"></div>-->
-        <!--    寰呭嚭鐗╂枡    -->
-        <van-collapse v-model="activeNames">
-            <!--        杞簱鍗曪紙澶氫釜浠撳簱锛�        -->
-            <template v-if="route.query.type == 7">
-                <van-collapse-item :name="String(index + 1 )" v-for="(item, index) in info.wtransferWarehouseList" :key="index">
-                    <template #title>
-                        <div class="page_sfq"><img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{item.warehouseName}}</div>
-                    </template>
-                    <div class="page_dck">
-                        <div class="page_dck_title">
-                            <div class="page_dck_title_x"></div>
-                            <span>寰呭嚭搴撶墿鏂�</span>
-                        </div>
-                    </div>
-                    <div class="page_content" v-for="(items, idx) in item.wtransferDetailList" :key="idx">
-                        <div class="page_content_title">
-                            <div class="page_content_title_top">
-                                <span>{{items.materialName}} | {{items.materialCode}}</span>
-                                <span>寰呭嚭 <span>{{items.outPlannum}}</span> {{items.unitName}}</span>
-                            </div>
-                            <div class="page_content_title_bottom">
-                                <span class="green" v-if="items.qualityType === 0">鍚堟牸 / </span>
-                                <span class="warning" v-else-if="items.qualityType === 1">涓嶈壇&nbsp;/&nbsp;</span>
-                                <span class="error" v-else-if="items.qualityType === 2">鎶ュ簾 /&nbsp;</span>
-                                <span v-else>-&nbsp;/&nbsp;</span>
-                                <span>{{items.procedureName ? items.procedureName : '-'}}&nbsp;/&nbsp;</span>
-                                <span>{{items.batch ? items.batch : '-'}}</span>
-                            </div>
-                        </div>
-                        <div class="page_content_list" v-for="(childer, idxs) in items.wstockExtListVOList" :key="idxs">
-                          <div class="page_content_list_item">
-                            <div class="page_content_list_item_label">鍑哄簱璐т綅锛�</div>
-                            <div class="page_content_list_item_nr">{{childer.locationName}}</div>
-                          </div>
-                          <div class="page_content_list_items">
-                            <div class="page_content_list_item_label">鏁伴噺锛�</div>
-                            <div class="page_content_list_item_nr">{{childer.num}}{{childer.unitName}}</div>
-                          </div>
-                          <div class="page_content_list_item">
-                            <div class="page_content_list_item_label">鎵规鍙凤細</div>
-                            <div class="page_content_list_item_nr">{{childer.batch ? childer.batch : '-'}}</div>
-                          </div>
-                        </div>
-                    </div>
-                </van-collapse-item>
-            </template>
-            <!--        鍑哄簱鍗曪紙涓�涓粨搴擄級        -->
-            <template v-if="route.query.type == 8">
-                <van-collapse-item name="1">
-                    <template #title>
-                        <div class="page_sfq" v-if="info.woutbound">
-                            <img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{info.woutbound.warehouseName}}
-                        </div>
-                    </template>
-                    <div class="page_dck">
-                        <div class="page_dck_title">
-                            <div class="page_dck_title_x"></div>
-                            <span>寰呭嚭搴撶墿鏂�</span>
-                        </div>
-                    </div>
-                    <div class="page_content" v-for="(item, index) in info.woutboundDetailsWait" :key="index">
-                        <div class="page_content_title">
-<!--                            <span>{{item.materialName}} | {{item.materialCode}}</span>-->
-<!--                            <span>寰呭嚭 <span>{{item.num}}</span> {{item.unitName}}</span>-->
-                            <div class="page_content_title_top">
-                                <span>{{item.materialName}} | {{item.materialCode}}</span>
-                                <span>寰呭嚭 <span>{{item.num}}</span> {{item.unitName}}</span>
-                            </div>
-                            <div class="page_content_title_bottom">
-                                <span class="green" v-if="item.qualityType === 0">鍚堟牸&nbsp;/&nbsp;</span>
-                                <span class="warning" v-else-if="item.qualityType === 1">涓嶈壇&nbsp;/&nbsp;</span>
-                                <span class="error" v-else-if="item.qualityType === 2">鎶ュ簾&nbsp;/&nbsp;</span>
-                                <span v-else>-&nbsp;/&nbsp;</span>
-                                <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</span>
-                                <span>{{item.batch ? item.batch : '-'}}</span>
-                            </div>
-                        </div>
-                        <div class="page_content_list" v-for="(items, ind) in item.wstockExtListVOList" :key="ind">
-                            <div class="page_content_list_item">
-                                <div class="page_content_list_item_label">鎵规鍙凤細</div>
-                                <div class="page_content_list_item_nr">{{items.batch ? items.batch : '-'}}</div>
-                            </div>
-                            <div class="page_content_list_items">
-                                <div class="page_content_list_item_label">鏁伴噺锛�</div>
-                                <div class="page_content_list_item_nr">{{items.num}}{{items.umodel.name}}</div>
-                            </div>
-                            <div class="page_content_list_item" v-if="items.lmodel">
-                                <div class="page_content_list_item_label">鍑哄簱璐т綅锛�</div>
-                                <div class="page_content_list_item_nr">{{items.lmodel.unionName}}</div>
-                            </div>
-                        </div>
-                    </div>
-                </van-collapse-item>
-            </template>
-        </van-collapse>
-        <div class="page_h"></div>
-        <!--    宸查�夌墿鏂�    -->
-        <div class="page_yxwl">
-            <!--        杞簱鍗曪紙澶氫釜浠撳簱锛�        -->
-            <!-- <template v-if="route.query.type == 7">
+        <div class="page_info_list_item">
+          <div class="page_info_list_item_label">鐢宠浜哄憳锛�</div>
+          <div class="page_info_list_item_nr">{{ info.wtransfer.outUserName }}/{{ info.wtransfer.outDepartName }}</div>
+        </div>
+        <div class="page_info_list_item">
+          <div class="page_info_list_item_label">鍏ュ簱鎺ユ敹浜猴細</div>
+          <div class="page_info_list_item_nr">{{ info.wtransfer.inUserName }}</div>
+        </div>
+        <div class="page_info_list_item">
+          <div class="page_info_list_item_label">鐢宠鏃堕棿锛�</div>
+          <div class="page_info_list_item_nr">{{ info.wtransfer.createTime ? info.wtransfer.createTime : '-' }}</div>
+        </div>
+      </div>
+      <div class="page_info_bz" v-if="info.wtransfer.abstracts">
+        <div class="page_info_bz_title">杞簱澶囨敞锛�</div>
+        <div class="page_info_bz_nr">{{ info.wtransfer.abstracts }}</div>
+      </div>
+    </div>
+    <!--    澶撮儴淇℃伅(鍑哄簱鍗�)    -->
+    <div class="page_info" v-if="info.woutbound && route.query.type == 8">
+      <div class="page_info_title">璁″垝鍑哄簱鏃ユ湡锛歿{ info.woutbound.planDate }}</div>
+      <div class="page_info_list">
+        <div class="page_info_list_item">
+          <div class="page_info_list_item_label">鏉ユ簮绫诲瀷锛�</div>
+          <div class="page_info_list_item_nr" v-if="info.woutbound.originType === 0">閲囪喘璁㈠崟</div>
+          <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 1">鐢熶骇宸ュ崟</div>
+          <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 2">閿�鍞鍗�</div>
+          <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 3">杞簱鍗�</div>
+          <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 4">鐩樼偣鍗�</div>
+          <div class="page_info_list_item_nr" v-else>-</div>
+        </div>
+        <!--                <div class="page_info_list_item">-->
+        <!--                    <div class="page_info_list_item_label">鐢抽宸ュ簭锛�</div>-->
+        <!--                    <div class="page_info_list_item_nr">{{info.woutbound.procedureName ? info.woutbound.procedureName : '-'}}</div>-->
+        <!--                </div>-->
+        <div class="page_info_list_item">
+          <div class="page_info_list_item_label">鏉ユ簮鍗曞彿锛�</div>
+          <div class="page_info_list_item_nr">{{ info.woutbound.originCode ? info.woutbound.originCode : '-' }}</div>
+        </div>
+        <div class="page_info_list_item">
+          <div class="page_info_list_item_label">鐢宠浜哄憳锛�</div>
+          <div class="page_info_list_item_nr">{{ info.woutbound.userName }}/{{ info.woutbound.userDepartName }}</div>
+        </div>
+        <div class="page_info_list_item">
+          <div class="page_info_list_item_label">鐢宠鏃堕棿锛�</div>
+          <div class="page_info_list_item_nr">{{ info.woutbound.createTime ? info.woutbound.createTime : '-' }}</div>
+        </div>
+      </div>
+      <div class="page_info_bz" v-if="info.woutbound.abstracts">
+        <div class="page_info_bz_title">杞簱澶囨敞锛�</div>
+        <div class="page_info_bz_nr">{{ info.woutbound.abstracts }}</div>
+      </div>
+    </div>
+    <div class="page_h"></div>
+    <!--    鎵撳紑閫夋嫨宸ヨ    -->
+    <!--        <div class="switch" v-if="type === QRCodeType.ZKD.toString()">-->
+    <!--            <button @click="openxz"><img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="">鎵嬪姩閫夋嫨</button>-->
+    <!--        </div>-->
+    <!--        <div class="page_h" v-if="type === QRCodeType.ZKD.toString()"></div>-->
+    <!--    寰呭嚭鐗╂枡    -->
+    <van-collapse v-model="activeNames">
+      <!--        杞簱鍗曪紙澶氫釜浠撳簱锛�        -->
+      <template v-if="route.query.type == 7">
+        <van-collapse-item :name="String(index + 1)" v-for="(item, index) in info.wtransferWarehouseList" :key="index">
+          <template #title>
+            <div class="page_sfq"><img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{ item.warehouseName }}</div>
+          </template>
+          <div class="page_dck">
+            <div class="page_dck_title">
+              <div class="page_dck_title_x"></div>
+              <span>寰呭嚭搴撶墿鏂�</span>
+            </div>
+          </div>
+          <div class="page_content" v-for="(items, idx) in item.wtransferDetailList" :key="idx">
+            <div class="page_content_title">
+              <div class="page_content_title_top">
+                <span>{{ items.materialName }} | {{ items.materialCode }}</span>
+                <span>寰呭嚭 <span>{{ items.outPlannum }}</span> {{ items.unitName }}</span>
+              </div>
+              <div class="page_content_title_bottom">
+                <span class="green" v-if="items.qualityType === 0">鍚堟牸 / </span>
+                <span class="warning" v-else-if="items.qualityType === 1">涓嶈壇&nbsp;/&nbsp;</span>
+                <span class="error" v-else-if="items.qualityType === 2">鎶ュ簾 /&nbsp;</span>
+                <span v-else>-&nbsp;/&nbsp;</span>
+                <span>{{ items.procedureName ? items.procedureName : '-' }}&nbsp;/&nbsp;</span>
+                <span>{{ items.batch ? items.batch : '-' }}</span>
+              </div>
+            </div>
+            <div class="page_content_list" v-for="(childer, idxs) in items.wstockExtListVOList" :key="idxs">
+              <div class="page_content_list_item">
+                <div class="page_content_list_item_label">鍑哄簱璐т綅锛�</div>
+                <div class="page_content_list_item_nr">{{ childer.locationName }}</div>
+              </div>
+              <div class="page_content_list_items">
+                <div class="page_content_list_item_label">鏁伴噺锛�</div>
+                <div class="page_content_list_item_nr">{{ childer.num }}{{ childer.unitName }}</div>
+              </div>
+              <div class="page_content_list_item">
+                <div class="page_content_list_item_label">鎵规鍙凤細</div>
+                <div class="page_content_list_item_nr">{{ childer.batch ? childer.batch : '-' }}</div>
+              </div>
+            </div>
+          </div>
+        </van-collapse-item>
+      </template>
+      <!--        鍑哄簱鍗曪紙涓�涓粨搴擄級        -->
+      <template v-if="route.query.type == 8">
+        <van-collapse-item name="1">
+          <template #title>
+            <div class="page_sfq" v-if="info.woutbound">
+              <img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{ info.woutbound.warehouseName }}
+            </div>
+          </template>
+          <div class="page_dck">
+            <div class="page_dck_title">
+              <div class="page_dck_title_x"></div>
+              <span>寰呭嚭搴撶墿鏂�</span>
+            </div>
+          </div>
+          <div class="page_content" v-for="(item, index) in info.woutboundDetailsWait" :key="index">
+            <div class="page_content_title">
+              <!--                            <span>{{item.materialName}} | {{item.materialCode}}</span>-->
+              <!--                            <span>寰呭嚭 <span>{{item.num}}</span> {{item.unitName}}</span>-->
+              <div class="page_content_title_top">
+                <span>{{ item.materialName }} | {{ item.materialCode }}</span>
+                <span>寰呭嚭 <span>{{ item.num }}</span> {{ item.unitName }}</span>
+              </div>
+              <div class="page_content_title_bottom">
+                <span class="green" v-if="item.qualityType === 0">鍚堟牸&nbsp;/&nbsp;</span>
+                <span class="warning" v-else-if="item.qualityType === 1">涓嶈壇&nbsp;/&nbsp;</span>
+                <span class="error" v-else-if="item.qualityType === 2">鎶ュ簾&nbsp;/&nbsp;</span>
+                <span v-else>-&nbsp;/&nbsp;</span>
+                <span>{{ item.procedureName ? item.procedureName : '-' }}&nbsp;/&nbsp;</span>
+                <span>{{ item.batch ? item.batch : '-' }}</span>
+              </div>
+            </div>
+            <div class="page_content_list" v-for="(items, ind) in item.wstockExtListVOList" :key="ind">
+              <div class="page_content_list_item">
+                <div class="page_content_list_item_label">鎵规鍙凤細</div>
+                <div class="page_content_list_item_nr">{{ items.batch ? items.batch : '-' }}</div>
+              </div>
+              <div class="page_content_list_items">
+                <div class="page_content_list_item_label">鏁伴噺锛�</div>
+                <div class="page_content_list_item_nr">{{ items.num }}{{ items.umodel.name }}</div>
+              </div>
+              <div class="page_content_list_item" v-if="items.lmodel">
+                <div class="page_content_list_item_label">鍑哄簱璐т綅锛�</div>
+                <div class="page_content_list_item_nr">{{ items.lmodel.unionName }}</div>
+              </div>
+            </div>
+          </div>
+        </van-collapse-item>
+      </template>
+    </van-collapse>
+    <div class="page_h"></div>
+    <!--    宸查�夌墿鏂�    -->
+    <div class="page_yxwl">
+      <!--        杞簱鍗曪紙澶氫釜浠撳簱锛�        -->
+      <!-- <template v-if="route.query.type == 7">
                 <div class="page_yxwl_title">
                     <div class="left">
                         <div class="page_yxwl_title_x"></div>
@@ -225,844 +225,917 @@
                 </div>
                 <div class="page_yxwl_kong" v-else><span>鏆傛棤鏁版嵁</span></div>
             </template> -->
-            <!--        鍑哄簱鍗曪紙涓�涓粨搴擄級        -->
-            <!-- <template v-if="route.query.type == 8"> -->
-                <div class="page_yxwl_title">
-<!--                    <div class="page_yxwl_title_x"></div>-->
-<!--                    <span>宸查�夋嫨鐗╂枡</span>-->
-                    <div class="left">
-                        <div class="page_yxwl_title_x"></div>
-                        <span>宸查�夋嫨鐗╂枡</span>
-                    </div>
-                    <div class="right" @click="openxz">
-                        <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""><span>鎵嬪姩鍑哄簱</span>
-                    </div>
-                    <!-- <div></div> -->
-                </div>
-                <div class="page_yxwl_list" v-if="outboundList.length > 0">
-                    <!-- <template> -->
-                        <div class="page_yxwl_list_item" v-for="(item, index) in outboundList" :key="index">
-                            <div class="page_yxwl_list_item_top">
-                                <div class="page_yxwl_list_item_top_left">{{ item.materialName }} | {{ item.materialCode }} </div>
-                                <!-- <div class="page_yxwl_list_item_top_right">
+      <!--        鍑哄簱鍗曪紙涓�涓粨搴擄級        -->
+      <!-- <template v-if="route.query.type == 8"> -->
+      <div class="page_yxwl_title">
+        <!--                    <div class="page_yxwl_title_x"></div>-->
+        <!--                    <span>宸查�夋嫨鐗╂枡</span>-->
+        <div class="left">
+          <div class="page_yxwl_title_x"></div>
+          <span>宸查�夋嫨鐗╂枡</span>
+        </div>
+        <div class="right" @click="openxz">
+          <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""><span>鎵嬪姩鍑哄簱</span>
+        </div>
+        <!-- <div></div> -->
+      </div>
+      <div class="page_yxwl_list" v-if="outboundList.length > 0">
+        <!-- <template> -->
+        <div class="page_yxwl_list_item" v-for="(item, index) in outboundList" :key="index">
+          <div class="page_yxwl_list_item_top">
+            <div class="page_yxwl_list_item_top_left">{{ item.materialName }} | {{ item.materialCode }} </div>
+            <!-- <div class="page_yxwl_list_item_top_right">
                                     <span>宸查�夛細<span>{{item.outPlannum}}</span> {{item.unitName}}</span>
                                 </div> -->
-                            </div>
-                            <div class="page_yxwl_list_item_sx">
-                                <span class="green" v-if="item.qualityType == 0">鍚堟牸&nbsp;<span>/</span></span>
-                                <span class="yellow" v-else-if="item.qualityType == 1">涓嶈壇&nbsp;<span>/</span></span>
-                                <span class="red" v-else-if="item.qualityType == 2">鎶ュ簾&nbsp;<span>/</span></span>
-                                <span v-else>-&nbsp;/&nbsp;</span>
-                                <span>&nbsp;{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</span>
-                                <span>&nbsp;{{item.batch ? item.batch : '-'}}</span>
-                            </div>
-                            <div class="page_yxwl_list_item_num">
-                                <div class="item">
-                                    <div class="label">鍑哄簱璐т綅锛�</div>
-                                    <div class="nr">
-                                        <span>{{ item.locationName }}</span>
-                                    </div>
-                                </div>
-                                <div class="item">
-                                    <div class="label">鏁伴噺锛�</div>
-                                    <div class="nr">
-                                        <!-- @input="changeNum(item)" -->
-                                        <input type="number" v-model="item.num" placeholder="璇疯緭鍏�">
-                                        <span>{{ item.unitName }}</span>
-                                    </div>
-                                </div>
-                                <div class="dele" @click="dele(index)">
-                                    <img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" />
-                                </div>
-                            </div>
-                        </div>
-                    <!-- </template> -->
-                </div>
-                <div class="page_yxwl_kong" v-else><span>鏆傛棤鏁版嵁</span></div>
-            <!-- </template> -->
+          </div>
+          <div class="page_yxwl_list_item_sx">
+            <span class="green" v-if="item.qualityType == 0">鍚堟牸&nbsp;<span>/</span></span>
+            <span class="yellow" v-else-if="item.qualityType == 1">涓嶈壇&nbsp;<span>/</span></span>
+            <span class="red" v-else-if="item.qualityType == 2">鎶ュ簾&nbsp;<span>/</span></span>
+            <span v-else>-&nbsp;/&nbsp;</span>
+            <span>&nbsp;{{ item.procedureName ? item.procedureName : '-' }}&nbsp;/&nbsp;</span>
+            <span>&nbsp;{{ item.batch ? item.batch : '-' }}</span>
+          </div>
+          <div class="page_yxwl_list_item_num">
+            <div class="item">
+              <div class="label">鍑哄簱璐т綅锛�</div>
+              <div class="nr">
+                <span>{{ item.locationName }}</span>
+              </div>
+            </div>
+            <div class="item">
+              <div class="label">鏁伴噺锛�</div>
+              <div class="nr">
+                <!-- @input="changeNum(item)" -->
+                <input type="number" v-model="item.num" placeholder="璇疯緭鍏�">
+                <span>{{ item.unitName }}</span>
+              </div>
+            </div>
+            <div class="dele" @click="dele(index)">
+              <img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" />
+            </div>
+          </div>
         </div>
-        <div class="page_zw"></div>
-        <!--    鎿嶄綔鎸夐挳    -->
-        <div class="page_footer">
-            <button class="page_footer_qrck" v-preventReClick @click="submit">
-                <span>纭鍑哄簱</span>
-            </button>
-        </div>
-        <Access :show="show" :transferId="(route.query.id as string)" :warehouseId="warehouseId" @close="closeBox" @value="getValue" />
+        <!-- </template> -->
+      </div>
+      <div class="page_yxwl_kong" v-else><span>鏆傛棤鏁版嵁</span></div>
+      <!-- </template> -->
     </div>
+    <div class="page_zw"></div>
+    <!--    鎿嶄綔鎸夐挳    -->
+    <div class="page_footer">
+      <button class="page_footer_qrck" v-preventReClick @click="submit">
+        <span>纭鍑哄簱</span>
+      </button>
+    </div>
+    <Access :show="show" :transferId="(route.query.id as string)" :warehouseId="warehouseId" @close="closeBox"
+      @value="getValue" />
+  </div>
 </template>
 
 <script setup lang="ts">
-    import { ref, onMounted } from 'vue'
-    import { useRoute, useRouter } from "vue-router"
-    import { Toast } from 'vant'
-    import { QRCodeType } from '@/enum'
-    import {
-        outScanAppliances,
-        wTransferForInOut,
-        wTransferForInOutUpload,
-        wOutBoundForInOut,
-        wOutBoundForUpload,
-        transferToOutNew
-    } from '@/apis/ExWarehouse'
-    import { useStore } from 'vuex'
-    import { getDB } from '@/apis/agencyAPI'
-    import Access from '@/components/common/Access.vue'
+import { ref, onMounted } from 'vue'
+import { useRoute, useRouter } from "vue-router"
+import { Toast } from 'vant'
+import { QRCodeType } from '@/enum'
+import {
+  outScanAppliances,
+  wTransferForInOut,
+  wTransferForInOutUpload,
+  wOutBoundForInOut,
+  wOutBoundForUpload,
+  transferToOutNew
+} from '@/apis/ExWarehouse'
+import { useStore } from 'vuex'
+import { getDB } from '@/apis/agencyAPI'
+import Access from '@/components/common/Access.vue'
 
-    const route = useRoute()
-    const store = useStore()
-    const router = useRouter()
+const route = useRoute()
+const store = useStore()
+const router = useRouter()
 
-    let dataItem: any = null    // 宸叉壂鏁版嵁
+let dataItem: any = null    // 宸叉壂鏁版嵁
 
-    let show = ref<boolean>(false)
-    let ids = ref<string>('')   // 宸查��
-    let warehouseId = ref('')  // 浠撳簱id
-    let outboundList = ref<any[]>([])  // 鍑哄簱鏁版嵁
-    // 鎺у埗鎵爜鏄剧ず闅愯棌
-    const openCode = ref<boolean>(false)
+let show = ref<boolean>(false)
+let ids = ref<string>('')   // 宸查��
+let warehouseId = ref('')  // 浠撳簱id
+let outboundList = ref<any[]>([])  // 鍑哄簱鏁版嵁
+// 鎺у埗鎵爜鏄剧ず闅愯棌
+const openCode = ref<boolean>(false)
 
-    // 鍑哄簱绫诲瀷
-    let type: any = route.query.type
+// 鍑哄簱绫诲瀷
+let type: any = route.query.type
 
-    const activeNames = ref(['1']);
+const activeNames = ref(['1']);
 
-    // 璇︽儏鏁版嵁
-    let info: any = ref({})
+// 璇︽儏鏁版嵁
+let info: any = ref({})
 
-    // 鎵撳紑鎵嬪姩閫夋嫨宸ヨ寮规
-    const openxz = () => {
-        let arr: any = []
-        if (info.value.wtransferRedisCodeBeanList.length !== 0) {
-            info.value.wtransferRedisCodeBeanList.forEach((element: any) => {
-                arr.push(element.appliancesId)
-            })
-            ids.value = arr.join(',')
-        } else {
-            ids.value = ''
-        }
-        show.value = true
-    }
-
-    const closeBox = () => {
-        show.value = false
-    }
-
-    const changeNum = (item: any) => {
-        info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((row: any) => {
-            if (row.materialId === item.materialId) {
-                if (Number(item.num) > Number(row.outPlannum)) {
-                    item.num = 0
-                    Toast.fail({ message: "鍑哄簱鐗╂枡鏁伴噺涓嶈兘澶т簬寰呭嚭搴撶墿鏂欐暟閲�" })
-                }
-            }
-        })
-    }
-
-    // 鎻愪氦宸ヨ
-    const getValue = async (val: any, i: number) => {
-        // if (i === 0) {
-        show.value = false
-        // }
-        
-
-        for (let i = 0; i < info.value.wtransferWarehouseList[0].wtransferDetailList.length; i++) {
-            if (info.value.wtransferWarehouseList[0].wtransferDetailList[i].materialId == val.materialId &&
-            info.value.wtransferWarehouseList[0].wtransferDetailList[i].procedureId == val.procedureId &&
-            info.value.wtransferWarehouseList[0].wtransferDetailList[i].qualityType == val.qualityType &&
-            info.value.wtransferWarehouseList[0].wtransferDetailList[i].batch == val.batch) {
-
-                for (let s = 0; s < outboundList.value.length; s++) {
-                    if (outboundList.value[s].newId == info.value.wtransferWarehouseList[0].wtransferDetailList[i].id) {
-                        return Toast.fail({ message: "璇ョ墿鏂欐壒娆″凡瀛樺湪" })
-                    }
-                }
-
-                let obj = JSON.parse(JSON.stringify(val))
-                obj.newId = info.value.wtransferWarehouseList[0].wtransferDetailList[i].id
-                outboundList.value.push(obj)
-
-            }
-        }
-
-        console.log(outboundList.value)
-        // let res = await outScanAppliances({
-        //     barCode: val.prefix + val.code,
-        //     pId: info.value.wtransfer.id,
-        //     type: 1
-        // })
-        // if (res.code === 200) {
-        //     let isData: string = ''
-        //     info.value.wtransferWarehouseList.forEach((item: any) => {
-        //         if (res.data.warehouseId === item.warehouseId) {
-        //             item.wtransferDetailList.forEach((item1: any) => {
-        //                 if (item1.materialId !== res.data.materialId) {
-        //                     isData = 'wl'
-        //                 } else if (res.data.qualityType !== item1.qualityType) {
-        //                     isData = 'lx'
-        //                 } else if (res.data.procedureId !== item1.procedureId) {
-        //                     isData = 'gx'
-        //                 } else if (item1.batch ? res.data.batch !== item1.batch : false) {
-        //                     isData = 'pc'
-        //                 } else {
-        //                     isData = ''
-        //                 }
-        //                 if (item1.materialId == res.data.materialId && res.data.qualityType == item1.qualityType && res.data.procedureId == item1.procedureId && item1.batch ? res.data.batch == item1.batch : true) {
-        //                     dataItem = res.data
-        //                     dataItem.wtransferDetailId = item1.id
-        //                     dataItem.wtransferId = item1.transferId
-        //                     dataItem.appliancesId = res.data.id
-        //                     let rul = upload()
-        //                     return;
-        //                 }
-        //             })
-        //         } else {
-        //             isData = 'ck'
-        //         }
-        //         if (isData === 'ck') {
-        //             Toast.fail({ message: "浠撳簱涓嶄竴鑷�" })
-        //         } else if (isData === 'wl') {
-        //             Toast.fail({ message: "鐗╂枡涓嶄竴鑷�" })
-        //         } else if (isData === 'lx') {
-        //             Toast.fail({ message: "璐ㄩ噺绫诲瀷涓嶄竴鑷�" })
-        //         } else if (isData === 'gx') {
-        //             Toast.fail({ message: "宸ュ簭涓嶄竴鑷�" })
-        //         } else if (isData === 'pc') {
-        //             Toast.fail({ message: "鎵规涓嶄竴鑷�" })
-        //         }
-        //     })
-        // }
-        // show.value = false
-    }
-
-    // 鑾峰彇璇︽儏 (杞簱鍗�/鍑哄簱鍗�)
-    const getInfo = () => {
-        let type: string = route.query.type as string
-        if (type === QRCodeType.CKD.toString()) {
-            console.log('鍑哄簱鍗�')
-            wOutBoundForInOut({
-                id: Number(route.query.id),
-                wOutboundType: 0
-            }).then(res => {
-                if (res.code === 200) {
-                    info.value = res.data
-                    warehouseId.value = info.value.wtransferWarehouseList[0].warehouseId.toString()
-                } else {
-                    Toast.fail({ message: res.message, forbidClick: true, duration: 2000 })
-                    setTimeout(() => {
-                        router.go(-1)
-                    }, 2000)
-                }
-            })
-        } else if (type === QRCodeType.ZKD.toString()) {
-            console.log('杞簱鍗�')
-            wTransferForInOut({
-                id: Number(route.query.id),
-                wTransferType: 0
-            }).then(res => {
-                if (res.code === 200) {
-                    info.value = res.data
-                    warehouseId.value = info.value.wtransferWarehouseList[0].warehouseId.toString()
-                } else {
-                    Toast.fail({ message: res.message, forbidClick: true, duration: 2000 })
-                    setTimeout(() => {
-                        router.go(-1)
-                    }, 2000)
-                }
-            })
-        }
-    }
-
-    // 鍒犻櫎瀵瑰簲鐨勬壒娆�
-    const dele = (index: Number) => {
-        outboundList.value.forEach((item: any, i: number) => {
-            if (index === i) {
-                outboundList.value.splice(i, 1)
-            }
-        })
-    }
-
-    // 涓婁紶宸ヨ
-    const upload = () => {
-        if (type === QRCodeType.ZKD.toString()) {
-            wTransferForInOut({
-                id: Number(route.query.id),
-                optType: 1,
-                wTransferType: 0,
-                jsonBean: dataItem
-            }).then(res => {
-                if (res.code === 200) {
-                    getInfo()
-                }
-            })
-        } else if (type === QRCodeType.CKD.toString()) {
-            wOutBoundForInOut({
-                id: Number(route.query.id),
-                optType: 1,
-                wOutboundType: 0,
-                jsonBean: dataItem
-            }).then(res => {
-                if (res.code === 200) {
-                    getInfo()
-                }
-            })
-        }
-    }
-
-    // 鐐瑰嚮鎵爜鍑哄簱
-    const ck = () => {
-        openCode.value = true
-    }
-
-    // 鎻愪氦鎿嶄綔
-    const submit = () => {
-        if (type === QRCodeType.ZKD.toString()) {
-            if (outboundList.value.length > 0) {
-                let result = outboundList.value.reduce((a, b) => {
-                    if (a[b.newId]) {
-                        a[b.newId].push(b);
-                    } else {
-                        a[b.newId] = [b];
-                    }
-                    return a;
-                }, {});
-
-                for (let i = 0; i < info.value.wtransferWarehouseList[0].wtransferDetailList.length; i++) {
-                    for (let a in result) {
-                        if (info.value.wtransferWarehouseList[0].wtransferDetailList[i].id == a) {
-                            let total = 0
-                            for (let b = 0; b < result[a].length; b++) {
-                                total = Number(total) + Number(result[a][b].num)
-                            }
-                            console.log(total, info.value.wtransferWarehouseList[0].wtransferDetailList[i].outPlannum)
-                            if (!total || total <= 0) {
-                                return Toast.fail({ message: '鍑哄簱鐗╂枡鏁伴噺蹇呴』澶т簬0', forbidClick: true, duration: 2000 })
-                            }
-                            if (total > info.value.wtransferWarehouseList[0].wtransferDetailList[i].outPlannum) {
-                                return Toast.fail({ message: '鍑哄簱鏁伴噺涓嶈兘澶т簬寰呭嚭搴撴暟閲�', forbidClick: true, duration: 2000 })
-                            }
-                        }
-                    }
-                }
-
-                let submitTransferOutDetailDTOList: any = []
-                outboundList.value.forEach((item: any) => {
-                    info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((child: any) => {
-                        if (item.newId == child.id) {
-                            submitTransferOutDetailDTOList.push({
-                                outNum: item.num,
-                                wstockId: item.id,
-                                wtransferDetailId: child.id
-                            })
-                        }
-                    })
-                })
-                transferToOutNew({
-                    submitTransferOutDetailDTOList,
-                    wtransferId: route.query.id
-                }).then(res => {
-                    if (res.code === 200) {
-                        store.dispatch('getUpcomingNum')
-                        Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
-                        setTimeout(() => {
-                            router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
-                        }, 2000)
-                    }
-                })
-            } else {
-                Toast.fail({ message: '璇烽�夋嫨鍑哄簱鐗╂枡', forbidClick: true, duration: 2000 })
-            }
-            // let yx: number = 0
-            // let dc: number = 0
-            // info.value.wtransferRedisCodeBeanList.forEach((element: any) => {
-            //     yx = yx + element.num
-            // })
-            // info.value.wtransferWarehouseList.forEach((element: any) => {
-            //     element.wtransferDetailList.forEach((elementChilder: any) => {
-            //         dc = dc + elementChilder.outPlannum
-            //     })
-            // })
-            // if (yx < dc) {
-            //     Dialog.confirm({
-            //         title: '鎻愮ず',
-            //         message: '寰呭嚭鐗╂枡涓庡凡鍑虹墿鏂欐暟閲忎笉涓�鑷达紝鏄惁纭鍑哄簱',
-            //     })
-            //     .then(() => {
-            //         wTransferForInOutUpload({
-            //             id: info.value.wtransfer.id,
-            //             wTransferType: 0
-            //         }).then(res => {
-            //             if (res.code === 200) {
-            //                 store.dispatch('getUpcomingNum')
-            //                 Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
-            //                 setTimeout(() => {
-            //                     // router.go(-1)
-            //                     router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
-            //                 }, 2000)
-            //             }
-            //         })
-            //         return
-            //     })
-            //     .catch(() => {
-
-            //     });
-            // } else {
-            //     wTransferForInOutUpload({
-            //         id: info.value.wtransfer.id,
-            //         wTransferType: 0
-            //     }).then(res => {
-            //         if (res.code === 200) {
-            //             store.dispatch('getUpcomingNum')
-            //             Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
-            //             setTimeout(() => {
-            //                 // router.go(-1)
-            //                 router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
-            //             }, 2000)
-            //         }
-            //     })
-            // }
-        } else if (type === QRCodeType.CKD.toString()) {
-            wOutBoundForUpload({
-                id: info.value.woutbound.id,
-                wOutboundType: 0
-            }).then(res => {
-                if (res.code === 200) {
-                    store.dispatch('getUpcomingNum')
-                    Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
-                    setTimeout(() => {
-                        // router.go(-1)
-                        router.replace({ name: 'wOutboundDetail', query: { id: info.value.wtransfer.id } })
-                    }, 2000)
-                }
-            })
-        }
-    }
-
-    // 鑾峰彇寰呭姙璇︽儏(鍒ゆ柇褰撳墠寰呭姙鏄惁宸插鐞�)
-    const getDBs = async (id: string): Promise<any> => {
-        let res = await getDB(id)
-        if (res.code === 200) {
-            if (res.data.status === 1) {
-                if (type === QRCodeType.CKD.toString()) {
-                    await router.replace({ name: 'wOutboundDetail', query: { id: route.query.id } })
-                } else if (type === QRCodeType.ZKD.toString()) {
-                    await router.replace({ name: 'wTransferDetail', query: { id: route.query.id } })
-                }
-            } else {
-                await getInfo()
-            }
-        }
-    }
-
-    onMounted(() => {
-        if (route.query.dbid) {
-            getDBs(route.query.dbid as string)
-        } else {
-            getInfo()
-        }
+// 鎵撳紑鎵嬪姩閫夋嫨宸ヨ寮规
+const openxz = () => {
+  let arr: any = []
+  if (info.value.wtransferRedisCodeBeanList.length !== 0) {
+    info.value.wtransferRedisCodeBeanList.forEach((element: any) => {
+      arr.push(element.appliancesId)
     })
+    ids.value = arr.join(',')
+  } else {
+    ids.value = ''
+  }
+  show.value = true
+}
+
+const closeBox = () => {
+  show.value = false
+}
+
+const changeNum = (item: any) => {
+  info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((row: any) => {
+    if (row.materialId === item.materialId) {
+      if (Number(item.num) > Number(row.outPlannum)) {
+        item.num = 0
+        Toast.fail({ message: "鍑哄簱鐗╂枡鏁伴噺涓嶈兘澶т簬寰呭嚭搴撶墿鏂欐暟閲�" })
+      }
+    }
+  })
+}
+
+// 鎻愪氦宸ヨ
+const getValue = async (val: any, i: number) => {
+  // if (i === 0) {
+  show.value = false
+  // }
+
+
+  for (let i = 0; i < info.value.wtransferWarehouseList[0].wtransferDetailList.length; i++) {
+    if (info.value.wtransferWarehouseList[0].wtransferDetailList[i].materialId == val.materialId &&
+      info.value.wtransferWarehouseList[0].wtransferDetailList[i].procedureId == val.procedureId &&
+      info.value.wtransferWarehouseList[0].wtransferDetailList[i].qualityType == val.qualityType &&
+      info.value.wtransferWarehouseList[0].wtransferDetailList[i].batch == val.batch) {
+
+      for (let s = 0; s < outboundList.value.length; s++) {
+        if (outboundList.value[s].newId == info.value.wtransferWarehouseList[0].wtransferDetailList[i].id) {
+          return Toast.fail({ message: "璇ョ墿鏂欐壒娆″凡瀛樺湪" })
+        }
+      }
+
+      let obj = JSON.parse(JSON.stringify(val))
+      obj.newId = info.value.wtransferWarehouseList[0].wtransferDetailList[i].id
+      outboundList.value.push(obj)
+
+    }
+  }
+
+  console.log(outboundList.value)
+  // let res = await outScanAppliances({
+  //     barCode: val.prefix + val.code,
+  //     pId: info.value.wtransfer.id,
+  //     type: 1
+  // })
+  // if (res.code === 200) {
+  //     let isData: string = ''
+  //     info.value.wtransferWarehouseList.forEach((item: any) => {
+  //         if (res.data.warehouseId === item.warehouseId) {
+  //             item.wtransferDetailList.forEach((item1: any) => {
+  //                 if (item1.materialId !== res.data.materialId) {
+  //                     isData = 'wl'
+  //                 } else if (res.data.qualityType !== item1.qualityType) {
+  //                     isData = 'lx'
+  //                 } else if (res.data.procedureId !== item1.procedureId) {
+  //                     isData = 'gx'
+  //                 } else if (item1.batch ? res.data.batch !== item1.batch : false) {
+  //                     isData = 'pc'
+  //                 } else {
+  //                     isData = ''
+  //                 }
+  //                 if (item1.materialId == res.data.materialId && res.data.qualityType == item1.qualityType && res.data.procedureId == item1.procedureId && item1.batch ? res.data.batch == item1.batch : true) {
+  //                     dataItem = res.data
+  //                     dataItem.wtransferDetailId = item1.id
+  //                     dataItem.wtransferId = item1.transferId
+  //                     dataItem.appliancesId = res.data.id
+  //                     let rul = upload()
+  //                     return;
+  //                 }
+  //             })
+  //         } else {
+  //             isData = 'ck'
+  //         }
+  //         if (isData === 'ck') {
+  //             Toast.fail({ message: "浠撳簱涓嶄竴鑷�" })
+  //         } else if (isData === 'wl') {
+  //             Toast.fail({ message: "鐗╂枡涓嶄竴鑷�" })
+  //         } else if (isData === 'lx') {
+  //             Toast.fail({ message: "璐ㄩ噺绫诲瀷涓嶄竴鑷�" })
+  //         } else if (isData === 'gx') {
+  //             Toast.fail({ message: "宸ュ簭涓嶄竴鑷�" })
+  //         } else if (isData === 'pc') {
+  //             Toast.fail({ message: "鎵规涓嶄竴鑷�" })
+  //         }
+  //     })
+  // }
+  // show.value = false
+}
+
+// 鑾峰彇璇︽儏 (杞簱鍗�/鍑哄簱鍗�)
+const getInfo = () => {
+  let type: string = route.query.type as string
+  if (type === QRCodeType.CKD.toString()) {
+    console.log('鍑哄簱鍗�')
+    wOutBoundForInOut({
+      id: Number(route.query.id),
+      wOutboundType: 0
+    }).then(res => {
+      if (res.code === 200) {
+        info.value = res.data
+        warehouseId.value = info.value.wtransferWarehouseList[0].warehouseId.toString()
+      } else {
+        Toast.fail({ message: res.message, forbidClick: true, duration: 2000 })
+        setTimeout(() => {
+          router.go(-1)
+        }, 2000)
+      }
+    })
+  } else if (type === QRCodeType.ZKD.toString()) {
+    console.log('杞簱鍗�')
+    wTransferForInOut({
+      id: Number(route.query.id),
+      wTransferType: 0
+    }).then(res => {
+      if (res.code === 200) {
+        info.value = res.data
+        warehouseId.value = info.value.wtransferWarehouseList[0].warehouseId.toString()
+      } else {
+        Toast.fail({ message: res.message, forbidClick: true, duration: 2000 })
+        setTimeout(() => {
+          router.go(-1)
+        }, 2000)
+      }
+    })
+  }
+}
+
+// 鍒犻櫎瀵瑰簲鐨勬壒娆�
+const dele = (index: Number) => {
+  outboundList.value.forEach((item: any, i: number) => {
+    if (index === i) {
+      outboundList.value.splice(i, 1)
+    }
+  })
+}
+
+// 涓婁紶宸ヨ
+const upload = () => {
+  if (type === QRCodeType.ZKD.toString()) {
+    wTransferForInOut({
+      id: Number(route.query.id),
+      optType: 1,
+      wTransferType: 0,
+      jsonBean: dataItem
+    }).then(res => {
+      if (res.code === 200) {
+        getInfo()
+      }
+    })
+  } else if (type === QRCodeType.CKD.toString()) {
+    wOutBoundForInOut({
+      id: Number(route.query.id),
+      optType: 1,
+      wOutboundType: 0,
+      jsonBean: dataItem
+    }).then(res => {
+      if (res.code === 200) {
+        getInfo()
+      }
+    })
+  }
+}
+
+// 鐐瑰嚮鎵爜鍑哄簱
+const ck = () => {
+  openCode.value = true
+}
+
+// 鎻愪氦鎿嶄綔
+const submit = () => {
+  if (type === QRCodeType.ZKD.toString()) {
+    if (outboundList.value.length > 0) {
+      let result = outboundList.value.reduce((a, b) => {
+        if (a[b.newId]) {
+          a[b.newId].push(b);
+        } else {
+          a[b.newId] = [b];
+        }
+        return a;
+      }, {});
+
+      for (let i = 0; i < info.value.wtransferWarehouseList[0].wtransferDetailList.length; i++) {
+        for (let a in result) {
+          if (info.value.wtransferWarehouseList[0].wtransferDetailList[i].id == a) {
+            let total = 0
+            for (let b = 0; b < result[a].length; b++) {
+              total = Number(total) + Number(result[a][b].num)
+            }
+            console.log(total, info.value.wtransferWarehouseList[0].wtransferDetailList[i].outPlannum)
+            if (!total || total <= 0) {
+              return Toast.fail({ message: '鍑哄簱鐗╂枡鏁伴噺蹇呴』澶т簬0', forbidClick: true, duration: 2000 })
+            }
+            if (total > info.value.wtransferWarehouseList[0].wtransferDetailList[i].outPlannum) {
+              return Toast.fail({ message: '鍑哄簱鏁伴噺涓嶈兘澶т簬寰呭嚭搴撴暟閲�', forbidClick: true, duration: 2000 })
+            }
+          }
+        }
+      }
+
+      let submitTransferOutDetailDTOList: any = []
+      outboundList.value.forEach((item: any) => {
+        info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((child: any) => {
+          if (item.newId == child.id) {
+            submitTransferOutDetailDTOList.push({
+              outNum: item.num,
+              wstockId: item.id,
+              wtransferDetailId: child.id
+            })
+          }
+        })
+      })
+      transferToOutNew({
+        submitTransferOutDetailDTOList,
+        wtransferId: route.query.id
+      }).then(res => {
+        if (res.code === 200) {
+          store.dispatch('getUpcomingNum')
+          Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
+          setTimeout(() => {
+            router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
+          }, 2000)
+        }
+      })
+    } else {
+      Toast.fail({ message: '璇烽�夋嫨鍑哄簱鐗╂枡', forbidClick: true, duration: 2000 })
+    }
+    // let yx: number = 0
+    // let dc: number = 0
+    // info.value.wtransferRedisCodeBeanList.forEach((element: any) => {
+    //     yx = yx + element.num
+    // })
+    // info.value.wtransferWarehouseList.forEach((element: any) => {
+    //     element.wtransferDetailList.forEach((elementChilder: any) => {
+    //         dc = dc + elementChilder.outPlannum
+    //     })
+    // })
+    // if (yx < dc) {
+    //     Dialog.confirm({
+    //         title: '鎻愮ず',
+    //         message: '寰呭嚭鐗╂枡涓庡凡鍑虹墿鏂欐暟閲忎笉涓�鑷达紝鏄惁纭鍑哄簱',
+    //     })
+    //     .then(() => {
+    //         wTransferForInOutUpload({
+    //             id: info.value.wtransfer.id,
+    //             wTransferType: 0
+    //         }).then(res => {
+    //             if (res.code === 200) {
+    //                 store.dispatch('getUpcomingNum')
+    //                 Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
+    //                 setTimeout(() => {
+    //                     // router.go(-1)
+    //                     router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
+    //                 }, 2000)
+    //             }
+    //         })
+    //         return
+    //     })
+    //     .catch(() => {
+
+    //     });
+    // } else {
+    //     wTransferForInOutUpload({
+    //         id: info.value.wtransfer.id,
+    //         wTransferType: 0
+    //     }).then(res => {
+    //         if (res.code === 200) {
+    //             store.dispatch('getUpcomingNum')
+    //             Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
+    //             setTimeout(() => {
+    //                 // router.go(-1)
+    //                 router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
+    //             }, 2000)
+    //         }
+    //     })
+    // }
+  } else if (type === QRCodeType.CKD.toString()) {
+    wOutBoundForUpload({
+      id: info.value.woutbound.id,
+      wOutboundType: 0
+    }).then(res => {
+      if (res.code === 200) {
+        store.dispatch('getUpcomingNum')
+        Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
+        setTimeout(() => {
+          // router.go(-1)
+          router.replace({ name: 'wOutboundDetail', query: { id: info.value.wtransfer.id } })
+        }, 2000)
+      }
+    })
+  }
+}
+
+// 鑾峰彇寰呭姙璇︽儏(鍒ゆ柇褰撳墠寰呭姙鏄惁宸插鐞�)
+const getDBs = async (id: string): Promise<any> => {
+  let res = await getDB(id)
+  if (res.code === 200) {
+    if (res.data.status === 1) {
+      if (type === QRCodeType.CKD.toString()) {
+        await router.replace({ name: 'wOutboundDetail', query: { id: route.query.id } })
+      } else if (type === QRCodeType.ZKD.toString()) {
+        await router.replace({ name: 'wTransferDetail', query: { id: route.query.id } })
+      }
+    } else {
+      await getInfo()
+    }
+  }
+}
+
+onMounted(() => {
+  if (route.query.dbid) {
+    getDBs(route.query.dbid as string)
+  } else {
+    getInfo()
+  }
+})
 </script>
 
 <style lang="scss" scoped>
-    .page {
+.page {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  background: #F7F7F7;
+
+  .page_info {
+    padding: 30px;
+    background: #ffffff;
+
+    .page_info_title {
+      font-size: 32px;
+      font-weight: 500;
+      color: #4275FC;
+    }
+
+    .page_info_list {
+      display: flex;
+      flex-wrap: wrap;
+      margin: 30px 0 0 0;
+
+      .page_info_list_item {
         width: 100%;
-        height: 100%;
-        position: absolute;
-        background: #F7F7F7;
-        .page_info {
-            padding: 30px;
-            background: #ffffff;
-            .page_info_title {
-                font-size: 32px;
-                font-weight: 500;
-                color: #4275FC;
-            }
-            .page_info_list {
-                display: flex;
-                flex-wrap: wrap;
-                margin: 30px 0 0 0;
-                .page_info_list_item {
-                    width: 100%;
-                    display: flex;
-                    margin-top: 24px;
-                    &:nth-child(1) {
-                        margin-top: 0;
-                    }
-                    /*&:nth-child(2) {*/
-                    /*    margin-top: 0;*/
-                    /*}*/
-                    .page_info_list_item_label {
-                        flex-shrink: 0;
-                        font-size: 26px;
-                        font-weight: 400;
-                        color: #666666;
-                    }
-                    .page_info_list_item_nr {
-                        flex: 1;
-                        font-size: 26px;
-                        font-weight: 400;
-                        color: #222222;
-                    }
-                }
-            }
-            .page_info_bz {
-                padding: 24px;
-                background: #F7F7F7;
-                margin-top: 30px;
-                .page_info_bz_title {
-                    font-size: 26px;
-                    font-weight: 500;
-                    color: #222222;
-                    margin-bottom: 20px;
-                }
-                .page_info_bz_nr {
-                    font-size: 24px;
-                    font-weight: 400;
-                    color: #333333;
-                }
-            }
+        display: flex;
+        margin-top: 24px;
+
+        &:nth-child(1) {
+          margin-top: 0;
         }
-        .switch {
-            padding: 0 30px;
-            button {
-                width: 100%;
-                border: none;
-                height: 76px;
-                background: #ffffff;
-                border-radius: 36px;
-                font-size: 26px;
-                font-weight: 400;
-                color: black;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                img {
-                    width: 28px;
-                    height: 28px;
-                    margin-right: 14px;
-                }
-            }
+
+        /*&:nth-child(2) {*/
+        /*    margin-top: 0;*/
+        /*}*/
+        .page_info_list_item_label {
+          flex-shrink: 0;
+          font-size: 26px;
+          font-weight: 400;
+          color: #666666;
         }
-        .page_h {
-            height: 20px;
+
+        .page_info_list_item_nr {
+          flex: 1;
+          font-size: 26px;
+          font-weight: 400;
+          color: #222222;
         }
-        .page_sfq {
-            font-size: 32px;
+      }
+    }
+
+    .page_info_bz {
+      padding: 24px;
+      background: #F7F7F7;
+      margin-top: 30px;
+
+      .page_info_bz_title {
+        font-size: 26px;
+        font-weight: 500;
+        color: #222222;
+        margin-bottom: 20px;
+      }
+
+      .page_info_bz_nr {
+        font-size: 24px;
+        font-weight: 400;
+        color: #333333;
+      }
+    }
+  }
+
+  .switch {
+    padding: 0 30px;
+
+    button {
+      width: 100%;
+      border: none;
+      height: 76px;
+      background: #ffffff;
+      border-radius: 36px;
+      font-size: 26px;
+      font-weight: 400;
+      color: black;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+
+      img {
+        width: 28px;
+        height: 28px;
+        margin-right: 14px;
+      }
+    }
+  }
+
+  .page_h {
+    height: 20px;
+  }
+
+  .page_sfq {
+    font-size: 32px;
+    font-weight: 500;
+    color: #222222;
+    display: flex;
+    align-items: center;
+
+    img {
+      width: 36px;
+      height: 36px;
+      margin-right: 16px;
+    }
+  }
+
+  .page_dck {
+    .page_dck_title {
+      display: flex;
+      align-items: center;
+
+      .page_dck_title_x {
+        width: 8px;
+        height: 30px;
+        background: #4275FC;
+        border-radius: 2px;
+        margin-right: 16px;
+      }
+
+      span {
+        font-size: 32px;
+        font-weight: 500;
+        color: #222222;
+      }
+    }
+  }
+
+  .page_content {
+    margin-top: 28px;
+
+    .page_content_title {
+      display: flex;
+      flex-direction: column;
+
+      .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;
-            display: flex;
-            align-items: center;
-            img {
-                width: 36px;
-                height: 36px;
-                margin-right: 16px;
+          }
+
+          &:nth-child(2) {
+            flex-shrink: 0;
+            font-size: 24px;
+            font-weight: 400;
+            color: #333333;
+
+            span {
+              font-size: 24px;
+              color: $nav-color;
             }
+          }
         }
-        .page_dck {
-            .page_dck_title {
-                display: flex;
-                align-items: center;
-                .page_dck_title_x {
-                    width: 8px;
-                    height: 30px;
-                    background: #4275FC;
-                    border-radius: 2px;
-                    margin-right: 16px;
-                }
-                span {
-                    font-size: 32px;
-                    font-weight: 500;
-                    color: #222222;
-                }
-            }
+      }
+
+      .page_content_title_bottom {
+        .green {
+          color: $nav-stateColor7 !important;
         }
-        .page_content {
-            margin-top: 28px;
-            .page_content_title {
-                display: flex;
-                flex-direction: column;
-                .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;
-                    }
-                    .warning {
-                        color: $nav-stateColor5 !important;
-                    }
-                    .error {
-                        color: $nav-stateColor4 !important;
-                    }
-                    span {
-                        font-size: 24px;
-                        font-weight: 400;
-                        color: #666666;
-                    }
-                }
-            }
-            .page_content_list {
-                width: 100%;
-                display: flex;
-                align-items: center;
-                flex-wrap: wrap;
-                padding-bottom: 30px;
-                margin-top: 28px;
-                border-bottom: 1px solid #E5E5E5;
-                &:first-child {
-                    margin: 0;
-                }
-                &:last-child {
-                    border: none;
-                }
-                .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;
-                    }
-                }
-            }
+
+        .warning {
+          color: $nav-stateColor5 !important;
         }
-        .page_yxwl {
-            padding: 30px;
-            background: #ffffff;
-            .page_yxwl_title {
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-                .page_yxwl_title_x {
-                    width: 8px;
-                    height: 30px;
-                    background: #4275FC;
-                    border-radius: 2px;
-                    margin-right: 16px;
-                }
-                span {
-                    font-size: 32px;
-                    font-weight: 500;
-                    color: #222222;
-                }
-                .left {
-                    display: flex;
-                    align-items: center;
-                    .page_yxwl_title_x {
-                        width: 8px;
-                        height: 30px;
-                        background: #4275FC;
-                        border-radius: 2px;
-                        margin-right: 16px;
-                    }
-                    span {
-                        font-size: 32px;
-                        font-weight: 500;
-                        color: #222222;
-                    }
-                }
-                .right {
-                    display: flex;
-                    align-items: center;
-                    img {
-                        width: 28px;
-                        height: 28px;
-                        margin-right: 14px;
-                    }
-                    span {
-                        font-size: 26px;
-                        font-weight: 400;
-                        color: #222222;
-                    }
-                }
-            }
-            .page_yxwl_kong {
-                padding: 50px 0;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                span {
-                    font-size: 25px;
-                    color: black;
-                }
-            }
-            .page_yxwl_list {
-                display: flex;
-                flex-direction: column;
-                padding-bottom: 30px;
-                border-bottom: 1px solid #ececec;
-                &:last-child {
-                    margin-bottom: 0;
-                    border: none;
-                }
-                .page_yxwl_list_item {
-                    margin-top: 28px;
-                    .page_yxwl_list_item_sx {
-                        margin-top: 10px;
-                        span {
-                            color: black;
-                        }
-                    }
-                    .page_yxwl_list_item_top {
-                        display: flex;
-                        align-items: center;
-                        justify-content: space-between;
-                        .page_yxwl_list_item_top_left {
-                            font-size: 30px;
-                            font-weight: 500;
-                            color: #222222;
-                        }
-                        .page_yxwl_list_item_top_right {
-                            span {
-                                font-size: 24px;
-                                font-weight: 400;
-                                color: #333333;
-                                span {
-                                    font-size: 24px;
-                                    font-weight: 400;
-                                    color: $nav-color;
-                                }
-                            }
-                        }
-                    }
-                    .page_yxwl_list_item_num {
-                        display: flex;
-                        position: relative;
-                        margin-top: 36px;
-                        &:first-child {
-                            margin-top: 0;
-                        }
-                        .dele {
-                            position: absolute;
-                            right: -30px;
-                            width: 48px;
-                            height: 48px;
-                            img {
-                                width: 100%;
-                                height: 100%;
-                            }
-                        }
-                        .item {
-                            width: 50%;
-                            display: flex;
-                            align-items: center;
-                            .label {
-                                flex-shrink: 0;
-                                font-size: 26px;
-                                font-weight: 400;
-                                color: #666666;
-                                flex-shrink: 0;
-                            }
-                            .nr {
-                                flex: 1;
-                                display: flex;
-                                align-items: center;
-                                input {
-                                    width: 130px;
-                                    height: 40px;
-                                    border-radius: 8px;
-                                    border: 1PX solid #E5E5E5;
-                                    margin-right: 10px;
-                                }
-                                span {
-                                    font-size: 26px;
-                                    font-weight: 400;
-                                    color: #222222;
-                                }
-                            }
-                        }
-                    }
-                }
-            }
+
+        .error {
+          color: $nav-stateColor4 !important;
         }
-        .page_zw {
-            height: 160px;
+
+        span {
+          font-size: 24px;
+          font-weight: 400;
+          color: #666666;
         }
-        .page_footer {
-            position: fixed;
-            bottom: 0;
-            left: 0;
-            width: 100%;
-            padding: 0 30px 68px 30px;
-            box-sizing: border-box;
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            .page_footer_smck {
-                width: 334px;
-                height: 88px;
-                border: none;
-                background: #FFFFFF;
-                box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
-                border-radius: 8px;
-                font-size: 32px;
-                font-weight: 500;
-                color: $nav-color;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                img {
-                    width: 30px;
-                    height: 30px;
-                    margin-right: 10px;
-                }
-            }
-            .page_footer_qrck {
-                // width: 334px;
-                flex: 1;
-                height: 88px;
-                border: none;
-                background: $nav-color;
-                box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
-                border-radius: 8px;
-                font-size: 32px;
-                font-weight: 500;
-                color: #FFFFFF;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-            }
-        }
+      }
     }
-</style>
+
+    .page_content_list {
+      width: 100%;
+      display: flex;
+      align-items: center;
+      flex-wrap: wrap;
+      padding-bottom: 30px;
+      margin-top: 28px;
+      border-bottom: 1px solid #E5E5E5;
+
+      &:first-child {
+        margin: 0;
+      }
+
+      &:last-child {
+        border: none;
+      }
+
+      .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;
+        }
+      }
+    }
+  }
+
+  .page_yxwl {
+    padding: 30px;
+    background: #ffffff;
+
+    .page_yxwl_title {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+
+      .page_yxwl_title_x {
+        width: 8px;
+        height: 30px;
+        background: #4275FC;
+        border-radius: 2px;
+        margin-right: 16px;
+      }
+
+      span {
+        font-size: 32px;
+        font-weight: 500;
+        color: #222222;
+      }
+
+      .left {
+        display: flex;
+        align-items: center;
+
+        .page_yxwl_title_x {
+          width: 8px;
+          height: 30px;
+          background: #4275FC;
+          border-radius: 2px;
+          margin-right: 16px;
+        }
+
+        span {
+          font-size: 32px;
+          font-weight: 500;
+          color: #222222;
+        }
+      }
+
+      .right {
+        display: flex;
+        align-items: center;
+
+        img {
+          width: 28px;
+          height: 28px;
+          margin-right: 14px;
+        }
+
+        span {
+          font-size: 26px;
+          font-weight: 400;
+          color: #222222;
+        }
+      }
+    }
+
+    .page_yxwl_kong {
+      padding: 50px 0;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+
+      span {
+        font-size: 25px;
+        color: black;
+      }
+    }
+
+    .page_yxwl_list {
+      display: flex;
+      flex-direction: column;
+      padding-bottom: 30px;
+      border-bottom: 1px solid #ececec;
+
+      &:last-child {
+        margin-bottom: 0;
+        border: none;
+      }
+
+      .page_yxwl_list_item {
+        margin-top: 28px;
+
+        .page_yxwl_list_item_sx {
+          margin-top: 10px;
+
+          span {
+            color: black;
+          }
+        }
+
+        .page_yxwl_list_item_top {
+          display: flex;
+          align-items: center;
+          justify-content: space-between;
+
+          .page_yxwl_list_item_top_left {
+            font-size: 30px;
+            font-weight: 500;
+            color: #222222;
+          }
+
+          .page_yxwl_list_item_top_right {
+            span {
+              font-size: 24px;
+              font-weight: 400;
+              color: #333333;
+
+              span {
+                font-size: 24px;
+                font-weight: 400;
+                color: $nav-color;
+              }
+            }
+          }
+        }
+
+        .page_yxwl_list_item_num {
+          display: flex;
+          position: relative;
+          margin-top: 36px;
+
+          &:first-child {
+            margin-top: 0;
+          }
+
+          .dele {
+            position: absolute;
+            right: -30px;
+            width: 48px;
+            height: 48px;
+
+            img {
+              width: 100%;
+              height: 100%;
+            }
+          }
+
+          .item {
+            width: 50%;
+            display: flex;
+            align-items: center;
+
+            .label {
+              flex-shrink: 0;
+              font-size: 26px;
+              font-weight: 400;
+              color: #666666;
+              flex-shrink: 0;
+            }
+
+            .nr {
+              flex: 1;
+              display: flex;
+              align-items: center;
+
+              input {
+                width: 130px;
+                height: 40px;
+                border-radius: 8px;
+                border: 1PX solid #E5E5E5;
+                margin-right: 10px;
+              }
+
+              span {
+                font-size: 26px;
+                font-weight: 400;
+                color: #222222;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+
+  .page_zw {
+    height: 160px;
+  }
+
+  .page_footer {
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    padding: 0 30px 68px 30px;
+    box-sizing: border-box;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+
+    .page_footer_smck {
+      width: 334px;
+      height: 88px;
+      border: none;
+      background: #FFFFFF;
+      box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
+      border-radius: 8px;
+      font-size: 32px;
+      font-weight: 500;
+      color: $nav-color;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+
+      img {
+        width: 30px;
+        height: 30px;
+        margin-right: 10px;
+      }
+    }
+
+    .page_footer_qrck {
+      // width: 334px;
+      flex: 1;
+      height: 88px;
+      border: none;
+      background: $nav-color;
+      box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
+      border-radius: 8px;
+      font-size: 32px;
+      font-weight: 500;
+      color: #FFFFFF;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
+  }
+}</style>
diff --git a/h5_standard/src/views/needToBeDealtWith/outbound.vue b/h5_standard/src/views/needToBeDealtWith/outbound.vue
index 4f4b6e4..5e71a6d 100644
--- a/h5_standard/src/views/needToBeDealtWith/outbound.vue
+++ b/h5_standard/src/views/needToBeDealtWith/outbound.vue
@@ -172,7 +172,8 @@
     // 鍒犻櫎
     const dele = (index: any) => {
         if (list.value.length === 1) {
-            Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+          //  Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+            Toast('鑷冲皯淇濈暀涓�鏉$墿娴佹竻鍗曚俊鎭紒')
             return
         }
         list.value.splice(index, 1)
diff --git a/h5_standard/src/views/requisition/scrapped.vue b/h5_standard/src/views/requisition/scrapped.vue
index aca07c6..3c4852c 100644
--- a/h5_standard/src/views/requisition/scrapped.vue
+++ b/h5_standard/src/views/requisition/scrapped.vue
@@ -122,7 +122,8 @@
     // 鍒犻櫎
     const dele = (index: any) => {
       if (list.value.length === 1) {
-        Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+     //   Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+        Toast('鑷冲皯淇濈暀涓�鏉$墿娴佹竻鍗曚俊鎭�')
         return
       }
       list.value.splice(index, 1)
diff --git a/h5_standard/src/views/workOrder/workOrderReporting.vue b/h5_standard/src/views/workOrder/workOrderReporting.vue
index 689f086..df6f007 100644
--- a/h5_standard/src/views/workOrder/workOrderReporting.vue
+++ b/h5_standard/src/views/workOrder/workOrderReporting.vue
@@ -1,9 +1,9 @@
 <template>
-    <div class="bg">
-        <!--  宸ュ崟淇℃伅  -->
-        <V-WorkOrderInfo :info="info"></V-WorkOrderInfo>
-        <!--  鎵爜鎶曟枡/浜у嚭  -->
-        <!-- <div class="details_cz">
+  <div class="bg">
+    <!--  宸ュ崟淇℃伅  -->
+    <V-WorkOrderInfo :info="info"></V-WorkOrderInfo>
+    <!--  鎵爜鎶曟枡/浜у嚭  -->
+    <!-- <div class="details_cz">
             <div class="details_cz_smtl" @click="jump1('tl')" v-if="proxy.$auth('h5:workorderinput:create')">
                 <img src="@/assets/icon/gongdan_ic_saoma@2x.png" alt="" />
                 <span>鎵爜鎶曟枡</span>
@@ -14,173 +14,182 @@
                 <span>鎵爜浜у嚭</span>
             </div>
         </div> -->
-        <div class="bg_cate">
-            <div @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'" v-for="(item, index) in cate" :key="index">{{ item.name }}</div>
+    <div class="bg_cate">
+      <div @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'"
+        v-for="(item, index) in cate" :key="index">{{ item.name }}</div>
+    </div>
+    <!--  鎶曟枡鏄庣粏/鍚堟牸浜у嚭鏄庣粏/涓嶈壇浜у嚭鏄庣粏  -->
+    <div class="bg_list" v-if="typeView === 0">
+      <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>
-        <!--  鎶曟枡鏄庣粏/鍚堟牸浜у嚭鏄庣粏/涓嶈壇浜у嚭鏄庣粏  -->
-        <div class="bg_list" v-if="typeView === 0">
-                <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>
+        <template v-if="feedingData && feedingData.length > 0">
+          <van-swipe-cell v-for="(item, index) in feedingData" :key="index">
+            <div class="bg_list_item_h">
+              <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>
-                    <template v-if="feedingData && feedingData.length > 0">
-                        <van-swipe-cell v-for="(item, index) in feedingData" :key="index">
-                            <div class="bg_list_item_h">
-                                <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>
-                            </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_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 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_h">
-                                <div class="bg_list_item_num">
-                                    <div class="bg_list_item_num_item">
-                                        <span>鑹搧鏁�({{ info.umodel ? info.umodel.name : '' }})</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>
-                            </div>
-                        </van-swipe-cell>
-                        <van-swipe-cell>
-                            <div class="bg_list_item_h">
-                                <div class="bg_list_item_num">
-                                    <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
-                                    <div class="bg_list_item_num_item">
-                                        <span>涓嶈壇鏁�({{ info.umodel ? info.umodel.name : '' }})</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>
-                            </div>
-                        </van-swipe-cell>
-                        <van-swipe-cell v-if="produceFrom.undesirable > 0">
-                            <div class="bg_list_item_h">
-                                <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 class="wulll" :style="{color: from.defectiveName ? '#305ED5' : ''}">{{from.defectiveName ? from.defectiveName : '璁剧疆'}}</span>
-                                            <img src="@/assets/icon/ic_ar@2x.png" alt="" />
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                        </van-swipe-cell>
-                    <!-- </template>
+              </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_h">
+            <div class="bg_list_item_num">
+              <div class="bg_list_item_num_item">
+                <span>鑹搧鏁�({{ info.umodel ? info.umodel.name : '' }})</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>
+          </div>
+        </van-swipe-cell>
+        <van-swipe-cell>
+          <div class="bg_list_item_h">
+            <div class="bg_list_item_num">
+              <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+              <div class="bg_list_item_num_item">
+                <span>涓嶈壇鏁�({{ info.umodel ? info.umodel.name : '' }})</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>
+          </div>
+        </van-swipe-cell>
+        <van-swipe-cell v-if="produceFrom.undesirable > 0">
+          <div class="bg_list_item_h">
+            <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 class="wulll" :style="{ color: from.defectiveName ? '#305ED5' : '' }">{{ from.defectiveName ?
+                    from.defectiveName : '璁剧疆' }}</span>
+                  <img src="@/assets/icon/ic_ar@2x.png" alt="" />
+                </div>
+              </div>
+            </div>
+          </div>
+        </van-swipe-cell>
+        <!-- </template>
                     <template v-else>
                         <div class="kong">
                             <span>鏆傛棤鏁版嵁</span>
                         </div>
                     </template> -->
-                </div>
-                <div class="bg_plan" @click="TimeShow = true">
-                    <div class="bg_plan_label">
-                        <span>鎶ュ伐鏃堕暱</span>
-                    </div>
-                    <div class="bg_plan_label_val">
-                        <span :style="{color: from.durationName ? '#333' : ''}">{{from.durationName ? from.durationName : '璇烽�夋嫨'}}</span>
-                        <img src="@/assets/icon/ic_ar@2x.png" alt="" />
-                    </div>
-                </div>
-                <div class="bg_list_item" v-if="arrType && arrType.length > 0">
-                    <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>
-                    <div class="bg_list_item_h">
-                        <div class="bg_list_item_num">
-                            <div class="bg_list_item_num_item">
-                                <span>璁′欢鏂瑰紡</span>
-                                <div class="bg_list_item_num_item_list">
-                                    <div :class="item.active ? 'bg_list_item_num_item_list_item active' : 'bg_list_item_num_item_list_item'" v-for="(item, index) in arrType" :key="index" @click="clickPerformanceType(index)">{{ item.name }}</div>
-                                    <!-- <div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 0">璁′欢</div>
+      </div>
+      <div class="bg_plan" @click="TimeShow = true">
+        <div class="bg_plan_label">
+          <span>鎶ュ伐鏃堕暱</span>
+        </div>
+        <div class="bg_plan_label_val">
+          <span :style="{ color: from.durationName ? '#333' : '' }">{{ from.durationName ? from.durationName : '璇烽�夋嫨' }}</span>
+          <img src="@/assets/icon/ic_ar@2x.png" alt="" />
+        </div>
+      </div>
+      <div class="bg_list_item" v-if="arrType && arrType.length > 0">
+        <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>
+        <div class="bg_list_item_h">
+          <div class="bg_list_item_num">
+            <div class="bg_list_item_num_item">
+              <span>璁′欢鏂瑰紡</span>
+              <div class="bg_list_item_num_item_list">
+                <div :class="item.active ? 'bg_list_item_num_item_list_item active' : 'bg_list_item_num_item_list_item'"
+                  v-for="(item, index) in arrType" :key="index" @click="clickPerformanceType(index)">{{ item.name }}</div>
+                <!-- <div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 0">璁′欢</div>
                                     <div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 1">璁℃椂</div> -->
-                                </div>
-                            </div>
-                        </div>
-                        <div class="bg_list_item_num">
-                            <div class="bg_list_item_num_item">
-                                <span>宸ヨ祫鍗曚环</span>
-                                <div class="bg_list_item_num_item_sr">
-                                    <span class="color1">{{(arrType[from.index].salary / 10 / 10).toFixed(2)}}鍏�/{{arrType[from.index].type == 0 ? '浠�' : '鏃�'}}</span>
-                                    <!-- <span class="color1">{{infoBox.salary / 100}}鍏�/{{infoBox.type == 0 ? '浠�' : '鏃�'}}</span> -->
-                                </div>
-                            </div>
-                        </div>
-                        <div class="bg_list_item_num">
-                            <div class="bg_list_item_num_item">
-                                <span>棰勮宸ヨ祫</span>
-                                <div class="bg_list_item_num_item_sr">
-                                    <span class="color1">{{expectedSalary}}鍏�</span>
-                                </div>
-                            </div>
-                        </div>
-                        <div class="bg_list_item_num">
-                            <div class="bg_list_item_num_item">
-                                <span>杈炬爣鐜�</span>
-                                <div class="bg_list_item_num_item_sr">
-                                    <span class="color1">{{complianceRate}}%</span>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            <!-- <div class="bg_list_item">
+              </div>
+            </div>
+          </div>
+          <div class="bg_list_item_num">
+            <div class="bg_list_item_num_item">
+              <span>宸ヨ祫鍗曚环</span>
+              <div class="bg_list_item_num_item_sr">
+                <span class="color1">{{ (arrType[from.index].salary / 10 / 10).toFixed(2) }}鍏�/{{ arrType[from.index].type ==
+                  0 ? '浠�' : '鏃�' }}</span>
+                <!-- <span class="color1">{{infoBox.salary / 100}}鍏�/{{infoBox.type == 0 ? '浠�' : '鏃�'}}</span> -->
+              </div>
+            </div>
+          </div>
+          <div class="bg_list_item_num">
+            <div class="bg_list_item_num_item">
+              <span>棰勮宸ヨ祫</span>
+              <div class="bg_list_item_num_item_sr">
+                <span class="color1">{{ expectedSalary }}鍏�</span>
+              </div>
+            </div>
+          </div>
+          <div class="bg_list_item_num">
+            <div class="bg_list_item_num_item">
+              <span>杈炬爣鐜�</span>
+              <div class="bg_list_item_num_item_sr">
+                <span class="color1">{{ complianceRate }}%</span>
+              </div>
+            </div>
+          </div>
+        </div>
+      </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>
@@ -276,9 +285,9 @@
                     </div>
                 </template>
             </div> -->
-        </div>
-        <div class="details_dj" v-if="typeView === 1">
-            <!-- <div class="details_dj_title">
+    </div>
+    <div class="details_dj" v-if="typeView === 1">
+      <!-- <div class="details_dj_title">
                 <div class="details_dj_title_left">
                     <div class="details_x"></div>
                     <span>鐢熶骇鐐规</span>
@@ -288,1712 +297,1805 @@
                     <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 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>
-        </div>
-        <!--  鎶ュ伐鎸夐挳  -->
-        <template v-if="info.status === 2 || info.procedureNeedcheck === 1">
-            <div class="bh_zw"></div>
-            <div class="bg_footer">
-                <div class="bg_footer_submit" v-if="typeView == 0" @click="submit">纭鎶ュ伐</div>
-                <!-- proxy.$auth('h5:workorder:processRecord') &&  -->
-                <div class="bg_footer_submit1" @click="jumpdj" v-if="typeView == 1">
-                    <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" />
-                    <span>鏂板鐐规</span>
-                </div>
-            </div>
-        </template>
-        <!--  鎵爜缁勪欢  -->
-        <v-ScanCode
-            :openCode="openCode"
-            :infos="['璇锋壂鎻忓伐瑁呯爜']"
-            @closePopup="closePopup"
-            @onDecode="onDecode" />
-        <!--  鎶ュ伐缁熻鏁版嵁  -->
-        <van-popup v-model:show="statistics" round :closeable="true" position="bottom">
-            <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="TimeShow" round position="bottom" :style="{ height: '50%' }">
-            <van-datetime-picker
-                v-model="from.time"
-                type="time"
-                title="閫夋嫨鏃堕棿"
-                @confirm="onConfirm2"
-                @cancel="onCancel2"
-            />
-        </van-popup>
-        <!-- 閫夋嫨涓嶈壇椤� -->
-        <van-popup v-model:show="show" round position="bottom">
-            <div class="bl">
-                <div class="bl_head">
-                    <img src="@/assets/icon/ic_close@2x.png" style="opacity: 0;" alt="" />
-                    <span>涓嶈壇椤�</span>
-                    <!-- <span>纭</span> -->
-                    <img src="@/assets/icon/ic_close@2x.png" @click="show = false" alt="" />
-                </div>
-                <div class="bl_list">
-                    <div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)">
-                        <div class="bl_list_item_left">
-                            <input type="checkbox" :checked="item.active" />
-                            <span>{{ item.name }}</span>
-                        </div>
-                        <div class="bl_list_item_right">
-                            <input type="number" @click.stop v-model="item.num" placeholder="0" />
-                        </div>
-                    </div>
-                </div>
-                <div class="bl_footer" @click="onConfirm3">纭</div>
-            </div>
-        </van-popup>
+            <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" v-if="typeView == 0" @click="submit">纭鎶ュ伐</div>
+        <!-- proxy.$auth('h5:workorder:processRecord') &&  -->
+        <div class="bg_footer_submit1" @click="jumpdj" v-if="typeView == 1">
+          <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" />
+          <span>鏂板鐐规</span>
+        </div>
+      </div>
+    </template>
+    <!--  鎵爜缁勪欢  -->
+    <v-ScanCode :openCode="openCode" :infos="['璇锋壂鎻忓伐瑁呯爜']" @closePopup="closePopup" @onDecode="onDecode" />
+    <!--  鎶ュ伐缁熻鏁版嵁  -->
+    <van-popup v-model:show="statistics" round :closeable="true" position="bottom">
+      <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="TimeShow" round position="bottom" :style="{ height: '50%' }">
+      <van-datetime-picker v-model="from.time" type="time" title="閫夋嫨鏃堕棿" @confirm="onConfirm2" @cancel="onCancel2" />
+    </van-popup>
+    <!-- 閫夋嫨涓嶈壇椤� -->
+    <van-popup v-model:show="show" round position="bottom">
+      <div class="bl">
+        <div class="bl_head">
+          <img src="@/assets/icon/ic_close@2x.png" style="opacity: 0;" alt="" />
+          <span>涓嶈壇椤�</span>
+          <!-- <span>纭</span> -->
+          <img src="@/assets/icon/ic_close@2x.png" @click="show = false" alt="" />
+        </div>
+        <div class="bl_list">
+          <div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)">
+            <div class="bl_list_item_left">
+              <input type="checkbox" :checked="item.active" />
+              <span>{{ item.name }}</span>
+            </div>
+            <div class="bl_list_item_right">
+              <input type="number" @click.stop v-model="item.num" placeholder="0" />
+            </div>
+          </div>
+        </div>
+        <div class="bl_footer" @click="onConfirm3">纭</div>
+      </div>
+    </van-popup>
+  </div>
 </template>
 
 <script setup lang="ts">
-    import { getCurrentInstance, nextTick, onMounted, ref, reactive, computed, onActivated } from 'vue'
-    import { useRouter, useRoute } from "vue-router"
-    import { Dialog, Toast } from 'vant'
-    import { REGULAR } from '@/utils/utils'
-    import { categoryExtList, queryOne, queryList } from '@/apis/PlanningAPI'
-    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()
-    const { $Bus }  = getCurrentInstance().appContext.config.globalProperties
-    import VWorkOrderInfo from '@/components/common/WorkOrderInfo.vue'
+import { getCurrentInstance, nextTick, onMounted, ref, reactive, computed, onActivated } from 'vue'
+import { useRouter, useRoute } from "vue-router"
+import { Dialog, Toast } from 'vant'
+import { REGULAR } from '@/utils/utils'
+import { categoryExtList, queryOne, queryList } from '@/apis/PlanningAPI'
+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()
+const { $Bus } = getCurrentInstance().appContext.config.globalProperties
+import VWorkOrderInfo from '@/components/common/WorkOrderInfo.vue'
 
-    const router = useRouter()
-    const route = useRoute()
+const router = useRouter()
+const route = useRoute()
 
-    let TimeShow = ref(false)
+let TimeShow = ref(false)
 
-    let from: any = reactive({
-        time: '',
-        defective: [],
-        defectiveName: '',
-        durationName: '0灏忔椂0鍒嗛挓',
-        duration: 0,
-        index: 0
-    })
+let from: any = reactive({
+  time: '',
+  defective: [],
+  defectiveName: '',
+  durationName: '0灏忔椂0鍒嗛挓',
+  duration: 0,
+  index: 0
+})
 
-    let cate = ref([{ name: '鐢熶骇' }, { name: '鐐规' }])
-    let typeView = ref(0)
+let cate = ref([{ name: '鐢熶骇' }, { name: '鐐规' }])
+let typeView = ref(0)
 
-    const clickIten = (i: number) => {
-        typeView.value = i
-        if (i === 1) {
-            finished.value = false
-            page.capacity = 1
-            pageDJs()
-        }
+const clickIten = (i: number) => {
+  typeView.value = i
+  if (i === 1) {
+    finished.value = false
+    page.capacity = 1
+    pageDJs()
+  }
+}
+
+// 棰勮宸ヨ祫
+const expectedSalary = computed(() => {
+  if (arrType.value.length === 0) return 0;
+  // 鎸変欢璁$畻
+  if (arrType.value[from.index].type == 0) {
+    if (!produceFrom.qualified) return 0
+    if (arrType.value[from.index].unqualified == 1) {   // 鏄惁璁″叆涓嶈壇鍝�
+      let total = Number(produceFrom.qualified) + Number(produceFrom.undesirable)
+      return (total * (arrType.value[from.index].salary / 100)).toFixed(2) || 0
+    } else {
+      return (Number(produceFrom.qualified) * (arrType.value[from.index].salary / 100)).toFixed(2) || 0
     }
+  } else {
+    if (!from.duration) return 0;
+    let h = (from.duration / 60 / 60).toFixed(2)
+    return (Number(h) * (arrType.value[from.index].salary / 10 / 10)).toFixed(2) || 0
+  }
+})
 
-    // 棰勮宸ヨ祫
-    const expectedSalary = computed(() => {
-        if (arrType.value.length === 0) return 0;
-        // 鎸変欢璁$畻
-        if (arrType.value[from.index].type == 0) {
-            if (!produceFrom.qualified) return 0
-            if (arrType.value[from.index].unqualified == 1) {   // 鏄惁璁″叆涓嶈壇鍝�
-                let total = Number(produceFrom.qualified) + Number(produceFrom.undesirable)
-                return (total * (arrType.value[from.index].salary / 100)).toFixed(2) || 0
-            } else {
-                return (Number(produceFrom.qualified) * (arrType.value[from.index].salary / 100)).toFixed(2) || 0
-            }
-        } else {
-            if (!from.duration) return 0;
-            let h = (from.duration / 60 / 60).toFixed(2)
-            return (Number(h) * (arrType.value[from.index].salary / 10 / 10)).toFixed(2) || 0
-        }
+// 杈炬爣鐜�
+const complianceRate = computed(() => {
+  if (arrType.value.length === 0) return 0;
+  if (!produceFrom.qualified && !produceFrom.undesirable) return 0;
+  if (!from.duration) return 0;
+  if (!arrType.value[from.index].num) return 0;
+  // 鎸変欢璁$畻
+  // if (infoBox.value.type == 0) {
+  if (arrType.value[from.index].unqualified == 1) {   // 鏄惁璁″叆涓嶈壇鍝�
+    let a = ((Number(produceFrom.qualified) + Number(produceFrom.undesirable)) / (from.duration / 3600)).toFixed(2)
+    let b = (arrType.value[from.index].num / (arrType.value[from.index].times / 3600)).toFixed(2)
+    console.log(a)
+    console.log(b)
+    return ((Number(a) / Number(b)) * 100).toFixed(2)
+    // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / )
+    // return total * infoBox.value.salary;
+  } else {
+    let a = (produceFrom.qualified / (from.duration / 3600)).toFixed(2)
+    let b = (arrType.value[from.index].num / (arrType.value[from.index].times / 3600)).toFixed(2)
+    console.log(a)
+    console.log(b)
+    return ((Number(a) / Number(b)) * 100).toFixed(2)
+    // return Number(from.qualified) * infoBox.value.salary;
+  }
+  // } else {
+  //     console.log('鎸夋椂闀�')
+  // }
+})
+
+const loading = ref(false);
+const finished = ref(false);
+let show = ref(false)
+// 鐐规鏁版嵁
+let djData: any = ref([])
+// 鍒嗛〉鏌ヨ鏁版嵁
+let page = reactive({
+  capacity: 10,
+  page: 0
+})
+
+let infoBox: any = ref(null)     // 宸ヨ祫缁╂晥
+
+// 浜у嚭鍚堟牸/涓嶈壇
+let produceFrom: any = reactive({
+  qualifiedId: '',
+  qualified: '',  // 鍚堟牸
+  undesirableId: '',
+  undesirable: '' // 涓嶈壇
+})
+
+let cateList: any = ref([])  // 涓嶈壇椤�
+
+// 璇︽儏鏁版嵁
+const info: any = ref({})
+
+// 鍒ゆ柇鏄惁鑳芥彁浜�
+let isSubmit: any = ref<boolean>(false)
+
+// 涓嶈壇鏄庣粏
+let undesirable: any = ref([])
+
+// 鎶ュ簾鏄庣粏
+let scrap: any = ref([])
+
+// 鎵爜绫诲瀷
+let type: any = ref('')
+
+let arrType: 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 changeChecked = (i: number) => {
+  cateList.value[i].active = !cateList.value[i].active
+}
+
+const getData = () => {
+  categoryExtList({
+    cateType: "3"
+  }).then(res => {
+    if (res.code === 200) {
+      res.data.forEach((item: any) => {
+        item.active = false
+        item.num = ''
+      })
+      cateList.value = res.data
+    }
+  })
+}
+
+const onConfirm2 = (e: string) => {
+  let h = Number(e.substring(0, 2))
+  let m = Number(e.substring(3, 5))
+  let s = 0
+  if (h > 0) {
+    s += h * 60 * 60
+  }
+  if (m > 0) {
+    s += m * 60
+  }
+  from.duration = s
+  from.durationName = `${h}灏忔椂${m}鍒嗛挓`
+  TimeShow.value = false
+}
+
+const onCancel2 = () => {
+  TimeShow.value = false
+}
+
+const onConfirm3 = () => {
+  let isOpen = false
+  cateList.value.forEach((item: any, index: number) => {
+    if (item.active) {
+      isOpen = true
+    }
+  })
+  if (!isOpen) return Toast('璇烽�夋嫨涓嶈壇椤�')
+  let arr: any = []
+  let total: any = 0
+  let name: any = ''
+  cateList.value.forEach((item: any, index: number) => {
+    if (item.active) {
+      if (item.num <= 0) {
+        return Toast('涓嶈壇鏁伴噺蹇呴』澶т簬0')
+      }
+      total = total += item.num
+      arr.push(item)
+      name += item.name + item.num + '锛�'
+    }
+  })
+  if (total !== produceFrom.undesirable) return Toast('涓嶈壇鏁板繀椤荤瓑浜庝骇鍑轰笉鑹暟')
+  from.defective = arr
+  from.defectiveName = name
+  show.value = 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 complianceRate = computed(() => {
-        if (arrType.value.length === 0) return 0;
-        if (!produceFrom.qualified && !produceFrom.undesirable) return 0;
-        if (!from.duration) return 0;
-        if (!arrType.value[from.index].num) return 0;
-        // 鎸変欢璁$畻
-        // if (infoBox.value.type == 0) {
-            if (arrType.value[from.index].unqualified == 1) {   // 鏄惁璁″叆涓嶈壇鍝�
-                let a = ((Number(produceFrom.qualified) + Number(produceFrom.undesirable)) / (from.duration / 3600)).toFixed(2)
-                let b = (arrType.value[from.index].num / (arrType.value[from.index].times / 3600)).toFixed(2)
-                console.log(a)
-                console.log(b)
-                return ((Number(a) / Number(b)) * 100).toFixed(2)
-                // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / )
-                // return total * infoBox.value.salary;
-            } else {
-                let a = (produceFrom.qualified / (from.duration / 3600)).toFixed(2)
-                let b = (arrType.value[from.index].num / (arrType.value[from.index].times / 3600)).toFixed(2)
-                console.log(a)
-                console.log(b)
-                return ((Number(a) / Number(b)) * 100).toFixed(2)
-                // return Number(from.qualified) * infoBox.value.salary;
-            }
-        // } else {
-        //     console.log('鎸夋椂闀�')
+// 淇敼浜у嚭
+const changeCC = (downType: string, num: number, recordId: string) => {
+  if (!num) return
+  if ((produceFrom.qualified + produceFrom.undesirable) > info.value.planNum) {
+    return Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘澶т簬璁″垝鏁伴噺', duration: 2000 })
+  }
+  if (num >= 0) {
+    from.defective = []
+    from.defectiveName = ''
+    // 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 = 1
+        djData.value = []
+        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 clickPerformanceType = (i: number) => {
+  from.index = i
+  arrType.value.forEach((item: any, index: number) => {
+    if (i === index) {
+      from.type = item.id
+    }
+    item.active = index === i
+  })
+}
+
+// 鍒犻櫎浜у嚭/鎶曟枡
+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
+      // 鑾峰彇宸ヨ祫缁╂晥鏁版嵁
+      queryList({
+        deleted: 0,
+        departId: res.data.factoryId,
+        materialId: res.data.materialId,
+        procedureId: res.data.procedureId
+      }).then((result: any) => {
+        if (result.code === 200) {
+          if (result.data && result.data.length > 0) {
+            result.data.forEach((item: any, index: number) => {
+              item.name = item.type == 0 ? '璁′欢' : '璁℃椂'
+              item.id = item.type
+              item.active = index == 0
+            })
+            arrType.value = result.data
+          } else {
+            arrType.value = []
+          }
+          // infoBox.value = result.data
+        }
+        // if (result.code === 200) {
+        //     infoBox.value = result.data
         // }
-    })
-
-    const loading = ref(false);
-    const finished = ref(false);
-    let show = ref(false)
-    // 鐐规鏁版嵁
-    let djData: any = ref([])
-    // 鍒嗛〉鏌ヨ鏁版嵁
-    let page = reactive({
-        capacity: 10,
-        page: 0
-    })
-
-    let infoBox: any = ref(null)     // 宸ヨ祫缁╂晥
-
-    // 浜у嚭鍚堟牸/涓嶈壇
-    let produceFrom: any = reactive({
-        qualifiedId: '',
-        qualified: '',  // 鍚堟牸
-        undesirableId: '',
-        undesirable: '' // 涓嶈壇
-    })
-
-    let cateList:any = ref([])  // 涓嶈壇椤�
-
-    // 璇︽儏鏁版嵁
-    const info: any = ref({})
-
-    // 鍒ゆ柇鏄惁鑳芥彁浜�
-    let isSubmit: any = ref<boolean>(false)
-
-    // 涓嶈壇鏄庣粏
-    let undesirable: any = ref([])
-
-    // 鎶ュ簾鏄庣粏
-    let scrap: any = ref([])
-
-    // 鎵爜绫诲瀷
-    let type: any = ref('')
-
-    let arrType: 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 changeChecked = (i: number) => {
-        cateList.value[i].active = !cateList.value[i].active
+      })
     }
+  })
+}
 
-    const getData = () => {
-        categoryExtList({
-            cateType: "3"
-        }).then(res => {
-            if (res.code === 200) {
-                res.data.forEach((item: any) => {
-                    item.active = false
-                    item.num = ''
-                })
-                cateList.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) { // 鍚堟牸 | 娣峰悎
 
-    const onConfirm2 = (e: string) => {
-        let h = Number(e.substring(0, 2))
-        let m = Number(e.substring(3, 5))
-        let s = 0
-        if (h > 0) {
-            s += h * 60 * 60
-        }
-        if (m > 0) {
-            s += m * 60
-        }
-        from.duration = s
-        from.durationName = `${h}灏忔椂${m}鍒嗛挓`
-        TimeShow.value = false
+      //         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 onCancel2 = () => {
-        TimeShow.value = false
+// 缂栬緫鎶曟枡/浜у嚭
+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 onConfirm3 = () => {
-        let isOpen = false
-        cateList.value.forEach((item: any, index: number) => {
-            if (item.active) {
-                isOpen = true
-            }
+// 纭鎶ュ伐
+const submit = () => {
+  if (info.value.bomType === 1) {  // 鎷夊紡
+    console.log('鎷夊紡')
+    statisticsData.value = []
+    if (produceFrom.qualified <= 0 && produceFrom.undesirable <= 0) {
+      Toast.fail({ message: '浜у嚭鏄庣粏涓嶈兘涓虹┖' })
+      return
+    }
+    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
         })
-        if (!isOpen) return Toast('璇烽�夋嫨涓嶈壇椤�')
-        let arr: any = []
-        let total: any = 0
-        let name: any = ''
-        cateList.value.forEach((item: any, index: number) => {
-            if (item.active) {
-                if (item.num <= 0) {
-                    return Toast('涓嶈壇鏁伴噺蹇呴』澶т簬0')
-                }
-                total = total += item.num
-                arr.push(item)
-                name += item.name + 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
         })
-        if (total !== produceFrom.undesirable) return Toast('涓嶈壇鏁板繀椤荤瓑浜庝骇鍑轰笉鑹暟')
-        from.defective = arr
-        from.defectiveName = name
-        show.value = false
+        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;
     }
-
-    // 鎶曟枡缁熻
-    const tlTotal = (): string => {
-        if (feedingData.value.length > 0) {
-            let total: number = 0
-            feedingData.value.forEach((element: any) => {
-                total = total + element.num
-            })
-            return `${total}`
-        }
-        return ''
+  } else {
+    console.log('鎺ㄥ紡')
+    if (feedingData.value.length === 0) {
+      Toast.fail({ message: '鎶曟枡鏄庣粏涓嶈兘涓虹┖' })
+      return
     }
-
-    // 淇敼浜у嚭
-    const changeCC = (downType: string, num: number, recordId: string) => {
-        if (!num) return
-        if ((produceFrom.qualified + produceFrom.undesirable) > info.value.planNum) {
-            return Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘澶т簬璁″垝鏁伴噺', duration: 2000 })
-        }
-        if (num >= 0) {
-            from.defective = []
-            from.defectiveName = ''
-            // dealWorkorderRecordStandard({
-            //     downType, num, recordId, workorderId: route.query.id
-            // }).then(res => {
-            //     if (res.code === 200) {
-            //         getOrocessRecordCC()
-            //     }
-            // })
+    if (produceFrom.qualified <= 0 && produceFrom.undesirable <= 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 {
-            if (downType == 0) {
-                produceFrom.qualified = 0
-            } else {
-                produceFrom.undesirable = 0
-            }
-            Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘灏忎簬0', duration: 2000 })
+          isSubmit.value = false
         }
-    }
-
-    // 璺宠浆鐐规
-    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 = 1
-                    djData.value = []
-                    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 clickPerformanceType = (i: number) => {
-        from.index = i
-        arrType.value.forEach((item: any, index: number) => {
-            if (i === index) {
-                from.type = item.id
-            }
-            item.active = index === i
+      } 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 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 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 jumpCC = () => {
-        router.push({ name: 'manualOutput', query: { id: route.query.id, num: produceData.value.length > 0 ? produceData.value[0].num : '' } })
+// 杩斿洖淇敼
+const gofh = () => {
+  statistics.value = false
+}
+
+// 纭鎶ュ伐
+const submitBG = () => {
+  // if (!from.duration || from.duration <= 0) {
+  //     return Toast('鎶ュ伐鏃堕暱涓嶈兘涓虹┖')
+  // }
+  let createUnqualifiedDTOList = from.defective.map((item: any) => {
+    return {
+      categoryId: item.id,
+      unQualifiedNum: item.num
     }
-
-    // 璺宠浆鎵嬪姩鎶曟枡
-    const jumpTL = () => {
-        router.push({ name: 'manualFeeding', query: { id: route.query.id } })
+  })
+  let createWorkorderRecordDTO = {
+    workorderId: route.query.id,
+    duration: from.duration ? from.duration : 0,
+    qualifiedNum: produceFrom.qualified ? produceFrom.qualified : 0,
+    unQualifiedNum: produceFrom.undesirable ? produceFrom.undesirable : 0
+  }
+  // id: route.query.id
+  comfirmDoneStandard({
+    createUnqualifiedDTOList,
+    createWorkorderRecordDTO
+  }).then(res => {
+    if (res.code === 200) {
+      Toast.success({ message: '鎶ュ伐鎴愬姛', forbidClick: true, duration: 2000 })
+      setTimeout(() => {
+        router.go(-2)
+      }, 2000)
     }
+  })
+}
 
-    // 鍏抽棴鎵爜缁勪欢
-    const closePopup = (): void => {
-        openCode.value = false
-    }
+onActivated(() => {
+  // $Bus.on('callback1', (res: any)=>{
+  //     console.log(res)
+  //     if (res == 1) {
+  //         djData.value = []
+  //         finished.value = false
+  //         page.page = 1
+  //         djData.value = []
+  //         pageDJs()
+  //     }
+  // })
+  // queryByIds()
+  // getOrocessRecords()
+  // getData()
+})
 
-    // 鑾峰彇鎵爜鍊�
-    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
-        })
-    }
+onMounted(() => {
+  // $Bus.on('callback1', (res: any)=>{
+  //     if (res == 1) {
+  //         djData.value = []
+  //         finished.value = false
+  //         page.page = 1
+  //         djData.value = []
+  //         pageDJs()
+  //     }
+  // })
+  // pageDJs()
 
-    // 璺宠浆鎵嬪姩鎶曟枡
-    const jump = () => {
-        router.push({ name: 'manualFeeding', query: { id: route.query.id } })
-    }
+  queryByIds()
+  getOrocessRecords()
+  getData()
 
-    // 璺宠浆鎵爜鎶曟枡
-    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
-                // 鑾峰彇宸ヨ祫缁╂晥鏁版嵁
-                queryList({
-                    deleted: 0,
-                    departId: res.data.factoryId,
-                    materialId: res.data.materialId,
-                    procedureId: res.data.procedureId
-                }).then((result: any) => {
-                    if (result.code === 200) {
-                        if (result.data && result.data.length > 0) {
-                            result.data.forEach((item: any, index: number) => {
-                                item.name = item.type == 0 ? '璁′欢' : '璁℃椂'
-                                item.id = item.type
-                                item.active = index == 0
-                            })
-                            arrType.value = result.data
-                        } else {
-                            arrType.value = []
-                        }
-                        // infoBox.value = result.data
-                    }
-                    // if (result.code === 200) {
-                    //     infoBox.value = result.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 (produceFrom.qualified <= 0 && produceFrom.undesirable <= 0) {
-                Toast.fail({ message: '浜у嚭鏄庣粏涓嶈兘涓虹┖' })
-                return
-            }
-            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
-            }
-            if (produceFrom.qualified <= 0 && produceFrom.undesirable <= 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 = () => {
-        // if (!from.duration || from.duration <= 0) {
-        //     return Toast('鎶ュ伐鏃堕暱涓嶈兘涓虹┖')
-        // }
-        let createUnqualifiedDTOList = from.defective.map((item: any) => {
-            return {
-                categoryId: item.id,
-                unQualifiedNum: item.num
-            }
-        })
-        let createWorkorderRecordDTO = {
-            workorderId: route.query.id,
-            duration: from.duration ? from.duration : 0,
-            qualifiedNum: produceFrom.qualified ? produceFrom.qualified : 0,
-            unQualifiedNum: produceFrom.undesirable ? produceFrom.undesirable : 0
-        }
-        // id: route.query.id
-        comfirmDoneStandard({
-            createUnqualifiedDTOList,
-            createWorkorderRecordDTO
-        }).then(res => {
-            if (res.code === 200) {
-                Toast.success({ message: '鎶ュ伐鎴愬姛', forbidClick: true, duration: 2000 })
-                setTimeout(() => {
-                    router.go(-2)
-                }, 2000)
-            }
-        })
-    }
-
-    onActivated(() => {
-        // $Bus.on('callback1', (res: any)=>{
-        //     console.log(res)
-        //     if (res == 1) {
-        //         djData.value = []
-        //         finished.value = false
-        //         page.page = 1
-        //         djData.value = []
-        //         pageDJs()
-        //     }
-        // })
-        // queryByIds()
-        // getOrocessRecords()
-        // getData()
-    })
-
-    onMounted(() => {
-        // $Bus.on('callback1', (res: any)=>{
-        //     if (res == 1) {
-        //         djData.value = []
-        //         finished.value = false
-        //         page.page = 1
-        //         djData.value = []
-        //         pageDJs()
-        //     }
-        // })
-        // pageDJs()
-
-        queryByIds()
-        getOrocessRecords()
-        getData()
-
-        // getOrocessRecordCC()
-    })
+  // getOrocessRecordCC()
+})
 </script>
 
 <style lang="scss" scoped>
-    .bg {
-        width: 100%;
-        /*height: 100%;*/
-        position: absolute;
-        background: #F7F7F7;
-        .bg_plan {
-            width: 100%;
-            // height: 98px;
-            padding: 30px;
-            box-sizing: border-box;
-            background: #FFFFFF;
-            margin-bottom: 40px;
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            span {
-                font-size: 30px;
-                font-family: PingFangSC-Regular, PingFang SC;
-                font-weight: 400;
-                color: #222222;
-                b {
-                    color: red;
-                }
-            }
-            .bg_plan_nr {
-                display: flex;
-                flex-direction: column;
-                span {
-                    font-size: 24px;
-                    font-family: PingFangSC-Regular, PingFang SC;
-                    font-weight: 400;
-                    color: #666666;
-                    margin-top: 20px;
-                    &:first-child {
-                        font-size: 32px;
-                        font-family: PingFangSC-Medium, PingFang SC;
-                        font-weight: 500;
-                        color: #333333;
-                        margin-top: 0 !important;
-                    }
-                }
-            }
-            .bg_plan_label_val {
-                display: flex;
-                align-items: center;
-                span {
-                    font-size: 28px;
-                    font-family: PingFangSC-Regular, PingFang SC;
-                    font-weight: 400;
-                    color: #999999;
-                }
-                img {
-                    width: 12px;
-                    height: 24px;
-                    margin-left: 20px;
-                }
-            }
-        }
-        .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_cate {
-            width: 100%;
-            height: 88px;
-            background: #FFFFFF;
-            margin-top: 20px;
-            display: flex;
-            align-items: center;
-            .active {
-                box-sizing: border-box;
-                color: #305ED5 !important;
-                border-bottom: 2PX solid #305ED5;
-            }
-            .bg_cate_item {
-                flex: 1;
-                height: 100%;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                font-size: 30px;
-                font-family: PingFangSC-Regular, PingFang SC;
-                font-weight: 400;
-                color: #555555;
-            }
-        }
-        .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_h {
-                    width: 100%;
-                    padding: 0 30px;
-                    box-sizing: border-box;
-                    background: white;
-                    .bg_list_item_num {
-                        width: 100%;
-                        min-height: 98px;
-                        background: white;
-                        display: flex;
-                        justify-content: center;
-                        align-items: center;
-                        border-bottom: 1PX solid #E5E5E5;
-                        &:last-child {
-                            border: none !important;
-                        }
-                        .kong {
-                            text-align: center;
-                            font-size: 25px;
-                            padding: 30px 0;
-                            background: #ffffff;
-                        }
-                        .bg_list_item_num_item {
-                            width: 100%;
-                            height: 100%;
-                            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_list {
-                                display: flex;
-                                align-items: center;
-                                .active {
-                                    background: #305ED5 !important;
-                                    color: #FFFFFF !important;
-                                }
-                                .bg_list_item_num_item_list_item {
-                                    width: 116px;
-                                    height: 62px;
-                                    line-height: 62px;
-                                    text-align: center;
-                                    background: #F2F2F2;
-                                    border-radius: 8px;
-                                    font-size: 26px;
-                                    font-family: PingFangSC-Regular, PingFang SC;
-                                    font-weight: 400;
-                                    color: #333333;
-                                    margin-right: 20px;
-                                    &:last-child {
-                                        margin: 0 !important;
-                                    }
-                                }
-                            }
-                            .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;
-                            }
-                            img {
-                                width: 12px;
-                                height: 24px;
-                                margin-left: 20px;
-                            }
-                            span {
-                                flex-shrink: 0;
-                                overflow: hidden;
-                                text-overflow: ellipsis;
-                                white-space: nowrap;
-                                b {
-                                    font-size: 30px;
-                                    color: red;
-                                    margin-right: 5px;
-                                }
-                                .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;
-                                .color1 {
-                                    font-size: 28px;
-                                    font-family: PingFangSC-Regular, PingFang SC;
-                                    font-weight: 400;
-                                    color: #333333;
-                                }
-                                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
-                                }
-                                .wulll {
-                                    width: 400px;
-                                    text-align: right;
-                                    overflow: hidden;
-                                    white-space: nowrap;
-                                    text-overflow: ellipsis;
-                                }
-                                span {
-                                    font-size: 28px;
-                                    font-family: PingFangSC-Regular, PingFang SC;
-                                    font-weight: 400;
-                                    color: #999999;
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        .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_submit1 {
-                width: 690px;
-                height: 76px;
-                background: #FFFFFF;
-                border-radius: 36px;
-                border: 1px solid #E5E5E5;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                img {
-                    width: 28px;
-                    height: 28px;
-                    margin-right: 12px;
-                }
-                span {
-                    font-size: 26px;
-                    font-family: PingFangSC-Regular, PingFang SC;
-                    font-weight: 400;
-                    color: #305ED5;
-                }
-            }
-            .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: 800px;
-            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 {
-                width: 100%;
-                max-height: calc(100% - 133px);
-                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 {
-            width: 100%;
-            height: 800px;
-            padding: 30px;
-            box-sizing: border-box;
-            display: flex;
-            flex-direction: column;
-            .bl_head {
-                width: 100%;
-                height: 50px;
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-                span {
-                    font-size: 28px;
-                    color: #222222;
-                    &:nth-child(2) {
-                        font-size: 32px !important;
-                    }
-                }
-                img {
-                    width: 28px;
-                    height: 28px;
-                }
-            }
-            .bl_footer {
-                width: 100%;
-                height: 88px;
-                line-height: 88px;
-                text-align: center;
-                background: #305ED5;
-                border-radius: 8px;
-                font-size: 32px;
-                font-family: PingFangSC-Medium, PingFang SC;
-                font-weight: 500;
-                color: #FFFFFF;
-                margin-top: 30px;
-            }
-            .bl_list {
-                width: 100%;
-                height: calc(100% - 168px);
-                overflow-y: scroll;
-                margin-top: 30px;
-                .bl_list_item {
-                    width: 100%;
-                    height: 96px;
-                    display: flex;
-                    align-items: center;
-                    justify-content: space-between;
-                    border-bottom: 1PX solid #E5E5E5;
-                    &:last-child {
-                        border: none !important;
-                    }
-                    .bl_list_item_left {
-                        flex: 1;
-                        display: flex;
-                        align-items: center;
-                        input {
-                            width: 30px;
-                            height: 30px;
-                            border: 1PX solid #CCCCCC;
-                            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%;
-                            padding: 0 30px;
-                            box-sizing: border-box;
-                            text-align: right;
-                            font-size: 28px;
-                            color: #333333;
-                            border-radius: 10px;
-                            border: 1PX solid #CCCCCC;
-                            &::-webkit-input-placeholder {
-                                font-size: 28px;
-                                font-family: PingFangSC-Regular, PingFang SC;
-                                font-weight: 400;
-                                color: #999999;
-                            }
-                        }
-                    }
-                }
-            }
-        }
+.bg {
+  width: 100%;
+  /*height: 100%;*/
+  position: absolute;
+  background: #F7F7F7;
+
+  .bg_plan {
+    width: 100%;
+    // height: 98px;
+    padding: 30px;
+    box-sizing: border-box;
+    background: #FFFFFF;
+    margin-bottom: 40px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+
+    span {
+      font-size: 30px;
+      font-family: PingFangSC-Regular, PingFang SC;
+      font-weight: 400;
+      color: #222222;
+
+      b {
+        color: red;
+      }
     }
-</style>
+
+    .bg_plan_nr {
+      display: flex;
+      flex-direction: column;
+
+      span {
+        font-size: 24px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #666666;
+        margin-top: 20px;
+
+        &:first-child {
+          font-size: 32px;
+          font-family: PingFangSC-Medium, PingFang SC;
+          font-weight: 500;
+          color: #333333;
+          margin-top: 0 !important;
+        }
+      }
+    }
+
+    .bg_plan_label_val {
+      display: flex;
+      align-items: center;
+
+      span {
+        font-size: 28px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #999999;
+      }
+
+      img {
+        width: 12px;
+        height: 24px;
+        margin-left: 20px;
+      }
+    }
+  }
+
+  .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_cate {
+    width: 100%;
+    height: 88px;
+    background: #FFFFFF;
+    margin-top: 20px;
+    display: flex;
+    align-items: center;
+
+    .active {
+      box-sizing: border-box;
+      color: #305ED5 !important;
+      border-bottom: 2PX solid #305ED5;
+    }
+
+    .bg_cate_item {
+      flex: 1;
+      height: 100%;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      font-size: 30px;
+      font-family: PingFangSC-Regular, PingFang SC;
+      font-weight: 400;
+      color: #555555;
+    }
+  }
+
+  .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_h {
+        width: 100%;
+        padding: 0 30px;
+        box-sizing: border-box;
+        background: white;
+
+        .bg_list_item_num {
+          width: 100%;
+          min-height: 98px;
+          background: white;
+          display: flex;
+          justify-content: center;
+          align-items: center;
+          border-bottom: 1PX solid #E5E5E5;
+
+          &:last-child {
+            border: none !important;
+          }
+
+          .kong {
+            text-align: center;
+            font-size: 25px;
+            padding: 30px 0;
+            background: #ffffff;
+          }
+
+          .bg_list_item_num_item {
+            width: 100%;
+            height: 100%;
+            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_list {
+              display: flex;
+              align-items: center;
+
+              .active {
+                background: #305ED5 !important;
+                color: #FFFFFF !important;
+              }
+
+              .bg_list_item_num_item_list_item {
+                width: 116px;
+                height: 62px;
+                line-height: 62px;
+                text-align: center;
+                background: #F2F2F2;
+                border-radius: 8px;
+                font-size: 26px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #333333;
+                margin-right: 20px;
+
+                &:last-child {
+                  margin: 0 !important;
+                }
+              }
+            }
+
+            .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;
+            }
+
+            img {
+              width: 12px;
+              height: 24px;
+              margin-left: 20px;
+            }
+
+            span {
+              flex-shrink: 0;
+              overflow: hidden;
+              text-overflow: ellipsis;
+              white-space: nowrap;
+
+              b {
+                font-size: 30px;
+                color: red;
+                margin-right: 5px;
+              }
+
+              .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;
+
+              .color1 {
+                font-size: 28px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #333333;
+              }
+
+              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
+              }
+
+              .wulll {
+                width: 400px;
+                text-align: right;
+                overflow: hidden;
+                white-space: nowrap;
+                text-overflow: ellipsis;
+              }
+
+              span {
+                font-size: 28px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #999999;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+
+  .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_submit1 {
+      width: 690px;
+      height: 76px;
+      background: #FFFFFF;
+      border-radius: 36px;
+      border: 1px solid #E5E5E5;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+
+      img {
+        width: 28px;
+        height: 28px;
+        margin-right: 12px;
+      }
+
+      span {
+        font-size: 26px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #305ED5;
+      }
+    }
+
+    .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: 800px;
+    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 {
+      width: 100%;
+      max-height: calc(100% - 133px);
+      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 {
+    width: 100%;
+    height: 800px;
+    padding: 30px;
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+
+    .bl_head {
+      width: 100%;
+      height: 50px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+
+      span {
+        font-size: 28px;
+        color: #222222;
+
+        &:nth-child(2) {
+          font-size: 32px !important;
+        }
+      }
+
+      img {
+        width: 28px;
+        height: 28px;
+      }
+    }
+
+    .bl_footer {
+      width: 100%;
+      height: 88px;
+      line-height: 88px;
+      text-align: center;
+      background: #305ED5;
+      border-radius: 8px;
+      font-size: 32px;
+      font-family: PingFangSC-Medium, PingFang SC;
+      font-weight: 500;
+      color: #FFFFFF;
+      margin-top: 30px;
+    }
+
+    .bl_list {
+      width: 100%;
+      height: calc(100% - 168px);
+      overflow-y: scroll;
+      margin-top: 30px;
+
+      .bl_list_item {
+        width: 100%;
+        height: 96px;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        border-bottom: 1PX solid #E5E5E5;
+
+        &:last-child {
+          border: none !important;
+        }
+
+        .bl_list_item_left {
+          flex: 1;
+          display: flex;
+          align-items: center;
+
+          input {
+            width: 30px;
+            height: 30px;
+            border: 1PX solid #CCCCCC;
+            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%;
+            padding: 0 30px;
+            box-sizing: border-box;
+            text-align: right;
+            font-size: 28px;
+            color: #333333;
+            border-radius: 10px;
+            border: 1PX solid #CCCCCC;
+
+            &::-webkit-input-placeholder {
+              font-size: 28px;
+              font-family: PingFangSC-Regular, PingFang SC;
+              font-weight: 400;
+              color: #999999;
+            }
+          }
+        }
+      }
+    }
+  }
+}</style>
diff --git a/minipro_standard/App.vue b/minipro_standard/App.vue
index d52fd35..def0339 100644
--- a/minipro_standard/App.vue
+++ b/minipro_standard/App.vue
@@ -15,6 +15,7 @@
 	/*姣忎釜椤甸潰鍏叡css */
 	@import "@/uni_modules/uview-ui/index.scss";
 	@import "common/css/lib.css";
+	@import "common/css/common.css";
 	// page {
 	// 	background-color: #F3F6F9 !important;
 	// }
diff --git a/minipro_standard/common/config.js b/minipro_standard/common/config.js
index 15d4a4d..0d13af6 100644
--- a/minipro_standard/common/config.js
+++ b/minipro_standard/common/config.js
@@ -1,5 +1,30 @@
-module.exports = {
-    // baseUrl: 'http://106.14.20.42/test_hfznzz/',
-    // baseUrl: 'https://hefei.dtkey.cn/test_hfznzz/',
-    baseUrl: 'https://dmtest.ahapp.net/doumeeplant_api/'
+module.exports = {
+	// baseUrl: 'http://106.14.20.42/test_hfznzz/',
+	// baseUrl: 'https://hefei.dtkey.cn/test_hfznzz/',
+	baseUrl: 'http://192.168.0.15:10021/',
+	// baseUrl: 'https://dmtest.ahapp.net/doumeeplant_api',
+	phoneRegular: /^1[3456789]\d{9}$/,
+	mailboxRegular: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
+	positiveInteger: /^[0-9]*[1-9][0-9]*$/,
+	decimal: /^0$|^[1-9]\d{0,15}$|^[1-9]\d{0,15}\.{1}\d{1,4}$|^0\.{1}\d{1,4}$/g,
+	positiveIntegerDecimal: /^([1-9][0-9]*|0)(\.[0-9]?[1-9][1-9][1-9])?$/,
+	number: /^\d+(?:\.\d{1,4})?$/,
+	Attribute: {
+		HH: 'APPLIANCE_MIX',
+		HG: 'APPLIANCE_ONTEST',
+		BL: 'APPLIANCE_OFFTEST',
+		BF: 'APPLIANCE_USELESS'
+	},
+	QRCodeType: {
+		WL: 'WL',
+		CK: 'CK',
+		HW: 'HW',
+		GD: 'GD',
+		GZ: 'GZ',
+		SB: 'SB',
+		YG: 'YG',
+		ZKD: 'ZKD',
+		CKD: 'CKD',
+		RKD: 'RKD'
+	}
 }
diff --git a/minipro_standard/common/css/common.css b/minipro_standard/common/css/common.css
new file mode 100644
index 0000000..b9945ec
--- /dev/null
+++ b/minipro_standard/common/css/common.css
@@ -0,0 +1,8 @@
+.tips-label {
+	background: rgba(220,26,26,0.06);
+	padding: 18rpx 30rpx;
+	font-size: 26rpx;
+	font-weight: 400;
+	color: #DC1A1A;
+	line-height: 36rpx;
+}
\ No newline at end of file
diff --git a/minipro_standard/common/css/lib.css b/minipro_standard/common/css/lib.css
index 2ed9d1f..3de5db6 100644
--- a/minipro_standard/common/css/lib.css
+++ b/minipro_standard/common/css/lib.css
@@ -13,7 +13,7 @@
 .wp{ width: 94%; margin: 0 auto;}
 .w30{ width: 30%;}.w40{ width: 40%;}.w47{ width: 47%;}.w48{ width: 48%;}.w49{ width: 49%;}.w50{ width: 50%;}.w60{ width: 60%;}.w80{ width: 80%;}.w90{ width: 90%;}
 
-.bg_m{background-color: #F3F6F9;}.bg_fa{ background-color: #fafafa;}.bg_f2{ background-color: #f2f2f2;}.bg_f1{ background-color: #f1f1f1;}.bg_f5{ background-color: #f5f5f5;}.bg_f6{ background-color: #f6f6f6;}.bg_f7{ background-color: #f7f7f7;}.bg_f8{ background-color: #f8f8f8;}.bg_e{ background-color: #eee;}.bg_d{ background-color: #ddd;}.bg_w{ background-color: #fff;}.bg_3{ background-color: #333;}
+.bg_m{background-color: #305ED5;}.bg_fa{ background-color: #fafafa;}.bg_f2{ background-color: #f2f2f2;}.bg_f1{ background-color: #f1f1f1;}.bg_f5{ background-color: #f5f5f5;}.bg_f6{ background-color: #f6f6f6;}.bg_f7{ background-color: #f7f7f7;}.bg_f8{ background-color: #f8f8f8;}.bg_e{ background-color: #eee;}.bg_d{ background-color: #ddd;}.bg_w{ background-color: #fff;}.bg_3{ background-color: #333;}
 
 .rd4{border-radius: 4rpx;}.rd5{border-radius: 5rpx;}.rd6{border-radius: 6rpx;}.rd8{border-radius: 8rpx;}.rd10{border-radius: 10rpx;}.rd15{border-radius: 15rpx;}.rd20{border-radius: 20rpx;}.rd30{border-radius: 30rpx;}.rd40{border-radius: 40rpx;}.rd50{border-radius: 50rpx;}.rd60{border-radius: 60rpx;}.rd70{border-radius: 70rpx;}.rd80{border-radius: 80rpx;}.rd90{border-radius: 90rpx;}.rd100{border-radius: 100rpx;}.rd120{border-radius: 120rpx;}.rdhalf{  border-radius:50%}
 
@@ -44,7 +44,8 @@
 .img16{ width: 16rpx; height: 16rpx;}
 .img20{ width: 20rpx; height: 20rpx;}
 .img24{ width: 24rpx; height: 24rpx;}
-.img26{ width: 26rpx; height: 26rpx;}
+.img26{ width: 26rpx; height: 26rpx;}
+.img28{ width: 28rpx; height: 28rpx;}
 .img30{ width: 30rpx; height: 30rpx;}
 .img32{ width: 32rpx; height: 32rpx;}
 .img36{ width: 36rpx; height: 36rpx;}
@@ -71,23 +72,24 @@
 .bcover{  background-size: cover; background-position: center center; background-repeat:  no-repeat;}
 .bfull{ background-size: 100% 100%; background-position: center center; background-repeat:  no-repeat;}
 
-.b{ font-weight: bold;}
+.b{ font-weight: bold;}
+.n{ font-weight: 400;}
 .ibm{ display: inline-block; vertical-align: middle;}
 .bbox{ box-sizing: border-box;}
 .rauto{ margin-left:auto; margin-right:auto}
-.fixedBottom{position: fixed;		left: 0;		bottom: 0;		width: 100%;}
+.fixedBottom{position: fixed;		left: 0;		bottom: env(safe-area-inset-bottom);		width: 100%;}
 .lh1-6{line-height: 1.6;}
 .lh1-6{line-height: 1.6;}
 .lh1-8{line-height: 1.8;}
 .lh2{line-height: 2;}
 
-.sbtn{ display: inline-block; padding: 0.7em 2em;  border: 1rpx solid transparent; box-sizing: border-box; text-align: center;}
+.sbtn{ display: inline-block; padding: 0.3em 1em;  border: 1rpx solid transparent; box-sizing: border-box; text-align: center;}
 .mini{ font-size: 18rpx;}
 .med{ font-size: 26rpx;}
 .def{ font-size: 34rpx;}
 .sbtn_w100{ width: 100%; padding-left: 0; padding-right: 0;}
-.sbtn_green{ color: #fff; background:#65C35D; }
-.sbtn_green_rim{ color: #65C35D; border-color:#65C35D; }
+.sbtn_green{ color: #fff; background:#4275FC; }
+.sbtn_green_rim{ color: #4275FC; border-color:#4275FC; }
 .sbtn_black{ color: #fff; background:#333; }
 .sbtn_gray{ color: #333; background:#F7F7F7; }
 .sbtn_black_rim{ color: #333; border-color:#eee; }
@@ -112,21 +114,24 @@
 .shadowA{box-shadow: 0 0 5rpx 0 #ddd;}
 .shadowB{ position: relative;}
 .shadowB::after{ content: ""; display: block; width: 100%; height: 8rpx; box-shadow: 0 6rpx 12rpx rgba(0,0,0,.08); top: -8rpx; left: 0; position: absolute; }
-
-
-.orange{ color: #EA531B;}
-.green{ color: #65C35D;}
-.blue{ color: #3C77DA;}
-.red{ color: #f00;}
-.white{ color: #fff;}
 
-.mc{color:#216EEE}
-.wc{color:#F98107}
+.rp { position: relative; }
+.ap { position: absolute; }
+
+.orange{ color: #EA531B !important;}
+.green{ color: #65C35D !important;}
+.blue{ color: #3C77DA !important;}
+.red{ color: #f00 !important;}
+.white{ color: #fff !important;}
 
+.mc{color:#216EEE !important;}
+.wc{color:#F98107 !important;}
+
+.cm {color: #305ED5}
 .c1{color: #111}.c2{color: #222}.c3{ color: #333;}.c6{ color: #666;}.cc{ color: #ccc;}.cf{ color: #fff;}
 /* /deep/ .uicon-close .u-icon--right{ position: absolute; right: 30rpx; top: 30rpx; z-index: 999;} */
 .popCloseBtn{ position: absolute; width:50rpx; height:50rpx; right: 20rpx; top: 20rpx;}
 .fixedTL{ position: absolute; left: 0; top: 0;}
-.fixedTR{ position: absolute; right: 0; top: 0;}
+.fixedTR{ position: absolute; right: 0; top: 0;}
 
 .beyondO { white-space: nowrap; text-overflow: ellipsis; -webkit-text-overflow: ellipsis; overflow: hidden;}
diff --git a/minipro_standard/components/InOutInfo.vue b/minipro_standard/components/InOutInfo.vue
new file mode 100644
index 0000000..21a99fc
--- /dev/null
+++ b/minipro_standard/components/InOutInfo.vue
@@ -0,0 +1,82 @@
+<template>
+	<view class="p30 bg_w f26 info-style">
+		<view v-if="isOut" class="cm b f32">璁″垝鍑哄簱鏃ユ湡锛歿{ info.outPlandate }}</view>
+		<view v-else class="cm b f32">璁″垝鍏ュ簱鏃ユ湡锛歿{ info.inPlandate || info.planDate }}</view>
+		<view class="c2 mt25">
+			<text class="c6">鏉ユ簮绫诲瀷锛�</text>
+			{{ typeTstr(info.originType) }}
+		</view>
+		<view class="c2 mt25">
+			<text class="c6">鏉ユ簮鍗曞彿锛�</text>
+			{{ info.originCode || '-' }}
+		</view>
+		<view class="c2 mt25">
+			<text class="c6">鐢宠浜哄憳锛�</text>
+			{{ info.userName ? (info.userName + '/' + info.userDepartName) : (info.inUserName + '/' + info.inDepartName) }}
+		</view>
+		<view v-if="isOut" class="c2 mt25">
+			<text class="c6">鍏ュ簱鎺ユ敹浜猴細</text>
+			{{ info.originCode || '-' }}
+		</view>
+		<view class="c2 mt25">
+			<text class="c6">鐢宠鏃堕棿锛�</text>
+			{{ info.createTime || '-' }}
+		</view>
+		<view class="rd15 ptb25 plr25 bg_f7">
+			<view class="f26 b c2">澶囨敞锛�</view>
+			<view class="mt20">
+				<u-read-more :showHeight="60" :toggle="true" textIndent="0" closeText="灞曞紑" :shadowStyle="shadowStyle">
+					<rich-text :nodes="info.remark"></rich-text>
+					<!-- {{ info.remark }} -->
+				</u-read-more>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name:"InOutInfo",
+		props: {
+			isOut: {
+				type: Boolean,
+				default: true
+			},
+			info: {
+				type: Object,
+				default: () => {}
+			}
+		},
+		data() {
+			return {
+				types: [
+					{ name: '鍏ㄩ儴', id: '' },
+					{ name: '閲囪喘璁㈠崟', id: '0' },
+					{ name: '鐢熶骇宸ュ崟', id: '1' },
+					{ name: '閿�鍞鍗�', id: '2' },
+					{ name: '杞簱鍗�', id: '3'  },
+					{ name: '鐩樼偣鍗�', id: '4'  },
+				],
+				shadowStyle: {
+					backgroundImage: "linear-gradient(to top, #f7f7f7, rgba(247, 247, 247, 0.5))",
+					paddingTop: "50rpx",
+					marginTop: "-50rpx",
+					justifyContent: 'flex-end',
+					colors: '#333',
+				}
+			};
+		},
+		methods: {
+			typeTstr(type) {
+				let temp = this.types.find(item => item.id == type)
+				return temp ? temp.name : '-'
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+.info-style {
+	border-bottom: 20rpx #f7f7f7 solid;
+}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/components/LabelSelection.vue b/minipro_standard/components/LabelSelection.vue
new file mode 100644
index 0000000..6a26a84
--- /dev/null
+++ b/minipro_standard/components/LabelSelection.vue
@@ -0,0 +1,88 @@
+<template>
+	<scroll-view class="tag" scroll-x>
+		<view class="tag_list">
+			<view v-for="item in TagList"
+				:key="item.id"
+				:class="{'tag_item': true, 'tagActive': item.id == activeId}"
+				@click="change(item)">
+				<text>{{item.name}}</text>
+				<text v-if="isShow && item.num">({{item.num}})</text>
+			</view>
+		</view>
+	</scroll-view>
+</template>
+
+<script>
+	export default {
+		name: "LabelSelection",
+		props: {
+			TagList: Array,
+			isShow: Boolean
+		},
+		data() {
+			return {
+				activeId: ''
+			};
+		},
+		methods: {
+			change(item) {
+				if (this.activeId !== item.id) {
+					this.activeId = item.id
+					this.$emit('change', item.id)
+				}
+			}
+		},
+		watch: {
+			TagList: {
+				immediate: true,
+				handler(news, old) {
+					let list = news
+					if (list && list.length !== 0) {
+					    this.activeId = list[0].id
+					}
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.tag::-webkit-scrollbar {
+		width: 0 !important;
+	}
+	.tag::-webkit-scrollbar {
+		width: 0 !important;
+		height: 0;
+	}
+	.tag {
+		width: 100%;
+		padding: 5rpx 0;
+		box-sizing: border-box;
+		.tag_list {
+			width: 100%;
+			display: flex;
+			align-items: center;
+			flex-wrap: nowrap;
+			.tagActive {
+				background: $nav-color !important;
+				text {
+					color: #FFFFFF !important;
+				}
+			}
+			.tag_item {
+				min-width: 120rpx;
+				padding: 14rpx 24rpx;
+				border-radius: 26rpx;
+				text-align: center;
+				flex-shrink: 0;
+				margin-right: 20rpx;
+				border: 1rpx solid #CCCCCC;
+				text {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #555555;
+				}
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/components/Search.vue b/minipro_standard/components/Search.vue
new file mode 100644
index 0000000..347b379
--- /dev/null
+++ b/minipro_standard/components/Search.vue
@@ -0,0 +1,181 @@
+<template>
+	<view class="search">
+		<view class="search_box">
+			<view class="search_input">
+				<image src="@/static/ic_search@2x.png" alt="">
+				<input v-model="text" @keyup.enter="searchInput()" type="text" :placeholder="placeholder" />
+			</view>
+			<view class="search_operation" v-if="isShow">
+				<view class="search_operation_w"></view>
+				<image @click="openCate()" src="@/static/filter@2x.png" mode="widthFix">
+			</view>
+		</view>
+		<u-popup :show="open" :round="10" mode="bottom">
+			<scroll-view scroll-y class="content">
+				<slot name="content"></slot>
+			</scroll-view>
+			<view class="zhanwei"></view>
+			<view class="footer">
+				<view class="footer_close" @click="closes">閲嶇疆</view>
+				<view class="footer_submit" @click="submit">纭畾</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				text: '',
+				open: false
+			};
+		},
+		props: {
+			isShow: Boolean,
+			placeholder: String
+		},
+		methods: {
+			// 鎼滅储妗嗘悳绱�
+			searchInput() {
+				this.$emit('searchInput', this.text)
+			},
+			// 鎵撳紑寮圭獥
+			openCate() {
+				this.open = true
+			},
+			// 閲嶇疆
+			closes() {
+				this.open = false
+				this.text = ''
+				this.$emit('reset', this.text)
+			},
+			// 鎼滅储鎻愪氦
+			submit() {
+				this.open = false
+				this.$emit('submit')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.search {
+	    width: 100%;
+	    height: 68rpx;
+	    display: flex;
+	    align-items: center;
+	    .zhanwei {
+	        height: 180rpx;
+	        background: #ffffff;
+	    }
+	    .content {
+	        padding: 30rpx 30rpx 0 30rpx;
+			width: 100%;
+			height: 800rpx;
+			box-sizing: border-box;
+	    }
+	    .footer {
+	        width: 100%;
+	        display: flex;
+	        align-items: center;
+	        justify-content: space-between;
+	        padding-left: 40rpx;
+	        padding-right: 40rpx;
+	        padding-bottom: 64rpx;
+	        box-sizing: border-box;
+	        position: fixed;
+	        bottom: 0;
+	        left: 0;
+	        background: #ffffff;
+	        z-index: 99;
+	        .footer_close {
+	            flex: 1;
+	            padding: 28rpx 0;
+	            box-sizing: border-box;
+	            margin-right: 22rpx;
+	            font-size: 32rpx;
+	            font-weight: 500;
+	            color: #999999;
+	            background: #F7F7F7;
+	            display: flex;
+	            align-items: center;
+	            justify-content: center;
+	        }
+	        .footer_submit {
+	            flex: 1;
+	            padding: 28rpx 0;
+	            box-sizing: border-box;
+	            font-size: 32rpx;
+	            font-weight: 500;
+	            color: #ffffff;
+	            background: $nav-color;
+	            display: flex;
+	            align-items: center;
+	            justify-content: center;
+	        }
+	    }
+		.search_box {
+			width: 100%;
+			display: flex;
+			align-items: center;
+			.search_input {
+			    flex: 1;
+			    height: 100%;
+			    background: #F7F7F7;
+			    border-radius: 8rpx;
+			    display: flex;
+			    align-items: center;
+			    padding: 15rpx 30rpx;
+			    box-sizing: border-box;
+			    image {
+			        width: 28rpx;
+			        height: 28rpx;
+			        margin-right: 10rpx;
+			    }
+			    input {
+			        width: 100%;
+			        border: none;
+			        outline: none;
+			        background: #F7F7F7;
+			        font-size: 26rpx;
+			    }
+			    input::-webkit-input-placeholder { /* WebKit browsers */
+			        font-size: 26rpx;
+			        font-weight: 400;
+			        color: #B2B2B2;
+			    }
+			    input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
+			        font-size: 26rpx;
+			        font-weight: 400;
+			        color: #B2B2B2;
+			    }
+			    input::-moz-placeholder { /* Mozilla Firefox 19+ */
+			        font-size: 26rpx;
+			        font-weight: 400;
+			        color: #B2B2B2;
+			    }
+			    input:-ms-input-placeholder { /* Internet Explorer 10+ */
+			        font-size: 26rpx;
+			        font-weight: 400;
+			        color: #B2B2B2;
+			    }
+			}
+			.search_operation {
+			    flex-shrink: 0;
+			    /*width: 150rpx;*/
+			    display: flex;
+			    justify-content: flex-end;
+			    align-items: center;
+			    /*margin-left: 30rpx;*/
+			    image {
+			        width: 44rpx;
+			        height: 44rpx;
+			    }
+			    .search_operation_w {
+			        width: 30rpx;
+			    }
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/components/SelectMultipleMaterial.vue b/minipro_standard/components/SelectMultipleMaterial.vue
new file mode 100644
index 0000000..4939502
--- /dev/null
+++ b/minipro_standard/components/SelectMultipleMaterial.vue
@@ -0,0 +1,274 @@
+<template>
+	<u-popup :show="show" :round="10" closeable @close="show=false">
+		<view class="material-content bbox p30 rp">
+			<view class="tc b f24 c2 mb20">閫夋嫨鐗╂枡</view>
+			<v-Search ref="V" @searchInput="searchInput" @submit="submit" :isShow="false" placeholder="鎼滅储鐗╂枡鍚嶇О/缂栫爜">
+			</v-Search>
+			<div class="content_total">鍏眥{pages.total}}鏉℃暟鎹�</div>
+			<view class="scroll-content">
+				<u-list @scrolltoupper="scrolltoupper" @scrolltolower="scrolltolower">
+					<u-list-item v-for="(item1, index) in list" :key="index">
+						<view class="flex mb20" @click="selectMaterialAction(index)">
+							<view class="img36 mr20 pt10">
+								<u-checkbox-group style="display: block;" name="" @change="selectMaterialAction(index)">
+									<u-checkbox :checked="item1.isActive"></u-checkbox>
+								</u-checkbox-group>
+							</view>
+							<view class="fx1">
+								<div class="page_content_title_top">
+									<span>{{ item1.materialName + ' | ' + item1.materialCode }}</span>
+								</div>
+								<div class="page_content_title_bottom">
+									<span class="green" v-if="item1.qualityType == 0">
+										鍚堟牸
+										<text class="c1" decode>{{ splite }}</text>
+									</span>
+									<span class="orange" v-else-if="item1.qualityType == 1">
+										涓嶈壇
+										<text class="c1" decode>{{ splite }}</text>
+									</span>
+									<span class="red" v-else-if="item1.qualityType == 2">
+										鎶ュ簾
+										<text class="c1" decode>{{ splite }}</text>
+									</span>
+									<span v-else>
+										-
+										<text class="c1" decode>{{ splite }}</text>
+									</span>
+									<span>
+										{{item1.procedureName ? item1.procedureName : '-'}}
+										<text class="c1" decode>{{ splite }}</text>
+									</span>
+									<span>{{item1.batch ? item1.batch : '-'}}</span>
+								</div>
+								<div class="mt20 plr25 ptb20 bg_f7 f26">
+									<div class="c2 mb10"><span class="c6">璐т綅锛�</span>{{ item1.locationName }}</div>
+									<div class="c2"><span class="c6">鏁伴噺锛�</span>{{ item1.num }}{{ item1.unitName }}</div>
+								</div>
+							</view>
+						</view>
+					</u-list-item>
+				</u-list>
+			</view>
+				<view style="height: 98rpx;"></view>
+			<!-- <view class="">
+				<u-safe-bottom></u-safe-bottom>
+			</view> -->
+			<view class="fixedBottom bottom cY">
+				<view class="fx1 bbox plr30">
+					<u-checkbox-group style="display: block;" name="" @change="selectAll()">
+						<u-checkbox :checked="isAll" label="鍏ㄩ��"></u-checkbox>
+					</u-checkbox-group>
+				</view>
+				<view class="submit sbtn_green bbox tc">鎻愪氦()</view>
+			</view>
+		</view>
+	</u-popup>
+</template>
+
+<script>
+	import vSearch from '@/components/Search.vue'
+	export default {
+		name: "selectMaterial",
+		components: {
+			vSearch
+		},
+		data() {
+			return {
+				show: false,
+				splite:'&nbsp;|&nbsp;',
+				isAll: false,
+				pages: {
+					size: 10,
+					index: 1,
+					total: 0
+				},
+				list: []
+			};
+		},
+		methods: {
+			open(target) {
+				this.show = true
+				this.workorderId = target.workorderId
+				this.deviceId = target.deviceId
+				this.list = []
+				this.pages = {
+					size: 10,
+					index: 1,
+					total: 0
+				}
+				this.loadData()
+			},
+			loadData() {
+				this.list = [{
+					batch: '1',
+					materialName: 'dsadas',
+					materialCode: '1m0001',
+					locationName: 'a浠�2鍙蜂綅',
+					num: '1',
+					unitName: '鍧�',
+					qualityType: 0,
+					procedureName: '鍘嬪埗',
+					isActive: false
+				},
+				{
+					batch: '1',
+					materialName: 'dsadas',
+					materialCode: '1m0001',
+					locationName: 'a浠�2鍙蜂綅',
+					num: '1',
+					unitName: '鍧�',
+					qualityType: 0,
+					procedureName: '鍘嬪埗',
+					isActive: false
+				},
+				{
+					batch: '1',
+					materialName: 'dsadas',
+					materialCode: '1m0001',
+					locationName: 'a浠�2鍙蜂綅',
+					num: '1',
+					unitName: '鍧�',
+					qualityType: 0,
+					procedureName: '鍘嬪埗',
+					isActive: false
+				},
+				{
+					batch: '1',
+					materialName: 'dsadas',
+					materialCode: '1m0001',
+					locationName: 'a浠�2鍙蜂綅',
+					num: '1',
+					unitName: '鍧�',
+					qualityType: 0,
+					procedureName: '鍘嬪埗',
+					isActive: false
+				},
+				{
+					batch: '1',
+					materialName: 'dsadas',
+					materialCode: '1m0001',
+					locationName: 'a浠�2鍙蜂綅',
+					num: '1',
+					unitName: '鍧�',
+					qualityType: 0,
+					procedureName: '鍘嬪埗',
+					isActive: false
+				},
+				{
+					batch: '1',
+					materialName: 'dsadas',
+					materialCode: '1m0001',
+					locationName: 'a浠�2鍙蜂綅',
+					num: '1',
+					unitName: '鍧�',
+					qualityType: 0,
+					procedureName: '鍘嬪埗',
+					isActive: false
+				},
+				{
+					batch: '1',
+					materialName: 'dsadas',
+					materialCode: '1m0001',
+					locationName: 'a浠�2鍙蜂綅',
+					num: '1',
+					unitName: '鍧�',
+					qualityType: 0,
+					procedureName: '鍘嬪埗',
+					isActive: false
+				}
+				]
+			},
+			scrolltoupper() {
+				this.loadData()
+			},
+			scrolltolower() {
+				this.loadData()
+			},
+			selectMaterialAction(index) {
+				// console.log('12');
+				this.list[index].isActive = !this.list[index].isActive
+			},
+			selectAll() {}
+		}
+	}
+	/* 
+	*/
+</script>
+
+<style lang="scss" scoped>
+	.material-content {
+		display: flex;
+		flex-direction: column;
+		height: 1200rpx;
+		box-sizing: border-box;
+		.scroll-content {
+			height: calc(1100rpx - env(safe-area-inset-bottom));
+			overflow: scroll;
+		}
+	}
+
+	.content_total {
+		margin-top: 20rpx;
+		margin-bottom: 20rpx;
+		// padding: 24rpx 30rpx;
+		// background: #F7F7F7;
+		font-size: 24rpx;
+		font-weight: 400;
+		color: #666666;
+	}
+
+	.page_content_title_top {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+
+		span {
+			&:nth-child(1) {
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #222222;
+			}
+
+			&:nth-child(2) {
+				flex-shrink: 0;
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #333333;
+
+				// span {
+				// 	font-size: 24rpx;
+				// 	color: $nav-color;
+				// }
+			}
+		}
+	}
+
+	.page_content_title_bottom {
+		margin-top: 24rpx;
+
+		span {
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #666666;
+		}
+	}
+
+	.page_content_title {
+		display: flex;
+		flex-direction: column;
+		margin-bottom: 10rpx;
+		
+
+
+
+	}
+	.bottom {
+		height: 98rpx;
+		.submit {
+			width: 272rpx;
+			height: 98rpx;
+			line-height: 98rpx;
+		}
+	}
+</style>
diff --git a/minipro_standard/components/Tooling.vue b/minipro_standard/components/Tooling.vue
new file mode 100644
index 0000000..8bf3186
--- /dev/null
+++ b/minipro_standard/components/Tooling.vue
@@ -0,0 +1,144 @@
+<template>
+	<u-popup :show="show" position="bottom" :round="10" closeable @close="show=false">
+		<div class="content">
+			<div :class="{ 'content_top': status }" class="content_search">
+				<v-Search ref="V" @searchInput="searchInput" @submit="submit" :isShow="false" placeholder="鎼滅储宸ヨ缂栫爜">
+				</v-Search>
+				<template v-if="classification">
+					<div class="content_search_x"></div>
+					<v-LableSelection :TagList="tagList" :isShow="false" @change="clickTag"></v-LableSelection>
+				</template>
+			</div>
+			<div class="content_total">鍏眥{page.total}}鏉℃暟鎹�</div>
+			<div class="content_list">
+				<u-list>
+					<u-list-item v-for="(item, i) in list" :key="i">
+						<div class="content_list_item" @click="jump(item)">
+							<div class="content_list_item_status success" v-if="item.smodelLabel === Attribute.HG">
+								[{{item.smodelCode}}]</div>
+							<div class="content_list_item_status warning" v-else-if="item.smodelLabel === Attribute.BL">
+								[{{item.smodelCode}}]</div>
+							<div class="content_list_item_status serious" v-else-if="item.smodelLabel === Attribute.BF">
+								[{{item.smodelCode}}]</div>
+							<div class="content_list_item_status black" v-else-if="item.smodelLabel === Attribute.HH">
+								[{{item.smodelCode}}]</div>
+							<div class="content_list_item_name">{{item.cmodel1BigName}}-{{item.code}}</div>
+						</div>
+					</u-list-item>
+				</u-list>
+			</div>
+		</div>
+	</u-popup>
+</template>
+
+<script>
+	import vSearch from '@/components/Search.vue'
+	import vLableSelection from '@/components/LabelSelection.vue'
+	import {
+		Attribute
+	} from '@/common/config.js'
+	export default {
+		name: "Tooling",
+		components: {
+			vSearch,
+			vLableSelection
+		},
+		data() {
+			return {
+				show: false,
+				classification: false,
+				attribute: '',
+				tagList: [],
+				statusname: '1,2,3',
+				list: [],
+				page: {
+					total: 0,
+					size: 10,
+					index: 1
+				}
+			};
+		},
+		methods: {
+			open(target) {
+				this.show = true
+				this.classification = target.classification
+				this.attribute = target.attribute
+				this.statusname = target.statusname
+			},
+			searchInput(v) {},
+			submit() {},
+			clickTag() {},
+			jump(item) {}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.content {
+		.content_code {
+			position: fixed;
+			right: 30rpx;
+			bottom: 100rpx;
+
+			img {
+				width: 138rpx;
+				height: 138rpx;
+			}
+		}
+
+		.content_top {
+			top: 0 !important;
+		}
+
+		.content_search {
+			padding: 30rpx;
+			background: white;
+			position: sticky;
+			top: 88rpx;
+			z-index: 9;
+
+			.content_search_x {
+				height: 24rpx;
+			}
+		}
+
+		.content_total {
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #666666;
+		}
+
+		.content_list {
+			width: 100%;
+			height: 100%;
+			display: flex;
+			flex-direction: column;
+
+			.content_list_item {
+				padding: 30rpx;
+				display: flex;
+				border-bottom: 1rpx solid #ececec;
+
+				// .serious {
+				//     color: $nav-stateColor4 !important;
+				// }
+				// .success {
+				//     color: $nav-stateColor2 !important;
+				// }
+				// .warning {
+				//     color: $nav-stateColor5 !important;
+				// }
+				.content_list_item_status {
+					font-size: 28rpx;
+					margin-right: 10rpx;
+				}
+
+				.content_list_item_name {
+					font-size: 28rpx;
+				}
+			}
+		}
+	}
+</style>
diff --git a/minipro_standard/components/selectMaterial.vue b/minipro_standard/components/selectMaterial.vue
new file mode 100644
index 0000000..c2250fe
--- /dev/null
+++ b/minipro_standard/components/selectMaterial.vue
@@ -0,0 +1,140 @@
+<template>
+	<u-popup :show="show" :round="10" closeable @close="show=false">
+		<view class="material-content bbox p30">
+			<view class="tc b f24 c2">閫夋嫨鐗╂枡</view>
+			<u-list @scrolltoupper="scrolltoupper" @scrolltolower="scrolltolower">
+				<u-list-item v-for="(item1, index) in list" :key="index">
+					<view class="" style="height: 20px;" @click="jump(item1)">
+						<div class="page_content_title_top">
+							<span>{{ item1.materialName + ' | ' + item1.materialCode }}</span>
+						</div>
+						<div class="page_content_title_bottom">
+							<span>{{ item1.locationName }}&nbsp;/&nbsp;</span>
+							<span>{{ item1.num }}{{ item1.unitName }}</span>
+						</div>
+						<div class="page_content_title_bottom">
+							<span class="green" v-if="item1.qualityType == 0">鍚堟牸&nbsp;<span
+									class="c1">/</span>&nbsp;</span>
+							<span class="orange" v-else-if="item1.qualityType == 1">涓嶈壇&nbsp;<span
+									class="c1">/</span>&nbsp;</span>
+							<span class="red" v-else-if="item1.qualityType == 2">鎶ュ簾&nbsp;<span
+									class="c1">/</span>&nbsp;</span>
+							<span v-else>-&nbsp;/&nbsp;</span>
+							<span>{{item1.procedureName ? item1.procedureName : '-'}}&nbsp;/&nbsp;</span>
+							<span>{{item1.batch ? item1.batch : '-'}}</span>
+						</div>
+					</view>
+				</u-list-item>
+			</u-list>
+		</view>
+	</u-popup>
+</template>
+
+<script>
+	export default {
+		name: "selectMaterial",
+		data() {
+			return {
+				show: false,
+				pages: {
+					size: 10,
+					index: 1,
+					total: 0
+				},
+				list: [
+					1, 2, 3, 4, 5, 6, 7, 8
+				]
+			};
+		},
+		methods: {
+			open(target) {
+				this.show = true
+				this.workorderId = target.workorderId
+				this.deviceId = target.deviceId
+				this.list = []
+				this.pages = {
+					size: 10,
+					index: 1,
+					total: 0
+				}
+				this.loadData()
+			},
+			loadData() {
+				this.list = [{
+					batch: '1',
+					materialName: 'dsadas',
+					materialCode: '1m0001',
+					locationName: 'a浠�2鍙蜂綅',
+					num: '1',
+					unitName: '鍧�',
+					qualityType: 0,
+					procedureName: '鍘嬪埗',
+				}]
+			},
+			scrolltoupper() {
+				console.log('scrolltoupper');
+				this.loadData()
+			},
+			scrolltolower() {
+				console.log('scrolltolower');
+				this.loadData()
+			},
+			jump(item) {
+				this.$emit('selectAction', item)
+				this.show = false
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.material-content {
+		height: 1100rpx;
+	}
+
+	.page_content_title_top {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+
+		span {
+			&:nth-child(1) {
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #222222;
+			}
+
+			&:nth-child(2) {
+				flex-shrink: 0;
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #333333;
+
+				// span {
+				// 	font-size: 24rpx;
+				// 	color: $nav-color;
+				// }
+			}
+		}
+	}
+
+	.page_content_title_bottom {
+		margin-top: 10rpx;
+
+		span {
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #666666;
+		}
+	}
+
+	.page_content_title {
+		display: flex;
+		flex-direction: column;
+		margin-bottom: 10rpx;
+
+
+
+
+	}
+</style>
diff --git a/minipro_standard/components/workOrderInfo.vue b/minipro_standard/components/workOrderInfo.vue
new file mode 100644
index 0000000..67548d6
--- /dev/null
+++ b/minipro_standard/components/workOrderInfo.vue
@@ -0,0 +1,82 @@
+<template>
+	<view class="p30 bg_w order-info">
+		<view class="bX">
+			<view class="cY">
+				<view class="mr10 b">澧欎綋鐮栵綔鐮佸灈</view>
+				<u-tag size="mini" bgColor="#03AF76" text="姝e父"></u-tag>
+			</view>
+			<view class="status" :class="orederMessage.status==0?'wc':orederMessage.status==1?'green':orederMessage.status==3?'blue':orederMessage.status==7?'green':'c6'">{{ stausToStr(1) }}</view>
+		</view>
+		<view class="f24 c6 mt20">宸ュ崟缂栧彿锛歿{ orederMessage.code || 'GD202111240001' }}</view>
+		<view class="mt20 bg_f7 ptb20 plr30 n">
+			<view class="c2 mb20">
+				<span class="c6">鐗╂枡缂栫爜锛�</span>
+				{{ orederMessage.mmodel ? orederMessage.mmodel.code : '03K-0K-0-1' }}
+			</view>
+			<view class="c2 mb20">
+				<span class="c6">璁″垝寮�宸ワ細</span>
+				{{ orederMessage.planDate || '2022/01/11' }}
+			</view>
+			<view class="c2 mb20">
+				<span class="c6">鐢熶骇鎵规锛�</span>
+				{{ orederMessage.batch || 'PH20221023001' }}
+			</view>
+			<view class="c2 mb20">
+				<span class="c6">璁″垝鏁伴噺锛�</span>
+				{{ orederMessage.planNum || '1000' }}{{ orederMessage.umodel ? orederMessage.umodel.name : 'A1' }}
+			</view>
+			<view class="c2 mb20">
+				<span class="c6">鐢熶骇璁惧锛�</span>
+				{{ orederMessage.pgmodel ? `${orederMessage.pgmodel.code} - ${orederMessage.pgmodel.name}` : 'A1' }}
+			</view>
+			<view class="c2 flex">
+				<view class="c6" style="flex-shrink: 0;">鐢熶骇浜哄憳锛�</view>
+				<view class="flex1">
+					{{ orederMessage.proUserList ? orederMessage.proUserList.map(item => item.proUserDepartName).join(' / ') : '渚辰鎱�-鍜屽幙椋為獜鏂板瀷寤烘潗' }}
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "workOrderInfo",
+		props: {
+			orederMessage: {}
+		},
+		data() {
+			return {
+				status: [
+					{ status: 0, label: '宸插垱寤�' },
+					{ status: 1, label: '宸插鏂�' },
+					{ status: 2, label: '宸插畬宸ユ' },
+					{ status: 3, label: '宸叉楠�' },
+					{ status: 4, label: '宸叉姤宸�' },
+					{ status: 5, label: '宸插叆搴�' },
+					{ status: 6, label: '宸插彇娑�' },
+					{ status: 7, label: '杩涜涓�' }
+				]
+			};
+		},
+		methods: {
+			stausToStr(status) {
+				let temp = this.status.find(item => item.status == status)
+				return temp ? temp.label : '-'
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+.status {
+	height: 26rpx;
+	font-size: 26rpx;
+	font-weight: 400;
+	color: #666666;
+	line-height: 26rpx;
+}
+.order-info {
+	border-bottom: 20rpx #f7f7f7 solid;
+}
+</style>
diff --git a/minipro_standard/main.js b/minipro_standard/main.js
index 4686581..af1b29b 100644
--- a/minipro_standard/main.js
+++ b/minipro_standard/main.js
@@ -1,6 +1,7 @@
 import Vue from 'vue'
 import App from './App'
 import mixin from './common/mixin'
+
 // 寮曞叆鍏ㄥ眬uView
 import uView from '@/uni_modules/uview-ui'
 Vue.use(uView)
diff --git a/minipro_standard/manifest.json b/minipro_standard/manifest.json
index 0bc644d..16f31cb 100644
--- a/minipro_standard/manifest.json
+++ b/minipro_standard/manifest.json
@@ -1,5 +1,5 @@
 {
-    "name" : "intelligent_manufacture",
+    "name" : "DM浜戝伐鍘�",
     "appid" : "",
     "description" : "",
     "versionName" : "1.0.0",
@@ -59,11 +59,7 @@
         },
         "usingComponents" : true,
         "requiredPrivateInfos" : [ "getLocation" ],
-        "permission" : {
-            "scope.userLocation" : {
-                "desc" : "瀹炴椂涓婁紶鍥剧墖"
-            }
-        }
+        "permission" : {}
     },
     "mp-alipay" : {
         "usingComponents" : true
diff --git a/minipro_standard/package-lock.json b/minipro_standard/package-lock.json
new file mode 100644
index 0000000..6fd60cc
--- /dev/null
+++ b/minipro_standard/package-lock.json
@@ -0,0 +1,451 @@
+{
+  "name": "minipro_standard",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "dependencies": {
+        "vant": "^4.6.6"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.22.11",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.11.tgz",
+      "integrity": "sha512-R5zb8eJIBPJriQtbH/htEQy4k7E2dHWlD2Y2VT07JCzwYZHBxV5ZYtM0UhXSNMT74LyxuM+b1jdL7pSesXbC/g==",
+      "peer": true,
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+      "peer": true
+    },
+    "node_modules/@vant/popperjs": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz",
+      "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
+    },
+    "node_modules/@vant/use": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.6.0.tgz",
+      "integrity": "sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==",
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
+    "node_modules/@vue/compiler-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+      "peer": true,
+      "dependencies": {
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/compiler-sfc": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+      "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+      "peer": true,
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/reactivity-transform": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0",
+        "postcss": "^8.1.10",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-ssr": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/reactivity": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz",
+      "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/reactivity-transform": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+      "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+      "peer": true,
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0"
+      }
+    },
+    "node_modules/@vue/runtime-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+      "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+      "peer": true,
+      "dependencies": {
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/runtime-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+      "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
+      }
+    },
+    "node_modules/@vue/server-renderer": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+      "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
+      },
+      "peerDependencies": {
+        "vue": "3.3.4"
+      }
+    },
+    "node_modules/@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "node_modules/csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
+      "peer": true
+    },
+    "node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "peer": true
+    },
+    "node_modules/magic-string": {
+      "version": "0.30.3",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.3.tgz",
+      "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.15"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
+      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+      "peer": true,
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "peer": true
+    },
+    "node_modules/postcss": {
+      "version": "8.4.28",
+      "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.28.tgz",
+      "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
+      "peer": true,
+      "dependencies": {
+        "nanoid": "^3.3.6",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/vant": {
+      "version": "4.6.6",
+      "resolved": "https://registry.npmmirror.com/vant/-/vant-4.6.6.tgz",
+      "integrity": "sha512-UgBfz4d1Ej483WAp6T3HrFZQNKpRW0PoT9mDXqw8JFUuiHgpdeAMyAwuRaYdQiUy4cFTVZ25a/+xyGCTMdvYaA==",
+      "dependencies": {
+        "@vant/popperjs": "^1.3.0",
+        "@vant/use": "^1.5.1",
+        "@vue/shared": "^3.0.0"
+      },
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
+    "node_modules/vue": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-sfc": "3.3.4",
+        "@vue/runtime-dom": "3.3.4",
+        "@vue/server-renderer": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    }
+  },
+  "dependencies": {
+    "@babel/parser": {
+      "version": "7.22.11",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.11.tgz",
+      "integrity": "sha512-R5zb8eJIBPJriQtbH/htEQy4k7E2dHWlD2Y2VT07JCzwYZHBxV5ZYtM0UhXSNMT74LyxuM+b1jdL7pSesXbC/g==",
+      "peer": true
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+      "peer": true
+    },
+    "@vant/popperjs": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz",
+      "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
+    },
+    "@vant/use": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.6.0.tgz",
+      "integrity": "sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==",
+      "requires": {}
+    },
+    "@vue/compiler-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+      "peer": true,
+      "requires": {
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "@vue/compiler-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+      "peer": true,
+      "requires": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/compiler-sfc": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+      "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+      "peer": true,
+      "requires": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/reactivity-transform": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0",
+        "postcss": "^8.1.10",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "@vue/compiler-ssr": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+      "peer": true,
+      "requires": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/reactivity": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz",
+      "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+      "peer": true,
+      "requires": {
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/reactivity-transform": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+      "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+      "peer": true,
+      "requires": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0"
+      }
+    },
+    "@vue/runtime-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+      "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+      "peer": true,
+      "requires": {
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/runtime-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+      "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+      "peer": true,
+      "requires": {
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
+      }
+    },
+    "@vue/server-renderer": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+      "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+      "peer": true,
+      "requires": {
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
+      "peer": true
+    },
+    "estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "peer": true
+    },
+    "magic-string": {
+      "version": "0.30.3",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.3.tgz",
+      "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
+      "peer": true,
+      "requires": {
+        "@jridgewell/sourcemap-codec": "^1.4.15"
+      }
+    },
+    "nanoid": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
+      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+      "peer": true
+    },
+    "picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "peer": true
+    },
+    "postcss": {
+      "version": "8.4.28",
+      "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.28.tgz",
+      "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
+      "peer": true,
+      "requires": {
+        "nanoid": "^3.3.6",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "peer": true
+    },
+    "vant": {
+      "version": "4.6.6",
+      "resolved": "https://registry.npmmirror.com/vant/-/vant-4.6.6.tgz",
+      "integrity": "sha512-UgBfz4d1Ej483WAp6T3HrFZQNKpRW0PoT9mDXqw8JFUuiHgpdeAMyAwuRaYdQiUy4cFTVZ25a/+xyGCTMdvYaA==",
+      "requires": {
+        "@vant/popperjs": "^1.3.0",
+        "@vant/use": "^1.5.1",
+        "@vue/shared": "^3.0.0"
+      }
+    },
+    "vue": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "peer": true,
+      "requires": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-sfc": "3.3.4",
+        "@vue/runtime-dom": "3.3.4",
+        "@vue/server-renderer": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    }
+  }
+}
diff --git a/minipro_standard/package.json b/minipro_standard/package.json
new file mode 100644
index 0000000..add0140
--- /dev/null
+++ b/minipro_standard/package.json
@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "vant": "^4.6.6"
+  }
+}
diff --git a/minipro_standard/pages.json b/minipro_standard/pages.json
index 4e8cdef..b334926 100644
--- a/minipro_standard/pages.json
+++ b/minipro_standard/pages.json
@@ -31,7 +31,6 @@
 				"navigationBarTitleText": "涓汉淇℃伅",
 				"enablePullDownRefresh": false
 			}
-
 		}, {
 			"path": "pages/changePassword/changePassword",
 			"style": {
@@ -53,6 +52,208 @@
 				"enablePullDownRefresh": false
 			}
 
+		}, {
+			"path": "pages/plannedProgress/plannedProgress",
+			"style": {
+				"navigationBarTitleText": "璁″垝杩涘害",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/planDetails/planDetails",
+			"style": {
+				"navigationBarTitleText": "璁″垝璇︽儏",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/plannedDistribution/plannedDistribution",
+			"style": {
+				"navigationBarTitleText": "璁″垝鍒嗛厤",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/allocation/allocation",
+			"style": {
+				"navigationBarTitleText": "閫夋嫨",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/inspectComplete/inspectComplete",
+			"style": {
+				"navigationBarTitleText": "瀹屽伐妫�",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/selectWorkOrder/selectWorkOrder",
+			"style": {
+				"navigationBarTitleText": "閫夋嫨宸ュ崟",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/inspectPatrol/inspectPatrol",
+			"style": {
+				"navigationBarTitleText": "宸℃",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/linePatrol/linePatrol",
+			"style": {
+				"navigationBarTitleText": "宸$嚎",
+				"enablePullDownRefresh": false
+			}
+
+		}
+	    ,{
+            "path" : "pages/OutOperation/OutOperation",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "鍑哄簱鎿嶄綔",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/InOperation/InOperation",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "鍏ュ簱鎿嶄綔",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+    ],
+	"subPackages": [{
+			"root": "pages_adjust",
+			"pages": [{
+					"path": "pages/newOutbound/newOutbound",
+					"style": {
+						"navigationBarTitleText": "鏂板缓鍑哄簱",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/addReceipt/addReceipt",
+					"style": {
+						"navigationBarTitleText": "鏂板缓鍏ュ簱",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/newTransfer/newTransfer",
+					"style": {
+						"navigationBarTitleText": "鏂板缓杞簱",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/manualFeed/manualFeed",
+					"style": {
+						"navigationBarTitleText": "鎵嬪姩鎶曟枡",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/OrderDetail/OrderDetail",
+					"style": {
+						"navigationBarTitleText": "宸ュ崟璇︽儏",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/workOrderReporting/workOrderReporting",
+					"style": {
+						"navigationBarTitleText": "宸ュ崟鎶ュ伐",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/transferList/transferList",
+					"style": {
+						"navigationBarTitleText": "杞簱鍒楄〃",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/warehousingDetails/warehousingDetails",
+					"style": {
+						"navigationBarTitleText": "鍏ュ簱璇︽儏",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/outboundList/outboundList",
+					"style": {
+						"navigationBarTitleText": "鍑哄簱鍗曞垪琛�",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/outboundDetails/outboundDetails",
+					"style": {
+						"navigationBarTitleText": "鍑哄簱璇︽儏",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/warehousingList/warehousingList",
+					"style": {
+						"navigationBarTitleText": "鍏ュ簱鍗曞垪琛�",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/warehousingDetails1/warehousingDetails1",
+					"style": {
+						"navigationBarTitleText": "鍏ュ簱璇︽儏",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/InventoryQuery/InventoryQuery",
+					"style": {
+						"navigationBarTitleText": "搴撳瓨閲忔煡璇�",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/reportingForWork/reportingForWork",
+					"style": {
+						"navigationBarTitleText": "涓�閿姤宸�",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/processPlan/processPlan",
+					"style": {
+						"navigationBarTitleText": "閫夋嫨宸ュ簭璁″垝",
+						"enablePullDownRefresh": false
+					}
+				}
+			]
+		},
+		{
+			"root": "pages_inspect",
+			"pages": [{
+					"path": "pages/InspectionRecords/InspectionRecords",
+					"style": {
+						"navigationBarTitleText": "妫�楠岃褰�",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "pages/InspectionDetails/InspectionDetails",
+					"style": {
+						"navigationBarTitleText": "妫�楠岃鎯�",
+						"enablePullDownRefresh": false
+					}
+				}
+			]
 		}
 	],
 	"globalStyle": {
@@ -60,15 +261,13 @@
 		"navigationBarTitleText": "uni-app",
 		"navigationBarBackgroundColor": "#ffffff",
 		"backgroundColor": "#ffffff"
-		// "navigationStyle": "custom"
 	},
 	"tabBar": {
 		"color": "#666666",
 		"selectedColor": "#222222",
 		"borderStyle": "black",
 		"backgroundColor": "#fff",
-		"list": [
-			{
+		"list": [{
 				"pagePath": "pages/index/index",
 				"iconPath": "static/nav_daiban@2x.png",
 				"selectedIconPath": "static/nav_daiban_sel@2x.png",
@@ -89,4 +288,4 @@
 		]
 	},
 	"uniIdRouter": {}
-}
+}
\ No newline at end of file
diff --git a/minipro_standard/pages/InOperation/InOperation.vue b/minipro_standard/pages/InOperation/InOperation.vue
new file mode 100644
index 0000000..08839c6
--- /dev/null
+++ b/minipro_standard/pages/InOperation/InOperation.vue
@@ -0,0 +1,686 @@
+<template>
+	<view>
+		<InOutInfo :info="info" />
+
+		<uni-collapse @change="change" @close="close" @open="open">
+			<uni-collapse-item v-for="(item, index) in wtransferWarehouseList" :key="index">
+				<view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title">
+					<image src="../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image>
+					<view>{{ item.warehouseName }}</view>
+				</view>
+				<view class="p30">
+					<div class="page_dck">
+						<div class="page_dck_title">
+							<div class="page_dck_title_x"></div>
+							<span>寰呭叆搴撶墿鏂�</span>
+						</div>
+					</div>
+					<div class="page_content" v-for="(item, index) in info.woutboundDetailsWait" :key="index"
+						:name="index">
+						<div class="page_content_title">
+							<div class="page_content_title_top">
+								<span v-if="item.batch">{{ item.materialName + ' | ' + item.materialCode }}</span>
+								<span v-else>{{ item.materialName + ' | ' + item.materialCode }}</span>
+							</div>
+							<div class="page_content_title_bottom">
+								<span class="green" v-if="item.qualityType === 0">鍚堟牸&nbsp;<span
+										class="black">/</span>&nbsp;</span>
+								<span class="warning" v-else-if="item.qualityType === 1">涓嶈壇&nbsp;<span
+										class="black">/</span>&nbsp;</span>
+								<span class="error" v-else-if="item.qualityType === 2">鎶ュ簾&nbsp;<span
+										class="black">/</span>&nbsp;</span>
+								<span v-else>-&nbsp;/&nbsp;</span>
+								<span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</span>
+								<span>{{item.batch ? item.batch : '-'}}</span>
+							</div>
+						</div>
+						<div class="page_content_list">
+							<div class="page_content_list_item">
+								<div class="page_content_list_item_label">鍏ュ簱璐т綅锛�</div>
+								<div class="page_content_list_item_nr">
+									{{item.locationName ? item.locationName : '-'}}
+								</div>
+							</div>
+							<div class="page_content_list_items">
+								<div class="page_content_list_item_label">鏁伴噺锛�</div>
+								<div class="page_content_list_item_nr">{{item.num ? item.num : '-'}}{{item.unitName}}
+								</div>
+							</div>
+						</div>
+					</div>
+				</view>
+			</uni-collapse-item>
+		</uni-collapse>
+		<div class="page_h"></div>
+		<div class="page_yxwl">
+			<div class="page_yxwl_title">
+				<div class="left">
+					<div class="page_yxwl_title_x"></div>
+					<span>宸查�夋嫨鐗╂枡</span>
+				</div>
+				
+				<div class="right" v-if="isZKD" @click="openxz">
+					<image src="../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>鎵嬪姩鍏ュ簱</span>
+					<!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""> -->
+				</div>
+			</div>
+			<!--        鍏ュ簱鍗曪紙鍗曚釜浠撳簱锛�        -->
+			<template
+				v-if="route.query.type == 9 && info.woScanMaterialBeanList && info.woScanMaterialBeanList.length > 0">
+				<div class="page_yxwl_list">
+					<div class="page_yxwl_list_item" v-for="(item, index) in info.woScanMaterialBeanList" :key="index">
+						<div class="page_yxwl_list_item_top">
+							<!--                            <div class="page_yxwl_list_item_top_left" v-if="item.batch">{{item.materialName}} | {{item.materialCode}}锝渰{item.batch}}</div>-->
+							<div class="page_yxwl_list_item_top_left">{{item.materialName}} | {{item.materialCode}}
+							</div>
+						</div>
+						<div class="page_yxwl_list_item_sx">
+							<span class="green" v-if="item.qualityType === 0">鍚堟牸&nbsp;<span>/</span>&nbsp;</span>
+							<span class="warning" v-else-if="item.qualityType === 1">涓嶈壇&nbsp;<span>/</span>&nbsp;</span>
+							<span class="red" v-else-if="item.qualityType === 2">鎶ュ簾&nbsp;<span>/</span>&nbsp;</span>
+							<span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</span>
+							<span>{{item.batch ? item.batch : '-'}}</span>
+						</div>
+						<div class="page_yxwl_list_item_num">
+							<div class="dis">
+								<div class="item">
+									<div class="label">鍏ュ簱璐т綅锛�</div>
+									<div class="nr">
+										<span>{{item.locationName ? item.locationName : '-'}}</span>
+									</div>
+								</div>
+								<div class="items">
+									<div class="label">鏁伴噺锛�</div>
+									<div class="nr">
+										<input type="text" v-model="item.scanNum" placeholder="璇疯緭鍏�" />
+										<span>{{item.unitName}}</span>
+									</div>
+								</div>
+							</div>
+							<div class="itemy" v-for="(item1, idx) in item.woutboundRedisCodeBeanList" :key="idx">
+								<div class="label">宸ヨ{{item1.scanCode}}锛�</div>
+								<div class="nr">{{item1.num}}{{item1.unitName}}</div>
+								<div class="dele" @click="dele(item1)">
+									<image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</template>
+			<!--        杞簱鍗曪紙澶氫釜浠撳簱锛�        -->
+			<template v-else-if="route.query.type == 7 && seleMateriaList.length > 0">
+				<!-- <template v-for="(item, index) in info.wtransferWarehouseList" :key="index"> -->
+				<div class="page_yxwl_list">
+					<div class="page_yxwl_list_item" v-for="(item1, idx) in seleMateriaList" :key="idx">
+						<div class="page_yxwl_list_item_top">
+							<!--                                <div class="page_yxwl_list_item_top_left" v-if="item1.batch">{{item1.materialName}} | {{item1.materialCode}}锝渰{item1.batch}}</div>-->
+							<div class="page_yxwl_list_item_top_left">{{item1.materialName}} | {{item1.materialCode}}
+							</div>
+						</div>
+						<div class="page_yxwl_list_item_sx">
+							<span class="green" v-if="item1.qualityType === 0">鍚堟牸&nbsp;<span>/</span>&nbsp;</span>
+							<span class="yellow" v-else-if="item1.qualityType === 1">涓嶈壇&nbsp;<span>/</span>&nbsp;</span>
+							<span class="red" v-else-if="item1.qualityType === 2">鎶ュ簾&nbsp;<span>/</span>&nbsp;</span>
+							<span>{{item1.procedureName ? item1.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</span>
+							<span>{{item1.batch ? item1.batch : '-'}}</span>
+						</div>
+						<div class="page_yxwl_list_item_num">
+							<div class="itemy">
+								<div class="itemy_item">
+									<div class="label">鍏ュ簱璐т綅锛�</div>
+									<div class="nr">
+										<span>{{item1.locationName}}</span>
+									</div>
+								</div>
+								<div class="itemy_item">
+									<div class="label">鏁伴噺锛�</div>
+									<div class="nr">
+										<!-- @input="inputNum(item1)"  -->
+										<input type="number" v-model="item1.outActnum" placeholder="璇疯緭鍏�" />
+										<span>{{item1.unitName}}</span>
+									</div>
+								</div>
+								<!-- @click="dele()" -->
+								<div class="dele" @click="dele(idx)">
+									<image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+				<!-- </template> -->
+			</template>
+			<div class="page_yxwl_kong" v-else>鏆傛棤鏁版嵁</div>
+		</div>
+		<div class="page_zw"></div>
+		<!--    鎻愪氦鎸夐挳    -->
+		<div class="page_footer">
+			<div class="page_footer_ck" @click="submit">
+				<span>纭鍏ュ簱</span>
+			</div>
+		</div>
+		<SelectMultipleMaterial ref="selectMultipleMaterial" />
+	</view>
+</template>
+
+<script>
+	import InOutInfo from '@/components/InOutInfo.vue'
+	import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
+	import { QRCodeType } from '@/common/config.js'
+	export default {
+		components: {
+			InOutInfo,
+			SelectMultipleMaterial
+		},
+		data() {
+			return {
+				type: '',
+				isZKD: false,
+				show: false,
+				info: {
+					outPlandate: '2022/02/14',
+					originType: 1,
+					wtransferRedisCodeBeanList: [],
+					remark: 'Vue鏄墠绔紑鍙戜腑骞挎硾浣跨敤鐨勪竴涓狫avaScript妗嗘灦锛屽畠鍙互璁╂垜浠洿杞绘澗鍦扮鐞嗛〉闈㈢殑鐘舵�併�佹覆鏌撳拰浜や簰銆備絾鏄湪缂栧啓Vue搴旂敤鏃讹紝鏈夋椂浼氶亣鍒扳�淪yntaxError: Unexpected token鈥濇姤閿欙紝杩欎釜閿欒鎻愮ず鎰忓懗鐫�浠g爜涓瓨鍦ㄨ娉曢敊璇紝JavaScript寮曟搸鏃犳硶瑙f瀽锛屼粠鑰屽鑷寸▼搴忚繍琛屽け璐ャ�傛湰绡囨枃绔犲皢浠嬬粛甯歌寮曡捣鈥淪yntaxError: Unexpected token鈥濈殑鍘熷洜浠ュ強瑙e喅鏂规硶銆�'
+				},
+				ids: [],
+				wtransferWarehouseList: [{
+					warehouseName: '娴嬭瘯搴�'
+				}]
+			};
+		},
+		onLoad(option) {
+			this.type = option.type||'ZKD'
+			this.isZKD = this.type==QRCodeType.ZKD
+			// console.log(this.type, QRCodeType.ZKD, this.type==QRCodeType.ZKD);
+		},
+		methods: {
+			change() {},
+			close() {},
+			open() {},
+			openxz() {
+			  let arr = []
+			  if (this.info.wtransferRedisCodeBeanList.length !== 0) {
+			    this.info.wtransferRedisCodeBeanList.forEach(element => {
+			      arr.push(element.appliancesId)
+			    })
+			    this.ids = arr.join(',')
+			  } else {
+			    this.ids = ''
+			  }
+			 this.$refs.selectMultipleMaterial.open({})
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.page_dck {
+		.page_dck_title {
+			display: flex;
+			align-items: center;
+
+			.page_dck_title_x {
+				width: 8rpx;
+				height: 30rpx;
+				background: #4275FC;
+				border-radius: 2rpx;
+				margin-right: 16rpx;
+			}
+
+			span {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #222222;
+			}
+		}
+	}
+
+	.page_content {
+		margin-top: 36rpx;
+
+		.page_content_title {
+			display: flex;
+			flex-direction: column;
+			margin-bottom: 10rpx;
+
+			.page_content_title_top {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				span {
+					&:nth-child(1) {
+						font-size: 30rpx;
+						font-weight: 500;
+						color: #222222;
+					}
+
+					&:nth-child(2) {
+						flex-shrink: 0;
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #333333;
+
+						span {
+							font-size: 24rpx;
+							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: 24rpx;
+					font-weight: 400;
+					color: #666666;
+				}
+			}
+		}
+
+		.lineBorder {
+			border: none !important;
+			padding-bottom: 0 !important;
+			margin-bottom: 24rpx;
+		}
+
+		.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: 26rpx;
+					font-weight: 400;
+					color: #666666;
+				}
+
+				.page_content_list_num_nr {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+			}
+
+			.page_content_list_num {
+				width: 70%;
+				display: flex;
+
+				.page_content_list_num_label {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #666666;
+				}
+
+				.page_content_list_num_nr {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+			}
+
+			.page_content_list_items {
+				width: 30%;
+				display: flex;
+				margin-top: 24rpx;
+
+				.page_content_list_item_label {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #666666;
+					flex-shrink: 0;
+				}
+
+				.page_content_list_item_nr {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+			}
+
+			.page_content_list_item {
+				width: 70%;
+				display: flex;
+
+				.page_content_list_item_label {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #666666;
+					flex-shrink: 0;
+				}
+
+				.page_content_list_item_nr {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+			}
+		}
+	}
+
+	.page_h {
+		height: 20rpx;
+	}
+
+	.page_yxwl {
+		padding: 30rpx;
+		background: #ffffff;
+
+		.page_yxwl_title {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+
+			.page_yxwl_title_x {
+				width: 8rpx;
+				height: 30rpx;
+				background: #4275FC;
+				border-radius: 2rpx;
+				margin-right: 16rpx;
+			}
+
+			span {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #222222;
+			}
+
+			.left {
+				display: flex;
+				align-items: center;
+
+				.page_yxwl_title_x {
+					width: 8rpx;
+					height: 30rpx;
+					background: #4275FC;
+					border-radius: 2rpx;
+					margin-right: 16rpx;
+				}
+
+				span {
+					font-size: 32rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+			}
+
+			.right {
+				display: flex;
+				align-items: center;
+
+				img {
+					width: 28rpx;
+					height: 28rpx;
+					margin-right: 14rpx;
+				}
+
+				span {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+			}
+		}
+
+		.page_yxwl_list {
+			display: flex;
+			flex-direction: column;
+			padding-bottom: 30rpx;
+			border-bottom: 1rpx solid #ececec;
+
+			&:last-child {
+				margin-bottom: 0;
+				border: none;
+			}
+
+			.page_yxwl_list_item {
+				margin-top: 28rpx;
+
+				.page_yxwl_list_item_top {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+
+					.page_yxwl_list_item_top_left {
+						font-size: 30rpx;
+						font-weight: 500;
+						color: #222222;
+					}
+				}
+
+				.page_yxwl_list_item_sx {
+					display: flex;
+					align-items: center;
+					margin-top: 15rpx;
+				}
+
+				.page_yxwl_list_item_num {
+					display: flex;
+					flex-direction: column;
+
+					// margin-top: 30rpx;
+					&:first-child {
+						margin-top: 0;
+					}
+
+					.dis {
+						display: flex;
+					}
+
+					.itemy {
+						margin-top: 20rpx;
+						width: 100%;
+						display: flex;
+						align-items: center;
+						position: relative;
+
+						.itemy_item {
+							flex: 1;
+							display: flex;
+							align-items: center;
+
+							.label {
+								font-size: 26rpx;
+								font-weight: 400;
+								color: #666666;
+								flex-shrink: 0;
+							}
+
+							.nr {
+								font-size: 26rpx;
+								font-weight: 400;
+								color: #222222;
+
+								input {
+									width: 100rpx;
+									height: 35rpx;
+									border-radius: 8rpx;
+									border: 1rpx solid #E5E5E5;
+									margin-right: 10rpx;
+									margin-left: 5rpx;
+								}
+
+								span {
+									font-size: 26rpx;
+									font-weight: 400;
+									color: #222222;
+								}
+							}
+						}
+
+						.dele {
+							position: absolute;
+							right: -30rpx;
+							width: 48rpx;
+							height: 48rpx;
+
+							img {
+								width: 100%;
+								height: 100%;
+							}
+						}
+					}
+
+					.items {
+						width: 50%;
+						display: flex;
+						align-items: center;
+
+						.label {
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+
+						.nr {
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #222222;
+
+							input {
+								width: 100rpx;
+								height: 40rpx;
+								margin-right: 10rpx;
+							}
+
+							span {
+								font-size: 26rpx;
+								font-weight: 400;
+								color: #222222;
+							}
+						}
+					}
+
+					.item {
+						width: 70%;
+						display: flex;
+						align-items: center;
+
+						.label {
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+
+						.nr {
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #222222;
+
+							input {
+								width: 100rpx;
+								height: 40rpx;
+								margin-right: 10rpx;
+							}
+
+							span {
+								font-size: 26rpx;
+								font-weight: 400;
+								color: #222222;
+							}
+						}
+					}
+				}
+			}
+		}
+
+		.page_yxwl_kong {
+			padding: 50rpx 0;
+			font-size: 25rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+	}
+
+	.page_zw {
+		height: 160rpx;
+	}
+
+	.page_footer {
+		width: calc(100% - 60rpx);
+		background: #F7F7F7;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		position: fixed;
+		bottom: 0;
+		left: 30rpx;
+		padding-bottom: 68rpx;
+
+		.page_footer_qr {
+			flex: 1;
+			height: 88rpx;
+			background: #fff;
+			box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+			border-radius: 8rpx;
+			font-size: 32rpx;
+			font-weight: 500;
+			color: $nav-color;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+			img {
+				width: 30rpx;
+				height: 30rpx;
+				margin-right: 12rpx;
+			}
+		}
+
+		.page_footer_ck {
+			flex: 1;
+			height: 88rpx;
+			background: $nav-color;
+			box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+			border-radius: 8rpx;
+			font-size: 32rpx;
+			font-weight: 500;
+			color: #FFFFFF;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+	}
+</style>
diff --git a/minipro_standard/pages/OutOperation/OutOperation.vue b/minipro_standard/pages/OutOperation/OutOperation.vue
new file mode 100644
index 0000000..e899d02
--- /dev/null
+++ b/minipro_standard/pages/OutOperation/OutOperation.vue
@@ -0,0 +1,685 @@
+<template>
+	<view>
+		<InOutInfo :info="info" />
+		<uni-collapse @change="change" @close="close" @open="open">
+			<uni-collapse-item v-for="(item, index) in wtransferWarehouseList" :key="index">
+				<view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title">
+					<image src="../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image>
+					<view>{{ item.warehouseName }}</view>
+				</view>
+				<view class="p30">
+					<div class="page_dck">
+						<div class="page_dck_title">
+							<div class="page_dck_title_x"></div>
+							<span>寰呭嚭搴撶墿鏂�</span>
+						</div>
+					</div>
+					<div class="page_content" v-for="(item, index) in info.woutboundDetailsWait" :key="index"
+						:name="index">
+						<div class="page_content_title">
+							<div class="page_content_title_top">
+								<span v-if="item.batch">{{ item.materialName + ' | ' + item.materialCode }}</span>
+								<span v-else>{{ item.materialName + ' | ' + item.materialCode }}</span>
+							</div>
+							<div class="page_content_title_bottom">
+								<span class="green" v-if="item.qualityType === 0">鍚堟牸&nbsp;<span
+										class="black">/</span>&nbsp;</span>
+								<span class="warning" v-else-if="item.qualityType === 1">涓嶈壇&nbsp;<span
+										class="black">/</span>&nbsp;</span>
+								<span class="error" v-else-if="item.qualityType === 2">鎶ュ簾&nbsp;<span
+										class="black">/</span>&nbsp;</span>
+								<span v-else>-&nbsp;/&nbsp;</span>
+								<span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</span>
+								<span>{{item.batch ? item.batch : '-'}}</span>
+							</div>
+						</div>
+						<div class="page_content_list">
+							<div class="page_content_list_item">
+								<div class="page_content_list_item_label">鍑哄簱璐т綅锛�</div>
+								<div class="page_content_list_item_nr">
+									{{item.locationName ? item.locationName : '-'}}
+								</div>
+							</div>
+							<div class="page_content_list_items">
+								<div class="page_content_list_item_label">鏁伴噺锛�</div>
+								<div class="page_content_list_item_nr">{{item.num ? item.num : '-'}}{{item.unitName}}
+								</div>
+							</div>
+						</div>
+					</div>
+				</view>
+			</uni-collapse-item>
+		</uni-collapse>
+		<div class="page_h"></div>
+		<div class="page_yxwl">
+			<div class="page_yxwl_title">
+				<div class="left">
+					<div class="page_yxwl_title_x"></div>
+					<span>宸查�夋嫨鐗╂枡</span>
+				</div>
+				
+				<div class="right" v-if="isZKD" @click="openxz">
+					<image src="../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>鎵嬪姩鍑哄簱</span>
+					<!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""> -->
+				</div>
+			</div>
+			<!--        鍏ュ簱鍗曪紙鍗曚釜浠撳簱锛�        -->
+			<template
+				v-if="route.query.type == 9 && info.woScanMaterialBeanList && info.woScanMaterialBeanList.length > 0">
+				<div class="page_yxwl_list">
+					<div class="page_yxwl_list_item" v-for="(item, index) in info.woScanMaterialBeanList" :key="index">
+						<div class="page_yxwl_list_item_top">
+							<!--                            <div class="page_yxwl_list_item_top_left" v-if="item.batch">{{item.materialName}} | {{item.materialCode}}锝渰{item.batch}}</div>-->
+							<div class="page_yxwl_list_item_top_left">{{item.materialName}} | {{item.materialCode}}
+							</div>
+						</div>
+						<div class="page_yxwl_list_item_sx">
+							<span class="green" v-if="item.qualityType === 0">鍚堟牸&nbsp;<span>/</span>&nbsp;</span>
+							<span class="warning" v-else-if="item.qualityType === 1">涓嶈壇&nbsp;<span>/</span>&nbsp;</span>
+							<span class="red" v-else-if="item.qualityType === 2">鎶ュ簾&nbsp;<span>/</span>&nbsp;</span>
+							<span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</span>
+							<span>{{item.batch ? item.batch : '-'}}</span>
+						</div>
+						<div class="page_yxwl_list_item_num">
+							<div class="dis">
+								<div class="item">
+									<div class="label">鍑哄簱璐т綅锛�</div>
+									<div class="nr">
+										<span>{{item.locationName ? item.locationName : '-'}}</span>
+									</div>
+								</div>
+								<div class="items">
+									<div class="label">鏁伴噺锛�</div>
+									<div class="nr">
+										<input type="text" v-model="item.scanNum" placeholder="璇疯緭鍏�" />
+										<span>{{item.unitName}}</span>
+									</div>
+								</div>
+							</div>
+							<div class="itemy" v-for="(item1, idx) in item.woutboundRedisCodeBeanList" :key="idx">
+								<div class="label">宸ヨ{{item1.scanCode}}锛�</div>
+								<div class="nr">{{item1.num}}{{item1.unitName}}</div>
+								<div class="dele" @click="dele(item1)">
+									<image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</template>
+			<!--        杞簱鍗曪紙澶氫釜浠撳簱锛�        -->
+			<template v-else-if="route.query.type == 7 && seleMateriaList.length > 0">
+				<!-- <template v-for="(item, index) in info.wtransferWarehouseList" :key="index"> -->
+				<div class="page_yxwl_list">
+					<div class="page_yxwl_list_item" v-for="(item1, idx) in seleMateriaList" :key="idx">
+						<div class="page_yxwl_list_item_top">
+							<!--                                <div class="page_yxwl_list_item_top_left" v-if="item1.batch">{{item1.materialName}} | {{item1.materialCode}}锝渰{item1.batch}}</div>-->
+							<div class="page_yxwl_list_item_top_left">{{item1.materialName}} | {{item1.materialCode}}
+							</div>
+						</div>
+						<div class="page_yxwl_list_item_sx">
+							<span class="green" v-if="item1.qualityType === 0">鍚堟牸&nbsp;<span>/</span>&nbsp;</span>
+							<span class="yellow" v-else-if="item1.qualityType === 1">涓嶈壇&nbsp;<span>/</span>&nbsp;</span>
+							<span class="red" v-else-if="item1.qualityType === 2">鎶ュ簾&nbsp;<span>/</span>&nbsp;</span>
+							<span>{{item1.procedureName ? item1.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</span>
+							<span>{{item1.batch ? item1.batch : '-'}}</span>
+						</div>
+						<div class="page_yxwl_list_item_num">
+							<div class="itemy">
+								<div class="itemy_item">
+									<div class="label">鍏ュ簱璐т綅锛�</div>
+									<div class="nr">
+										<span>{{item1.locationName}}</span>
+									</div>
+								</div>
+								<div class="itemy_item">
+									<div class="label">鏁伴噺锛�</div>
+									<div class="nr">
+										<!-- @input="inputNum(item1)"  -->
+										<input type="number" v-model="item1.outActnum" placeholder="璇疯緭鍏�" />
+										<span>{{item1.unitName}}</span>
+									</div>
+								</div>
+								<!-- @click="dele()" -->
+								<div class="dele" @click="dele(idx)">
+									<image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+				<!-- </template> -->
+			</template>
+			<div class="page_yxwl_kong" v-else>鏆傛棤鏁版嵁</div>
+		</div>
+		<div class="page_zw"></div>
+		<!--    鎻愪氦鎸夐挳    -->
+		<div class="page_footer">
+			<div class="page_footer_ck" @click="submit">
+				<span>纭鍑哄簱</span>
+			</div>
+		</div>
+		<SelectMultipleMaterial ref="selectMultipleMaterial" />
+	</view>
+</template>
+
+<script>
+	import InOutInfo from '@/components/InOutInfo.vue'
+	import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
+	import { QRCodeType } from '@/common/config.js'
+	export default {
+		components: {
+			InOutInfo,
+			SelectMultipleMaterial
+		},
+		data() {
+			return {
+				type: '',
+				isZKD: false,
+				show: false,
+				info: {
+					outPlandate: '2022/02/14',
+					originType: 1,
+					wtransferRedisCodeBeanList: [],
+					remark: 'Vue鏄墠绔紑鍙戜腑骞挎硾浣跨敤鐨勪竴涓狫avaScript妗嗘灦锛屽畠鍙互璁╂垜浠洿杞绘澗鍦扮鐞嗛〉闈㈢殑鐘舵�併�佹覆鏌撳拰浜や簰銆備絾鏄湪缂栧啓Vue搴旂敤鏃讹紝鏈夋椂浼氶亣鍒扳�淪yntaxError: Unexpected token鈥濇姤閿欙紝杩欎釜閿欒鎻愮ず鎰忓懗鐫�浠g爜涓瓨鍦ㄨ娉曢敊璇紝JavaScript寮曟搸鏃犳硶瑙f瀽锛屼粠鑰屽鑷寸▼搴忚繍琛屽け璐ャ�傛湰绡囨枃绔犲皢浠嬬粛甯歌寮曡捣鈥淪yntaxError: Unexpected token鈥濈殑鍘熷洜浠ュ強瑙e喅鏂规硶銆�'
+				},
+				ids: [],
+				wtransferWarehouseList: [{
+					warehouseName: '娴嬭瘯搴�'
+				}]
+			};
+		},
+		onLoad(option) {
+			this.type = option.type||'ZKD'
+			this.isZKD = this.type==QRCodeType.ZKD
+			// console.log(this.type, QRCodeType.ZKD, this.type==QRCodeType.ZKD);
+		},
+		methods: {
+			change() {},
+			close() {},
+			open() {},
+			openxz() {
+			  let arr = []
+			  if (this.info.wtransferRedisCodeBeanList.length !== 0) {
+			    this.info.wtransferRedisCodeBeanList.forEach(element => {
+			      arr.push(element.appliancesId)
+			    })
+			    this.ids = arr.join(',')
+			  } else {
+			    this.ids = ''
+			  }
+			 this.$refs.selectMultipleMaterial.open({})
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.page_dck {
+		.page_dck_title {
+			display: flex;
+			align-items: center;
+
+			.page_dck_title_x {
+				width: 8rpx;
+				height: 30rpx;
+				background: #4275FC;
+				border-radius: 2rpx;
+				margin-right: 16rpx;
+			}
+
+			span {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #222222;
+			}
+		}
+	}
+
+	.page_content {
+		margin-top: 36rpx;
+
+		.page_content_title {
+			display: flex;
+			flex-direction: column;
+			margin-bottom: 10rpx;
+
+			.page_content_title_top {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				span {
+					&:nth-child(1) {
+						font-size: 30rpx;
+						font-weight: 500;
+						color: #222222;
+					}
+
+					&:nth-child(2) {
+						flex-shrink: 0;
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #333333;
+
+						span {
+							font-size: 24rpx;
+							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: 24rpx;
+					font-weight: 400;
+					color: #666666;
+				}
+			}
+		}
+
+		.lineBorder {
+			border: none !important;
+			padding-bottom: 0 !important;
+			margin-bottom: 24rpx;
+		}
+
+		.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: 26rpx;
+					font-weight: 400;
+					color: #666666;
+				}
+
+				.page_content_list_num_nr {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+			}
+
+			.page_content_list_num {
+				width: 70%;
+				display: flex;
+
+				.page_content_list_num_label {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #666666;
+				}
+
+				.page_content_list_num_nr {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+			}
+
+			.page_content_list_items {
+				width: 30%;
+				display: flex;
+				margin-top: 24rpx;
+
+				.page_content_list_item_label {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #666666;
+					flex-shrink: 0;
+				}
+
+				.page_content_list_item_nr {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+			}
+
+			.page_content_list_item {
+				width: 70%;
+				display: flex;
+
+				.page_content_list_item_label {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #666666;
+					flex-shrink: 0;
+				}
+
+				.page_content_list_item_nr {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+			}
+		}
+	}
+
+	.page_h {
+		height: 20rpx;
+	}
+
+	.page_yxwl {
+		padding: 30rpx;
+		background: #ffffff;
+
+		.page_yxwl_title {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+
+			.page_yxwl_title_x {
+				width: 8rpx;
+				height: 30rpx;
+				background: #4275FC;
+				border-radius: 2rpx;
+				margin-right: 16rpx;
+			}
+
+			span {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #222222;
+			}
+
+			.left {
+				display: flex;
+				align-items: center;
+
+				.page_yxwl_title_x {
+					width: 8rpx;
+					height: 30rpx;
+					background: #4275FC;
+					border-radius: 2rpx;
+					margin-right: 16rpx;
+				}
+
+				span {
+					font-size: 32rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+			}
+
+			.right {
+				display: flex;
+				align-items: center;
+
+				img {
+					width: 28rpx;
+					height: 28rpx;
+					margin-right: 14rpx;
+				}
+
+				span {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+			}
+		}
+
+		.page_yxwl_list {
+			display: flex;
+			flex-direction: column;
+			padding-bottom: 30rpx;
+			border-bottom: 1rpx solid #ececec;
+
+			&:last-child {
+				margin-bottom: 0;
+				border: none;
+			}
+
+			.page_yxwl_list_item {
+				margin-top: 28rpx;
+
+				.page_yxwl_list_item_top {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+
+					.page_yxwl_list_item_top_left {
+						font-size: 30rpx;
+						font-weight: 500;
+						color: #222222;
+					}
+				}
+
+				.page_yxwl_list_item_sx {
+					display: flex;
+					align-items: center;
+					margin-top: 15rpx;
+				}
+
+				.page_yxwl_list_item_num {
+					display: flex;
+					flex-direction: column;
+
+					// margin-top: 30rpx;
+					&:first-child {
+						margin-top: 0;
+					}
+
+					.dis {
+						display: flex;
+					}
+
+					.itemy {
+						margin-top: 20rpx;
+						width: 100%;
+						display: flex;
+						align-items: center;
+						position: relative;
+
+						.itemy_item {
+							flex: 1;
+							display: flex;
+							align-items: center;
+
+							.label {
+								font-size: 26rpx;
+								font-weight: 400;
+								color: #666666;
+								flex-shrink: 0;
+							}
+
+							.nr {
+								font-size: 26rpx;
+								font-weight: 400;
+								color: #222222;
+
+								input {
+									width: 100rpx;
+									height: 35rpx;
+									border-radius: 8rpx;
+									border: 1rpx solid #E5E5E5;
+									margin-right: 10rpx;
+									margin-left: 5rpx;
+								}
+
+								span {
+									font-size: 26rpx;
+									font-weight: 400;
+									color: #222222;
+								}
+							}
+						}
+
+						.dele {
+							position: absolute;
+							right: -30rpx;
+							width: 48rpx;
+							height: 48rpx;
+
+							img {
+								width: 100%;
+								height: 100%;
+							}
+						}
+					}
+
+					.items {
+						width: 50%;
+						display: flex;
+						align-items: center;
+
+						.label {
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+
+						.nr {
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #222222;
+
+							input {
+								width: 100rpx;
+								height: 40rpx;
+								margin-right: 10rpx;
+							}
+
+							span {
+								font-size: 26rpx;
+								font-weight: 400;
+								color: #222222;
+							}
+						}
+					}
+
+					.item {
+						width: 70%;
+						display: flex;
+						align-items: center;
+
+						.label {
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+
+						.nr {
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #222222;
+
+							input {
+								width: 100rpx;
+								height: 40rpx;
+								margin-right: 10rpx;
+							}
+
+							span {
+								font-size: 26rpx;
+								font-weight: 400;
+								color: #222222;
+							}
+						}
+					}
+				}
+			}
+		}
+
+		.page_yxwl_kong {
+			padding: 50rpx 0;
+			font-size: 25rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+	}
+
+	.page_zw {
+		height: 160rpx;
+	}
+
+	.page_footer {
+		width: calc(100% - 60rpx);
+		background: #F7F7F7;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		position: fixed;
+		bottom: 0;
+		left: 30rpx;
+		padding-bottom: 68rpx;
+
+		.page_footer_qr {
+			flex: 1;
+			height: 88rpx;
+			background: #fff;
+			box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+			border-radius: 8rpx;
+			font-size: 32rpx;
+			font-weight: 500;
+			color: $nav-color;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+			img {
+				width: 30rpx;
+				height: 30rpx;
+				margin-right: 12rpx;
+			}
+		}
+
+		.page_footer_ck {
+			flex: 1;
+			height: 88rpx;
+			background: $nav-color;
+			box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+			border-radius: 8rpx;
+			font-size: 32rpx;
+			font-weight: 500;
+			color: #FFFFFF;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+	}
+</style>
diff --git a/minipro_standard/pages/allocation/allocation.vue b/minipro_standard/pages/allocation/allocation.vue
new file mode 100644
index 0000000..43022fc
--- /dev/null
+++ b/minipro_standard/pages/allocation/allocation.vue
@@ -0,0 +1,269 @@
+<template>
+	<view class="fp">
+		<view class="fp_list">
+			<view class="fp_list_item">
+				<view class="fp_list_item_left">
+					<text style="color: #f00;">*</text>
+					<text>璁″垝鐢熶骇鏁伴噺锛�</text>
+				</view>
+				<view class="fp_list_item_right">
+					<u--input placeholder="璇疯緭鍏�" :customStyle="{width: '180rpx'}" inputAlign="right" type="number" border="surround" v-model="form.num"></u--input>
+				</view>
+			</view>
+			<view class="fp_list_item">
+				<view class="fp_list_item_left">
+					<text style="color: #f00;">*</text>
+					<text>璁″垝寮�宸ユ棩鏈燂細</text>
+				</view>
+				<view class="fp_list_item_right" @click="timeShow = true">
+					<text class="black" v-if="form.startTime">{{form.startTime}}</text>
+					<text v-else>骞� / 鏈� / 鏃�</text>
+					<u-icon name="arrow-right" color="#999999"></u-icon>
+				</view>
+			</view>
+			<view class="fp_list_item" @click="show = true">
+				<view class="fp_list_item_left">
+					<text>鐢熶骇璁惧</text>
+				</view>
+				<view class="fp_list_item_right">
+					<text v-if="form.equipmentName" class="black">{{form.equipmentName}}</text>
+					<text v-else>璇烽�夋嫨</text>
+					<u-icon name="arrow-right" color="#999999"></u-icon>
+				</view>
+			</view>
+			<view class="fp_list_item1" v-show="form.equipmentName">
+				<view class="fp_list_item_left">
+					<text>鐢熶骇浜哄憳</text>
+				</view>
+				<view class="fp_list_item_right">
+					<u-checkbox-group v-model="form.personnelId" v-show="personnelData.length > 0">
+						<u-checkbox :name="item.id" v-for="(item, index) in personnelData" :key="index" activeColor="#4275FC">{{item.text}}</u-checkbox>
+					</u-checkbox-group>
+					<view class="wu" v-show="personnelData.length === 0">
+						<text>鏆傛棤鏁版嵁</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="fp_footer">
+			<view class="fp_footer_close" @click="go">鍙栨秷</view>
+			<button class="fp_footer_submit" @click="submit">纭</button>
+		</view>
+		<!-- 閫夋嫨鏃ユ湡 -->
+		<u-calendar :show="timeShow" @close="timeShow = false" @confirm="timeConfirm"></u-calendar>
+		<!-- 閫夋嫨璁惧 -->
+		<u-picker :show="show" :columns="columns" @confirm="confirm" @cancel="show = false" keyName="label"></u-picker>
+	</view>
+</template>
+
+<script>
+	import { gsdate } from '@/util/utils.js'
+	export default {
+		data() {
+			return {
+				show: false,
+				columns: [[{ label: '璁惧涓�' }]],
+				form: {
+					num: '',        // 鐢熶骇鏁伴噺
+					startTime: gsdate(new Date()),      // 寮�濮嬫椂闂�
+					equipmentId: '',    // 璁惧id
+					equipmentName: '',    // 璁惧鍚嶇О 
+					personnelId: []    // 浜哄憳id
+				},
+				personnelData: [],    // 浜哄憳鏁版嵁
+				timeShow: false
+			};
+		},
+		onLoad(option) {
+			this.form.num = option.num
+		},
+		methods: {
+			go() {
+				uni.navigateBack({ delta: 1 });
+			},
+			confirm(val) {
+				this.form.equipmentName = val.value[0].label
+				this.form.equipmentId = 1
+				this.show = false
+			},
+			timeConfirm(val) {
+				this.form.startTime = val[0]
+				this.timeShow = false
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.fp {
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    background: #F7F7F7;
+    .fp_list {
+        display: flex;
+        flex-direction: column;
+        .fp_list_item1 {
+            display: flex;
+            flex-direction: column;
+            justify-content: space-between;
+            padding: 20rpx 30rpx;
+            box-sizing: border-box;
+            background: #ffffff;
+            border-bottom: 1rpx solid #ececec;
+            .fp_list_item_left {
+                flex-shrink: 0;
+                margin-bottom: 20rpx;
+				display: flex;
+				align-items: center;
+                text {
+					color: #222222;
+					font-size: 30rpx;
+					font-weight: 400;
+                }
+            }
+            .fp_list_item_right {
+                display: flex;
+                align-items: center;
+                .wu {
+                    width: 100%;
+                    margin: 30rpx 0;
+                    display: flex;
+                    align-items: center;
+                    justify-content: center;
+                    text {
+                        font-size: 26rpx;
+                        color: black;
+                    }
+                }
+                .van-checkbox {
+                    margin-right: 5rpx !important;
+                    margin-top: 10rpx !important;
+                    &:nth-child(1) {
+                        margin-top: 0 !important;
+                    }
+                    &:nth-child(2) {
+                        margin-top: 0 !important;
+                    }
+                    &:nth-child(3) {
+                        margin-top: 0 !important;
+                    }
+                    .van-checkbox__label {
+                        color: black !important;
+                    }
+                }
+                .black {
+                    color: black !important;
+                }
+                input {
+                    width: 180rpx;
+                    height: 60rpx;
+                    border-radius: 8rpx;
+                    border: 2rpx solid #E5E5E5;
+                    padding: 0 30rpx;
+                    text-align: right;
+                    font-size: 25rpx;
+                }
+                text {
+                    font-size: 28rpx;
+                    font-weight: 400;
+                    color: #999999;
+                    margin-right: 20rpx;
+                }
+            }
+        }
+        .fp_list_item {
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            padding: 0 30rpx;
+            height: 98rpx;
+            box-sizing: border-box;
+            background: #ffffff;
+            border-bottom: 1rpx solid #ececec;
+            .fp_list_item_left {
+                flex-shrink: 0;
+                b {
+                    color: $nav-stateColor4;
+                    font-size: 28rpx;
+                    margin-right: 5rpx;
+                }
+                text {
+                    color: #222222;
+                    font-size: 30rpx;
+                    font-weight: 400;
+                }
+            }
+            .fp_list_item_right {
+                display: flex;
+                align-items: center;
+                .wu {
+                    text-align: center;
+                    text {
+                        font-size: 26rpx;
+                        color: black;
+                    }
+                }
+                .black {
+                    color: black !important;
+                }
+                input {
+                    width: 180rpx;
+                    height: 60rpx;
+                    border-radius: 8rpx;
+                    border: 1rpx solid #E5E5E5;
+                    padding: 0 30rpx;
+                    text-align: right;
+                    font-size: 25rpx;
+                }
+                text {
+                    font-size: 28rpx;
+                    font-weight: 400;
+                    color: #999999;
+                    margin-right: 20rpx;
+                }
+            }
+        }
+    }
+    .fp_footer {
+        width: 100%;
+        padding-left: 30rpx;
+        padding-right: 30rpx;
+        padding-bottom: 68rpx;
+        box-sizing: border-box;
+        position: fixed;
+        bottom: 0;
+        left: 0;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        .fp_footer_close {
+            width: 334rpx;
+            height: 88rpx;
+            background: #FFFFFF;
+            box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+            border-radius: 8rpx;
+            font-size: 30rpx;
+            font-weight: 500;
+            color: #666666;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+        }
+        .fp_footer_submit {
+            width: 334rpx;
+            height: 88rpx;
+            border: none;
+            background: $nav-color;
+            box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+            border-radius: 8rpx;
+            font-size: 30rpx;
+            font-weight: 500;
+            color: #ffffff;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+        }
+    }
+}
+</style>
diff --git a/minipro_standard/pages/changePassword/changePassword.vue b/minipro_standard/pages/changePassword/changePassword.vue
index a975dd8..311f0d2 100644
--- a/minipro_standard/pages/changePassword/changePassword.vue
+++ b/minipro_standard/pages/changePassword/changePassword.vue
@@ -25,7 +25,7 @@
 			</view>
 		</view>
 		<view class="password_footer">
-			<button v-preventReClick class="password_footer_submit">
+			<button class="password_footer_submit" @click="submit">
 				<text>瀹屾垚</text>
 			</button>
 		</view>
@@ -33,6 +33,7 @@
 </template>
 
 <script>
+	import { updatePwd } from '@/util/api/PersonalAPI'
 	export default {
 		data() {
 			return {
@@ -42,6 +43,38 @@
 					confirmPassword: ''
 				}
 			};
+		},
+		methods: {
+			// 蹇樿瀵嗙爜
+			forgotPassword() {
+				
+			},
+			// 鎻愪氦淇敼
+			submit() {
+				if (!this.form.originalPassword) {
+					uni.showToast({ title: '鍘熷瘑鐮佷笉鑳戒负绌�', icon: 'none', duration: 2000 });
+				} else if (!this.form.newPassword) {
+					uni.showToast({ title: '鏂板瘑鐮佷笉鑳戒负绌�', icon: 'none', duration: 2000 });
+				} else if (!/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{6,}$/.test(this.form.newPassword)) {
+					uni.showToast({ title: '瀵嗙爜鏍煎紡涓嶆纭�', icon: 'none', duration: 2000 });
+				} else if (!this.form.confirmPassword) {
+					uni.showToast({ title: '纭瀵嗙爜涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				} else if (this.form.newPassword !== this.form.confirmPassword) {
+					uni.showToast({ title: '涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�', icon: 'none', duration: 2000 });
+				} else {
+					updatePwd({
+						newPwd: this.form.newPassword,
+						oldPwd: this.form.originalPassword
+					}).then(res => {
+						if (res.code === 200) {
+							uni.showToast({ title: '淇敼鎴愬姛', icon: 'success', duration: 2000, mask: true });
+							setTimeout(() => {
+								uni.navigateBack({ delta: 1 });
+							}, 2000)
+						}
+					})
+				}
+			}
 		}
 	}
 </script>
diff --git a/minipro_standard/pages/index/index.vue b/minipro_standard/pages/index/index.vue
index 225d435..9c02c28 100644
--- a/minipro_standard/pages/index/index.vue
+++ b/minipro_standard/pages/index/index.vue
@@ -1,12 +1,75 @@
 <template>
 	<view class="index">
 		<!-- <web-view v-if="show" @onPostMessage="onMessage" :src="'https://dmtest.ahapp.net/doumeeplant_h5/#/appletLogin?code=' + code"></web-view> -->
+		<!-- {{$store.state.statusbarHeight}} -->
+
+		<u-sticky>
+			<view class="plr50 pb30 nav-style">
+				<view
+					:style="{paddingTop: `${statusbarHeight}px`, height: `${navHeight}px`, lineHeight:`${navHeight}px`, textAlign: 'center'}">
+					寰呭姙</view>
+				<view class="cY">
+					<u-search placeholder="鎼滅储鍏抽敭瀛�" bgColor="#f7f7f7" :showAction="false" @search="scrolltoupper"
+						shape="square" v-model="searchForm.name"></u-search>
+					<image src="../../static/filter@2x.png" class="img48 ml20" @click="filterAction" mode=""></image>
+				</view>
+				<view class="cY mt30">
+					<view class="sbtn rd8" :class="searchForm.status==0?'sbtn_green':'sbtn_black_rim'"
+						@click="selectType(0)">寰呭姙</view>
+					<view class="sbtn rd8 ml20" :class="searchForm.status==1?'sbtn_green':'sbtn_black_rim'"
+						@click="selectType(1)">宸插姙</view>
+				</view>
+			</view>
+		</u-sticky>
+
+		<u-list :showScrollbar="false" @scrolltolower="scrolltolower" @scrolltoupper="scrolltoupper"
+			:height="windowHeight - (statusbarHeight + navHeight + 120) + 'px'">
+			<u-list-item v-for="(item, index) in projectList" :key="index">
+				<view class="box_list">
+					<view class="box_list_item" @click="jump(item)">
+						<view class="box_list_item_icon">
+							<image src="../../static/daiban_ic_daiban@2x.png" mode=""></image>
+						</view>
+						<view class="box_list_item_nr">
+							<view class="box_list_item_nr_top">
+								<span>{{item.title}}</span>
+								<span>{{item.createTime}}</span>
+							</view>
+							<view class="box_list_item_nr_bottom">
+								{{item.content}}
+							</view>
+						</view>
+					</view>
+				</view>
+			</u-list-item>
+		</u-list>
+		<u-popup :show="show" @close="close" :round="8" zIndex="20000">
+			<view class="rp p40 contanir">
+				<view class="c2 b">绫诲瀷</view>
+				<view class="content">
+					<u-grid col="2" :border="false">
+						<u-grid-item v-for="item in types" :key="item.id">
+							<view class="ptb20 c9 type-style tc rd10"
+								:class="type===item.id?'sbtn_green':'sbtn_gray'"
+								@click="type=item.id">{{ item.name }}</view>
+						</u-grid-item>
+					</u-grid>
+				</view>
+				<view class="flex ap tc bottom-view">
+					<view class="fx1 ptb20 sbtn_gray c9" @click="resetType">閲嶇疆</view>
+					<view class="fx1 ml20 ptb20 sbtn_green" @click="confirm">纭畾</view>
+				</view>
+			</view>
+		</u-popup>
 		<myTabbar :index="0" />
 	</view>
 </template>
 
 <script>
-	import myTabbar from "@/components/myTabber.vue"	
+	import myTabbar from "@/components/myTabber.vue"
+	import {
+		mapState
+	} from 'vuex'
 	export default {
 		components: {
 			myTabbar
@@ -14,23 +77,212 @@
 		data() {
 			return {
 				code: '',
-				show: false
+				windowHeight: '',
+				show: false,
+				types: [{
+						id: 0,
+						name: '杞﹂棿棰嗘枡-寰呭彂璐�'
+					},
+					{
+						id: 1,
+						name: '杞﹂棿棰嗘枡-寰呭叆搴�'
+					},
+					{
+						id: 2,
+						name: '鏈哄彴澶囨枡-寰呭彂璐�'
+					},
+					{
+						id: 3,
+						name: '鏈哄彴澶囨枡-寰呭叆搴�'
+					},
+					{
+						id: 4,
+						name: '瀹屽伐鍏ュ簱-寰呮帴鏀�'
+					},
+					{
+						id: 5,
+						name: '搴撳瓨杞簱-寰呭彂璐�'
+					},
+					{
+						id: 6,
+						name: '搴撳瓨杞簱-寰呭叆搴�'
+					},
+					{
+						id: 7,
+						name: '鐢宠瀹℃壒'
+					},
+					{
+						id: 8,
+						name: '瀹㈤��/杩斿搧鍥炲巶妫�楠�'
+					}
+				],
+				type: '',
+				searchForm: {
+					name: '',
+					status: 0,
+					type: ''
+				},
+				projectList: [{
+						title: '212132',
+						createTime: '2023-08-28',
+						content: 'asdsadsax鎵嬫墦澶ц惃杈剧殑鍟婂疄鎵揳s'
+					},
+					{
+						title: '212132',
+						createTime: '2023-08-28',
+						content: 'asdsadsax鎵嬫墦澶ц惃杈剧殑鍟婂疄鎵揳s'
+					},
+					{
+						title: '212132',
+						createTime: '2023-08-28',
+						content: 'asdsadsax鎵嬫墦澶ц惃杈剧殑鍟婂疄鎵揳s'
+					},
+					{
+						title: '212132',
+						createTime: '2023-08-28',
+						content: 'asdsadsax鎵嬫墦澶ц惃杈剧殑鍟婂疄鎵揳s'
+					},
+				]
 			}
 		},
+		computed: {
+			...mapState(['statusbarHeight', 'navHeight']),
+		},
 		onLoad() {
+			uni.getSystemInfo({
+				success: res => {
+					this.windowHeight = res.windowHeight
+				}
+			})
+
 			var that = this
 			uni.login({
 				provider: 'weixin',
-				success: function (loginRes) {
+				success: function(loginRes) {
 					// console.log(loginRes);
 					that.code = loginRes.code
-					that.show = true
 				}
 			});
 		},
 		methods: {
-			onMessage(e) {
-				console.log('12345654321')
+			scrolltolower() {},
+			scrolltoupper() {},
+			selectType(status) {
+				if (this.searchForm.status == status) return
+				this.searchForm.status = status
+				this.scrolltoupper()
+			},
+			jump(item) {
+				if ((item.type === 0 || item.type === 2 || item.type === 5) && item.status === 0) { // 璺宠浆鍑哄簱(杞簱鍗�)
+					router.push({
+						name: 'issueOperation',
+						query: {
+							id: item.objId,
+							dbid: item.id,
+							type: 7
+						}
+					})
+				} else if ((item.type === 0 || item.type === 2 || item.type === 5) && item.status === 1) {
+					router.push({
+						name: 'wTransferDetail',
+						query: {
+							id: item.objId,
+							status: item.status,
+							type: item.type,
+							dbid: item.id
+						}
+					})
+					// router.push({ name: 'wTransferDetail', query: { id: item.objId, status: 0, type: item.type, dbid: item.id } })
+				} else if ((item.type === 1 || item.type === 4 || item.type === 6) && item.status === 0) { // 璺宠浆鍏ュ簱(杞簱鍗�)
+					if (item.type === 4) { // 璺宠浆瀹屽伐鍏ュ簱璇︽儏
+						router.push({
+							name: 'completionDetails',
+							query: {
+								id: item.objId,
+								dbid: item.id,
+								type: 7,
+								isShow: 1,
+								Type: item.type
+							}
+						})
+						return
+					}
+					router.push({
+						name: 'warehousing',
+						query: {
+							id: item.objId,
+							dbid: item.id,
+							type: 7
+						}
+					})
+				} else if ((item.type === 1 || item.type === 4 || item.type === 6) && item.status === 1) {
+					if (item.type === 4) { // 璺宠洓瀹屽伐鍏ュ簱璇︽儏
+						router.push({
+							name: 'completionDetails',
+							query: {
+								id: item.objId,
+								dbid: item.id,
+								type: 7,
+								isShow: 2
+							}
+						})
+						return
+					}
+					router.push({
+						name: 'wTransferDetail',
+						query: {
+							id: item.objId
+						}
+					})
+				} else if (item.type === 3 && item.status === 0) { // 纭澶囨枡
+					router.push({
+						name: 'orderStock',
+						query: {
+							id: item.objId,
+							dbid: item.id
+						}
+					})
+				} else if (item.type === 3 && item.status === 1) { // 澶囨枡锛堣浆搴撳崟璇︽儏锛�
+					// router.push({ name: 'wInboundDetail', query: { id: item.objId } })
+					router.push({
+						name: 'wTransferDetail',
+						query: {
+							id: item.objId
+						}
+					})
+				} else if (item.type === 9 && item.status === 0) { // 璋冩暣鍏ュ簱(鍏ュ簱鍗�)
+					router.push({
+						name: 'warehousing',
+						query: {
+							id: item.objId,
+							dbid: item.id,
+							type: 9
+						}
+					})
+				} else if (item.type === 9 && item.status === 1) {
+					router.push({
+						name: 'wInboundDetail',
+						query: {
+							id: item.objId
+						}
+					})
+				}
+			},
+			filterAction() {
+				this.show = true
+			},
+			close() {
+				this.show = false
+			},
+			resetType() {
+				this.type = ''
+				this.searchForm.type = ''
+				this.confirm()
+			},
+			confirm() {
+				this.searchForm.type = this.type
+				this.show = false
+				this.scrolltoupper()
 			}
 		}
 	}
@@ -41,4 +293,114 @@
 		width: 100vw;
 		height: 100vh;
 	}
+
+	.nav-style {
+		border-bottom: 20rpx #f7f7f7 solid;
+	}
+
+	.box_list {
+		width: 100%;
+		padding: 0 30rpx;
+		display: flex;
+		flex-direction: column;
+		box-sizing: border-box;
+
+		.box_list_item {
+			padding: 30rpx 0;
+			display: flex;
+			border-bottom: 1rpx solid #E5E5E5;
+
+			&:last-child {
+				border: none;
+			}
+
+			.box_list_item_icon {
+				flex-shrink: 0;
+				width: 64rpx;
+				height: 64rpx;
+				margin-right: 24rpx;
+				position: relative;
+
+				.box_list_item_icon_active {
+					position: absolute;
+					right: 0;
+					top: 0;
+					width: 18rpx;
+					height: 18rpx;
+					border-radius: 50%;
+					background: #DE5243;
+					border: 2rpx solid #FFFFFF;
+				}
+
+				image {
+					width: 100%;
+					height: 100%;
+				}
+			}
+
+			.box_list_item_nr {
+				flex: 1;
+				display: flex;
+				flex-direction: column;
+
+				.box_list_item_nr_top {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+
+					span {
+						&:first-child {
+							font-size: 30rpx;
+							font-weight: 500;
+							max-width: 450rpx;
+							color: #222222;
+							overflow: hidden;
+							white-space: nowrap;
+							text-overflow: ellipsis;
+							-o-text-overflow: ellipsis;
+						}
+
+						&:last-child {
+							flex-shrink: 0;
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #999999;
+							margin-left: 10rpx;
+							overflow: hidden;
+							white-space: nowrap;
+							text-overflow: ellipsis;
+							-o-text-overflow: ellipsis;
+						}
+					}
+				}
+
+				.box_list_item_nr_bottom {
+					font-size: 28rpx;
+					font-weight: 400;
+					color: #666666;
+					margin-top: 16rpx;
+					word-break: break-all;
+				}
+			}
+		}
+	}
+
+	.contanir {
+		height: calc(env(safe-area-inset-bottom) + 720rpx);
+
+		.content {
+			margin-top: 20rpx;
+
+			.type-style {
+				width: 325rpx;
+				margin-bottom: 20rpx;
+			}
+		}
+	}
+
+	.bottom-view {
+		left: 40rpx;
+		right: 40rpx;
+		bottom: 0
+	}
 </style>
diff --git a/minipro_standard/pages/inspectComplete/inspectComplete.vue b/minipro_standard/pages/inspectComplete/inspectComplete.vue
new file mode 100644
index 0000000..72f566e
--- /dev/null
+++ b/minipro_standard/pages/inspectComplete/inspectComplete.vue
@@ -0,0 +1,228 @@
+<template>
+	<view class="inspection">
+		<div class="inspection_list">
+			<div class="inspection_list_item">
+				<span>妫�楠岀被鍨�</span>
+				<div class="right">
+					<div class="right_item active">瀹屽伐妫�</div>
+					<!-- <div class="right_item active" v-if="form.status == '1'">宸℃</div>
+		                    <div class="right_item active" v-if="form.status == '2'">瀹屽伐妫�</div> -->
+				</div>
+			</div>
+		</div>
+		<div class="x"></div>
+		<div class="inspection_list">
+			<div class="inspection_list_item" @click="jumpGD">
+				<span>妫�楠屽伐鍗�</span>
+				<div class="right1">
+					<span :style="form.gdmc ? 'color: #000;' : ''">{{ form.gdmc ? form.gdmc : '鐐瑰嚮閫夋嫨妫�楠屽伐鍗�'}}</span>
+					<u-icon name="arrow-right" color="#999999" size="18" />
+				</div>
+			</div>
+			<div class="inspection_list_item" v-if="form.gdmc">
+				<span>璁″垝鏁伴噺</span>
+				<div class="right1">
+					<span
+						style="color: black;">{{info.planNum}}{{info.umodel ? info.umodel.name : ''}}</span>
+				</div>
+			</div>
+		</div>
+		<div class="x"></div>
+		<div class="inspection_list">
+			<div class="inspection_list_item">
+				<span>鑹搧鏁�</span>
+				<div class="right1">
+					<input type="number" v-model="form.hgsl" placeholder="0" />
+					<span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+				</div>
+			</div>
+			<div class="inspection_list_item">
+				<span>涓嶈壇鏁伴噺</span>
+				<div class="right1">
+					<input type="number" v-model="form.blsl" placeholder="0" />
+					<span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+				</div>
+			</div>
+			<div class="inspection_list_item" @click="selectBad" v-show="form.blsl > 0">
+				<span>涓嶈壇璇存槑</span>
+				<div class="right1">
+					<span :style="form.blsm ? 'color: #000;' : ''">{{ form.blsm ? form.blsm : '鐐瑰嚮閫夋嫨涓嶈壇鍘熷洜'}}</span>
+					<u-icon name="arrow-right" color="#999999" size="18" />
+				</div>
+			</div>
+		</div>
+		<div class="inspection_footer">
+			<button class="inspection_footer_sub" @click="submit" v-preventReClick>鎻愪氦</button>
+		</div>
+		<u-picker :show="show1" title="璇烽�夋嫨涓嶈壇璇存槑" :columns="columns" @cancel="show1=false" @confirm="badConfirm"></u-picker>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				info: {},
+				show1: false,
+				columns: [['涓浗', '缇庡浗', '鏃ユ湰']],
+				columns1: [],
+				form: {
+					status: '0',
+					gdid: '',
+					gdmc: '',
+					jygz: '',
+					jygzmc: '',
+					hgsl: 0,
+					blsl: 1,
+					blgz: '',
+					blgzmc: '',
+					blsm: '',
+					dw: ''
+				}
+			};
+		},
+		onLoad() {
+			uni.$on('workOrder', (data) => {
+				this.form.gdmc = data.mmodel.name + '-' + data.pgmodel.name
+				this.form.gdid = data.id
+				this.info = data
+				
+			})
+		},
+		methods: {
+			jumpGD() {
+				uni.navigateTo({
+					url: '/pages/selectWorkOrder/selectWorkOrder'
+				})
+			},
+			openBL() {},
+			getValue1() {},
+			selectBad() {
+				console.log('------0-----');
+				this.show1 = true
+			},
+			badConfirm(value) {
+				console.log(value);
+				this.show1 = false
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.inspection {
+		width: 100%;
+		height: 100%;
+		position: absolute;
+		background: #F7F7F7;
+
+		.x {
+			height: 20rpx;
+		}
+
+		.inspection_list {
+			padding: 0 30rpx;
+			background: white;
+
+			.inspection_list_item {
+				height: 98rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				border-bottom: 1rpx solid #E5E5E5;
+
+				&:last-child {
+					border: none;
+				}
+
+				span {
+					font-size: 30rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+
+				.right1 {
+					display: flex;
+					align-items: center;
+
+					span {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #999999;
+						margin-right: 10rpx;
+					}
+
+					input {
+						width: 180rpx;
+						height: 60rpx;
+						border-radius: 8rpx;
+						border: 1rpx solid #CCCCCC;
+						margin-right: 10rpx;
+						padding: 0 30rpx;
+						box-sizing: border-box;
+						font-size: 28rpx;
+					}
+
+					input::-webkit-input-placeholder {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #999999;
+					}
+
+					.dw {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #666666;
+					}
+				}
+
+				.right {
+					display: flex;
+					align-items: center;
+
+					.active {
+						background: $nav-color !important;
+						color: #ffffff !important;
+					}
+
+					.right_item {
+						padding: 18rpx 32rpx;
+						background: #F2F2F2;
+						border-radius: 8rpx;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						margin-left: 20rpx;
+					}
+				}
+			}
+		}
+
+		.inspection_footer {
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			width: calc(100% - 60rpx);
+			padding: 30rpx 30rpx 68rpx 30rpx;
+			background: #F7F7F7;
+
+			.inspection_footer_sub {
+				width: 100%;
+				height: 88rpx;
+				background: #4275FC;
+				box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.0800);
+				border-radius: 8rpx;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				border: none;
+			}
+		}
+	}
+</style>
diff --git a/minipro_standard/pages/inspectPatrol/inspectPatrol.vue b/minipro_standard/pages/inspectPatrol/inspectPatrol.vue
new file mode 100644
index 0000000..be1dace
--- /dev/null
+++ b/minipro_standard/pages/inspectPatrol/inspectPatrol.vue
@@ -0,0 +1,227 @@
+<template>
+	<view class="inspection">
+		<div class="inspection_list">
+			<div class="inspection_list_item">
+				<span>妫�楠岀被鍨�</span>
+				<div class="right">
+					<div class="right_item active">宸℃</div>
+					<!-- <div class="right_item active" v-if="form.status == '1'">宸℃</div>
+		                    <div class="right_item active" v-if="form.status == '2'">瀹屽伐妫�</div> -->
+				</div>
+			</div>
+		</div>
+		<div class="x"></div>
+		<div class="inspection_list">
+			<div class="inspection_list_item" @click="jumpGD">
+				<span>妫�楠屽伐鍗�</span>
+				<div class="right1">
+					<span :style="form.gdmc ? 'color: #000;' : ''">{{ form.gdmc ? form.gdmc : '鐐瑰嚮閫夋嫨妫�楠屽伐鍗�'}}</span>
+					<u-icon name="arrow-right" color="#999999" size="18" />
+				</div>
+			</div>
+			<div class="inspection_list_item" v-if="form.gdmc">
+				<span>璁″垝鏁伴噺</span>
+				<div class="right1">
+					<span
+						style="color: black;">{{info.planNum}}{{info.umodel ? info.umodel.name : ''}}</span>
+				</div>
+			</div>
+		</div>
+		<div class="x"></div>
+		<div class="inspection_list">
+			<div class="inspection_list_item">
+				<span>鑹搧鏁�</span>
+				<div class="right1">
+					<input type="number" v-model="form.hgsl" placeholder="0" />
+					<span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+				</div>
+			</div>
+			<div class="inspection_list_item">
+				<span>涓嶈壇鏁伴噺</span>
+				<div class="right1">
+					<input type="number" v-model="form.blsl" placeholder="0" />
+					<span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+				</div>
+			</div>
+			<div class="inspection_list_item" @click="selectBad" v-show="form.blsl > 0">
+				<span>涓嶈壇璇存槑</span>
+				<div class="right1">
+					<span :style="form.blsm ? 'color: #000;' : ''">{{ form.blsm ? form.blsm : '鐐瑰嚮閫夋嫨涓嶈壇鍘熷洜'}}</span>
+					<u-icon name="arrow-right" color="#999999" size="18" />
+				</div>
+			</div>
+		</div>
+		<div class="inspection_footer">
+			<button class="inspection_footer_sub" @click="submit" v-preventReClick>鎻愪氦</button>
+		</div>
+		<u-picker :show="show1" title="璇烽�夋嫨涓嶈壇璇存槑" :columns="columns" @cancel="show1=false" @confirm="badConfirm"></u-picker>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				info: {},
+				show1: false,
+				columns: [['涓浗', '缇庡浗', '鏃ユ湰']],
+				columns1: [],
+				form: {
+					status: '0',
+					gdid: '',
+					gdmc: '',
+					jygz: '',
+					jygzmc: '',
+					hgsl: 0,
+					blsl: 1,
+					blgz: '',
+					blgzmc: '',
+					blsm: '',
+					dw: ''
+				}
+			};
+		},
+		onLoad() {
+			uni.$on('workOrder', (data) => {
+				this.form.gdmc = data.mmodel.name + '-' + data.pgmodel.name
+				this.form.gdid = data.id
+				this.info = data
+				
+			})
+		},
+		methods: {
+			jumpGD() {
+				uni.navigateTo({
+					url: '/pages/selectWorkOrder/selectWorkOrder'
+				})
+			},
+			openBL() {},
+			getValue1() {},
+			selectBad() {
+				console.log('------0-----');
+				this.show1 = true
+			},
+			badConfirm(value) {
+				this.show1 = false;
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.inspection {
+		width: 100%;
+		height: 100%;
+		position: absolute;
+		background: #F7F7F7;
+
+		.x {
+			height: 20rpx;
+		}
+
+		.inspection_list {
+			padding: 0 30rpx;
+			background: white;
+
+			.inspection_list_item {
+				height: 98rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				border-bottom: 1rpx solid #E5E5E5;
+
+				&:last-child {
+					border: none;
+				}
+
+				span {
+					font-size: 30rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+
+				.right1 {
+					display: flex;
+					align-items: center;
+
+					span {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #999999;
+						margin-right: 10rpx;
+					}
+
+					input {
+						width: 180rpx;
+						height: 60rpx;
+						border-radius: 8rpx;
+						border: 1rpx solid #CCCCCC;
+						margin-right: 10rpx;
+						padding: 0 30rpx;
+						box-sizing: border-box;
+						font-size: 28rpx;
+					}
+
+					input::-webkit-input-placeholder {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #999999;
+					}
+
+					.dw {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #666666;
+					}
+				}
+
+				.right {
+					display: flex;
+					align-items: center;
+
+					.active {
+						background: $nav-color !important;
+						color: #ffffff !important;
+					}
+
+					.right_item {
+						padding: 18rpx 32rpx;
+						background: #F2F2F2;
+						border-radius: 8rpx;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						margin-left: 20rpx;
+					}
+				}
+			}
+		}
+
+		.inspection_footer {
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			width: calc(100% - 60rpx);
+			padding: 30rpx 30rpx 68rpx 30rpx;
+			background: #F7F7F7;
+
+			.inspection_footer_sub {
+				width: 100%;
+				height: 88rpx;
+				background: #4275FC;
+				box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.0800);
+				border-radius: 8rpx;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				border: none;
+			}
+		}
+	}
+</style>
diff --git a/minipro_standard/pages/linePatrol/linePatrol.vue b/minipro_standard/pages/linePatrol/linePatrol.vue
new file mode 100644
index 0000000..094111a
--- /dev/null
+++ b/minipro_standard/pages/linePatrol/linePatrol.vue
@@ -0,0 +1,225 @@
+<template>
+	<view class="inspection">
+		<div class="inspection_list">
+			<div class="inspection_list_item">
+				<span>妫�楠岀被鍨�</span>
+				<div class="right">
+					<div class="right_item active">宸$嚎</div>
+				</div>
+			</div>
+		</div>
+		<div class="x"></div>
+		<div class="inspection_list">
+			<div class="inspection_list_item" @click="jumpGD">
+				<span>妫�楠屽伐鍗�</span>
+				<div class="right1">
+					<span :style="form.gdmc ? 'color: #000;' : ''">{{ form.gdmc ? form.gdmc : '鐐瑰嚮閫夋嫨妫�楠屽伐鍗�'}}</span>
+					<u-icon name="arrow-right" color="#999999" size="18" />
+				</div>
+			</div>
+			<div class="inspection_list_item" v-if="form.gdmc">
+				<span>璁″垝鏁伴噺</span>
+				<div class="right1">
+					<span
+						style="color: black;">{{info.planNum}}{{info.umodel ? info.umodel.name : ''}}</span>
+				</div>
+			</div>
+		</div>
+		<div class="x"></div>
+		<div class="inspection_list">
+			<div class="inspection_list_item">
+				<span>鑹搧鏁�</span>
+				<div class="right1">
+					<input type="number" v-model="form.hgsl" placeholder="0" />
+					<span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+				</div>
+			</div>
+			<div class="inspection_list_item">
+				<span>涓嶈壇鏁伴噺</span>
+				<div class="right1">
+					<input type="number" v-model="form.blsl" placeholder="0" />
+					<span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+				</div>
+			</div>
+			<div class="inspection_list_item" @click="selectBad" v-show="form.blsl > 0">
+				<span>涓嶈壇璇存槑</span>
+				<div class="right1">
+					<span :style="form.blsm ? 'color: #000;' : ''">{{ form.blsm ? form.blsm : '鐐瑰嚮閫夋嫨涓嶈壇鍘熷洜'}}</span>
+					<u-icon name="arrow-right" color="#999999" size="18" />
+				</div>
+			</div>
+		</div>
+		<div class="inspection_footer">
+			<button class="inspection_footer_sub" @click="submit" v-preventReClick>鎻愪氦</button>
+		</div>
+		<u-picker :show="show1" title="璇烽�夋嫨涓嶈壇璇存槑" :columns="columns" @cancel="show1=false" @confirm="badConfirm"></u-picker>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				info: {},
+				show1: false,
+				columns: [['涓浗', '缇庡浗', '鏃ユ湰']],
+				columns1: [],
+				form: {
+					status: '0',
+					gdid: '',
+					gdmc: '',
+					jygz: '',
+					jygzmc: '',
+					hgsl: 0,
+					blsl: 1,
+					blgz: '',
+					blgzmc: '',
+					blsm: '',
+					dw: ''
+				}
+			};
+		},
+		onLoad() {
+			uni.$on('workOrder', (data) => {
+				this.form.gdmc = data.mmodel.name + '-' + data.pgmodel.name
+				this.form.gdid = data.id
+				this.info = data
+				
+			})
+		},
+		methods: {
+			jumpGD() {
+				uni.navigateTo({
+					url: '/pages/selectWorkOrder/selectWorkOrder'
+				})
+			},
+			openBL() {},
+			getValue1() {},
+			selectBad() {
+				console.log('------0-----');
+				this.show1 = true
+			},
+			badConfirm() {
+				this.show1 = false;
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.inspection {
+		width: 100%;
+		height: 100%;
+		position: absolute;
+		background: #F7F7F7;
+
+		.x {
+			height: 20rpx;
+		}
+
+		.inspection_list {
+			padding: 0 30rpx;
+			background: white;
+
+			.inspection_list_item {
+				height: 98rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				border-bottom: 1rpx solid #E5E5E5;
+
+				&:last-child {
+					border: none;
+				}
+
+				span {
+					font-size: 30rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+
+				.right1 {
+					display: flex;
+					align-items: center;
+
+					span {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #999999;
+						margin-right: 10rpx;
+					}
+
+					input {
+						width: 180rpx;
+						height: 60rpx;
+						border-radius: 8rpx;
+						border: 1rpx solid #CCCCCC;
+						margin-right: 10rpx;
+						padding: 0 30rpx;
+						box-sizing: border-box;
+						font-size: 28rpx;
+					}
+
+					input::-webkit-input-placeholder {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #999999;
+					}
+
+					.dw {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #666666;
+					}
+				}
+
+				.right {
+					display: flex;
+					align-items: center;
+
+					.active {
+						background: $nav-color !important;
+						color: #ffffff !important;
+					}
+
+					.right_item {
+						padding: 18rpx 32rpx;
+						background: #F2F2F2;
+						border-radius: 8rpx;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						margin-left: 20rpx;
+					}
+				}
+			}
+		}
+
+		.inspection_footer {
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			width: calc(100% - 60rpx);
+			padding: 30rpx 30rpx 68rpx 30rpx;
+			background: #F7F7F7;
+
+			.inspection_footer_sub {
+				width: 100%;
+				height: 88rpx;
+				background: #4275FC;
+				box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.0800);
+				border-radius: 8rpx;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				border: none;
+			}
+		}
+	}
+</style>
diff --git a/minipro_standard/pages/login/login.vue b/minipro_standard/pages/login/login.vue
index 6f10dc0..46d088a 100644
--- a/minipro_standard/pages/login/login.vue
+++ b/minipro_standard/pages/login/login.vue
@@ -7,36 +7,80 @@
 		</view>
 		<view class="bg_w rd8 ptb30 pl40 bbox com-input flex input-height">
 			<image src="@/static/login_ic_code@2x.png" mode="" class="img40 mr25"></image>
-			<u--input placeholder="浼佷笟浠g爜" border="none" v-model="loginForm.companyId"></u--input>
+			<u--input placeholder="浼佷笟浠g爜" border="none" v-model="from.companyId"></u--input>
 		</view>
 		<view class="bg_w rd8 ptb30 pl40 bbox mt40 flex input-height">
 			<image src="@/static/login_ic_phone@2x.png" mode="" class="img40 mr25"></image>
-			<u--input placeholder="鎵嬫満鍙�" border="none" v-model="loginForm.account"></u--input>
+			<u--input placeholder="鎵嬫満鍙�" border="none" v-model="from.username"></u--input>
 		</view>
 		<view class="bg_w rd8 ptb30 pl40 bbox mt40 flex input-height">
 			<image src="@/static/login_ic_password@2x.png" mode="" class="img40 mr25"></image>
-			<u--input placeholder="瀵嗙爜" border="none" v-model="loginForm.password"></u--input>
+			<u--input placeholder="瀵嗙爜" border="none" v-model="from.password"></u--input>
 		</view>
 		<view class="login-btn mt80" @click="loginAction">绔嬪嵆鐧诲綍</view>
 	</view>
 </template>
 
 <script>
+	import { wxLogin, wxAccountLogin, getUserInfo, wxProgramLogin } from '@/util/api/index.js';
 	export default {
 		data() {
 			return {
-				loginForm: {
+				from: {
+					openid: '',
+					unionid: '',
 					companyId: '',
-					account: '',
+					username: '',
 					password: ''
 				}
 			};
 		},
+		onLoad() {
+			var that = this
+			uni.login({
+				provider: 'weixin',
+				success: function (loginRes) {
+					wxProgramLogin({ code: loginRes.code })
+						.then(async (res) => {
+							if (res.code === 200) {
+								// 鍏嶇櫥褰曪紝鐩存帴璺抽椤�
+								if (res.data.loginStatus == 0) {
+									that.$store.commit('SETSESSION', res.data.session)
+									let info = await getUserInfo()
+									if (info.code === 200) {
+										await that.$store.commit('setEntrance', 'WX')
+										await that.$store.commit('SETUSERINFO', info.data)
+										await that.$store.dispatch('getMenuList', 2)
+										uni.switchTab({
+											url: '/pages/workbench/workbench'
+										});
+									}
+								} else {
+									that.from.openid = res.data.openid
+									that.from.unionid = res.data.unionid
+								}
+							}
+						})
+				}
+			});
+		},
 		methods: {
-			loginAction() {
-				uni.reLaunch({
-					url: '/pages/workbench/workbench'
-				})
+			async loginAction() {
+				if (!this.from.companyId) return uni.showToast({ title: '浼佷笟浠g爜涓嶈兘涓虹┖', icon:"error", duration: 2000 });
+				if (!this.from.username) return uni.showToast({ title: '鎵嬫満鍙蜂笉鑳戒负绌�', icon:"error", duration: 2000 });
+				if (!this.from.password) return uni.showToast({ title: '瀵嗙爜涓嶈兘涓虹┖', icon:"error", duration: 2000 });
+				let res = await wxAccountLogin(this.from)
+				if (res.code === 200) {
+					await this.$store.commit('SETSESSION', res.data)
+					let user = await getUserInfo({})
+					if (user.code === 200) {
+						await this.$store.commit('SETUSERINFO', user.data)
+						await this.$store.dispatch('getMenuList', 2)
+						uni.switchTab({
+							url: '/pages/workbench/workbench'
+						});
+					}
+				}
 			}
 		}
 	}
@@ -56,7 +100,6 @@
 			height: 100%;
 		}
 		.login-log {
-			// margin-top: ;
 			margin: 356rpx auto 0 auto ;
 			left: 0;
 			right: 0;
@@ -75,7 +118,7 @@
 		}
 	}
 	.input-height {
-		height: 100rpx;
+		height: 100rpx; 
 	}
 	.com-input {
 		margin-top: -60px;
diff --git a/minipro_standard/pages/mine/mine.vue b/minipro_standard/pages/mine/mine.vue
index 18f9c4f..19d9808 100644
--- a/minipro_standard/pages/mine/mine.vue
+++ b/minipro_standard/pages/mine/mine.vue
@@ -2,11 +2,11 @@
 <view>
 	<div class="box">
 		<div class="box_info" :style="{background: 'url(' + img + ')'}">
-			<image src="@/static/2@2x.png" mode="widthFix" />
+			<image :src="userInfo.avatar ? userInfo.avatar : avatar" mode="widthFix" />
 			<div class="box_info_box">
-				<text>寮犱笁</text>
-				<div class="box_info_box_x" @click="show = true">
-					<text>璞嗙背绉戞妧</text>
+				<text>{{userInfo.realname}}</text>
+				<div class="box_info_box_x" @click="switchOrganization">
+					<text>{{userInfo.curComDepartment ? userInfo.curComDepartment.name : ''}}</text>
 					<image src="@/static/mine_ic_change@2x.png" alt="" />
 				</div>
 			</div>
@@ -22,20 +22,26 @@
 				</div>
 			</div>
 		</div>
-		<div class="box_out"><text>閫�鍑虹櫥褰�</text></div>
+		<div class="box_out" @click="loginOut"><text>閫�鍑虹櫥褰�</text></div>
 	</div>
 	<!-- 閮ㄩ棬閫夋嫨鍣� -->
-	<u-picker :show="show" :columns="columns" @confirm="confirm"></u-picker>
+	<u-picker :show="show" :columns="columns" @confirm="onConfirm" @cancel="show = false"></u-picker>
 	<myTabbar :index="2" />
 </view>
 </template>
 
 <script>
+	import { changeCom, getDepartmentListByConditon } from '@/util/api/PersonalAPI'
 	import myTabbar from "@/components/myTabber.vue"
+	import { wxLoginOut } from '@/util/api'
+	import { mapState } from 'vuex'
 	export default {
 		components: {
 			myTabbar
 		},
+		computed: mapState([
+			'userInfo'
+		]),
 		data() {
 			return {
 				MENU: [
@@ -47,22 +53,61 @@
 					{ name: '淇敼瀵嗙爜', url: '/pages/changePassword/changePassword', icon: require('@/static/mine_ic_xiugaimima@2x.png') },
 				],
 				img: require('@/static/mine_bg@2x.png'),
+				avatar: require('@/static/2@2x.png'),
 				show: false,
-				columns: [
-					['涓浗', '缇庡浗', '鏃ユ湰']
-				]
+				columns: []
 			}
 		},
 		onLoad() {
 			uni.hideTabBar()
 		},
 		methods: {
-			jump(url) {
-				uni.navigateTo({ url })
+			// 閫�鍑虹櫥褰�
+			loginOut() {
+				wxLoginOut({
+					companyUserId: this.userInfo.companyUser.id
+				}).then(res => {
+					if (res.code === 200) {
+						this.$store.commit('clearCache')
+						uni.reLaunch({
+							url: '/pages/login/login'
+						});
+					}
+				})
 			},
-			confirm(val) {
-				console.log(val)
-				this.show = false
+			// 纭鍒囨崲缁勭粐
+			onConfirm(e) {
+				changeCom(e.value[0].id).then(res => {
+					if (res.code === 200) {
+						this.show = false
+						uni.showToast({ title: '鏇存柊缁勭粐鎴愬姛', icon: 'success', duration: 2000 });
+						this.$store.dispatch('getUserInfos')
+					}
+				})
+			},
+			// 鑾峰彇缁勭粐
+			switchOrganization() {
+				getDepartmentListByConditon({
+					type: 0
+				}).then(res => {
+					if (res.code === 200) {
+						this.columns = []
+						let arr = []
+						res.data.forEach((item) => {
+							let obj = {
+								text: item.name, id: item.id
+							}
+							arr.push(obj)
+						})
+						this.columns.push(arr)
+						this.show = true
+					}
+				})
+			},
+			// 璺宠浆椤甸潰
+			jump(url) {
+				if (!url) return
+				uni.navigateTo({ url })
 			}
 		}
 	}
diff --git a/minipro_standard/pages/personal/personal.vue b/minipro_standard/pages/personal/personal.vue
index 22f5c25..3677e11 100644
--- a/minipro_standard/pages/personal/personal.vue
+++ b/minipro_standard/pages/personal/personal.vue
@@ -1,41 +1,45 @@
 <template>
 	<view class="info">
 		<view class="info_portrait">
-			<image src="@/static/2@2x.png" mode="widthFix" />
+			<image :src="userInfo.avatar ? userInfo.avatar : avatar" mode="widthFix" />
 			<text>鐢ㄦ埛鍚�</text>
 		</view>
 		<view class="info_list">
 			<view class="info_list_item">
 				<text>鏄电О</text>
-				<text>鏆傛棤鏄电О</text>
+				<text>{{userInfo.realname ? userInfo.realname : '鏆傛棤鏄电О'}}</text>
 			</view>
 			<view class="info_list_item">
 				<text>鎵嬫満鍙�</text>
-				<text>鏆傛棤鎵嬫満鍙�</text>
+				<text>{{userInfo.companyUser.phone ? userInfo.companyUser.phone : '鏆傛棤鎵嬫満鍙�'}}</text>
 			</view>
 			<view class="info_list_item">
 				<text>鎵�灞為儴闂�</text>
-				<text>鏆傛棤鎵�灞為儴闂�</text>
+				<text>{{userInfo.department.name ? userInfo.department.name : '鏆傛棤鎵�灞為儴闂�'}}</text>
 			</view>
 			<view class="info_list_item">
 				<text>宀椾綅</text>
-				<text>鏆傛棤宀椾綅</text>
+				<text>{{userInfo.companyUser.positionName ? userInfo.companyUser.positionName : '鏆傛棤宀椾綅'}}</text>
 			</view>
 			<view class="info_list_item">
 				<text>褰撳墠缁勭粐</text>
-				<text>鏆傛棤缁勭粐</text>
+				<text>{{userInfo.rootDepartment.name ? userInfo.rootDepartment.name : '鏆傛棤缁勭粐'}}</text>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
+	import { mapState } from 'vuex'
 	export default {
 		data() {
 			return {
-				
+				avatar: require('@/static/2@2x.png'),
 			};
-		}
+		},
+		computed: mapState([
+			'userInfo'
+		])
 	}
 </script>
 
diff --git a/minipro_standard/pages/planDetails/planDetails.vue b/minipro_standard/pages/planDetails/planDetails.vue
new file mode 100644
index 0000000..9d3f17f
--- /dev/null
+++ b/minipro_standard/pages/planDetails/planDetails.vue
@@ -0,0 +1,546 @@
+<template>
+	<view class="details">
+		<view class="content_list">
+			<view class="content_list_item">
+				<view class="content_list_item_top">
+					<view class="content_list_item_top_left">
+						<text v-if="info.mmodel">{{info.mmodel.name}}</text>
+						<view class="content_list_item_top_left_tag" v-if="info.urgent">浼樺厛{{info.urgent}}</view>
+						<view class="content_list_item_top_left_type" v-if="info.type === 0">姝e父</view>
+						<view class="content_list_item_top_left_type dangerous" v-else-if="info.type === 1">寮傚父</view>
+						<view class="content_list_item_top_left_type warning" v-else-if="info.type === 2">杩斿伐</view>
+					</view>
+					<view class="content_list_item_top_right">
+						<text v-if="info.status === 0">宸茬敓鎴�</text>
+						<text v-if="info.status === 1">宸插彂甯�</text>
+						<text v-if="info.status === 2">宸叉挙鍥�</text>
+						<text v-if="info.status === 3">宸插彇娑�</text>
+						<text v-if="info.status === 4">宸插垎閰�</text>
+						<text v-if="info.status === 5">宸叉殏鍋�</text>
+						<text v-if="info.status === 6">宸插畬宸�</text>
+						<text v-if="info.status === 7">宸插叆搴�</text>
+						<text v-if="info.status === 8">宸插叧闂�</text>
+<!--                        <text class="warning" v-if="info.status === 0">寰呭彂甯�</text>-->
+<!--                        <text class="green" v-else-if="info.status === 1 || info.status === 4">鐢熶骇涓�</text>-->
+<!--                        <text class="info" v-else-if="info.status === 6 || info.status === 7 || info.status === 3 || info.status === 8">宸插畬鎴�</text>-->
+					</view>
+				</view>
+				<view class="content_list_item_content">
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">宸ュ簭鍚嶇О锛�</view>
+						<view class="content_list_item_content_item_nr" v-if="info.pmodel">{{info.pmodel.name}}</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">璁″垝鏁伴噺锛�</view>
+						<view class="content_list_item_content_item_nr" v-if="info.umodel">{{info.num}}{{info.umodel.name}}</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">璁″垝鏃ユ湡锛�</view>
+						<view class="content_list_item_content_item_nr">{{info.planDate}}</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">鐢熶骇鎵规锛�</view>
+						<view class="content_list_item_content_item_nr">{{info.batch}}</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">鍙戝竷鏃ユ湡锛�</view>
+						<view class="content_list_item_content_item_nr">{{info.createTime}}</view>
+					</view>
+					<view class="content_list_item_content_item" v-if="info.usermodel">
+						<view class="content_list_item_content_item_label">璁″垝浜哄憳锛�</view>
+						<view class="content_list_item_content_item_nr">{{info.usermodel.realname}}</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">鍒嗛厤鏁伴噺锛�</view>
+						<view class="content_list_item_content_item_nr" v-if="info.umodel">{{info.distributNum}}{{info.umodel.name}}</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">瀹屽伐鏁伴噺锛�</view>
+						<view class="content_list_item_content_item_nr" v-if="info.umodel">{{info.doneNum}}{{info.umodel.name}}</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<NotFound info="鏆傛湭鍒嗛厤宸ュ崟" v-if="info.workorderList && info.workorderList.length === 0" />
+		<template v-else>
+			<!-- <view class="details_list">
+				<view class="details_list_item" v-for="(item, i) in info.workorderList" :key="i" @click="jump(item)">
+					<view class="details_list_item_top">
+						<text>{{ item.createUserName }}</text>
+						<text>{{ item.code }}</text>
+					</view>
+					<view class="details_list_item_center">
+						<text>鑹搧鏁帮細{{ item.qualifiedNum }}</text>
+						<text>涓嶈壇鏁帮細<text class="red">{{ item.unqualifiedNum }}</text></text>
+					</view>
+					<view class="details_list_item_bottom">
+						<text>{{ item.createTime }}</text>
+					</view>
+				</view>
+			</view> -->
+			<view class="details_timeline" v-for="(item, i) in info.workorderList" :key="i">
+				<view class="details_timeline_header">
+					<view class="details_timeline_header_code">
+						<text>宸ュ崟缂栧彿锛歿{item.code}}</text>
+						<text>鐢熶骇浜哄憳锛歿{proUserStr(item)}}</text>
+					</view>
+					<text v-if="item.status === 0" class="yellow">宸插垱寤�</text>
+					<text v-if="item.status === 1" class="green">宸插鏂�</text>
+					<text v-if="item.status === 2">宸插畬宸�</text>
+					<text v-if="item.status === 3" class="purple">宸叉楠�</text>
+					<text v-if="item.status === 4">宸叉姤宸�</text>
+					<text v-if="item.status === 5">宸插叆搴�</text>
+					<text v-if="item.status === 6">宸插彇娑�</text>
+					<!--                <text v-if="item.status === 7">宸插彇娑�</text>-->
+					<!--                <text v-if="item.status === 8">宸插叧闂�</text>-->
+				</view>
+				<view class="details_timeline_item" v-if="item.produceDate">
+					<view class="activedian"></view>
+					<view class="dian active"></view>
+					<view class="x"></view>
+					<view class="details_timeline_item_zw"></view>
+					<view class="details_timeline_item_left">
+						<text class="active_font">浜у嚭</text>
+						<text>{{item.produceDate}}</text>
+					</view>
+					<view class="details_timeline_item_right">
+						<view class="item">
+							<view class="item_label">鐗╂枡锛�</view>
+							<view class="item_nr">
+								<view class="item_nr_item" v-if="item.qualifiedNum !== 0">
+									<text class="success">[鍚堟牸鍝乚</text>
+									<text>{{item.qualifiedNum}}{{info.umodel.name}}</text>
+								</view>
+								<view class="item_nr_item" v-if="item.unqualifiedNum !== 0">
+									<text class="warning">[涓嶈壇鍝乚</text>
+									<text>{{item.unqualifiedNum}}{{info.umodel.name}}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="details_timeline_item" v-if="item.materialDate">
+					<view class="activedian" v-if="!item.produceDate"></view>
+					<view class="dian" :class="{ 'active': !item.produceDate }"></view>
+					<view class="x" :style="{ height: item.materialList.length === 1 ? '2.1rem' :  1.2 * item.materialList.length + 'rem' }"></view>
+					<view class="details_timeline_item_zw"></view>
+					<view class="details_timeline_item_left">
+						<text :class="{'active_font': !item.produceDate}">鎶曟枡</text>
+						<text>{{item.materialDate}}</text>
+					</view>
+					<view class="details_timeline_item_right">
+						<view class="item">
+							<view class="item_label">鐗╂枡锛�</view>
+							<view class="item_nr" v-if="item.materialList && item.materialList.length !== 0">
+								<view class="item_nr_item" v-for="(items, idx) in item.materialList" :key="idx">
+									<text style="margin: 0;">{{items.name}}&nbsp;/&nbsp;{{items.num}}{{items.unitName}}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="details_timeline_item">
+					<view class="activedian" v-if="!item.materialDate && !item.produceDate"></view>
+					<view class="dian" :class="{ 'active': !item.materialDate && !item.produceDate }"></view>
+					<view class="details_timeline_item_zw"></view>
+					<view class="details_timeline_item_left">
+						<text :class="{'active_font': !item.materialDate && !item.produceDate}">鍒嗛厤</text>
+						<text>{{ item.distributeDate }}</text>
+					</view>
+					<view class="details_timeline_item_right">
+						<view class="item">
+							<view class="item_label">鍒嗛厤鏁伴噺锛�</view>
+							<view class="item_nr">{{item.planNum}}{{info.umodel.name}}</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</template>
+		<!-- <view class="details_zw"></view> -->
+		<!-- <view class="details_btn" @click="toJump">鍘绘姤宸�</view> -->
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				info: {}
+			};
+		},
+		methods: {
+			// 鑾峰彇璇︽儏
+			queryByIDs() {
+				queryByID(this.$route.query.id)
+					.then(res => {
+						if (res.code === 200) {
+							this.info = res.data
+						}
+					})
+			},
+			proUserStr(item) {
+				if (!item.proUserList || item.proUserList.length<1) {
+					return '-'
+				}
+				return item.proUserList.map(user => { return user.proUserDepartName }).join('锛�')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.details {
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    background: #F7F7F7;
+    .details_zw {
+        width: 100%;
+        height: 148rpx;
+    }
+    .details_btn {
+        position: fixed;
+        bottom: 60rpx;
+        left: 30rpx;
+        width: calc(100% - 60rpx);
+        height: 88rpx;
+        line-height: 88rpx;
+        text-align: center;
+        background: #305ED5;
+        box-shadow: 0rpx 0rpx 12rpx 0rpx rgba(0,0,0,0.08);
+        border-radius: 8rpx;
+        font-size: 30rpx;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #FFFFFF;
+    }
+    .van-skeleton {
+        padding: 0 !important;
+    }
+    .content_list {
+        width: 100%;
+        padding: 30rpx;
+        background: #ffffff;
+        display: flex;
+        flex-direction: column;
+        box-sizing: border-box;
+        .content_list_item {
+            display: flex;
+            flex-direction: column;
+            .content_list_item_top {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                .content_list_item_top_left {
+                    display: flex;
+                    align-items: center;
+                    max-width: 83%;
+                    text {
+                        max-width: 400rpx;
+                        font-size: 32rpx;
+                        font-weight: 500;
+                        color: #333333;
+                        overflow: hidden;
+                        white-space: nowrap;
+                        text-overflow: ellipsis;
+                    }
+                    .dangerous {
+                        background: $nav-stateColor4 !important;
+                    }
+                    .warning {
+                        background: $nav-stateColor5 !important;
+                    }
+                    .content_list_item_top_left_type {
+                        flex-shrink: 0;
+                        padding: 5rpx 10rpx;
+                        background: $nav-stateColor2;
+                        border-radius: 8rpx;
+                        font-size: 22rpx;
+                        font-weight: 400;
+                        color: #FFFFFF;
+                        margin-left: 16rpx;
+                        display: flex;
+                        align-items: center;
+                        justify-content: center;
+                    }
+                    .content_list_item_top_left_tag {
+                        flex-shrink: 0;
+                        padding: 5rpx 10rpx;
+                        background: $nav-stateColor4;
+                        border-radius: 8rpx;
+                        font-size: 22rpx;
+                        font-weight: 400;
+                        color: #FFFFFF;
+                        margin-left: 16rpx;
+                        display: flex;
+                        align-items: center;
+                        justify-content: center;
+                    }
+                }
+                .content_list_item_top_right {
+                    font-size: 26rpx;
+                    font-weight: 400;
+                    flex-shrink: 0;
+                    .warning {
+                        color: $nav-stateColor5 !important;
+                    }
+                    .green {
+                        color: $nav-stateColor6 !important;
+                    }
+                    .info {
+                        color: $nav-stateColor3 !important;
+                    }
+                }
+            }
+            .content_list_item_content {
+                padding: 24rpx 30rpx;
+                background: #F7F7F7;
+                border-radius: 16rpx;
+                display: flex;
+                flex-wrap: wrap;
+                justify-content: space-between;
+                margin-top: 32rpx;
+                .content_list_item_content_item {
+                    width: 50%;
+                    display: flex;
+                    margin-top: 24rpx;
+                    &:nth-child(1) {
+                        margin-top: 0 !important;
+                    }
+                    &:nth-child(2) {
+                        margin-top: 0 !important;
+                    }
+                    .content_list_item_content_item_label {
+                        font-size: 24rpx;
+                        font-weight: 400;
+                        color: #666666;
+                        flex-shrink: 0;
+                    }
+                    .content_list_item_content_item_nr {
+                        font-size: 24rpx;
+                        font-weight: 400;
+                        color: #222222;
+                        margin-right: 10rpx;
+                    }
+                }
+            }
+        }
+    }
+    .details_list {
+        width: 100%;
+        height: auto;
+        background-color: #FFFFFF;
+        margin-top: 20rpx;
+        .details_list_item {
+            width: 100%;
+            padding: 24rpx 30rpx;
+            box-sizing: border-box;
+            background-color: #FFFFFF;
+            border-bottom: 2rpx solid #F7F7F7;
+            &:last-child {
+                border: none !important;
+            }
+            .details_list_item_top {
+                width: 100%;
+                display: flex;
+                align-items: center;
+                text {
+                    &:first-child {
+                        font-size: 30rpx;
+                        font-family: PingFangSC-Medium, PingFang SC;
+                        font-weight: 500;
+                        color: #222222;
+                        margin-right: 16rpx;
+                    }
+                    &:last-child {
+                        font-size: 24rpx;
+                        font-family: PingFangSC-Regular, PingFang SC;
+                        font-weight: 400;
+                        color: #666666;
+                    }
+                }
+            }
+            .details_list_item_center {
+                width: 100%;
+                margin: 16rpx 0 20rpx 0;
+                .red {
+                    color: #DE5243;
+                }
+                text {
+                    &:first-child {
+                        font-size: 26rpx;
+                        font-family: PingFangSC-Regular, PingFang SC;
+                        font-weight: 400;
+                        color: #333333;
+                        margin-right: 100rpx;
+                    }
+                    &:last-child {
+                        font-size: 26rpx;
+                        font-family: PingFangSC-Regular, PingFang SC;
+                        font-weight: 400;
+                        color: #333333;
+                    }
+                }
+            }
+            .details_list_item_bottom {
+                text {
+                    font-size: 24rpx;
+                    font-family: PingFangSC-Regular, PingFang SC;
+                    font-weight: 400;
+                    color: #999999;
+                }
+            }
+        }
+    }
+    .details_timeline {
+        padding: 30rpx;
+        background: #ffffff;
+        margin-top: 20rpx;
+        .details_timeline_header {
+            display: flex;
+            align-items: flex-start;
+            justify-content: space-between;
+            .yellow {
+                color: $nav-stateColor1 !important;
+            }
+            .green {
+                color: $nav-stateColor6 !important;
+            }
+            .purple {
+                color: $nav-color !important;
+            }
+            text {
+                font-size: 26rpx;
+                font-weight: 400;
+                color: #666666;
+            }
+            .details_timeline_header_code {
+                display: flex;
+                flex-direction: column;
+                text {
+                    &:first-child {
+                        font-size: 28rpx;
+                        font-weight: 500;
+                        color: #222222;
+                    }
+                    &:last-child {
+                        font-size: 22rpx;
+                        font-weight: 400;
+                        color: #777777;
+                        margin-top: 24rpx;
+                    }
+                }
+            }
+        }
+        .details_timeline_item {
+            display: flex;
+            align-items: flex-start;
+            position: relative;
+            margin-top: 60rpx;
+            &:nth-child(1) {
+                margin-top: 0 !important;
+            }
+            .x {
+                position: absolute;
+                top: 30rpx;
+                left: 29rpx;
+                width: 1rpx;
+                height: 165rpx;
+                border-right: 1rpx dashed #CCCCCC;
+            }
+            .dian {
+                position: absolute;
+                top: 22rpx;
+                left: 22rpx;
+                width: 16rpx;
+                height: 16rpx;
+                background: #CCCCCC;
+                border-radius: 50%;
+            }
+            .active {
+                width: 16rpx;
+                height: 16rpx;
+                background: $nav-color;
+                z-index: 8;
+            }
+            .activedian {
+                position: absolute;
+                top: 14rpx;
+                left: 14rpx;
+                width: 32rpx;
+                height: 32rpx;
+                background: #E4EBFE;
+                border-radius: 50%;
+            }
+            .details_timeline_item_zw {
+                width: 100rpx;
+            }
+            .details_timeline_item_left {
+                display: flex;
+                flex-direction: column;
+                width: 150rpx;
+                .active_font {
+                    color: $nav-color !important;
+                }
+                text {
+                    &:nth-child(1) {
+                        font-size: 30rpx;
+                        font-weight: 500;
+                        color: #333333;
+                    }
+                    &:nth-child(2) {
+                        font-size: 22rpx;
+                        font-weight: 400;
+                        color: #999999;
+                        margin-top: 16rpx;
+                    }
+                }
+            }
+            .details_timeline_item_right {
+                display: flex;
+                flex-direction: column;
+                flex: 1;
+                margin-left: 30rpx;
+                .item {
+                    display: flex;
+                    align-items: flex-start;
+                    margin-top: 24rpx;
+                    &:nth-child(1) {
+                        margin-top: 0 !important;
+                    }
+                    .item_label {
+                        font-size: 26rpx;
+                        font-weight: 400;
+                        color: #666666;
+                        flex-shrink: 0;
+                    }
+                    .item_nr {
+                        font-size: 26rpx;
+                        font-weight: 400;
+                        color: #333333;
+                        .item_nr_item {
+                            display: flex;
+                            align-items: center;
+                            margin-bottom: 24rpx;
+                            .success {
+                                color: $nav-stateColor2;
+                            }
+                            .warning {
+                                color: $nav-stateColor5;
+                            }
+                            text {
+                                font-size: 26rpx;
+                                font-weight: 400;
+                                &:last-child {
+                                    color: #333333;
+                                    margin-left: 12rpx;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+</style>
diff --git a/minipro_standard/pages/plannedDistribution/plannedDistribution.vue b/minipro_standard/pages/plannedDistribution/plannedDistribution.vue
new file mode 100644
index 0000000..de67bb9
--- /dev/null
+++ b/minipro_standard/pages/plannedDistribution/plannedDistribution.vue
@@ -0,0 +1,609 @@
+<template>
+	<view class="content">
+		<view class="content_search">
+			<Search @searchInput="searchInput" @submit="submit" @reset="reset" placeholder="鎼滅储鐗╂枡鍚嶇О/缂栫爜"></Search>
+			<view class="content_search_x"></view>
+			<LabelSelection :TagList="tagList" :isShow="true" @change="clickTag" />
+		</view>
+		<view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+		<view class="content_list">
+			<scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+				<view class="fp_list_item" v-for="(item, i) in lists" :key="item.id" @click="clickItem(i)">
+					<view class="fp_list_item_header">
+						<u-checkbox :checked="item.isActive"></u-checkbox>
+						<text v-if="item.mmodel">{{item.mmodel.name}}</text>
+						<view class="tags" v-if="item.urgent">浼樺厛{{item.urgent}}</view>
+						<view class="warning" v-if="item.type === 2">杩斿伐</view>
+						<view class="warning success" v-else-if="item.type === 0">姝e父</view>
+						<view class="warning fail" v-else-if="item.type === 1">寮傚父</view>
+					</view>
+					<view class="fp_list_item_nr">
+						<view class="item" v-if="item.pmodel">
+							<view class="item_label">宸ュ簭鍚嶇О锛�</view>
+							<view class="item_nr">{{item.pmodel.name}}</view>
+						</view>
+						<view class="item">
+							<view class="item_label">璁″垝鏃ユ湡锛�</view>
+							<view class="item_nr">{{item.planDate}}</view>
+						</view>
+						<view class="item">
+							<view class="item_label">璁″垝鏁伴噺锛�</view>
+							<view class="item_nr">{{item.num}}</view>
+						</view>
+						<view class="item">
+							<view class="item_label">鐢熶骇鎵规锛�</view>
+							<view class="item_nr">{{item.batch}}</view>
+						</view>
+						<view class="item">
+							<view class="item_label">搴撳瓨锛�</view>
+							<view class="item_nr">{{item.isStock === 0 ? '涓嶆弧瓒�' : '婊¤冻'}}</view>
+						</view>
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+		<view class="fp_zw"></view>
+		<view class="fp_footer">
+			<view class="fp_footer_button" @click="submit">鍒嗛厤(1)</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import Search from '@/components/Search.vue'
+	import LabelSelection from '@/components/LabelSelection.vue'
+	export default {
+		components: { Search, LabelSelection },
+		data() {
+			return {
+				height: '',
+				top: '',
+				listData: {
+					capacity: 10,
+					page: 0,
+					total: 0,
+					startDate: '',
+					endDate: '',
+					procedureIds: [],
+					departIds: '',
+					mixParam: '',
+					cateIds: []
+				},
+				tagList: [
+					{
+						id: '',
+						name: '娉ㄥ皠',
+						num: '0'
+					},
+					{
+						id: '0',
+						name: '鐑х粨',
+						num: '0'
+					},
+					{
+						id: '1,4',
+						name: '鐒婃帴',
+						num: '0'
+					}
+				],
+				data: [],	// 宸ュ簭鏁版嵁
+				factoryList: [],
+				finished: true,
+				loading: false,
+				refreshing: false,
+				timeShow: false,
+				lists: [
+					{
+						id: 1,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						isActive: false,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 2,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						isActive: false,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 3,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						isActive: false,
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 4,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						isActive: false,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 5,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						isActive: false,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					}
+				]
+			};
+		},
+		onReady() {
+			var that = this
+			this.$nextTick(() => {
+				uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+					that.height = `calc(100vh - ${rect.height + 80}px)`
+					that.top = `${rect.height}px`
+				}).exec()
+			})
+		},
+		methods: {
+			// 鐐瑰嚮褰撳墠椤�
+			clickItem(i) {
+				this.lists.forEach((item, index) => {
+					item.isActive = i === index;
+				})
+			},
+			// 璺宠浆
+			jump(item) {
+				uni.navigateTo({
+					url: `/pages/planDetails/planDetails?id=${item.id}`
+				})
+			},
+			// 鑾峰彇澶撮儴缁勪欢楂樺害
+			getHeight(height) {
+				this.height = height
+			},
+			// 閲嶇疆
+			reset() {
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.listData.mixParam = ''
+				this.listData.startDate = ''
+				this.listData.endDate = ''
+				this.listData.procedureIds = []
+				if (this.factoryList.length > 0) {
+					this.listData.departIds = this.factoryList[0].id
+				}
+				if (this.data.length > 0) {
+					this.data.forEach(item => { item.isActive = false })
+				}
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鏃ユ湡纭畾
+			timeConfirm(val) {
+				this.listData.startDate = val[0]
+				this.listData.endDate = val[val.length - 1]
+				this.timeShow = false
+			},
+			// 鍒囨崲宸ュ巶
+			changeTags(i, id) {
+				this.listData.departIds = id
+				this.getWorkingProcedures(id)
+				this.factoryList.forEach((item, index) => {
+					if (index === i) {
+						item.isActive = true
+					} else {
+						item.isActive = false
+					}
+				})
+			},
+			// 鎵撳紑鏃ユ湡鎻掍欢
+			openDate() {
+				this.timeShow = true
+			},
+			// 鎼滅储
+			searchInput(val) {
+				this.listData.mixParam = val
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.getLists()
+			},
+			// 鐐瑰嚮鏍囩鎼滅储
+			clickTag(ids) {
+				this.listData.cateIds = ids
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+			},
+			// 鑾峰彇鍒楄〃缁熻
+			pageCounts() {
+				pageCount({
+					factoryId: this.listData.departIds,
+					procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+					startDate: this.listData.startDate,
+					endDate: this.listData.endDate,
+					statusList: this.listData.cateIds
+				}).then(res => {
+					if (res.code === 200 && res.data) {
+						this.tagList[0].num = res.data.allNum.toString()
+						this.tagList[1].num = res.data.startNum.toString()
+						this.tagList[2].num = res.data.ingNum.toString()
+						this.tagList[3].num = res.data.endNum.toString()
+					}
+				})
+			},
+			// 鑾峰彇宸ュ巶鏁版嵁
+			getOrganizations() {
+				getOrganization({
+					type: 1
+				}).then(res => {
+					if (res.code === 200 && res.data && res.data.length !== 0) {
+						res.data.forEach((item, i) => {
+							item.isActive = i === 0;
+						})
+						if (res.data.length > 0) {
+							this.factoryList = res.data
+							this.listData.departIds = this.factoryList[0].id
+							this.listData.procedureIds = ''
+							this.finished = false
+							this.getWorkingProcedures(this.factoryList[0].id)
+							this.getLists()
+							this.pageCounts()
+						}
+					}
+				})
+			},
+			// 鑾峰彇宸ュ簭鏁版嵁
+			getWorkingProcedures(orgId) {
+				this.data = []
+				getWorkingProcedure({ orgId })
+					.then(res => {
+						if (res.code === 200 && res.data && res.data.length !== 0) {
+							res.data.forEach((item, i) => {
+								item.isActive = false;
+							})
+							this.data = res.data
+						}
+					})
+			},
+			submit() {
+				let data;
+				this.lists.forEach(item => {
+					if (item.isActive) {
+						data = item
+					}
+				})
+				if (!data) {
+					uni.showToast({ title: '鑷冲皯閫夋嫨涓�椤硅鍒掞紒', duration: 2000 });
+					return
+				}
+				uni.navigateTo({
+					url: `/pages/allocation/allocation?gxid=${data.procedureId}&jhid=${data.id}&num=${data.workorderDistributNum ? data.num - data.workorderDistributNum : data.num}`
+				})
+			},
+			// 鑾峰彇璁″垝鍒楄〃鏁版嵁
+			getLists() {
+				console.log('getLists')
+				if (!this.finished) {
+					this.loading = true
+					this.listData.page = this.listData.page++
+					getList({
+						capacity: this.listData.capacity,
+						model: {
+							mixParam: this.listData.mixParam,
+							startDate: this.listData.startDate,
+							endDate: this.listData.endDate,
+							procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+							factoryId: this.listData.departIds,
+							statusList: this.listData.cateIds
+						},
+						page: this.listData.page,
+						sorts: [
+							{
+								direction: 'ASC',
+								property: 'publishDate'
+							}
+						]
+					}).then(res => {
+						this.loading = false
+						this.listData.total = res.data.total
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+						if (res.code === 200 && res.data.records.length !== 0) {
+							if (this.lists.length === 0) {
+								this.lists = res.data.records
+							} else {
+								this.lists.push(...res.data.records)
+							}
+						} else {
+							this.finished = true
+						}
+					}).catch(err => {
+						this.loading = false
+						this.finished = true
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		.content_search {
+			width: 100%;
+			padding: 30rpx;
+			background: white;
+			position: sticky;
+			top: 0;
+			z-index: 999;
+			box-sizing: border-box;
+			.Search_item {
+				margin-bottom: 40rpx;
+				.Search_item_label {
+					font-size: 30rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+				.Search_item_content {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					margin-top: 30rpx;
+					.tag {
+						display: flex;
+						flex-wrap: wrap;
+						align-items: center;
+						.tag_active {
+							background: $nav-color !important;
+							color: #ffffff !important;
+						}
+						.tag_item {
+							padding: 22rpx 26rpx;
+							box-sizing: border-box;
+							background: #F2F2F2;
+							border-radius: 8rpx;
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #333333;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							margin-right: 22rpx;
+							margin-bottom: 22rpx;
+						}
+					}
+					text {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						margin: 0 30rpx;
+					}
+					.Search_item_content_a {
+						padding: 20rpx 0;
+						flex: 1;
+						background: #F7F7F7;
+						border-radius: 8rpx;
+						border: 1rpx solid #EEEEEE;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #B2B2B2;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+					}
+				}
+			}
+			.content_search_x {
+				height: 24rpx;
+			}
+		}
+		.content_list {
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+			.fp_list_item {
+				background: white;
+				display: flex;
+				flex-direction: column;
+				padding: 30rpx;
+				border-bottom: 1rpx solid #ececec;
+				.fp_list_item_header {
+					display: flex;
+					align-items: center;
+					text {
+						max-width: 64%;
+						overflow: hidden;
+						white-space: nowrap;
+						text-overflow: ellipsis;
+						-o-text-overflow: ellipsis;
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #333333;
+						margin-left: 14rpx;
+					}
+					.tags {
+						flex-shrink: 0;
+						margin-left: 16rpx;
+						padding: 5rpx 10rpx;
+						background: $nav-stateColor4;
+						border-radius: 8rpx;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						font-size: 22rpx;
+						font-weight: 400;
+						color: #FFFFFF;
+					}
+					.fail {
+						background: $nav-stateColor4 !important;
+					}
+					.success {
+						background: $nav-stateColor2 !important;
+					}
+					.warning {
+						flex-shrink: 0;
+						margin-left: 16rpx;
+						padding: 5rpx 10rpx;
+						background: $nav-stateColor5;
+						border-radius: 8rpx;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						font-size: 22rpx;
+						font-weight: 400;
+						color: #FFFFFF;
+					}
+				}
+				.fp_list_item_nr {
+					padding: 24rpx 30rpx;
+					background: #F7F7F7;
+					border-radius: 16rpx;
+					margin-top: 32rpx;
+					display: flex;
+					align-items: flex-start;
+					flex-wrap: wrap;
+					.item {
+						display: flex;
+						align-items: flex-start;
+						width: 50%;
+						margin-top: 24rpx;
+						&:nth-child(1) {
+							margin-top: 0!important;
+						}
+						&:nth-child(2) {
+							margin-top: 0!important;
+						}
+						.item_label {
+							width: 130rpx;
+							flex-shrink: 0;
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							text-align: right;
+						}
+						.item_nr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+						}
+					}
+				}
+			}
+		}
+		.content_total {
+			width: 100%;
+			height: 80rpx;
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			box-sizing: border-box;
+			color: #666666;
+			position: sticky;
+			z-index: 99;
+		}
+		.fp_zw {
+			height: 150px;
+		}
+		.fp_footer {
+			width: 100%;
+			padding-bottom: env(safe-area-inset-bottom);
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			background: #ffffff;
+			.fp_footer_button {
+				width: 272rpx;
+				height: 98rpx;
+				background: $nav-color;
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				float: right;
+			}
+		}
+	}
+</style>
diff --git a/minipro_standard/pages/plannedProgress/plannedProgress.vue b/minipro_standard/pages/plannedProgress/plannedProgress.vue
new file mode 100644
index 0000000..a36f4a1
--- /dev/null
+++ b/minipro_standard/pages/plannedProgress/plannedProgress.vue
@@ -0,0 +1,632 @@
+<template>
+	<view class="content">
+		<view class="content_search">
+			<Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true" placeholder="鎼滅储鐗╂枡鍚嶇О/缂栫爜/宸ュ簭鍚嶇О">
+				<template v-slot:content>
+					<view class="Search_item">
+						<view class="Search_item_label">璁″垝鏃ユ湡</view>
+						<view class="Search_item_content" @click="openDate">
+							<view class="Search_item_content_a" :style="listData.startDate ? 'color: #000' : ''">{{ listData.startDate ? listData.startDate : '寮�濮嬫棩鏈�'}}</view>
+							<text>-</text>
+							<view class="Search_item_content_a" :style="listData.endDate ? 'color: #000' : ''">{{ listData.endDate ? listData.endDate : '缁撴潫鏃ユ湡'}}</view>
+						</view>
+					</view>
+					<view class="Search_item">
+						<view class="Search_item_label">鐢熶骇宸ュ巶</view>
+						<view class="Search_item_content">
+							<view class="tag">
+								<view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in factoryList" :key="item.id" @click="changeTags(i, item.id)">{{item.name}}</view>
+							</view>
+						</view>
+					</view>
+					<view class="Search_item">
+						<view class="Search_item_label">宸ュ簭</view>
+						<view class="Search_item_content">
+							<view class="tag">
+								<view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in data" :key="item.id" @click="changeTag(i)">{{item.name}}</view>
+							</view>
+						</view>
+					</view>
+				</template>
+			</Search>
+			<view class="content_search_x"></view>
+			<LabelSelection :TagList="tagList" :isShow="true" @change="clickTag" />
+		</view>
+		<view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+		<view class="content_list">
+			<scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+				<view class="content_list_item" v-for="item in lists" :key="item.id" @click="jump(item)">
+					<view class="content_list_item_top">
+						<view class="content_list_item_top_left">
+							<text v-if="item.mmodel">{{item.mmodel.name}}</text>
+							<view class="content_list_item_top_left_tag" v-if="item.urgent">浼樺厛{{item.urgent}}</view>
+							<view class="content_list_item_top_left_tag warning" v-if="item.paused === 1">鍋�</view>
+						</view>
+						<view class="content_list_item_top_right">
+							<text v-if="item.status === 0">宸茬敓鎴�</text>
+							<text v-if="item.status === 1">宸插彂甯�</text>
+							<text v-if="item.status === 2">宸叉挙鍥�</text>
+							<text v-if="item.status === 3">宸插彇娑�</text>
+							<text v-if="item.status === 4">宸插垎閰�</text>
+							<text v-if="item.status === 5">宸叉殏鍋�</text>
+							<text v-if="item.status === 6">宸插畬宸�</text>
+							<text v-if="item.status === 7">宸插叆搴�</text>
+							<text v-if="item.status === 8">宸插叧闂�</text>
+<!--                            <text class="warning" v-if="item.status === 0">寰呭彂甯�</text>-->
+<!--                            <text class="green" v-else-if="item.status === 1 || item.status === 4">鐢熶骇涓�</text>-->
+<!--                            <text class="info" v-else-if="item.status === 6 || item.status === 7 || item.status === 3 || item.status === 8">宸插畬鎴�</text>-->
+						</view>
+					</view>
+					<view class="content_list_item_content">
+						<view class="content_list_item_content_item" v-if="item.pmodel">
+							<view class="content_list_item_content_item_label">宸ュ簭鍚嶇О锛�</view>
+							<view class="content_list_item_content_item_nr">{{item.pmodel.name}}</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">璁″垝鏃ユ湡锛�</view>
+							<view class="content_list_item_content_item_nr">{{item.planDate}}</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鐗╂枡缂栫爜锛�</view>
+							<view class="content_list_item_content_item_nr" v-if="item.mmodel">{{item.mmodel.code}}</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">璁″垝鏁伴噺锛�</view>
+							<view class="content_list_item_content_item_nr" v-if="item.umodel">{{item.num}}{{item.umodel.name}}</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鐢熶骇鎵规锛�</view>
+							<view class="content_list_item_content_item_nr">{{item.batch}}</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鍙戝竷鏃ユ湡锛�</view>
+							<view class="content_list_item_content_item_nr">{{item.publishDate ? item.publishDate : '-'}}</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">璁″垝浜哄憳锛�</view>
+							<view class="content_list_item_content_item_nr">{{item.usermodel.realname}}</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鐢熶骇宸ュ巶锛�</view>
+							<view class="content_list_item_content_item_nr">{{item.fmodel.name}}</view>
+						</view>
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+		<!-- 閫夋嫨鏃ユ湡 -->
+		<u-calendar :show="timeShow" mode="range" @confirm="timeConfirm"></u-calendar>
+	</view>
+</template>
+
+<script>
+	import Search from '@/components/Search.vue'
+	import LabelSelection from '@/components/LabelSelection.vue'
+	export default {
+		components: { Search, LabelSelection },
+		data() {
+			return {
+				height: '',
+				top: '',
+				listData: {
+					capacity: 10,
+					page: 0,
+					total: 0,
+					startDate: '',
+					endDate: '',
+					procedureIds: [],
+					departIds: '',
+					mixParam: '',
+					cateIds: []
+				},
+				tagList: [
+					{
+						id: '',
+						name: '鍏ㄩ儴',
+						num: '0'
+					},
+					{
+						id: '0',
+						name: '寰呭彂甯�',
+						num: '0'
+					},
+					{
+						id: '1,4',
+						name: '鐢熶骇涓�',
+						num: '0'
+					},
+					{
+						id: '6, 7, 3, 8',
+						name: '宸插畬鎴�',
+						num: '0'
+					}
+				],
+				data: [],	// 宸ュ簭鏁版嵁
+				factoryList: [],
+				finished: true,
+				loading: false,
+				refreshing: false,
+				timeShow: false,
+				lists: [
+					{
+						id: 1,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 2,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 3,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 4,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 5,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					}
+				]
+			};
+		},
+		onReady() {
+			var that = this
+			this.$nextTick(() => {
+				uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+					that.height = `calc(100vh - ${rect.height + 80}px)`
+					that.top = `${rect.height}px`
+				}).exec()
+			})
+		},
+		methods: {
+			// 璺宠浆
+			jump(item) {
+				uni.navigateTo({
+					url: `/pages/planDetails/planDetails?id=${item.id}`
+				})
+			},
+			// 鑾峰彇澶撮儴缁勪欢楂樺害
+			getHeight(height) {
+				this.height = height
+			},
+			// 閲嶇疆
+			reset() {
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.listData.mixParam = ''
+				this.listData.startDate = ''
+				this.listData.endDate = ''
+				this.listData.procedureIds = []
+				if (this.factoryList.length > 0) {
+					this.listData.departIds = this.factoryList[0].id
+				}
+				if (this.data.length > 0) {
+					this.data.forEach(item => { item.isActive = false })
+				}
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鏃ユ湡纭畾
+			timeConfirm(val) {
+				this.listData.startDate = val[0]
+				this.listData.endDate = val[val.length - 1]
+				this.timeShow = false
+			},
+			// 鍒囨崲宸ュ巶
+			changeTags(i, id) {
+				this.listData.departIds = id
+				this.getWorkingProcedures(id)
+				this.factoryList.forEach((item, index) => {
+					if (index === i) {
+						item.isActive = true
+					} else {
+						item.isActive = false
+					}
+				})
+			},
+			// 鎵撳紑鏃ユ湡鎻掍欢
+			openDate() {
+				this.timeShow = true
+			},
+			// 鎼滅储
+			searchInput(val) {
+				this.listData.mixParam = val
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.getLists()
+			},
+			// 鐐瑰嚮鏍囩鎼滅储
+			clickTag(ids) {
+				this.listData.cateIds = ids
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+			},
+			// 鑾峰彇鍒楄〃缁熻
+			pageCounts() {
+				pageCount({
+					factoryId: this.listData.departIds,
+					procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+					startDate: this.listData.startDate,
+					endDate: this.listData.endDate,
+					statusList: this.listData.cateIds
+				}).then(res => {
+					if (res.code === 200 && res.data) {
+						this.tagList[0].num = res.data.allNum.toString()
+						this.tagList[1].num = res.data.startNum.toString()
+						this.tagList[2].num = res.data.ingNum.toString()
+						this.tagList[3].num = res.data.endNum.toString()
+					}
+				})
+			},
+			// 鑾峰彇宸ュ巶鏁版嵁
+			getOrganizations() {
+				getOrganization({
+					type: 1
+				}).then(res => {
+					if (res.code === 200 && res.data && res.data.length !== 0) {
+						res.data.forEach((item, i) => {
+							item.isActive = i === 0;
+						})
+						if (res.data.length > 0) {
+							this.factoryList = res.data
+							this.listData.departIds = this.factoryList[0].id
+							this.listData.procedureIds = ''
+							this.finished = false
+							this.getWorkingProcedures(this.factoryList[0].id)
+							this.getLists()
+							this.pageCounts()
+						}
+					}
+				})
+			},
+			// 鑾峰彇宸ュ簭鏁版嵁
+			getWorkingProcedures(orgId) {
+				this.data = []
+				getWorkingProcedure({ orgId })
+					.then(res => {
+						if (res.code === 200 && res.data && res.data.length !== 0) {
+							res.data.forEach((item, i) => {
+								item.isActive = false;
+							})
+							this.data = res.data
+						}
+					})
+			},
+			// 鎼滅储寮规鎻愪氦
+			submit()  {
+				let pmodelOrgId = []
+				this.data.forEach((item) => {
+					if (item.isActive) {
+						pmodelOrgId.push(item.id)
+					}
+				})
+				this.listData.procedureIds = pmodelOrgId
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鑾峰彇璁″垝鍒楄〃鏁版嵁
+			getLists() {
+				console.log('getLists')
+				if (!this.finished) {
+					this.loading = true
+					this.listData.page = this.listData.page++
+					getList({
+						capacity: this.listData.capacity,
+						model: {
+							mixParam: this.listData.mixParam,
+							startDate: this.listData.startDate,
+							endDate: this.listData.endDate,
+							procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+							factoryId: this.listData.departIds,
+							statusList: this.listData.cateIds
+						},
+						page: this.listData.page,
+						sorts: [
+							{
+								direction: 'ASC',
+								property: 'publishDate'
+							}
+						]
+					}).then(res => {
+						this.loading = false
+						this.listData.total = res.data.total
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+						if (res.code === 200 && res.data.records.length !== 0) {
+							if (this.lists.length === 0) {
+								this.lists = res.data.records
+							} else {
+								this.lists.push(...res.data.records)
+							}
+						} else {
+							this.finished = true
+						}
+					}).catch(err => {
+						this.loading = false
+						this.finished = true
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		.content_search {
+			width: 100%;
+			padding: 30rpx;
+			background: white;
+			position: sticky;
+			top: 0;
+			z-index: 999;
+			box-sizing: border-box;
+			.Search_item {
+				margin-bottom: 40rpx;
+				.Search_item_label {
+					font-size: 30rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+				.Search_item_content {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					margin-top: 30rpx;
+					.tag {
+						display: flex;
+						flex-wrap: wrap;
+						align-items: center;
+						.tag_active {
+							background: $nav-color !important;
+							color: #ffffff !important;
+						}
+						.tag_item {
+							padding: 22rpx 26rpx;
+							box-sizing: border-box;
+							background: #F2F2F2;
+							border-radius: 8rpx;
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #333333;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							margin-right: 22rpx;
+							margin-bottom: 22rpx;
+						}
+					}
+					text {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						margin: 0 30rpx;
+					}
+					.Search_item_content_a {
+						padding: 20rpx 0;
+						flex: 1;
+						background: #F7F7F7;
+						border-radius: 8rpx;
+						border: 1rpx solid #EEEEEE;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #B2B2B2;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+					}
+				}
+			}
+			.content_search_x {
+				height: 24rpx;
+			}
+		}
+		.content_list {
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+			.content_list_item {
+				width: 100%;
+				background: white;
+				padding: 30rpx;
+				box-sizing: border-box;
+				display: flex;
+				flex-direction: column;
+				border-bottom: 1rpx solid #ececec;
+				.content_list_item_top {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					.content_list_item_top_left {
+						display: flex;
+						align-items: center;
+						width: 80%;
+						text {
+							font-size: 32rpx;
+							font-weight: 500;
+							color: #333333;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+						}
+						.warning {
+							background: $nav-stateColor5 !important;
+						}
+						.content_list_item_top_left_tag {
+							flex-shrink: 0;
+							padding: 5rpx 10rpx;
+							background: $nav-stateColor4;
+							border-radius: 8rpx;
+							font-size: 22rpx;
+							font-weight: 400;
+							color: #FFFFFF;
+							margin-left: 16rpx;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+						}
+					}
+					.content_list_item_top_right {
+						font-size: 26rpx;
+						font-weight: 400;
+						flex-shrink: 0;
+						margin-left: 10rpx;
+						.warning {
+							color: $nav-stateColor5 !important;
+						}
+						.green {
+							color: $nav-stateColor6 !important;
+						}
+						.info {
+							color: $nav-stateColor3 !important;
+						}
+					}
+				}
+				.content_list_item_content {
+					padding: 24rpx 30rpx;
+					background: #F7F7F7;
+					border-radius: 16rpx;
+					display: flex;
+					flex-wrap: wrap;
+					justify-content: space-between;
+					margin-top: 32rpx;
+					.content_list_item_content_item {
+						width: 50%;
+						display: flex;
+						margin-top: 24rpx;
+						&:nth-child(1) {
+							margin-top: 0 !important;
+						}
+						&:nth-child(2) {
+							margin-top: 0 !important;
+						}
+						.content_list_item_content_item_label {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+						.content_list_item_content_item_nr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+							margin-right: 10rpx;
+						}
+					}
+				}
+			}
+		}
+		.content_total {
+			width: 100%;
+			height: 80rpx;
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			box-sizing: border-box;
+			color: #666666;
+			position: sticky;
+			z-index: 99;
+		}
+	}
+</style>
diff --git a/minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue b/minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue
new file mode 100644
index 0000000..e6800a4
--- /dev/null
+++ b/minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue
@@ -0,0 +1,494 @@
+<template>
+	<view class="content">
+		<div :class="{ 'content_top': status }" class="content_search">
+			<v-Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true"
+				placeholder="鎼滅储宸ュ崟缂栫爜/宸ュ簭鍚嶇О">
+				<template v-slot:content>
+					<div class="Search_item">
+						<div class="Search_item_label">璁″垝鏃ユ湡</div>
+						<div class="Search_item_content" @click="isOpenDate=true">
+							<div class="Search_item_content_a" :style="form.startDate ? 'color: #000;' : ''">
+								{{ form.startDate ? form.startDate : '寮�濮嬫棩鏈�'}}</div>
+							<span>-</span>
+							<div class="Search_item_content_a" :style="form.endDate ? 'color: #000;' : ''">
+								{{ form.endDate ? form.endDate : '缁撴潫鏃ユ湡'}}</div>
+						</div>
+					</div>
+				</template>
+			</v-Search>
+			<div class="content_search_x"></div>
+			<v-LableSelection :TagList="tagList" :isShow="true" @change="clickTag"></v-LableSelection>
+		</div>
+		<div class="content_total">鍏眥{page.total}}鏉℃暟鎹�</div>
+		<div class="content_list">
+			<u-list @scrolltolower="scrolltolower" @scrolltoupper="scrolltoupper">
+				<u-list-item  v-for="(item, i) in list" :key="i">
+					<div class="content_list_item" @click="jump(item)">
+						<div class="content_list_item_top">
+							<div class="content_list_item_top_left">
+								<span v-if="item.mmodel">{{item.mmodel.name}} | {{item.procedureName}}</span>
+								<div class="content_list_item_top_left_tag" v-if="item.urgent">浼樺厛{{item.urgent}}</div>
+								<div class="content_list_item_top_left_tagW" v-if="item.paused === 1">鍋�</div>
+							</div>
+							<div class="content_list_item_top_right">
+								<span class="yellow" v-if="item.status === 0">宸插垱寤�</span>
+								<span class="green" v-if="item.status === 1">宸插鏂�</span>
+								<span v-if="item.status === 2">宸插畬宸�</span>
+								<span class="purple" v-if="item.status === 3">宸叉楠�</span>
+								<span v-if="item.status === 4">宸叉姤宸�</span>
+								<span v-if="item.status === 5">宸插叆搴�</span>
+								<span v-if="item.status === 6">宸插彇娑�</span>
+							</div>
+						</div>
+						<span>宸ュ崟缂栫爜: {{item.code}}</span>
+						<div class="content_list_item_content">
+							<div class="content_list_item_content_item">
+								<div class="content_list_item_content_item_label">鐗╂枡缂栫爜锛�</div>
+								<div class="content_list_item_content_item_nr" v-if="item.mmodel">{{item.mmodel.code}}
+								</div>
+							</div>
+							<div class="content_list_item_content_item">
+								<div class="content_list_item_content_item_label">璁″垝寮�宸ワ細</div>
+								<div class="content_list_item_content_item_nr">{{item.planDate}}</div>
+							</div>
+							<div class="content_list_item_content_item">
+								<div class="content_list_item_content_item_label">鐢熶骇鎵规锛�</div>
+								<div class="content_list_item_content_item_nr">{{item.batch}}</div>
+							</div>
+							<div class="content_list_item_content_item">
+								<div class="content_list_item_content_item_label">璁″垝鏁伴噺锛�</div>
+								<div class="content_list_item_content_item_nr" v-if="item.umodel">
+									{{item.planNum}}{{item.umodel.name}}</div>
+							</div>
+							<div class="content_list_item_content_item">
+								<div class="content_list_item_content_item_label">鐢熶骇璁惧锛�</div>
+								<div class="content_list_item_content_item_nr" v-if="item.pgmodel">{{item.pgmodel.name}}
+								</div>
+							</div>
+							<div class="content_list_item_content_item" v-if="item.status === 5">
+								<div class="content_list_item_content_item_label">瀹屽伐鏁伴噺锛�</div>
+								<div class="content_list_item_content_item_nr">{{item.proNum}}</div>
+							</div>
+						</div>
+					</div>
+				</u-list-item>
+			</u-list>
+		</div>
+		<!-- <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+			<van-list v-model:loading="loading" :finished="finished" finished-text="娌℃湁鏇村浜唦" @load="onLoad">
+			</van-list>
+		</van-pull-refresh> -->
+		<u-calendar :show="isOpenDate" mode="range" @close="isOpenDate=false" @confirm="onConfirm"></u-calendar>
+		<!-- <van-calendar v-model:show="isOpenDate" type="range" :min-date="minDate" :max-date="maxDate" color="#4275FC"
+			@confirm="onConfirm" /> -->
+		<!-- <v-ScanCode
+		            :openCode="openCode"
+		            :infos="['绗竴娆℃壂鐮�']"
+		            @closePopup="closePopup"
+		            @onDecode="onDecode">
+		        </v-ScanCode> -->
+	</view>
+</template>
+
+<script>
+	import vSearch from '@/components/Search.vue'
+	import vLableSelection from '@/components/LabelSelection.vue'
+	import { gsdate } from '@/util/utils'
+	export default {
+		components: {
+			vSearch,
+			vLableSelection
+		},
+		data() {
+			return {
+				status: true,
+				isOpenDate: false,
+				// tagList: [1,2,3],
+				form: {
+					startDate: '',
+					endDate: ''
+				},
+				list: [
+					{
+						mmodel: { name: 'adsa', },
+						mmodel: { code: 'wl-001' },
+						umodel: { name: '鍚�' },
+						pgmodel: { name: '娑插帇鏈�' },
+						procedureName: '鍘嬪埗',
+						urgent: 10,
+						paused: 0,
+						status: 0,
+						code: '00100',
+						planDate: '2023-08-30',
+						batch: 'kk-yw',
+						planNum: 300,
+						proNum: 100,
+					},
+					{
+						mmodel: { name: 'adsa', },
+						mmodel: { code: 'wl-001' },
+						umodel: { name: '鍚�' },
+						pgmodel: { name: '娑插帇鏈�' },
+						procedureName: '鍘嬪埗',
+						urgent: 10,
+						paused: 0,
+						status: 1,
+						code: '00100',
+						planDate: '2023-08-30',
+						batch: 'kk-yw',
+						planNum: 300,
+						proNum: 100
+					},
+					{
+						mmodel: { name: 'adsa', },
+						mmodel: { code: 'wl-001' },
+						umodel: { name: '鍚�' },
+						pgmodel: { name: '娑插帇鏈�' },
+						procedureName: '鍘嬪埗',
+						urgent: 10,
+						paused: 0,
+						status: 2,
+						code: '00100',
+						planDate: '2023-08-30',
+						batch: 'kk-yw',
+						planNum: 300,
+						proNum: 100,
+					},
+					{
+						mmodel: { name: 'adsa', },
+						mmodel: { name: '鐗╂枡001', code: 'wl-001' },
+						umodel: { name: '鍚�' },
+						pgmodel: { name: '娑插帇鏈�' },
+						procedureName: '鍘嬪埗',
+						urgent: 10,
+						paused: 0,
+						status: 3,
+						code: '00100',
+						planDate: '2023-08-30',
+						batch: 'kk-yw',
+						planNum: 300,
+						proNum: 100,
+					},
+					{
+						mmodel: { name: 'adsa', },
+						mmodel: { code: 'wl-001' },
+						umodel: { name: '鍚�' },
+						pgmodel: { name: '娑插帇鏈�' },
+						procedureName: '鍘嬪埗',
+						urgent: 10,
+						paused: 0,
+						status: 4,
+						code: '00100',
+						planDate: '2023-08-30',
+						batch: 'kk-yw',
+						planNum: 300,
+						proNum: 100,
+					},
+					{
+						mmodel: { name: 'adsa', },
+						mmodel: { code: 'wl-001' },
+						umodel: { name: '鍚�' },
+						pgmodel: { name: '娑插帇鏈�' },
+						procedureName: '鍘嬪埗',
+						urgent: 10,
+						paused: 0,
+						status: 5,
+						code: '00100',
+						planDate: '2023-08-30',
+						batch: 'kk-yw',
+						planNum: 300,
+						proNum: 100,
+					},
+					{
+						mmodel: { name: 'adsa', },
+						mmodel: { code: 'wl-001' },
+						umodel: { name: '鍚�' },
+						pgmodel: { name: '娑插帇鏈�' },
+						procedureName: '鍘嬪埗',
+						urgent: 10,
+						paused: 0,
+						status: 6,
+						code: '00100',
+						planDate: '2023-08-30',
+						batch: 'kk-yw',
+						planNum: 300,
+						proNum: 100,
+					},
+					{
+						mmodel: { name: 'adsa', },
+						mmodel: { code: 'wl-001' },
+						umodel: { name: '鍚�' },
+						pgmodel: { name: '娑插帇鏈�' },
+						procedureName: '鍘嬪埗',
+						urgent: 10,
+						paused: 0,
+						status: 7,
+						code: '00100',
+						planDate: '2023-08-30',
+						batch: 'kk-yw',
+						planNum: 300,
+						proNum: 100,
+					},
+				],
+				page: {
+					size: 10,
+					index: 1,
+					total: 0
+				}
+			};
+		},
+		methods: {
+			reset() {},
+			submit() {},
+			onConfirm(value) {
+				const [start, end] = value
+				this.form.startDate = gsdate(start)
+				this.form.endDate = gsdate(end)
+				this.isOpenDate = false
+			},
+			scrolltolower() {},
+			scrolltoupper() {},
+			jump(item) {
+				uni.$emit('workOrder', item)
+				uni.navigateBack()
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		.content_code {
+			position: fixed;
+			right: 30rpx;
+			bottom: 100rpx;
+
+			img {
+				width: 138rpx;
+				height: 138rpx;
+			}
+		}
+
+		.content_top {
+			top: 0 !important;
+		}
+
+		.content_search {
+			padding: 30rpx;
+			background: white;
+			position: sticky;
+			top: 88rpx;
+			z-index: 9;
+
+			.Search_item {
+				margin-bottom: 40rpx;
+
+				.Search_item_label {
+					font-size: 30rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+
+				.Search_item_content {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					margin-top: 30rpx;
+
+					.tag {
+						display: flex;
+						flex-wrap: wrap;
+						align-items: center;
+
+						.tag_active {
+							background: $nav-color !important;
+							color: #ffffff !important;
+						}
+
+						.tag_item {
+							width: 156rpx;
+							height: 70rpx;
+							box-sizing: border-box;
+							background: #F2F2F2;
+							border-radius: 8rpx;
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #333333;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							margin-right: 22rpx;
+							margin-bottom: 22rpx;
+
+							&:nth-child(4n) {
+								margin-right: 0;
+							}
+						}
+					}
+
+					span {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+					}
+
+					.Search_item_content_a {
+						width: 308rpx;
+						height: 70rpx;
+						background: #F7F7F7;
+						border-radius: 8rpx;
+						border: 1rpx solid #EEEEEE;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #B2B2B2;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+					}
+				}
+			}
+
+			.content_search_x {
+				height: 24rpx;
+			}
+		}
+
+		.content_total {
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #666666;
+		}
+
+		.content_list {
+			width: 100%;
+			height: 100%;
+			display: flex;
+			flex-direction: column;
+
+			.content_list_item {
+				padding: 30rpx;
+				display: flex;
+				flex-direction: column;
+				border-bottom: 1rpx solid #ececec;
+				background: white;
+
+				span {
+					color: #5a5a5a;
+					margin-top: 15rpx;
+				}
+
+				.content_list_item_top {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+
+					.content_list_item_top_left {
+						display: flex;
+						align-items: center;
+						width: 80%;
+
+						span {
+							font-size: 32rpx;
+							font-weight: 500;
+							color: #333333;
+							overflow: hidden;
+							white-space: nowrap;
+							text-overflow: ellipsis;
+							-o-text-overflow: ellipsis;
+						}
+
+						.content_list_item_top_left_tagW {
+							margin-top: 14rpx;
+							flex-shrink: 0;
+							box-sizing: border-box;
+							padding: 5rpx 10rpx;
+							background: $nav-stateColor5;
+							border-radius: 8rpx;
+							font-size: 22rpx;
+							font-weight: 400;
+							color: #FFFFFF;
+							margin-left: 16rpx;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+						}
+
+						.content_list_item_top_left_tag {
+							margin-top: 14rpx;
+							flex-shrink: 0;
+							padding: 5rpx 10rpx;
+							background: $nav-stateColor4;
+							border-radius: 8rpx;
+							font-size: 22rpx;
+							font-weight: 400;
+							color: #FFFFFF;
+							margin-left: 16rpx;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+						}
+					}
+
+					.content_list_item_top_right {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #666666;
+						flex-shrink: 0;
+
+						.purple {
+							color: $nav-color !important;
+						}
+
+						.green {
+							color: $nav-stateColor6 !important;
+						}
+
+						.yellow {
+							color: $nav-stateColor1 !important;
+						}
+					}
+				}
+
+				.content_list_item_content {
+					padding: 24rpx 30rpx;
+					background: #F7F7F7;
+					border-radius: 16rpx;
+					display: flex;
+					flex-wrap: wrap;
+					justify-content: space-between;
+					margin-top: 32rpx;
+
+					.content_list_item_content_item {
+						width: 50%;
+						display: flex;
+						margin-top: 24rpx;
+
+						&:nth-child(1) {
+							margin-top: 0 !important;
+						}
+
+						&:nth-child(2) {
+							margin-top: 0 !important;
+						}
+
+						.content_list_item_content_item_label {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+
+						.content_list_item_content_item_nr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+							margin-right: 10rpx;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>
diff --git a/minipro_standard/pages/updatePhone/updatePhone.vue b/minipro_standard/pages/updatePhone/updatePhone.vue
index b70fb79..46dd2ba 100644
--- a/minipro_standard/pages/updatePhone/updatePhone.vue
+++ b/minipro_standard/pages/updatePhone/updatePhone.vue
@@ -8,7 +8,7 @@
 			<view class="password_list_item">
 				<text>褰撳墠缁戝畾</text>
 				<view class="password_list_item_box">
-					<input type="number" disabled v-model="form.currentPhone" maxlength="11">
+					<input type="number" disabled v-model="userInfo.companyUser.phone" maxlength="11">
 				</view>
 			</view>
 			<view class="password_list_item">
@@ -22,7 +22,7 @@
 				<view class="password_list_item_box">
 					<input type="text" v-model="form.verificationCode" maxlength="4" placeholder="璇疯緭鍏ユ墜鏈洪獙璇佺爜">
 					<p @click="getVerificationCode" v-if="!code.isOpen">鑾峰彇楠岃瘉鐮�</p>
-					<p @click="getVerificationCode" v-else>{{code.num}}</p>
+					<p v-else>{{code.num}}</p>
 				</view>
 			</view>
 		</view>
@@ -35,15 +35,50 @@
 </template>
 
 <script>
+	import { mapState } from 'vuex'
+	import { phoneRegular } from '@/common/config.js'
 	export default {
 		data() {
 			return {
 				form: {
-					currentPhone: '',
 					newPhone: '',
 					verificationCode: ''
+				},
+				code: {
+					num: 60,
+					isOpen: false,
+					timer: 0
 				}
 			};
+		},
+		computed: mapState([
+			'userInfo'
+		]),
+		methods: {
+			// 鑾峰彇楠岃瘉鐮�
+			getVerificationCode() {
+				this.code.isOpen = true
+				this.code.timer = setInterval(() => {
+					if (this.code.num === 0) {
+						clearInterval(this.code.timer)
+						this.code.isOpen = false
+						this.code.num = 60
+					}
+					this.code.num = this.code.num - 1
+				}, 1000)
+			},
+			// 鎻愪氦淇敼
+			submit() {
+				if (!this.form.newPhone) {
+					uni.showToast({ title: '鏂版墜鏈哄彿涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				} else if (!phoneRegular.test(this.form.newPhone)) {
+					uni.showToast({ title: '鎵嬫満鍙蜂笉鍚堟硶', icon: 'none', duration: 2000 });
+				} else if (!this.form.verificationCode) {
+					uni.showToast({ title: '楠岃瘉鐮佷笉鑳戒负绌�', icon: 'none', duration: 2000 });
+				} else {
+					console.log('鍙互鎻愪氦')
+				}
+			}
 		}
 	}
 </script>
diff --git a/minipro_standard/pages/workbench/workbench.vue b/minipro_standard/pages/workbench/workbench.vue
index 01a623e..fa678a3 100644
--- a/minipro_standard/pages/workbench/workbench.vue
+++ b/minipro_standard/pages/workbench/workbench.vue
@@ -1,12 +1,12 @@
 <template>
 	<view class="index">
 		<view class="menu">
-			<view class="menu_list" v-for="(row, i) in 3" :key="i">
+			<view class="menu_list" v-for="(row, i) in Menu" :key="i">
 				<view class="menu_list_head">
-					<span>甯哥敤鍔熻兘</span>
+					<span>{{row.label}}</span>
 				</view>
 				<div class="menu_list_list">
-					<view class="menu_list_item" v-for="item in list" :key="item.id" @click="jump(item)">
+					<view class="menu_list_item" v-for="item in row.children" :key="item.id" @click="jump(item)">
 						<image :src="item.icon" mode="widthFix" />
 						<span>{{item.label}}</span>
 					</view>
@@ -21,12 +21,19 @@
 </template>
 
 <script>
-	import myTabbar from "@/components/myTabber.vue"
+	import myTabbar from "@/components/myTabber.vue"
+	import { mapState } from 'vuex'
 	
 	export default {
 		components: {
 			myTabbar
 		},
+		computed: mapState([
+			'Menu'
+		]),
+		onReady() {
+			console.log(this.Menu)
+		},
 		data() {
 			return {
 				list: [
diff --git a/minipro_standard/pages_adjust/components/Material.vue b/minipro_standard/pages_adjust/components/Material.vue
new file mode 100644
index 0000000..0685993
--- /dev/null
+++ b/minipro_standard/pages_adjust/components/Material.vue
@@ -0,0 +1,131 @@
+<template>
+	<u-popup :show="show" mode="bottom" :closeable="true" :round="10" @open="open" @close="close">
+		<view class="title">
+			<text>閫夋嫨鐗╂枡</text>
+		</view>
+		<view class="content">
+			<view class="content_search">
+				<u-search :showAction="false" placeholder="鎼滅储鐗╂枡鍚嶇О" v-model="keyword"></u-search>
+			</view>
+			<div class="content_total">鍏眥{total}}鏉℃暟鎹�</div>
+			<view class="content_list">
+				<u-list @scrolltolower="scrolltolower">
+					<u-list-item v-for="(item, index) in indexList" :key="index">
+						<div class="content_list_item" @click="getVal(item)">
+							<div class="content_list_item_name">
+								<span>{{item.name}}</span>
+							</div>
+						</div>
+					</u-list-item>
+				</u-list>
+			</view>
+		</view>
+	</u-popup>
+</template>
+
+<script>
+	export default {
+		props: {
+			show: Boolean
+		},
+		data() {
+			return {
+				keyword: '',
+				total: 0,
+				indexList: []
+			};
+		},
+		methods: {
+			getVal(item) {
+				this.$emit('value', item)
+			},
+			open() {
+				this.indexList = []
+				this.loadmore()
+			},
+			scrolltolower() {
+				this.loadmore()
+			},
+			loadmore() {
+				for (let i = 0; i < 20; i++) {
+					this.indexList.push({
+						id: i,
+						name: `浠撳簱${i}`
+					})
+				}
+			},
+			close() {
+				this.$emit('close')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.title {
+        width: 100%;
+		height: 85rpx;
+		line-height: 85rpx;
+		text-align: center;
+		text {
+			font-size: 30rpx;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #222222;
+		}
+    }
+	.content {
+		width: 100%;
+		.content_search {
+			width: 100%;
+			padding: 0 30rpx 30rpx 30rpx;
+			background: white;
+			position: sticky;
+			top: 85rpx;
+			z-index: 9;
+			box-sizing: border-box;
+		}
+		.content_total {
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #666666;
+		}
+		.content_list {
+			width: 100%;
+			height: 800rpx;
+			display: flex;
+			flex-direction: column;
+			.content_list_item {
+				padding: 30rpx;
+				display: flex;
+				border-bottom: 1rpx solid #ececec;
+				.serious {
+					color: $nav-stateColor4 !important;
+				}
+				.success {
+					color: $nav-stateColor2 !important;
+				}
+				.warning {
+					color: $nav-stateColor5 !important;
+				}
+				.content_list_item_status {
+					font-size: 28rpx;
+					margin-right: 10rpx;
+				}
+				.content_list_item_name {
+					width: 100%;
+					display: flex;
+					align-items: center;
+					span {
+						font-size: 30rpx;
+						font-family: PingFangSC-Regular, PingFang SC;
+						font-weight: 400;
+						color: #222222;
+					}
+				}
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/components/ProductionProcess.vue b/minipro_standard/pages_adjust/components/ProductionProcess.vue
new file mode 100644
index 0000000..297839e
--- /dev/null
+++ b/minipro_standard/pages_adjust/components/ProductionProcess.vue
@@ -0,0 +1,111 @@
+<template>
+	<u-popup :show="show" mode="bottom" :closeable="true" :round="10" @open="open" @close="close">
+		<view class="title">
+			<text>閫夋嫨宸ュ簭</text>
+		</view>
+		<view class="content">
+			<scroll-view scroll-y class="content_list">
+				<div class="content_list_item" v-for="(item, index) in list" :key="index" @click="getVal(item)">
+					<div class="content_list_item_name">
+						<span>{{item.name}}</span>
+					</div>
+				</div>
+			</scroll-view>
+		</view>
+	</u-popup>
+</template>
+
+<script>
+	export default {
+		props: {
+			show: {
+				type: Boolean,
+				required: true
+			},
+			list: {
+				type: Array,
+				required: true
+			}
+		},
+		methods: {
+			getVal(item) {
+				this.$emit('value', item)
+			},
+			open() {
+				this.indexList = []
+			},
+			close() {
+				this.$emit('close')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.title {
+        width: 100%;
+		height: 85rpx;
+		line-height: 85rpx;
+		text-align: center;
+		text {
+			font-size: 30rpx;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #222222;
+		}
+    }
+	.content {
+		width: 100%;
+		.content_search {
+			width: 100%;
+			padding: 0 30rpx 30rpx 30rpx;
+			background: white;
+			position: sticky;
+			top: 85rpx;
+			z-index: 9;
+			box-sizing: border-box;
+		}
+		.content_total {
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #666666;
+		}
+		.content_list {
+			width: 100%;
+			height: 800rpx;
+			display: flex;
+			flex-direction: column;
+			.content_list_item {
+				padding: 30rpx;
+				display: flex;
+				border-bottom: 1rpx solid #ececec;
+				.serious {
+					color: $nav-stateColor4 !important;
+				}
+				.success {
+					color: $nav-stateColor2 !important;
+				}
+				.warning {
+					color: $nav-stateColor5 !important;
+				}
+				.content_list_item_status {
+					font-size: 28rpx;
+					margin-right: 10rpx;
+				}
+				.content_list_item_name {
+					width: 100%;
+					display: flex;
+					align-items: center;
+					span {
+						font-size: 30rpx;
+						font-family: PingFangSC-Regular, PingFang SC;
+						font-weight: 400;
+						color: #222222;
+					}
+				}
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/components/Warehouse.vue b/minipro_standard/pages_adjust/components/Warehouse.vue
new file mode 100644
index 0000000..9911c53
--- /dev/null
+++ b/minipro_standard/pages_adjust/components/Warehouse.vue
@@ -0,0 +1,136 @@
+<template>
+	<u-popup :show="show" mode="bottom" :closeable="true" :round="10" @open="open" @close="close">
+		<view class="title">
+			<text>閫夋嫨浠撳簱</text>
+		</view>
+		<view class="content">
+			<view class="content_search">
+				<u-search :showAction="false" placeholder="璇疯緭鍏ヤ粨搴撳悕绉�" v-model="keyword"></u-search>
+			</view>
+			<div class="content_total">鍏眥{total}}鏉℃暟鎹�</div>
+			<view class="content_list">
+				<u-list @scrolltolower="scrolltolower">
+					<u-list-item v-for="(item, index) in indexList" :key="index">
+						<div class="content_list_item" @click="getVal(item)">
+							<div class="content_list_item_name">
+								<span style="color: #03AF76;">[DTFHNE]</span>
+								<!-- <span style="color: #03AF76;" v-if="item.tmodel.label == 'APPLIANCE_ONTEST'">[{{ item.tmodel.code }}]</span>
+								<span style="color: #305ED5;" v-if="item.tmodel.label == 'APPLIANCE_MIX'">[{{ item.tmodel.code }}]</span>
+								<span style="color: #F5A400;" v-if="item.tmodel.label == 'APPLIANCE_OFFTEST'">[{{ item.tmodel.code }}]</span> -->
+								<!-- <span style="color: red;" v-if="item.tmodel.label == 'APPLIANCE_USELESS'">[{{ item.tmodel.code }}]</span> -->
+								<span>{{item.name}}</span>
+							</div>
+						</div>
+					</u-list-item>
+				</u-list>
+			</view>
+		</view>
+	</u-popup>
+</template>
+
+<script>
+	export default {
+		props: {
+			show: Boolean
+		},
+		data() {
+			return {
+				keyword: '',
+				total: 0,
+				indexList: []
+			};
+		},
+		methods: {
+			getVal(item) {
+				this.$emit('value', item)
+			},
+			open() {
+				this.indexList = []
+				this.loadmore()
+			},
+			scrolltolower() {
+				this.loadmore()
+			},
+			loadmore() {
+				for (let i = 0; i < 20; i++) {
+					this.indexList.push({
+						id: i,
+						name: `浠撳簱${i}`
+					})
+				}
+			},
+			close() {
+				this.$emit('close')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.title {
+        width: 100%;
+		height: 85rpx;
+		line-height: 85rpx;
+		text-align: center;
+		text {
+			font-size: 30rpx;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #222222;
+		}
+    }
+	.content {
+		width: 100%;
+		.content_search {
+			width: 100%;
+			padding: 0 30rpx 30rpx 30rpx;
+			background: white;
+			position: sticky;
+			top: 85rpx;
+			z-index: 9;
+			box-sizing: border-box;
+		}
+		.content_total {
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #666666;
+		}
+		.content_list {
+			width: 100%;
+			height: 800rpx;
+			display: flex;
+			flex-direction: column;
+			.content_list_item {
+				padding: 30rpx;
+				display: flex;
+				border-bottom: 1rpx solid #ececec;
+				.serious {
+					color: $nav-stateColor4 !important;
+				}
+				.success {
+					color: $nav-stateColor2 !important;
+				}
+				.warning {
+					color: $nav-stateColor5 !important;
+				}
+				.content_list_item_status {
+					font-size: 28rpx;
+					margin-right: 10rpx;
+				}
+				.content_list_item_name {
+					width: 100%;
+					display: flex;
+					align-items: center;
+					span {
+						font-size: 30rpx;
+						font-family: PingFangSC-Regular, PingFang SC;
+						font-weight: 400;
+						color: #222222;
+					}
+				}
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/components/location.vue b/minipro_standard/pages_adjust/components/location.vue
new file mode 100644
index 0000000..abc7135
--- /dev/null
+++ b/minipro_standard/pages_adjust/components/location.vue
@@ -0,0 +1,101 @@
+<template>
+	<u-popup :show="show" mode="bottom" :closeable="true" :round="10" @close="close">
+		<view class="title">
+			<text>閫夋嫨璐т綅</text>
+		</view>
+		<view class="content">
+			<view 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.unionName}}</div>
+				</div>
+			</view>
+		</view>
+	</u-popup>
+</template>
+
+<script>
+	export default {
+		props: {
+			show: {
+				type: Boolean,
+				required: true
+			},
+			list: {
+				type: Array,
+				required: true
+			}
+		},
+		methods: {
+			close() {
+				this.$emit('close')
+			},
+			jump(item) {
+				this.$emit('value', item)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.title {
+	    width: 100%;
+		height: 85rpx;
+		line-height: 85rpx;
+		text-align: center;
+		text {
+			font-size: 30rpx;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #222222;
+		}
+	}
+	.content {
+		width: 100%;
+		.content_search {
+			width: 100%;
+			padding: 0 30rpx 30rpx 30rpx;
+			background: white;
+			position: sticky;
+			top: 85rpx;
+			z-index: 9;
+			box-sizing: border-box;
+		}
+		.content_total {
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #666666;
+		}
+		.content_list {
+			width: 100%;
+			height: 800rpx;
+			display: flex;
+			flex-direction: column;
+			.content_list_item {
+				padding: 30rpx;
+				display: flex;
+				border-bottom: 1rpx solid #ececec;
+				.serious {
+					color: $nav-stateColor4 !important;
+				}
+				.success {
+					color: $nav-stateColor2 !important;
+				}
+				.warning {
+					color: $nav-stateColor5 !important;
+				}
+				.content_list_item_status {
+					font-size: 28rpx;
+					margin-right: 10rpx;
+				}
+				.content_list_item_name {
+					font-size: 30rpx;
+					font-family: PingFangSC-Regular, PingFang SC;
+					font-weight: 400;
+					color: #222222;
+				}
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/components/user.vue b/minipro_standard/pages_adjust/components/user.vue
new file mode 100644
index 0000000..ad496c9
--- /dev/null
+++ b/minipro_standard/pages_adjust/components/user.vue
@@ -0,0 +1,127 @@
+<template>
+	<u-popup :show="show" mode="bottom" :closeable="true" :round="10" @open="open" @close="close">
+		<view class="title">
+			<text>閫夋嫨鐢熶骇浜哄憳</text>
+		</view>
+		<view class="content">
+			<view class="content_search">
+				<u-search :showAction="false" placeholder="鎼滅储濮撳悕" v-model="keyword"></u-search>
+			</view>
+			<div class="content_total">鍏眥{total}}鏉℃暟鎹�</div>
+			<scroll-view class="content_list" scroll-y>
+				<div class="content_list_item" v-for="(item, index) in indexList" :key="index" @click="getVal(item)">
+					<div class="content_list_item_name">
+						<span>{{item.name}}</span>
+					</div>
+				</div>
+			</scroll-view>
+		</view>
+	</u-popup>
+</template>
+
+<script>
+	export default {
+		props: {
+			show: Boolean
+		},
+		data() {
+			return {
+				keyword: '',
+				total: 0,
+				indexList: []
+			};
+		},
+		methods: {
+			getVal(item) {
+				this.$emit('value', item)
+			},
+			open() {
+				this.indexList = []
+				this.loadmore()
+			},
+			scrolltolower() {
+				this.loadmore()
+			},
+			loadmore() {
+				for (let i = 0; i < 20; i++) {
+					this.indexList.push({
+						id: i,
+						name: `鏉庝紵锝滅敓浜ч儴锝�${i}`
+					})
+				}
+			},
+			close() {
+				this.$emit('close')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.title {
+        width: 100%;
+		height: 85rpx;
+		line-height: 85rpx;
+		text-align: center;
+		text {
+			font-size: 30rpx;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #222222;
+		}
+    }
+	.content {
+		width: 100%;
+		.content_search {
+			width: 100%;
+			padding: 0 30rpx 30rpx 30rpx;
+			background: white;
+			position: sticky;
+			top: 85rpx;
+			z-index: 9;
+			box-sizing: border-box;
+		}
+		.content_total {
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #666666;
+		}
+		.content_list {
+			width: 100%;
+			height: 800rpx;
+			display: flex;
+			flex-direction: column;
+			.content_list_item {
+				padding: 30rpx;
+				display: flex;
+				border-bottom: 1rpx solid #ececec;
+				.serious {
+					color: $nav-stateColor4 !important;
+				}
+				.success {
+					color: $nav-stateColor2 !important;
+				}
+				.warning {
+					color: $nav-stateColor5 !important;
+				}
+				.content_list_item_status {
+					font-size: 28rpx;
+					margin-right: 10rpx;
+				}
+				.content_list_item_name {
+					width: 100%;
+					display: flex;
+					align-items: center;
+					span {
+						font-size: 30rpx;
+						font-family: PingFangSC-Regular, PingFang SC;
+						font-weight: 400;
+						color: #222222;
+					}
+				}
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/InventoryQuery/InventoryQuery.vue b/minipro_standard/pages_adjust/pages/InventoryQuery/InventoryQuery.vue
new file mode 100644
index 0000000..83ffa40
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/InventoryQuery/InventoryQuery.vue
@@ -0,0 +1,485 @@
+<template>
+	<view class="content">
+		<view class="content_search">
+			<Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true"
+				placeholder="鎼滅储浠撳簱鍚嶇О/鐗╂枡鍚嶇О">
+				<template v-slot:content>
+					<view class="Search_item">
+						<view class="Search_item_label">姹囨�讳緷鎹�</view>
+						<view class="Search_item_content">
+							<view class="tag">
+								<view
+									class="tag_item"
+									:class="{ tag_active: item.isActive }"
+									v-for="(item, i) in groupTypes"
+									:key="item.id"
+									@click="changeGroup(i)"
+								>
+									{{ item.name }}
+								</view>
+							</view>
+						</view>
+					</view>
+				</template>
+			</Search>
+		</view>
+		<view class="content_total" :style="{top: top}">鍏眥{controlData.total}}鏉℃暟鎹�</view>
+		<view class="content_list">
+			<scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+				<view class="content_list_item" v-for="(item, i) in list" :key="i">
+					<view class="content_list_item_top">
+						<view class="content_list_item_top_left">
+							<text>{{ item.materialName }}&nbsp;|&nbsp;{{ item.materialCode }}</text>
+						</view>
+						<view class="content_list_item_top_right">
+							<text class="created">{{ '搴撳瓨锛�' + item.num + item.unitName }}</text>
+						</view>
+					</view>
+					<view class="content_list_item_sx">
+						<text v-if="item.qualityType == 0" class="green">鍚堟牸 | </text>
+						<text v-if="item.qualityType == 1" class="yellow">涓嶈壇 | </text>
+						<text v-if="item.qualityType == 2" class="red">鎶ュ簾 | </text>
+						<text>{{ item.procedureName ? item.procedureName : '-' }} | </text>
+						<text>{{ item.batch ? item.batch : '-' }}</text>
+					</view>
+					<!-- item涓婚淇℃伅閮ㄥ垎 -->
+					<view class="content_list_item_content">
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">瑙勬牸锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.attr }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item" v-if="data.groupType == '3' || data.groupType == '2'">
+							<view class="content_list_item_content_item_label">浠撳簱锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.wareHouseName ? item.wareHouseName : '-' }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item" v-if="data.groupType == '3' || data.groupType == '2'">
+							<view class="content_list_item_content_item_label">璐т綅锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.locationName }}
+							</view>
+						</view>
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import Search from '@/components/Search.vue'
+	import { orderTyepToStr } from '@/util/constData.js'
+	export default {
+		components: {
+			Search
+		},
+		data() {
+			return {
+				height: '',
+				top: '',
+				controlData: {
+					finished: false,
+					loading: false,
+					total: 0,
+					page: 0,
+					capacity: 10,
+				},
+				groupTypes: [
+					{ name: '榛樿', id: '3', isActive: true },
+					{ name: '鐗╂枡', id: '1', isActive: false },
+					{ name: '鐗╂枡+浠撳簱', id: '2', isActive: false }
+				],
+				data: {
+					materialName: '',
+					groupType: '3'
+				},
+				list: []
+			};
+		},
+		onReady() {
+			var that = this
+			this.$nextTick(() => {
+				uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+					that.height = `calc(100vh - ${rect.height + 80}px)`
+					that.top = `${rect.height}px`
+				}).exec()
+			})
+		},
+		methods: {
+			changeGroup(i) {
+				this.groupTypes[i].isActive = !this.groupTypes[i].isActive;
+				this.data.groupType = this.groupTypes[i].id
+				for (const index in this.groupTypes) {
+					if (index != i) {
+						// console.log(index, i)
+						const item = this.groupTypes[index]
+						item.isActive = false
+					}
+				}
+			},
+			tyepToStr(type) {
+				//  <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+				for (const item of this.orderType) {
+					if (item.id == type) {
+						return item.name
+					}
+				}
+				return '-'
+			},
+			// 璺宠浆
+			jump(item) {
+				uni.navigateTo({
+					url: `/pages/planDetails/planDetails?id=${item.id}`
+				})
+			},
+			// 鑾峰彇澶撮儴缁勪欢楂樺害
+			getHeight(height) {
+				this.height = height
+			},
+			// 閲嶇疆
+			reset() {
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.listData.mixParam = ''
+				this.listData.startDate = ''
+				this.listData.endDate = ''
+				this.listData.procedureIds = []
+				if (this.factoryList.length > 0) {
+					this.listData.departIds = this.factoryList[0].id
+				}
+				if (this.data.length > 0) {
+					this.data.forEach(item => {
+						item.isActive = false
+					})
+				}
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鏃ユ湡纭畾
+			timeConfirm(val) {
+				this.listData.startDate = val[0]
+				this.listData.endDate = val[val.length - 1]
+				this.timeShow = false
+			},
+			// 鍒囨崲宸ュ巶
+			changeTags(i, id) {
+				this.listData.departIds = id
+				this.getWorkingProcedures(id)
+				this.factoryList.forEach((item, index) => {
+					if (index === i) {
+						item.isActive = true
+					} else {
+						item.isActive = false
+					}
+				})
+			},
+			// 鎵撳紑鏃ユ湡鎻掍欢
+			openDate() {
+				this.timeShow = true
+			},
+			// 鎼滅储
+			searchInput(val) {
+				this.listData.mixParam = val
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.getLists()
+			},
+			// 鐐瑰嚮鏍囩鎼滅储
+			clickTag(ids) {
+				this.listData.cateIds = ids
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+			},
+			// 鑾峰彇鍒楄〃缁熻
+			pageCounts() {
+				pageCount({
+					factoryId: this.listData.departIds,
+					procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+					startDate: this.listData.startDate,
+					endDate: this.listData.endDate,
+					statusList: this.listData.cateIds
+				}).then(res => {
+					if (res.code === 200 && res.data) {
+						this.tagList[0].num = res.data.allNum.toString()
+						this.tagList[1].num = res.data.startNum.toString()
+						this.tagList[2].num = res.data.ingNum.toString()
+						this.tagList[3].num = res.data.endNum.toString()
+					}
+				})
+			},
+			// 鑾峰彇宸ュ巶鏁版嵁
+			getOrganizations() {
+				getOrganization({
+					type: 1
+				}).then(res => {
+					if (res.code === 200 && res.data && res.data.length !== 0) {
+						res.data.forEach((item, i) => {
+							item.isActive = i === 0;
+						})
+						if (res.data.length > 0) {
+							this.factoryList = res.data
+							this.listData.departIds = this.factoryList[0].id
+							this.listData.procedureIds = ''
+							this.finished = false
+							this.getWorkingProcedures(this.factoryList[0].id)
+							this.getLists()
+							this.pageCounts()
+						}
+					}
+				})
+			},
+			// 鑾峰彇宸ュ簭鏁版嵁
+			getWorkingProcedures(orgId) {
+				this.data = []
+				getWorkingProcedure({
+						orgId
+					})
+					.then(res => {
+						if (res.code === 200 && res.data && res.data.length !== 0) {
+							res.data.forEach((item, i) => {
+								item.isActive = false;
+							})
+							this.data = res.data
+						}
+					})
+			},
+			// 鎼滅储寮规鎻愪氦
+			submit() {
+				let pmodelOrgId = []
+				this.data.forEach((item) => {
+					if (item.isActive) {
+						pmodelOrgId.push(item.id)
+					}
+				})
+				this.listData.procedureIds = pmodelOrgId
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鑾峰彇璁″垝鍒楄〃鏁版嵁
+			getLists() {
+				console.log('getLists')
+				if (!this.finished) {
+					this.loading = true
+					this.listData.page = this.listData.page++
+					getList({
+						capacity: this.listData.capacity,
+						model: {
+							mixParam: this.listData.mixParam,
+							startDate: this.listData.startDate,
+							endDate: this.listData.endDate,
+							procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+							factoryId: this.listData.departIds,
+							statusList: this.listData.cateIds
+						},
+						page: this.listData.page,
+						sorts: [{
+							direction: 'ASC',
+							property: 'publishDate'
+						}]
+					}).then(res => {
+						this.loading = false
+						this.listData.total = res.data.total
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+						if (res.code === 200 && res.data.records.length !== 0) {
+							if (this.lists.length === 0) {
+								this.lists = res.data.records
+							} else {
+								this.lists.push(...res.data.records)
+							}
+						} else {
+							this.finished = true
+						}
+					}).catch(err => {
+						this.loading = false
+						this.finished = true
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		.content_search {
+			width: 100%;
+			padding: 30rpx;
+			background: white;
+			position: sticky;
+			top: 0;
+			z-index: 999;
+			box-sizing: border-box;
+
+			.Search_item {
+				margin-bottom: 40rpx;
+
+				.Search_item_label {
+					font-size: 30rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+
+				.Search_item_content {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					margin-top: 30rpx;
+
+					.tag {
+						display: flex;
+						flex-wrap: wrap;
+						align-items: center;
+
+						.tag_active {
+							background: $nav-color !important;
+							color: #ffffff !important;
+						}
+
+						.tag_item {
+							padding: 22rpx 26rpx;
+							box-sizing: border-box;
+							background: #F2F2F2;
+							border-radius: 8rpx;
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #333333;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							margin-right: 22rpx;
+							margin-bottom: 22rpx;
+						}
+					}
+
+					text {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						margin: 0 30rpx;
+					}
+
+					.Search_item_content_a {
+						padding: 20rpx 0;
+						flex: 1;
+						background: #F7F7F7;
+						border-radius: 8rpx;
+						border: 1rpx solid #EEEEEE;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #B2B2B2;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+					}
+				}
+			}
+
+			.content_search_x {
+				height: 24rpx;
+			}
+		}
+
+		.content_list {
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+			.content_list_item {
+				background: #ffffff;
+				padding: 30rpx;
+				display: flex;
+				flex-direction: column;
+				border-bottom: 1rpx solid #ececec;
+				.content_list_item_sx {
+					margin-top: 20rpx;
+				}
+				.content_list_item_top {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					.content_list_item_top_left {
+						text {
+							font-size: 32rpx;
+							font-weight: 500;
+							color: #333333;
+						}
+					}
+					.content_list_item_top_right {
+						font-size: 26rpx;
+						font-weight: 400;
+						.created {
+							color: $nav-stateColor1 !important;
+						}
+						.warning {
+							color: $nav-stateColor5 !important;
+						}
+						.green {
+							color: $nav-stateColor6 !important;
+						}
+						.info {
+							color: $nav-stateColor3 !important;
+						}
+					}
+				}
+				.content_list_item_content {
+					padding: 24rpx 30rpx;
+					background: #f7f7f7;
+					border-radius: 16rpx;
+					display: flex;
+					flex-wrap: wrap;
+					justify-content: space-between;
+					margin-top: 32rpx;
+					.content_list_item_content_item {
+						width: 100%;
+						display: flex;
+						margin-top: 24rpx;
+						&:nth-child(1) {
+							margin-top: 0 !important;
+						}
+						.content_list_item_content_item_label {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+						.content_list_item_content_item_nr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+							margin-right: 10rpx;
+						}
+					}
+				}
+			}
+		}
+
+		.content_total {
+			width: 100%;
+			height: 80rpx;
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			box-sizing: border-box;
+			color: #666666;
+			position: sticky;
+			z-index: 99;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue b/minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue
new file mode 100644
index 0000000..930fb69
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue
@@ -0,0 +1,1002 @@
+<template>
+	<view>
+		<workOrderInfo :orederMessage="{proUserList:[]}" />
+		<view class="bg_cate">
+			<view @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'"
+				v-for="(item, index) in cate" :key="index">{{ item.name }}</view>
+		</view>
+		<div class="bg_list" v-if="typeView === 0">
+			<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 bg_m"></div>
+						<span>鎶曟枡鏄庣粏</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="" /> -->
+						<!-- <img src="@/static/gongdan_ic_shoudong@2x.ong" alt="" /> -->
+						<image src="../../static/gongdan_ic_shoudong@2x.png" class="img28" mode=""></image>
+						<span class="cm">鏂板鎶曟枡</span>
+					</div>
+				</div>
+
+				<template v-if="feedingData && feedingData.length > 0">
+					<u-swipe-action>
+						<u-swipe-action-item v-for="(item, index) in feedingData" :key="index" :options="options"
+							@click="deleItem(item.id, 'T')">
+							<div class="bg_list_item_h">
+								<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="orange" 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">
+											<!-- :disabled="!proxy.$auth('h5:workorderinput:update')" -->
+											<!-- <view class="cY">
+												<span>{{item.num}}{{ item.unitName }}</span>
+												<image src="../../../static/ic_edit@2x.png" class="img48" mode=""></image>
+												<span class="red">鍒犻櫎</span>
+											</view> -->
+											<view class="cY">
+												<input v-model="item.num"
+													@blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)"
+													type="number" />
+												<span class="cm">淇濆瓨</span>
+											</view>
+											
+										</div>
+									</div>
+								</div>
+							</div>
+						</u-swipe-action-item>
+					</u-swipe-action>
+
+				</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 bg_m"></div>
+						<span>浜у嚭鏄庣粏</span>
+					</div>
+				</div>
+				<div class="bg_list_item_h">
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item">
+							<span>鑹搧鏁皗{ info.umodel ? `(${info.umodel.name})` : '' }}</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>
+				</div>
+				<div class="bg_list_item_h">
+					<div class="bg_list_item_num">
+						<!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+						<div class="bg_list_item_num_item">
+							<span>涓嶈壇鏁皗{ info.umodel ? `(${info.umodel.name})` : '' }}</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>
+				</div>
+				<div class="bg_list_item_h" v-if="produceFrom.undesirable > 0">
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item" @click="badShow = true">
+							<span>涓嶈壇椤�</span>
+							<div class="bg_list_item_num_item_sr">
+								<span class="wulll" :style="{ color: form.defectiveName ? '#305ED5' : '' }">{{ form.defectiveName ?
+				              form.defectiveName : '璁剧疆' }}</span>
+								<image src="../../../static/ic_ar@2x.png" class="img_ar" mode=""></image>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="bg_plan" @click="TimeShow = true">
+				<div class="bg_plan_label">
+					<span>鎶ュ伐鏃堕暱</span>
+				</div>
+				<div class="bg_plan_label_val">
+					<span
+						:style="{ color: form.durationName ? '#333' : '' }">{{ form.durationName ? form.durationName : '璇烽�夋嫨' }}</span>
+					<image src="../../../static/ic_ar@2x.png" class="img_ar" mode=""></image>
+				</div>
+			</div>
+			<div class="bg_list_item" v-if="arrType && arrType.length > 0">
+				<div class="bg_list_item_top">
+					<div class="bg_list_item_top_left">
+						<div class="bg_list_item_top_left_x bg_m"></div>
+						<span>宸ヨ祫缁╂晥</span>
+					</div>
+				</div>
+				<div class="bg_list_item_h">
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item">
+							<span>璁′欢鏂瑰紡</span>
+							<div class="bg_list_item_num_item_list">
+								<div :class="form.index == index ? 'bg_list_item_num_item_list_item active' : 'bg_list_item_num_item_list_item'"
+									v-for="(item, index) in arrType" :key="index"
+									@click="clickPerformanceType(item, index)">
+									{{ item.name }}
+								</div>
+							</div>
+						</div>
+					</div>
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item">
+							<span>宸ヨ祫鍗曚环</span>
+							<div class="bg_list_item_num_item_sr">
+								<span class="color1">{{ (arrType[form.index].salary / 10 / 10).toFixed(2) }}鍏�/{{ arrType[form.index].type ==
+		                  0 ? '浠�' : '鏃�' }}</span>
+							</div>
+						</div>
+					</div>
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item">
+							<span>棰勮宸ヨ祫</span>
+							<div class="bg_list_item_num_item_sr">
+								<span class="color1">{{ expectedSalary }}鍏�</span>
+							</div>
+						</div>
+					</div>
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item">
+							<span>杈炬爣鐜�</span>
+							<div class="bg_list_item_num_item_sr">
+								<span class="color1">{{ complianceRate }}%</span>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+
+		</div>
+		<div class="details_dj" v-if="typeView === 1">
+
+			<div class="details_dj_list">
+				<u-swipe-action>
+					<u-swipe-action-item v-for="(item, index) in djData" :key="index" :options="options"
+						@click="dele(item.id)">
+						<div class="details_dj_list_item">
+							<span>{{ item.attrName }}锛歿{ item.val }}</span>
+							<span>{{ item.userName }} {{ item.createTime }}</span>
+						</div>
+					</u-swipe-action-item>
+				</u-swipe-action>
+			</div>
+		</div>
+		<!-- v-if="info.status === 2 || info.procedureNeedcheck === 1" -->
+		<template>
+			<div class="bh_zw"></div>
+			<div class="bg_footer bg_f7">
+				<div class="bg_footer_submit bg_m" v-if="typeView == 0" @click="submit">纭鎶ュ伐</div>
+				<!-- proxy.$auth('h5:workorder:processRecord') &&  -->
+				<div class="bg_footer_submit1" @click="jumpdj" v-if="typeView == 1">
+					<image src="../../../static/gongdan_ic_shoudong@2x.png" class="fornt-img" mode=""></image>
+					<span>鏂板鐐规</span>
+				</div>
+			</div>
+		</template>
+		<u-datetime-picker :show="TimeShow" @cancel="TimeShow=false" @confirm="timeConfirm" v-model="form.time"
+			mode="time"></u-datetime-picker>
+		<u-popup :show="badShow" @close="badShow=false" :round="8" closeable zIndex="20000">
+			<view class="rp p40 contanir">
+				<view class="c2 b tc">涓嶈壇椤�</view>
+				<view class="content bl_list">
+					<div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)">
+						<div class="bl_list_item_left">
+							<u-checkbox-group>
+								<u-checkbox :checked="item.active" :label="item.name"
+									:name="item.name">
+								</u-checkbox>
+							</u-checkbox-group>
+						</div>
+						<div class="bl_list_item_right">
+							<input type="number" @click.stop v-model="item.num" placeholder="0" />
+						</div>
+					</div>
+				</view>
+				<view class="flex ap tc bottom-view">
+					<view class="fx1 ml20 ptb20 sbtn_green" @click="confirm">纭畾</view>
+				</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import workOrderInfo from '@/components/workOrderInfo.vue'
+	export default {
+		components: {
+			workOrderInfo
+		},
+		data() {
+			return {
+				cate: [{
+						name: '鐢熶骇'
+					},
+					{
+						name: '鐐规'
+					}
+				],
+				form: {
+					time: '',
+					efective: [],
+					defectiveName: '',
+					durationName: '0灏忔椂0鍒嗛挓',
+					duration: 0,
+					type: 0,
+					index: 0
+				},
+				TimeShow: false,
+				badShow: false,
+				typeView: 0,
+				feedingData: [{
+					id: 0,
+					materialName: '澧欎綋鐮�',
+					procedureName: '鍘嬪埗',
+					qualityType: 1,
+					locationName: 'CP-01',
+					batch: '20230713',
+					num: 2,
+					maxNum: 10,
+					unitAttribute: 1,
+					unitName: '鍧�'
+				}],
+				options: [{
+					text: '鍒犻櫎',
+					style: {
+						backgroundColor: 'red',
+					}
+				}],
+				arrType: [{
+						name: '璁℃椂',
+						type: 1,
+						salary: 1000,
+					},
+					{
+						name: '璁′欢',
+						type: 0,
+						salary: 100
+					},
+				],
+				// 浜у嚭鍚堟牸/涓嶈壇
+				produceFrom: {
+					qualifiedId: '',
+					qualified: '', // 鍚堟牸
+					undesirableId: '',
+					undesirable: 5 // 涓嶈壇
+				},
+				djData: [{
+					attrName: '鍑烘按鏃堕棿',
+					val: '2022-05-28 16:3',
+					userName: '寮犱笁 ',
+					createTime: '2022-05-28 16:32:'
+				}],
+				cateList: [{
+					active: false,
+					name: '姣涘埡',
+					num: 0
+				}]
+			};
+		},
+		computed: {
+			expectedSalary() {
+				if (this.arrType.length === 0) return 0;
+				// 鎸変欢璁$畻
+				if (this.arrType[this.form.index].type == 0) {
+					if (!this.produceFrom.qualified) return 0
+					if (this.arrType[this.form.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+						let total = Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)
+						return (total * (this.arrType[this.form.index].salary / 100)).toFixed(2) || 0
+					} else {
+						return (Number(this.produceFrom.qualified) * (this.arrType[this.form.index].salary / 100)).toFixed(
+							2) || 0
+					}
+				} else {
+					if (!this.form.duration) return 0;
+					let h = (this.form.duration / 60 / 60).toFixed(2)
+					return (Number(h) * (this.arrType[this.form.index].salary / 10 / 10)).toFixed(2) || 0
+				}
+			},
+			complianceRate() {
+				if (this.arrType.length === 0) return 0;
+				if (!this.produceFrom.qualified && !this.produceFrom.undesirable) return 0;
+				if (!this.form.duration) return 0;
+				if (!this.arrType[this.form.index].num) return 0;
+				// 鎸変欢璁$畻
+				// if (infoBox.value.type == 0) {
+				if (this.arrType[this.form.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+					let a = ((Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)) / (this.form
+						.duration / 3600)).toFixed(2)
+					let b = (this.arrType[this.form.index].num / (this.arrType[form.index].times / 3600)).toFixed(2)
+					return ((Number(a) / Number(b)) * 100).toFixed(2)
+					// let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / )
+					// return total * infoBox.value.salary;
+				} else {
+					let a = (this.produceFrom.qualified / (this.form.duration / 3600)).toFixed(2)
+					let b = (this.arrType[this.form.index].num / (this.arrType[this.form.index].times / 3600)).toFixed(2)
+					return ((Number(a) / Number(b)) * 100).toFixed(2)
+					// return Number(from.qualified) * infoBox.value.salary;
+				}
+			}
+		},
+		methods: {
+			click() {
+
+			},
+			clickIten(index) {
+				this.typeView = index
+			},
+			timeConfirm({
+				value
+			}) {
+				console.log(value)
+				let h = Number(value.substring(0, 2))
+				let m = Number(value.substring(3, 5))
+				let s = 0
+				if (h > 0) {
+					s += h * 60 * 60
+				}
+				if (m > 0) {
+					s += m * 60
+				}
+				this.form.duration = s
+				this.form.durationName = `${h}灏忔椂${m}鍒嗛挓`
+				this.TimeShow = false
+			},
+			// 缂栬緫鎶曟枡/浜у嚭
+			change(id, num, type, maxNum, item, unitAttribute) {
+				let obj = 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, num }).then(res => {
+				//   if (res.code === 200 && type === 'T') {
+				//     getOrocessRecords()
+				//   } else if (res.code === 200 && type === 'C') {
+				//     // getOrocessRecordCC()
+				//   }
+				// })
+			},
+			clickPerformanceType(item, index) {
+				this.form.index = index
+				this.form.type = item.type
+			},
+			submit() {},
+			jumpdj() {},
+			pageDJs() {},
+			dele(id) {
+				// deletedj(id)
+				//     .then(res => {
+				//       if (res.code === 200) {
+				//         djData.value = []
+				//         finished.value = false
+				//         page.page = 1
+				//         djData.value = []
+				//         pageDJs()
+				//       }
+				//     })
+			},
+			confirm() {
+				// console.log('confirm');
+				this.badShow = false
+			},
+			changeChecked(i) {
+				this.cateList[i].active = !this.cateList[i].active
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.bg_cate {
+		width: 100%;
+		height: 88rpx;
+		background: #FFFFFF;
+		display: flex;
+		align-items: center;
+
+		.active {
+			box-sizing: border-box;
+			color: #305ED5 !important;
+			font-weight: 500;
+			border-bottom: 3rpx solid #305ED5;
+		}
+
+		.bg_cate_item {
+			flex: 1;
+			height: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			font-size: 30rpx;
+			font-weight: 400;
+			color: #555555;
+		}
+	}
+
+	.bg_list {
+		width: 100%;
+		display: flex;
+		flex-direction: column;
+		margin-top: 30rpx;
+
+		.bg_list_item {
+			display: flex;
+			flex-direction: column;
+			// margin-bottom: 40rpx;
+			border-bottom: 40rpx #f7f7f7 solid;
+
+			.kong {
+				text-align: center;
+				padding: 30rpx 0;
+				background: #ffffff;
+				font-size: 25rpx;
+
+				span {
+					color: #474747;
+				}
+			}
+
+			.bg_list_item_top {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				padding-left: 30rpx;
+				padding-right: 30rpx;
+				margin-bottom: 30rpx;
+
+				.bg_list_item_top_left {
+					display: flex;
+					align-items: center;
+
+					.left {
+						margin-left: 12rpx;
+						font-size: 28rpx;
+					}
+
+					.warning {
+						width: 8rpx;
+						height: 30rpx;
+						border-radius: 2rpx;
+						margin-right: 12rpx;
+						// background: $nav-stateColor5 !important;
+					}
+
+					.error {
+						width: 8rpx;
+						height: 30rpx;
+						border-radius: 2rpx;
+						margin-right: 12rpx;
+						// background: $nav-stateColor4 !important;
+					}
+
+					.bg_list_item_top_left_x {
+						width: 8rpx;
+						height: 30rpx;
+						// background: $nav-color;
+						border-radius: 2rpx;
+						margin-right: 12rpx;
+					}
+
+					span {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #222222;
+						display: flex;
+						align-items: center;
+					}
+				}
+
+				.bg_list_item_top_right {
+					display: flex;
+					align-items: center;
+
+					image {
+						width: 28rpx;
+						height: 28rpx;
+						margin-right: 12rpx;
+					}
+
+					span {
+						font-size: 28rpx;
+						font-weight: 400;
+					}
+				}
+			}
+
+			.bg_list_item_h {
+				width: 100%;
+				padding: 0 30rpx;
+				box-sizing: border-box;
+				background: white;
+
+				.bg_list_item_num {
+					width: 100%;
+					min-height: 98rpx;
+					background: white;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					border-bottom: 1rpx solid #E5E5E5;
+
+					&:last-child {
+						border: none !important;
+					}
+
+					.kong {
+						text-align: center;
+						font-size: 25rpx;
+						padding: 30rpx 0;
+						background: #ffffff;
+					}
+
+					.bg_list_item_num_item {
+						width: 100%;
+						height: 100%;
+						display: flex;
+						align-items: center;
+						// height: 118rpx;
+						padding: 15rpx 0;
+						box-sizing: border-box;
+						justify-content: space-between;
+						border-bottom: 1rpx solid #E5E5E5;
+
+						&:last-child {
+							border: none;
+						}
+
+						.bg_list_item_num_item_list {
+							display: flex;
+							align-items: center;
+
+							.active {
+								background: #305ED5 !important;
+								color: #FFFFFF !important;
+							}
+
+							.bg_list_item_num_item_list_item {
+								width: 116rpx;
+								height: 62rpx;
+								line-height: 62rpx;
+								text-align: center;
+								background: #F2F2F2;
+								border-radius: 8rpx;
+								font-size: 26rpx;
+								font-family: PingFangSC-Regular, PingFang SC;
+								font-weight: 400;
+								color: #333333;
+								margin-right: 20rpx;
+
+								&:last-child {
+									margin: 0 !important;
+								}
+							}
+						}
+
+						.bg_list_item_num_item_wl {
+							flex-shrink: 0;
+							display: flex;
+							flex-direction: column;
+							font-size: 34rpx;
+							color: #222222;
+
+							.bg_list_item_num_item_wl_lx {
+								margin-top: 10rpx;
+								color: #222222;
+								font-size: 28rpx;
+							}
+						}
+
+						// .warning {
+						// 	color: $nav-stateColor5 !important;
+						// }
+
+						// .err {
+						// 	color: $nav-stateColor4 !important;
+						// }
+
+						img {
+							width: 12rpx;
+							height: 24rpx;
+							margin-left: 20rpx;
+						}
+
+						span {
+							flex-shrink: 0;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+
+							b {
+								font-size: 30rpx;
+								color: red;
+								margin-right: 5rpx;
+							}
+
+							// .warning {
+							// 	color: $nav-stateColor5 !important;
+							// 	margin-right: 5rpx;
+							// }
+
+							// .err {
+							// 	color: $nav-stateColor4 !important;
+							// 	margin-right: 5rpx;
+							// }
+
+							&:nth-child(1) {
+								font-size: 30rpx;
+								font-weight: 400;
+								color: #222222;
+							}
+
+							&:nth-child(2) {
+								font-size: 28rpx;
+								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;
+
+							.color1 {
+								font-size: 28rpx;
+								font-family: PingFangSC-Regular, PingFang SC;
+								font-weight: 400;
+								color: #333333;
+							}
+
+							input::-webkit-input-placeholder {
+								font-size: 28rpx;
+							}
+
+							input {
+								text-align: right;
+								width: 180rpx;
+								height: 60rpx;
+								border-radius: 8rpx;
+								border: 1rpx solid #E5E5E5;
+								margin-right: 20rpx;
+								font-size: 28rpx;
+								font-weight: 400;
+								color: #333333;
+								padding: 0 30rpx
+							}
+
+							.wulll {
+								width: 400rpx;
+								text-align: right;
+								overflow: hidden;
+								white-space: nowrap;
+								text-overflow: ellipsis;
+							}
+
+							span {
+								font-size: 28rpx;
+								font-weight: 400;
+								color: #999999;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.bg_plan {
+		width: 100%;
+		// height: 98px;
+		padding: 30rpx;
+		box-sizing: border-box;
+		background: #FFFFFF;
+		margin-bottom: 40rpx;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+
+		span {
+			font-size: 30rpx;
+			font-family: PingFangSC-Regular, PingFang SC;
+			font-weight: 400;
+			color: #222222;
+
+			b {
+				color: red;
+			}
+		}
+
+		.bg_plan_nr {
+			display: flex;
+			flex-direction: column;
+
+			span {
+				font-size: 24rpx;
+				font-family: PingFangSC-Regular, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				margin-top: 20rpx;
+
+				&:first-child {
+					font-size: 32rpx;
+					font-family: PingFangSC-Medium, PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					margin-top: 0 !important;
+				}
+			}
+		}
+
+		.bg_plan_label_val {
+			display: flex;
+			align-items: center;
+
+			span {
+				font-size: 28rpx;
+				font-family: PingFangSC-Regular, PingFang SC;
+				font-weight: 400;
+				color: #999999;
+			}
+
+
+		}
+	}
+
+	.img_ar {
+		width: 12rpx;
+		height: 24rpx;
+		margin-left: 20rpx;
+	}
+
+	.bh_zw {
+		height: 160rpx;
+	}
+
+	.bg_footer {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		padding: 30rpx 30rpx 60rpx 30rpx;
+		box-sizing: border-box;
+
+		.bg_footer_submit1 {
+			width: 690rpx;
+			height: 76rpx;
+			background: #FFFFFF;
+			border-radius: 36rpx;
+			border: 1rpx solid #E5E5E5;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+			.fornt-img {
+				width: 28rpx;
+				height: 28rpx;
+				margin-right: 12rpx;
+			}
+
+			span {
+				font-size: 26rpx;
+				font-family: PingFangSC-Regular, PingFang SC;
+				font-weight: 400;
+				color: #305ED5;
+			}
+		}
+
+		.bg_footer_submit {
+			width: 690rpx;
+			height: 88rpx;
+			box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+			border-radius: 8rpx;
+			font-size: 30rpx;
+			font-weight: 500;
+			color: #FFFFFF;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+	}
+
+	.details_dj {
+		display: flex;
+		flex-direction: column;
+
+		.details_dj_list {
+			width: 100%;
+			box-sizing: border-box;
+			background: #ffffff;
+			display: flex;
+			flex-direction: column;
+
+			.details_dj_list_item {
+				display: flex;
+				flex-direction: column;
+				border-bottom: 1rpx solid #E5E5E5;
+				padding: 30rpx;
+				line-height: 42rpx;
+
+				span {
+					&:nth-child(1) {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #222222;
+					}
+
+					&:nth-child(2) {
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #999999;
+					}
+				}
+			}
+		}
+
+		.details_dj_title {
+			width: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			padding: 0 30rpx 30rpx;
+			box-sizing: border-box;
+
+			.details_dj_title_left {
+				display: flex;
+				align-items: center;
+
+				span {
+					font-size: 32rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+			}
+
+		}
+	}
+
+	.contanir {
+		height: calc(env(safe-area-inset-bottom) + 720rpx);
+
+		.content {
+			margin-top: 20rpx;
+
+			.type-style {
+				width: 325rpx;
+				margin-bottom: 20rpx;
+			}
+		}
+	}
+
+	.bottom-view {
+		left: 40rpx;
+		right: 40rpx;
+		bottom: 0
+	}
+
+	.bl_list {
+		width: 100%;
+		height: calc(100% - 168rpx);
+		overflow-y: scroll;
+		margin-top: 30rpx;
+
+		.bl_list_item {
+			width: 100%;
+			height: 96rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			border-bottom: 1rPX solid #E5E5E5;
+
+			&:last-child {
+				border: none !important;
+			}
+
+			.bl_list_item_left {
+				flex: 1;
+				display: flex;
+				align-items: center;
+
+				input {
+					width: 30rpx;
+					height: 30rpx;
+					border: 1rpX solid #CCCCCC;
+					margin: 0 !important;
+				}
+
+				span {
+					font-size: 30rpx;
+					color: #222222;
+					margin-left: 10rpx;
+				}
+			}
+
+			.bl_list_item_right {
+				flex: 1;
+				height: 50rpx;
+				text-align: right;
+
+				input {
+					padding-left: 5rpx;
+					width: 160rpx;
+					height: 100%;
+					padding: 0 30rpx;
+					box-sizing: border-box;
+					text-align: right;
+					font-size: 28rpx;
+					color: #333333;
+					border-radius: 10rpx;
+					border: 1rPX solid #CCCCCC;
+
+					&::-webkit-input-placeholder {
+						font-size: 28rpx;
+						font-family: PingFangSC-Regular, PingFang SC;
+						font-weight: 400;
+						color: #999999;
+					}
+				}
+			}
+		}
+	}
+</style>
diff --git a/minipro_standard/pages_adjust/pages/addReceipt/addReceipt.vue b/minipro_standard/pages_adjust/pages/addReceipt/addReceipt.vue
new file mode 100644
index 0000000..3b9b607
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/addReceipt/addReceipt.vue
@@ -0,0 +1,462 @@
+<template>
+	<view class="rework">
+		<view class="rework_list">
+			<view class="rework_list_item">
+				<text><b>*</b>鍗曟嵁绫诲瀷</text>
+				<view class="rework_list_item_right" @click="typeShow = true">
+					<text :class="form.typeName ? 'black' : ''">{{form.typeName ? form.typeName : '璇烽�夋嫨'}}</text>
+					<u-icon name="arrow-right"></u-icon>
+				</view>
+			</view>
+			<view class="rework_list_item">
+				<text><b>*</b>鍏ュ簱浠撳簱</text>
+				<view class="rework_list_item_right" @click="warehouseShow = true">
+					<text :class="form.warehouseName ? 'black' : ''">{{form.warehouseName ? form.warehouseName : '璇烽�夋嫨'}}</text>
+					<u-icon name="arrow-right"></u-icon>
+				</view>
+			</view>
+		</view>
+		<view class="rework_qd">
+			<view class="rework_qd_title">
+				<view class="rework_qd_title_left">
+					<view class="x"></view>
+					<text>{{`鍏ュ簱鐗╂枡娓呭崟${list.length}`}}</text>
+				</view>
+				<view class="rework_qd_title_right" @click="addItem()">
+					<image src="@/static/gongdan_ic_shoudong@2x.png" mode="widthFix"></image>
+					<text>澧炲姞鍏ュ簱</text>
+				</view>
+			</view>
+			<van-swipe-cell v-for="(item, index) in list" :key="index">
+				<view class="rework_qd_list">
+					<view class="rework_qd_item" @click="locationShow = true">
+						<text><b>*</b>鍏ュ簱璐т綅</text>
+						<view class="rework_qd_item_right">
+							<text :class="item.locationName ? 'black' : ''">{{item.locationName ? item.locationName : '璇烽�夋嫨'}}</text>
+							<u-icon name="arrow-right"></u-icon>
+						</view>
+					</view>
+					<view class="rework_qd_item" @click="materialsShow = true">
+						<text><b>*</b>鍏ュ簱鐗╂枡</text>
+						<view class="rework_qd_item_right">
+							<text :class="item.materialName ? 'black' : ''">{{item.materialName ? item.materialName : '璇烽�夋嫨'}}</text>
+							<u-icon name="arrow-right"></u-icon>
+						</view>
+					</view>
+					<template v-if="form.type !== 25">
+						<view class="rework_qd_item" @click="productionShow = true">
+							<text>鐢熶骇宸ュ簭</text>
+							<view class="rework_qd_item_right">
+								<text :class="item.procedureName ? 'black' : ''">{{item.procedureName ? item.procedureName : '璇烽�夋嫨'}}</text>
+								<u-icon name="arrow-right"></u-icon>
+							</view>
+						</view>
+					</template>
+					<view class="rework_qd_item" @click="qualityShow = true">
+						<text><b>*</b>璐ㄩ噺灞炴��</text>
+						<view class="rework_qd_item_right">
+							<text :class="item.qualityTypeName ? 'black' : ''">{{item.qualityTypeName ? item.qualityTypeName : '璇烽�夋嫨'}}</text>
+							<u-icon name="arrow-right"></u-icon>
+						</view>
+					</view>
+					<view class="rework_qd_item">
+						<text>鎵规鍙�</text>
+						<view class="rework_qd_item_right">
+							<u--input placeholder="璇疯緭鍏�" inputAlign="right" :customStyle="{width: '230rpx'}" border="surround" v-model="item.batch"></u--input>
+						</view>
+					</view>
+					<view class="rework_qd_item">
+						<text><b>*</b>鍏ュ簱鏁伴噺<template v-if="item.unitName">({{ item.unitName }})</template></text>
+						<view class="rework_qd_item_right">
+							<u--input placeholder="0" inputAlign="right" :customStyle="{width: '230rpx'}" border="surround" v-model="item.num"></u--input>
+						</view>
+					</view>
+				</view>
+				<template #right>
+					<van-button style="height: 100%;" square type="danger" text="鍒犻櫎" @click="dele(index)" />
+				</template>
+			</van-swipe-cell>
+		</view>
+		<view class="rework_zw"></view>
+		<!-- 搴曢儴鎿嶄綔鎸夐挳 -->
+		<view class="rework_footer">
+			<button class="rework_footer_submit">鎻愪氦</button>
+		</view>
+		<u-toast ref="uToast"></u-toast>
+		<!-- 浠撳簱 -->
+		<Warehouse :show="warehouseShow" @close="close" @value="getValue" />
+		<!-- 鐗╂枡 -->
+		<Material :show="materialsShow" @close="close1" @value="getValue1" />
+		<!-- 璐т綅 -->
+		<location :show="locationShow" :list="locationList" @close="close3" @value="getValue3" />
+		<!-- 宸ュ簭 -->
+		<ProductionProcess :show="productionShow" :list="productionList" @close="close4" @value="getValue4" />
+		<!-- 鍗曟嵁绫诲瀷 -->
+		<u-picker :show="typeShow" keyName="name" :columns="typeList" @confirm="confirm" @cancel="typeClose"></u-picker>
+		<!-- 璐ㄩ噺灞炴�� -->
+		<u-picker :show="qualityShow" :columns="columns" @cancel="qualityShow = false" keyName="name" @confirm="onConfirm1"></u-picker>
+	</view>
+</template>
+
+<script>
+	import Warehouse from '../../components/Warehouse.vue'
+	import location from '../../components/location.vue'
+	import Material from '../../components/Material.vue'
+	import ProductionProcess from '../../components/ProductionProcess.vue'
+	export default {
+		components: { Warehouse, location, Material, ProductionProcess },
+		data() {
+			return {
+				i: 0,
+				form: {
+					warehouseName: '',
+					warehouseId: '',
+					type: '',
+					typeName: ''
+				},
+				locationList: [],
+				productionList: [],
+				columns: [
+					[
+						{ name: '鍚堟牸', id: '0' },
+						{ name: '涓嶈壇', id: '1' },
+						{ name: '鎶ュ簾', id: '2' }
+					]
+				],
+				list: [
+					{
+						batch: '',
+						locationId: '',
+						locationIdLabel: '',
+						locationName: '',
+						materialId: '',
+						materialName: '',
+						num: '',
+						hasBom: '',
+						procedureId: '',
+						procedureName: '',
+						qualityType: '',
+						qualityTypeName: '',
+						unitId: '',
+						unitName: ''
+					}
+				],
+				typeList: [[{name: '閲囪喘鍏ュ簱', id: 25}, {name: '搴撳瓨璋冩暣', id: 28}]],
+				warehouseShow: false,
+				typeShow: false,
+				locationShow: false,
+				materialsShow: false,
+				productionShow: false,
+				qualityShow: false
+			};
+		},
+		methods: {
+			// 璐ㄩ噺灞炴�х‘璁�
+			onConfirm1(value) {
+				this.form.typeName = value.name
+				this.form.type = value.id
+				if (value.id == 25) {
+					this.list.forEach(item => {
+						item.procedureId = ''
+						item.procedureName = ''
+					})
+				}
+				this.typeShow = false
+			},
+			// 閫夋嫨鐗╂枡
+			getValue1(item) {
+				this.list[this.i].materialName = item.mmodelUnionName
+				this.list[this.i].materialId = item.id
+				this.list[this.i].unitId = item.unitId
+				this.list[this.i].hasBom = item.hasBom
+				this.list[this.i].unitName = item.umodelName
+				// 鑾峰彇鐗╂枡涓嬪伐搴�
+				getListByMaterialId({
+					materialId: item.id
+				}).then(res => {
+					if (res.code === 200) {
+						productionList.value = res.data
+						this.list[this.i].procedureId = ''
+						this.list[this.i].procedureName = ''
+					}
+				})
+				materialsShow.value = false
+			},
+			// 鍏抽棴浠撳簱閫夋嫨寮规
+			close1() {
+				this.materialsShow = false
+			},
+			// 閫夋嫨璐т綅
+			getValue3(item) {
+				this.list[this.i].locationId = item.id
+				this.list[this.i].locationName = item.unionName
+				this.list[this.i].qualityType = ''
+				this.list[this.i].qualityTypeName = ''
+				this.list[this.i].locationIdLabel = item.label
+				if (item.label === 'APPLIANCE_ONTEST') {
+					this.list[this.i].qualityType = '0'
+					this.list[this.i].qualityTypeName = '鍚堟牸'
+				} else if (item.label === 'APPLIANCE_OFFTEST') {
+					this.list[this.i].qualityType = '1'
+					this.list[this.i].qualityTypeName = '涓嶈壇'
+				} else if (item.label === 'APPLIANCE_USELESS') {
+					this.list[this.i].qualityType = '2'
+					this.list[this.i].qualityTypeName = '鎶ュ簾'
+				}
+				this.locationShow = false
+			},
+			// 鍏抽棴璐т綅閫夋嫨寮规
+			close3() {
+				this.locationShow = false
+			},
+			// 纭鍗曟嵁绫诲瀷
+			confirm(val) {
+				this.form.type = val.value[0].id
+				this.form.typeName = val.value[0].name
+				this.typeShow = false
+			},
+			// 浠撳簱纭
+			getValue(val) {
+				this.form.warehouseName = val.name
+				this.form.warehouseId = val.id
+				this.warehouseShow = false
+			},
+			typeClose() {
+				this.typeShow = false
+			},
+			close() {
+				this.warehouseShow = false
+			},
+			// 娣诲姞鏄庣粏
+			addItem() {
+				if (!this.form.warehouseId) return this.$refs.uToast.show({ type: 'default', message: "璇烽�夋嫨鍏ュ簱浠撳簱" })
+				this.list.push({
+					batch: '',
+					locationId: this.list[this.list.length - 1].locationId,
+					locationName: this.list[this.list.length - 1].locationName,
+					locationIdLabel: this.list[this.list.length - 1].locationIdLabel,
+					materialId: '',
+					materialName: '',
+					num: '',
+					hasBom: '',
+					procedureId: '',
+					procedureName: '',
+					qualityType: this.list[this.list.length - 1].qualityType,
+					qualityTypeName: this.list[this.list.length - 1].qualityTypeName,
+					unitId: '',
+					unitName: ''
+				})
+			},
+			// 鍒犻櫎
+			dele(index) {
+				if (this.list.length === 1) {
+					this.$refs.uToast.show({ type: 'default', message: "鑷冲皯淇濈暀涓�鏉$墿娴佹竻鍗曚俊鎭�" })
+					return
+				}
+				this.list.splice(index, 1)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.rework {
+		width: 100%;
+		min-height: 100vh;
+		background-color: #F7F7F7;
+		.rework_list {
+			display: flex;
+			flex-direction: column;
+			background: #ffffff;
+			padding: 0 30rpx;
+			box-sizing: border-box;
+			.rework_list_item {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				height: 98rpx;
+				border-bottom: 1rrpx solid #E5E5E5;
+				&:last-child {
+					border: none;
+				}
+				text {
+					font-size: 30rpx;
+					font-weight: 400;
+					color: #222222;
+					flex-shrink: 0;
+					b {
+						font-size: 30rpx;
+						color: red;
+						margin-right: 5rpx;
+					}
+				}
+				.rework_list_item_right {
+					flex: 1;
+					display: flex;
+					align-items: center;
+					justify-content: flex-end;
+					text {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #999999;
+					}
+					.black {
+						color: black !important;
+					}
+					input {
+						width: 230rpx;
+						height: 60rpx;
+						font-size: 28rpx;
+						border-radius: 8rpx;
+						padding: 0 30rpx;
+						text-align: right;
+						box-sizing: border-box;
+						border: 1rpx solid #CCCCCC;
+					}
+					input::-webkit-input-placeholder {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #B2B2B2;
+					}
+				}
+			}
+		}
+		.rework_qd {
+			margin-top: 40rpx;
+			width: 100%;
+			background: #F7F7F7;
+			.rework_qd_title {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				padding: 0 30rpx 30rpx 30rpx;
+				.rework_qd_title_left {
+					display: flex;
+					align-items: center;
+					text {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #222222;
+					}
+					.x {
+						width: 8rpx;
+						height: 30rpx;
+						background: #4275FC;
+						border-radius: 2rpx;
+						margin-right: 12rpx;
+					}
+				}
+				.rework_qd_title_right {
+					display: flex;
+					align-items: center;
+					image {
+						width: 28rpx;
+						height: 28rpx;
+						margin-right: 12rpx;
+					}
+					text {
+						font-size: 28rpx;
+						font-family: PingFangSC-Regular, PingFang SC;
+						font-weight: 400;
+						color: #4275FC;
+					}
+				}
+			}
+			.rework_qd_list {
+				display: flex;
+				flex-direction: column;
+				padding: 0 30rpx;
+				background: #FFFFFF;
+				box-sizing: border-box;
+				margin-bottom: 30rpx;
+				.rework_qd_item {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					height: 98rpx;
+					border-bottom: 1rpx solid #E5E5E5;
+					&:last-child {
+						border: none;
+					}
+					text {
+						font-size: 30rpx;
+						font-weight: 400;
+						color: #222222;
+						flex-shrink: 0;
+						b {
+							font-size: 30rpx;
+							color: red;
+							margin-right: 5rpx;
+						}
+					}
+					.rework_qd_item_right {
+						display: flex;
+						align-items: center;
+						text {
+							font-size: 28rpx;
+							font-weight: 400;
+							color: #999999;
+						}
+						.black {
+							color: black !important;
+						}
+						input {
+							width: 230rpx;
+							height: 60rpx;
+							font-size: 28rpx;
+							border-radius: 8rpx;
+							padding: 0 30rpx;
+							text-align: right;
+							box-sizing: border-box;
+							border: 1rpx solid #CCCCCC;
+						}
+						input::-webkit-input-placeholder { /* WebKit browsers */
+							font-size: 28rpx;
+							font-weight: 400;
+							color: #B2B2B2;
+						}
+					}
+				}
+			}
+		}
+		.rework_zw {
+			height: 168rpx;
+		}
+		.rework_footer {
+			width: calc(100% - 60rpx);
+			position: fixed;
+			bottom: 0;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			padding: 0 30rpx 68rpx 30rpx;
+			.rework_footer_add {
+				flex: 1;
+				height: 88rpx;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: $nav-color;
+				background: #FFFFFF;
+				box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.0800);
+				border-radius: 8rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+			}
+			.rework_footer_submit {
+				flex: 1;
+				height: 88rpx;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #ffffff;
+				background: $nav-color;
+				box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.0800);
+				border-radius: 8rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				border: none;
+			}
+		}
+	}
+</style>
diff --git a/minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue b/minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue
new file mode 100644
index 0000000..3ac271f
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue
@@ -0,0 +1,324 @@
+<template>
+	<view class="tl">
+		<workOrderInfo :orederMessage="{proUserList:[]}" />
+		<div class="tl_title">
+			<div class="tl_title_left">
+				<div class="tl_title_left_x"></div>
+				<span>鎶曟枡淇℃伅</span>
+				<!-- <span>{{total == 0 ? '' : total}}{{formList[formList.length - 1].dw ? formList[formList.length - 1].dw : ''}}</span> -->
+				<!-- <span>{{total == 0 ? '' : total}}{{formList[formList.length - 1].dw ? formList[formList.length - 1].dw : ''}}</span> -->
+			</div>
+			<div class="tl_title_right" @click="add">
+				<image src="../../static/gongdan_ic_shoudong@2x.png" class="add-img" mode=""></image>
+				<span>澧炲姞鎶曟枡</span>
+			</div>
+		</div>
+		<u-swipe-action>
+			<u-swipe-action-item v-for="(item, index) in materialList" :key="index" :options="options"
+				@click="deleItem(index)">
+				<div class="tl_list">
+					<div class="tl_list_item" @click="open1(index)">
+						<div class="tl_list_item_label">閫夋嫨鐗╂枡</div>
+						<div class="tl_list_item_go" v-if="!item.materialName">
+							<span>鐐瑰嚮璺宠浆鍒扮墿鏂欏垪琛�</span>
+							<u-icon name="arrow-right"></u-icon>
+						</div>
+						<div class="tl_list_item_wl" v-else>
+							<div class="tl_list_item_wl_top">
+								<span>{{ item.materialName }}</span>
+								<span>&nbsp;|&nbsp;{{ item.materialCode }}</span>
+							</div>
+							<div class="tl_list_item_wl_bottom">
+								<span class="green" v-if="item.qualityType == 0">鍚堟牸</span>
+								<span class="yellow" v-else-if="item.qualityType == 1">涓嶈壇</span>
+								<span class="red" v-else-if="item.qualityType == 2">鎶ュ簾</span>
+								<span>{{ item.procedureName ? `&nbsp;/&nbsp;${item.procedureName}` : '&nbsp;/&nbsp;-' }}</span>
+								<span>{{ item.locationName ? `&nbsp;/&nbsp;${item.locationName}` : '&nbsp;/&nbsp;-' }}</span>
+								<span>{{ item.batch ? `&nbsp;/&nbsp;${item.batch}` : '&nbsp;/&nbsp;-' }}</span>
+							</div>
+						</div>
+					</div>
+					<div class="tl_list_item">
+						<div class="tl_list_item_label">鎶曟枡鏁伴噺{{ item.unitAttribute }}</div>
+						<div class="tl_list_item_go">
+							<input type="text" @blur="changeNumber(item.num, index, item.unitAttribute)"
+								v-model="item.num" />
+						</div>
+					</div>
+				</div>
+			</u-swipe-action-item>
+		</u-swipe-action>
+		<SelectMaterial ref="selectMaterial" @selectAction="getValue"/>
+		<SelectMultipleMaterial ref="selectMultipleMaterial"/>
+	</view>
+</template>
+
+<script>
+	import workOrderInfo from '@/components/workOrderInfo.vue'
+	import SelectMaterial from '@/components/selectMaterial.vue'
+	import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
+	
+	import {
+		positiveInteger,
+		number
+	} from '@/common/config'
+	export default {
+		components: {
+			workOrderInfo,
+			SelectMaterial,
+			SelectMultipleMaterial
+		},
+		data() {
+			return {
+				// formList: [{
+				// 	id: Date.now(),
+				// 	toolingTypeId: '', // 宸ヨ绫诲瀷
+				// 	toolingTypeName: '', // 宸ヨ绫诲瀷鍚嶇О
+				// 	workClothesId: '', // 宸ヨ
+				// 	workClothesName: '', // 宸ヨ鍚嶇О
+				// 	num: '', // 鏁伴噺
+				// 	attribute: '', // 宸ヨ灞炴��
+				// 	attributeType: '', // 宸ヨ灞炴�х被鍨�
+				// 	dw: '', // 鐗╂枡鍗曚綅
+				// 	unitAttribute: ''
+				// }],
+				materialList: [{
+					id: '',
+					materialName: '',
+					materialCode: '',
+					qualityType: '',
+					procedureName: '',
+					locationName: '',
+					batch: '',
+					num: '',
+					unitAttribute: ''
+				}],
+				options: [{
+					text: '鍒犻櫎',
+					style: {
+						backgroundColor: 'red',
+					}
+				}],
+			};
+		},
+		methods: {
+			open1(index) {
+				// this.$refs.selectMaterial.open({})
+				this.$refs.selectMultipleMaterial.open({})
+			},
+			deleItem(index) {
+				if (this.materialList.length === 1) {
+					uni.$u.toast('鑷冲皯淇濈暀涓�鏉℃姇鏂欎俊鎭�')
+					return
+				}
+				this.materialList.splice(index, 1)
+			},
+			add() {
+				this.total += 1
+				this.materialList.unshift({
+					id: '',
+					materialName: '',
+					materialCode: '',
+					qualityType: '',
+					procedureName: '',
+					locationName: '',
+					batch: '',
+					num: '',
+					unitAttribute: ''
+				})
+			},
+			changeNumber(num, index, unitAttribute) {
+				if (unitAttribute === 0 && num !== '') {
+					if (!positiveInteger.test(num)) {
+						uni.$u.toast({
+							message: '鍙兘杈撳叆姝f暣鏁�'
+						})
+						this.materialList[index].num = ''
+					}
+				} else if (unitAttribute === 1 && num !== '') {
+					if (!number.test(num)) {
+						uni.$u.toast({
+							message: '鍙兘杈撳叆姝f暣鏁版垨灏忔暟锛堟渶澶氬洓浣嶏級'
+						})
+						this.materialList[index].num = ''
+					}
+				}
+				if (num <= 0) {
+					uni.$u.toast({
+						message: '鎶曟枡鏁伴噺涓嶈兘灏忎簬绛変簬0'
+					})
+					this.materialList[index].num = ''
+				}
+			},
+			getValue(item) {
+				console.log(item);
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.tl {
+		width: 100%;
+		height: 100%;
+		position: absolute;
+		background: #F7F7F7;
+
+		.tl_title {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			padding: 30rpx;
+
+			.tl_title_left {
+				display: flex;
+				align-items: center;
+
+				.tl_title_left_x {
+					width: 8rpx;
+					height: 30rpx;
+					background: $nav-color;
+					border-radius: 2rpx;
+					margin-right: 12rpx;
+				}
+
+				span {
+					font-size: 32rpx;
+					font-weight: 500;
+					color: #222222;
+
+					&:nth-child(3) {
+						font-size: 28rpx;
+						font-weight: 500;
+						color: $nav-color;
+						margin-left: 10rpx;
+					}
+				}
+			}
+
+			.tl_title_right {
+				display: flex;
+				align-items: center;
+
+				.add-img {
+					width: 28rpx;
+					height: 28rpx;
+					margin-right: 12rpx;
+				}
+
+				span {
+					font-size: 28rpx;
+					font-weight: 400;
+					// color: $nav-color;
+				}
+			}
+		}
+
+		.tl_list {
+			display: flex;
+			flex-direction: column;
+			background: white;
+			padding: 0 30rpx;
+			margin-bottom: 20rpx;
+
+			.tl_list_item {
+				min-height: 98rpx;
+				// padding: 20rpx 0;
+				box-sizing: border-box;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				border-bottom: 1rpx solid #E5E5E5;
+
+				&:last-child {
+					border: none !important;
+				}
+
+				.tl_list_item_label {
+					font-size: 30rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+
+				.tl_list_item_wl {
+					display: flex;
+					flex-direction: column;
+					align-items: end;
+
+					.tl_list_item_wl_top {
+						display: flex;
+						align-items: center;
+
+						span {
+							font-size: 28rpx;
+							color: #222222;
+						}
+					}
+
+					.tl_list_item_wl_bottom {
+						display: flex;
+						align-items: center;
+
+						span {
+							font-size: 28rpx;
+							color: #222222;
+						}
+					}
+				}
+
+				.tl_list_item_go {
+					display: flex;
+					align-items: center;
+
+					input {
+						text-align: right;
+						width: 180rpx;
+						height: 60rpx;
+						border-radius: 8rpx;
+						border: 1rpx solid #E5E5E5;
+						padding: 0 30rpx;
+						box-sizing: border-box;
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #333333;
+					}
+
+					span {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #999999;
+						margin-right: 10rpx;
+					}
+				}
+			}
+		}
+
+		.tl_zw {
+			height: 160rpx;
+		}
+
+		.tl_footer {
+			width: 100%;
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			padding: 0 30rpx 68rpx 30rpx;
+			box-sizing: border-box;
+
+			.tl_footer_submit {
+				width: 690rpx;
+				height: 88rpx;
+				border: none;
+				background: #4275FC;
+				box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+				border-radius: 8rpx;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+			}
+		}
+	}
+</style>
diff --git a/minipro_standard/pages_adjust/pages/newOutbound/newOutbound.vue b/minipro_standard/pages_adjust/pages/newOutbound/newOutbound.vue
new file mode 100644
index 0000000..265dce2
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/newOutbound/newOutbound.vue
@@ -0,0 +1,380 @@
+<template>
+	<view class="rework">
+		<view class="rework_list">
+			<view class="rework_list_item" @click="typeShow = true">
+				<text>鍗曟嵁绫诲瀷<text style="color: #DE5243;">*</text></text>
+				<view class="rework_list_item_right">
+					<text :class="form.typeName ? 'black' : ''">{{form.typeName ? form.typeName : '璇烽�夋嫨'}}</text>
+					<u-icon name="arrow-right" color="#999999"></u-icon>
+				</view>
+			</view>
+			<view class="rework_list_item" @click="warehouseShow = true">
+				<text>鍑哄簱浠撳簱<text style="color: #DE5243;">*</text></text>
+				<view class="rework_list_item_right">
+					<text :class="form.warehouseName ? 'black' : ''">{{form.warehouseName ? form.warehouseName : '璇烽�夋嫨'}}</text>
+					<u-icon name="arrow-right" color="#999999"></u-icon>
+				</view>
+			</view>
+		</view>
+		<view class="rework_qd">
+			<view class="rework_qd_title">
+				<view class="rework_qd_title_left">
+					<view class="x"></view>
+					<!-- ${list.length} -->
+					<text>{{`鍑哄簱鐗╂枡娓呭崟`}}</text>
+				</view>
+				<!-- <view class="rework_qd_title_right" @click="openMs">
+					<image src="@/static/gongdan_ic_shoudong@2x.png" mode="widthFix" />
+					<text>澧炲姞鍑哄簱</text>
+				</view> -->
+			</view>
+			<van-swipe-cell v-for="(item, index) in list" :key="index">
+				<view class="rework_qd_item">
+					<image class="rework_qd_item_dele" @click="dele(index)" src="@/static/chuku_ic_delete@2x.png" mode="widthFix" />
+					<view class="rework_qd_item_wl">
+						<text>{{ item.materialName }} | {{ item.materialCode }}</text>
+					</view>
+					<view class="rework_qd_item_cate">
+						<text class="green" v-if="item.qualityType === '0'">鍚堟牸</text>
+						<text class="yellow" v-if="item.qualityType === '1'">涓嶈壇</text>
+						<text class="red" v-if="item.qualityType === '2'">鎶ュ簾</text>
+						<text>&nbsp;|&nbsp;{{ item.procedureName || '-' }}&nbsp;|&nbsp;</text>
+						<text>{{ item.batch || '-' }}</text>
+					</view>
+					<view class="rework_qd_item_hw">
+						<text>鍑哄簱璐т綅锛歿{ item.locationName }}</text>
+						<view class="rework_qd_item_hw_right">
+							<text>鏁伴噺锛�</text>
+							<u--input :customStyle="{width: '180rpx'}" placeholder="0" border="surround" type="number" v-model="item.num" @input="changeNum(item)"></u--input>
+							<text>{{ item.unitName }}</text>
+						</view>
+					</view>
+				</view>
+			</van-swipe-cell>
+		</view>
+		<view class="rework_zw"></view>
+		<view class="rework_footer">
+			<button class="rework_footer_add" @click="openMs">閫夋嫨鐗╂枡</button>
+			<button class="rework_footer_submit" @click="onConfirm">鎻愪氦</button>
+		</view>
+		<!-- 閫夋嫨浠撳簱 -->
+		<Warehouse :show="warehouseShow" @close="close" @value="getValue" />
+		<!-- 閫夋嫨鐗╂枡 -->
+		<SelectMultipleMaterial ref="SelectMultipleMaterial" />
+		<!-- 鍗曟嵁绫诲瀷 -->
+		<u-picker :show="typeShow" :columns="columns" @cancel="typeShow = false" @confirm="onConfirm1" keyName="name"></u-picker>
+	</view>
+</template>
+
+<script>
+	import Warehouse from '../../components/Warehouse.vue'
+	import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
+	export default {
+		components: { Warehouse, SelectMultipleMaterial },
+		data() {
+			return {
+				form: {
+					warehouseName: '',
+					warehouseId: '',
+					type: '',
+					typeName: ''
+				},
+				columns: [
+					[
+						{ name: '閿�鍞嚭搴�', id: 18 },
+						{ name: '搴撳瓨璋冩暣', id: 28 },
+						{ name: '浠撳簱鎶ュ簾', id: 21 }
+					]
+				],
+				typeShow: false,
+				warehouseShow: false,
+				list: []
+			};
+		},
+		methods: {
+			changeNum(obj) {
+				if (obj.num < 0) {
+					obj.num = ''
+					return uni.showToast({ title: '鍑哄簱鐗╂枡鏁伴噺蹇呴』澶т簬0', icon: 'none', duration: 2000 });
+				}
+				if (obj.num > obj.total) {
+					obj.num = ''
+					return uni.showToast({ title: '鍑哄簱鐗╂枡鏁伴噺涓嶈兘澶т簬搴撳瓨鏁帮紒', icon: 'none', duration: 2000 });
+				}
+			},
+			// 閫夋嫨浠撳簱鍥炶皟
+			getValue(item) {
+				this.form.warehouseName = item.name
+				this.form.warehouseId = item.id || 1
+				this.list = []
+				this.warehouseShow = false
+			},
+			// 鍗曟嵁绫诲瀷纭
+			onConfirm1(value) {
+				this.form.typeName = value.value[0].name
+				this.form.type = value.value[0].id
+				this.typeShow = false
+			},
+			// 鍏抽棴浠撳簱閫夋嫨寮规
+			close() {
+				this.warehouseShow = false
+			},
+			// 鍒犻櫎
+			dele(index) {
+				if (this.list.length === 1) {
+					uni.showToast({ title: '鑷冲皯淇濈暀涓�鏉$墿娴佹竻鍗曚俊鎭紒', icon: 'none', duration: 2000 });
+					return
+				}
+				this.list.splice(index, 1)
+			},
+			// 鎵撳紑閫夋嫨鐗╂枡
+			openMs() {
+				if (!this.form.warehouseId) return uni.showToast({ title: '璇峰厛閫夋嫨鍑哄簱浠撳簱', icon: 'none', duration: 2000 });
+				this.$refs.SelectMultipleMaterial.open({})
+			},
+			// 鑾峰彇褰撳ぉ骞存湀鏃�
+			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}`
+			},
+			// 鎻愪氦
+			onConfirm() {
+				if (!this.form.type) return uni.showToast({ title: '璇烽�夋嫨鍗曟嵁绫诲瀷', icon: 'none', duration: 2000 });
+				if (!this.form.warehouseId) return uni.showToast({ title: '璇烽�夋嫨鍑哄簱浠撳簱', icon: 'none', duration: 2000 });
+				if (this.list.length === 0) return uni.showToast({ title: '鑷冲皯閫夋嫨涓�鏉″嚭搴撶墿鏂�', icon: 'none', duration: 2000 });
+				for (let i = 0; i < this.list.length; i++) {
+					if (!this.list[i].num || this.list[i].num == '' || this.list[i].num <= 0) {
+						return uni.showToast({ title: `绗�${i + 1}涓嚭搴撶墿鏂欐暟閲忓繀椤诲ぇ浜�0`, icon: 'none', duration: 2000 });
+					}
+					if (this.list[i].num > this.list[i].total) {
+						return uni.showToast({ title: `绗�${i + 1}涓墿鏂欐暟閲忎笉鑳藉ぇ浜庡簱瀛橀噺锛乣, icon: 'none', duration: 2000 });
+					}
+				}
+				createForStandard({
+					billType: this.form.type,
+					planDate: this.getDay(),
+					origin: 0,
+					type: 0,
+					warehouseId: this.form.warehouseId,
+					woutBoundDetailBeans: this.list
+				}).then(res => {
+					if (res.code === 200) {
+						uni.showToast({ title: '鍑哄簱鎴愬姛', icon: 'none', duration: 2000 });
+						setTimeout(() => {
+							uni.navigateBack({ delta: 1 });
+						}, 2000)
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.rework {
+		width: 100%;
+		.rework_list {
+			display: flex;
+			flex-direction: column;
+			background: white;
+			padding: 0 30rpx;
+			box-sizing: border-box;
+			.rework_list_item {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				height: 98rpx;
+				border-bottom: 1rpx solid #E5E5E5;
+				&:last-child {
+					border: none;
+				}
+				text {
+					font-size: 30rpx;
+					font-weight: 400;
+					color: #222222;
+					flex-shrink: 0;
+					b {
+						font-size: 30rpx;
+						color: red;
+						margin-right: 5rpx;
+					}
+				}
+				.rework_list_item_right {
+					display: flex;
+					align-items: center;
+					text {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #999999;
+					}
+					.black {
+						color: black !important;
+					}
+					input {
+						width: 230rpx;
+						font-size: 28rpx;
+						border: none;
+					}
+					input::-webkit-input-placeholder { /* WebKit browsers */
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #B2B2B2;
+					}
+				}
+			}
+		}
+		.rework_qd {
+			margin-top: 40rpx;
+			.rework_qd_title {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				padding: 0 30rpx 30rpx 30rpx;
+				.rework_qd_title_left {
+					display: flex;
+					align-items: center;
+					text {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #222222;
+					}
+					.x {
+						width: 8rpx;
+						height: 30rpx;
+						background: #4275FC;
+						border-radius: 2rpx;
+						margin-right: 12rpx;
+					}
+				}
+				.rework_qd_title_right {
+					display: flex;
+					align-items: center;
+					image {
+						width: 28rpx;
+						height: 28rpx;
+						margin-right: 12rpx;
+					}
+					text {
+						font-size: 28rpx;
+						font-family: PingFangSC-Regular, PingFang SC;
+						font-weight: 400;
+						color: #4275FC;
+					}
+				}
+			}
+			.rework_qd_item {
+				background: #ffffff;
+				padding: 30rpx;
+				display: flex;
+				flex-direction: column;
+				margin-bottom: 30rpx;
+				position: relative;
+				.rework_qd_item_dele {
+					position: absolute;
+					right: 0;
+					top: 0;
+					width: 48rpx;
+					height: 48rpx;
+				}
+				.rework_qd_item_wl {
+					text {
+						font-size: 30rpx;
+						font-family: PingFangSC-Medium, PingFang SC;
+						font-weight: 500;
+						color: #222222;
+					}
+				}
+				.rework_qd_item_cate {
+					margin-top: 18rpx;
+					text {
+						font-size: 24rpx;
+						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: 24rpx;
+					text {
+						font-size: 26rpx;
+						font-family: PingFangSC-Regular, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+					}
+					.rework_qd_item_hw_right {
+						display: flex;
+						align-items: center;
+						text {
+							font-size: 26rpx;
+							font-family: PingFangSC-Regular, PingFang SC;
+							font-weight: 400;
+							color: #666666;
+						}
+						input {
+							width: 180rpx;
+							height: 60rpx;
+							font-size: 28rpx;
+							font-family: PingFangSC-Regular, PingFang SC;
+							font-weight: 400;
+							color: #333333;
+							background: #FFFFFF;
+							border-radius: 8rpx;
+							border: 1rpx solid #CCCCCC;
+							margin: 0 20rpx;
+							padding: 0 30rpx;
+							box-sizing: border-box;
+							text-align: right;
+						}
+					}
+				}
+			}
+		}
+		.rework_zw {
+			height: 168rpx;
+		}
+		.rework_footer {
+			width: calc(100% - 60rpx);
+			position: fixed;
+			bottom: 0;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			padding: 0 30rpx 68rpx 30rpx;
+			.rework_footer_add {
+				flex: 1;
+				height: 88rpx;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: $nav-color;
+				background: #FFFFFF;
+				box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.0800);
+				border-radius: 8rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+			}
+			.rework_footer_submit {
+				flex: 1;
+				height: 88rpx;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #ffffff;
+				background: $nav-color;
+				box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.0800);
+				border-radius: 8rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				border: none;
+				margin-left: 22rpx;
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue b/minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue
new file mode 100644
index 0000000..8899d5c
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue
@@ -0,0 +1,419 @@
+<template>
+	<view class="zk">
+		<view class="zk_list">
+			<view class="zk_list_item" @click="open('d')">
+				<text>鍗曟嵁绫诲瀷</text>
+				<view class="zk_list_item_n">
+					<text :style="data.typeName ? 'color: black;' : ''">{{data.typeName ? data.typeName : '璇烽�夋嫨'}}</text>
+					<u-icon name="arrow-right" color="#999999" size="20"></u-icon>
+				</view>
+			</view>
+			<view class="zk_list_item" @click="open('c')">
+				<text>鍑哄簱浠撳簱</text>
+				<view class="zk_list_item_n">
+					<text :style="data.exWarehouse ? 'color: black;' : ''">{{data.exWarehouse ? data.exWarehouse : '璇烽�夋嫨'}}</text>
+					<u-icon name="arrow-right" color="#999999" size="20"></u-icon>
+				</view>
+			</view>
+			<view class="zk_list_item" @click="open('r')">
+				<text>鍏ュ簱浠撳簱</text>
+				<view class="zk_list_item_n">
+					<text :style="data.warehousingWarehouseName ? 'color: black;' : ''">{{data.warehousingWarehouseName ? data.warehousingWarehouseName : '璇烽�夋嫨'}}</text>
+					<u-icon name="arrow-right" color="#999999" size="20"></u-icon>
+				</view>
+			</view>
+		</view>
+		<view class="zk_title">
+			<view class="zk_title_i"></view>
+			<text>杞嚭鐗╂枡鍒楄〃</text>
+		</view>
+		<view class="zk_wl">
+			<template v-if="view.MaterialList.length > 0">
+				<van-swipe-cell v-for="(item, i) in view.MaterialList" :key="i">
+					<view class="zk_wl_item">
+						<text>{{item.materialName}}锝渰{item.materialCode}}</text>
+						<text>
+							<text class="green" v-if="item.qualityType === '0'">鍚堟牸</text>
+							<text class="yellow" v-if="item.qualityType === '1'">涓嶈壇</text>
+							<text class="red" v-if="item.qualityType === '2'">鎶ュ簾</text>
+							| <text>{{item.procedureName ? item.procedureName : '-'}} | </text>
+							<text>{{item.batch ? item.batch : '-'}}</text>
+						</text>
+						<text>璐т綅锛歿{item.locationName}}</text>
+						<view class="zk_wl_item_num">
+							<text>杞嚭鏁伴噺({{item.unitName}})锛�</text>
+							<input type="number" v-model="item.total" placeholder="0" />
+						</view>
+					</view>
+					<template #right>
+						<van-button square type="danger" style="height: 100%;" text="鍒犻櫎" @click="dele(i)" />
+					</template>
+				</van-swipe-cell>
+			</template>
+			<view class="zk_wl_w" v-else>
+				<text>鏆傛棤鏁版嵁</text>
+			</view>
+		</view>
+		<view class="zk_z"></view>
+		<view class="zk_footer">
+			<view class="zk_footer_wl" @click="open('w')">閫夋嫨鐗╂枡</view>
+			<view style="width: 20rpx"></view>
+			<view class="zk_footer_submit" @click="submit">鎻愪氦</view>
+		</view>
+		<!-- 閫夋嫨浠撳簱 -->
+		<Warehouse :show="view.Warehouse" @close="view.Warehouse = false" @value="getValue" />
+		<!-- 閫夋嫨鐗╂枡 -->
+		<SelectMultipleMaterial ref="SelectMultipleMaterial" />
+		<!--  鍗曟嵁绫诲瀷  -->
+		<u-picker :show="view.type" :columns="view.documentTypeDate" keyName="name" @cancel="onCancel" @confirm="onConfirm"></u-picker>
+	</view>
+</template>
+
+<script>
+	import { setTime } from '@/util/utils.js'
+	import { documentType } from '@/util/constData.js'
+	import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
+	import Warehouse from '../../components/Warehouse.vue'
+	export default {
+		components: {
+			SelectMultipleMaterial,
+			Warehouse
+		},
+		data() {
+			return {
+				data: {
+					type: '',
+					outUserId: '',
+					inUserId: '',
+					typeName: '',
+					exWarehouse: '',
+					exWarehouseId: '',
+					warehousingWarehouse: '',
+					warehousingWarehouseName: ''
+				},
+				view: {
+					type: false,
+					Warehouse: false,
+					Material: false,
+					status: '',
+					MaterialList: [],
+					documentTypeDate: [
+						[
+						    { name: '杞﹂棿棰嗘枡', id: 1 },
+						    { name: '杞﹂棿杞簱', id: 5 },
+						    { name: '澶栧崗棰嗘枡杞簱', id: 6 },
+						    { name: '澶栧崗瀹屽伐杞簱', id: 7 },
+						    { name: '浜у搧鍏ュ簱', id: 8 },
+						    { name: '浜у搧杞簱', id: 9 },
+						    { name: '璁╂鏀捐鍏ュ簱', id: 10 },
+						    { name: '璁╂鏀捐杞簱', id: 11 },
+						    { name: '瀹㈣繑杩斾慨棰嗘枡', id: 12 },
+						    { name: '瀹㈣繑杩斾慨鍏ュ簱', id: 13 },
+						    { name: '璺ㄧ粍缁囪浆搴�', id: 14 },
+						    { name: '瀹㈤��杩斾慨棰嗘枡', id: 16 },
+						    { name: '瀹㈤��杩斾慨鍏ュ簱', id: 17 },
+						    { name: '搴熷搧鍏ュ簱', id: 30 }
+						]
+					],
+					warehouseQualityType: '',
+					customFieldName: {
+						text: 'name'
+					}
+				}
+			};
+		},
+		methods: {
+			// 浠撳簱鍥炶皟
+			getValue(val) {
+				if (this.view.status === 'c') {
+					this.data.exWarehouse = val.name
+					this.data.exWarehouseId = val.id || 1
+					this.data.outUserId = val.managerId || 3
+				} else if (this.view.status === 'r') {
+					this.data.warehousingWarehouseName = val.name
+					this.data.warehousingWarehouse = val.id || 2
+					this.data.inUserId = val.managerId || 4
+					this.view.warehouseQualityType = val.tmodel.label
+				}
+				view.Warehouse = false
+			},
+			// 纭鍗曟嵁绫诲瀷
+			onConfirm(val) {
+				this.data.type = val.value[0].id
+				this.data.typeName = val.value[0].name
+				this.view.type = false
+			},
+			onCancel() {
+				this.view.type = false
+			},
+			// 鍒涘缓杞簱鍗�
+			submit() {
+				if (!this.data.type) return uni.showToast({ title: '鍗曟嵁绫诲瀷涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				if (!this.data.exWarehouse) return uni.showToast({ title: '鍑哄簱浠撳簱涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				if (!this.data.warehousingWarehouse) return uni.showToast({ title: '鍏ュ簱浠撳簱涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				if (this.view.MaterialList.length === 0) return uni.showToast({ title: '杞嚭鐗╂枡涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				for (let i = 0; i < this.view.MaterialList.length; i++) {
+					if (!this.view.MaterialList[i].total || this.view.MaterialList[i].total <= 0) {
+						uni.showToast({ title: '杞嚭鏁伴噺蹇呴』澶т簬0', icon: 'none', duration: 2000 });
+						return
+					}
+					if (Number(this.view.MaterialList[i].total) > Number(this.view.MaterialList[i].num)) {
+						uni.showToast({ title: '杞簱鐨勭墿鏂欐暟閲忎笉鑳藉ぇ浜庡簱瀛橀噺锛�', icon: 'none', duration: 2000 });
+						return
+					}
+				}
+				let time = setTime(new Date(), '-')
+				let wtransferDetailBeanList = []
+				this.view.MaterialList.forEach((element) => {
+					wtransferDetailBeanList.push({
+						batch: element.batch,
+						materialId: element.materialId,
+						procedureId: element.procedureId,
+						procedureName: element.procedureName,
+						qualityType: element.qualityType,
+						unitId: element.unitId,
+						outPlanNum: element.total,
+						proceduresId: element.procedureId,
+						inLocationId: null,
+						outLocationId: element.locationId,
+						inWarehouseId: data.exWarehouseId,
+						outWarehouseId: data.warehousingWarehouse
+					})
+				})
+				createZK({
+					type: this.data.type,
+					outPlandate: time,
+					inPlandate: time,
+					origin: 0,
+					outUserId: this.data.outUserId,
+					inUserId: this.data.inUserId,
+					inWarehouseId: this.data.warehousingWarehouse,
+					outWarehouseId: this.data.exWarehouseId,
+					wtransferDetailBeanList
+				}).then(res => {
+					if (res.code === 200) {
+						uni.showToast({ title: '鍒涘缓鎴愬姛锛�', icon: 'none', duration: 2000 });
+						setTimeout(() => {
+							uni.navigateBack({ delta: 1 });
+						}, 2000)
+					}
+				})
+			},
+			// 鎵撳紑閫夋嫨寮规
+			open(type) {
+				if (type === 'd') {
+					this.view.type = true
+				} else if (type === 'c') {
+					this.view.status = 'c'
+					this.view.Warehouse = true
+				} else if (type === 'r') {
+					this.view.status = 'r'
+					this.view.Warehouse = true
+				} else if (type === 'w') {
+					if (this.data.exWarehouseId) {
+						if (this.data.warehousingWarehouseName) {
+							// let arr = []
+							// this.view.MaterialList.forEach(element => {
+							// 	arr.push(element.id)
+							// })
+							// const { selected } = Material.value
+							// Material.value.selected = arr
+							// view.Material = true
+							this.$refs.SelectMultipleMaterial.open({})
+						} else {
+							uni.showToast({ title: '璇峰厛閫夋嫨鍏ュ簱浠撳簱', icon: 'none', duration: 2000 });
+						}
+					} else {
+						uni.showToast({ title: '璇峰厛閫夋嫨鍑哄簱浠撳簱', icon: 'none', duration: 2000 });
+					}
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.zk {
+		position: absolute;
+		width: 100%;
+
+		.zk_list {
+			padding: 0 30rpx;
+			background: white;
+			margin-top: 20rpx;
+
+			.zk_list_item {
+				height: 98rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				border-bottom: 1rpx solid #E5E5E5;
+
+				&:last-child {
+					border: none !important;
+				}
+
+				text {
+					font-size: 30rpx;
+					font-weight: 400;
+					color: #222222;
+				}
+
+				.zk_list_item_n {
+					display: flex;
+					align-items: center;
+
+					text {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #999999;
+						margin-right: 10rpx;
+					}
+				}
+			}
+		}
+
+		.zk_title {
+			padding: 40rpx 30rpx 30rpx 30rpx;
+			display: flex;
+			align-items: center;
+
+			.zk_title_i {
+				width: 8rpx;
+				height: 30rpx;
+				background: #4275FC;
+				border-radius: 2rpx;
+				margin-right: 12rpx;
+			}
+
+			text {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #222222;
+			}
+		}
+
+		.zk_wl {
+			background: white;
+
+			.zk_wl_w {
+				width: 100%;
+				height: 200rpx;
+				background: white;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				font-size: 26rpx;
+				color: black;
+			}
+
+			.zk_wl_item {
+				display: flex;
+				flex-direction: column;
+				padding: 30rpx;
+				border-bottom: 1rpx solid #e2e2e2;
+
+				.zk_wl_item_num {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					margin-top: 30rpx;
+
+					text {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #222222;
+						margin: 0 !important;
+					}
+
+					input {
+						width: 180rpx;
+						height: 60rpx;
+						background: #FFFFFF;
+						border-radius: 8rpx;
+						border: 1rpx solid #CCCCCC;
+						padding: 0 30rpx;
+						font-size: 28rpx;
+					}
+
+					input::-webkit-input-placeholder {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #999999;
+					}
+				}
+
+				text {
+					&:nth-child(1) {
+						font-size: 30rpx;
+						font-weight: 500;
+						color: #222222;
+						margin-bottom: 24rpx;
+					}
+
+					&:nth-child(2) {
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #666666;
+						margin-bottom: 30rpx;
+
+						text {
+							font-size: 24rpx;
+						}
+					}
+
+					&:nth-child(3) {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #333333;
+					}
+				}
+			}
+		}
+
+		.zk_z {
+			height: 168rpx;
+		}
+
+		.zk_footer {
+			width: 100%;
+			box-sizing: border-box;
+			padding: 0 30rpx;
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			padding-bottom: 68rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+
+			.zk_footer_wl {
+				flex: 1;
+				height: 88rpx;
+				background: #FFFFFF;
+				box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+				border-radius: 8rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: $nav-color;
+			}
+
+			.zk_footer_submit {
+				flex: 1;
+				height: 88rpx;
+				background: $nav-color;
+				box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+				border-radius: 8rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/outboundDetails/outboundDetails.vue b/minipro_standard/pages_adjust/pages/outboundDetails/outboundDetails.vue
new file mode 100644
index 0000000..100f272
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/outboundDetails/outboundDetails.vue
@@ -0,0 +1,331 @@
+<template>
+	<view class="content1">
+		<view class="order-message">
+			<view class="content_list_item_top">
+				<view class="content_list_item_top_left">
+					<!--          <text>鍑哄簱鍗曞彿锛�</text>-->
+					<text>{{ data.code }}</text>
+				</view>
+				<view class="content_list_item_top_right">
+					<text class="warning" v-if="data.status === 0">寰呭嚭搴�</text>
+					<text class="green" v-else-if="data.status === 1">宸插嚭搴�</text>
+					<text class="info" v-else-if="data.status === 2">宸插彇娑�</text>
+				</view>
+			</view>
+			<view class="content_list_item_content">
+				<view style="margin-top: 0 " class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+					<view class="content_list_item_content_item_nr" v-if="data.billType">
+						{{ orderTyepToStr(data.billType) }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鍑鸿揣浠撳簱锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.warehouseCode + ' | ' + data.warehouseName }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">璁″垝鏃ユ湡锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.planDate }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鏉ユ簮绫诲瀷锛�</view>
+					<view class="content_list_item_content_item_nr" v-if="data.originType">
+						{{ tyepToStr(data.originType) }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鏉ユ簮鍗曞彿锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.originCode ? data.originCode : '-' }}
+					</view>
+				</view>
+				<view v-if="data.updateName" class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鎿嶄綔浜猴細</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.updateName + ' - ' + data.updateMobile }}
+					</view>
+				</view>
+				<view v-if="data.updateTime" class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鎿嶄綔鏃堕棿锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.updateTime }}
+					</view>
+				</view>
+			</view>
+		</view>
+		<!-- 杞簱鐗╂枡 -->
+		<view class="title">
+			<text class="title-prefix"></text>
+			<text>{{ data.status == 1 ? '宸插嚭搴撶墿鏂�' : '寰呭嚭搴撶墿鏂�' }}</text>
+		</view>
+		<view class="material-content">
+			<view class="item-style" v-for="(item, index) in materailArray" :key="index">
+				<view class="item-title-style">
+					<text style="font-weight: 500;">{{ item.materialName + ' | ' + item.materialCode}}</text>
+				</view>
+				<view class="item-content-style">
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">鎵规鍙凤細</view>
+						<view class="content_list_item_content_item_nr">
+							{{ item.batch }}
+						</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">鏁伴噺锛�</view>
+						<view class="content_list_item_content_item_nr">
+							{{ item.num + item.unitName }}
+						</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">宸ュ簭锛�</view>
+						<view class="content_list_item_content_item_nr">
+							{{ item.procedureName || '-' }}
+						</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">璐ㄩ噺锛�</view>
+						<view class="content_list_item_content_item_nr">
+							<text v-if="item.qualityType == 0" class="green">鍚堟牸</text>
+							<text v-else-if="item.qualityType == 1" class="yellow">涓嶈壇</text>
+							<text v-else-if="item.qualityType == 2" class="red">鎶ュ簾</text>
+							<text v-else>-</text>
+						</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">鍑哄簱璐т綅锛�</view>
+						<view class="content_list_item_content_item_nr">
+							{{ item.locationName }}
+						</view>
+					</view>
+				</view>
+				<!--        <view style="margin-top:10rpx; background: #cccccc; height:0.5rpx"></view>-->
+			</view>
+		</view>
+		<view v-if="data.status === 0" style="height:94rpx"></view>
+		<view v-if="data.status === 0" class="bottom-button">
+			<button class="button button-action" @click="submit">鍘诲嚭搴�</button>
+			<button class="button button-cancel" @click="cancel">鍙栨秷</button>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { orderTyepToStr } from '@/util/constData.js'
+	
+	export default {
+		data() {
+			return {
+				data: {},
+				types: [
+					{ name: '鍏ㄩ儴', id: '', isActive: true },
+					{ name: '閲囪喘璁㈠崟', id: '0', isActive: false },
+					{ name: '鐢熶骇宸ュ崟', id: '1', isActive: false },
+					{ name: '閿�鍞鍗�', id: '2', isActive: false },
+					{ name: '杞簱鍗�', id: '3', isActive: false },
+					{ name: '鐩樼偣鍗�', id: '4', isActive: false },
+				],
+				materailArray: []
+			};
+		},
+		methods: {
+			tyepToStr(type) {
+				//  <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+				for (const item of this.types) {
+					if (parseInt(item.id) === type) {
+						return item.name
+					}
+				}
+				return '-'
+			},
+			submit() {
+				
+			},
+			cancel() {
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content1 {
+		padding: 30rpx;
+		background: white;
+
+		.order-message {
+			display: flex;
+			flex-direction: column;
+
+			// border-bottom: 1rpx solid #ececec;
+			.content_list_item_top {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				.content_list_item_top_left {
+					display: flex;
+
+					// align-items: center;
+					text {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #333333;
+					}
+				}
+
+				.content_list_item_top_right {
+					font-size: 26rpx;
+					font-weight: 400;
+
+					.created {
+						color: $nav-stateColor1 !important;
+					}
+
+					.warning {
+						color: $nav-stateColor5 !important;
+					}
+
+					.green {
+						color: $nav-stateColor6 !important;
+					}
+
+					.info {
+						color: $nav-stateColor3 !important;
+					}
+				}
+			}
+
+			.content_list_item_content {
+				padding: 24rpx 30rpx;
+				background: #f7f7f7;
+				border-radius: 16rpx;
+				display: flex;
+				flex-wrap: wrap;
+				justify-content: space-between;
+				margin-top: 32rpx;
+
+				.content_list_item_content_item {
+					width: 100%;
+					display: flex;
+					margin-top: 24rpx;
+
+					.content_list_item_content_item_label {
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #666666;
+						flex-shrink: 0;
+					}
+
+					.content_list_item_content_item_nr {
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #222222;
+						margin-right: 10rpx;
+					}
+				}
+			}
+		}
+
+		.title {
+			font-size: 30rpx;
+			display: flex;
+			align-items: center;
+			margin-top: 30rpx;
+
+			.title-prefix {
+				display: inline-block;
+				background-color: #4275FC;
+				height: 30rpx;
+				width: 8rpx;
+				border-radius: 1rpx;
+				margin-right: 12rpx;
+			}
+		}
+
+		.material-content {
+			margin-top: 30rpx;
+
+			.item-style {
+				width: initial;
+				border-bottom: 1rpx solid #ececec;
+				margin-top: 30rpx;
+
+				&:last-child {
+					border: none;
+				}
+
+				.item-title-style {
+					margin-bottom: 12rpx;
+					font-size: 30rpx;
+				}
+
+				.item-content-style {
+					// padding: 24rpx 30rpx;
+					// background-color: #f7f7f7;
+					// border-radius: 16rpx;
+					display: flex;
+					flex-wrap: wrap;
+					justify-content: space-between;
+					padding: 1rpx 1rpx 30rpx 1rpx;
+
+					.content_list_item_content_item {
+						width: 100%;
+						display: flex;
+						margin-top: 24rpx;
+
+						.content_list_item_content_item_label {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+
+						.content_list_item_content_item_nr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+							margin-right: 10rpx;
+						}
+					}
+				}
+			}
+		}
+
+		.bottom-button {
+			padding: 1rpx;
+			background-color: #f7f7f7;
+			position: fixed;
+			width: 100%;
+			bottom: 0;
+			height: 188rpx;
+			display: flex;
+			justify-content: space-between;
+
+			.button-action {
+				background: #fff;
+				color: $nav-color;
+			}
+
+			.button-cancel {
+				background: $nav-color;
+				color: #FFFFFF;
+			}
+
+			.button {
+				margin: 32rpx 32rpx 68rpx 32rpx;
+				height: 88rpx;
+				width: 334rpx;
+				border: none;
+				border-radius: 8rpx;
+				box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+				display: flex;
+				align-items: center;
+				justify-content: center;
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/outboundList/outboundList.vue b/minipro_standard/pages_adjust/pages/outboundList/outboundList.vue
new file mode 100644
index 0000000..5aeff0b
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/outboundList/outboundList.vue
@@ -0,0 +1,562 @@
+<template>
+	<view class="content">
+		<view class="content_search">
+			<Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true"
+				placeholder="鎼滅储鍑哄簱鍗曞彿/鍑哄簱浠撳簱">
+				<template v-slot:content>
+					<view class="Search_item">
+						<view class="Search_item_label">璁″垝鏃ユ湡</view>
+						<view class="Search_item_content" @click="openDate">
+							<view class="Search_item_content_a" :style="listData.startDate ? 'color: #000' : ''">
+								{{ listData.startDate ? listData.startDate : '寮�濮嬫棩鏈�'}}</view>
+							<text>-</text>
+							<view class="Search_item_content_a" :style="listData.endDate ? 'color: #000' : ''">
+								{{ listData.endDate ? listData.endDate : '缁撴潫鏃ユ湡'}}</view>
+						</view>
+					</view>
+					<view class="Search_item">
+						<view class="Search_item_label">鍗曟嵁绫诲瀷</view>
+						<view class="Search_item_content">
+							<view class="tag">
+								<view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in types"
+								:key="item.id" @click="changeTags(i)">{{item.name}}</view>
+							</view>
+						</view>
+					</view>
+				</template>
+			</Search>
+			<view class="content_search_x"></view>
+			<LabelSelection :TagList="tagList" :isShow="true" @change="clickTag" />
+		</view>
+		<view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+		<view class="content_list">
+			<scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+				<view class="content_list_item" v-for="(item, i) in lists" :key="i" @click="jump(item)">
+					<!-- item澶撮儴瑙嗗浘 -->
+					<view class="content_list_item_top">
+						<view class="content_list_item_top_left">
+							<!--                <text>杞簱鍗曞彿锛�</text>-->
+							<text>{{ item.code }}</text>
+						</view>
+						<view class="content_list_item_top_right">
+							<span class="warning" v-if="item.status === 0">寰呭嚭搴�</span>
+							<span class="green" v-else-if="item.status === 1">宸插嚭搴�</span>
+							<span class="info" v-else-if="item.status === 2">宸插彇娑�</span>
+						</view>
+					</view>
+					<!-- item涓婚淇℃伅閮ㄥ垎 -->
+					<view class="content_list_item_content">
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ orderTyepToStr(item.billType) }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鍑哄簱浠撳簱锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.warehouseName + ' | ' + item.warehouseCode }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">璁″垝鍑哄簱锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.planDate }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鏉ユ簮绫诲瀷锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ tyepToStr(item.originType) }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鏉ユ簮鍗曞彿锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.originCode ? item.originCode : '-' }}
+							</view>
+						</view>
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+		<!-- 閫夋嫨鏃ユ湡 -->
+		<u-calendar :show="timeShow" @close="timeShow = false" @confirm="timeConfirm"></u-calendar>
+	</view>
+</template>
+
+<script>
+	import Search from '@/components/Search.vue'
+	import LabelSelection from '@/components/LabelSelection.vue'
+	import { orderTyepToStr } from '@/util/constData.js'
+	export default {
+		components: {
+			Search,
+			LabelSelection
+		},
+		data() {
+			return {
+				height: '',
+				top: '',
+				listData: {
+					capacity: 10,
+					page: 0,
+					total: 0,
+					planDateEnd: "",
+					planDateStart: "",
+					code: "",
+					originType: "",
+					status: ""
+				},
+				types: [
+					{ name: '杞﹂棿棰嗘枡', id: '1', isActive: false },
+					{ name: '鏈哄彴澶囨枡', id: '2', isActive: false },
+					{ name: '杞﹂棿杞簱', id: '3', isActive: false },
+					{ name: '瀹屽伐鍏ュ簱', id: '4', isActive: false },
+					{ name: '璁″垝棰嗘枡', id: '5', isActive: false },
+					{ name: '澶栧崗棰嗘枡', id: '6', isActive: false },
+					{ name: '澶栧崗瀹屽伐杞簱', id: '7', isActive: false },
+					{ name: '浜у搧鍏ュ簱', id: '8', isActive: false },
+					{ name: '浜у搧杞簱', id: '9', isActive: false },
+					{ name: '璁╂鏀捐鍏ュ簱', id: '10', isActive: false },
+					{ name: '璁╂鏀捐杞簱', id: '11', isActive: false },
+					{ name: '瀹㈣繑杩斾慨棰嗘枡', id: '12', isActive: false },
+					{ name: '瀹㈣繑杩斾慨鍏ュ簱', id: '13', isActive: false },
+					{ name: '璺ㄧ粍缁囪浆搴�', id: '14', isActive: false },
+					{ name: '宸ュ簭鎶ュ簾', id: '15', isActive: false },
+					{ name: '瀹㈤��杩斾慨棰嗘枡', id: '16', isActive: false },
+					{ name: '瀹㈤��杩斾慨鍏ュ簱', id: '17', isActive: false },
+					{ name: '閿�鍞嚭搴�', id: '18', isActive: false },
+					{ name: '璁╂閿�鍞�', id: '19', isActive: false },
+					{ name: '宸ュ崟鎶曟枡', id: '20', isActive: false },
+					{ name: '浠撳簱鎶ュ簾', id: '21', isActive: false },
+					{ name: '瀹㈤��妫�楠岄鏂�', id: '22', isActive: false },
+					{ name: '瀹㈣繑妫�楠岄鏂�', id: '23', isActive: false },
+					{ name: '搴撳瓨璋冩暣', id: '28', isActive: false },
+					{ name: '搴熷搧鍏ュ簱', id: '30', isActive: false }
+				],
+				tagList: [
+					{
+					    id: "",
+					    name: "鍏ㄩ儴",
+					    num: '0',
+					},
+					{
+					    id: "0",
+					    name: "寰呭嚭搴�",
+					    num: '0',
+					},
+					{
+					    id: "1",
+					    name: "宸插嚭搴�",
+					    num: "0",
+					},
+					{
+					    id: "2",
+					    name: "宸插彇娑�",
+					    num: "0",
+					}
+				],
+				data: [], // 宸ュ簭鏁版嵁
+				factoryList: [],
+				finished: true,
+				loading: false,
+				refreshing: false,
+				timeShow: false,
+				lists: []
+			};
+		},
+		onReady() {
+			var that = this
+			this.$nextTick(() => {
+				uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+					that.height = `calc(100vh - ${rect.height + 80}px)`
+					that.top = `${rect.height}px`
+				}).exec()
+			})
+		},
+		methods: {
+			tyepToStr(type) {
+				//  <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+				for (const item of this.orderType) {
+					if (item.id == type) {
+						return item.name
+					}
+				}
+				return '-'
+			},
+			// 璺宠浆
+			jump(item) {
+				uni.navigateTo({
+					url: `/pages/planDetails/planDetails?id=${item.id}`
+				})
+			},
+			// 鑾峰彇澶撮儴缁勪欢楂樺害
+			getHeight(height) {
+				this.height = height
+			},
+			// 閲嶇疆
+			reset() {
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.listData.mixParam = ''
+				this.listData.startDate = ''
+				this.listData.endDate = ''
+				this.listData.procedureIds = []
+				if (this.factoryList.length > 0) {
+					this.listData.departIds = this.factoryList[0].id
+				}
+				if (this.data.length > 0) {
+					this.data.forEach(item => {
+						item.isActive = false
+					})
+				}
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鏃ユ湡纭畾
+			timeConfirm(val) {
+				this.listData.startDate = val[0]
+				this.listData.endDate = val[val.length - 1]
+				this.timeShow = false
+			},
+			// 鍒囨崲宸ュ巶
+			changeTags(i, id) {
+				this.listData.departIds = id
+				this.getWorkingProcedures(id)
+				this.factoryList.forEach((item, index) => {
+					if (index === i) {
+						item.isActive = true
+					} else {
+						item.isActive = false
+					}
+				})
+			},
+			// 鎵撳紑鏃ユ湡鎻掍欢
+			openDate() {
+				this.timeShow = true
+			},
+			// 鎼滅储
+			searchInput(val) {
+				this.listData.mixParam = val
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.getLists()
+			},
+			// 鐐瑰嚮鏍囩鎼滅储
+			clickTag(ids) {
+				this.listData.cateIds = ids
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+			},
+			// 鑾峰彇鍒楄〃缁熻
+			pageCounts() {
+				pageCount({
+					factoryId: this.listData.departIds,
+					procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+					startDate: this.listData.startDate,
+					endDate: this.listData.endDate,
+					statusList: this.listData.cateIds
+				}).then(res => {
+					if (res.code === 200 && res.data) {
+						this.tagList[0].num = res.data.allNum.toString()
+						this.tagList[1].num = res.data.startNum.toString()
+						this.tagList[2].num = res.data.ingNum.toString()
+						this.tagList[3].num = res.data.endNum.toString()
+					}
+				})
+			},
+			// 鑾峰彇宸ュ巶鏁版嵁
+			getOrganizations() {
+				getOrganization({
+					type: 1
+				}).then(res => {
+					if (res.code === 200 && res.data && res.data.length !== 0) {
+						res.data.forEach((item, i) => {
+							item.isActive = i === 0;
+						})
+						if (res.data.length > 0) {
+							this.factoryList = res.data
+							this.listData.departIds = this.factoryList[0].id
+							this.listData.procedureIds = ''
+							this.finished = false
+							this.getWorkingProcedures(this.factoryList[0].id)
+							this.getLists()
+							this.pageCounts()
+						}
+					}
+				})
+			},
+			// 鑾峰彇宸ュ簭鏁版嵁
+			getWorkingProcedures(orgId) {
+				this.data = []
+				getWorkingProcedure({
+						orgId
+					})
+					.then(res => {
+						if (res.code === 200 && res.data && res.data.length !== 0) {
+							res.data.forEach((item, i) => {
+								item.isActive = false;
+							})
+							this.data = res.data
+						}
+					})
+			},
+			// 鎼滅储寮规鎻愪氦
+			submit() {
+				let pmodelOrgId = []
+				this.data.forEach((item) => {
+					if (item.isActive) {
+						pmodelOrgId.push(item.id)
+					}
+				})
+				this.listData.procedureIds = pmodelOrgId
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鑾峰彇璁″垝鍒楄〃鏁版嵁
+			getLists() {
+				console.log('getLists')
+				if (!this.finished) {
+					this.loading = true
+					this.listData.page = this.listData.page++
+					getList({
+						capacity: this.listData.capacity,
+						model: {
+							mixParam: this.listData.mixParam,
+							startDate: this.listData.startDate,
+							endDate: this.listData.endDate,
+							procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+							factoryId: this.listData.departIds,
+							statusList: this.listData.cateIds
+						},
+						page: this.listData.page,
+						sorts: [{
+							direction: 'ASC',
+							property: 'publishDate'
+						}]
+					}).then(res => {
+						this.loading = false
+						this.listData.total = res.data.total
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+						if (res.code === 200 && res.data.records.length !== 0) {
+							if (this.lists.length === 0) {
+								this.lists = res.data.records
+							} else {
+								this.lists.push(...res.data.records)
+							}
+						} else {
+							this.finished = true
+						}
+					}).catch(err => {
+						this.loading = false
+						this.finished = true
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		.content_search {
+			width: 100%;
+			padding: 30rpx;
+			background: white;
+			position: sticky;
+			top: 0;
+			z-index: 999;
+			box-sizing: border-box;
+
+			.Search_item {
+				margin-bottom: 40rpx;
+
+				.Search_item_label {
+					font-size: 30rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+
+				.Search_item_content {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					margin-top: 30rpx;
+
+					.tag {
+						display: flex;
+						flex-wrap: wrap;
+						align-items: center;
+
+						.tag_active {
+							background: $nav-color !important;
+							color: #ffffff !important;
+						}
+
+						.tag_item {
+							padding: 22rpx 26rpx;
+							box-sizing: border-box;
+							background: #F2F2F2;
+							border-radius: 8rpx;
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #333333;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							margin-right: 22rpx;
+							margin-bottom: 22rpx;
+						}
+					}
+
+					text {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						margin: 0 30rpx;
+					}
+
+					.Search_item_content_a {
+						padding: 20rpx 0;
+						flex: 1;
+						background: #F7F7F7;
+						border-radius: 8rpx;
+						border: 1rpx solid #EEEEEE;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #B2B2B2;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+					}
+				}
+			}
+
+			.content_search_x {
+				height: 24rpx;
+			}
+		}
+
+		.content_list {
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+
+			.content_list_item {
+				width: 100%;
+				box-sizing: border-box;
+				padding: 30rpx;
+				display: flex;
+				flex-direction: column;
+				border-bottom: 1rpx solid #ececec;
+				background: white;
+
+				.content_list_item_top {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+
+					.content_list_item_top_left {
+						display: flex;
+						align-items: center;
+
+						text {
+							font-size: 32rpx;
+							font-weight: 500;
+							color: #333333;
+						}
+					}
+
+					.content_list_item_top_right {
+						font-size: 26rpx;
+						font-weight: 400;
+
+						.created {
+							color: $nav-stateColor1 !important;
+						}
+
+						.warning {
+							color: $nav-stateColor5 !important;
+						}
+
+						.green {
+							color: $nav-stateColor6 !important;
+						}
+
+						.info {
+							color: $nav-stateColor3 !important;
+						}
+					}
+				}
+
+				.content_list_item_content {
+					padding: 24rpx 30rpx;
+					background: #f7f7f7;
+					border-radius: 16rpx;
+					display: flex;
+					flex-wrap: wrap;
+					justify-content: space-between;
+					margin-top: 32rpx;
+
+					.content_list_item_content_item {
+						width: 100%;
+						display: flex;
+						margin-top: 24rpx;
+
+						&:first-child {
+							margin-top: 0;
+						}
+
+						// &:nth-child(1) {
+						//   margin-top: 0 !important;
+						// }
+						// &:nth-child(2) {
+						//   margin-top: 0 !important;
+						// }
+						.content_list_item_content_item_label {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+
+						.content_list_item_content_item_nr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+							margin-right: 10rpx;
+						}
+					}
+				}
+			}
+		}
+
+		.content_total {
+			width: 100%;
+			height: 80rpx;
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			box-sizing: border-box;
+			color: #666666;
+			position: sticky;
+			z-index: 99;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/processPlan/processPlan.vue b/minipro_standard/pages_adjust/pages/processPlan/processPlan.vue
new file mode 100644
index 0000000..66b5a4c
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/processPlan/processPlan.vue
@@ -0,0 +1,404 @@
+<template>
+	<view class="content">
+		<view class="content_search">
+			<Search @searchInput="searchInput" @submit="submit" placeholder="鎼滅储鐗╂枡鍚嶇О/缂栫爜/宸ュ簭鍚嶇О" />
+		</view>
+		<view class="content_list">
+			<scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+				<view class="content_list_item" v-for="(item, i) in listData" :key="i" @click="clickItem(item)">
+					<view class="content_list_item_title">
+						<text>{{item.materialName}}锝渰{item.produceName}}</text>
+						<view class="content_list_item_title_tips" v-if="item.urgent">浼樺厛{{ item.urgent }}</view>
+					</view>
+					<view class="content_list_item_nr">
+						<view class="content_list_item_nr_box">
+							<view class="label">鐗╂枡缂栫爜锛�</view>
+							<view class="cr">{{item.materialName}}涓▄{item.materialCode}}</view>
+						</view>
+						<view class="content_list_item_nr_box">
+							<view class="label">璁″垝鏁伴噺锛�</view>
+							<view class="cr">{{item.num}}{{item.umodel.name}}</view>
+						</view>
+						<view class="content_list_item_nr_box">
+							<view class="label">璁″垝鏃ユ湡锛�</view>
+							<view class="cr">{{item.workPlanStartDate}} ~ {{item.workPlanEndDate}}</view>
+						</view>
+						<view class="content_list_item_nr_box">
+							<view class="label">璁″垝鍛橈細</view>
+							<view class="cr">{{item.planUserName}}</view>
+						</view>
+						<view class="content_list_item_nr_box">
+							<view class="label">鐢熶骇鎵规锛�</view>
+							<view class="cr">{{item.batch}}</view>
+						</view>
+						<view class="content_list_item_nr_box" v-if="item.salesOrder">
+							<view class="label">閿�鍞鍗曪細</view>
+							<view class="cr">{{ item.salesOrder }}</view>
+						</view>
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import Search from '@/components/Search.vue'
+	export default {
+		components: {
+			Search
+		},
+		data() {
+			return {
+				pageData: {
+					capacity: 10,
+					page: 0,
+					total: 0,
+					name: ''
+				},
+				loading: false,
+				finished: false,
+				refreshing: false,
+				height: '',
+				listData: []
+			};
+		},
+		onReady() {
+			var that = this
+			this.$nextTick(() => {
+				uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+					that.height = `calc(100vh - ${rect.height}px)`
+				}).exec()
+			})
+		},
+		methods: {
+			clickItem(obj) {
+				uni.navigateBack({ delta: 1 });
+			},
+			// 鑾峰彇澶撮儴缁勪欢楂樺害
+			getHeight(height) {
+				this.height = height
+			},
+			// 鎼滅储
+			searchInput(val) {
+				this.listData.mixParam = val
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.getLists()
+			},
+			// 鐐瑰嚮鏍囩鎼滅储
+			clickTag(ids) {
+				this.listData.cateIds = ids
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+			},
+			// 鑾峰彇鍒楄〃缁熻
+			pageCounts() {
+				pageCount({
+					factoryId: this.listData.departIds,
+					procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+					startDate: this.listData.startDate,
+					endDate: this.listData.endDate,
+					statusList: this.listData.cateIds
+				}).then(res => {
+					if (res.code === 200 && res.data) {
+						this.tagList[0].num = res.data.allNum.toString()
+						this.tagList[1].num = res.data.startNum.toString()
+						this.tagList[2].num = res.data.ingNum.toString()
+						this.tagList[3].num = res.data.endNum.toString()
+					}
+				})
+			},
+			// 鑾峰彇宸ュ巶鏁版嵁
+			getOrganizations() {
+				getOrganization({
+					type: 1
+				}).then(res => {
+					if (res.code === 200 && res.data && res.data.length !== 0) {
+						res.data.forEach((item, i) => {
+							item.isActive = i === 0;
+						})
+						if (res.data.length > 0) {
+							this.factoryList = res.data
+							this.listData.departIds = this.factoryList[0].id
+							this.listData.procedureIds = ''
+							this.finished = false
+							this.getWorkingProcedures(this.factoryList[0].id)
+							this.getLists()
+							this.pageCounts()
+						}
+					}
+				})
+			},
+			// 鑾峰彇宸ュ簭鏁版嵁
+			getWorkingProcedures(orgId) {
+				this.data = []
+				getWorkingProcedure({
+						orgId
+					})
+					.then(res => {
+						if (res.code === 200 && res.data && res.data.length !== 0) {
+							res.data.forEach((item, i) => {
+								item.isActive = false;
+							})
+							this.data = res.data
+						}
+					})
+			},
+			// 鎼滅储寮规鎻愪氦
+			submit() {
+				let pmodelOrgId = []
+				this.data.forEach((item) => {
+					if (item.isActive) {
+						pmodelOrgId.push(item.id)
+					}
+				})
+				this.listData.procedureIds = pmodelOrgId
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鑾峰彇璁″垝鍒楄〃鏁版嵁
+			getLists() {
+				console.log('getLists')
+				if (!this.finished) {
+					this.pageData.page = this.pageData.page + 1
+					this.loading = true
+					getList({
+						capacity: this.pageData.capacity,
+						page: this.pageData.page,
+						model: {
+							mixParam: this.pageData.name,
+							statusList: [1, 4],
+							paused: 0
+						},
+						sorts: [
+							{ direction: 'DESC', property: 'CREATE_TIME' }
+						]
+					}).then(res => {
+						if (this.refreshing) {
+							this.listData = []
+							this.refreshing = false;
+						}
+						this.loading = false
+						if (res.code === 200 && res.data.records && res.data.records.length !== 0) {
+							this.pageData.total = res.data.total
+							this.listData.push(...res.data.records)
+						} else {
+							this.finished = true
+						}
+					}).catch(err => {
+						this.loading = false
+						this.finished = true
+						if (this.refreshing) {
+							this.listData = []
+							this.refreshing = false;
+						}
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		.content_search {
+			width: 100%;
+			padding: 30rpx;
+			background: white;
+			position: sticky;
+			top: 0;
+			z-index: 999;
+			box-sizing: border-box;
+
+			.Search_item {
+				margin-bottom: 40rpx;
+
+				.Search_item_label {
+					font-size: 30rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+
+				.Search_item_content {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					margin-top: 30rpx;
+
+					.tag {
+						display: flex;
+						flex-wrap: wrap;
+						align-items: center;
+
+						.tag_active {
+							background: $nav-color !important;
+							color: #ffffff !important;
+						}
+
+						.tag_item {
+							padding: 22rpx 26rpx;
+							box-sizing: border-box;
+							background: #F2F2F2;
+							border-radius: 8rpx;
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #333333;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							margin-right: 22rpx;
+							margin-bottom: 22rpx;
+						}
+					}
+
+					text {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						margin: 0 30rpx;
+					}
+
+					.Search_item_content_a {
+						padding: 20rpx 0;
+						flex: 1;
+						background: #F7F7F7;
+						border-radius: 8rpx;
+						border: 1rpx solid #EEEEEE;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #B2B2B2;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+					}
+				}
+			}
+
+			.content_search_x {
+				height: 24rpx;
+			}
+		}
+
+		.content_list {
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+
+			.content_list_item {
+				width: 100%;
+				box-sizing: border-box;
+				padding: 30rpx;
+				background: #ffffff;
+				margin-bottom: 20rpx;
+				&:last-child {
+					margin-bottom: 0 !important;
+				}
+				.content_list_item_title {
+					display: flex;
+					align-items: center;
+					.content_list_item_title_tips {
+						padding: 4rpx 8rpx;
+						box-sizing: border-box;
+						background: #DE5243;
+						border-radius: 8rpx;
+						font-size: 22rpx;
+						font-family: PingFangSC-Regular, PingFang SC;
+						font-weight: 400;
+						color: #FFFFFF;
+						margin-left: 16rpx;
+					}
+					.warning {
+						color: $nav-stateColor1 !important;
+					}
+					.green {
+						color: $nav-stateColor6 !important;
+					}
+					text {
+						font-size: 32rpx;
+						font-family: PingFangSC-Medium, PingFang SC;
+						font-weight: 500;
+						color: #333333;
+					}
+				}
+				.content_list_item_nr {
+					padding: 24rpx 30rpx;
+					background: #F7F7F7;
+					border-radius: 16rpx;
+					margin-top: 30rpx;
+					display: flex;
+					justify-content: space-between;
+					flex-wrap: wrap;
+					.content_list_item_nr_boxs {
+						width: 45%;
+						display: flex;
+						margin-top: 24rpx;
+						&:nth-child(1) {
+							margin-top: 0;
+						}
+						&:nth-child(2) {
+							margin-top: 0;
+						}
+						.warning {
+							color: $nav-stateColor4 !important;
+						}
+						.label {
+							flex-shrink: 0;
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+						}
+						.cr {
+							flex: 1;
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+							overflow: hidden;
+							white-space: nowrap;
+							text-overflow: ellipsis;
+							-o-text-overflow:ellipsis;
+						}
+					}
+					.content_list_item_nr_box {
+						width: 100%;
+						display: flex;
+						margin-top: 24rpx;
+						&:nth-child(1) {
+							margin-top: 0;
+						}
+						.label {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+						.cr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+						}
+					}
+				}
+			}
+		}
+
+		.content_total {
+			width: 100%;
+			height: 80rpx;
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			box-sizing: border-box;
+			color: #666666;
+			position: sticky;
+			z-index: 99;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue b/minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue
new file mode 100644
index 0000000..b2445d8
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue
@@ -0,0 +1,1071 @@
+<template>
+	<view class="bg">
+		<view class="bg_plan" @click="selectPlan">
+			<view class="bg_plan_label" v-if="!from.processPlan">
+				<text><b>*</b>宸ュ簭鐢熶骇璁″垝</text>
+			</view>
+			<view class="bg_plan_nr" v-else>
+				<text>{{ from.processPlan.materialName }} | {{ from.processPlan.materialCode }} | {{ from.processPlan.produceName }}</text>
+				<text>{{ from.processPlan.batch }}{{ from.processPlan.salesOrder ? ` / ${from.processPlan.salesOrder}` : '' }}</text>
+				<text>璁″垝鏃堕棿锛歿{ from.processPlan.workPlanStartDate }} ~ {{ from.processPlan.workPlanEndDate }}</text>
+				<text>璁″垝杩涘害锛歿{from.processPlan.num}}/{{from.processPlan.workorderDistributNum}}{{ from.processPlan.unitName }}</text>
+			</view>
+			<view class="bg_plan_label_val">
+				<text v-if="!from.processPlan">璇烽�夋嫨</text>
+				<image src="@/static/ic_ar@2x.png" alt="" />
+			</view>
+		</view>
+		<view class="bg_list">
+			<view class="bg_list_item">
+				<view class="bg_list_item_top">
+					<view class="bg_list_item_top_left">
+						<view class="bg_list_item_top_left_x"></view>
+						<text>鐢熶骇淇℃伅</text>
+					</view>
+				</view>
+				<view class="bg_list_item_h">
+					<view class="bg_list_item_num" @click="openDev">
+						<view class="bg_list_item_num_item">
+							<text>鐢熶骇璁惧</text>
+							<view class="bg_list_item_num_item_sr">
+								<text :style="{color: from.deviceName ? '#333' : ''}">{{from.deviceName ? from.deviceName : '璇烽�夋嫨'}}</text>
+								<image src="@/static/ic_ar@2x.png" alt="" />
+							</view>
+						</view>
+					</view>
+					<view class="bg_list_item_num" @click="userShow = true">
+						<view class="bg_list_item_num_item">
+							<text>鐢熶骇浜哄憳</text>
+							<view class="bg_list_item_num_item_sr">
+								<text :style="{color: from.userName ? '#333' : ''}">{{from.userName ? from.userName : '璇烽�夋嫨'}}</text>
+								<image src="@/static/ic_ar@2x.png" alt="" />
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="bg_list_item">
+				<view class="bg_list_item_top">
+					<view class="bg_list_item_top_left">
+						<view class="bg_list_item_top_left_x"></view>
+						<text>鐢熶骇鎶曟枡</text>
+					</view>
+					<view class="bg_list_item_top_right" @click="openMaterial" v-if="(hasBom == 1 && bomType != 1) || hasBom == 0">
+						<image src="@/static/gongdan_ic_shoudong@2x.png" alt="" />
+						<text>鏂板鎶曟枡</text>
+					</view>
+				</view>
+				<template v-if="wuList.length > 0 && !(hasBom == 1 && bomType == 1)">
+					<van-swipe-cell v-for="(item, index) in wuList" :key="index">
+						<view class="bg_list_item_h">
+							<view class="bg_list_item_num">
+								<view class="bg_list_item_num_item">
+									<view class="bg_list_item_num_item_wl">
+										<text>{{ item.materialName }}{{ item.procedureName ? ` | ${item.procedureName}` : '' }}</text>
+										<view class="bg_list_item_num_item_wl_lx">
+											<text class="green" v-if="item.qualityType == 0">鍚堟牸&nbsp;/&nbsp;</text>
+											<text class="yellow" v-if="item.qualityType == 1">涓嶈壇&nbsp;/&nbsp;</text>
+											<text class="red" v-if="item.qualityType == 2">鎶ュ簾&nbsp;/&nbsp;</text>
+											<text>{{ item.locationName }}&nbsp;/&nbsp;</text>
+											<text>{{ item.batch }}</text>
+										</view>
+									</view>
+									<view class="bg_list_item_num_item_sr">
+										<u--input
+										    placeholder="璇疯緭鍏�"
+										    border="surround"
+											type="number"
+											:customStyle="{width: '180rpx'}"
+										    v-model="item.num"
+											@input="inputwl(index)"
+										  ></u--input>
+										<!-- <input type="number" v-model="item.num" @input="inputwl(index)" /> -->
+										<text>{{ item.unitName }}</text>
+									</view>
+								</view>
+							</view>
+						</view>
+						<template #right>
+							<van-button style="height: 100%;" @click="deleItem(index)" square text="鍒犻櫎" type="danger" />
+						</template>
+					</van-swipe-cell>
+				</template>
+				<template v-else-if="wuList.length == 0 && !(hasBom == 1 && bomType == 1)">
+					<view class="kong">
+						<text>鏆傛棤鏁版嵁</text>
+					</view>
+				</template>
+				<view class="kong" v-if="hasBom == 1 && bomType == 1">
+					<text>褰撳墠宸ュ簭鏃犻渶鎶曟枡</text>
+				</view>
+			</view>
+			<view class="bg_list_item bottomval">
+				<view class="bg_list_item_top">
+					<view class="bg_list_item_top_left">
+						<view class="bg_list_item_top_left_x"></view>
+						<text>浜у嚭鏄庣粏</text>
+					</view>
+				</view>
+				<view class="bg_list_item_h">
+					<view class="bg_list_item_num">
+						<view class="bg_list_item_num_item">
+							<text><b>*</b>鑹搧鏁�</text>
+							<view class="bg_list_item_num_item_sr">
+								<u--input
+								    placeholder="璇疯緭鍏�"
+								    border="surround"
+									type="number"
+									:customStyle="{width: '180rpx'}"
+								    v-model="from.qualified"
+									@input="changeNum(1)"
+								  ></u--input>
+								<!-- <input type="number" v-model="from.qualified" @input="changeNum(1)" placeholder="璇疯緭鍏�" /> -->
+								<text v-if="from.processPlan">{{from.processPlan.unitName}}</text>
+							</view>
+						</view>
+					</view>
+					<view class="bg_list_item_num">
+						<view class="bg_list_item_num_item">
+							<text>涓嶈壇鏁�</text>
+							<view class="bg_list_item_num_item_sr">
+								<u--input
+								    placeholder="璇疯緭鍏�"
+								    border="surround"
+									type="number"
+									:customStyle="{width: '180rpx'}"
+								    v-model="from.undesirable"
+									@input="changeNum(2)"
+								  ></u--input>
+								<!-- <input type="number" v-model="from.undesirable" @input="changeNum(2)" placeholder="璇疯緭鍏�" /> -->
+								<text v-if="from.processPlan">{{from.processPlan.unitName}}</text>
+							</view>
+						</view>
+					</view>
+					<view class="bg_list_item_num" v-if="from.undesirable > 0">
+						<view class="bg_list_item_num_item" @click="openBL">
+							<text><b>*</b>涓嶈壇椤�</text>
+							<view class="bg_list_item_num_item_sr">
+								<text class="wulll" :style="{color: from.defectiveName ? '#305ED5' : ''}">{{from.defectiveName ? from.defectiveName : '璁剧疆'}}</text>
+								<image src="@/static/ic_ar@2x.png" alt="" />
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="bg_plan" @click="TimeShow = true">
+				<view class="bg_plan_label">
+					<text>鎶ュ伐鏃堕暱</text>
+				</view>
+				<view class="bg_plan_label_val">
+					<text :style="{color: from.durationName ? '#333' : ''}">{{from.durationName ? from.durationName : '璇烽�夋嫨'}}</text>
+					<image src="@/static/ic_ar@2x.png" alt="" />
+				</view>
+			</view>
+			<view class="bg_list_item" v-if="arrType && arrType.length > 0">
+				<view class="bg_list_item_top">
+					<view class="bg_list_item_top_left">
+						<view class="bg_list_item_top_left_x"></view>
+						<text>宸ヨ祫缁╂晥</text>
+					</view>
+				</view>
+				<view class="bg_list_item_h">
+					<view class="bg_list_item_num">
+						<view class="bg_list_item_num_item">
+							<text>璁′欢鏂瑰紡</text>
+							<view class="bg_list_item_num_item_list">
+								<view :class="item.active ? 'bg_list_item_num_item_list_item active' : 'bg_list_item_num_item_list_item'" v-for="(item, index) in arrType" :key="index" @click="clickPerformanceType(index)">{{ item.name }}</view>
+							</view>
+						</view>
+					</view>
+					<view class="bg_list_item_num">
+						<view class="bg_list_item_num_item">
+							<text>宸ヨ祫鍗曚环</text>
+							<view class="bg_list_item_num_item_sr">
+								<text class="color1">{{(arrType[from.index].salary / 10 / 10).toFixed(2)}}鍏�/{{arrType[from.index].type == 0 ? '浠�' : '鏃�'}}</text>
+							</view>
+						</view>
+					</view>
+					<view class="bg_list_item_num">
+						<view class="bg_list_item_num_item">
+							<text>棰勮宸ヨ祫</text>
+							<view class="bg_list_item_num_item_sr">
+								<text class="color1">{{expectedSalary}}鍏�</text>
+							</view>
+						</view>
+					</view>
+					<view class="bg_list_item_num">
+						<view class="bg_list_item_num_item">
+							<text>杈炬爣鐜�</text>
+							<view class="bg_list_item_num_item_sr">
+								<text class="color1">{{complianceRate}}%</text>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<!--  鎶ュ伐鎸夐挳  -->
+		<view class="bh_zw"></view>
+		<view class="bg_footer">
+			<view class="bg_footer_submit1" @click="continueSubmit">缁х画鎶ュ伐</view>
+			<view class="bg_footer_submit" @click="submit">鎻愪氦</view>
+		</view>
+		<!-- 鐢熶骇浜哄憳 -->
+		<user :show="userShow" @close="userShow = false" @value="onConfirm1" />
+		<!-- 鐢熶骇璁惧 -->
+		<u-picker :show="deviceShow" :columns="deviceList" keyName="name" @confirm="onConfirm" @cancel="onCancel"></u-picker>
+		<!-- 鏃堕棿 -->
+		<u-picker :show="TimeShow" :columns="columns" @confirm="onConfirm2" @cancel="TimeShow = false"></u-picker>
+		<!-- 鐗╂枡 -->
+		<selectMaterial ref="selectMaterial" @selectAction="getValue" />
+		<!-- 涓嶈壇椤� -->
+		<u-popup :show="show" @close="show = false" :round="8" closeable zIndex="20000">
+			<view class="rp p40 contanir">
+				<view class="c2 b tc">涓嶈壇椤�</view>
+				<view class="content bl_list">
+					<div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)">
+						<div class="bl_list_item_left">
+							<u-checkbox-group>
+								<u-checkbox :checked="item.active" :label="item.name" :name="item.name"></u-checkbox>
+							</u-checkbox-group>
+						</div>
+						<div class="bl_list_item_right">
+							<input type="number" @click.stop v-model="item.num" placeholder="0" />
+						</div>
+					</div>
+				</view>
+				<view class="flex ap tc bottom-view">
+					<view class="fx1 ml20 ptb20 sbtn_green" @click="onConfirm3">纭畾</view>
+				</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import user from '../../components/user.vue'
+	import selectMaterial from '@/components/selectMaterial.vue'
+	export default {
+		components: {
+			user,
+			selectMaterial
+		},
+		data() {
+			return {
+				from: {
+					processPlan: null,
+					deviceId: '',
+					deviceName: '',
+					// userId: store.state.userInfo.id,
+					userId: '',
+					// userName: store.state.userInfo.companyUser.name,
+					userName: '',
+					qualified: '',  // 鑹搧鏁�
+					undesirable: '', // 涓嶈壇鏁�
+					duration: '',
+					durationName: '0灏忔椂0鍒嗛挓',
+					time: '',
+					defective: [],
+					defectiveName: '',
+					type: '',    // 缁╂晥绫诲瀷
+					index: 0
+				},
+				columns: [],
+				arrType: [],
+				bomType: '',
+				hasBom : '',
+				deviceShow: false,
+				userShow: false,
+				wuList: [],
+				deviceList: [],
+				cateList: [
+					{
+						active: false,
+						num: '',
+						name: '鏈夌憰鐤�'
+					}
+				],
+				total: 0,	// 鍙姇鏁伴噺
+				ids: '',
+				plansId: '',
+				deviceId: '',
+				TimeShow: '',
+				show1: '',
+				show: false
+			};
+		},
+		computed: {
+			// 棰勮宸ヨ祫
+			expectedSalary() {
+				if (this.arrType.length === 0) return 0;
+				if (this.arrType[from.index].type == 0) {
+					if (!this.from.qualified) return 0
+					if (this.arrType[from.index].unqualified == 1) {   // 鏄惁璁″叆涓嶈壇鍝�
+						let total = Number(this.from.qualified) + Number(this.from.undesirable)
+						return (total * (this.arrType[from.index].salary / 10 / 10)).toFixed(2)
+					} else {
+						return (Number(this.from.qualified) * (this.arrType[from.index].salary / 10 / 10)).toFixed(2)
+					}
+				} else {
+					if (!this.from.duration) return 0;
+					let h = (this.from.duration / 60 / 60).toFixed(2)
+					return (Number(h) * (this.arrType[from.index].salary / 10 / 10)).toFixed(2)
+				}
+			},
+			// 杈炬爣鐜�
+			complianceRate() {
+				if (this.arrType.length === 0) return 0;
+				if (!this.from.qualified && !this.from.undesirable) return 0;
+				if (!this.from.duration) return 0;
+				if (!this.arrType[from.index].num) return 0;
+				if (this.arrType[from.index].unqualified == 1) {   // 鏄惁璁″叆涓嶈壇鍝�
+					let a = ((Number(this.from.qualified) + Number(this.from.undesirable)) / (this.from.duration / 3600)).toFixed(2)
+					let b = (this.arrType[from.index].num / (this.arrType[from.index].times / 3600)).toFixed(2)
+					return ((Number(a) / Number(b)) * 100).toFixed(2)
+				} else {
+					let a = (this.from.qualified / (this.from.duration / 3600)).toFixed(2)
+					let b = (this.arrType[from.index].num / (this.arrType[from.index].times / 3600)).toFixed(2)
+					return ((Number(a) / Number(b)) * 100).toFixed(2)
+				}
+			}
+		},
+		onLoad() {
+			let arr = []
+			for(let i = 0; i < 60; i++) {
+				arr.push(i)
+			}
+			this.columns = [arr, arr]
+		},
+		methods: {
+			// 鍒囨崲缁╂晥绫诲瀷
+			clickPerformanceType(i) {
+				this.from.index = i
+				this.arrType.forEach((item, index) => {
+					if (i === index) {
+						from.type = item.id
+					}
+					item.active = index === i
+				})
+			},
+			// 閫夋嫨鐗╂枡
+			getValue(val) {
+				let obj = JSON.parse(JSON.stringify(val))
+				obj.total = val.num
+				this.wuList.unshift(obj)
+				let arr = this.wuList.map(item => item.id)
+				this.ids = arr.join(',')
+			},
+			// 鑾峰彇涓嶈壇椤圭洰
+			getData() {
+				categoryExtList({
+					cateType: "3"
+				}).then(res => {
+					if (res.code === 200) {
+						res.data.forEach(item => {
+							item.active = false
+							item.num = ''
+						})
+						this.cateList = res.data
+					}
+				})
+			},
+			// 閫夋嫨璁惧
+			onConfirm(e) {
+				this.from.deviceId = e.id
+				this.from.deviceName = e.name
+				this.deviceId = e.id
+				this.from.userId = ''
+				this.from.userName = ''
+				// getFindAll({
+				//     deviceId: e.id,
+				//     planId: from.processPlan.id
+				// }).then(res => {
+				//     if (res.code === 200) {
+				//         res.data.forEach((item: any) => {
+				//             item.name = item.umodel.name + '-' + item.tmodel.name
+				//         })
+				//         userList.value = res.data
+				//     }
+				// })
+				this.deviceShow = false
+			},
+			// 閫夋嫨涓嶈壇椤�
+			onConfirm3() {
+				let isOpen = false
+				this.cateList.forEach((item, index) => {
+					if (item.active) {
+						isOpen = true
+					}
+				})
+				if (!isOpen) return uni.showToast({ title: '璇烽�夋嫨涓嶈壇椤�', icon: 'none', duration: 2000 });
+				let arr = []
+				let total = 0
+				let name = ''
+				for (let i = 0; i < this.cateList.length; i++) {
+					if (this.cateList[i].active) {
+						if (this.cateList[i].num <= 0) {
+							return uni.showToast({ title: '涓嶈壇鏁伴噺蹇呴』澶т簬0', icon: 'none', duration: 2000 });
+						}
+						total = total += this.cateList[i].num
+						arr.push(this.cateList[i])
+						name += this.cateList[i].name + this.cateList[i].num + '锛�'
+					}
+				}
+				if (total !== this.from.undesirable) return uni.showToast({ title: '涓嶈壇鏁板繀椤荤瓑浜庝骇鍑轰笉鑹暟', icon: 'none', duration: 2000 });
+				this.from.defective = arr
+				this.from.defectiveName = name
+				this.show = false
+			},
+			changeChecked(i) {
+				this.cateList[i].active = !this.cateList[i].active
+			},
+			onConfirm2(e) {
+				let h = e.value[0]
+				let m = e.value[1]
+				let s = 0
+				if (h > 0) {
+					s += h * 60 * 60
+				}
+				if (m > 0) {
+					s += m * 60
+				}
+				this.from.duration = s
+				this.from.durationName = `${h}灏忔椂${m}鍒嗛挓`
+				this.TimeShow = false
+			},
+			onConfirm1(e) {
+				this.from.userId = e.userId
+				this.from.userName = e.name
+				this.userShow = false
+			},
+			selectPlan() {
+				uni.navigateTo({
+					url: '/pages_adjust/pages/processPlan/processPlan'
+				});
+			},
+			openDev() {
+				if (!this.from.processPlan) return uni.showToast({ title: '璇峰厛閫夋嫨宸ュ簭鐢熶骇璁″垝', icon: 'none', duration: 2000 });
+				this.deviceShow = true
+			},
+			openMaterial() {
+				if (!this.plansId) return uni.showToast({ title: '璇峰厛閫夋嫨宸ュ簭鐢熶骇璁″垝', icon: 'none', duration: 2000 });
+				if (!this.deviceId) return uni.showToast({ title: '璇峰厛閫夋嫨鐢熶骇璁惧', icon: 'none', duration: 2000 });
+				this.$refs.selectMaterial.open({})
+			},
+			inputwl(i) {
+				if (this.wuList[i].num > this.wuList[i].total) {
+					this.wuList[i].num = ''
+					uni.showToast({ title: '鎶曟枡鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺', icon: 'none', duration: 2000 });
+				}
+			},
+			deleItem(index) {
+				if (this.wuList.length === 1) return uni.showToast({ title: '鑷冲皯淇濈暀涓�椤瑰唴瀹�', icon: 'none', duration: 2000 });
+				this.wuList.splice(index, 1)
+			},
+			// 浜у嚭鏁伴噺楠岃瘉
+			changeNum(type) {
+				let num = this.total - (Number(this.from.qualified) + Number(this.from.undesirable))
+				if (type == 2) {
+					this.from.defective = []
+					this.from.defectiveName = ''
+				}
+				if (num < 0) {
+					uni.showToast({ title: '浜у嚭鏁伴噺涓嶈兘澶т簬鍙骇鍑烘暟閲忥紒', icon: 'none', duration: 2000 });
+					if (type == 1) {
+						this.from.qualified = ''
+					} else {
+						this.from.undesirable = ''
+					}
+				}
+			},
+			openBL() {
+				this.cateList.forEach(item => {
+					if (!item.active) {
+						item.num = ''
+					}
+					if (item.active && item.num <= 0) {
+						item.active = false
+					}
+				})
+				this.show = true
+			},
+			// 缁х画鎶ュ伐
+			continueSubmit() {
+				if (!this.from.processPlan) return uni.showToast({ title: '璁″垝涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				if (!this.from.deviceId) return uni.showToast({ title: '璁惧涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				if (!this.from.userId) return uni.showToast({ title: '鐢熶骇浜哄憳涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				if (this.hasBom == 1 && this.bomType == 1) {
+					console.log('涓嶉渶瑕佹姇鏂�')
+				} else {
+					if (!this.wuList.length === 0) return uni.showToast({ title: '鎶曟枡涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				}
+				if (!this.from.qualified && !this.from.undesirable) {
+					return uni.showToast({ title: '鑹搧鏁颁笌涓嶈壇鏁颁笉鑳藉悓鏃朵负绌�', icon: 'none', duration: 2000 });
+				}
+				if (this.from.qualified && this.from.qualified <= 0) {
+					return uni.showToast({ title: '鑹搧鏁板繀椤诲ぇ浜�0', icon: 'none', duration: 2000 });
+				}
+				if (this.from.undesirable && this.from.undesirable <= 0) {
+					return uni.showToast({ title: '涓嶈壇鍝佹暟蹇呴』澶т簬0', icon: 'none', duration: 2000 });
+				}
+				// 鏈変笉鑹暟
+				if (this.from.undesirable > 0) {
+					if (this.from.defective.length === 0) return uni.showToast({ title: '涓嶈壇椤逛笉鑳戒负绌�', icon: 'none', duration: 2000 });
+				}
+				let type = ''
+				this.arrType.forEach(item => {
+					if (item.active) {
+						type = item.id
+					}
+				})
+				autoWorkReport({
+					createWorkorderRecordDTO: {
+						type,
+						duration: this.from.duration,
+						qualifiedNum: this.from.qualified ? this.from.qualified : 0,
+						unQualifiedNum: this.from.undesirable ? this.from.undesirable : 0
+					},
+					plansId: this.from.processPlan.id,
+					proGroupId: this.deviceId,
+					proUserList: [this.from.userId],
+					recordList: this.wuList.map(item => {
+						return {
+							wstockId: item.id,
+							num: item.num
+						}
+					}),
+					createUnqualifiedDTOList: this.from.defective.map(item => {
+						return {
+							categoryId: item.id,
+							unQualifiedNum: item.num
+						}
+					})
+				}).then(res => {
+					if (res.code === 200) {
+						uni.showToast({ title: '鎶ュ伐鎴愬姛锛�', icon: 'success', duration: 2000 });
+						this.from.processPlan = null
+						this.from.deviceId = ''
+						this.from.deviceName = ''
+						this.from.userId = ''
+						this.from.userName = ''
+						this.from.qualified = ''
+						this.from.undesirable = ''
+						this.from.duration = ''
+						this.from.durationName = '0灏忔椂0鍒嗛挓'
+						this.from.time = ''
+						this.from.defective = []
+						this.from.defectiveName = ''
+						this.wuList = []
+						this.deviceId = ''
+						this.plansId = ''
+						this.ids = ''
+						this.total = ''
+					}
+				})
+			},
+			// 鎶ュ伐
+			submit() {
+				if (!this.from.processPlan) return uni.showToast({ title: '璁″垝涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				if (!this.from.deviceId) return uni.showToast({ title: '璁惧涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				if (!this.from.userId) return uni.showToast({ title: '鐢熶骇浜哄憳涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				if (this.hasBom == 1 && this.bomType == 1) {
+					console.log('涓嶉渶瑕佹姇鏂�')
+				} else {
+					if (!this.wuList.length === 0) return uni.showToast({ title: '鎶曟枡涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+				}
+				if (!this.from.qualified && !this.from.undesirable) {
+					return uni.showToast({ title: '鑹搧鏁颁笌涓嶈壇鏁颁笉鑳藉悓鏃朵负绌�', icon: 'none', duration: 2000 });
+				}
+				// 鏈変笉鑹暟
+				if (this.from.undesirable > 0) {
+					if (this.from.defective.length === 0) return uni.showToast({ title: '涓嶈壇椤逛笉鑳戒负绌�', icon: 'none', duration: 2000 });
+				}
+				let type = ''
+				this.arrType.forEach(item => {
+					if (item.active) {
+						type = item.id
+					}
+				})
+				autoWorkReport({
+					createWorkorderRecordDTO: {
+						type,
+						duration: this.from.duration,
+						qualifiedNum: this.from.qualified ? this.from.qualified : 0,
+						unQualifiedNum: this.from.undesirable ? this.from.undesirable : 0
+					},
+					plansId: this.from.processPlan.id,
+					proGroupId: this.deviceId,
+					proUserList: [this.from.userId],
+					recordList: this.wuList.map(item => {
+						return {
+							wstockId: item.id,
+							num: item.num
+						}
+					}),
+					createUnqualifiedDTOList: this.from.defective.map(item => {
+						return {
+							categoryId: item.id,
+							unQualifiedNum: item.num
+						}
+					})
+				}).then(res => {
+					if (res.code === 200) {
+						uni.showToast({ title: '鎶ュ伐鎴愬姛锛�', icon: 'success', duration: 2000 });
+						setTimeout(() => {
+							uni.navigateBack({ delta: 1 });
+						}, 2000);
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.bg {
+		width: 100%;
+		position: absolute;
+		background: #F7F7F7;
+		.contanir {
+			height: calc(env(safe-area-inset-bottom) + 720rpx);
+			.content {
+				margin-top: 20rpx;
+				.type-style {
+					width: 325rpx;
+					margin-bottom: 20rpx;
+				}
+			}
+		}
+		.bg_plan {
+			width: 100%;
+			// height: 98rpx;
+			padding: 30rpx;
+			box-sizing: border-box;
+			background: #FFFFFF;
+			margin-bottom: 40rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			text {
+				font-size: 30rpx;
+				font-family: PingFangSC-Regular, PingFang SC;
+				font-weight: 400;
+				color: #222222;
+				b {
+					color: red;
+				}
+			}
+			.bg_plan_nr {
+				display: flex;
+				flex-direction: column;
+				text {
+					font-size: 24rpx;
+					font-family: PingFangSC-Regular, PingFang SC;
+					font-weight: 400;
+					color: #666666;
+					margin-top: 20rpx;
+					&:first-child {
+						font-size: 32rpx;
+						font-family: PingFangSC-Medium, PingFang SC;
+						font-weight: 500;
+						color: #333333;
+						margin-top: 0 !important;
+					}
+				}
+			}
+			.bg_plan_label_val {
+				display: flex;
+				align-items: center;
+				text {
+					font-size: 28rpx;
+					font-family: PingFangSC-Regular, PingFang SC;
+					font-weight: 400;
+					color: #999999;
+				}
+				image {
+					width: 12rpx;
+					height: 24rpx;
+					margin-left: 20rpx;
+				}
+			}
+		}
+		.bg_list {
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+			.bottomval {
+				margin-bottom: 20rpx !important;
+			}
+			.bg_list_item {
+				display: flex;
+				flex-direction: column;
+				margin-bottom: 40rpx;
+				.kong {
+					text-align: center;
+					padding: 30rpx 0;
+					background: #ffffff;
+					font-size: 25rpx;
+					text {
+						color: #474747;
+					}
+				}
+				.bg_list_item_top {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					padding-left: 30rpx;
+					padding-right: 30rpx;
+					margin-bottom: 30rpx;
+					.bg_list_item_top_left {
+						display: flex;
+						align-items: center;
+						.left {
+							margin-left: 12rpx;
+							font-size: 28rpx;
+						}
+						.warning {
+							width: 8rpx;
+							height: 30rpx;
+							border-radius: 2rpx;
+							margin-right: 12rpx;
+							background: $nav-stateColor5 !important;
+						}
+						.error {
+							width: 8rpx;
+							height: 30rpx;
+							border-radius: 2rpx;
+							margin-right: 12rpx;
+							background: $nav-stateColor4 !important;
+						}
+						.bg_list_item_top_left_x {
+							width: 8rpx;
+							height: 30rpx;
+							background: $nav-color;
+							border-radius: 2rpx;
+							margin-right: 12rpx;
+						}
+						text {
+							font-size: 32rpx;
+							font-weight: 500;
+							color: #222222;
+							display: flex;
+							align-items: center;
+						}
+					}
+					.bg_list_item_top_right {
+						display: flex;
+						align-items: center;
+						image {
+							width: 28rpx;
+							height: 28rpx;
+							margin-right: 12rpx;
+						}
+						text {
+							font-size: 28rpx;
+							font-weight: 400;
+							color: $nav-color;
+						}
+					}
+				}
+				.top {
+					margin-top: 20rpx !important;
+				}
+				.bg_list_item_h {
+					width: 100%;
+					padding: 0 30rpx;
+					box-sizing: border-box;
+					background: white;
+					.bg_list_item_num {
+						width: 100%;
+						min-height: 98rpx;
+						background: white;
+						display: flex;
+						justify-content: center;
+						align-items: center;
+						border-bottom: 1rpx solid #E5E5E5;
+						&:last-child {
+							border: none !important;
+						}
+						.kong {
+							text-align: center;
+							font-size: 25rpx;
+							padding: 30rpx 0;
+							background: #ffffff;
+						}
+						.bg_list_item_num_item {
+							width: 100%;
+							height: 100%;
+							display: flex;
+							align-items: center;
+							// height: 118rpx;
+							padding: 15rpx 0;
+							box-sizing: border-box;
+							justify-content: space-between;
+							border-bottom: 1rpx solid #E5E5E5;
+							&:last-child {
+								border: none;
+							}
+							.bg_list_item_num_item_list {
+								display: flex;
+								align-items: center;
+								.active {
+									background: #305ED5 !important;
+									color: #FFFFFF !important;
+								}
+								.bg_list_item_num_item_list_item {
+									width: 116rpx;
+									height: 62rpx;
+									line-height: 62rpx;
+									text-align: center;
+									background: #F2F2F2;
+									border-radius: 8rpx;
+									font-size: 26rpx;
+									font-family: PingFangSC-Regular, PingFang SC;
+									font-weight: 400;
+									color: #333333;
+									margin-right: 20rpx;
+									&:last-child {
+										margin: 0 !important;
+									}
+								}
+							}
+							.bg_list_item_num_item_wl {
+								flex-shrink: 0;
+								display: flex;
+								flex-direction: column;
+								text {
+									font-size: 34rpx;
+									color: #222222;
+								}
+								.bg_list_item_num_item_wl_lx {
+									margin-top: 10rpx;
+									text {
+										color: #222222;
+										font-size: 28rpx;
+									}
+								}
+							}
+							.warning {
+								color: $nav-stateColor5 !important;
+							}
+							.err {
+								color: $nav-stateColor4 !important;
+							}
+							image {
+								width: 12rpx;
+								height: 24rpx;
+								margin-left: 20rpx;
+							}
+							text {
+								flex-shrink: 0;
+								overflow: hidden;
+								text-overflow: ellipsis;
+								white-space: nowrap;
+								b {
+									font-size: 30rpx;
+									color: red;
+									margin-right: 5rpx;
+								}
+								.warning {
+									color: $nav-stateColor5 !important;
+									margin-right: 5rpx;
+								}
+								.err {
+									color: $nav-stateColor4 !important;
+									margin-right: 5rpx;
+								}
+								&:nth-child(1) {
+									font-size: 30rpx;
+									font-weight: 400;
+									color: #222222;
+								}
+								&:nth-child(2) {
+									font-size: 28rpx;
+									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;
+								.color1 {
+									font-size: 28rpx;
+									font-family: PingFangSC-Regular, PingFang SC;
+									font-weight: 400;
+									color: #333333;
+								}
+								input::-webkit-input-placeholder {
+									font-size: 28rpx;
+								}
+								input {
+									text-align: right;
+									width: 180rpx;
+									height: 60rpx;
+									border-radius: 8rpx;
+									border: 1rpx solid #E5E5E5;
+									margin-right: 20rpx;
+									font-size: 28rpx;
+									font-weight: 400;
+									color: #333333;
+									padding: 0 30rpx;
+								}
+								.wulll {
+									width: 400rpx;
+									text-align: right;
+									overflow: hidden;
+									white-space: nowrap;
+									text-overflow: ellipsis;
+								}
+								text {
+									font-size: 28rpx;
+									font-family: PingFangSC-Regular, PingFang SC;
+									font-weight: 400;
+									color: #999999;
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		.bh_zw {
+			height: 160rpx;
+		}
+		.bg_footer {
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			width: 100%;
+			z-index: 9;
+			padding: 0 30rpx 60rpx 30rpx;
+			box-sizing: border-box;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			.bg_footer_submit1 {
+				width: 334rpx;
+				height: 88rpx;
+				line-height: 88rpx;
+				text-align: center;
+				background: #FFFFFF;
+				box-shadow: 0rpx 0rpx 12rpx 0rpx rgba(0,0,0,0.08);
+				border-radius: 8rpx;
+				font-size: 30rpx;
+				font-family: PingFangSC-Medium, PingFang SC;
+				font-weight: 500;
+				color: #305ED5;
+			}
+			.bg_footer_submit {
+				width: 334rpx;
+				height: 88rpx;
+				background: $nav-color;
+				box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+				border-radius: 8rpx;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+			}
+		}
+		.bl {
+			width: 100%;
+			height: 800rpx;
+			padding: 30rpx;
+			box-sizing: border-box;
+			display: flex;
+			flex-direction: column;
+			.bl_head {
+				width: 100%;
+				height: 50rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				text {
+					font-size: 28rpx;
+					color: #222222;
+					&:nth-child(2) {
+						font-size: 32rpx !important;
+					}
+				}
+				image {
+					width: 28rpx;
+					height: 28rpx;
+				}
+			}
+			.bl_footer {
+				width: 100%;
+				height: 88rpx;
+				line-height: 88rpx;
+				text-align: center;
+				background: #305ED5;
+				border-radius: 8rpx;
+				font-size: 32rpx;
+				font-family: PingFangSC-Medium, PingFang SC;
+				font-weight: 500;
+				color: #FFFFFF;
+				margin-top: 30rpx;
+			}
+			.bl_list {
+				width: 100%;
+				height: calc(100% - 168rpx);
+				overflow-y: scroll;
+				margin-top: 30rpx;
+				.bl_list_item {
+					width: 100%;
+					height: 96rpx;
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					border-bottom: 1rpx solid #E5E5E5;
+					&:last-child {
+						border: none !important;
+					}
+					.bl_list_item_left {
+						flex: 1;
+						display: flex;
+						align-items: center;
+						input {
+							width: 30rpx;
+							height: 30rpx;
+							border: 1rpx solid #CCCCCC;
+							margin: 0 !important;
+						}
+						text {
+							font-size: 30rpx;
+							color: #222222;
+							margin-left: 10rpx;
+						}
+					}
+					.bl_list_item_right {
+						flex: 1;
+						height: 50rpx;
+						text-align: right;
+						input {
+							padding-left: 5rpx;
+							width: 160rpx;
+							height: 100%;
+							padding: 0 30rpx;
+							box-sizing: border-box;
+							text-align: right;
+							font-size: 28rpx;
+							color: #333333;
+							border-radius: 10rpx;
+							border: 1rpx solid #CCCCCC;
+							&::-webkit-input-placeholder {
+								font-size: 28rpx;
+								font-family: PingFangSC-Regular, PingFang SC;
+								font-weight: 400;
+								color: #999999;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+</style>
diff --git a/minipro_standard/pages_adjust/pages/transferList/transferList.vue b/minipro_standard/pages_adjust/pages/transferList/transferList.vue
new file mode 100644
index 0000000..411c87c
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/transferList/transferList.vue
@@ -0,0 +1,774 @@
+<template>
+	<view class="content">
+		<view class="content_search">
+			<Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true"
+				placeholder="鎼滅储杞簱鍗曞彿">
+				<template v-slot:content>
+					<view class="Search_item">
+						<view class="Search_item_label">璁″垝鏃ユ湡</view>
+						<view class="Search_item_content" @click="openDate">
+							<view class="Search_item_content_a" :style="listData.startDate ? 'color: #000' : ''">
+								{{ listData.startDate ? listData.startDate : '寮�濮嬫棩鏈�'}}</view>
+							<text>-</text>
+							<view class="Search_item_content_a" :style="listData.endDate ? 'color: #000' : ''">
+								{{ listData.endDate ? listData.endDate : '缁撴潫鏃ユ湡'}}</view>
+						</view>
+					</view>
+					<view class="Search_item">
+						<view class="Search_item_label">鍗曟嵁绫诲瀷</view>
+						<view class="Search_item_content">
+							<view class="tag">
+								<view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in types"
+									:key="item.id" @click="changeTags(i)">{{item.name}}</view>
+							</view>
+						</view>
+					</view>
+				</template>
+			</Search>
+			<view class="content_search_x"></view>
+			<LabelSelection :TagList="tagList" :isShow="true" @change="clickTag" />
+		</view>
+		<view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+		<view class="content_list">
+			<scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+				<view class="content_list_item" v-for="(item, i) in lists" :key="i" @click="jump(item)">
+					<!-- item澶撮儴瑙嗗浘 -->
+					<view class="content_list_item_top">
+						<view class="content_list_item_top_left">
+							<!--                <text>杞簱鍗曞彿锛�</text>-->
+							<text>{{ item.code }}</text>
+						</view>
+						<view class="content_list_item_top_right">
+							<text class="created" v-if="item.status === 0">寰呭嚭搴�</text>
+							<text class="warning" v-else-if="item.status === 1">宸插嚭搴�</text>
+							<text class="green" v-else-if="item.status === 2">宸插叆搴�</text>
+							<text class="info" v-else-if="item.status === 3">宸插彇娑�</text>
+							<text class="info" v-else-if="item.status === 4">宸查��鍥�</text>
+						</view>
+					</view>
+					<!-- item涓婚淇℃伅閮ㄥ垎 -->
+					<view class="content_list_item_content">
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ tyepToStr(item.type) }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">杞嚭浠撳簱锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.outWarehouseName }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">杞嚭浠撶鍛橈細</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.outUserName }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">杞叆浠撳簱锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.inWarehouseName }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">杞叆浠撶鍛橈細</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.inUserName }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">璁″垝杞嚭鏃ユ湡锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.outPlandate }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">璁″垝杞叆鏃ユ湡锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.inPlandate }}
+							</view>
+						</view>
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+		<!-- 閫夋嫨鏃ユ湡 -->
+		<u-calendar :show="timeShow" @close="timeShow = false" @confirm="timeConfirm"></u-calendar>
+	</view>
+</template>
+
+<script>
+	import Search from '@/components/Search.vue'
+	import LabelSelection from '@/components/LabelSelection.vue'
+	export default {
+		components: {
+			Search,
+			LabelSelection
+		},
+		data() {
+			return {
+				height: '',
+				top: '',
+				listData: {
+					capacity: 10,
+					page: 0,
+					total: 0,
+					startDate: '',
+					endDate: '',
+					procedureIds: [],
+					departIds: '',
+					mixParam: '',
+					cateIds: []
+				},
+				types: [
+					// { name: '鍏ㄩ儴', id: '', isActive: false },
+					// { name: '杞﹂棿棰嗘枡', id: '1', isActive: false },
+					// { name: '杞﹂棿澶囨枡', id: '2', isActive: false },
+					// { name: '鍏朵粬', id: '3', isActive: false },
+					{
+						name: '杞﹂棿棰嗘枡',
+						id: '1',
+						isActive: false
+					},
+					{
+						name: '璁″垝棰嗘枡',
+						id: '2',
+						isActive: false
+					},
+					{
+						name: '鏈哄彴澶囨枡',
+						id: '3',
+						isActive: false
+					},
+					{
+						name: '瀹屽伐鍏ュ簱',
+						id: '4',
+						isActive: false
+					},
+					{
+						name: '杞﹂棿杞簱',
+						id: '5',
+						isActive: false
+					},
+					{
+						name: '澶栧崗棰嗘枡杞簱',
+						id: '6',
+						isActive: false
+					},
+					{
+						name: '澶栧崗瀹屽伐杞簱',
+						id: '7',
+						isActive: false
+					},
+					{
+						name: '浜у搧鍏ュ簱',
+						id: '8',
+						isActive: false
+					},
+					{
+						name: '浜у搧杞簱',
+						id: '9',
+						isActive: false
+					},
+					{
+						name: '璁╂鏀捐鍏ュ簱',
+						id: '10',
+						isActive: false
+					},
+					{
+						name: '璁╂鏀捐杞簱',
+						id: '11',
+						isActive: false
+					},
+					{
+						name: '瀹㈣繑杩斾慨棰嗘枡',
+						id: '12',
+						isActive: false
+					},
+					{
+						name: '瀹㈣繑杩斾慨鍏ュ簱',
+						id: '13',
+						isActive: false
+					},
+					{
+						name: '璺ㄧ粍缁囪浆搴�',
+						id: '14',
+						isActive: false
+					},
+					{
+						name: '宸ュ簭鎶ュ簾',
+						id: '15',
+						isActive: false
+					},
+					{
+						name: '瀹㈤��杩斾慨棰嗘枡',
+						id: '16',
+						isActive: false
+					},
+					{
+						name: '瀹㈤��杩斾慨鍏ュ簱',
+						id: '17',
+						isActive: false
+					},
+					{
+						name: '搴熷搧鍏ュ簱',
+						id: '30',
+						isActive: false
+					}
+				],
+				orderType: [
+					{ name: '杞﹂棿棰嗘枡', id: 1 },
+					{ name: '璁″垝棰嗘枡', id: 2 },
+					{ name: '鏈哄彴澶囨枡', id: 3 },
+					{ name: '瀹屽伐鍏ュ簱', id: 4 },
+					{ name: '杞﹂棿杞簱', id: 5 },
+					{ name: '澶栧崗棰嗘枡杞簱', id: 6 },
+					{ name: '澶栧崗瀹屽伐杞簱', id: 7 },
+					{ name: '浜у搧鍏ュ簱', id: 8 },
+					{ name: '浜у搧杞簱', id: 9 },
+					{ name: '璁╂鏀捐鍏ュ簱', id: 10 },
+					{ name: '璁╂鏀捐杞簱', id: 11 },
+					{ name: '瀹㈣繑杩斾慨棰嗘枡', id: 12 },
+					{ name: '瀹㈣繑杩斾慨鍏ュ簱', id: 13 },
+					{ name: '璺ㄧ粍缁囪浆搴�', id: 14 },
+					{ name: '宸ュ簭鎶ュ簾', id: 15 },
+					{ name: '瀹㈤��杩斾慨棰嗘枡', id: 16 },
+					{ name: '瀹㈤��杩斾慨鍏ュ簱', id: 17 },
+					{ name: '搴熷搧鍏ュ簱', id: 30 }
+				],
+				tagList: [{
+						id: "",
+						name: "鍏ㄩ儴",
+						num: "10",
+					},
+					{
+						id: "0",
+						name: "宸茶鍒�",
+						num: "132",
+					},
+					{
+						id: "1",
+						name: "宸茶浆鍑�",
+						num: "3",
+					},
+					{
+						id: "2",
+						name: "宸茶浆鍏�",
+						num: "12",
+					},
+					{
+						id: "3",
+						name: "宸插彇娑�",
+						num: "12",
+					}
+				],
+				data: [], // 宸ュ簭鏁版嵁
+				factoryList: [],
+				finished: true,
+				loading: false,
+				refreshing: false,
+				timeShow: false,
+				lists: [{
+						id: 1,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 2,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 3,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 4,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 5,
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					}
+				]
+			};
+		},
+		onReady() {
+			var that = this
+			this.$nextTick(() => {
+				uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+					that.height = `calc(100vh - ${rect.height + 80}px)`
+					that.top = `${rect.height}px`
+				}).exec()
+			})
+		},
+		methods: {
+			tyepToStr(type) {
+				//  <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+				for (const item of this.orderType) {
+					if (item.id == type) {
+						return item.name
+					}
+				}
+				return '-'
+			},
+			// 璺宠浆
+			jump(item) {
+				uni.navigateTo({
+					url: `/pages/planDetails/planDetails?id=${item.id}`
+				})
+			},
+			// 鑾峰彇澶撮儴缁勪欢楂樺害
+			getHeight(height) {
+				this.height = height
+			},
+			// 閲嶇疆
+			reset() {
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.listData.mixParam = ''
+				this.listData.startDate = ''
+				this.listData.endDate = ''
+				this.listData.procedureIds = []
+				if (this.factoryList.length > 0) {
+					this.listData.departIds = this.factoryList[0].id
+				}
+				if (this.data.length > 0) {
+					this.data.forEach(item => {
+						item.isActive = false
+					})
+				}
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鏃ユ湡纭畾
+			timeConfirm(val) {
+				this.listData.startDate = val[0]
+				this.listData.endDate = val[val.length - 1]
+				this.timeShow = false
+			},
+			// 鍒囨崲宸ュ巶
+			changeTags(i, id) {
+				this.listData.departIds = id
+				this.getWorkingProcedures(id)
+				this.factoryList.forEach((item, index) => {
+					if (index === i) {
+						item.isActive = true
+					} else {
+						item.isActive = false
+					}
+				})
+			},
+			// 鎵撳紑鏃ユ湡鎻掍欢
+			openDate() {
+				this.timeShow = true
+			},
+			// 鎼滅储
+			searchInput(val) {
+				this.listData.mixParam = val
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.getLists()
+			},
+			// 鐐瑰嚮鏍囩鎼滅储
+			clickTag(ids) {
+				this.listData.cateIds = ids
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+			},
+			// 鑾峰彇鍒楄〃缁熻
+			pageCounts() {
+				pageCount({
+					factoryId: this.listData.departIds,
+					procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+					startDate: this.listData.startDate,
+					endDate: this.listData.endDate,
+					statusList: this.listData.cateIds
+				}).then(res => {
+					if (res.code === 200 && res.data) {
+						this.tagList[0].num = res.data.allNum.toString()
+						this.tagList[1].num = res.data.startNum.toString()
+						this.tagList[2].num = res.data.ingNum.toString()
+						this.tagList[3].num = res.data.endNum.toString()
+					}
+				})
+			},
+			// 鑾峰彇宸ュ巶鏁版嵁
+			getOrganizations() {
+				getOrganization({
+					type: 1
+				}).then(res => {
+					if (res.code === 200 && res.data && res.data.length !== 0) {
+						res.data.forEach((item, i) => {
+							item.isActive = i === 0;
+						})
+						if (res.data.length > 0) {
+							this.factoryList = res.data
+							this.listData.departIds = this.factoryList[0].id
+							this.listData.procedureIds = ''
+							this.finished = false
+							this.getWorkingProcedures(this.factoryList[0].id)
+							this.getLists()
+							this.pageCounts()
+						}
+					}
+				})
+			},
+			// 鑾峰彇宸ュ簭鏁版嵁
+			getWorkingProcedures(orgId) {
+				this.data = []
+				getWorkingProcedure({
+						orgId
+					})
+					.then(res => {
+						if (res.code === 200 && res.data && res.data.length !== 0) {
+							res.data.forEach((item, i) => {
+								item.isActive = false;
+							})
+							this.data = res.data
+						}
+					})
+			},
+			// 鎼滅储寮规鎻愪氦
+			submit() {
+				let pmodelOrgId = []
+				this.data.forEach((item) => {
+					if (item.isActive) {
+						pmodelOrgId.push(item.id)
+					}
+				})
+				this.listData.procedureIds = pmodelOrgId
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鑾峰彇璁″垝鍒楄〃鏁版嵁
+			getLists() {
+				console.log('getLists')
+				if (!this.finished) {
+					this.loading = true
+					this.listData.page = this.listData.page++
+					getList({
+						capacity: this.listData.capacity,
+						model: {
+							mixParam: this.listData.mixParam,
+							startDate: this.listData.startDate,
+							endDate: this.listData.endDate,
+							procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+							factoryId: this.listData.departIds,
+							statusList: this.listData.cateIds
+						},
+						page: this.listData.page,
+						sorts: [{
+							direction: 'ASC',
+							property: 'publishDate'
+						}]
+					}).then(res => {
+						this.loading = false
+						this.listData.total = res.data.total
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+						if (res.code === 200 && res.data.records.length !== 0) {
+							if (this.lists.length === 0) {
+								this.lists = res.data.records
+							} else {
+								this.lists.push(...res.data.records)
+							}
+						} else {
+							this.finished = true
+						}
+					}).catch(err => {
+						this.loading = false
+						this.finished = true
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		.content_search {
+			width: 100%;
+			padding: 30rpx;
+			background: white;
+			position: sticky;
+			top: 0;
+			z-index: 999;
+			box-sizing: border-box;
+
+			.Search_item {
+				margin-bottom: 40rpx;
+
+				.Search_item_label {
+					font-size: 30rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+
+				.Search_item_content {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					margin-top: 30rpx;
+
+					.tag {
+						display: flex;
+						flex-wrap: wrap;
+						align-items: center;
+
+						.tag_active {
+							background: $nav-color !important;
+							color: #ffffff !important;
+						}
+
+						.tag_item {
+							padding: 22rpx 26rpx;
+							box-sizing: border-box;
+							background: #F2F2F2;
+							border-radius: 8rpx;
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #333333;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							margin-right: 22rpx;
+							margin-bottom: 22rpx;
+						}
+					}
+
+					text {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						margin: 0 30rpx;
+					}
+
+					.Search_item_content_a {
+						padding: 20rpx 0;
+						flex: 1;
+						background: #F7F7F7;
+						border-radius: 8rpx;
+						border: 1rpx solid #EEEEEE;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #B2B2B2;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+					}
+				}
+			}
+
+			.content_search_x {
+				height: 24rpx;
+			}
+		}
+
+		.content_list {
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+
+			.content_list_item {
+				width: 100%;
+				box-sizing: border-box;
+				padding: 30rpx;
+				display: flex;
+				flex-direction: column;
+				border-bottom: 1rpx solid #ececec;
+				background: white;
+
+				.content_list_item_top {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+
+					.content_list_item_top_left {
+						display: flex;
+						align-items: center;
+
+						text {
+							font-size: 32rpx;
+							font-weight: 500;
+							color: #333333;
+						}
+					}
+
+					.content_list_item_top_right {
+						font-size: 26rpx;
+						font-weight: 400;
+
+						.created {
+							color: $nav-stateColor1 !important;
+						}
+
+						.warning {
+							color: $nav-stateColor5 !important;
+						}
+
+						.green {
+							color: $nav-stateColor6 !important;
+						}
+
+						.info {
+							color: $nav-stateColor3 !important;
+						}
+					}
+				}
+
+				.content_list_item_content {
+					padding: 24rpx 30rpx;
+					background: #f7f7f7;
+					border-radius: 16rpx;
+					display: flex;
+					flex-wrap: wrap;
+					justify-content: space-between;
+					margin-top: 32rpx;
+
+					.content_list_item_content_item {
+						width: 100%;
+						display: flex;
+						margin-top: 24rpx;
+
+						&:first-child {
+							margin-top: 0;
+						}
+
+						// &:nth-child(1) {
+						//   margin-top: 0 !important;
+						// }
+						// &:nth-child(2) {
+						//   margin-top: 0 !important;
+						// }
+						.content_list_item_content_item_label {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+
+						.content_list_item_content_item_nr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+							margin-right: 10rpx;
+						}
+					}
+				}
+			}
+		}
+
+		.content_total {
+			width: 100%;
+			height: 80rpx;
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			box-sizing: border-box;
+			color: #666666;
+			position: sticky;
+			z-index: 99;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/warehousingDetails/warehousingDetails.vue b/minipro_standard/pages_adjust/pages/warehousingDetails/warehousingDetails.vue
new file mode 100644
index 0000000..95f001b
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/warehousingDetails/warehousingDetails.vue
@@ -0,0 +1,330 @@
+<template>
+	<view class="content">
+		<view class="order-message">
+			<view class="content_list_item_top">
+				<view class="content_list_item_top_left">
+					<!--<text>鍏ュ簱鍗曞彿锛�</text>-->
+					<text>{{ data.code }}</text>
+				</view>
+				<view class="content_list_item_top_right">
+					<text class="warning" v-if="data.status === 0">寰呭叆搴�</text>
+					<text class="green" v-else-if="data.status === 1">宸插叆搴�</text>
+					<text class="info" v-else-if="data.status === 2">宸插彇娑�</text>
+				</view>
+			</view>
+			<view class="content_list_item_content">
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ orderTyepToStr(data.billType) }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鍏ヨ揣浠撳簱锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.warehouseCode + ' | ' + data.warehouseName }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">璁″垝鏃ユ湡锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.planDate }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鏉ユ簮绫诲瀷锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ tyepToStr(data.originType) }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鏉ユ簮鍗曞彿锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.originCode ? data.originCode : '-' }}
+					</view>
+				</view>
+				<view v-if="data.updateName" class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鎿嶄綔浜猴細</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.updateName + ' - ' + data.updateMobile }}
+					</view>
+				</view>
+				<view v-if="data.updateTime" class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鎿嶄綔鏃堕棿锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.updateTime }}
+					</view>
+				</view>
+			</view>
+		</view>
+		<!-- 杞簱鐗╂枡 -->
+		<view class="title">
+			<text class="title-prefix"></text>
+			<text>{{ data.status==1 ? '宸插叆搴撶墿鏂�' : '寰呭叆搴撶墿鏂�' }}</text>
+		</view>
+		<view class="material-content">
+			<view class="item-style" v-for="(item, index) in materailArray" :key="index">
+				<view class="item-title-style">
+					<text style="font-weight: 500;">{{ item.materialName + ' | ' + item.materialCode}}</text>
+				</view>
+				<view class="item-content-style">
+					<view class="content_list_item_content_item">
+						<text class="content_list_item_content_item_label">鎵规鍙凤細</text>
+						<text class="content_list_item_content_item_nr">{{ item.batch || '-' }}</text>
+					</view>
+					<view class="content_list_item_content_item">
+						<text class="content_list_item_content_item_label">鏁伴噺锛�</text>
+						<text class="content_list_item_content_item_nr">{{ item.doneNum + item.unitName }}</text>
+					</view>
+					<view class="content_list_item_content_item">
+						<text class="content_list_item_content_item_label">宸ュ簭锛�</text>
+						<text class="content_list_item_content_item_nr">{{ item.procedureName || '-' }}</text>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">璐ㄩ噺锛�</view>
+						<view class="content_list_item_content_item_nr">
+							<text v-if="item.qualityType == 0" class="green">鍚堟牸</text>
+							<text v-else-if="item.qualityType == 1" class="yellow">涓嶈壇</text>
+							<text v-else-if="item.qualityType == 2" class="red">鎶ュ簾</text>
+							<text v-else>-</text>
+						</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<text class="content_list_item_content_item_label">鍏ュ簱璐т綅锛�</text>
+						<text
+							class="content_list_item_content_item_nr">{{ item.locationName ? item.locationName : '-' }}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view v-if="data.status === 0" style="height:94rpx"></view>
+		<view v-if="data.status === 0" class="bottom-button">
+			<button class="button button-cancel" @click="submit">鍘诲叆搴�</button>
+			<!-- <button class="button button-cancel" @click="cancel">鍙栨秷</button> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import { orderTyepToStr } from '@/util/constData.js'
+	export default {
+		data() {
+			return {
+				types: [
+					{ name: '鍏ㄩ儴', id: '', isActive: true },
+					{ name: '閲囪喘璁㈠崟', id: '0', isActive: false },
+					{ name: '鐢熶骇宸ュ崟', id: '1', isActive: false },
+					{ name: '閿�鍞鍗�', id: '2', isActive: false },
+					{ name: '杞簱鍗�', id: '3', isActive: false },
+					{ name: '鐩樼偣鍗�', id: '4', isActive: false },
+				],
+				data: {}
+			};
+		},
+		methods: {
+			tyepToStr(type) {
+				//  <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+				for (const item of this.types) {
+					if (parseInt(item.id) === this.type) {
+						return item.name
+					}
+				}
+				return '-'
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		background: white;
+
+		.order-message {
+			padding: 30rpx;
+			display: flex;
+			flex-direction: column;
+
+			// border-bottom: 1rpx solid #ececec;
+			.content_list_item_top {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				.content_list_item_top_left {
+					display: flex;
+
+					// align-items: center;
+					text {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #333333;
+					}
+				}
+
+				.content_list_item_top_right {
+					font-size: 26rpx;
+					font-weight: 400;
+
+					.created {
+						color: $nav-stateColor1 !important;
+					}
+
+					.warning {
+						color: $nav-stateColor5 !important;
+					}
+
+					.green {
+						color: $nav-stateColor6 !important;
+					}
+
+					.info {
+						color: $nav-stateColor3 !important;
+					}
+				}
+			}
+
+			.content_list_item_content {
+				padding: 24rpx 30rpx;
+				background: #f7f7f7;
+				border-radius: 16rpx;
+				display: flex;
+				flex-wrap: wrap;
+				justify-content: space-between;
+				margin-top: 32rpx;
+
+				.content_list_item_content_item:first-child {
+					margin-top: 0;
+				}
+
+				.content_list_item_content_item {
+					width: 100%;
+					display: flex;
+					align-items: center;
+					margin-top: 24rpx;
+
+					.content_list_item_content_item_label {
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #666666;
+						flex-shrink: 0;
+					}
+
+					.content_list_item_content_item_nr {
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #222222;
+						margin-right: 10rpx;
+					}
+				}
+			}
+		}
+
+		.title {
+			background-color: #f7f7f7;
+			padding: 30rpx;
+			font-size: 30rpx;
+			display: flex;
+			align-items: center;
+
+			.title-prefix {
+				display: inline-block;
+				background-color: #4275FC;
+				height: 30rpx;
+				width: 8rpx;
+				border-radius: 1rpx;
+				margin-right: 12rpx;
+			}
+		}
+
+		.material-content {
+			padding: 30rpx;
+
+			.item-style {
+				width: initial;
+				border-bottom: 1rpx solid #ececec;
+				margin-top: 30rpx;
+
+				&:first-child {
+					margin-top: 0 !important;
+				}
+
+				&:last-child {
+					border: none;
+				}
+
+				.item-title-style {
+					margin-bottom: 12rpx;
+					font-size: 30rpx;
+				}
+
+				.item-content-style {
+					// padding: 24rpx 30rpx;
+					// background-color: #f7f7f7;
+					// border-radius: 16rpx;
+					display: flex;
+					flex-wrap: wrap;
+					padding-bottom: 30rpx;
+					justify-content: space-between;
+
+					&:last-child {
+						padding-bottom: 0;
+					}
+
+					.content_list_item_content_item {
+						width: 100%;
+						display: flex;
+						margin-top: 24rpx;
+
+						.content_list_item_content_item_label {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+
+						.content_list_item_content_item_nr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+							margin-right: 10rpx;
+						}
+					}
+				}
+			}
+		}
+
+		.bottom-button {
+			padding: 1rpx;
+			background-color: #f7f7f7;
+			position: fixed;
+			width: 100%;
+			bottom: 0;
+			height: 188rpx;
+			display: flex;
+			justify-content: space-between;
+
+			.button-action {
+				background: #fff;
+				color: $nav-color;
+			}
+
+			.button-cancel {
+				background: $nav-color;
+				color: #FFFFFF;
+			}
+
+			.button {
+				margin: 32rpx 32rpx 68rpx 32rpx;
+				height: 88rpx;
+				/*width: 668rpx;*/
+				// width: 334rpx;
+				border: none;
+				border-radius: 8rpx;
+				box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+				display: flex;
+				align-items: center;
+				justify-content: center;
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/warehousingDetails1/warehousingDetails1.vue b/minipro_standard/pages_adjust/pages/warehousingDetails1/warehousingDetails1.vue
new file mode 100644
index 0000000..3f94b84
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/warehousingDetails1/warehousingDetails1.vue
@@ -0,0 +1,346 @@
+<template>
+	<view class="content">
+		<view class="order-message">
+			<view class="content_list_item_top">
+				<view class="content_list_item_top_left">
+					<!--<text>鍏ュ簱鍗曞彿锛�</text>-->
+					<text>{{ data.code }}</text>
+				</view>
+				<view class="content_list_item_top_right">
+					<text class="warning" v-if="data.status === 0">寰呭叆搴�</text>
+					<text class="green" v-else-if="data.status === 1">宸插叆搴�</text>
+					<text class="info" v-else-if="data.status === 2">宸插彇娑�</text>
+				</view>
+			</view>
+			<view class="content_list_item_content">
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+					<view class="content_list_item_content_item_nr" v-if="data.billType">
+						{{ orderTyepToStr(data.billType) }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鍏ュ簱浠撳簱锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.warehouseCode + ' | ' + data.warehouseName }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">璁″垝鍏ュ簱锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.planDate }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鏉ユ簮绫诲瀷锛�</view>
+					<view class="content_list_item_content_item_nr" v-if="data.originType">
+						{{ tyepToStr(data.originType) }}
+					</view>
+				</view>
+				<view class="content_list_item_content_item">
+					<view class="content_list_item_content_item_label">鏉ユ簮鍗曞彿锛�</view>
+					<view class="content_list_item_content_item_nr">
+						{{ data.originCode ? data.originCode : '-' }}
+					</view>
+				</view>
+			</view>
+		</view>
+		<!-- 杞簱鐗╂枡 -->
+		<view class="title">
+			<text class="title-prefix"></text>
+			<text>鍏ュ嚭搴撶墿鏂�</text>
+		</view>
+		<view class="material-content">
+			<view class="item-style" v-for="(item, index) in materailArray" :key="index">
+				<view class="item-title-style">
+					<text style="font-weight: 500;">{{ item.materialName + ' | ' + item.materialCode}}</text>
+				</view>
+				<view class="item-content-style">
+					<view class="content_list_item_content_item">
+						<text class="content_list_item_content_item_label">鎵规鍙凤細</text>
+						<text class="content_list_item_content_item_nr">{{ item.batch || '-' }}</text>
+					</view>
+					<view class="content_list_item_content_item">
+						<text class="content_list_item_content_item_label">鏁伴噺锛�</text>
+						<text class="content_list_item_content_item_nr">{{ item.doneNum + item.unitName }}</text>
+					</view>
+					<view class="content_list_item_content_item">
+						<text class="content_list_item_content_item_label">宸ュ簭锛�</text>
+						<text class="content_list_item_content_item_nr">{{ item.procedureName || '-' }}</text>
+					</view>
+					<view class="content_list_item_content_item">
+						<view class="content_list_item_content_item_label">璐ㄩ噺锛�</view>
+						<view class="content_list_item_content_item_nr">
+							<text v-if="item.qualityType == 0" class="green">鍚堟牸</text>
+							<text v-else-if="item.qualityType == 1" class="yellow">涓嶈壇</text>
+							<text v-else-if="item.qualityType == 2" class="red">鎶ュ簾</text>
+							<text v-else>-</text>
+						</view>
+					</view>
+					<view class="content_list_item_content_item">
+						<text class="content_list_item_content_item_label">鍏ュ簱璐т綅锛�</text>
+						<text class="content_list_item_content_item_nr">{{ item.locationName ? item.locationName : '-' }}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view v-if="data.status === 0" style="height:94rpx"></view>
+		<view v-if="data.status === 0" class="bottom-button">
+			<button class="button button-cancel" @click="submit">鍘诲叆搴�</button>
+			<!-- <button class="button button-cancel" @click="cancel">鍙栨秷</button> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		orderTyepToStr
+	} from '@/util/constData.js'
+	export default {
+		data() {
+			return {
+				types: [{
+						name: '鍏ㄩ儴',
+						id: '',
+						isActive: true
+					},
+					{
+						name: '閲囪喘璁㈠崟',
+						id: '0',
+						isActive: false
+					},
+					{
+						name: '鐢熶骇宸ュ崟',
+						id: '1',
+						isActive: false
+					},
+					{
+						name: '閿�鍞鍗�',
+						id: '2',
+						isActive: false
+					},
+					{
+						name: '杞簱鍗�',
+						id: '3',
+						isActive: false
+					},
+					{
+						name: '鐩樼偣鍗�',
+						id: '4',
+						isActive: false
+					},
+				],
+				data: {},
+				materailArray: []
+			};
+		},
+		methods: {
+			tyepToStr(type) {
+				//  <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+				for (const item of this.types) {
+					if (parseInt(item.id) === this.type) {
+						return item.name
+					}
+				}
+				return '-'
+			},
+			submit() {
+
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		background: white;
+
+		.order-message {
+			padding: 30rpx;
+			display: flex;
+			flex-direction: column;
+
+			// border-bottom: 1rpx solid #ececec;
+			.content_list_item_top {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				.content_list_item_top_left {
+					display: flex;
+
+					// align-items: center;
+					text {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #333333;
+					}
+				}
+
+				.content_list_item_top_right {
+					font-size: 26rpx;
+					font-weight: 400;
+
+					.created {
+						color: $nav-stateColor1 !important;
+					}
+
+					.warning {
+						color: $nav-stateColor5 !important;
+					}
+
+					.green {
+						color: $nav-stateColor6 !important;
+					}
+
+					.info {
+						color: $nav-stateColor3 !important;
+					}
+				}
+			}
+
+			.content_list_item_content {
+				padding: 24rpx 30rpx;
+				background: #f7f7f7;
+				border-radius: 16rpx;
+				display: flex;
+				flex-wrap: wrap;
+				justify-content: space-between;
+				margin-top: 32rpx;
+
+				.content_list_item_content_item:first-child {
+					margin-top: 0;
+				}
+
+				.content_list_item_content_item {
+					width: 100%;
+					display: flex;
+					align-items: center;
+					margin-top: 24rpx;
+
+					.content_list_item_content_item_label {
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #666666;
+						flex-shrink: 0;
+					}
+
+					.content_list_item_content_item_nr {
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #222222;
+						margin-right: 10rpx;
+					}
+				}
+			}
+		}
+
+		.title {
+			background-color: #f7f7f7;
+			padding: 30rpx;
+			font-size: 30rpx;
+			display: flex;
+			align-items: center;
+
+			.title-prefix {
+				display: inline-block;
+				background-color: #4275FC;
+				height: 30rpx;
+				width: 8rpx;
+				border-radius: 1rpx;
+				margin-right: 12rpx;
+			}
+		}
+
+		.material-content {
+			padding: 30rpx;
+
+			.item-style {
+				width: initial;
+				border-bottom: 1rpx solid #ececec;
+				margin-top: 30rpx;
+
+				&:first-child {
+					margin-top: 0 !important;
+				}
+
+				&:last-child {
+					border: none;
+				}
+
+				.item-title-style {
+					margin-bottom: 12rpx;
+					font-size: 30rpx;
+				}
+
+				.item-content-style {
+					// padding: 24rpx 30rpx;
+					// background-color: #f7f7f7;
+					// border-radius: 16rpx;
+					display: flex;
+					flex-wrap: wrap;
+					padding-bottom: 30rpx;
+					justify-content: space-between;
+
+					&:last-child {
+						padding-bottom: 0;
+					}
+
+					.content_list_item_content_item {
+						width: 100%;
+						display: flex;
+						margin-top: 24rpx;
+
+						.content_list_item_content_item_label {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+
+						.content_list_item_content_item_nr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+							margin-right: 10rpx;
+						}
+					}
+				}
+			}
+		}
+
+		.bottom-button {
+			padding: 1rpx;
+			background-color: #f7f7f7;
+			position: fixed;
+			width: 100%;
+			bottom: 0;
+			height: 188rpx;
+			display: flex;
+			justify-content: space-between;
+
+			.button-action {
+				background: #fff;
+				color: $nav-color;
+			}
+
+			.button-cancel {
+				background: $nav-color;
+				color: #FFFFFF;
+			}
+
+			.button {
+				margin: 32rpx 32rpx 68rpx 32rpx;
+				height: 88rpx;
+				/*width: 668rpx;*/
+				// width: 334rpx;
+				border: none;
+				border-radius: 8rpx;
+				box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+				display: flex;
+				align-items: center;
+				justify-content: center;
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/warehousingList/warehousingList.vue b/minipro_standard/pages_adjust/pages/warehousingList/warehousingList.vue
new file mode 100644
index 0000000..0649278
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/warehousingList/warehousingList.vue
@@ -0,0 +1,562 @@
+<template>
+	<view class="content">
+		<view class="content_search">
+			<Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true"
+				placeholder="鎼滅储鍏ュ簱鍗曞彿/鍏ュ簱浠撳簱">
+				<template v-slot:content>
+					<view class="Search_item">
+						<view class="Search_item_label">璁″垝鏃ユ湡</view>
+						<view class="Search_item_content" @click="openDate">
+							<view class="Search_item_content_a" :style="listData.startDate ? 'color: #000' : ''">
+								{{ listData.startDate ? listData.startDate : '寮�濮嬫棩鏈�'}}</view>
+							<text>-</text>
+							<view class="Search_item_content_a" :style="listData.endDate ? 'color: #000' : ''">
+								{{ listData.endDate ? listData.endDate : '缁撴潫鏃ユ湡'}}</view>
+						</view>
+					</view>
+					<view class="Search_item">
+						<view class="Search_item_label">鍗曟嵁绫诲瀷</view>
+						<view class="Search_item_content">
+							<view class="tag">
+								<view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in types"
+									:key="item.id" @click="changeTags(i)">{{item.name}}</view>
+							</view>
+						</view>
+					</view>
+				</template>
+			</Search>
+			<view class="content_search_x"></view>
+			<LabelSelection :TagList="tagList" :isShow="true" @change="clickTag" />
+		</view>
+		<view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+		<view class="content_list">
+			<scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+				<view class="content_list_item" v-for="(item, i) in lists" :key="i" @click="jump(item)">
+					<!-- item澶撮儴瑙嗗浘 -->
+					<view class="content_list_item_top">
+						<view class="content_list_item_top_left">
+							<!--                <text>杞簱鍗曞彿锛�</text>-->
+							<text>{{ item.code }}</text>
+						</view>
+						<view class="content_list_item_top_right">
+							<span class="warning" v-if="item.status == 0">寰呭叆搴�</span>
+							<span class="green" v-else-if="item.status == 1">宸插叆搴�</span>
+							<span class="info" v-else-if="item.status == 2">宸插彇娑�</span>
+						</view>
+					</view>
+					<!-- item涓婚淇℃伅閮ㄥ垎 -->
+					<view class="content_list_item_content">
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ orderTyepToStr(item.billType) }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鍏ュ簱浠撳簱锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.warehouseName + ' | ' + item.warehouseCode }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">璁″垝鍏ュ簱锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.planDate }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鏉ユ簮绫诲瀷锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ tyepToStr(item.originType) }}
+							</view>
+						</view>
+						<view class="content_list_item_content_item">
+							<view class="content_list_item_content_item_label">鏉ユ簮鍗曞彿锛�</view>
+							<view class="content_list_item_content_item_nr">
+								{{ item.originCode ? item.originCode : '-' }}
+							</view>
+						</view>
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+		<!-- 閫夋嫨鏃ユ湡 -->
+		<u-calendar :show="timeShow" @close="timeShow = false" @confirm="timeConfirm"></u-calendar>
+	</view>
+</template>
+
+<script>
+	import Search from '@/components/Search.vue'
+	import LabelSelection from '@/components/LabelSelection.vue'
+	import { orderTyepToStr } from '@/util/constData.js'
+	export default {
+		components: {
+			Search,
+			LabelSelection
+		},
+		data() {
+			return {
+				height: '',
+				top: '',
+				listData: {
+					capacity: 10,
+					page: 0,
+					total: 0,
+					planDateEnd: "",
+					planDateStart: "",
+					code: "",
+					originType: "",
+					status: ""
+				},
+				types: [
+					{ name: '杞﹂棿棰嗘枡', id: '1', isActive: false },
+					{ name: '鏈哄彴澶囨枡', id: '2', isActive: false },
+					{ name: '杞﹂棿杞簱', id: '3', isActive: false },
+					{ name: '瀹屽伐鍏ュ簱', id: '4', isActive: false },
+					{ name: '璁″垝棰嗘枡', id: '5', isActive: false },
+					{ name: '澶栧崗棰嗘枡', id: '6', isActive: false },
+					{ name: '澶栧崗瀹屽伐杞簱', id: '7', isActive: false },
+					{ name: '浜у搧鍏ュ簱', id: '8', isActive: false },
+					{ name: '浜у搧杞簱', id: '9', isActive: false },
+					{ name: '璁╂鏀捐鍏ュ簱', id: '10', isActive: false },
+					{ name: '璁╂鏀捐杞簱', id: '11', isActive: false },
+					{ name: '瀹㈣繑杩斾慨棰嗘枡', id: '12', isActive: false },
+					{ name: '瀹㈣繑杩斾慨鍏ュ簱', id: '13', isActive: false },
+					{ name: '璺ㄧ粍缁囪浆搴�', id: '14', isActive: false },
+					{ name: '宸ュ簭鎶ュ簾', id: '15', isActive: false },
+					{ name: '瀹㈤��杩斾慨棰嗘枡', id: '16', isActive: false },
+					{ name: '瀹㈤��杩斾慨鍏ュ簱', id: '17', isActive: false },
+					{ name: '閿�鍞嚭搴�', id: '18', isActive: false },
+					{ name: '璁╂閿�鍞�', id: '19', isActive: false },
+					{ name: '宸ュ崟鎶曟枡', id: '20', isActive: false },
+					{ name: '浠撳簱鎶ュ簾', id: '21', isActive: false },
+					{ name: '瀹㈤��妫�楠岄鏂�', id: '22', isActive: false },
+					{ name: '瀹㈣繑妫�楠岄鏂�', id: '23', isActive: false },
+					{ name: '搴撳瓨璋冩暣', id: '28', isActive: false },
+					{ name: '搴熷搧鍏ュ簱', id: '30', isActive: false }
+				],
+				tagList: [
+					{
+					    id: "",
+					    name: "鍏ㄩ儴",
+					    num: '0',
+					},
+					{
+					    id: "0",
+					    name: "寰呭嚭搴�",
+					    num: '0',
+					},
+					{
+					    id: "1",
+					    name: "宸插嚭搴�",
+					    num: "0",
+					},
+					{
+					    id: "2",
+					    name: "宸插彇娑�",
+					    num: "0",
+					}
+				],
+				data: [], // 宸ュ簭鏁版嵁
+				factoryList: [],
+				finished: true,
+				loading: false,
+				refreshing: false,
+				timeShow: false,
+				lists: []
+			};
+		},
+		onReady() {
+			var that = this
+			this.$nextTick(() => {
+				uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+					that.height = `calc(100vh - ${rect.height + 80}px)`
+					that.top = `${rect.height}px`
+				}).exec()
+			})
+		},
+		methods: {
+			tyepToStr(type) {
+				//  <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+				for (const item of this.orderType) {
+					if (item.id == type) {
+						return item.name
+					}
+				}
+				return '-'
+			},
+			// 璺宠浆
+			jump(item) {
+				uni.navigateTo({
+					url: `/pages/planDetails/planDetails?id=${item.id}`
+				})
+			},
+			// 鑾峰彇澶撮儴缁勪欢楂樺害
+			getHeight(height) {
+				this.height = height
+			},
+			// 閲嶇疆
+			reset() {
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.listData.mixParam = ''
+				this.listData.startDate = ''
+				this.listData.endDate = ''
+				this.listData.procedureIds = []
+				if (this.factoryList.length > 0) {
+					this.listData.departIds = this.factoryList[0].id
+				}
+				if (this.data.length > 0) {
+					this.data.forEach(item => {
+						item.isActive = false
+					})
+				}
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鏃ユ湡纭畾
+			timeConfirm(val) {
+				this.listData.startDate = val[0]
+				this.listData.endDate = val[val.length - 1]
+				this.timeShow = false
+			},
+			// 鍒囨崲宸ュ巶
+			changeTags(i, id) {
+				this.listData.departIds = id
+				this.getWorkingProcedures(id)
+				this.factoryList.forEach((item, index) => {
+					if (index === i) {
+						item.isActive = true
+					} else {
+						item.isActive = false
+					}
+				})
+			},
+			// 鎵撳紑鏃ユ湡鎻掍欢
+			openDate() {
+				this.timeShow = true
+			},
+			// 鎼滅储
+			searchInput(val) {
+				this.listData.mixParam = val
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.getLists()
+			},
+			// 鐐瑰嚮鏍囩鎼滅储
+			clickTag(ids) {
+				this.listData.cateIds = ids
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+			},
+			// 鑾峰彇鍒楄〃缁熻
+			pageCounts() {
+				pageCount({
+					factoryId: this.listData.departIds,
+					procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+					startDate: this.listData.startDate,
+					endDate: this.listData.endDate,
+					statusList: this.listData.cateIds
+				}).then(res => {
+					if (res.code === 200 && res.data) {
+						this.tagList[0].num = res.data.allNum.toString()
+						this.tagList[1].num = res.data.startNum.toString()
+						this.tagList[2].num = res.data.ingNum.toString()
+						this.tagList[3].num = res.data.endNum.toString()
+					}
+				})
+			},
+			// 鑾峰彇宸ュ巶鏁版嵁
+			getOrganizations() {
+				getOrganization({
+					type: 1
+				}).then(res => {
+					if (res.code === 200 && res.data && res.data.length !== 0) {
+						res.data.forEach((item, i) => {
+							item.isActive = i === 0;
+						})
+						if (res.data.length > 0) {
+							this.factoryList = res.data
+							this.listData.departIds = this.factoryList[0].id
+							this.listData.procedureIds = ''
+							this.finished = false
+							this.getWorkingProcedures(this.factoryList[0].id)
+							this.getLists()
+							this.pageCounts()
+						}
+					}
+				})
+			},
+			// 鑾峰彇宸ュ簭鏁版嵁
+			getWorkingProcedures(orgId) {
+				this.data = []
+				getWorkingProcedure({
+						orgId
+					})
+					.then(res => {
+						if (res.code === 200 && res.data && res.data.length !== 0) {
+							res.data.forEach((item, i) => {
+								item.isActive = false;
+							})
+							this.data = res.data
+						}
+					})
+			},
+			// 鎼滅储寮规鎻愪氦
+			submit() {
+				let pmodelOrgId = []
+				this.data.forEach((item) => {
+					if (item.isActive) {
+						pmodelOrgId.push(item.id)
+					}
+				})
+				this.listData.procedureIds = pmodelOrgId
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鑾峰彇璁″垝鍒楄〃鏁版嵁
+			getLists() {
+				console.log('getLists')
+				if (!this.finished) {
+					this.loading = true
+					this.listData.page = this.listData.page++
+					getList({
+						capacity: this.listData.capacity,
+						model: {
+							mixParam: this.listData.mixParam,
+							startDate: this.listData.startDate,
+							endDate: this.listData.endDate,
+							procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+							factoryId: this.listData.departIds,
+							statusList: this.listData.cateIds
+						},
+						page: this.listData.page,
+						sorts: [{
+							direction: 'ASC',
+							property: 'publishDate'
+						}]
+					}).then(res => {
+						this.loading = false
+						this.listData.total = res.data.total
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+						if (res.code === 200 && res.data.records.length !== 0) {
+							if (this.lists.length === 0) {
+								this.lists = res.data.records
+							} else {
+								this.lists.push(...res.data.records)
+							}
+						} else {
+							this.finished = true
+						}
+					}).catch(err => {
+						this.loading = false
+						this.finished = true
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		.content_search {
+			width: 100%;
+			padding: 30rpx;
+			background: white;
+			position: sticky;
+			top: 0;
+			z-index: 999;
+			box-sizing: border-box;
+
+			.Search_item {
+				margin-bottom: 40rpx;
+
+				.Search_item_label {
+					font-size: 30rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+
+				.Search_item_content {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					margin-top: 30rpx;
+
+					.tag {
+						display: flex;
+						flex-wrap: wrap;
+						align-items: center;
+
+						.tag_active {
+							background: $nav-color !important;
+							color: #ffffff !important;
+						}
+
+						.tag_item {
+							padding: 22rpx 26rpx;
+							box-sizing: border-box;
+							background: #F2F2F2;
+							border-radius: 8rpx;
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #333333;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							margin-right: 22rpx;
+							margin-bottom: 22rpx;
+						}
+					}
+
+					text {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						margin: 0 30rpx;
+					}
+
+					.Search_item_content_a {
+						padding: 20rpx 0;
+						flex: 1;
+						background: #F7F7F7;
+						border-radius: 8rpx;
+						border: 1rpx solid #EEEEEE;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #B2B2B2;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+					}
+				}
+			}
+
+			.content_search_x {
+				height: 24rpx;
+			}
+		}
+
+		.content_list {
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+
+			.content_list_item {
+				width: 100%;
+				box-sizing: border-box;
+				padding: 30rpx;
+				display: flex;
+				flex-direction: column;
+				border-bottom: 1rpx solid #ececec;
+				background: white;
+
+				.content_list_item_top {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+
+					.content_list_item_top_left {
+						display: flex;
+						align-items: center;
+
+						text {
+							font-size: 32rpx;
+							font-weight: 500;
+							color: #333333;
+						}
+					}
+
+					.content_list_item_top_right {
+						font-size: 26rpx;
+						font-weight: 400;
+
+						.created {
+							color: $nav-stateColor1 !important;
+						}
+
+						.warning {
+							color: $nav-stateColor5 !important;
+						}
+
+						.green {
+							color: $nav-stateColor6 !important;
+						}
+
+						.info {
+							color: $nav-stateColor3 !important;
+						}
+					}
+				}
+
+				.content_list_item_content {
+					padding: 24rpx 30rpx;
+					background: #f7f7f7;
+					border-radius: 16rpx;
+					display: flex;
+					flex-wrap: wrap;
+					justify-content: space-between;
+					margin-top: 32rpx;
+
+					.content_list_item_content_item {
+						width: 100%;
+						display: flex;
+						margin-top: 24rpx;
+
+						&:first-child {
+							margin-top: 0;
+						}
+
+						// &:nth-child(1) {
+						//   margin-top: 0 !important;
+						// }
+						// &:nth-child(2) {
+						//   margin-top: 0 !important;
+						// }
+						.content_list_item_content_item_label {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+
+						.content_list_item_content_item_nr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+							margin-right: 10rpx;
+						}
+					}
+				}
+			}
+		}
+
+		.content_total {
+			width: 100%;
+			height: 80rpx;
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			box-sizing: border-box;
+			color: #666666;
+			position: sticky;
+			z-index: 99;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue b/minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue
new file mode 100644
index 0000000..85ca4fc
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue
@@ -0,0 +1,996 @@
+<template>
+	<view>
+		<view class="tips-label">褰撳墠浠诲姟闇�瑕佽川妫�锛涗骇鍑哄悗锛岃鑰愬績绛夊緟璐ㄦ鍛樻楠岋紝骞舵牴鎹楠岀粨鏋滆皟鏁翠骇鍑烘暟鎹悗鍐嶆姤宸ャ��</view>
+		<workOrderInfo :orederMessage="{proUserList:[]}" />
+		<!-- <u-tabs :list="tab" lineColor="#305ED5" :activeStyle="{color:'#305ED5'}" lineWidth="50%" :itemStyle="{width: '50%', boxSizing: 'border-box', height: '88rpx'}" @click="click"></u-tabs> -->
+		<view class="bg_cate">
+			<view @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'"
+				v-for="(item, index) in cate" :key="index">{{ item.name }}</view>
+		</view>
+		<div class="bg_list" v-if="typeView === 0">
+			<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 bg_m"></div>
+						<span>鎶曟枡鏄庣粏</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="" /> -->
+						<!-- <img src="@/static/gongdan_ic_shoudong@2x.ong" alt="" /> -->
+						<image src="../../static/gongdan_ic_shoudong@2x.png" class="img28" mode=""></image>
+						<span class="cm">鎵嬪姩褰曞叆</span>
+					</div>
+				</div>
+
+				<template v-if="feedingData && feedingData.length > 0">
+					<u-swipe-action>
+						<u-swipe-action-item v-for="(item, index) in feedingData" :key="index" :options="options"
+							@click="deleItem(item.id, 'T')">
+							<div class="bg_list_item_h">
+								<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="orange" 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">
+											<!-- :disabled="!proxy.$auth('h5:workorderinput:update')" -->
+											<input v-model="item.num"
+												@blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)"
+												type="number" />
+											<span>{{ item.unitName }}</span>
+										</div>
+									</div>
+								</div>
+							</div>
+						</u-swipe-action-item>
+					</u-swipe-action>
+
+				</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 bg_m"></div>
+						<span>浜у嚭鏄庣粏</span>
+					</div>
+				</div>
+				<div class="bg_list_item_h">
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item">
+							<span>鑹搧鏁皗{ info.umodel ? `(${info.umodel.name})` : '' }}</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>
+				</div>
+				<div class="bg_list_item_h">
+					<div class="bg_list_item_num">
+						<!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+						<div class="bg_list_item_num_item">
+							<span>涓嶈壇鏁皗{ info.umodel ? `(${info.umodel.name})` : '' }}</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>
+				</div>
+				<div class="bg_list_item_h" v-if="produceFrom.undesirable > 0">
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item" @click="badShow = true">
+							<span>涓嶈壇椤�</span>
+							<div class="bg_list_item_num_item_sr">
+								<span class="wulll" :style="{ color: form.defectiveName ? '#305ED5' : '' }">{{ form.defectiveName ?
+				              form.defectiveName : '璁剧疆' }}</span>
+								<image src="../../../static/ic_ar@2x.png" class="img_ar" mode=""></image>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="bg_plan" @click="TimeShow = true">
+				<div class="bg_plan_label">
+					<span>鎶ュ伐鏃堕暱</span>
+				</div>
+				<div class="bg_plan_label_val">
+					<span
+						:style="{ color: form.durationName ? '#333' : '' }">{{ form.durationName ? form.durationName : '璇烽�夋嫨' }}</span>
+					<image src="../../../static/ic_ar@2x.png" class="img_ar" mode=""></image>
+				</div>
+			</div>
+			<div class="bg_list_item" v-if="arrType && arrType.length > 0">
+				<div class="bg_list_item_top">
+					<div class="bg_list_item_top_left">
+						<div class="bg_list_item_top_left_x bg_m"></div>
+						<span>宸ヨ祫缁╂晥</span>
+					</div>
+				</div>
+				<div class="bg_list_item_h">
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item">
+							<span>璁′欢鏂瑰紡</span>
+							<div class="bg_list_item_num_item_list">
+								<div :class="form.index == index ? 'bg_list_item_num_item_list_item active' : 'bg_list_item_num_item_list_item'"
+									v-for="(item, index) in arrType" :key="index"
+									@click="clickPerformanceType(item, index)">
+									{{ item.name }}
+								</div>
+							</div>
+						</div>
+					</div>
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item">
+							<span>宸ヨ祫鍗曚环</span>
+							<div class="bg_list_item_num_item_sr">
+								<span class="color1">{{ (arrType[form.index].salary / 10 / 10).toFixed(2) }}鍏�/{{ arrType[form.index].type ==
+		                  0 ? '浠�' : '鏃�' }}</span>
+							</div>
+						</div>
+					</div>
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item">
+							<span>棰勮宸ヨ祫</span>
+							<div class="bg_list_item_num_item_sr">
+								<span class="color1">{{ expectedSalary }}鍏�</span>
+							</div>
+						</div>
+					</div>
+					<div class="bg_list_item_num">
+						<div class="bg_list_item_num_item">
+							<span>杈炬爣鐜�</span>
+							<div class="bg_list_item_num_item_sr">
+								<span class="color1">{{ complianceRate }}%</span>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+
+		</div>
+		<div class="details_dj" v-if="typeView === 1">
+
+			<div class="details_dj_list">
+				<u-swipe-action>
+					<u-swipe-action-item v-for="(item, index) in djData" :key="index" :options="options"
+						@click="dele(item.id)">
+						<div class="details_dj_list_item">
+							<span>{{ item.attrName }}锛歿{ item.val }}</span>
+							<span>{{ item.userName }} {{ item.createTime }}</span>
+						</div>
+					</u-swipe-action-item>
+				</u-swipe-action>
+			</div>
+		</div>
+		<!-- v-if="info.status === 2 || info.procedureNeedcheck === 1" -->
+		<template>
+			<div class="bh_zw"></div>
+			<div class="bg_footer bg_f7">
+				<div class="bg_footer_submit bg_m" v-if="typeView == 0" @click="submit">纭鎶ュ伐</div>
+				<!-- proxy.$auth('h5:workorder:processRecord') &&  -->
+				<div class="bg_footer_submit1" @click="jumpdj" v-if="typeView == 1">
+					<image src="../../../static/gongdan_ic_shoudong@2x.png" class="fornt-img" mode=""></image>
+					<span>鏂板鐐规</span>
+				</div>
+			</div>
+		</template>
+		<u-datetime-picker :show="TimeShow" @cancel="TimeShow=false" @confirm="timeConfirm" v-model="form.time"
+			mode="time"></u-datetime-picker>
+		<u-popup :show="badShow" @close="badShow=false" :round="8" closeable zIndex="20000">
+			<view class="rp p40 contanir">
+				<view class="c2 b tc">涓嶈壇椤�</view>
+				<view class="content bl_list">
+					<div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)">
+						<div class="bl_list_item_left">
+							<u-checkbox-group>
+								<u-checkbox  :key="index" :checked="item.active" :label="item.name"
+									:name="item.name">
+								</u-checkbox>
+							</u-checkbox-group>
+						</div>
+						<div class="bl_list_item_right">
+							<input type="number" @click.stop v-model="item.num" placeholder="0" />
+						</div>
+					</div>
+				</view>
+				<view class="flex ap tc bottom-view">
+					<view class="fx1 ml20 ptb20 sbtn_green" @click="confirm">纭畾</view>
+				</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import workOrderInfo from '@/components/workOrderInfo.vue'
+	export default {
+		components: {
+			workOrderInfo
+		},
+		data() {
+			return {
+				cate: [{
+						name: '鐢熶骇'
+					},
+					{
+						name: '鐐规'
+					}
+				],
+				form: {
+					time: '',
+					efective: [],
+					defectiveName: '',
+					durationName: '0灏忔椂0鍒嗛挓',
+					duration: 0,
+					type: 0,
+					index: 0
+				},
+				TimeShow: false,
+				badShow: false,
+				typeView: 0,
+				feedingData: [{
+					id: 0,
+					materialName: '澧欎綋鐮�',
+					procedureName: '鍘嬪埗',
+					qualityType: 1,
+					locationName: 'CP-01',
+					batch: '20230713',
+					num: 2,
+					maxNum: 10,
+					unitAttribute: 1,
+					unitName: '鍧�'
+				}],
+				options: [{
+					text: '鍒犻櫎',
+					style: {
+						backgroundColor: 'red',
+					}
+				}],
+				arrType: [{
+						name: '璁℃椂',
+						type: 1,
+						salary: 1000,
+					},
+					{
+						name: '璁′欢',
+						type: 0,
+						salary: 100
+					},
+				],
+				// 浜у嚭鍚堟牸/涓嶈壇
+				produceFrom: {
+					qualifiedId: '',
+					qualified: '', // 鍚堟牸
+					undesirableId: '',
+					undesirable: 5 // 涓嶈壇
+				},
+				djData: [{
+					attrName: '鍑烘按鏃堕棿',
+					val: '2022-05-28 16:3',
+					userName: '寮犱笁 ',
+					createTime: '2022-05-28 16:32:'
+				}],
+				cateList: [{
+					active: false,
+					name: '姣涘埡',
+					num: 0
+				}]
+			};
+		},
+		computed: {
+			expectedSalary() {
+				if (this.arrType.length === 0) return 0;
+				// 鎸変欢璁$畻
+				if (this.arrType[this.form.index].type == 0) {
+					if (!this.produceFrom.qualified) return 0
+					if (this.arrType[this.form.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+						let total = Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)
+						return (total * (this.arrType[this.form.index].salary / 100)).toFixed(2) || 0
+					} else {
+						return (Number(this.produceFrom.qualified) * (this.arrType[this.form.index].salary / 100)).toFixed(
+							2) || 0
+					}
+				} else {
+					if (!this.form.duration) return 0;
+					let h = (this.form.duration / 60 / 60).toFixed(2)
+					return (Number(h) * (this.arrType[this.form.index].salary / 10 / 10)).toFixed(2) || 0
+				}
+			},
+			complianceRate() {
+				if (this.arrType.length === 0) return 0;
+				if (!this.produceFrom.qualified && !this.produceFrom.undesirable) return 0;
+				if (!this.form.duration) return 0;
+				if (!this.arrType[this.form.index].num) return 0;
+				// 鎸変欢璁$畻
+				// if (infoBox.value.type == 0) {
+				if (this.arrType[this.form.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+					let a = ((Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)) / (this.form
+						.duration / 3600)).toFixed(2)
+					let b = (this.arrType[this.form.index].num / (this.arrType[form.index].times / 3600)).toFixed(2)
+					return ((Number(a) / Number(b)) * 100).toFixed(2)
+					// let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / )
+					// return total * infoBox.value.salary;
+				} else {
+					let a = (this.produceFrom.qualified / (this.form.duration / 3600)).toFixed(2)
+					let b = (this.arrType[this.form.index].num / (this.arrType[this.form.index].times / 3600)).toFixed(2)
+					return ((Number(a) / Number(b)) * 100).toFixed(2)
+					// return Number(from.qualified) * infoBox.value.salary;
+				}
+			}
+		},
+		methods: {
+			click() {
+
+			},
+			clickIten(index) {
+				this.typeView = index
+			},
+			timeConfirm({
+				value
+			}) {
+				console.log(value)
+				let h = Number(value.substring(0, 2))
+				let m = Number(value.substring(3, 5))
+				let s = 0
+				if (h > 0) {
+					s += h * 60 * 60
+				}
+				if (m > 0) {
+					s += m * 60
+				}
+				this.form.duration = s
+				this.form.durationName = `${h}灏忔椂${m}鍒嗛挓`
+				this.TimeShow = false
+			},
+			// 缂栬緫鎶曟枡/浜у嚭
+			change(id, num, type, maxNum, item, unitAttribute) {
+				let obj = 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, num }).then(res => {
+				//   if (res.code === 200 && type === 'T') {
+				//     getOrocessRecords()
+				//   } else if (res.code === 200 && type === 'C') {
+				//     // getOrocessRecordCC()
+				//   }
+				// })
+			},
+			clickPerformanceType(item, index) {
+				this.form.index = index
+				this.form.type = item.type
+			},
+			submit() {},
+			jumpdj() {},
+			pageDJs() {},
+			dele(id) {
+				// deletedj(id)
+				//     .then(res => {
+				//       if (res.code === 200) {
+				//         djData.value = []
+				//         finished.value = false
+				//         page.page = 1
+				//         djData.value = []
+				//         pageDJs()
+				//       }
+				//     })
+			},
+			confirm() {
+				// console.log('confirm');
+				this.badShow = false
+			},
+			changeChecked(i) {
+				this.cateList[i].active = !this.cateList[i].active
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.bg_cate {
+		width: 100%;
+		height: 88rpx;
+		background: #FFFFFF;
+		display: flex;
+		align-items: center;
+
+		.active {
+			box-sizing: border-box;
+			color: #305ED5 !important;
+			font-weight: 500;
+			border-bottom: 3rpx solid #305ED5;
+		}
+
+		.bg_cate_item {
+			flex: 1;
+			height: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			font-size: 30rpx;
+			font-weight: 400;
+			color: #555555;
+		}
+	}
+
+	.bg_list {
+		width: 100%;
+		display: flex;
+		flex-direction: column;
+		margin-top: 30rpx;
+
+		.bg_list_item {
+			display: flex;
+			flex-direction: column;
+			// margin-bottom: 40rpx;
+			border-bottom: 40rpx #f7f7f7 solid;
+
+			.kong {
+				text-align: center;
+				padding: 30rpx 0;
+				background: #ffffff;
+				font-size: 25rpx;
+
+				span {
+					color: #474747;
+				}
+			}
+
+			.bg_list_item_top {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				padding-left: 30rpx;
+				padding-right: 30rpx;
+				margin-bottom: 30rpx;
+
+				.bg_list_item_top_left {
+					display: flex;
+					align-items: center;
+
+					.left {
+						margin-left: 12rpx;
+						font-size: 28rpx;
+					}
+
+					.warning {
+						width: 8rpx;
+						height: 30rpx;
+						border-radius: 2rpx;
+						margin-right: 12rpx;
+						// background: $nav-stateColor5 !important;
+					}
+
+					.error {
+						width: 8rpx;
+						height: 30rpx;
+						border-radius: 2rpx;
+						margin-right: 12rpx;
+						// background: $nav-stateColor4 !important;
+					}
+
+					.bg_list_item_top_left_x {
+						width: 8rpx;
+						height: 30rpx;
+						// background: $nav-color;
+						border-radius: 2rpx;
+						margin-right: 12rpx;
+					}
+
+					span {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #222222;
+						display: flex;
+						align-items: center;
+					}
+				}
+
+				.bg_list_item_top_right {
+					display: flex;
+					align-items: center;
+
+					image {
+						width: 28rpx;
+						height: 28rpx;
+						margin-right: 12rpx;
+					}
+
+					span {
+						font-size: 28rpx;
+						font-weight: 400;
+					}
+				}
+			}
+
+			.bg_list_item_h {
+				width: 100%;
+				padding: 0 30rpx;
+				box-sizing: border-box;
+				background: white;
+
+				.bg_list_item_num {
+					width: 100%;
+					min-height: 98rpx;
+					background: white;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					border-bottom: 1rpx solid #E5E5E5;
+
+					&:last-child {
+						border: none !important;
+					}
+
+					.kong {
+						text-align: center;
+						font-size: 25rpx;
+						padding: 30rpx 0;
+						background: #ffffff;
+					}
+
+					.bg_list_item_num_item {
+						width: 100%;
+						height: 100%;
+						display: flex;
+						align-items: center;
+						// height: 118rpx;
+						padding: 15rpx 0;
+						box-sizing: border-box;
+						justify-content: space-between;
+						border-bottom: 1rpx solid #E5E5E5;
+
+						&:last-child {
+							border: none;
+						}
+
+						.bg_list_item_num_item_list {
+							display: flex;
+							align-items: center;
+
+							.active {
+								background: #305ED5 !important;
+								color: #FFFFFF !important;
+							}
+
+							.bg_list_item_num_item_list_item {
+								width: 116rpx;
+								height: 62rpx;
+								line-height: 62rpx;
+								text-align: center;
+								background: #F2F2F2;
+								border-radius: 8rpx;
+								font-size: 26rpx;
+								font-family: PingFangSC-Regular, PingFang SC;
+								font-weight: 400;
+								color: #333333;
+								margin-right: 20rpx;
+
+								&:last-child {
+									margin: 0 !important;
+								}
+							}
+						}
+
+						.bg_list_item_num_item_wl {
+							flex-shrink: 0;
+							display: flex;
+							flex-direction: column;
+							font-size: 34rpx;
+							color: #222222;
+
+							.bg_list_item_num_item_wl_lx {
+								margin-top: 10rpx;
+								color: #222222;
+								font-size: 28rpx;
+							}
+						}
+
+						// .warning {
+						// 	color: $nav-stateColor5 !important;
+						// }
+
+						// .err {
+						// 	color: $nav-stateColor4 !important;
+						// }
+
+						img {
+							width: 12rpx;
+							height: 24rpx;
+							margin-left: 20rpx;
+						}
+
+						span {
+							flex-shrink: 0;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+
+							b {
+								font-size: 30rpx;
+								color: red;
+								margin-right: 5rpx;
+							}
+
+							// .warning {
+							// 	color: $nav-stateColor5 !important;
+							// 	margin-right: 5rpx;
+							// }
+
+							// .err {
+							// 	color: $nav-stateColor4 !important;
+							// 	margin-right: 5rpx;
+							// }
+
+							&:nth-child(1) {
+								font-size: 30rpx;
+								font-weight: 400;
+								color: #222222;
+							}
+
+							&:nth-child(2) {
+								font-size: 28rpx;
+								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;
+
+							.color1 {
+								font-size: 28rpx;
+								font-family: PingFangSC-Regular, PingFang SC;
+								font-weight: 400;
+								color: #333333;
+							}
+
+							input::-webkit-input-placeholder {
+								font-size: 28rpx;
+							}
+
+							input {
+								text-align: right;
+								width: 180rpx;
+								height: 60rpx;
+								border-radius: 8rpx;
+								border: 1rpx solid #E5E5E5;
+								margin-right: 20rpx;
+								font-size: 28rpx;
+								font-weight: 400;
+								color: #333333;
+								padding: 0 30rpx
+							}
+
+							.wulll {
+								width: 400rpx;
+								text-align: right;
+								overflow: hidden;
+								white-space: nowrap;
+								text-overflow: ellipsis;
+							}
+
+							span {
+								font-size: 28rpx;
+								font-weight: 400;
+								color: #999999;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.bg_plan {
+		width: 100%;
+		// height: 98px;
+		padding: 30rpx;
+		box-sizing: border-box;
+		background: #FFFFFF;
+		margin-bottom: 40rpx;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+
+		span {
+			font-size: 30rpx;
+			font-family: PingFangSC-Regular, PingFang SC;
+			font-weight: 400;
+			color: #222222;
+
+			b {
+				color: red;
+			}
+		}
+
+		.bg_plan_nr {
+			display: flex;
+			flex-direction: column;
+
+			span {
+				font-size: 24rpx;
+				font-family: PingFangSC-Regular, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				margin-top: 20rpx;
+
+				&:first-child {
+					font-size: 32rpx;
+					font-family: PingFangSC-Medium, PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					margin-top: 0 !important;
+				}
+			}
+		}
+
+		.bg_plan_label_val {
+			display: flex;
+			align-items: center;
+
+			span {
+				font-size: 28rpx;
+				font-family: PingFangSC-Regular, PingFang SC;
+				font-weight: 400;
+				color: #999999;
+			}
+
+
+		}
+	}
+
+	.img_ar {
+		width: 12rpx;
+		height: 24rpx;
+		margin-left: 20rpx;
+	}
+
+	.bh_zw {
+		height: 160rpx;
+	}
+
+	.bg_footer {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		padding: 30rpx 30rpx 60rpx 30rpx;
+		box-sizing: border-box;
+
+		.bg_footer_submit1 {
+			width: 690rpx;
+			height: 76rpx;
+			background: #FFFFFF;
+			border-radius: 36rpx;
+			border: 1rpx solid #E5E5E5;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+			.fornt-img {
+				width: 28rpx;
+				height: 28rpx;
+				margin-right: 12rpx;
+			}
+
+			span {
+				font-size: 26rpx;
+				font-family: PingFangSC-Regular, PingFang SC;
+				font-weight: 400;
+				color: #305ED5;
+			}
+		}
+
+		.bg_footer_submit {
+			width: 690rpx;
+			height: 88rpx;
+			box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+			border-radius: 8rpx;
+			font-size: 30rpx;
+			font-weight: 500;
+			color: #FFFFFF;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+	}
+
+	.details_dj {
+		display: flex;
+		flex-direction: column;
+
+		.details_dj_list {
+			width: 100%;
+			box-sizing: border-box;
+			background: #ffffff;
+			display: flex;
+			flex-direction: column;
+
+			.details_dj_list_item {
+				display: flex;
+				flex-direction: column;
+				border-bottom: 1rpx solid #E5E5E5;
+				padding: 30rpx;
+				line-height: 42rpx;
+
+				span {
+					&:nth-child(1) {
+						font-size: 28rpx;
+						font-weight: 400;
+						color: #222222;
+					}
+
+					&:nth-child(2) {
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #999999;
+					}
+				}
+			}
+		}
+
+		.details_dj_title {
+			width: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			padding: 0 30rpx 30rpx;
+			box-sizing: border-box;
+
+			.details_dj_title_left {
+				display: flex;
+				align-items: center;
+
+				span {
+					font-size: 32rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+			}
+
+		}
+	}
+
+	.contanir {
+		height: calc(env(safe-area-inset-bottom) + 720rpx);
+
+		.content {
+			margin-top: 20rpx;
+
+			.type-style {
+				width: 325rpx;
+				margin-bottom: 20rpx;
+			}
+		}
+	}
+
+	.bottom-view {
+		left: 40rpx;
+		right: 40rpx;
+		bottom: 0
+	}
+
+	.bl_list {
+		width: 100%;
+		height: calc(100% - 168rpx);
+		overflow-y: scroll;
+		margin-top: 30rpx;
+
+		.bl_list_item {
+			width: 100%;
+			height: 96rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			border-bottom: 1rPX solid #E5E5E5;
+
+			&:last-child {
+				border: none !important;
+			}
+
+			.bl_list_item_left {
+				flex: 1;
+				display: flex;
+				align-items: center;
+
+				input {
+					width: 30rpx;
+					height: 30rpx;
+					border: 1rpX solid #CCCCCC;
+					margin: 0 !important;
+				}
+
+				span {
+					font-size: 30rpx;
+					color: #222222;
+					margin-left: 10rpx;
+				}
+			}
+
+			.bl_list_item_right {
+				flex: 1;
+				height: 50rpx;
+				text-align: right;
+
+				input {
+					padding-left: 5rpx;
+					width: 160rpx;
+					height: 100%;
+					padding: 0 30rpx;
+					box-sizing: border-box;
+					text-align: right;
+					font-size: 28rpx;
+					color: #333333;
+					border-radius: 10rpx;
+					border: 1rPX solid #CCCCCC;
+
+					&::-webkit-input-placeholder {
+						font-size: 28rpx;
+						font-family: PingFangSC-Regular, PingFang SC;
+						font-weight: 400;
+						color: #999999;
+					}
+				}
+			}
+		}
+	}
+</style>
diff --git a/minipro_standard/pages_adjust/static/gongdan_ic_shoudong@2x.png b/minipro_standard/pages_adjust/static/gongdan_ic_shoudong@2x.png
new file mode 100644
index 0000000..c4f8fb8
--- /dev/null
+++ b/minipro_standard/pages_adjust/static/gongdan_ic_shoudong@2x.png
Binary files differ
diff --git a/minipro_standard/pages_inspect/pages/InspectionDetails/InspectionDetails.vue b/minipro_standard/pages_inspect/pages/InspectionDetails/InspectionDetails.vue
new file mode 100644
index 0000000..4518724
--- /dev/null
+++ b/minipro_standard/pages_inspect/pages/InspectionDetails/InspectionDetails.vue
@@ -0,0 +1,249 @@
+<template>
+	<view class="page">
+		<view class="page_info">
+			<view class="page_info_title">{{info.code}}</view>
+			<view class="page_info_nr">
+				<view class="item">
+					<view class="item_label">鐗╂枡淇℃伅锛�</view>
+					<view class="item_nr" v-if="info.mmodel">{{info.mmodel.name}}涓▄{info.mmodel.code}}</view>
+				</view>
+				<view class="items" style="margin-top: 0">
+					<view class="item_label">鐢熶骇鏁伴噺锛�</view>
+					<view class="item_nr" v-if="info.umodel">{{info.num}}{{info.umodel.name}}</view>
+				</view>
+				<view class="item">
+					<view class="item_label">鐢熶骇鎵规锛�</view>
+					<view class="item_nr">{{info.batch}}</view>
+				</view>
+				<view class="items">
+					<view class="item_label">鐢熶骇宸ュ簭锛�</view>
+					<view class="item_nr" v-if="info.pmodel">{{info.pmodel.name}}</view>
+				</view>
+				<view class="item">
+					<view class="item_label">宸ュ崟缂栧彿锛�</view>
+					<view class="item_nr">{{info.workorderCode}}</view>
+				</view>
+<!--                <view class="items">-->
+<!--                    <view class="item_label">鐢熶骇浜哄憳锛�</view>-->
+<!--                    <view class="item_nr">{{info.proUserids}}</view>-->
+<!--                </view>-->
+				<view class="items">
+					<view class="item_label">鐢熶骇璁惧锛�</view>
+					<view class="item_nr" v-if="info.devmodel">{{info.devmodel.name}}</view>
+				</view>
+				<!-- <view class="items">
+					<view class="item_label">宸ヨ鐮侊細</view>
+					<view class="item_nr" v-if="info.amodel">{{info.amodel.code}}</view>
+				</view> -->
+			</view>
+		</view>
+		<view class="page_title">妫�楠屼俊鎭�</view>
+		<view class="page_info1">
+			<view class="page_info1_item" style="margin: 0;">
+				<view class="label">妫�楠屼汉鍛橈細</view>
+				<view class="nr">{{info.smodelRealName}}/{{info.checkUserDepartName}}</view>
+			</view>
+			<view class="page_info1_items">
+				<view class="label">妫�楠屾棩鏈燂細</view>
+				<view class="nr">{{info.checkDate}}</view>
+			</view>
+			<view class="page_info1_item">
+				<view class="label">鍚堟牸鏁伴噺锛�</view>
+				<view class="nr" v-if="info.umodel">{{info.qualifiedNum}}{{info.umodel.name}}</view>
+			</view>
+			<view class="page_info1_items">
+				<view class="label">涓嶈壇鏁伴噺锛�</view>
+				<view class="nr" v-if="info.umodel">{{info.unqualifiedNum}}{{info.umodel.name}}</view>
+			</view>
+		</view>
+		<view class="page_err" v-if="info.checkInfo">
+			<!-- <view class="page_err_item">
+				<text>宸ヨ {{info.qualifiedApplianceCode}}</text>
+				<text v-if="info.umodel">{{info.unqualifiedNum}}{{info.umodel.name}}</text>
+			</view> -->
+			<view class="page_err_items">
+				<text>涓嶈壇鍘熷洜锛�</text>
+				<text>{{info.checkInfo}}</text>
+			</view>
+		</view>
+		<view class="page_footer" v-if="info.createUser === $store.state.userInfo.id && info.workorderstatus !== 4 && info.workorderstatus !== 2">
+			<view class="page_footer_dele red" @click="dele">鍒犻櫎</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				info: {}
+			};
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.page {
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    background: #F7F7F7;
+    .page_info {
+        padding: 30rpx;
+        background: #ffffff;
+        .page_info_title {
+            font-size: 32rpx;
+            font-weight: 500;
+            color: #333333;
+        }
+        .page_info_nr {
+            padding: 0 30rpx 30rpx 30rpx;
+            margin-top: 30rpx;
+            background: #F7F7F7;
+            border-radius: 16rpx;
+            display: flex;
+            align-items: center;
+            flex-wrap: wrap;
+            .items {
+                width: 45%;
+                display: flex;
+                margin-top: 24rpx;
+                .item_label {
+                    font-size: 24rpx;
+                    font-weight: 400;
+                    color: #666666;
+                    flex-shrink: 0;
+                }
+                .item_nr {
+                    font-size: 24rpx;
+                    font-weight: 400;
+                    color: #222222;
+                }
+            }
+            .item {
+                width: 55%;
+                display: flex;
+                margin-top: 24rpx;
+                .item_label {
+                    font-size: 24rpx;
+                    font-weight: 400;
+                    color: #666666;
+                    flex-shrink: 0;
+                }
+                .item_nr {
+                    font-size: 24rpx;
+                    font-weight: 400;
+                    color: #222222;
+                }
+            }
+        }
+    }
+    .page_title {
+        padding: 40rpx 30rpx 30rpx 30rpx;
+        font-size: 32rpx;
+        font-weight: 500;
+        color: #222222;
+    }
+    .page_info1 {
+        padding: 0 30rpx 30rpx 30rpx;
+        background: #ffffff;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        margin-bottom: 24rpx;
+        .page_info1_items {
+            display: flex;
+            width: 45%;
+            margin-top: 30rpx;
+            .label {
+                font-size: 26rpx;
+                font-weight: 400;
+                color: #666666;
+                flex-shrink: 0;
+            }
+            .nr {
+                font-size: 26rpx;
+                font-weight: 400;
+                color: #222222;
+            }
+        }
+        .page_info1_item {
+            display: flex;
+            width: 55%;
+            margin-top: 30rpx;
+            .label {
+                font-size: 26rpx;
+                font-weight: 400;
+                color: #666666;
+                flex-shrink: 0;
+            }
+            .nr {
+                font-size: 26rpx;
+                font-weight: 400;
+                color: #222222;
+            }
+        }
+    }
+    .page_err {
+        padding: 0 30rpx 30rpx 30rpx;
+        background: #ffffff;
+        .page_err_item {
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            padding-top: 30rpx;
+            text {
+                &:nth-child(1) {
+                    font-size: 32rpx;
+                    font-weight: 500;
+                    color: #DE5243;
+                }
+                &:nth-child(2) {
+                    font-size: 26rpx;
+                    font-weight: 400;
+                    color: #DE5243;
+                }
+            }
+        }
+        .page_err_items {
+            display: flex;
+            justify-content: space-between;
+            padding-top: 30rpx;
+            text {
+                &:nth-child(1) {
+                    font-size: 26rpx;
+                    font-weight: 400;
+                    color: #666666;
+                    flex-shrink: 0;
+                }
+                &:nth-child(2) {
+                    font-size: 26rpx;
+                    font-weight: 400;
+                    color: #222222;
+                }
+            }
+        }
+    }
+    .page_footer {
+        position: fixed;
+        bottom: 0;
+        width: 100%;
+        padding-bottom: 68rpx;
+        padding-left: 30rpx;
+        padding-right: 30rpx;
+        box-sizing: border-box;
+        .page_footer_dele {
+            width: 100%;
+            height: 88rpx;
+            background: white;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            font-size: 30rpx;
+            border-radius: 8rpx;
+            box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.08);
+        }
+    }
+}
+</style>
diff --git a/minipro_standard/pages_inspect/pages/InspectionRecords/InspectionRecords.vue b/minipro_standard/pages_inspect/pages/InspectionRecords/InspectionRecords.vue
new file mode 100644
index 0000000..a2dbb0c
--- /dev/null
+++ b/minipro_standard/pages_inspect/pages/InspectionRecords/InspectionRecords.vue
@@ -0,0 +1,643 @@
+<template>
+	<view class="content">
+		<view class="content_search">
+			<Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true" placeholder="鎼滅储宸ュ崟缂栫爜/鐗╂枡缂栫爜2">
+				<template v-slot:content>
+					<view class="Search_item">
+						<view class="Search_item_label">妫�楠屾棩鏈�</view>
+						<view class="Search_item_content" @click="timeShow = true">
+							<view class="Search_item_content_a" :style="pageData.checkStartDate ? 'color: #000;' : ''">{{ pageData.checkStartDate ? pageData.checkStartDate : '寮�濮嬫棩鏈�'}}</view>
+							<text>-</text>
+							<view class="Search_item_content_a" :style="pageData.checkEndDate ? 'color: #000;' : ''">{{ pageData.checkEndDate ? pageData.checkEndDate : '缁撴潫鏃ユ湡'}}</view>
+						</view>
+					</view>
+					<view class="Search_item">
+						<view class="Search_item_label">妫�楠岀被鍨�</view>
+						<view class="Search_item_content">
+							<view class="tag">
+								<view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in data" :key="item.id" @click="changeTag(i)">{{item.name}}</view>
+							</view>
+						</view>
+					</view>
+					<view class="Search_item">
+						<view class="Search_item_label">妫�楠屽伐搴�</view>
+						<view class="Search_item_content">
+							<view class="tag">
+								<view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in workingProcedure" :key="item.id" @click="changeTag1(i)">{{item.name}}</view>
+							</view>
+						</view>
+					</view>
+					<view class="Search_item">
+						<view class="Search_item_label">鎵规鍙�</view>
+						<view class="Search_item_content">
+							<u--input placeholder="璇疯緭鍏ユ壒娆″彿" border="surround" v-model="pageData.batch"></u--input>
+						</view>
+					</view>
+				</template>
+			</Search>
+		</view>
+		<view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+		<view class="content_list">
+			<scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+				<view class="content_list_item" v-for="item in lists" :key="item.id" @click="jump(item)">
+					<view class="content_list_item_title">
+						<text>{{item.code}}</text>
+						<text class="warning" v-if="item.checkType === 0">宸$嚎</text>
+						<text v-if="item.checkType === 1">宸℃</text>
+						<text class="green" v-if="item.checkType === 2">瀹屽伐妫�</text>
+					</view>
+					<view class="content_list_item_nr">
+						<view class="content_list_item_nr_box">
+							<view class="label">鐗╂枡淇℃伅锛�</view>
+							<view class="cr" v-if="item.mmodel">{{item.mmodel.name}}涓▄{item.mmodel.code}}</view>
+						</view>
+						<view class="content_list_item_nr_boxs">
+							<view class="label">鐢熶骇鏁伴噺锛�</view>
+							<view class="cr" v-if="item.umodel">{{item.num}}{{item.umodel.name}}</view>
+						</view>
+						<view class="content_list_item_nr_box">
+							<view class="label">鐢熶骇鎵规锛�</view>
+							<view class="cr">{{item.batch}}</view>
+						</view>
+						<view class="content_list_item_nr_boxs">
+							<view class="label">鐢熶骇宸ュ簭锛�</view>
+							<view class="cr" v-if="item.pmodel">{{item.pmodel.name}}</view>
+						</view>
+						<view class="content_list_item_nr_box">
+							<view class="label">宸ュ崟缂栧彿锛�</view>
+							<view class="cr">{{item.workorderCode}}</view>
+						</view>
+						<view class="content_list_item_nr_boxs">
+							<view class="label">妫�楠屼汉鍛橈細</view>
+							<view class="cr">{{item.smodelRealName}}/{{item.checkUserDepartName}}</view>
+						</view>
+						<!-- <view class="content_list_item_nr_box">
+							<view class="label">妫�楠屾棩鏈燂細</view>
+							<view class="cr">{{item.checkDate}}</view>
+						</view> -->
+						<!-- <view class="content_list_item_nr_boxs">
+							<view class="label">宸ヨ鐮侊細</view>
+							<view class="cr" v-if="item.amodel">{{item.amodel.code}}</view>
+						</view> -->
+						<view class="content_list_item_nr_box">
+							<view class="label">鍚堟牸鏁伴噺锛�</view>
+							<view class="cr" v-if="item.umodel">{{item.qualifiedNum}}{{item.umodel.name}}</view>
+						</view>
+						<view class="content_list_item_nr_boxs">
+							<view class="label">涓嶈壇鏁伴噺锛�</view>
+							<view class="cr warning" v-if="item.umodel">{{item.unqualifiedNum}}{{item.umodel.name}}</view>
+						</view>
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+		<!-- 閫夋嫨鏃ユ湡 -->
+		<u-calendar :show="timeShow" mode="range" @confirm="timeConfirm"></u-calendar>
+	</view>
+</template>
+
+<script>
+	import Search from '@/components/Search.vue'
+	export default {
+		components: { Search },
+		data() {
+			return {
+				height: '',
+				top: '',
+				listData: {
+					capacity: 10,
+					page: 0,
+					total: 0,
+					startDate: '',
+					endDate: '',
+					procedureIds: [],
+					departIds: '',
+					mixParam: '',
+					cateIds: []
+				},
+				data: [		// 妫�楠岀被鍨�
+					{ id: '0', name: '宸$嚎', isActive: false },
+					{ id: '1', name: '宸℃', isActive: false },
+					{ id: '2', name: '瀹屽伐妫�', isActive: false }
+				],
+				workingProcedure: [],	// 宸ュ簭
+				finished: true,
+				loading: false,
+				refreshing: false,
+				timeShow: false,
+				lists: [
+					{
+						id: 1,
+						checkType: 0,
+						status: 0,
+						code: '1234543223',
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 2,
+						checkType: 1,
+						code: '1234543223',
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						id: 3,
+						checkType: 2,
+						code: '1234543223',
+						status: 0,
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						checkType: 2,
+						id: 4,
+						status: 0,
+						urgent: 1,
+						code: '1234543223',
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					},
+					{
+						checkType: 1,
+						id: 5,
+						status: 0,
+						code: '1234543223',
+						urgent: 1,
+						num: 100,
+						batch: '11111',
+						planDate: '2023-08-29',
+						mmodel: {
+							name: '宸ュ簭璁″垝',
+							code: 'fbdseasafghb'
+						},
+						usermodel: {
+							realname: '璁″垝浜哄憳'
+						},
+						pmodel: {
+							name: '宸ュ簭璁″垝'
+						},
+						fmodel: {
+							name: '宸ュ巶'
+						}
+					}
+				]
+			};
+		},
+		onReady() {
+			var that = this
+			this.$nextTick(() => {
+				uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+					that.height = `calc(100vh - ${rect.height + 80}px)`
+					that.top = `${rect.height}px`
+				}).exec()
+			})
+		},
+		methods: {
+			// 璺宠浆
+			jump(item) {
+				uni.navigateTo({
+					url: `/pages/InspectionDetails/InspectionDetails?id=${item.id}`
+				})
+			},
+			// 鑾峰彇澶撮儴缁勪欢楂樺害
+			getHeight(height) {
+				this.height = height
+			},
+			// 閲嶇疆
+			reset() {
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.listData.mixParam = ''
+				this.listData.startDate = ''
+				this.listData.endDate = ''
+				this.listData.procedureIds = []
+				if (this.factoryList.length > 0) {
+					this.listData.departIds = this.factoryList[0].id
+				}
+				if (this.data.length > 0) {
+					this.data.forEach(item => { item.isActive = false })
+				}
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鏃ユ湡纭畾
+			timeConfirm(val) {
+				this.listData.startDate = val[0]
+				this.listData.endDate = val[val.length - 1]
+				this.timeShow = false
+			},
+			// 鍒囨崲宸ュ巶
+			changeTags(i, id) {
+				this.listData.departIds = id
+				this.getWorkingProcedures(id)
+				this.factoryList.forEach((item, index) => {
+					if (index === i) {
+						item.isActive = true
+					} else {
+						item.isActive = false
+					}
+				})
+			},
+			// 鎵撳紑鏃ユ湡鎻掍欢
+			openDate() {
+				this.timeShow = true
+			},
+			// 鎼滅储
+			searchInput(val) {
+				this.listData.mixParam = val
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				this.getLists()
+			},
+			// 鐐瑰嚮鏍囩鎼滅储
+			clickTag(ids) {
+				this.listData.cateIds = ids
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+			},
+			// 鑾峰彇鍒楄〃缁熻
+			pageCounts() {
+				pageCount({
+					factoryId: this.listData.departIds,
+					procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+					startDate: this.listData.startDate,
+					endDate: this.listData.endDate,
+					statusList: this.listData.cateIds
+				}).then(res => {
+					if (res.code === 200 && res.data) {
+						this.tagList[0].num = res.data.allNum.toString()
+						this.tagList[1].num = res.data.startNum.toString()
+						this.tagList[2].num = res.data.ingNum.toString()
+						this.tagList[3].num = res.data.endNum.toString()
+					}
+				})
+			},
+			// 鑾峰彇宸ュ巶鏁版嵁
+			getOrganizations() {
+				getOrganization({
+					type: 1
+				}).then(res => {
+					if (res.code === 200 && res.data && res.data.length !== 0) {
+						res.data.forEach((item, i) => {
+							item.isActive = i === 0;
+						})
+						if (res.data.length > 0) {
+							this.factoryList = res.data
+							this.listData.departIds = this.factoryList[0].id
+							this.listData.procedureIds = ''
+							this.finished = false
+							this.getWorkingProcedures(this.factoryList[0].id)
+							this.getLists()
+							this.pageCounts()
+						}
+					}
+				})
+			},
+			// 鑾峰彇宸ュ簭鏁版嵁
+			getWorkingProcedures(orgId) {
+				this.data = []
+				getWorkingProcedure({ orgId })
+					.then(res => {
+						if (res.code === 200 && res.data && res.data.length !== 0) {
+							res.data.forEach((item, i) => {
+								item.isActive = false;
+							})
+							this.data = res.data
+						}
+					})
+			},
+			// 鎼滅储寮规鎻愪氦
+			submit()  {
+				let pmodelOrgId = []
+				this.data.forEach((item) => {
+					if (item.isActive) {
+						pmodelOrgId.push(item.id)
+					}
+				})
+				this.listData.procedureIds = pmodelOrgId
+				this.listData.page = 0
+				this.finished = false
+				this.lists = []
+				// this.getLists()
+				// this.pageCounts()
+			},
+			// 鑾峰彇璁″垝鍒楄〃鏁版嵁
+			getLists() {
+				console.log('getLists')
+				if (!this.finished) {
+					this.loading = true
+					this.listData.page = this.listData.page++
+					getList({
+						capacity: this.listData.capacity,
+						model: {
+							mixParam: this.listData.mixParam,
+							startDate: this.listData.startDate,
+							endDate: this.listData.endDate,
+							procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+							factoryId: this.listData.departIds,
+							statusList: this.listData.cateIds
+						},
+						page: this.listData.page,
+						sorts: [
+							{
+								direction: 'ASC',
+								property: 'publishDate'
+							}
+						]
+					}).then(res => {
+						this.loading = false
+						this.listData.total = res.data.total
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+						if (res.code === 200 && res.data.records.length !== 0) {
+							if (this.lists.length === 0) {
+								this.lists = res.data.records
+							} else {
+								this.lists.push(...res.data.records)
+							}
+						} else {
+							this.finished = true
+						}
+					}).catch(err => {
+						this.loading = false
+						this.finished = true
+						if (this.refreshing) {
+							this.lists = []
+							this.refreshing = false;
+						}
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		.content_search {
+			width: 100%;
+			padding: 30rpx;
+			background: white;
+			position: sticky;
+			top: 0;
+			z-index: 999;
+			box-sizing: border-box;
+			.Search_item {
+				margin-bottom: 40rpx;
+				.Search_item_label {
+					font-size: 30rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+				.Search_item_content {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					margin-top: 30rpx;
+					input {
+						width: 100%;
+						height: 70rpx;
+						border-radius: 10rpx;
+						padding: 0 20rpx;
+						box-sizing: border-box;
+						border: 1rpx solid #939393;
+						color: black;
+						font-size: 26rpx;
+					}
+					input::-webkit-input-placeholder {
+						color: #999999;
+						font-size: 26rpx;
+					}
+					input:-moz-placeholder {
+						color: #999999;
+						font-size: 26rpx;
+					}
+					input::-moz-placeholder {
+						color: #999999;
+						font-size: 26rpx;
+					}
+					input:-ms-input-placeholder {
+						color: #999999;
+						font-size: 26rpx;
+					}
+					.tag {
+						display: flex;
+						flex-wrap: wrap;
+						align-items: center;
+						.tag_active {
+							background: $nav-color !important;
+							color: #ffffff !important;
+						}
+						.tag_item {
+							width: 156rpx;
+							height: 70rpx;
+							box-sizing: border-box;
+							background: #F2F2F2;
+							border-radius: 8rpx;
+							font-size: 26rpx;
+							font-weight: 400;
+							color: #333333;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							margin-right: 22rpx;
+							margin-bottom: 22rpx;
+							&:nth-child(4n) {
+								margin-right: 0;
+							}
+						}
+					}
+					text {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+					}
+					.Search_item_content_a {
+						width: 308rpx;
+						height: 70rpx;
+						background: #F7F7F7;
+						border-radius: 8rpx;
+						border: 1rpx solid #EEEEEE;
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #B2B2B2;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+					}
+				}
+			}
+			.content_search_x {
+				height: 24rpx;
+			}
+		}
+		.content_list {
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+			.content_list_item {
+				width: 100%;
+				box-sizing: border-box;
+				padding: 30rpx;
+				background: #ffffff;
+				margin-bottom: 20rpx;
+				.content_list_item_title {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					.warning {
+						color: $nav-stateColor5 !important;
+					}
+					.green {
+						color: $nav-stateColor2 !important;
+					}
+					text {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #333333;
+					}
+				}
+				.content_list_item_nr {
+					padding: 24rpx 30rpx;
+					background: #F7F7F7;
+					border-radius: 16rpx;
+					margin-top: 30rpx;
+					display: flex;
+					justify-content: space-between;
+					flex-wrap: wrap;
+					.content_list_item_nr_boxs {
+						width: 45%;
+						display: flex;
+						margin-top: 24rpx;
+						&:nth-child(1) {
+							margin-top: 0;
+						}
+						&:nth-child(2) {
+							margin-top: 0;
+						}
+						.warning {
+							color: $nav-stateColor4 !important;
+						}
+						.label {
+							flex-shrink: 0;
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+						}
+						.cr {
+							flex: 1;
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+							overflow: hidden;
+							white-space: nowrap;
+							text-overflow: ellipsis;
+							-o-text-overflow:ellipsis;
+						}
+					}
+					.content_list_item_nr_box {
+						width: 55%;
+						display: flex;
+						margin-top: 24rpx;
+						&:nth-child(1) {
+							margin-top: 0;
+						}
+						&:nth-child(2) {
+							margin-top: 0;
+						}
+						.label {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #666666;
+							flex-shrink: 0;
+						}
+						.cr {
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #222222;
+						}
+					}
+				}
+			}
+		}
+		.content_total {
+			width: 100%;
+			height: 80rpx;
+			padding: 24rpx 30rpx;
+			background: #F7F7F7;
+			font-size: 24rpx;
+			font-weight: 400;
+			box-sizing: border-box;
+			color: #666666;
+			position: sticky;
+			z-index: 99;
+		}
+	}
+</style>
diff --git a/minipro_standard/static/@2x.png b/minipro_standard/static/filter@2x.png
similarity index 100%
rename from minipro_standard/static/@2x.png
rename to minipro_standard/static/filter@2x.png
Binary files differ
diff --git a/minipro_standard/static/ic_edit@2x.png b/minipro_standard/static/ic_edit@2x.png
new file mode 100644
index 0000000..d7048cf
--- /dev/null
+++ b/minipro_standard/static/ic_edit@2x.png
Binary files differ
diff --git a/minipro_standard/store/index.js b/minipro_standard/store/index.js
index 0d677c6..2d5b182 100644
--- a/minipro_standard/store/index.js
+++ b/minipro_standard/store/index.js
@@ -1,6 +1,10 @@
 import Vue from 'vue'
-import Vuex from 'vuex'
-import { pageCount } from '@/util/api/index.js'
+import Vuex from 'vuex'
+import {
+	pageCount,
+	getTreeList,
+	getUserInfo
+} from '@/util/api/index.js'
 
 Vue.use(Vuex) // vue鐨勬彃浠舵満鍒�
 
@@ -8,7 +12,9 @@
 const statusbarHeight = uni.getStorageSync('statusbarHeight');
 const menuButtonWidth = uni.getStorageSync('menuButtonWidth');
 const token = uni.getStorageSync('token');
-const userInfo = uni.getStorageSync('userInfo');
+const userInfo = uni.getStorageSync('userInfo');
+const Menu = uni.getStorageSync('MenuList');
+const session = uni.getStorageSync('session');
 
 
 // Vuex.Store 鏋勯�犲櫒閫夐」
@@ -16,15 +22,18 @@
 	// 涓轰簡涓嶅拰椤甸潰鎴栫粍浠剁殑data涓殑閫犳垚娣锋穯锛宻tate涓殑鍙橀噺鍓嶉潰寤鸿鍔犱笂$绗﹀彿
 	state: {
 		// 鐢ㄦ埛淇℃伅
-		userInfo: userInfo || null,
+		userInfo: userInfo || null,
 		token: token || null,
 		menuButtonWidth: menuButtonWidth || '0',
 		statusbarHeight: statusbarHeight || '0',
-		navHeight: navHeight || '0',
-		// 寰呭姙鏁伴噺
-		upcomingNum: {
-			d: 0,
-			y: 0
+		navHeight: navHeight || '0',
+		session: session ? session : '',
+		// 鑿滃崟鏉冮檺
+		Menu: Menu ? JSON.parse(Menu) : [],
+		// 寰呭姙鏁伴噺
+		upcomingNum: {
+			d: 0,
+			y: 0
 		},
 	},
 	mutations: {
@@ -36,23 +45,48 @@
 			uni.setStorageSync('statusbarHeight', val.statusbarHeight);
 			uni.setStorageSync('menuButtonWidth', val.menuButtonWidth);
 		},
-		SETTOKEN(state, val) {
-			state.token = val
-			uni.setStorageSync('token', val);
-		},
-		SETUSERINFO(state, val) {
-			state.userInfo = val
-			uni.setStorageSync('userInfo', val);
-		},
-		SETNUM(state, val) {
-			state.upcomingNum.d = val.d
-			state.upcomingNum.y = val.y
+		SETTOKEN(state, val) {
+			state.token = val
+			uni.setStorageSync('token', val);
+		},
+		SETUSERINFO(state, val) {
+			state.userInfo = val
+			uni.setStorageSync('userInfo', val);
+		},
+		SETNUM(state, val) {
+			state.upcomingNum.d = val.d
+			state.upcomingNum.y = val.y
+		},
+		SETMENU(state, data) {
+			state.Menu = data
+			uni.setStorageSync('MenuList', JSON.stringify(data));
+		},
+		SETSESSION(state, data) {
+			state.session = data;
+			uni.setStorageSync('session', data);
+		},
+		clearCache(state) {
+			state.userInfo = ''
+			state.token = ''
+			state.session = ''
+			state.Menu = []
+			state.upcomingNum.d = 0
+			state.upcomingNum.y = 0
+			uni.clearStorageSync()
 		}
 	},
 	actions: {
+		// 鍚戝悗绔幏鍙栬彍鍗曟爮鏉冮檺
+		async getMenuList(content, type) {
+			let res = await getTreeList({
+				type: type
+			})
+			if (res.code === 200) {
+				content.commit('SETMENU', res.data)
+			}
+		},
 		// 鑾峰彇鐘舵�侀珮搴�
-		getHeight(context) {
-			
+		getHeight(context) {
 			let res = uni.getMenuButtonBoundingClientRect()
 			let status = uni.getSystemInfoSync()
 			let menuButtonWidth = res.width
@@ -65,14 +99,25 @@
 				height,
 				menuButtonWidth
 			})
-		},
-		async getUpcomingNum() {
-			let res = await pageCount({})
-			if (res.code === 200) {
-				content.commit('SETNUM', { d: res.data.startNum, y: res.data.endNum })
-			}
-		}
+		},
+		async getUpcomingNum() {
+			let res = await pageCount({})
+			if (res.code === 200) {
+				content.commit('SETNUM', {
+					d: res.data.startNum,
+					y: res.data.endNum
+				})
+			}
+		},
+		// 鍚戝悗绔幏鍙栦釜浜轰俊鎭�
+		async getUserInfos(content) {
+			let res = await getUserInfo()
+			if (res.code === 200) {
+				content.commit('SETUSERINFO', res.data)
+				return true;
+			}
+		}
 	}
 })
 
-export default store
+export default store
\ No newline at end of file
diff --git a/minipro_standard/uni.scss b/minipro_standard/uni.scss
index 98bb242..04138e5 100644
--- a/minipro_standard/uni.scss
+++ b/minipro_standard/uni.scss
@@ -14,6 +14,18 @@
 
 /* 棰滆壊鍙橀噺 */
 @import '@/uni_modules/uview-ui/theme.scss';
+
+$nav-color: #4275FC;
+
+// 鍏ㄥ眬鐘舵�佽壊
+$nav-stateColor1: #305ED5;
+$nav-stateColor2: #03AF76;
+$nav-stateColor3: #999999;
+$nav-stateColor4: #de5243;
+$nav-stateColor5: #F5A400;
+$nav-stateColor6: #666666;
+$nav-stateColor7: #03AF76;
+
 /* 琛屼负鐩稿叧棰滆壊 */
 $uni-color-primary: #007aff;
 $uni-color-success: #4cd964;
diff --git a/minipro_standard/uni_modules/uni-collapse/changelog.md b/minipro_standard/uni_modules/uni-collapse/changelog.md
new file mode 100644
index 0000000..292e4c7
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-collapse/changelog.md
@@ -0,0 +1,36 @@
+## 1.4.3锛�2022-01-25锛�
+- 淇 鍒濆鍖栫殑鏃跺�� 锛宱pen 灞炴�уけ鏁堢殑bug
+## 1.4.2锛�2022-01-21锛�
+- 淇 寰俊灏忕▼搴弐esize鍚庣粍浠舵敹璧风殑bug
+## 1.4.1锛�2021-11-22锛�
+- 淇 vue3涓釜鍒玸css鍙橀噺鏃犳硶鎵惧埌鐨勯棶棰�
+## 1.4.0锛�2021-11-19锛�
+- 浼樺寲 缁勪欢UI锛屽苟鎻愪緵璁捐璧勬簮锛岃瑙�:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 鏂囨。杩佺Щ锛岃瑙�:[https://uniapp.dcloud.io/component/uniui/uni-collapse](https://uniapp.dcloud.io/component/uniui/uni-collapse)
+## 1.3.3锛�2021-08-17锛�
+- 浼樺寲 show-arrow 灞炴�ч粯璁や负true
+## 1.3.2锛�2021-08-17锛�
+- 鏂板 show-arrow 灞炴�э紝鎺у埗鏄惁鏄剧ず鍙充晶绠ご
+## 1.3.1锛�2021-07-30锛�
+- 浼樺寲 vue3涓嬪皬绋嬪簭浜嬩欢璀﹀憡鐨勯棶棰�
+## 1.3.0锛�2021-07-30锛�
+- 缁勪欢鍏煎 vue3锛屽浣曞垱寤簐ue3椤圭洰锛岃瑙� [uni-app 椤圭洰鏀寔 vue3 浠嬬粛](https://ask.dcloud.net.cn/article/37834)
+## 1.2.2锛�2021-07-21锛�
+- 淇 鐢�1.2.0鐗堟湰寮曡捣鐨� change 浜嬩欢杩斿洖 undefined 鐨凚ug
+## 1.2.1锛�2021-07-21锛�
+- 浼樺寲 缁勪欢绀轰緥
+## 1.2.0锛�2021-07-21锛�
+- 鏂板 缁勪欢鎶樺彔鍔ㄧ敾
+- 鏂板 value\v-model 灞炴�� 锛屽姩鎬佷慨鏀归潰鏉挎姌鍙犵姸鎬�
+- 鏂板 title 鎻掓Ы 锛屽彲瀹氫箟闈㈡澘鏍囬
+- 鏂板 border 灞炴�� 锛屾樉绀洪殣钘忛潰鏉垮唴瀹瑰垎闅旂嚎
+- 鏂板 title-border 灞炴�� 锛屾樉绀洪殣钘忛潰鏉挎爣棰樺垎闅旂嚎
+- 淇 resize 鏂规硶澶辨晥鐨凚ug
+- 淇 change 浜嬩欢杩斿洖鍙傛暟涓嶆纭殑Bug
+- 浼樺寲 H5銆丄pp 骞冲彴鑷姩鏇村叿鍐呭鏇存柊楂樺害锛屾棤闇�璋冪敤 reszie() 鏂规硶
+## 1.1.7锛�2021-05-12锛�
+- 鏂板 缁勪欢绀轰緥鍦板潃
+## 1.1.6锛�2021-02-05锛�
+- 浼樺寲 缁勪欢寮曠敤鍏崇郴锛岄�氳繃uni_modules寮曠敤缁勪欢
+## 1.1.5锛�2021-02-05锛�
+- 璋冩暣涓簎ni_modules鐩綍瑙勮寖
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue b/minipro_standard/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue
new file mode 100644
index 0000000..b2aad1f
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue
@@ -0,0 +1,402 @@
+<template>
+	<view class="uni-collapse-item">
+		<!-- onClick(!isOpen) -->
+		<view @click="onClick(!isOpen)" class="uni-collapse-item__title"
+			:class="{'is-open':isOpen &&titleBorder === 'auto' ,'uni-collapse-item-border':titleBorder !== 'none'}">
+			<view class="uni-collapse-item__title-wrap">
+				<slot name="title">
+					<view class="uni-collapse-item__title-box" :class="{'is-disabled':disabled}">
+						<image v-if="thumb" :src="thumb" class="uni-collapse-item__title-img" />
+						<text class="uni-collapse-item__title-text">{{ title }}</text>
+					</view>
+				</slot>
+			</view>
+			<view v-if="showArrow"
+				:class="{ 'uni-collapse-item__title-arrow-active': isOpen, 'uni-collapse-item--animation': showAnimation === true }"
+				class="uni-collapse-item__title-arrow">
+				<uni-icons :color="disabled?'#ddd':'#bbb'" size="14" type="bottom" />
+			</view>
+		</view>
+		<view class="uni-collapse-item__wrap" :class="{'is--transition':showAnimation}"
+			:style="{height: (isOpen?height:0) +'px'}">
+			<view :id="elId" ref="collapse--hook" class="uni-collapse-item__wrap-content"
+				:class="{open:isheight,'uni-collapse-item--border':border&&isOpen}">
+				<slot></slot>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	// #ifdef APP-NVUE
+	const dom = weex.requireModule('dom')
+	// #endif
+	/**
+	 * CollapseItem 鎶樺彔闈㈡澘瀛愮粍浠�
+	 * @description 鎶樺彔闈㈡澘瀛愮粍浠�
+	 * @property {String} title 鏍囬鏂囧瓧
+	 * @property {String} thumb 鏍囬宸︿晶缂╃暐鍥�
+	 * @property {String} name 鍞竴鏍囧織绗�
+	 * @property {Boolean} open = [true|false] 鏄惁灞曞紑缁勪欢
+	 * @property {Boolean} titleBorder = [true|false] 鏄惁鏄剧ず鏍囬鍒嗛殧绾�
+	 * @property {Boolean} border = [true|false] 鏄惁鏄剧ず鍒嗛殧绾�
+	 * @property {Boolean} disabled = [true|false] 鏄惁灞曞紑闈㈡澘
+	 * @property {Boolean} showAnimation = [true|false] 寮�鍚姩鐢�
+	 * @property {Boolean} showArrow = [true|false] 鏄惁鏄剧ず鍙充晶绠ご
+	 */
+	export default {
+		name: 'uniCollapseItem',
+		props: {
+			// 鍒楄〃鏍囬
+			title: {
+				type: String,
+				default: ''
+			},
+			name: {
+				type: [Number, String],
+				default: ''
+			},
+			// 鏄惁绂佺敤
+			disabled: {
+				type: Boolean,
+				default: false
+			},
+			// #ifdef APP-PLUS
+			// 鏄惁鏄剧ず鍔ㄧ敾,app 绔粯璁や笉寮�鍚姩鐢伙紝鍗¢】涓ラ噸
+			showAnimation: {
+				type: Boolean,
+				default: false
+			},
+			// #endif
+			// #ifndef APP-PLUS
+			// 鏄惁鏄剧ず鍔ㄧ敾
+			showAnimation: {
+				type: Boolean,
+				default: true
+			},
+			// #endif
+			// 鏄惁灞曞紑
+			open: {
+				type: Boolean,
+				default: false
+			},
+			// 缂╃暐鍥�
+			thumb: {
+				type: String,
+				default: ''
+			},
+			// 鏍囬鍒嗛殧绾挎樉绀虹被鍨�
+			titleBorder: {
+				type: String,
+				default: 'auto'
+			},
+			border: {
+				type: Boolean,
+				default: true
+			},
+			showArrow: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			// TODO 闅忔満鐢熺敓鍏冪礌ID锛岃В鍐崇櫨搴﹀皬绋嬪簭鑾峰彇鍚屼竴涓厓绱犱綅缃俊鎭殑bug
+			const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
+			return {
+				isOpen: false,
+				isheight: null,
+				height: 0,
+				elId,
+				nameSync: 0
+			}
+		},
+		watch: {
+			open(val) {
+				this.isOpen = val
+				this.onClick(val, 'init')
+			}
+		},
+		updated(e) {
+			this.$nextTick(() => {
+				this.init(true)
+			})
+		},
+		created() {
+			this.collapse = this.getCollapse()
+			this.oldHeight = 0
+			this.onClick(this.open, 'init')
+		},
+		// #ifndef VUE3
+		// TODO vue2
+		destroyed() {
+			if (this.__isUnmounted) return
+			this.uninstall()
+		},
+		// #endif
+		// #ifdef VUE3
+		// TODO vue3
+		unmounted() {
+			this.__isUnmounted = true
+			this.uninstall()
+		},
+		// #endif
+		mounted() {
+			if (!this.collapse) return
+			if (this.name !== '') {
+				this.nameSync = this.name
+			} else {
+				this.nameSync = this.collapse.childrens.length + ''
+			}
+			if (this.collapse.names.indexOf(this.nameSync) === -1) {
+				this.collapse.names.push(this.nameSync)
+			} else {
+				console.warn(`name 鍊� ${this.nameSync} 閲嶅`);
+			}
+			if (this.collapse.childrens.indexOf(this) === -1) {
+				this.collapse.childrens.push(this)
+			}
+			this.init()
+		},
+		methods: {
+			init(type) {
+				// #ifndef APP-NVUE
+				this.getCollapseHeight(type)
+				// #endif
+				// #ifdef APP-NVUE
+				this.getNvueHwight(type)
+				// #endif
+			},
+			uninstall() {
+				if (this.collapse) {
+					this.collapse.childrens.forEach((item, index) => {
+						if (item === this) {
+							this.collapse.childrens.splice(index, 1)
+						}
+					})
+					this.collapse.names.forEach((item, index) => {
+						if (item === this.nameSync) {
+							this.collapse.names.splice(index, 1)
+						}
+					})
+				}
+			},
+			onClick(isOpen, type) {
+				if (this.disabled) return
+				this.isOpen = isOpen
+				if (this.isOpen && this.collapse) {
+					this.collapse.setAccordion(this)
+				}
+				if (type !== 'init') {
+					this.collapse.onChange(isOpen, this)
+				}
+			},
+			getCollapseHeight(type, index = 0) {
+				const views = uni.createSelectorQuery().in(this)
+				views
+					.select(`#${this.elId}`)
+					.fields({
+						size: true
+					}, data => {
+						// TODO 鐧惧害涓彲鑳借幏鍙栦笉鍒拌妭鐐逛俊鎭� 锛岄渶瑕佸惊鐜幏鍙�
+						if (index >= 10) return
+						if (!data) {
+							index++
+							this.getCollapseHeight(false, index)
+							return
+						}
+						// #ifdef APP-NVUE
+						this.height = data.height + 1
+						// #endif
+						// #ifndef APP-NVUE
+						this.height = data.height
+						// #endif
+						this.isheight = true
+						if (type) return
+						this.onClick(this.isOpen, 'init')
+					})
+					.exec()
+			},
+			getNvueHwight(type) {
+				const result = dom.getComponentRect(this.$refs['collapse--hook'], option => {
+					if (option && option.result && option.size) {
+						// #ifdef APP-NVUE
+						this.height = option.size.height + 1
+						// #endif
+						// #ifndef APP-NVUE
+						this.height = option.size.height
+						// #endif
+						this.isheight = true
+						if (type) return
+						this.onClick(this.open, 'init')
+					}
+				})
+			},
+			/**
+			 * 鑾峰彇鐖跺厓绱犲疄渚�
+			 */
+			getCollapse(name = 'uniCollapse') {
+				let parent = this.$parent;
+				let parentName = parent.$options.name;
+				while (parentName !== name) {
+					parent = parent.$parent;
+					if (!parent) return false;
+					parentName = parent.$options.name;
+				}
+				return parent;
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.uni-collapse-item {
+		/* #ifndef APP-NVUE */
+		box-sizing: border-box;
+
+		/* #endif */
+		&__title {
+			/* #ifndef APP-NVUE */
+			display: flex;
+			width: 100%;
+			box-sizing: border-box;
+			/* #endif */
+			flex-direction: row;
+			align-items: center;
+			transition: border-bottom-color .3s;
+
+			// transition-property: border-bottom-color;
+			// transition-duration: 5s;
+			&-wrap {
+				width: 100%;
+				flex: 1;
+
+			}
+
+			&-box {
+				padding: 0 15px;
+				/* #ifndef APP-NVUE */
+				display: flex;
+				width: 100%;
+				box-sizing: border-box;
+				/* #endif */
+				flex-direction: row;
+				justify-content: space-between;
+				align-items: center;
+				height: 48px;
+				line-height: 48px;
+				background-color: #fff;
+				color: #303133;
+				font-size: 13px;
+				font-weight: 500;
+				/* #ifdef H5 */
+				cursor: pointer;
+				outline: none;
+
+				/* #endif */
+				&.is-disabled {
+					.uni-collapse-item__title-text {
+						color: #999;
+					}
+				}
+
+			}
+
+			&.uni-collapse-item-border {
+				border-bottom: 1px solid #ebeef5;
+			}
+
+			&.is-open {
+				border-bottom-color: transparent;
+			}
+
+			&-img {
+				height: 22px;
+				width: 22px;
+				margin-right: 10px;
+			}
+
+			&-text {
+				flex: 1;
+				font-size: 14px;
+				/* #ifndef APP-NVUE */
+				white-space: nowrap;
+				color: inherit;
+				/* #endif */
+				/* #ifdef APP-NVUE */
+				lines: 1;
+				/* #endif */
+				overflow: hidden;
+				text-overflow: ellipsis;
+			}
+
+			&-arrow {
+				/* #ifndef APP-NVUE */
+				display: flex;
+				box-sizing: border-box;
+				/* #endif */
+				align-items: center;
+				justify-content: center;
+				width: 20px;
+				height: 20px;
+				margin-right: 10px;
+				transform: rotate(0deg);
+
+				&-active {
+					transform: rotate(-180deg);
+				}
+			}
+
+
+		}
+
+		&__wrap {
+			/* #ifndef APP-NVUE */
+			will-change: height;
+			box-sizing: border-box;
+			/* #endif */
+			background-color: #fff;
+			overflow: hidden;
+			position: relative;
+			height: 0;
+
+			&.is--transition {
+				// transition: all 0.3s;
+				transition-property: height, border-bottom-width;
+				transition-duration: 0.3s;
+				/* #ifndef APP-NVUE */
+				will-change: height;
+				/* #endif */
+			}
+
+
+
+			&-content {
+				position: absolute;
+				font-size: 13px;
+				color: #303133;
+				// transition: height 0.3s;
+				border-bottom-color: transparent;
+				border-bottom-style: solid;
+				border-bottom-width: 0;
+
+				&.uni-collapse-item--border {
+					border-bottom-width: 1px;
+					border-bottom-color: red;
+					border-bottom-color: #ebeef5;
+				}
+
+				&.open {
+					position: relative;
+				}
+			}
+		}
+
+		&--animation {
+			transition-property: transform;
+			transition-duration: 0.3s;
+			transition-timing-function: ease;
+		}
+
+	}
+</style>
diff --git a/minipro_standard/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue b/minipro_standard/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue
new file mode 100644
index 0000000..f87bb25
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue
@@ -0,0 +1,147 @@
+<template>
+	<view class="uni-collapse">
+		<slot />
+	</view>
+</template>
+<script>
+	/**
+	 * Collapse 鎶樺彔闈㈡澘
+	 * @description 灞曠ず鍙互鎶樺彔 / 灞曞紑鐨勫唴瀹瑰尯鍩�
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=23
+	 * @property {String|Array} value 褰撳墠婵�娲婚潰鏉挎敼鍙樻椂瑙﹀彂(濡傛灉鏄墜椋庣惔妯″紡锛屽弬鏁扮被鍨嬩负string锛屽惁鍒欎负array)
+	 * @property {Boolean} accordion = [true|false] 鏄惁寮�鍚墜椋庣惔鏁堟灉鏄惁寮�鍚墜椋庣惔鏁堟灉
+	 * @event {Function} change 鍒囨崲闈㈡澘鏃惰Е鍙戯紝濡傛灉鏄墜椋庣惔妯″紡锛岃繑鍥炵被鍨嬩负string锛屽惁鍒欎负array
+	 */
+	export default {
+		name: 'uniCollapse',
+		emits:['change','activeItem','input','update:modelValue'],
+		props: {
+			value: {
+				type: [String, Array],
+				default: ''
+			},
+			modelValue: {
+				type: [String, Array],
+				default: ''
+			},
+			accordion: {
+				// 鏄惁寮�鍚墜椋庣惔鏁堟灉
+				type: [Boolean, String],
+				default: false
+			},
+		},
+		data() {
+			return {}
+		},
+		computed: {
+			// TODO 鍏煎 vue2 鍜� vue3
+			dataValue() {
+				let value = (typeof this.value === 'string' && this.value === '') ||
+					(Array.isArray(this.value) && this.value.length === 0)
+				let modelValue = (typeof this.modelValue === 'string' && this.modelValue === '') ||
+					(Array.isArray(this.modelValue) && this.modelValue.length === 0)
+				if (value) {
+					return this.modelValue
+				}
+				if (modelValue) {
+					return this.value
+				}
+
+				return this.value
+			}
+		},
+		watch: {
+			dataValue(val) {
+				this.setOpen(val)
+			}
+		},
+		created() {
+			this.childrens = []
+			this.names = []
+		},
+		mounted() {
+			this.$nextTick(()=>{
+				this.setOpen(this.dataValue)
+			})
+		},
+		methods: {
+			setOpen(val) {
+				let str = typeof val === 'string'
+				let arr = Array.isArray(val)
+				this.childrens.forEach((vm, index) => {
+					if (str) {
+						if (val === vm.nameSync) {
+							if (!this.accordion) {
+								console.warn('accordion 灞炴�т负 false ,v-model 绫诲瀷搴旇涓� array')
+								return
+							}
+							vm.isOpen = true
+						}
+					}
+					if (arr) {
+						val.forEach(v => {
+							if (v === vm.nameSync) {
+								if (this.accordion) {
+									console.warn('accordion 灞炴�т负 true ,v-model 绫诲瀷搴旇涓� string')
+									return
+								}
+								vm.isOpen = true
+							}
+						})
+					}
+				})
+				this.emit(val)
+			},
+			setAccordion(self) {
+				if (!this.accordion) return
+				this.childrens.forEach((vm, index) => {
+					if (self !== vm) {
+						vm.isOpen = false
+					}
+				})
+			},
+			resize() {
+				this.childrens.forEach((vm, index) => {
+					// #ifndef APP-NVUE
+					vm.getCollapseHeight()
+					// #endif
+					// #ifdef APP-NVUE
+					vm.getNvueHwight()
+					// #endif
+				})
+			},
+			onChange(isOpen, self) {
+				let activeItem = []
+
+				if (this.accordion) {
+					activeItem = isOpen ? self.nameSync : ''
+				} else {
+					this.childrens.forEach((vm, index) => {
+						if (vm.isOpen) {
+							activeItem.push(vm.nameSync)
+						}
+					})
+				}
+				this.$emit('change', activeItem)
+				this.emit(activeItem)
+			},
+			emit(val){
+				this.$emit('input', val)
+				this.$emit('update:modelValue', val)
+			}
+		}
+	}
+</script>
+<style lang="scss" >
+	.uni-collapse {
+		/* #ifndef APP-NVUE */
+		width: 100%;
+		display: flex;
+		/* #endif */
+		/* #ifdef APP-NVUE */
+		flex: 1;
+		/* #endif */
+		flex-direction: column;
+		background-color: #fff;
+	}
+</style>
diff --git a/minipro_standard/uni_modules/uni-collapse/package.json b/minipro_standard/uni_modules/uni-collapse/package.json
new file mode 100644
index 0000000..65349cf
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-collapse/package.json
@@ -0,0 +1,89 @@
+{
+  "id": "uni-collapse",
+  "displayName": "uni-collapse 鎶樺彔闈㈡澘",
+  "version": "1.4.3",
+  "description": "Collapse 缁勪欢锛屽彲浠ユ姌鍙� / 灞曞紑鐨勫唴瀹瑰尯鍩熴��",
+  "keywords": [
+    "uni-ui",
+    "鎶樺彔",
+    "鎶樺彔闈㈡澘",
+    "鎵嬮鐞�"
+],
+  "repository": "https://github.com/dcloudio/uni-ui",
+  "engines": {
+    "HBuilderX": ""
+  },
+  "directories": {
+    "example": "../../temps/example_temps"
+  },
+  "dcloudext": {
+    "category": [
+      "鍓嶇缁勪欢",
+      "閫氱敤缁勪欢"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "鏃�",
+      "data": "鏃�",
+      "permissions": "鏃�"
+    },
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+  },
+  "uni_modules": {
+    "dependencies": [
+			"uni-scss",
+      "uni-icons"
+    ],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "y"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "寰俊娴忚鍣�(Android)": "y",
+          "QQ娴忚鍣�(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "灏忕▼搴�": {
+          "寰俊": "y",
+          "闃块噷": "y",
+          "鐧惧害": "y",
+          "瀛楄妭璺冲姩": "y",
+          "QQ": "y"
+        },
+        "蹇簲鐢�": {
+          "鍗庝负": "u",
+          "鑱旂洘": "u"
+        },
+        "Vue": {
+            "vue2": "y",
+            "vue3": "y"
+        }
+      }
+    }
+  }
+}
diff --git a/minipro_standard/uni_modules/uni-collapse/readme.md b/minipro_standard/uni_modules/uni-collapse/readme.md
new file mode 100644
index 0000000..bc758eb
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-collapse/readme.md
@@ -0,0 +1,12 @@
+
+
+## Collapse 鎶樺彔闈㈡澘
+> **缁勪欢鍚嶏細uni-collapse**
+> 浠g爜鍧楋細 `uCollapse`
+> 鍏宠仈缁勪欢锛歚uni-collapse-item`銆乣uni-icons`銆�
+
+
+鎶樺彔闈㈡澘鐢ㄦ潵鎶樺彔/鏄剧ず杩囬暱鐨勫唴瀹规垨鑰呮槸鍒楄〃銆傞�氬父鏄湪澶氬唴瀹瑰垎绫婚」浣跨敤锛屾姌鍙犱笉閲嶈鐨勫唴瀹癸紝鏄剧ず閲嶈鍐呭銆傜偣鍑诲彲浠ュ睍寮�鎶樺彔閮ㄥ垎銆�
+
+### [鏌ョ湅鏂囨。](https://uniapp.dcloud.io/component/uniui/uni-collapse)
+#### 濡備娇鐢ㄨ繃绋嬩腑鏈変换浣曢棶棰橈紝鎴栬�呮偍瀵箄ni-ui鏈変竴浜涘ソ鐨勫缓璁紝娆㈣繋鍔犲叆 uni-ui 浜ゆ祦缇わ細871950839 
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-icons/changelog.md b/minipro_standard/uni_modules/uni-icons/changelog.md
new file mode 100644
index 0000000..6449885
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/changelog.md
@@ -0,0 +1,22 @@
+## 1.3.5锛�2022-01-24锛�
+- 浼樺寲 size 灞炴�у彲浠ヤ紶鍏ヤ笉甯﹀崟浣嶇殑瀛楃涓叉暟鍊�
+## 1.3.4锛�2022-01-24锛�
+- 浼樺寲 size 鏀寔鍏朵粬鍗曚綅
+## 1.3.3锛�2022-01-17锛�
+- 淇 nvue 鏈変簺鍥炬爣涓嶆樉绀虹殑bug锛屽吋瀹硅�佺増鏈浘鏍�
+## 1.3.2锛�2021-12-01锛�
+- 浼樺寲 绀轰緥鍙鍒跺浘鏍囧悕绉�
+## 1.3.1锛�2021-11-23锛�
+- 浼樺寲 鍏煎鏃х粍浠� type 鍊�
+## 1.3.0锛�2021-11-19锛�
+- 鏂板 鏇村鍥炬爣
+- 浼樺寲 鑷畾涔夊浘鏍囦娇鐢ㄦ柟寮�
+- 浼樺寲 缁勪欢UI锛屽苟鎻愪緵璁捐璧勬簮锛岃瑙�:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 鏂囨。杩佺Щ锛岃瑙�:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons)
+## 1.1.7锛�2021-11-08锛�
+## 1.2.0锛�2021-07-30锛�
+- 缁勪欢鍏煎 vue3锛屽浣曞垱寤簐ue3椤圭洰锛岃瑙� [uni-app 椤圭洰鏀寔 vue3 浠嬬粛](https://ask.dcloud.net.cn/article/37834)
+## 1.1.5锛�2021-05-12锛�
+- 鏂板 缁勪欢绀轰緥鍦板潃
+## 1.1.4锛�2021-02-05锛�
+- 璋冩暣涓簎ni_modules鐩綍瑙勮寖
diff --git a/minipro_standard/uni_modules/uni-icons/components/uni-icons/icons.js b/minipro_standard/uni_modules/uni-icons/components/uni-icons/icons.js
new file mode 100644
index 0000000..7889936
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/components/uni-icons/icons.js
@@ -0,0 +1,1169 @@
+export default {
+  "id": "2852637",
+  "name": "uniui鍥炬爣搴�",
+  "font_family": "uniicons",
+  "css_prefix_text": "uniui-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "25027049",
+      "name": "yanse",
+      "font_class": "color",
+      "unicode": "e6cf",
+      "unicode_decimal": 59087
+    },
+    {
+      "icon_id": "25027048",
+      "name": "wallet",
+      "font_class": "wallet",
+      "unicode": "e6b1",
+      "unicode_decimal": 59057
+    },
+    {
+      "icon_id": "25015720",
+      "name": "settings-filled",
+      "font_class": "settings-filled",
+      "unicode": "e6ce",
+      "unicode_decimal": 59086
+    },
+    {
+      "icon_id": "25015434",
+      "name": "shimingrenzheng-filled",
+      "font_class": "auth-filled",
+      "unicode": "e6cc",
+      "unicode_decimal": 59084
+    },
+    {
+      "icon_id": "24934246",
+      "name": "shop-filled",
+      "font_class": "shop-filled",
+      "unicode": "e6cd",
+      "unicode_decimal": 59085
+    },
+    {
+      "icon_id": "24934159",
+      "name": "staff-filled-01",
+      "font_class": "staff-filled",
+      "unicode": "e6cb",
+      "unicode_decimal": 59083
+    },
+    {
+      "icon_id": "24932461",
+      "name": "VIP-filled",
+      "font_class": "vip-filled",
+      "unicode": "e6c6",
+      "unicode_decimal": 59078
+    },
+    {
+      "icon_id": "24932462",
+      "name": "plus_circle_fill",
+      "font_class": "plus-filled",
+      "unicode": "e6c7",
+      "unicode_decimal": 59079
+    },
+    {
+      "icon_id": "24932463",
+      "name": "folder_add-filled",
+      "font_class": "folder-add-filled",
+      "unicode": "e6c8",
+      "unicode_decimal": 59080
+    },
+    {
+      "icon_id": "24932464",
+      "name": "yanse-filled",
+      "font_class": "color-filled",
+      "unicode": "e6c9",
+      "unicode_decimal": 59081
+    },
+    {
+      "icon_id": "24932465",
+      "name": "tune-filled",
+      "font_class": "tune-filled",
+      "unicode": "e6ca",
+      "unicode_decimal": 59082
+    },
+    {
+      "icon_id": "24932455",
+      "name": "a-rilidaka-filled",
+      "font_class": "calendar-filled",
+      "unicode": "e6c0",
+      "unicode_decimal": 59072
+    },
+    {
+      "icon_id": "24932456",
+      "name": "notification-filled",
+      "font_class": "notification-filled",
+      "unicode": "e6c1",
+      "unicode_decimal": 59073
+    },
+    {
+      "icon_id": "24932457",
+      "name": "wallet-filled",
+      "font_class": "wallet-filled",
+      "unicode": "e6c2",
+      "unicode_decimal": 59074
+    },
+    {
+      "icon_id": "24932458",
+      "name": "paihangbang-filled",
+      "font_class": "medal-filled",
+      "unicode": "e6c3",
+      "unicode_decimal": 59075
+    },
+    {
+      "icon_id": "24932459",
+      "name": "gift-filled",
+      "font_class": "gift-filled",
+      "unicode": "e6c4",
+      "unicode_decimal": 59076
+    },
+    {
+      "icon_id": "24932460",
+      "name": "fire-filled",
+      "font_class": "fire-filled",
+      "unicode": "e6c5",
+      "unicode_decimal": 59077
+    },
+    {
+      "icon_id": "24928001",
+      "name": "refreshempty",
+      "font_class": "refreshempty",
+      "unicode": "e6bf",
+      "unicode_decimal": 59071
+    },
+    {
+      "icon_id": "24926853",
+      "name": "location-ellipse",
+      "font_class": "location-filled",
+      "unicode": "e6af",
+      "unicode_decimal": 59055
+    },
+    {
+      "icon_id": "24926735",
+      "name": "person-filled",
+      "font_class": "person-filled",
+      "unicode": "e69d",
+      "unicode_decimal": 59037
+    },
+    {
+      "icon_id": "24926703",
+      "name": "personadd-filled",
+      "font_class": "personadd-filled",
+      "unicode": "e698",
+      "unicode_decimal": 59032
+    },
+    {
+      "icon_id": "24923351",
+      "name": "back",
+      "font_class": "back",
+      "unicode": "e6b9",
+      "unicode_decimal": 59065
+    },
+    {
+      "icon_id": "24923352",
+      "name": "forward",
+      "font_class": "forward",
+      "unicode": "e6ba",
+      "unicode_decimal": 59066
+    },
+    {
+      "icon_id": "24923353",
+      "name": "arrowthinright",
+      "font_class": "arrow-right",
+      "unicode": "e6bb",
+      "unicode_decimal": 59067
+    },
+		{
+		  "icon_id": "24923353",
+		  "name": "arrowthinright",
+		  "font_class": "arrowthinright",
+		  "unicode": "e6bb",
+		  "unicode_decimal": 59067
+		},
+    {
+      "icon_id": "24923354",
+      "name": "arrowthinleft",
+      "font_class": "arrow-left",
+      "unicode": "e6bc",
+      "unicode_decimal": 59068
+    },
+		{
+		  "icon_id": "24923354",
+		  "name": "arrowthinleft",
+		  "font_class": "arrowthinleft",
+		  "unicode": "e6bc",
+		  "unicode_decimal": 59068
+		},
+    {
+      "icon_id": "24923355",
+      "name": "arrowthinup",
+      "font_class": "arrow-up",
+      "unicode": "e6bd",
+      "unicode_decimal": 59069
+    },
+		{
+		  "icon_id": "24923355",
+		  "name": "arrowthinup",
+		  "font_class": "arrowthinup",
+		  "unicode": "e6bd",
+		  "unicode_decimal": 59069
+		},
+    {
+      "icon_id": "24923356",
+      "name": "arrowthindown",
+      "font_class": "arrow-down",
+      "unicode": "e6be",
+      "unicode_decimal": 59070
+    },{
+      "icon_id": "24923356",
+      "name": "arrowthindown",
+      "font_class": "arrowthindown",
+      "unicode": "e6be",
+      "unicode_decimal": 59070
+    },
+    {
+      "icon_id": "24923349",
+      "name": "arrowdown",
+      "font_class": "bottom",
+      "unicode": "e6b8",
+      "unicode_decimal": 59064
+    },{
+      "icon_id": "24923349",
+      "name": "arrowdown",
+      "font_class": "arrowdown",
+      "unicode": "e6b8",
+      "unicode_decimal": 59064
+    },
+    {
+      "icon_id": "24923346",
+      "name": "arrowright",
+      "font_class": "right",
+      "unicode": "e6b5",
+      "unicode_decimal": 59061
+    },
+		{
+		  "icon_id": "24923346",
+		  "name": "arrowright",
+		  "font_class": "arrowright",
+		  "unicode": "e6b5",
+		  "unicode_decimal": 59061
+		},
+    {
+      "icon_id": "24923347",
+      "name": "arrowup",
+      "font_class": "top",
+      "unicode": "e6b6",
+      "unicode_decimal": 59062
+    },
+		{
+		  "icon_id": "24923347",
+		  "name": "arrowup",
+		  "font_class": "arrowup",
+		  "unicode": "e6b6",
+		  "unicode_decimal": 59062
+		},
+    {
+      "icon_id": "24923348",
+      "name": "arrowleft",
+      "font_class": "left",
+      "unicode": "e6b7",
+      "unicode_decimal": 59063
+    },
+		{
+		  "icon_id": "24923348",
+		  "name": "arrowleft",
+		  "font_class": "arrowleft",
+		  "unicode": "e6b7",
+		  "unicode_decimal": 59063
+		},
+    {
+      "icon_id": "24923334",
+      "name": "eye",
+      "font_class": "eye",
+      "unicode": "e651",
+      "unicode_decimal": 58961
+    },
+    {
+      "icon_id": "24923335",
+      "name": "eye-filled",
+      "font_class": "eye-filled",
+      "unicode": "e66a",
+      "unicode_decimal": 58986
+    },
+    {
+      "icon_id": "24923336",
+      "name": "eye-slash",
+      "font_class": "eye-slash",
+      "unicode": "e6b3",
+      "unicode_decimal": 59059
+    },
+    {
+      "icon_id": "24923337",
+      "name": "eye-slash-filled",
+      "font_class": "eye-slash-filled",
+      "unicode": "e6b4",
+      "unicode_decimal": 59060
+    },
+    {
+      "icon_id": "24923305",
+      "name": "info-filled",
+      "font_class": "info-filled",
+      "unicode": "e649",
+      "unicode_decimal": 58953
+    },
+    {
+      "icon_id": "24923299",
+      "name": "reload-01",
+      "font_class": "reload",
+      "unicode": "e6b2",
+      "unicode_decimal": 59058
+    },
+    {
+      "icon_id": "24923195",
+      "name": "mic_slash_fill",
+      "font_class": "micoff-filled",
+      "unicode": "e6b0",
+      "unicode_decimal": 59056
+    },
+    {
+      "icon_id": "24923165",
+      "name": "map-pin-ellipse",
+      "font_class": "map-pin-ellipse",
+      "unicode": "e6ac",
+      "unicode_decimal": 59052
+    },
+    {
+      "icon_id": "24923166",
+      "name": "map-pin",
+      "font_class": "map-pin",
+      "unicode": "e6ad",
+      "unicode_decimal": 59053
+    },
+    {
+      "icon_id": "24923167",
+      "name": "location",
+      "font_class": "location",
+      "unicode": "e6ae",
+      "unicode_decimal": 59054
+    },
+    {
+      "icon_id": "24923064",
+      "name": "starhalf",
+      "font_class": "starhalf",
+      "unicode": "e683",
+      "unicode_decimal": 59011
+    },
+    {
+      "icon_id": "24923065",
+      "name": "star",
+      "font_class": "star",
+      "unicode": "e688",
+      "unicode_decimal": 59016
+    },
+    {
+      "icon_id": "24923066",
+      "name": "star-filled",
+      "font_class": "star-filled",
+      "unicode": "e68f",
+      "unicode_decimal": 59023
+    },
+    {
+      "icon_id": "24899646",
+      "name": "a-rilidaka",
+      "font_class": "calendar",
+      "unicode": "e6a0",
+      "unicode_decimal": 59040
+    },
+    {
+      "icon_id": "24899647",
+      "name": "fire",
+      "font_class": "fire",
+      "unicode": "e6a1",
+      "unicode_decimal": 59041
+    },
+    {
+      "icon_id": "24899648",
+      "name": "paihangbang",
+      "font_class": "medal",
+      "unicode": "e6a2",
+      "unicode_decimal": 59042
+    },
+    {
+      "icon_id": "24899649",
+      "name": "font",
+      "font_class": "font",
+      "unicode": "e6a3",
+      "unicode_decimal": 59043
+    },
+    {
+      "icon_id": "24899650",
+      "name": "gift",
+      "font_class": "gift",
+      "unicode": "e6a4",
+      "unicode_decimal": 59044
+    },
+    {
+      "icon_id": "24899651",
+      "name": "link",
+      "font_class": "link",
+      "unicode": "e6a5",
+      "unicode_decimal": 59045
+    },
+    {
+      "icon_id": "24899652",
+      "name": "notification",
+      "font_class": "notification",
+      "unicode": "e6a6",
+      "unicode_decimal": 59046
+    },
+    {
+      "icon_id": "24899653",
+      "name": "staff",
+      "font_class": "staff",
+      "unicode": "e6a7",
+      "unicode_decimal": 59047
+    },
+    {
+      "icon_id": "24899654",
+      "name": "VIP",
+      "font_class": "vip",
+      "unicode": "e6a8",
+      "unicode_decimal": 59048
+    },
+    {
+      "icon_id": "24899655",
+      "name": "folder_add",
+      "font_class": "folder-add",
+      "unicode": "e6a9",
+      "unicode_decimal": 59049
+    },
+    {
+      "icon_id": "24899656",
+      "name": "tune",
+      "font_class": "tune",
+      "unicode": "e6aa",
+      "unicode_decimal": 59050
+    },
+    {
+      "icon_id": "24899657",
+      "name": "shimingrenzheng",
+      "font_class": "auth",
+      "unicode": "e6ab",
+      "unicode_decimal": 59051
+    },
+    {
+      "icon_id": "24899565",
+      "name": "person",
+      "font_class": "person",
+      "unicode": "e699",
+      "unicode_decimal": 59033
+    },
+    {
+      "icon_id": "24899566",
+      "name": "email-filled",
+      "font_class": "email-filled",
+      "unicode": "e69a",
+      "unicode_decimal": 59034
+    },
+    {
+      "icon_id": "24899567",
+      "name": "phone-filled",
+      "font_class": "phone-filled",
+      "unicode": "e69b",
+      "unicode_decimal": 59035
+    },
+    {
+      "icon_id": "24899568",
+      "name": "phone",
+      "font_class": "phone",
+      "unicode": "e69c",
+      "unicode_decimal": 59036
+    },
+    {
+      "icon_id": "24899570",
+      "name": "email",
+      "font_class": "email",
+      "unicode": "e69e",
+      "unicode_decimal": 59038
+    },
+    {
+      "icon_id": "24899571",
+      "name": "personadd",
+      "font_class": "personadd",
+      "unicode": "e69f",
+      "unicode_decimal": 59039
+    },
+    {
+      "icon_id": "24899558",
+      "name": "chatboxes-filled",
+      "font_class": "chatboxes-filled",
+      "unicode": "e692",
+      "unicode_decimal": 59026
+    },
+    {
+      "icon_id": "24899559",
+      "name": "contact",
+      "font_class": "contact",
+      "unicode": "e693",
+      "unicode_decimal": 59027
+    },
+    {
+      "icon_id": "24899560",
+      "name": "chatbubble-filled",
+      "font_class": "chatbubble-filled",
+      "unicode": "e694",
+      "unicode_decimal": 59028
+    },
+    {
+      "icon_id": "24899561",
+      "name": "contact-filled",
+      "font_class": "contact-filled",
+      "unicode": "e695",
+      "unicode_decimal": 59029
+    },
+    {
+      "icon_id": "24899562",
+      "name": "chatboxes",
+      "font_class": "chatboxes",
+      "unicode": "e696",
+      "unicode_decimal": 59030
+    },
+    {
+      "icon_id": "24899563",
+      "name": "chatbubble",
+      "font_class": "chatbubble",
+      "unicode": "e697",
+      "unicode_decimal": 59031
+    },
+    {
+      "icon_id": "24881290",
+      "name": "upload-filled",
+      "font_class": "upload-filled",
+      "unicode": "e68e",
+      "unicode_decimal": 59022
+    },
+    {
+      "icon_id": "24881292",
+      "name": "upload",
+      "font_class": "upload",
+      "unicode": "e690",
+      "unicode_decimal": 59024
+    },
+    {
+      "icon_id": "24881293",
+      "name": "weixin",
+      "font_class": "weixin",
+      "unicode": "e691",
+      "unicode_decimal": 59025
+    },
+    {
+      "icon_id": "24881274",
+      "name": "compose",
+      "font_class": "compose",
+      "unicode": "e67f",
+      "unicode_decimal": 59007
+    },
+    {
+      "icon_id": "24881275",
+      "name": "qq",
+      "font_class": "qq",
+      "unicode": "e680",
+      "unicode_decimal": 59008
+    },
+    {
+      "icon_id": "24881276",
+      "name": "download-filled",
+      "font_class": "download-filled",
+      "unicode": "e681",
+      "unicode_decimal": 59009
+    },
+    {
+      "icon_id": "24881277",
+      "name": "pengyouquan",
+      "font_class": "pyq",
+      "unicode": "e682",
+      "unicode_decimal": 59010
+    },
+    {
+      "icon_id": "24881279",
+      "name": "sound",
+      "font_class": "sound",
+      "unicode": "e684",
+      "unicode_decimal": 59012
+    },
+    {
+      "icon_id": "24881280",
+      "name": "trash-filled",
+      "font_class": "trash-filled",
+      "unicode": "e685",
+      "unicode_decimal": 59013
+    },
+    {
+      "icon_id": "24881281",
+      "name": "sound-filled",
+      "font_class": "sound-filled",
+      "unicode": "e686",
+      "unicode_decimal": 59014
+    },
+    {
+      "icon_id": "24881282",
+      "name": "trash",
+      "font_class": "trash",
+      "unicode": "e687",
+      "unicode_decimal": 59015
+    },
+    {
+      "icon_id": "24881284",
+      "name": "videocam-filled",
+      "font_class": "videocam-filled",
+      "unicode": "e689",
+      "unicode_decimal": 59017
+    },
+    {
+      "icon_id": "24881285",
+      "name": "spinner-cycle",
+      "font_class": "spinner-cycle",
+      "unicode": "e68a",
+      "unicode_decimal": 59018
+    },
+    {
+      "icon_id": "24881286",
+      "name": "weibo",
+      "font_class": "weibo",
+      "unicode": "e68b",
+      "unicode_decimal": 59019
+    },
+    {
+      "icon_id": "24881288",
+      "name": "videocam",
+      "font_class": "videocam",
+      "unicode": "e68c",
+      "unicode_decimal": 59020
+    },
+    {
+      "icon_id": "24881289",
+      "name": "download",
+      "font_class": "download",
+      "unicode": "e68d",
+      "unicode_decimal": 59021
+    },
+    {
+      "icon_id": "24879601",
+      "name": "help",
+      "font_class": "help",
+      "unicode": "e679",
+      "unicode_decimal": 59001
+    },
+    {
+      "icon_id": "24879602",
+      "name": "navigate-filled",
+      "font_class": "navigate-filled",
+      "unicode": "e67a",
+      "unicode_decimal": 59002
+    },
+    {
+      "icon_id": "24879603",
+      "name": "plusempty",
+      "font_class": "plusempty",
+      "unicode": "e67b",
+      "unicode_decimal": 59003
+    },
+    {
+      "icon_id": "24879604",
+      "name": "smallcircle",
+      "font_class": "smallcircle",
+      "unicode": "e67c",
+      "unicode_decimal": 59004
+    },
+    {
+      "icon_id": "24879605",
+      "name": "minus-filled",
+      "font_class": "minus-filled",
+      "unicode": "e67d",
+      "unicode_decimal": 59005
+    },
+    {
+      "icon_id": "24879606",
+      "name": "micoff",
+      "font_class": "micoff",
+      "unicode": "e67e",
+      "unicode_decimal": 59006
+    },
+    {
+      "icon_id": "24879588",
+      "name": "closeempty",
+      "font_class": "closeempty",
+      "unicode": "e66c",
+      "unicode_decimal": 58988
+    },
+    {
+      "icon_id": "24879589",
+      "name": "clear",
+      "font_class": "clear",
+      "unicode": "e66d",
+      "unicode_decimal": 58989
+    },
+    {
+      "icon_id": "24879590",
+      "name": "navigate",
+      "font_class": "navigate",
+      "unicode": "e66e",
+      "unicode_decimal": 58990
+    },
+    {
+      "icon_id": "24879591",
+      "name": "minus",
+      "font_class": "minus",
+      "unicode": "e66f",
+      "unicode_decimal": 58991
+    },
+    {
+      "icon_id": "24879592",
+      "name": "image",
+      "font_class": "image",
+      "unicode": "e670",
+      "unicode_decimal": 58992
+    },
+    {
+      "icon_id": "24879593",
+      "name": "mic",
+      "font_class": "mic",
+      "unicode": "e671",
+      "unicode_decimal": 58993
+    },
+    {
+      "icon_id": "24879594",
+      "name": "paperplane",
+      "font_class": "paperplane",
+      "unicode": "e672",
+      "unicode_decimal": 58994
+    },
+    {
+      "icon_id": "24879595",
+      "name": "close",
+      "font_class": "close",
+      "unicode": "e673",
+      "unicode_decimal": 58995
+    },
+    {
+      "icon_id": "24879596",
+      "name": "help-filled",
+      "font_class": "help-filled",
+      "unicode": "e674",
+      "unicode_decimal": 58996
+    },
+    {
+      "icon_id": "24879597",
+      "name": "plus-filled",
+      "font_class": "paperplane-filled",
+      "unicode": "e675",
+      "unicode_decimal": 58997
+    },
+    {
+      "icon_id": "24879598",
+      "name": "plus",
+      "font_class": "plus",
+      "unicode": "e676",
+      "unicode_decimal": 58998
+    },
+    {
+      "icon_id": "24879599",
+      "name": "mic-filled",
+      "font_class": "mic-filled",
+      "unicode": "e677",
+      "unicode_decimal": 58999
+    },
+    {
+      "icon_id": "24879600",
+      "name": "image-filled",
+      "font_class": "image-filled",
+      "unicode": "e678",
+      "unicode_decimal": 59000
+    },
+    {
+      "icon_id": "24855900",
+      "name": "locked-filled",
+      "font_class": "locked-filled",
+      "unicode": "e668",
+      "unicode_decimal": 58984
+    },
+    {
+      "icon_id": "24855901",
+      "name": "info",
+      "font_class": "info",
+      "unicode": "e669",
+      "unicode_decimal": 58985
+    },
+    {
+      "icon_id": "24855903",
+      "name": "locked",
+      "font_class": "locked",
+      "unicode": "e66b",
+      "unicode_decimal": 58987
+    },
+    {
+      "icon_id": "24855884",
+      "name": "camera-filled",
+      "font_class": "camera-filled",
+      "unicode": "e658",
+      "unicode_decimal": 58968
+    },
+    {
+      "icon_id": "24855885",
+      "name": "chat-filled",
+      "font_class": "chat-filled",
+      "unicode": "e659",
+      "unicode_decimal": 58969
+    },
+    {
+      "icon_id": "24855886",
+      "name": "camera",
+      "font_class": "camera",
+      "unicode": "e65a",
+      "unicode_decimal": 58970
+    },
+    {
+      "icon_id": "24855887",
+      "name": "circle",
+      "font_class": "circle",
+      "unicode": "e65b",
+      "unicode_decimal": 58971
+    },
+    {
+      "icon_id": "24855888",
+      "name": "checkmarkempty",
+      "font_class": "checkmarkempty",
+      "unicode": "e65c",
+      "unicode_decimal": 58972
+    },
+    {
+      "icon_id": "24855889",
+      "name": "chat",
+      "font_class": "chat",
+      "unicode": "e65d",
+      "unicode_decimal": 58973
+    },
+    {
+      "icon_id": "24855890",
+      "name": "circle-filled",
+      "font_class": "circle-filled",
+      "unicode": "e65e",
+      "unicode_decimal": 58974
+    },
+    {
+      "icon_id": "24855891",
+      "name": "flag",
+      "font_class": "flag",
+      "unicode": "e65f",
+      "unicode_decimal": 58975
+    },
+    {
+      "icon_id": "24855892",
+      "name": "flag-filled",
+      "font_class": "flag-filled",
+      "unicode": "e660",
+      "unicode_decimal": 58976
+    },
+    {
+      "icon_id": "24855893",
+      "name": "gear-filled",
+      "font_class": "gear-filled",
+      "unicode": "e661",
+      "unicode_decimal": 58977
+    },
+    {
+      "icon_id": "24855894",
+      "name": "home",
+      "font_class": "home",
+      "unicode": "e662",
+      "unicode_decimal": 58978
+    },
+    {
+      "icon_id": "24855895",
+      "name": "home-filled",
+      "font_class": "home-filled",
+      "unicode": "e663",
+      "unicode_decimal": 58979
+    },
+    {
+      "icon_id": "24855896",
+      "name": "gear",
+      "font_class": "gear",
+      "unicode": "e664",
+      "unicode_decimal": 58980
+    },
+    {
+      "icon_id": "24855897",
+      "name": "smallcircle-filled",
+      "font_class": "smallcircle-filled",
+      "unicode": "e665",
+      "unicode_decimal": 58981
+    },
+    {
+      "icon_id": "24855898",
+      "name": "map-filled",
+      "font_class": "map-filled",
+      "unicode": "e666",
+      "unicode_decimal": 58982
+    },
+    {
+      "icon_id": "24855899",
+      "name": "map",
+      "font_class": "map",
+      "unicode": "e667",
+      "unicode_decimal": 58983
+    },
+    {
+      "icon_id": "24855825",
+      "name": "refresh-filled",
+      "font_class": "refresh-filled",
+      "unicode": "e656",
+      "unicode_decimal": 58966
+    },
+    {
+      "icon_id": "24855826",
+      "name": "refresh",
+      "font_class": "refresh",
+      "unicode": "e657",
+      "unicode_decimal": 58967
+    },
+    {
+      "icon_id": "24855808",
+      "name": "cloud-upload",
+      "font_class": "cloud-upload",
+      "unicode": "e645",
+      "unicode_decimal": 58949
+    },
+    {
+      "icon_id": "24855809",
+      "name": "cloud-download-filled",
+      "font_class": "cloud-download-filled",
+      "unicode": "e646",
+      "unicode_decimal": 58950
+    },
+    {
+      "icon_id": "24855810",
+      "name": "cloud-download",
+      "font_class": "cloud-download",
+      "unicode": "e647",
+      "unicode_decimal": 58951
+    },
+    {
+      "icon_id": "24855811",
+      "name": "cloud-upload-filled",
+      "font_class": "cloud-upload-filled",
+      "unicode": "e648",
+      "unicode_decimal": 58952
+    },
+    {
+      "icon_id": "24855813",
+      "name": "redo",
+      "font_class": "redo",
+      "unicode": "e64a",
+      "unicode_decimal": 58954
+    },
+    {
+      "icon_id": "24855814",
+      "name": "images-filled",
+      "font_class": "images-filled",
+      "unicode": "e64b",
+      "unicode_decimal": 58955
+    },
+    {
+      "icon_id": "24855815",
+      "name": "undo-filled",
+      "font_class": "undo-filled",
+      "unicode": "e64c",
+      "unicode_decimal": 58956
+    },
+    {
+      "icon_id": "24855816",
+      "name": "more",
+      "font_class": "more",
+      "unicode": "e64d",
+      "unicode_decimal": 58957
+    },
+    {
+      "icon_id": "24855817",
+      "name": "more-filled",
+      "font_class": "more-filled",
+      "unicode": "e64e",
+      "unicode_decimal": 58958
+    },
+    {
+      "icon_id": "24855818",
+      "name": "undo",
+      "font_class": "undo",
+      "unicode": "e64f",
+      "unicode_decimal": 58959
+    },
+    {
+      "icon_id": "24855819",
+      "name": "images",
+      "font_class": "images",
+      "unicode": "e650",
+      "unicode_decimal": 58960
+    },
+    {
+      "icon_id": "24855821",
+      "name": "paperclip",
+      "font_class": "paperclip",
+      "unicode": "e652",
+      "unicode_decimal": 58962
+    },
+    {
+      "icon_id": "24855822",
+      "name": "settings",
+      "font_class": "settings",
+      "unicode": "e653",
+      "unicode_decimal": 58963
+    },
+    {
+      "icon_id": "24855823",
+      "name": "search",
+      "font_class": "search",
+      "unicode": "e654",
+      "unicode_decimal": 58964
+    },
+    {
+      "icon_id": "24855824",
+      "name": "redo-filled",
+      "font_class": "redo-filled",
+      "unicode": "e655",
+      "unicode_decimal": 58965
+    },
+    {
+      "icon_id": "24841702",
+      "name": "list",
+      "font_class": "list",
+      "unicode": "e644",
+      "unicode_decimal": 58948
+    },
+    {
+      "icon_id": "24841489",
+      "name": "mail-open-filled",
+      "font_class": "mail-open-filled",
+      "unicode": "e63a",
+      "unicode_decimal": 58938
+    },
+    {
+      "icon_id": "24841491",
+      "name": "hand-thumbsdown-filled",
+      "font_class": "hand-down-filled",
+      "unicode": "e63c",
+      "unicode_decimal": 58940
+    },
+    {
+      "icon_id": "24841492",
+      "name": "hand-thumbsdown",
+      "font_class": "hand-down",
+      "unicode": "e63d",
+      "unicode_decimal": 58941
+    },
+    {
+      "icon_id": "24841493",
+      "name": "hand-thumbsup-filled",
+      "font_class": "hand-up-filled",
+      "unicode": "e63e",
+      "unicode_decimal": 58942
+    },
+    {
+      "icon_id": "24841494",
+      "name": "hand-thumbsup",
+      "font_class": "hand-up",
+      "unicode": "e63f",
+      "unicode_decimal": 58943
+    },
+    {
+      "icon_id": "24841496",
+      "name": "heart-filled",
+      "font_class": "heart-filled",
+      "unicode": "e641",
+      "unicode_decimal": 58945
+    },
+    {
+      "icon_id": "24841498",
+      "name": "mail-open",
+      "font_class": "mail-open",
+      "unicode": "e643",
+      "unicode_decimal": 58947
+    },
+    {
+      "icon_id": "24841488",
+      "name": "heart",
+      "font_class": "heart",
+      "unicode": "e639",
+      "unicode_decimal": 58937
+    },
+    {
+      "icon_id": "24839963",
+      "name": "loop",
+      "font_class": "loop",
+      "unicode": "e633",
+      "unicode_decimal": 58931
+    },
+    {
+      "icon_id": "24839866",
+      "name": "pulldown",
+      "font_class": "pulldown",
+      "unicode": "e632",
+      "unicode_decimal": 58930
+    },
+    {
+      "icon_id": "24813798",
+      "name": "scan",
+      "font_class": "scan",
+      "unicode": "e62a",
+      "unicode_decimal": 58922
+    },
+    {
+      "icon_id": "24813786",
+      "name": "bars",
+      "font_class": "bars",
+      "unicode": "e627",
+      "unicode_decimal": 58919
+    },
+    {
+      "icon_id": "24813788",
+      "name": "cart-filled",
+      "font_class": "cart-filled",
+      "unicode": "e629",
+      "unicode_decimal": 58921
+    },
+    {
+      "icon_id": "24813790",
+      "name": "checkbox",
+      "font_class": "checkbox",
+      "unicode": "e62b",
+      "unicode_decimal": 58923
+    },
+    {
+      "icon_id": "24813791",
+      "name": "checkbox-filled",
+      "font_class": "checkbox-filled",
+      "unicode": "e62c",
+      "unicode_decimal": 58924
+    },
+    {
+      "icon_id": "24813794",
+      "name": "shop",
+      "font_class": "shop",
+      "unicode": "e62f",
+      "unicode_decimal": 58927
+    },
+    {
+      "icon_id": "24813795",
+      "name": "headphones",
+      "font_class": "headphones",
+      "unicode": "e630",
+      "unicode_decimal": 58928
+    },
+    {
+      "icon_id": "24813796",
+      "name": "cart",
+      "font_class": "cart",
+      "unicode": "e631",
+      "unicode_decimal": 58929
+    }
+  ]
+}
diff --git a/minipro_standard/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uni-icons.vue
new file mode 100644
index 0000000..a87f68e
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uni-icons.vue
@@ -0,0 +1,96 @@
+<template>
+	<!-- #ifdef APP-NVUE -->
+	<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{unicode}}</text>
+	<!-- #endif -->
+	<!-- #ifndef APP-NVUE -->
+	<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text>
+	<!-- #endif -->
+</template>
+
+<script>
+	import icons from './icons.js';
+	const getVal = (val) => {
+		const reg = /^[0-9]*$/g
+		return (typeof val === 'number' ||銆�reg.test(val) )? val + 'px' : val;
+	} 
+	// #ifdef APP-NVUE
+	var domModule = weex.requireModule('dom');
+	import iconUrl from './uniicons.ttf'
+	domModule.addRule('fontFace', {
+		'fontFamily': "uniicons",
+		'src': "url('"+iconUrl+"')"
+	});
+	// #endif
+
+	/**
+	 * Icons 鍥炬爣
+	 * @description 鐢ㄤ簬灞曠ず icons 鍥炬爣
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=28
+	 * @property {Number} size 鍥炬爣澶у皬
+	 * @property {String} type 鍥炬爣鍥炬锛屽弬鑰冪ず渚�
+	 * @property {String} color 鍥炬爣棰滆壊
+	 * @property {String} customPrefix 鑷畾涔夊浘鏍�
+	 * @event {Function} click 鐐瑰嚮 Icon 瑙﹀彂浜嬩欢
+	 */
+	export default {
+		name: 'UniIcons',
+		emits:['click'],
+		props: {
+			type: {
+				type: String,
+				default: ''
+			},
+			color: {
+				type: String,
+				default: '#333333'
+			},
+			size: {
+				type: [Number, String],
+				default: 16
+			},
+			customPrefix:{
+				type: String,
+				default: ''
+			}
+		},
+		data() {
+			return {
+				icons: icons.glyphs
+			}
+		},
+		computed:{
+			unicode(){
+				let code = this.icons.find(v=>v.font_class === this.type)
+				if(code){
+					return unescape(`%u${code.unicode}`)
+				}
+				return ''
+			},
+			iconSize(){
+				return getVal(this.size)
+			}
+		},
+		methods: {
+			_onClick() {
+				this.$emit('click')
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	/* #ifndef APP-NVUE */
+	@import './uniicons.css';
+	@font-face {
+		font-family: uniicons;
+		src: url('./uniicons.ttf') format('truetype');
+	}
+
+	/* #endif */
+	.uni-icons {
+		font-family: uniicons;
+		text-decoration: none;
+		text-align: center;
+	}
+
+</style>
diff --git a/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.css b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.css
new file mode 100644
index 0000000..2f56eab
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.css
@@ -0,0 +1,663 @@
+.uniui-color:before {
+  content: "\e6cf";
+}
+
+.uniui-wallet:before {
+  content: "\e6b1";
+}
+
+.uniui-settings-filled:before {
+  content: "\e6ce";
+}
+
+.uniui-auth-filled:before {
+  content: "\e6cc";
+}
+
+.uniui-shop-filled:before {
+  content: "\e6cd";
+}
+
+.uniui-staff-filled:before {
+  content: "\e6cb";
+}
+
+.uniui-vip-filled:before {
+  content: "\e6c6";
+}
+
+.uniui-plus-filled:before {
+  content: "\e6c7";
+}
+
+.uniui-folder-add-filled:before {
+  content: "\e6c8";
+}
+
+.uniui-color-filled:before {
+  content: "\e6c9";
+}
+
+.uniui-tune-filled:before {
+  content: "\e6ca";
+}
+
+.uniui-calendar-filled:before {
+  content: "\e6c0";
+}
+
+.uniui-notification-filled:before {
+  content: "\e6c1";
+}
+
+.uniui-wallet-filled:before {
+  content: "\e6c2";
+}
+
+.uniui-medal-filled:before {
+  content: "\e6c3";
+}
+
+.uniui-gift-filled:before {
+  content: "\e6c4";
+}
+
+.uniui-fire-filled:before {
+  content: "\e6c5";
+}
+
+.uniui-refreshempty:before {
+  content: "\e6bf";
+}
+
+.uniui-location-filled:before {
+  content: "\e6af";
+}
+
+.uniui-person-filled:before {
+  content: "\e69d";
+}
+
+.uniui-personadd-filled:before {
+  content: "\e698";
+}
+
+.uniui-back:before {
+  content: "\e6b9";
+}
+
+.uniui-forward:before {
+  content: "\e6ba";
+}
+
+.uniui-arrow-right:before {
+  content: "\e6bb";
+}
+
+.uniui-arrowthinright:before {
+  content: "\e6bb";
+}
+
+.uniui-arrow-left:before {
+  content: "\e6bc";
+}
+
+.uniui-arrowthinleft:before {
+  content: "\e6bc";
+}
+
+.uniui-arrow-up:before {
+  content: "\e6bd";
+}
+
+.uniui-arrowthinup:before {
+  content: "\e6bd";
+}
+
+.uniui-arrow-down:before {
+  content: "\e6be";
+}
+
+.uniui-arrowthindown:before {
+  content: "\e6be";
+}
+
+.uniui-bottom:before {
+  content: "\e6b8";
+}
+
+.uniui-arrowdown:before {
+  content: "\e6b8";
+}
+
+.uniui-right:before {
+  content: "\e6b5";
+}
+
+.uniui-arrowright:before {
+  content: "\e6b5";
+}
+
+.uniui-top:before {
+  content: "\e6b6";
+}
+
+.uniui-arrowup:before {
+  content: "\e6b6";
+}
+
+.uniui-left:before {
+  content: "\e6b7";
+}
+
+.uniui-arrowleft:before {
+  content: "\e6b7";
+}
+
+.uniui-eye:before {
+  content: "\e651";
+}
+
+.uniui-eye-filled:before {
+  content: "\e66a";
+}
+
+.uniui-eye-slash:before {
+  content: "\e6b3";
+}
+
+.uniui-eye-slash-filled:before {
+  content: "\e6b4";
+}
+
+.uniui-info-filled:before {
+  content: "\e649";
+}
+
+.uniui-reload:before {
+  content: "\e6b2";
+}
+
+.uniui-micoff-filled:before {
+  content: "\e6b0";
+}
+
+.uniui-map-pin-ellipse:before {
+  content: "\e6ac";
+}
+
+.uniui-map-pin:before {
+  content: "\e6ad";
+}
+
+.uniui-location:before {
+  content: "\e6ae";
+}
+
+.uniui-starhalf:before {
+  content: "\e683";
+}
+
+.uniui-star:before {
+  content: "\e688";
+}
+
+.uniui-star-filled:before {
+  content: "\e68f";
+}
+
+.uniui-calendar:before {
+  content: "\e6a0";
+}
+
+.uniui-fire:before {
+  content: "\e6a1";
+}
+
+.uniui-medal:before {
+  content: "\e6a2";
+}
+
+.uniui-font:before {
+  content: "\e6a3";
+}
+
+.uniui-gift:before {
+  content: "\e6a4";
+}
+
+.uniui-link:before {
+  content: "\e6a5";
+}
+
+.uniui-notification:before {
+  content: "\e6a6";
+}
+
+.uniui-staff:before {
+  content: "\e6a7";
+}
+
+.uniui-vip:before {
+  content: "\e6a8";
+}
+
+.uniui-folder-add:before {
+  content: "\e6a9";
+}
+
+.uniui-tune:before {
+  content: "\e6aa";
+}
+
+.uniui-auth:before {
+  content: "\e6ab";
+}
+
+.uniui-person:before {
+  content: "\e699";
+}
+
+.uniui-email-filled:before {
+  content: "\e69a";
+}
+
+.uniui-phone-filled:before {
+  content: "\e69b";
+}
+
+.uniui-phone:before {
+  content: "\e69c";
+}
+
+.uniui-email:before {
+  content: "\e69e";
+}
+
+.uniui-personadd:before {
+  content: "\e69f";
+}
+
+.uniui-chatboxes-filled:before {
+  content: "\e692";
+}
+
+.uniui-contact:before {
+  content: "\e693";
+}
+
+.uniui-chatbubble-filled:before {
+  content: "\e694";
+}
+
+.uniui-contact-filled:before {
+  content: "\e695";
+}
+
+.uniui-chatboxes:before {
+  content: "\e696";
+}
+
+.uniui-chatbubble:before {
+  content: "\e697";
+}
+
+.uniui-upload-filled:before {
+  content: "\e68e";
+}
+
+.uniui-upload:before {
+  content: "\e690";
+}
+
+.uniui-weixin:before {
+  content: "\e691";
+}
+
+.uniui-compose:before {
+  content: "\e67f";
+}
+
+.uniui-qq:before {
+  content: "\e680";
+}
+
+.uniui-download-filled:before {
+  content: "\e681";
+}
+
+.uniui-pyq:before {
+  content: "\e682";
+}
+
+.uniui-sound:before {
+  content: "\e684";
+}
+
+.uniui-trash-filled:before {
+  content: "\e685";
+}
+
+.uniui-sound-filled:before {
+  content: "\e686";
+}
+
+.uniui-trash:before {
+  content: "\e687";
+}
+
+.uniui-videocam-filled:before {
+  content: "\e689";
+}
+
+.uniui-spinner-cycle:before {
+  content: "\e68a";
+}
+
+.uniui-weibo:before {
+  content: "\e68b";
+}
+
+.uniui-videocam:before {
+  content: "\e68c";
+}
+
+.uniui-download:before {
+  content: "\e68d";
+}
+
+.uniui-help:before {
+  content: "\e679";
+}
+
+.uniui-navigate-filled:before {
+  content: "\e67a";
+}
+
+.uniui-plusempty:before {
+  content: "\e67b";
+}
+
+.uniui-smallcircle:before {
+  content: "\e67c";
+}
+
+.uniui-minus-filled:before {
+  content: "\e67d";
+}
+
+.uniui-micoff:before {
+  content: "\e67e";
+}
+
+.uniui-closeempty:before {
+  content: "\e66c";
+}
+
+.uniui-clear:before {
+  content: "\e66d";
+}
+
+.uniui-navigate:before {
+  content: "\e66e";
+}
+
+.uniui-minus:before {
+  content: "\e66f";
+}
+
+.uniui-image:before {
+  content: "\e670";
+}
+
+.uniui-mic:before {
+  content: "\e671";
+}
+
+.uniui-paperplane:before {
+  content: "\e672";
+}
+
+.uniui-close:before {
+  content: "\e673";
+}
+
+.uniui-help-filled:before {
+  content: "\e674";
+}
+
+.uniui-paperplane-filled:before {
+  content: "\e675";
+}
+
+.uniui-plus:before {
+  content: "\e676";
+}
+
+.uniui-mic-filled:before {
+  content: "\e677";
+}
+
+.uniui-image-filled:before {
+  content: "\e678";
+}
+
+.uniui-locked-filled:before {
+  content: "\e668";
+}
+
+.uniui-info:before {
+  content: "\e669";
+}
+
+.uniui-locked:before {
+  content: "\e66b";
+}
+
+.uniui-camera-filled:before {
+  content: "\e658";
+}
+
+.uniui-chat-filled:before {
+  content: "\e659";
+}
+
+.uniui-camera:before {
+  content: "\e65a";
+}
+
+.uniui-circle:before {
+  content: "\e65b";
+}
+
+.uniui-checkmarkempty:before {
+  content: "\e65c";
+}
+
+.uniui-chat:before {
+  content: "\e65d";
+}
+
+.uniui-circle-filled:before {
+  content: "\e65e";
+}
+
+.uniui-flag:before {
+  content: "\e65f";
+}
+
+.uniui-flag-filled:before {
+  content: "\e660";
+}
+
+.uniui-gear-filled:before {
+  content: "\e661";
+}
+
+.uniui-home:before {
+  content: "\e662";
+}
+
+.uniui-home-filled:before {
+  content: "\e663";
+}
+
+.uniui-gear:before {
+  content: "\e664";
+}
+
+.uniui-smallcircle-filled:before {
+  content: "\e665";
+}
+
+.uniui-map-filled:before {
+  content: "\e666";
+}
+
+.uniui-map:before {
+  content: "\e667";
+}
+
+.uniui-refresh-filled:before {
+  content: "\e656";
+}
+
+.uniui-refresh:before {
+  content: "\e657";
+}
+
+.uniui-cloud-upload:before {
+  content: "\e645";
+}
+
+.uniui-cloud-download-filled:before {
+  content: "\e646";
+}
+
+.uniui-cloud-download:before {
+  content: "\e647";
+}
+
+.uniui-cloud-upload-filled:before {
+  content: "\e648";
+}
+
+.uniui-redo:before {
+  content: "\e64a";
+}
+
+.uniui-images-filled:before {
+  content: "\e64b";
+}
+
+.uniui-undo-filled:before {
+  content: "\e64c";
+}
+
+.uniui-more:before {
+  content: "\e64d";
+}
+
+.uniui-more-filled:before {
+  content: "\e64e";
+}
+
+.uniui-undo:before {
+  content: "\e64f";
+}
+
+.uniui-images:before {
+  content: "\e650";
+}
+
+.uniui-paperclip:before {
+  content: "\e652";
+}
+
+.uniui-settings:before {
+  content: "\e653";
+}
+
+.uniui-search:before {
+  content: "\e654";
+}
+
+.uniui-redo-filled:before {
+  content: "\e655";
+}
+
+.uniui-list:before {
+  content: "\e644";
+}
+
+.uniui-mail-open-filled:before {
+  content: "\e63a";
+}
+
+.uniui-hand-down-filled:before {
+  content: "\e63c";
+}
+
+.uniui-hand-down:before {
+  content: "\e63d";
+}
+
+.uniui-hand-up-filled:before {
+  content: "\e63e";
+}
+
+.uniui-hand-up:before {
+  content: "\e63f";
+}
+
+.uniui-heart-filled:before {
+  content: "\e641";
+}
+
+.uniui-mail-open:before {
+  content: "\e643";
+}
+
+.uniui-heart:before {
+  content: "\e639";
+}
+
+.uniui-loop:before {
+  content: "\e633";
+}
+
+.uniui-pulldown:before {
+  content: "\e632";
+}
+
+.uniui-scan:before {
+  content: "\e62a";
+}
+
+.uniui-bars:before {
+  content: "\e627";
+}
+
+.uniui-cart-filled:before {
+  content: "\e629";
+}
+
+.uniui-checkbox:before {
+  content: "\e62b";
+}
+
+.uniui-checkbox-filled:before {
+  content: "\e62c";
+}
+
+.uniui-shop:before {
+  content: "\e62f";
+}
+
+.uniui-headphones:before {
+  content: "\e630";
+}
+
+.uniui-cart:before {
+  content: "\e631";
+}
diff --git a/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
new file mode 100644
index 0000000..835f33b
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
Binary files differ
diff --git a/minipro_standard/uni_modules/uni-icons/package.json b/minipro_standard/uni_modules/uni-icons/package.json
new file mode 100644
index 0000000..d1c4e77
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/package.json
@@ -0,0 +1,86 @@
+{
+  "id": "uni-icons",
+  "displayName": "uni-icons 鍥炬爣",
+  "version": "1.3.5",
+  "description": "鍥炬爣缁勪欢锛岀敤浜庡睍绀虹Щ鍔ㄧ甯歌鐨勫浘鏍囷紝鍙嚜瀹氫箟棰滆壊銆佸ぇ灏忋��",
+  "keywords": [
+    "uni-ui",
+    "uniui",
+    "icon",
+    "鍥炬爣"
+],
+  "repository": "https://github.com/dcloudio/uni-ui",
+  "engines": {
+    "HBuilderX": "^3.2.14"
+  },
+  "directories": {
+    "example": "../../temps/example_temps"
+  },
+  "dcloudext": {
+    "category": [
+      "鍓嶇缁勪欢",
+      "閫氱敤缁勪欢"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "鏃�",
+      "data": "鏃�",
+      "permissions": "鏃�"
+    },
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+  },
+  "uni_modules": {
+    "dependencies": ["uni-scss"],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "y"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "寰俊娴忚鍣�(Android)": "y",
+          "QQ娴忚鍣�(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "灏忕▼搴�": {
+          "寰俊": "y",
+          "闃块噷": "y",
+          "鐧惧害": "y",
+          "瀛楄妭璺冲姩": "y",
+          "QQ": "y"
+        },
+        "蹇簲鐢�": {
+          "鍗庝负": "u",
+          "鑱旂洘": "u"
+        },
+        "Vue": {
+            "vue2": "y",
+            "vue3": "y"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-icons/readme.md b/minipro_standard/uni_modules/uni-icons/readme.md
new file mode 100644
index 0000000..86234ba
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/readme.md
@@ -0,0 +1,8 @@
+## Icons 鍥炬爣
+> **缁勪欢鍚嶏細uni-icons**
+> 浠g爜鍧楋細 `uIcons`
+
+鐢ㄤ簬灞曠ず icons 鍥炬爣 銆�
+
+### [鏌ョ湅鏂囨。](https://uniapp.dcloud.io/component/uniui/uni-icons)
+#### 濡備娇鐢ㄨ繃绋嬩腑鏈変换浣曢棶棰橈紝鎴栬�呮偍瀵箄ni-ui鏈変竴浜涘ソ鐨勫缓璁紝娆㈣繋鍔犲叆 uni-ui 浜ゆ祦缇わ細871950839 
diff --git a/minipro_standard/uni_modules/uni-scss/changelog.md b/minipro_standard/uni_modules/uni-scss/changelog.md
new file mode 100644
index 0000000..b863bb0
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/changelog.md
@@ -0,0 +1,8 @@
+## 1.0.3锛�2022-01-21锛�
+- 浼樺寲 缁勪欢绀轰緥
+## 1.0.2锛�2021-11-22锛�
+- 淇 / 绗﹀彿鍦� vue 涓嶅悓鐗堟湰鍏煎闂寮曡捣鐨勬姤閿欓棶棰�
+## 1.0.1锛�2021-11-22锛�
+- 淇 vue3涓璼css璇硶鍏煎闂
+## 1.0.0锛�2021-11-18锛�
+- init
diff --git a/minipro_standard/uni_modules/uni-scss/index.scss b/minipro_standard/uni_modules/uni-scss/index.scss
new file mode 100644
index 0000000..1744a5f
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/index.scss
@@ -0,0 +1 @@
+@import './styles/index.scss';
diff --git a/minipro_standard/uni_modules/uni-scss/package.json b/minipro_standard/uni_modules/uni-scss/package.json
new file mode 100644
index 0000000..7cc0ccb
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/package.json
@@ -0,0 +1,82 @@
+{
+  "id": "uni-scss",
+  "displayName": "uni-scss 杈呭姪鏍峰紡",
+  "version": "1.0.3",
+  "description": "uni-sass鏄痷ni-ui鎻愪緵鐨勪竴濂楀叏灞�鏍峰紡 锛岄�氳繃涓�浜涚畝鍗曠殑绫诲悕鍜宻ass鍙橀噺锛屽疄鐜扮畝鍗曠殑椤甸潰甯冨眬鎿嶄綔锛屾瘮濡傞鑹层�佽竟璺濄�佸渾瑙掔瓑銆�",
+  "keywords": [
+    "uni-scss",
+    "uni-ui",
+    "杈呭姪鏍峰紡"
+],
+  "repository": "https://github.com/dcloudio/uni-ui",
+  "engines": {
+    "HBuilderX": "^3.1.0"
+  },
+  "dcloudext": {
+    "category": [
+        "JS SDK",
+        "閫氱敤 SDK"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "鏃�",
+      "data": "鏃�",
+      "permissions": "鏃�"
+    },
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+  },
+  "uni_modules": {
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "u"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "寰俊娴忚鍣�(Android)": "y",
+          "QQ娴忚鍣�(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "灏忕▼搴�": {
+          "寰俊": "y",
+          "闃块噷": "y",
+          "鐧惧害": "y",
+          "瀛楄妭璺冲姩": "y",
+          "QQ": "y"
+        },
+        "蹇簲鐢�": {
+          "鍗庝负": "n",
+          "鑱旂洘": "n"
+        },
+        "Vue": {
+            "vue2": "y",
+            "vue3": "y"
+        }
+      }
+    }
+  }
+}
diff --git a/minipro_standard/uni_modules/uni-scss/readme.md b/minipro_standard/uni_modules/uni-scss/readme.md
new file mode 100644
index 0000000..b7d1c25
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/readme.md
@@ -0,0 +1,4 @@
+`uni-sass` 鏄� `uni-ui`鎻愪緵鐨勪竴濂楀叏灞�鏍峰紡 锛岄�氳繃涓�浜涚畝鍗曠殑绫诲悕鍜宍sass`鍙橀噺锛屽疄鐜扮畝鍗曠殑椤甸潰甯冨眬鎿嶄綔锛屾瘮濡傞鑹层�佽竟璺濄�佸渾瑙掔瓑銆�
+
+### [鏌ョ湅鏂囨。](https://uniapp.dcloud.io/component/uniui/uni-sass)
+#### 濡備娇鐢ㄨ繃绋嬩腑鏈変换浣曢棶棰橈紝鎴栬�呮偍瀵箄ni-ui鏈変竴浜涘ソ鐨勫缓璁紝娆㈣繋鍔犲叆 uni-ui 浜ゆ祦缇わ細871950839 
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-scss/styles/index.scss b/minipro_standard/uni_modules/uni-scss/styles/index.scss
new file mode 100644
index 0000000..ffac4fe
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/index.scss
@@ -0,0 +1,7 @@
+@import './setting/_variables.scss';
+@import './setting/_border.scss';
+@import './setting/_color.scss';
+@import './setting/_space.scss';
+@import './setting/_radius.scss';
+@import './setting/_text.scss';
+@import './setting/_styles.scss';
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_border.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_border.scss
new file mode 100644
index 0000000..12a11c3
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_border.scss
@@ -0,0 +1,3 @@
+.uni-border {
+	border: 1px $uni-border-1 solid;
+}
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_color.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_color.scss
new file mode 100644
index 0000000..1ededd9
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_color.scss
@@ -0,0 +1,66 @@
+
+// TODO 鏆傛椂涓嶉渶瑕� class 锛岄渶瑕佺敤鎴蜂娇鐢ㄥ彉閲忓疄鐜� 锛屽鏋滀娇鐢ㄧ被鍚嶅叾瀹炲苟涓嶆帹鑽�
+// @mixin get-styles($k,$c) {
+// 	@if $k == size or $k == weight{
+// 		font-#{$k}:#{$c}
+// 	}@else{
+// 		#{$k}:#{$c}
+// 	}
+// }
+$uni-ui-color:(
+	// 涓昏壊
+	primary: $uni-primary,
+	primary-disable: $uni-primary-disable,
+	primary-light: $uni-primary-light,
+	// 杈呭姪鑹�
+	success: $uni-success,
+	success-disable: $uni-success-disable,
+	success-light: $uni-success-light,
+	warning: $uni-warning,
+	warning-disable: $uni-warning-disable,
+	warning-light: $uni-warning-light,
+	error: $uni-error,
+	error-disable: $uni-error-disable,
+	error-light: $uni-error-light,
+	info: $uni-info,
+	info-disable: $uni-info-disable,
+	info-light: $uni-info-light,
+	// 涓�ц壊
+	main-color: $uni-main-color,
+	base-color: $uni-base-color,
+	secondary-color: $uni-secondary-color,
+	extra-color: $uni-extra-color,
+	// 鑳屾櫙鑹�
+	bg-color: $uni-bg-color,
+	// 杈规棰滆壊
+	border-1: $uni-border-1,
+	border-2: $uni-border-2,
+	border-3: $uni-border-3,
+	border-4: $uni-border-4,
+	// 榛戣壊
+	black:$uni-black,
+	// 鐧借壊
+	white:$uni-white,
+	// 閫忔槑
+	transparent:$uni-transparent
+) !default;
+@each $key, $child in $uni-ui-color {
+	.uni-#{"" + $key} {
+		color: $child;
+	}
+	.uni-#{"" + $key}-bg {
+		background-color: $child;
+	}
+}
+.uni-shadow-sm {
+	box-shadow: $uni-shadow-sm;
+}
+.uni-shadow-base {
+	box-shadow: $uni-shadow-base;
+}
+.uni-shadow-lg {
+	box-shadow: $uni-shadow-lg;
+}
+.uni-mask {
+	background-color:$uni-mask;
+}
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_radius.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_radius.scss
new file mode 100644
index 0000000..9a0428b
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_radius.scss
@@ -0,0 +1,55 @@
+@mixin radius($r,$d:null ,$important: false){
+  $radius-value:map-get($uni-radius, $r) if($important, !important, null);
+  // Key exists within the $uni-radius variable
+  @if (map-has-key($uni-radius, $r) and  $d){
+		@if $d == t {
+				border-top-left-radius:$radius-value;
+				border-top-right-radius:$radius-value;
+		}@else if $d == r {
+				border-top-right-radius:$radius-value;
+				border-bottom-right-radius:$radius-value;
+		}@else if $d == b {
+				border-bottom-left-radius:$radius-value;
+				border-bottom-right-radius:$radius-value;
+		}@else if $d == l {
+				border-top-left-radius:$radius-value;
+				border-bottom-left-radius:$radius-value;
+		}@else if $d == tl {
+				border-top-left-radius:$radius-value;
+		}@else if $d == tr {
+				border-top-right-radius:$radius-value;
+		}@else if $d == br {
+				border-bottom-right-radius:$radius-value;
+		}@else if $d == bl {
+				border-bottom-left-radius:$radius-value;
+		}
+  }@else{
+		border-radius:$radius-value;
+  }
+}
+
+@each $key, $child in $uni-radius {
+	@if($key){
+		.uni-radius-#{"" + $key} {
+				@include radius($key)
+		}
+	}@else{
+		.uni-radius {
+				@include radius($key)
+		}
+	}
+}
+
+@each $direction in t, r, b, l,tl, tr, br, bl {
+	@each $key, $child in $uni-radius {
+		@if($key){
+			.uni-radius-#{"" + $direction}-#{"" + $key} {
+				@include radius($key,$direction,false)
+			}
+		}@else{
+			.uni-radius-#{$direction} {
+				@include radius($key,$direction,false)
+			}
+		}
+	}
+}
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_space.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_space.scss
new file mode 100644
index 0000000..3c89528
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_space.scss
@@ -0,0 +1,56 @@
+
+@mixin fn($space,$direction,$size,$n) {
+	@if $n {
+		#{$space}-#{$direction}: #{$size*$uni-space-root}px
+	} @else {
+		 #{$space}-#{$direction}: #{-$size*$uni-space-root}px
+	}
+}
+@mixin get-styles($direction,$i,$space,$n){
+	@if $direction == t {
+		@include fn($space, top,$i,$n);
+	} 
+	@if $direction == r {
+		@include fn($space, right,$i,$n);
+	} 
+	@if $direction == b {
+		@include fn($space, bottom,$i,$n);
+	} 
+	@if $direction == l {
+	 @include fn($space, left,$i,$n);
+	} 
+	@if $direction == x {
+		@include fn($space, left,$i,$n);
+		@include fn($space, right,$i,$n);
+	} 
+	@if $direction == y {
+		@include fn($space, top,$i,$n);
+		@include fn($space, bottom,$i,$n);
+	} 
+	@if $direction == a {
+		@if $n {
+			#{$space}:#{$i*$uni-space-root}px;
+		} @else {
+			#{$space}:#{-$i*$uni-space-root}px;
+		}
+	} 
+}
+
+@each $orientation in m,p {
+	$space: margin;
+	@if $orientation == m {
+		$space: margin;
+	} @else {
+		$space: padding;
+	}
+	@for $i from 0 through 16 {
+		@each $direction in t, r, b, l, x, y, a {
+			.uni-#{$orientation}#{$direction}-#{$i} { 
+				@include  get-styles($direction,$i,$space,true);
+			} 
+			.uni-#{$orientation}#{$direction}-n#{$i} { 
+				@include  get-styles($direction,$i,$space,false);
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_styles.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_styles.scss
new file mode 100644
index 0000000..689afec
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_styles.scss
@@ -0,0 +1,167 @@
+/* #ifndef APP-NVUE */
+
+$-color-white:#fff;
+$-color-black:#000;
+@mixin base-style($color) {
+	color: #fff;
+	background-color: $color;
+	border-color: mix($-color-black, $color, 8%);
+	&:not([hover-class]):active {
+		background: mix($-color-black, $color, 10%);
+		border-color: mix($-color-black, $color, 20%);
+		color: $-color-white;
+		outline: none;
+	}
+}
+@mixin is-color($color) {
+	@include base-style($color);
+	&[loading] {
+		@include base-style($color);
+		&::before {
+			margin-right:5px;
+		}
+	}
+	&[disabled] {
+	  &,
+		&[loading],
+	  &:not([hover-class]):active {
+	    color: $-color-white;
+			border-color: mix(darken($color,10%), $-color-white);
+	    background-color: mix($color, $-color-white);
+	  }
+	}
+
+}
+@mixin base-plain-style($color) {
+	color:$color;
+	background-color: mix($-color-white, $color, 90%);
+	border-color: mix($-color-white, $color, 70%);
+	&:not([hover-class]):active {
+	  background: mix($-color-white, $color, 80%);
+	  color: $color;
+	  outline: none;
+		border-color: mix($-color-white, $color, 50%);
+	}
+}
+@mixin is-plain($color){
+	&[plain] {
+		@include base-plain-style($color);
+		&[loading] {
+			@include base-plain-style($color);
+			&::before {
+				margin-right:5px;
+			}
+		}
+		&[disabled] {
+		  &,
+		  &:active {
+		    color: mix($-color-white, $color, 40%);
+		    background-color: mix($-color-white, $color, 90%);
+				border-color: mix($-color-white, $color, 80%);
+		  }
+		}
+	}
+}
+
+
+.uni-btn {
+	margin: 5px;
+	color: #393939;
+	border:1px solid #ccc;
+	font-size: 16px;
+	font-weight: 200;
+	background-color: #F9F9F9;
+	// TODO 鏆傛椂澶勭悊杈规闅愯棌涓�杈圭殑闂
+	overflow: visible;
+	&::after{
+		border: none;
+	}
+
+	&:not([type]),&[type=default] {
+		color: #999;
+		&[loading] {
+			background: none;
+			&::before {
+				margin-right:5px;
+			}
+		}
+
+
+
+		&[disabled]{
+			color: mix($-color-white, #999, 60%);
+		  &,
+			&[loading],
+		  &:active {
+				color: mix($-color-white, #999, 60%);
+		    background-color: mix($-color-white,$-color-black , 98%);
+				border-color: mix($-color-white,  #999, 85%);
+		  }
+		}
+
+		&[plain] {
+			color: #999;
+			background: none;
+			border-color: $uni-border-1;
+			&:not([hover-class]):active {
+				background: none;
+			  color: mix($-color-white, $-color-black, 80%);
+				border-color: mix($-color-white, $-color-black, 90%);
+			  outline: none;
+			}
+			&[disabled]{
+			  &,
+				&[loading],
+			  &:active {
+			    background: none;
+					color: mix($-color-white, #999, 60%);
+					border-color: mix($-color-white,  #999, 85%);
+			  }
+			}
+		}
+	}
+
+	&:not([hover-class]):active {
+	  color: mix($-color-white, $-color-black, 50%);
+	}
+
+	&[size=mini] {
+		font-size: 16px;
+		font-weight: 200;
+		border-radius: 8px;
+	}
+
+
+
+	&.uni-btn-small {
+		font-size: 14px;
+	}
+	&.uni-btn-mini {
+		font-size: 12px;
+	}
+
+	&.uni-btn-radius {
+		border-radius: 999px;
+	}
+	&[type=primary] {
+		@include is-color($uni-primary);
+		@include is-plain($uni-primary)
+	}
+	&[type=success] {
+		@include is-color($uni-success);
+		@include is-plain($uni-success)
+	}
+	&[type=error] {
+		@include is-color($uni-error);
+		@include is-plain($uni-error)
+	}
+	&[type=warning] {
+		@include is-color($uni-warning);
+		@include is-plain($uni-warning)
+	}
+	&[type=info] {
+		@include is-color($uni-info);
+		@include is-plain($uni-info)
+	}
+}
+/* #endif */
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_text.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_text.scss
new file mode 100644
index 0000000..a34d08f
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_text.scss
@@ -0,0 +1,24 @@
+@mixin get-styles($k,$c) {
+	@if $k == size or $k == weight{
+		font-#{$k}:#{$c}
+	}@else{
+		#{$k}:#{$c}
+	}
+}
+
+@each $key, $child in $uni-headings {
+	/* #ifndef APP-NVUE */
+	.uni-#{$key} {
+		@each $k, $c in $child {
+			@include get-styles($k,$c)
+		}
+	}
+	/* #endif */
+	/* #ifdef APP-NVUE */
+	.container .uni-#{$key} {
+		@each $k, $c in $child {
+			@include get-styles($k,$c)
+		}
+	}
+	/* #endif */
+}
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_variables.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_variables.scss
new file mode 100644
index 0000000..557d3d7
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_variables.scss
@@ -0,0 +1,146 @@
+// @use "sass:math";
+@import  '../tools/functions.scss';
+// 闂磋窛鍩虹鍊嶆暟
+$uni-space-root: 2 !default;
+// 杈规鍗婂緞榛樿鍊�
+$uni-radius-root:5px !default;
+$uni-radius: () !default;
+// 杈规鍗婂緞鏂偣
+$uni-radius: map-deep-merge(
+  (
+    0: 0,
+		// TODO 褰撳墠鐗堟湰鏆傛椂涓嶆敮鎸� sm 灞炴��
+    // 'sm': math.div($uni-radius-root, 2),
+    null: $uni-radius-root,
+    'lg': $uni-radius-root * 2,
+    'xl': $uni-radius-root * 6,
+    'pill': 9999px,
+    'circle': 50%
+  ),
+  $uni-radius
+);
+// 瀛椾綋瀹舵棌
+$body-font-family: 'Roboto', sans-serif !default;
+// 鏂囨湰
+$heading-font-family: $body-font-family !default;
+$uni-headings: () !default;
+$letterSpacing: -0.01562em;
+$uni-headings: map-deep-merge(
+  (
+    'h1': (
+      size: 32px,
+			weight: 300,
+			line-height: 50px,
+			// letter-spacing:-0.01562em
+    ),
+    'h2': (
+      size: 28px,
+      weight: 300,
+      line-height: 40px,
+      // letter-spacing: -0.00833em
+    ),
+    'h3': (
+      size: 24px,
+      weight: 400,
+      line-height: 32px,
+      // letter-spacing: normal
+    ),
+    'h4': (
+      size: 20px,
+      weight: 400,
+      line-height: 30px,
+      // letter-spacing: 0.00735em
+    ),
+    'h5': (
+      size: 16px,
+      weight: 400,
+      line-height: 24px,
+      // letter-spacing: normal
+    ),
+    'h6': (
+      size: 14px,
+      weight: 500,
+      line-height: 18px,
+      // letter-spacing: 0.0125em
+    ),
+    'subtitle': (
+      size: 12px,
+      weight: 400,
+      line-height: 20px,
+      // letter-spacing: 0.00937em
+    ),
+    'body': (
+      font-size: 14px,
+			font-weight: 400,
+			line-height: 22px,
+			// letter-spacing: 0.03125em
+    ),
+    'caption': (
+      'size': 12px,
+      'weight': 400,
+      'line-height': 20px,
+      // 'letter-spacing': 0.03333em,
+      // 'text-transform': false
+    )
+  ),
+  $uni-headings
+);
+
+
+
+// 涓昏壊
+$uni-primary: #2979ff !default;
+$uni-primary-disable:lighten($uni-primary,20%) !default;
+$uni-primary-light: lighten($uni-primary,25%) !default;
+
+// 杈呭姪鑹�
+// 闄や簡涓昏壊澶栫殑鍦烘櫙鑹诧紝闇�瑕佸湪涓嶅悓鐨勫満鏅腑浣跨敤锛堜緥濡傚嵄闄╄壊琛ㄧず鍗遍櫓鐨勬搷浣滐級銆�
+$uni-success: #18bc37 !default;
+$uni-success-disable:lighten($uni-success,20%) !default;
+$uni-success-light: lighten($uni-success,25%) !default;
+
+$uni-warning: #f3a73f !default;
+$uni-warning-disable:lighten($uni-warning,20%) !default;
+$uni-warning-light: lighten($uni-warning,25%) !default;
+
+$uni-error: #e43d33 !default;
+$uni-error-disable:lighten($uni-error,20%) !default;
+$uni-error-light: lighten($uni-error,25%) !default;
+
+$uni-info: #8f939c !default;
+$uni-info-disable:lighten($uni-info,20%) !default;
+$uni-info-light: lighten($uni-info,25%) !default;
+
+// 涓�ц壊
+// 涓�ц壊鐢ㄤ簬鏂囨湰銆佽儗鏅拰杈规棰滆壊銆傞�氳繃杩愮敤涓嶅悓鐨勪腑鎬ц壊锛屾潵琛ㄧ幇灞傛缁撴瀯銆�
+$uni-main-color: #3a3a3a !default; 			// 涓昏鏂囧瓧
+$uni-base-color: #6a6a6a !default;			// 甯歌鏂囧瓧
+$uni-secondary-color: #909399 !default;	// 娆¤鏂囧瓧
+$uni-extra-color: #c7c7c7 !default;			// 杈呭姪璇存槑
+
+// 杈规棰滆壊
+$uni-border-1: #F0F0F0 !default;
+$uni-border-2: #EDEDED !default;
+$uni-border-3: #DCDCDC !default;
+$uni-border-4: #B9B9B9 !default;
+
+// 甯歌鑹�
+$uni-black: #000000 !default;
+$uni-white: #ffffff !default;
+$uni-transparent: rgba($color: #000000, $alpha: 0) !default;
+
+// 鑳屾櫙鑹�
+$uni-bg-color: #f7f7f7 !default;
+
+/* 姘村钩闂磋窛 */
+$uni-spacing-sm: 8px !default;
+$uni-spacing-base: 15px !default;
+$uni-spacing-lg: 30px !default;
+
+// 闃村奖
+$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default;
+$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default;
+$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default;
+
+// 钂欑増
+$uni-mask: rgba($color: #000000, $alpha: 0.4) !default;
diff --git a/minipro_standard/uni_modules/uni-scss/styles/tools/functions.scss b/minipro_standard/uni_modules/uni-scss/styles/tools/functions.scss
new file mode 100644
index 0000000..ac6f63e
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/tools/functions.scss
@@ -0,0 +1,19 @@
+// 鍚堝苟 map
+@function map-deep-merge($parent-map, $child-map){
+	$result: $parent-map;
+	@each $key, $child in $child-map {
+		$parent-has-key: map-has-key($result, $key);
+		$parent-value: map-get($result, $key);
+		$parent-type: type-of($parent-value);
+		$child-type: type-of($child);
+		$parent-is-map: $parent-type == map;
+		$child-is-map: $child-type == map;
+			
+		@if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){
+			$result: map-merge($result, ( $key: $child ));
+		}@else {
+			$result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) ));
+		}
+	}
+	@return $result;
+};
diff --git a/minipro_standard/uni_modules/uni-scss/theme.scss b/minipro_standard/uni_modules/uni-scss/theme.scss
new file mode 100644
index 0000000..80ee62f
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/theme.scss
@@ -0,0 +1,31 @@
+// 闂磋窛鍩虹鍊嶆暟
+$uni-space-root: 2;
+// 杈规鍗婂緞榛樿鍊�
+$uni-radius-root:5px;
+// 涓昏壊
+$uni-primary: #2979ff;
+// 杈呭姪鑹�
+$uni-success: #4cd964;
+// 璀﹀憡鑹�
+$uni-warning: #f0ad4e;
+// 閿欒鑹�
+$uni-error: #dd524d;
+// 鎻忚堪鑹�
+$uni-info: #909399;
+// 涓�ц壊
+$uni-main-color: #303133;
+$uni-base-color: #606266;
+$uni-secondary-color: #909399;
+$uni-extra-color: #C0C4CC;
+// 鑳屾櫙鑹�
+$uni-bg-color: #f5f5f5;
+// 杈规棰滆壊
+$uni-border-1: #DCDFE6;
+$uni-border-2: #E4E7ED;
+$uni-border-3: #EBEEF5;
+$uni-border-4: #F2F6FC;
+
+// 甯歌鑹�
+$uni-black: #000000;
+$uni-white: #ffffff;
+$uni-transparent: rgba($color: #000000, $alpha: 0);
diff --git a/minipro_standard/uni_modules/uni-scss/variables.scss b/minipro_standard/uni_modules/uni-scss/variables.scss
new file mode 100644
index 0000000..1c062d4
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/variables.scss
@@ -0,0 +1,62 @@
+@import './styles/setting/_variables.scss';
+// 闂磋窛鍩虹鍊嶆暟
+$uni-space-root: 2;
+// 杈规鍗婂緞榛樿鍊�
+$uni-radius-root:5px;
+
+// 涓昏壊
+$uni-primary: #2979ff;
+$uni-primary-disable:mix(#fff,$uni-primary,50%);
+$uni-primary-light: mix(#fff,$uni-primary,80%);
+
+// 杈呭姪鑹�
+// 闄や簡涓昏壊澶栫殑鍦烘櫙鑹诧紝闇�瑕佸湪涓嶅悓鐨勫満鏅腑浣跨敤锛堜緥濡傚嵄闄╄壊琛ㄧず鍗遍櫓鐨勬搷浣滐級銆�
+$uni-success: #18bc37;
+$uni-success-disable:mix(#fff,$uni-success,50%);
+$uni-success-light: mix(#fff,$uni-success,80%);
+
+$uni-warning: #f3a73f;
+$uni-warning-disable:mix(#fff,$uni-warning,50%);
+$uni-warning-light: mix(#fff,$uni-warning,80%);
+
+$uni-error: #e43d33;
+$uni-error-disable:mix(#fff,$uni-error,50%);
+$uni-error-light: mix(#fff,$uni-error,80%);
+
+$uni-info: #8f939c;
+$uni-info-disable:mix(#fff,$uni-info,50%);
+$uni-info-light: mix(#fff,$uni-info,80%);
+
+// 涓�ц壊
+// 涓�ц壊鐢ㄤ簬鏂囨湰銆佽儗鏅拰杈规棰滆壊銆傞�氳繃杩愮敤涓嶅悓鐨勪腑鎬ц壊锛屾潵琛ㄧ幇灞傛缁撴瀯銆�
+$uni-main-color: #3a3a3a; 			// 涓昏鏂囧瓧
+$uni-base-color: #6a6a6a;			// 甯歌鏂囧瓧
+$uni-secondary-color: #909399;	// 娆¤鏂囧瓧
+$uni-extra-color: #c7c7c7;			// 杈呭姪璇存槑
+
+// 杈规棰滆壊
+$uni-border-1: #F0F0F0;
+$uni-border-2: #EDEDED;
+$uni-border-3: #DCDCDC;
+$uni-border-4: #B9B9B9;
+
+// 甯歌鑹�
+$uni-black: #000000;
+$uni-white: #ffffff;
+$uni-transparent: rgba($color: #000000, $alpha: 0);
+
+// 鑳屾櫙鑹�
+$uni-bg-color: #f7f7f7;
+
+/* 姘村钩闂磋窛 */
+$uni-spacing-sm: 8px;
+$uni-spacing-base: 15px;
+$uni-spacing-lg: 30px;
+
+// 闃村奖
+$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5);
+$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2);
+$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5);
+
+// 钂欑増
+$uni-mask: rgba($color: #000000, $alpha: 0.4);
diff --git a/minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue b/minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue
index 1a25db6..d8a2b69 100644
--- a/minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue
+++ b/minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue
@@ -49,9 +49,9 @@
 				const preLoadScreen = this.uList.preLoadScreen
 				const windowHeight = this.sys.windowHeight
 				if(n <= windowHeight * preLoadScreen) {
-					this.parent.updateOffsetFromChild(0)
+					// this.parent.updateOffsetFromChild(0)
 				} else if (this.rect.top <= n - windowHeight * preLoadScreen) {
-					this.parent.updateOffsetFromChild(this.rect.top)
+					// this.parent.updateOffsetFromChild(this.rect.top)
 				}
 			}
 			// #endif
diff --git a/minipro_standard/util/api/ExWarehouse.js b/minipro_standard/util/api/ExWarehouse.js
new file mode 100644
index 0000000..a99e79b
--- /dev/null
+++ b/minipro_standard/util/api/ExWarehouse.js
@@ -0,0 +1,252 @@
+const http = uni.$u.http
+
+// 鍑哄叆搴撹鎯�
+export function getList(params) {
+	return http.get('/ext/wOutboundExt/findById', { params })
+}
+// export function getList(params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/findById',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鍑哄簱/鍏ュ簱鎵弿绡瓙鐮� - H5
+export function outScanAppliances(params) {
+	return http.get('/ext/wOutboundExt/outScanAppliances', { params })
+}
+// export function outScanAppliances(params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/outScanAppliances',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鏍规嵁杞簱鍗曡幏鍙栧嚭搴撲俊鎭� - H5
+export function getOutByWTransferId(params) {
+	return http.get('/ext/wOutboundExt/getOutByWTransferId', { params })
+}
+// export function getOutByWTransferId(params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/getOutByWTransferId',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鍑哄簱鍗曚繚瀛�
+export function saveOut(data) {
+	return http.post('/ext/wOutboundExt/saveOut', data)
+}
+// export function saveOut(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/saveOut',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鍏ュ簱鍗曚繚瀛�
+export function saveIn(data) {
+	return http.post('/ext/wOutboundExt/saveIn', data)
+}
+// export function saveIn(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/saveIn',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁杞簱鍗曡幏鍙栧叆搴撲俊鎭�
+export function getInByWTransferId(params) {
+	return http.get('/ext/wOutboundExt/getInByWTransferId', { params })
+}
+// export function getInByWTransferId(params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/getInByWTransferId',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鏍规嵁ID鏌ヨ璐т綅淇℃伅
+export function getLocationInfo(id) {
+	return http.get(`/ext/warehouseLocationExt/${id}`)
+}
+// export function getLocationInfo(id: string | number): Promise<any> {
+//     return httpRequest({
+//         url: `ext/warehouseLocationExt/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鏍规嵁ID鏌ヨ璐т綅淇℃伅
+export function finishedInBill(params) {
+	return http.get('/ext/wOutboundExt/finishedInBill', { params })
+} 
+// export function finishedInBill(params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/finishedInBill',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鑾峰彇杞簱鍗曚俊鎭�
+export function wTransferForInOut(params) {
+	return http.get('/ext/wOutboundExt/wTransferForInOut', { params })
+} 
+// export function wTransferForInOut(params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wTransferExt/wTransferForInOut',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鑾峰彇鍑哄叆搴撳崟淇℃伅
+export function wOutBoundForInOut(params) {
+	return http.get('/ext/wOutboundExt/wOutBoundForInOut', { params })
+} 
+// export function wOutBoundForInOut(params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/wOutBoundForInOut',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鑾峰彇杞簱鍗曚俊鎭�
+export function saveOutCK (data) {
+  return request.post('/ext/wOutboundExt/saveOut', data)
+}
+// export function saveOutCK(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/saveOut',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鎻愪氦杞簱鍗曞嚭鍏ュ簱
+export function wTransferForInOutUpload(params) {
+	return http.get('/ext/wTransferExt/wTransferForInOutUpload', { params })
+} 
+// export function wTransferForInOutUpload(params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wTransferExt/wTransferForInOutUpload',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 璋冩暣鍏ュ簱
+export function wOutBoundForStockUp (data) {
+  return request.post('/ext/wOutboundExt/wOutBoundForStockUp', data)
+}
+// export function wOutBoundForStockUp(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/createForStandard',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鍑哄叆搴撲笟鍔″鐞嗘彁浜�
+export function wOutBoundForUpload(params) {
+	return http.get('/ext/wOutboundExt/wOutBoundForUpload', { params })
+}
+// export function wOutBoundForUpload(params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/wOutBoundForUpload',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鐗╂枡鍒嗛厤淇℃伅鍒嗛〉鏌ヨ
+export function materialDistributeExt (data) {
+  return request.post('/ext/materialDistributeExt/page', data)
+}
+// export function materialDistributeExt(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/materialDistributeExt/page',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁鐗╂枡涓婚敭鏌ヨ鐗╂枡鍒嗛厤鏁版嵁
+export function getMaterialItem(params) {
+	return http.get('/ext/materialDistributeExt/findByMaterialId', { params })
+} 
+// export function getMaterialItem(params: any): Promise<any> {
+//     return httpRequest({
+//         url: `ext/materialDistributeExt/findByMaterialId`,
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鏍规嵁鐗╂枡鍒嗛厤涓婚敭鏌ヨ
+export function getListByMaterialId(params) {
+	return http.get('/ext/proceduresExt/getListByMaterialId', { params })
+} 
+// export function getListByMaterialId(params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/proceduresExt/getListByMaterialId',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鏍规嵁杞簱鍗曟煡璇㈠簱瀛�
+export function choiceStockPageByTransfer (data) {
+  return request.post('/ext/wStockExt/choiceStockPageByTransfer', data)
+}
+// export function choiceStockPageByTransfer(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wStockExt/choiceStockPageByTransfer',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 杞簱鍑哄簱涓氬姟 - H5
+export function transferToOutNew (data) {
+  return request.post('/ext/wTransferExt/transferToOutNew', data)
+}
+// export function transferToOutNew(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wTransferExt/transferToOutNew',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 杞簱鍏ュ簱涓氬姟 - H5
+export function transferToInNew (data) {
+  return request.post('/ext/wTransferExt/transferToInNew', data)
+}
+// export function transferToInNew(data: any): Promise<any> {
+//     return httpRequest({
+//         url:  '/ext/wTransferExt/transferToInNew',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁渚涢渶璁″垝鏌ヨ鍙敤搴撳瓨
+export function getStockByPlansForStandard (data) {
+  return request.post('/ext/workorderRecordExt/getStockByPlansForStandard', data)
+}
+// export function getStockByPlansForStandard(data: any): Promise<any> {
+//     return httpRequest({
+//         url:  '/ext/workorderRecordExt/getStockByPlansForStandard',
+//         method: 'post',
+//         data
+//     })
+// }
\ No newline at end of file
diff --git a/minipro_standard/util/api/PersonalAPI.js b/minipro_standard/util/api/PersonalAPI.js
new file mode 100644
index 0000000..51e17d8
--- /dev/null
+++ b/minipro_standard/util/api/PersonalAPI.js
@@ -0,0 +1,36 @@
+const request = uni.$u.http
+
+// 淇敼褰撳墠鐢ㄦ埛瀵嗙爜
+export function updatePwd (data) {
+  return request.post('/system/updatePwd', data)
+}
+// export function updatePwd(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'system/updatePwd',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鍒囨崲褰撳墠鍏徃绾х粍缁�
+export function changeCom (id) {
+  return request.get(`/ext/departmentExt/changeCom/${id}`)
+}
+// export function changeCom(id: any): Promise<any> {
+//     return httpRequest({
+//         url: `ext/departmentExt/changeCom/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鏉′欢鏌ヨ浼佷笟鍏ㄩ儴閮ㄩ棬
+export function getDepartmentListByConditon (data) {
+  return request.post('/ext/departmentExt/getDepartmentListByConditon', data)
+}
+// export function getDepartmentListByConditon(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/departmentExt/getDepartmentListByConditon',
+//         method: 'post',
+//         data
+//     })
+// }
diff --git a/minipro_standard/util/api/PlanningAPI.js b/minipro_standard/util/api/PlanningAPI.js
new file mode 100644
index 0000000..f68a57c
--- /dev/null
+++ b/minipro_standard/util/api/PlanningAPI.js
@@ -0,0 +1,213 @@
+const request = uni.$u.http
+
+// 鍒嗛〉鏌ヨ
+export function getList (data) {
+  return request.post('/ext/plansExt/page', data)
+}
+// export function getList(data: any): Promise<any> {
+//     return httpRequest({
+//         url: '/ext/plansExt/page',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁id鏌ヨ
+export function queryByID (id) {
+  return request.get(`/ext/plansExt/h5/${id}`)
+}
+// export function queryByID(id: any): Promise<any> {
+//     return httpRequest({
+//         url: `/ext/plansExt/h5/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鏌ヨ缁熻鍒楄〃鏁伴噺
+export function pageCount (data) {
+  return request.post('/ext/plansExt/pageCount', data)
+}
+// export function pageCount(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/plansExt/pageCount',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏌ヨ宸ュ簭(涓汉)
+export function getWorkingProcedure (data) {
+  return request.post('/ext/proceduresExt/page', data)
+}
+// export function getWorkingProcedure(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/proceduresExt/page',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁ID鍙戝竷璁″垝
+export function getWorkingProcedure (data) {
+  return request.post('/ext/plansExt/publishById', data)
+}
+// export function publishById(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/plansExt/publishById',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁ID鍒嗛厤璁″垝
+export function distributeById (data) {
+  return request.post('/ext/plansExt/distributeById', data)
+}
+// export function distributeById(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/plansExt/distributeById',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏌ヨ褰撳墠鐢ㄦ埛鍏ㄩ儴鑼冨洿鍐呯殑鍏ㄩ儴宸ュ簭
+export function getSelfList (data) {
+  return request.post('/ext/proceduresExt/getSelfList', data)
+}
+// export function getSelfList(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/proceduresExt/getSelfList',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 缁堟鍒嗛〉鏌ヨ
+export function ZJPage (data) {
+  return request.post('/ext/endCheckExt/page', data)
+}
+// export function ZJPage(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/endCheckExt/page',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 缁堟鏍规嵁ID鏌ヨ
+export function getById (id) {
+  return request.get(`/ext/endCheckExt/${id}`)
+}
+// export function getById(id: any): Promise<any> {
+//     return httpRequest({
+//         url: `ext/endCheckExt/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鏌ヨ璁惧
+export function getDeviceByCondition (data) {
+  return request.post('/ext/deviceExt/getDeviceByCondition', data)
+}
+// export function getDeviceByCondition(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/deviceExt/getDeviceByCondition',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 浜哄憳缁戝畾璁惧淇℃伅
+export function getFindAll (data) {
+  return request.post('/ext/userDeviceExt/findAll', data)
+}
+// export function getFindAll(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/userDeviceExt/findAll',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏉′欢鏌ヨ浼佷笟鍏ㄩ儴閮ㄩ棬
+export function deletejy (id) {
+  return request.get(`/ext/workorderCheckExt/delete/${id}`)
+}
+// export function deletejy(id: any): Promise<any> {
+//     return httpRequest({
+//         url: `ext/workorderCheckExt/delete/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鏍规嵁瀵硅薄淇℃伅鏌ヨ
+export function queryOne (data) {
+  return request.post('/ext/salaryParam/queryOne', data)
+}
+// export function queryOne (data: any): Promise<any> {
+//     return httpRequest({
+//         url: '/ext/salaryParam/queryOne',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁瀵硅薄淇℃伅鏌ヨ
+export function queryList (data) {
+  return request.post('/ext/salaryParam/queryList', data)
+}
+// export function queryList (data: any): Promise<any> {
+//     return httpRequest({
+//         url: '/ext/salaryParam/queryList',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 涓�閿姤宸�
+export function autoWorkReport (data) {
+  return request.post('/ext/plansExt/autoWorkReport', data)
+}
+// export function autoWorkReport (data: any): Promise<any> {
+//     return httpRequest({
+//         url: '/ext/plansExt/autoWorkReport',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁id鏌ヨ
+export function getIdPlansExt (id) {
+  return request.get(`/ext/plansExt/${id}`)
+}
+// export function getIdPlansExt(id: any): Promise<any> {
+//     return httpRequest({
+//         url: `/ext/plansExt/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鍒楄〃鏌ヨ
+export function categoryExtList (data) {
+  return request.post('/ext/categoryExt/list', data)
+}
+// export function categoryExtList (data: any): Promise<any> {
+//     return httpRequest({
+//         url: '/ext/categoryExt/list',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏌ヨ鍏ㄩ儴
+export function allUser (data) {
+  return request.post('/ext/companyUserExt/allUser', data)
+}
+// export function allUser (data: any): Promise<any> {
+//     return httpRequest({
+//         url: '/ext/companyUserExt/allUser',
+//         method: 'post',
+//         data
+//     })
+// }
diff --git a/minipro_standard/util/api/QualityAPI.js b/minipro_standard/util/api/QualityAPI.js
new file mode 100644
index 0000000..72031cf
--- /dev/null
+++ b/minipro_standard/util/api/QualityAPI.js
@@ -0,0 +1,118 @@
+const request = uni.$u.http
+
+// 鍒嗛〉鏌ヨ
+export function page (data) {
+  return request.post('/ext/workorderCheckExt/page', data)
+}
+// export function page(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderCheckExt/page',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鍒涘缓妫�楠�
+export function createJY (data) {
+  return request.post('/ext/workorderCheckExt/create', data)
+}
+// export function createJY(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderCheckExt/create',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鍒涘缓妫�楠�--鏀�
+export function createStandard (data) {
+  return request.post('/ext/workorderCheckExt/createStandard', data)
+}
+// export function createStandard(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderCheckExt/createStandard',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁ID鏌ヨ
+export function getBYid (id) {
+  return request.post(`/ext/workorderCheckExt/${id}`, data)
+}
+// export function getBYid(id: any): Promise<any> {
+//     return httpRequest({
+//         url: `/ext/workorderCheckExt/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鑾峰彇鍑哄叆搴撲俊鎭�
+export function findById (id) {
+  return request.post(`/ext/wOutboundExt/findById?id=${id}`, data)
+}
+// export function findById(id: Number): Promise<any> {
+//     return httpRequest({
+//         url: `/ext/wOutboundExt/findById?id=${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鐢熶骇缁堟鏁版嵁鎻愪氦
+export function upload (data) {
+  return request.post('/ext/endCheckExt/upload', data)
+}
+// export function upload (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/endCheckExt/upload',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鐢熶骇缁堟鏁版嵁鎻愪氦
+export function uploadTest (data) {
+  return request.post('/ext/endCheckExt/uploadEndCheckNew', data)
+}
+// export function uploadTest (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/endCheckExt/uploadEndCheckNew',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 宸℃璁板綍鍒涘缓
+export function saveBean (data) {
+  return request.post('/ext/deviceCheckExt/saveBean', data)
+}
+// export function saveBean (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/deviceCheckExt/saveBean',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鑾峰彇鏉冮檺鑼冨洿鍐呯殑璁惧鏁版嵁
+export function getDeviceByCondition (data) {
+  return request.post('/ext/deviceExt/getDeviceByCondition', data)
+}
+// export function getDeviceByCondition (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/deviceExt/getDeviceByCondition',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁ID鏌ヨ璁惧
+export function getBYid (id) {
+  return request.post(`/ext/deviceExt/${id}`, data)
+}
+// export function getsbInfo (id: any): Promise<any> {
+//     return httpRequest({
+//         url: `ext/deviceExt/${id}`,
+//         method: 'get'
+//     })
+// }
diff --git a/minipro_standard/util/api/WorkOrderAPI.js b/minipro_standard/util/api/WorkOrderAPI.js
new file mode 100644
index 0000000..49ba02d
--- /dev/null
+++ b/minipro_standard/util/api/WorkOrderAPI.js
@@ -0,0 +1,652 @@
+const http = uni.$u.http
+
+// 鍒嗛〉鏌ヨ
+export function getList (data) {
+  return http.post('/ext/workorderExt/page', data)
+}
+// export function getList(data: any): Promise<any> {
+//     return httpRequest({
+//         url: '/ext/workorderExt/page',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 宸ュ崟缁熻鍒楄〃鏁伴噺
+export function pageCount (data) {
+  return http.post('/ext/workorderExt/pageCount', data)
+}
+// export function pageCount(data: any): Promise<any> {
+//     return httpRequest({
+//         url: '/ext/workorderExt/pageCount',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁ID鏌ヨ
+export function queryById (id) {
+  return http.get(`/ext/workorderExt/${id}`)
+}
+// export function queryById(id: any): Promise<any> {
+//     return httpRequest({
+//         url: `ext/workorderExt/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鍒嗙被缁勫悎鎺ュ彛2
+export function checkAllList (data) {
+  return http.post('/ext/categoryUnionExt/checkAllList', data)
+}
+// export function checkAllList(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/categoryUnionExt/checkAllList',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁鐢ㄦ埛鏌ヨ - 璁惧鍒楄〃
+export function getListByUser () {
+  return http.post('/ext/userDeviceExt/getListByUser')
+}
+// export function getListByUser (): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/userDeviceExt/getListByUser',
+//         method: 'post'
+//     })
+// }
+
+// 鏌ヨ褰撳墠鐢ㄦ埛鎵�鏈変富缁勭粐涓嬬殑宸ュ簭
+export function warehouseList (data) {
+  return http.post('/ext/warehouseExt/page', data)
+}
+// export function warehouseList(data: any): Promise<any> {
+//   return httpRequest({
+//       url: '/ext/warehouseExt/page',
+//       method: 'post',
+//       data
+//   })
+// }
+
+// 瀹屽伐鍏ュ簱璇︽儏
+export function finishedDetail(params) {
+	return http.get('/ext/workorderExt/finishedDetail', { params })
+} 
+// export function finishedDetail (params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderExt/finishedDetail',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鏍规嵁鏉′欢鏌ヨ宸ヨ
+export function getListByCondition (data) {
+  return http.post('/ext/appliancesExt/getListByCondition', data)
+}
+// export function getListByCondition(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/appliancesExt/getListByCondition',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏂板缓鎶曟枡
+export function createMaterial (data) {
+  return http.post('/ext/workorderRecordExt/createMaterial', data)
+}
+// export function createMaterial(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/createMaterial',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏂板缓鎶曟枡 - 鏍囧噯鐗�
+export function createMaterialStandard (data) {
+  return http.post('/ext/workorderRecordExt/createMaterialStandard', data)
+}
+// export function createMaterialStandard(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/createMaterialStandard',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鑾峰彇鎵弿鏉$爜鍐呭
+export function getBarcodeContent(params) {
+	return http.get('/ext/barcodeParamExt/getBarcodeContent', { params })
+} 
+// export function getBarcodeContent(params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/barcodeParamExt/getBarcodeContent',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鏌ヨ鍏ㄩ儴宸ュ崟鐢熶骇杩囩▼璁板綍
+export function getOrocessRecord (data) {
+  return http.post('/ext/workorderRecordExt/all', data)
+}
+// export function getOrocessRecord(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/all',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 宸ヨ鍣ㄥ叿鏍规嵁ID鏌ヨ
+export function toolingQueryById (data) {
+  return http.post('/ext/appliancesExt/getListByCondition', data)
+}
+// export function toolingQueryById(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/appliancesExt/getListByCondition',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏂板缓浜у嚭
+export function createProduce (data) {
+  return http.post('/ext/workorderRecordExt/createProduce', data)
+}
+// export function createProduce(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/createProduce',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鍒犻櫎浜у嚭/鎶曟枡鍗曟潯璁板綍
+export function deleteCT (id) {
+  return http.get(`/ext/workorderRecordExt/delete/${id}`)
+}
+// export function deleteCT (id: any): Promise<any> {
+//     return httpRequest({
+//         url: `/ext/workorderRecordExt/delete/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鏍规嵁ID淇敼浜у嚭-鎶曟枡鏁伴噺
+export function updateById (data) {
+  return http.post('/ext/workorderRecordExt/updateById', data)
+}
+// export function updateById (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/updateById',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁绡瓙鍒嗙粍缁熻鎶ュ簾鍜屼笉鑹暟閲�
+export function listGroupByAppliance (data) {
+  return http.post('/ext/workorderCheckExt/listGroupByAppliance', data)
+}
+// export function listGroupByAppliance (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderCheckExt/listGroupByAppliance',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 纭鎶ュ伐
+export function comfirmDone (data) {
+  return http.post('/ext/workorderRecordExt/comfirmDone', data)
+}
+// export function comfirmDone (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/comfirmDone',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 纭鎶ュ伐 - 鏍囧噯鐗�
+export function comfirmDoneStandard (data) {
+  return http.post('/ext/workorderRecordExt/comfirmDoneStandard', data)
+}
+// export function comfirmDoneStandard (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/comfirmDoneStandard',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁鏉′欢鏌ヨ鎵�鏈夌殑妫�鐐瑰睘鎬�
+export function getJdList (data) {
+  return http.post('/ext/checkAttrExt/getListByCondition', data)
+}
+// export function getJdList (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/checkAttrExt/getListByCondition',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏂板缓鐐规
+export function createDJ (data) {
+  return http.post('/ext/workorderCheckAttrExt/create', data)
+}
+// export function createDJ (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderCheckAttrExt/create',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鐐规鍒嗛〉鏌ヨ
+export function pageDJ (data) {
+  return http.post('/ext/workorderCheckAttrExt/page', data)
+}
+// export function pageDJ (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderCheckAttrExt/page',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 瀹屽伐鍏ュ簱鎻愪氦
+export function finished(params) {
+	return http.get('/ext/workorderExt/finished', { params })
+}
+// export function finished (params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderExt/finished',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 瀹屽伐鍏ュ簱璇︽儏璁板綍
+export function saveFinishRecord (data) {
+  return http.post('/ext/workorderExt/saveFinishRecord', data)
+}
+// export function saveFinishRecord (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderExt/saveFinishRecord',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 瀹屽伐鍏ュ簱璇︽儏璁板綍 --- 寰呭姙杩涘叆
+export function getFinishRecord(params) {
+	return http.get('/ext/workorderExt/getFinishRecord', { params })
+}
+// export function getFinishRecord (params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderExt/getFinishRecord',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鏍规嵁ID鏌ヨ璁惧璇︽儏
+export function deleteById (id) {
+  return http.get(`/ext/deviceExt/${id}`)
+}
+// export function getSbInfo (id: any): Promise<any> {
+//     return httpRequest({
+//         url: `ext/deviceExt/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鎹叆搴撹揣浣嶇瓫閫夊叆搴撳崟 - H5
+export function finishedInBill(params) {
+	return http.get('/ext/wOutboundExt/finishedInBill', { params })
+}
+// export function finishedInBill (params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wOutboundExt/finishedInBill',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鐢ㄦ埛缁戝畾璁惧
+export function bindingDevice (data) {
+  return http.post('/ext/userDeviceExt/create', data)
+}
+// export function bindingDevice (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/userDeviceExt/create',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 宸ヨ鍒嗛〉鏌ヨ
+export function toolingList (data) {
+  return http.post('/ext/appliancesExt/page', data)
+}
+// export function toolingList (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/appliancesExt/page',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏇存崲绡瓙
+export function chageApplicance (data) {
+  return http.post('/ext/appliancesExt/chageApplicance', data)
+}
+// export function chageApplicance (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/appliancesExt/chageApplicance',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鐢宠鍗曪紝杩斿伐杩斾慨鐢宠涓嶈壇鍘熷洜
+export function checkFGFXList(params) {
+	return http.get('/ext/categoryUnionExt/checkFGFXList', { params })
+}
+// export function checkFGFXList (params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/categoryUnionExt/checkFGFXList',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鏌ヨ鍏徃绾у叏閮�
+export function allData (data) {
+  return http.post('/ext/salesorder/allData', data)
+}
+// export function allData (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'business/salesorder/allData',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁ID鏌ヨ宸ュ簭
+export function getGXItem (id) {
+  return http.get(`/ext/proceduresExt/${id}`)
+}
+// export function getGXItem (id: any): Promise<any> {
+//     return httpRequest({
+//         url: `ext/proceduresExt/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鏂板缓杩斿伐杩斾慨鐢宠鍗�
+export function createSingle (data) {
+  return http.post('/business/backorder/create', data)
+}
+// export function createSingle (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'business/backorder/create',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏌ヨ褰撳墠鐢ㄦ埛鎵�鏈変富缁勭粐涓嬬殑宸ュ簭
+export function productesGroup (data) {
+  return http.post('/ext/proceduresExt/productesGroup', data)
+}
+// export function productesGroup (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/proceduresExt/productesGroup',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鐢宠鍗曞垎椤垫煡璇�
+export function sqdCage (data) {
+  return http.post('/business/backorder/page', data)
+}
+// export function sqdCage (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'business/backorder/page',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鐢宠鍗曟牴鎹甶d鏌ヨ璇︾粏
+export function getsqdInfo (id) {
+  return http.get(`/business/backorder/${id}`)
+}
+// export function getsqdInfo (id: any): Promise<any> {
+//     return httpRequest({
+//         url: `business/backorder/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鐢宠鍗�---鏍规嵁宸ュ巶id鏌ヨ宸ュ簭
+export function productesGroups (data) {
+  return http.post('/business/proceduresExt/productesGroup', data)
+}
+// export function productesGroups (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/proceduresExt/productesGroup',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 瀹屽伐鍏ュ簱璇︽儏 - NEW
+export function finishedDetailNew(params) {
+	return http.get('/ext/workorderExt/finishedDetailNew', { params })
+}
+// export function finishedDetailNew (params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderExt/finishedDetailNew',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鏍规嵁宸ュ崟鏌ヨ宸ヨ壓鍗�
+export function getListByWorkOrderId (data) {
+  return http.post('/ext/routeCardExt/getListByWorkOrderId', data)
+}
+// export function getListByWorkOrderId (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/routeCardExt/getListByWorkOrderId',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 缁堟宸ヨ鎵弿
+export function getEndCheckAP(params) {
+	return http.get('/ext/workorderRecordExt/getEndCheckAP', { params })
+}
+// export function getEndCheckAP (params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/getEndCheckAP',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鏍规嵁ID鏌ヨ璁惧
+export function deletedj (id) {
+  return http.get(`/ext/workorderCheckAttrExt/delete/${id}`)
+}
+// export function deletedj (id: any): Promise<any> {
+//     return httpRequest({
+//         url: `ext/workorderCheckAttrExt/delete/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 搴撳瓨閲忔煡璇� - H5
+export function pageForH5 (data) {
+  return http.post('/ext/wStockExt/pageForH5', data)
+}
+// export function pageForH5 (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wStockExt/pageForH5',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 璐т綅鍒嗛〉鏌ヨ
+export function pageHW (data) {
+  return http.post('/ext/warehouseLocationExt/page', data)
+}
+// export function pageHW (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/warehouseLocationExt/page',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁浠撳簱鏌ヨ浠撳簱涓嬭揣浣嶄俊鎭�
+export function getListByWarehouseId(params) {
+	return http.get('/ext/warehouseLocationExt/getListByWarehouseId', { params })
+}
+// export function getListByWarehouseId (params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/warehouseLocationExt/getListByWarehouseId',
+//         method: 'get',
+//         params
+//     })
+// }
+
+// 鎵嬪伐杞簱 - H5
+export function scanTransfer (data) {
+  return http.post('/ext/wTransferExt/scanTransfer', data)
+}
+// export function scanTransfer (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wTransferExt/scanTransfer',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏌ヨ鍏ㄩ儴 - 鏍囧噯
+export function allForStandard (data) {
+  return http.post('/ext/workorderRecordExt/allForStandard', data)
+}
+// export function allForStandard (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/allForStandard',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鐢熸垚鎶曟枡璁板綍 - standard
+export function dealWorkorderRecordStandard (data) {
+  return http.post('/ext/workorderRecordExt/dealWorkorderRecordStandard', data)
+}
+// export function dealWorkorderRecordStandard (data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/dealWorkorderRecordStandard',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏌ヨ浜у嚭璁板綍鍒楄〃
+export function getWorkorderRecordListStandard(params) {
+	return http.get('/ext/workorderRecordExt/getWorkorderRecordListStandard', { params })
+} 
+// export function getWorkorderRecordListStandard (params: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/getWorkorderRecordListStandard',
+//         method: 'get',
+//         params
+//     })
+// }
+
+/***
+ * 鏍规嵁ID鏌ヨ宸ヨ淇℃伅
+ * @param id
+ */
+export function getGzInfo (id) {
+  return http.get(`/ext/appliancesExt/${id}`)
+}
+// export function getGzInfo (id: any): Promise<any> {
+//     return httpRequest({
+//         url: `ext/appliancesExt/${id}`,
+//         method: 'get'
+//     })
+// }
+
+/**
+ * 纭澶囨枡璇︽儏
+ * @param params id: 杞簱id
+ * @returns
+ */
+export function wTransferConfirm(params) {
+	return http.get('/ext/wTransferExt/wTransferConfirm', { params })
+} 
+//  export function wTransferConfirm(params: any): Promise<any> {
+//   return httpRequest({
+//       url:  '/ext/wTransferExt/wTransferConfirm',
+//       method: 'get',
+//       params
+//   })
+// }
+
+/**
+* 鎺ュ彈澶囨枡
+* @param params id: id
+* @returns
+*/
+export function acceptWTransfer(params) {
+	return http.get('/ext/wTransferExt/acceptWTransfer', { params })
+}
+// export function acceptWTransfer(params: any): Promise<any> {
+//   return httpRequest({
+//       url:  '/ext/wTransferExt/acceptWTransfer',
+//       method: 'get',
+//       params
+//   })
+// }
+
+// 鏂板鍑哄簱
+export function createForStandard (data) {
+  return http.post('/ext/wOutboundExt/createForStandard', data)
+}
+// export function createForStandard (data: any): Promise<any> {
+//     return httpRequest({
+//         url: '/ext/wOutboundExt/createForStandard',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 搴撳瓨璋冩暣銆侀噰璐叆搴撳叆搴撳崟鍒涘缓
+export function wOutBoundForStockUp (data) {
+  return http.post('/ext/wOutboundExt/wOutBoundForStockUp', data)
+}
+// export function wOutBoundForStockUp (data: any): Promise<any> {
+//     return httpRequest({
+//         url: '/ext/wOutboundExt/wOutBoundForStockUp',
+//         method: 'post',
+//         data
+//     })
+// }
diff --git a/minipro_standard/util/api/agencyAPI.js b/minipro_standard/util/api/agencyAPI.js
new file mode 100644
index 0000000..6876b57
--- /dev/null
+++ b/minipro_standard/util/api/agencyAPI.js
@@ -0,0 +1,77 @@
+const http = uni.$u.http
+
+// 鍒嗛〉鏌ヨ
+export function getList(data) {
+	return http.post('/ext/noticesExt/page', data)
+}
+
+// 鏌ヨ缁熻鍒楄〃鏁伴噺
+export function pageCount(data) {
+	return http.post('/ext/noticesExt/pageCount', data)
+}
+// export function pageCount(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/noticesExt/pageCount',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁ID鏌ヨ
+export function getDB(id) {
+	return http.get(`/ext/noticesExt/${id}`)
+}
+// export function getDB(id: any): Promise<any> {
+//     return httpRequest({
+//         url: `ext/noticesExt/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鎵嬪姩鍑哄叆搴撲娇鐢� - 鍒嗛〉鏌ヨ
+export function findListPageForManual(data) {
+	return http.post('/ext/appliancesExt/findListPageForManual', data)
+}
+// export function findListPageForManual(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/appliancesExt/findListPageForManual',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁浠撳簱鏌ヨ搴撳瓨
+export function choiceStockListPage(data) {
+	return http.post('/ext/wStockExt/choiceStockListPage', data)
+}
+// export function choiceStockListPage(data: any): Promise<any> {
+//     return httpRequest({
+//         url: '/ext/wStockExt/choiceStockListPage',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鏍规嵁浠撳簱鏌ヨ搴撳瓨-鏍囧噯鐗�
+export function choiceStockPageForStandard(data) {
+	return http.post('/ext/workorderRecordExt/choiceStockPageForStandard', data)
+}
+// export function choiceStockPageForStandard(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/workorderRecordExt/choiceStockPageForStandard',
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 鎵嬪姩鏂板缓杞簱鍗�
+export function createZK(data) {
+	return http.post('/ext/wTransferExt/create', data)
+}
+// export function createZK(data: any): Promise<any> {
+//     return httpRequest({
+//         url: 'ext/wTransferExt/create',
+//         method: 'post',
+//         data
+//     })
+// }
diff --git a/minipro_standard/util/api/index.js b/minipro_standard/util/api/index.js
index c29fb8b..dfd23bc 100644
--- a/minipro_standard/util/api/index.js
+++ b/minipro_standard/util/api/index.js
@@ -1,4 +1,3 @@
-console.log('-----------');
 const http = uni.$u.http
 // 鐧诲綍
 export function coustomLogin(params) {
@@ -18,7 +17,6 @@
 // 鑿滃崟鏁版嵁
 export function getTreeList(params) {
 	return http.get('/system/menu/treeNodes', {params})
-	
 }
 
 // 閫�鍑虹櫥褰�
@@ -26,3 +24,27 @@
 	return http.get(`/wechat/logout`)
 }
 
+// 寰俊鍏紬鍙风櫥褰�
+export function wxAccountLogin(data) {
+	return http.post('/system/wxAccountLogin', data)
+}
+
+// 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
+export function getUserInfo(params) {
+	return http.get('/system/getUserInfo', {params})
+}
+
+// 鑾峰彇寰俊openId
+export function wxLogin(params) {
+	return http.get('/system/wxLogin', {params})
+}
+
+// 寰俊灏忕▼搴忕櫥褰�
+export function wxProgramLogin(params) {
+	return http.get('/system/wxProgramLogin', {params})
+}
+
+// 寰俊閫�鍑虹櫥褰�
+export function wxLoginOut(data) {
+	return http.post('/system/wxLoginOut', data)
+}
\ No newline at end of file
diff --git a/minipro_standard/util/api/materialStorage.js b/minipro_standard/util/api/materialStorage.js
new file mode 100644
index 0000000..aa85e99
--- /dev/null
+++ b/minipro_standard/util/api/materialStorage.js
@@ -0,0 +1,115 @@
+const request = uni.$u.http
+
+// 杞簱鍗曞垪琛�
+export function getTransferList (data) {
+  return request.post('/ext/wTransferExt/pageList', data)
+}
+// export function getTransferList(data: any): Promise<any> {
+//   return httpRequest({
+//     url: '/ext/wTransferExt/pageList',
+//     method: 'post',
+//     data
+//   })
+// }
+
+// 杞簱鍗曡鎯�
+export function wTransferExtDetail (id) {
+  return request.get(`/ext/wTransferExt/${id}`)
+}
+// export function wTransferExtDetail(id: any): Promise<any> {
+//     return httpRequest({
+//         url:  `/ext/wTransferExt/${id}`,
+//         method: 'get'
+//     })
+// }
+
+// 鍒嗛〉鏌ヨ搴撳瓨
+export function getwStockExtList (data) {
+  return request.post('/ext/wStockExt/pageForH5', data)
+}
+// export function getwStockExtList(data: any): Promise<any> {
+//   return httpRequest({
+//     url: '/ext/wStockExt/pageForH5',
+//     method: 'post',
+//     data
+//   })
+// }
+
+// 鍑哄叆搴撳崟鍒楄〃
+export function getBoundList (data) {
+  return request.post('/ext/wOutboundExt/listPage', data)
+}
+// export function getBoundList(data: any): Promise<any> {
+//   return httpRequest({
+//     url: '/ext/wOutboundExt/listPage',
+//     method: 'post',
+//     data
+//   })
+// }
+
+// 鎻愪氦杞簱鍗曞嚭鍏ュ簱
+export function inOutSubmit(params) {
+	return http.get('/ext/wTransferExt/wTransferForInOutUpload', { params })
+}
+// export function inOutSubmit(params: any): Promise<any> {
+//   return httpRequest({
+//     url: 'ext/wTransferExt/wTransferForInOutUpload',
+//     method: 'get',
+//     params
+//   })
+// }
+
+// 鍑哄叆搴撳垪琛ㄧ粺璁� - H5
+export function pageCount (data) {
+  return request.post('/ext/wOutboundExt/pageCount', data)
+}
+// export function pageCount(data: any): Promise<any> {
+//   return httpRequest({
+//     url: 'ext/wOutboundExt/pageCount',
+//     method: 'post',
+//     data
+//   })
+// }
+
+// 杞簱鍒楄〃缁熻 - H5
+export function ZKPageCount (data) {
+  return request.post('/ext/wTransferExt/pageCount', data)
+}
+// export function ZKPageCount(data: any): Promise<any> {
+//   return httpRequest({
+//     url: 'ext/wTransferExt/pageCount',
+//     method: 'post',
+//     data
+//   })
+// }
+
+/**
+ *
+ * @param params id 鍑哄叆搴搃d
+ * @returns
+ */
+export function getBoundDetail(params) {
+	return http.get('/ext/wOutboundExt/findById', { params })
+}
+// export function getBoundDetail(params: any): Promise<any> {
+//   return httpRequest({
+//     url: '/ext/wOutboundExt/findById',
+//     method: 'get',
+//     params
+//   })
+// }
+/**
+ * 鍙栨秷鍑哄叆搴撳崟鎹�
+ * @param params id 鍑哄叆搴搃d
+ * @returns
+ */
+export function cancelBound(params) {
+	return http.get('/ext/wOutboundExt/cancel', { params })
+}
+// export function cancelBound(params: any): Promise<any> {
+//   return httpRequest({
+//     url: '/ext/wOutboundExt/cancel',
+//     method: 'get',
+//     params
+//   })
+// }
diff --git a/minipro_standard/util/constData.js b/minipro_standard/util/constData.js
new file mode 100644
index 0000000..e247ea1
--- /dev/null
+++ b/minipro_standard/util/constData.js
@@ -0,0 +1,145 @@
+export const documentType = [
+    { name: '杞﹂棿棰嗘枡', id: 1 },
+    { name: '杞﹂棿杞簱', id: 5 },
+    { name: '澶栧崗棰嗘枡杞簱', id: 6 },
+    { name: '澶栧崗瀹屽伐杞簱', id: 7 },
+    { name: '浜у搧鍏ュ簱', id: 8 },
+    { name: '浜у搧杞簱', id: 9 },
+    { name: '璁╂鏀捐鍏ュ簱', id: 10 },
+    { name: '璁╂鏀捐杞簱', id: 11 },
+    { name: '瀹㈣繑杩斾慨棰嗘枡', id: 12 },
+    { name: '瀹㈣繑杩斾慨鍏ュ簱', id: 13 },
+    { name: '璺ㄧ粍缁囪浆搴�', id: 14 },
+    { name: '瀹㈤��杩斾慨棰嗘枡', id: 16 },
+    { name: '瀹㈤��杩斾慨鍏ュ簱', id: 17 },
+    { name: '搴熷搧鍏ュ簱', id: 30 }
+]
+
+export const orderType = [
+	{
+		name: '杞﹂棿棰嗘枡',
+		id: 1
+	},
+	{
+		name: '璁″垝棰嗘枡',
+		id: 2
+	},
+	{
+		name: '鏈哄彴澶囨枡',
+		id: 3
+	},
+	{
+		name: '瀹屽伐鍏ュ簱',
+		id: 4
+	},
+	{
+		name: '杞﹂棿杞簱',
+		id: 5
+	},
+	{
+		name: '澶栧崗棰嗘枡杞簱',
+		id: 6
+	},
+	{
+		name: '澶栧崗瀹屽伐杞簱',
+		id: 7
+	},
+	{
+		name: '浜у搧鍏ュ簱',
+		id: 8
+	},
+	{
+		name: '浜у搧杞簱',
+		id: 9
+	},
+	{
+		name: '璁╂鏀捐鍏ュ簱',
+		id: 10
+	},
+	{
+		name: '璁╂鏀捐杞簱',
+		id: 11
+	},
+	{
+		name: '瀹㈣繑杩斾慨棰嗘枡',
+		id: 12
+	},
+	{
+		name: '瀹㈣繑杩斾慨鍏ュ簱',
+		id: 13
+	},
+	{
+		name: '璺ㄧ粍缁囪浆搴�',
+		id: 14
+	},
+	{
+		name: '宸ュ簭鎶ュ簾',
+		id: 15
+	},
+	{
+		name: '瀹㈤��杩斾慨棰嗘枡',
+		id: 16
+	},
+	{
+		name: '瀹㈤��杩斾慨鍏ュ簱',
+		id: 17
+	},
+	{
+		name: '閿�鍞嚭搴�',
+		id: 18
+	},
+	{
+		name: '璁╂閿�鍞�',
+		id: 19
+	},
+	{
+		name: '宸ュ崟鎶曟枡',
+		id: 20
+	},
+	{
+		name: '浠撳簱鎶ュ簾',
+		id: 21
+	},
+	{
+		name: '瀹㈤��妫�楠岄鏂�',
+		id: 22
+	},
+	{
+		name: '瀹㈣繑妫�楠岄鏂�',
+		id: 23
+	},
+	{
+		name: '宸ュ崟浜у嚭',
+		id: 24
+	},
+	{
+		name: '閲囪喘鍏ュ簱',
+		id: 25
+	},
+	{
+		name: '瀹㈤��妫�楠屽叆搴�',
+		id: 26
+	},
+	{
+		name: '瀹㈣繑妫�楠屽叆搴�',
+		id: 27
+	},
+	{
+		name: '搴撳瓨璋冩暣',
+		id: 28
+	},
+	{
+		name: '搴熷搧鍏ュ簱',
+		id: 30
+	}
+]
+
+export const orderTyepToStr = (type) => {
+	//  <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+	for (const item of orderType) {
+		if (item.id === type) {
+			return item.name
+		}
+	}
+	return '-'
+}
\ No newline at end of file
diff --git a/minipro_standard/util/request/index.js b/minipro_standard/util/request/index.js
index 8cc78b7..9bd5596 100644
--- a/minipro_standard/util/request/index.js
+++ b/minipro_standard/util/request/index.js
@@ -1,13 +1,13 @@
 // 寮曞叆閰嶇疆
-import config from '@/common/config'
+import { baseUrl } from '@/common/config'
 // 鍒濆鍖栬姹傞厤缃�
 uni.$u.http.setConfig((defaultConfig) => {
     /* defaultConfig 涓洪粯璁ゅ叏灞�閰嶇疆 */
-    defaultConfig.baseURL = config.baseUrl /* 鏍瑰煙鍚� */
-		config.header = {
-			'content-type': 'application/x-www-form-urlencoded;charset=utf-8',
+    defaultConfig.baseURL = baseUrl /* 鏍瑰煙鍚� */
+		defaultConfig.header = {
+			'content-type': 'application/json;charset=utf-8',
 		}
-		config.dataType = 'json'
+		defaultConfig.dataType = 'json'
     return defaultConfig
 })
 
diff --git a/minipro_standard/util/request/requestInterceptors.js b/minipro_standard/util/request/requestInterceptors.js
index bc693ee..fa7a17c 100644
--- a/minipro_standard/util/request/requestInterceptors.js
+++ b/minipro_standard/util/request/requestInterceptors.js
@@ -2,20 +2,13 @@
  * 璇锋眰鎷︽埅
  * @param {Object} http
  */
-module.exports = (vm) => {
-	// console.log(vm)
+module.exports = (vm) => {
 	uni.$u.http.interceptors.request.use((config) => { // 鍙娇鐢╝sync await 鍋氬紓姝ユ搷浣�
-			// 鍒濆鍖栬姹傛嫤鎴櫒鏃讹紝浼氭墽琛屾鏂规硶锛屾鏃禿ata涓簎ndefined锛岃祴浜堥粯璁}
-			console.log('璇锋眰鎷︽埅');
-			config.data = config.data || {}
-			const token = vm.$store.state.token
-			if (token) {
-				config.header.token = token
-			} 
-			// 鍙互鍦ㄦ閫氳繃vm寮曠敤vuex涓殑鍙橀噺锛屽叿浣撳�煎湪vm.$store.state涓�
-			// console.log(vm.$store.state);
-
-			return config
-		}, (config) => // 鍙娇鐢╝sync await 鍋氬紓姝ユ搷浣�
-		Promise.reject(config))
+		if (vm.$store.state.session) {
+			config.header['Cookie'] = 'eva-auth-token=' + vm.$store.state.session
+		}
+		uni.showLoading({ title: '璇锋眰涓�' });
+		config.data = config.data || {}
+		return config
+	}, (config) => Promise.reject(config)) // 鍙娇鐢╝sync await 鍋氬紓姝ユ搷浣�
 }
diff --git a/minipro_standard/util/request/responseInterceptors.js b/minipro_standard/util/request/responseInterceptors.js
index a88ed54..16f08d8 100644
--- a/minipro_standard/util/request/responseInterceptors.js
+++ b/minipro_standard/util/request/responseInterceptors.js
@@ -4,25 +4,38 @@
  */
 module.exports = (vm) => {
 	uni.$u.http.interceptors.response.use((response) => {
-		/* 瀵瑰搷搴旀垚鍔熷仛鐐逛粈涔� 鍙娇鐢╝sync await 鍋氬紓姝ユ搷浣�*/
+		uni.hideLoading();
 		const data = response.data
-		// 鑷畾涔夊弬鏁�
-		// const custom = response.config?.custom
-		// if (data.code !== 200) { // 鏈嶅姟绔繑鍥炵殑鐘舵�佺爜涓嶇瓑浜�200锛屽垯reject()
-		// 	uni.$u.toast(data.message)
-		// 	if (data.code === 401) {
-		// 		// console.log('鏈櫥褰曘�佺櫥褰曞け鏁�');
-		// 		// 鏈櫥褰曘�佺櫥褰曞け鏁�
-		// 		uni.reLaunch({
-		// 			url: '/pages/login/login'
-		// 		})
-		// 	}
-		// 	return Promise.reject(data)
-		// }
-		// console.log(data.data);
-		return data.data || {}
+		if (response.data.code === 401) {     // 澶勭悊鐧诲綍杩囨湡
+			uni.showToast({ title: '鐧诲綍杩囨湡锛屽噯澶囪嚜鍔ㄩ噸鏂扮櫥褰�', icon: 'none', duration: 2000, mask: true });
+			setTimeout(() => {
+				uni.reLaunch({ url: '/pages/login/login' });
+			}, 2000)
+			return
+		}
+		if (response.data.code !== 200) {     // 璇锋眰鎶ラ敊
+			uni.showToast({ title: response.data.message, icon: 'none', duration: 2000 });
+		}
+		return data || {}
 	}, (response) => {
-		/*  瀵瑰搷搴旈敊璇仛鐐逛粈涔� 锛坰tatusCode !== 200锛�*/
+		uni.hideLoading();
+		let code;
+		if (error.code === "ECONNABORTED") {
+			code = 999
+		} else {
+			code = error.response.status
+		}
+		switch (code) {
+			case 404:
+				uni.showToast({ title: '璇锋眰璧勬簮涓嶅瓨鍦�', icon: 'none', duration: 2000 });
+				break;
+			case 500:
+				uni.showToast({ title: '鏈嶅姟鍣ㄨ祫婧愰敊璇�', icon: 'none', duration: 2000 });
+				break;
+			case 999:
+				uni.showToast({ title: '璇锋眰瓒呮椂', icon: 'none', duration: 2000 });
+				break;
+		}
 		return Promise.reject(response)
 	})
 }
diff --git a/minipro_standard/util/utils.js b/minipro_standard/util/utils.js
new file mode 100644
index 0000000..76809d9
--- /dev/null
+++ b/minipro_standard/util/utils.js
@@ -0,0 +1,30 @@
+/***
+ *
+ * @param time 鏃ユ湡 骞存湀鏃�
+ */
+const gsdate = (time) => {
+    let date = new Date(time)
+    let y = date.getFullYear()
+    let m = date.getMonth() + 1
+    m = m < 10 ? ('0' + m) : m
+    let d = date.getDate()
+    d = d < 10 ? ('0' + d) : d
+    return y + '-' + m + '-' + d;
+}
+
+/***
+ *
+ * @param time 鏃ユ湡 骞存湀鏃ユ椂鍒嗙
+ * @param Sign 闂撮殧
+ */
+function setTime (time, Sign) {
+    let year = time.getFullYear();
+    let month = time.getMonth() + 1 >= 10 ? time.getMonth() + 1 : `0${time.getMonth() + 1}`;
+    let day = time.getDate() >= 10 ? time.getDate() : `0${time.getDate()}`;
+    let hour = time.getHours() >= 10 ? time.getHours() : `0${time.getHours()}`;
+    let minute = time.getMinutes() >= 10 ? time.getMinutes() : `0${time.getMinutes()}`;
+    let second = time.getSeconds() >= 10 ? time.getSeconds() : `0${time.getSeconds()}`;
+    return [year, Sign, month , Sign, day, ' ', hour , ':', minute, ':', second ].join('');
+}
+
+export { gsdate, setTime }
diff --git a/platform_web/.env.development b/platform_web/.env.development
index 53c2611..797c589 100644
--- a/platform_web/.env.development
+++ b/platform_web/.env.development
@@ -16,10 +16,10 @@
 
 
 #姹熻悕鏈湴
-# VUE_APP_BASE_URL = 'http://192.168.0.35:10021/'
+VUE_APP_BASE_URL = 'http://192.168.0.35:10021/'
 
 #鐒︽澗
-VUE_APP_BASE_URL = 'http://192.168.0.36:10021/'
+#VUE_APP_BASE_URL = 'http://192.168.0.36:10021/'
 
 #鍒樼纾婃湰鍦�
 # VUE_APP_BASE_URL = 'http://192.168.0.18:10021/'
diff --git a/platform_web/src/views/system/loginLog.vue b/platform_web/src/views/system/loginLog.vue
index aff49db..bd26f42 100644
--- a/platform_web/src/views/system/loginLog.vue
+++ b/platform_web/src/views/system/loginLog.vue
@@ -2,7 +2,7 @@
   <TableLayout :permissions="['system:loginLog:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="鐧诲綍鐢ㄦ埛鍚�" prop="loginUsername">
+      <el-form-item label="鐢ㄦ埛鍚�" prop="loginUsername">
         <el-input v-model="searchForm.loginUsername" placeholder="璇疯緭鍏ョ櫥褰曠敤鎴峰悕" @keypress.enter.native="search"></el-input>
       </el-form-item>
       <!-- <el-form-item label="鐧诲綍IP" prop="ip">
@@ -10,13 +10,13 @@
       </el-form-item>
       <el-form-item label="鏈嶅姟鍣↖P" prop="serverIp">
         <el-input v-model="searchForm.serverIp" placeholder="璇疯緭鍏ユ湇鍔″櫒IP" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏄惁鐧诲綍鎴愬姛" prop="success">
+      </el-form-item>-->
+      <el-form-item label="鐘舵��" prop="success">
         <el-select v-model="searchForm.success" placeholder="璇烽�夋嫨鏄惁鐧诲綍鐘舵��" clearable @change="search">
           <el-option value="true" label="鐧诲綍鎴愬姛"/>
           <el-option value="false" label="鐧诲綍澶辫触"/>
         </el-select>
-      </el-form-item> -->
+      </el-form-item>
       <el-form-item label="鏉ユ簮" prop="orgin">
         <el-select v-model="searchForm.orgin" placeholder="璇烽�夋嫨鐧诲綍鏉ユ簮" clearable @change="search">
           <el-option value="0" label="PC鐧婚檰"/>
@@ -26,7 +26,7 @@
           <el-option value="4" label="寰俊灏忕▼搴�"/>
         </el-select>
       </el-form-item>
-      <!-- <el-form-item label="鐧诲綍鏃堕棿" prop="loginTime">
+      <el-form-item label="鏃堕棿" prop="loginTime">
         <el-date-picker
           v-model="searchDateRange"
           type="datetimerange"
@@ -36,10 +36,10 @@
           end-placeholder="缁撴潫鏃堕棿"
           @change="handleSearchTimeChange"
         ></el-date-picker>
-      </el-form-item> -->
+      </el-form-item>
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
-        <!-- <el-button :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button> -->
+        <el-button :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
       </section>
     </el-form>
@@ -62,9 +62,9 @@
         <el-table-column prop="companyUserId" label="鐢ㄦ埛id" align="center" min-width="100px"></el-table-column>
         <el-table-column prop="companyName" label="浼佷笟鍚嶇О" align="center" min-width="100px"></el-table-column>
         <el-table-column prop="loginUsername" label="鐧诲綍鐢ㄦ埛鍚�" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="companyUserName" label="鐧诲綍鐢ㄦ埛鍚�" align="center" min-width="100px">
+        <el-table-column prop="companyUserName" label="浼佷笟鐢ㄦ埛鍚嶇О" align="center" min-width="100px">
           <template slot-scope="{row}">
-            {{ row.companyUserName || row.loginUsername }}
+            {{ row.companyUserName}}
           </template>
         </el-table-column>
         <el-table-column prop="ip" label="鐧诲綍IP" align="center" min-width="120px"></el-table-column>
diff --git a/server/README.md b/server/README.md
index 6b32a18..3be8fac 100644
--- a/server/README.md
+++ b/server/README.md
@@ -1,3 +1,7 @@
 鍩虹宸ョ▼锛欵va v2.0
 瀹樼綉锛歨ttp://eva.adjustrd.com/
 鎶�鏈敮鎸丵Q缇わ細877957236
+
+
+鍚姩鍛戒护锛�
+nohup java -Xms512m -Xmx512m -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=10021 -jar /mnt/sdc/jars/dmmestest/doumeeplant.jar >/mnt/sdc/jars/dmmestest/doumeeplant.log 2>/mnt/sdc/jars/dmmestest/doumeeplanterr.log &
diff --git a/server/src/main/java/doumeemes/api/ext/CategoryExtController.java b/server/src/main/java/doumeemes/api/ext/CategoryExtController.java
index 3993e09..bfab39a 100644
--- a/server/src/main/java/doumeemes/api/ext/CategoryExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/CategoryExtController.java
@@ -63,12 +63,14 @@
 
         Category query = new Category();
         query.setDeleted(Constants.ZERO);
+        query.setCateType(category.getCateType());
         query.setRootDepartId(getLoginUser().getRootDepartment().getId());
         query.setCode(category.getCode());
         List<Category> list = categoryService.findList(query);
 
         Category query1 = new Category();
         query1.setDeleted(Constants.ZERO);
+        query1.setCateType(category.getCateType());
         query1.setRootDepartId(getLoginUser().getRootDepartment().getId());
         query1.setName(category.getName());
         List<Category> list1 = categoryService.findList(query1);
diff --git a/server/src/main/java/doumeemes/api/ext/DeviceExtController.java b/server/src/main/java/doumeemes/api/ext/DeviceExtController.java
index 9c007d1..39d5686 100644
--- a/server/src/main/java/doumeemes/api/ext/DeviceExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/DeviceExtController.java
@@ -166,6 +166,10 @@
         deviceService.updateById(find);
         if(StringUtils.isNotBlank(device.getUserIds())){
             deviceService.dealDeviceUserId(Constants.ONE,device.getUserIds(),device.getId(),getLoginUser());
+        }else {
+            UserDevice userDevice = new UserDevice();
+            userDevice.setDeviceId(device.getId());
+            userDeviceService.delete(userDevice);
         }
 
         return ApiResponse.success(null);
diff --git a/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java b/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java
index d9054cd..de8b960 100644
--- a/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java
+++ b/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java
@@ -5,6 +5,7 @@
 import doumeemes.core.model.ApiResponse;
 import doumeemes.core.model.PageData;
 import doumeemes.core.model.PageWrap;
+import doumeemes.core.utils.DateUtil;
 import doumeemes.dao.system.dto.QuerySystemLoginLogDTO;
 import doumeemes.dao.system.model.SystemLoginLog;
 import doumeemes.service.system.SystemLoginLogService;
@@ -39,6 +40,6 @@
     @ApiOperation("瀵煎嚭Excel")
     @RequiresPermissions("system:loginLog:query")
     public void export (@RequestBody PageWrap<QuerySystemLoginLogDTO> pageWrap, HttpServletResponse response) {
-        ExcelExporter.build(SystemLoginLog.class).export(systemLoginLogService.findPage(pageWrap).getRecords(), "鐧诲綍鏃ュ織", response);
+        ExcelExporter.build(SystemLoginLog.class).exportWithFirstAndEnd(systemLoginLogService.findPage(pageWrap).getRecords(), "鐧诲綍鏃ュ織_"+System.currentTimeMillis(),"鐧诲綍鏃ュ織-"+ DateUtil.getPlusTime2(DateUtil.getCurrentDate()),null, response);
     }
 }
diff --git a/server/src/main/java/doumeemes/config/mybatis/MyBatisInterceptor.java b/server/src/main/java/doumeemes/config/mybatis/MyBatisInterceptor.java
index ea10413..ef00b44 100644
--- a/server/src/main/java/doumeemes/config/mybatis/MyBatisInterceptor.java
+++ b/server/src/main/java/doumeemes/config/mybatis/MyBatisInterceptor.java
@@ -27,7 +27,6 @@
     @Signature(type= Executor.class, method = "update", args={MappedStatement.class, Object.class})
 })
 public class MyBatisInterceptor implements Interceptor {
-
     private static final String CREATE_TIME = "createTime";
 
     private static final String CREATE_USER = "createUser";
@@ -118,6 +117,10 @@
      * @date 2022/04/18 18:12
      */
     private LoginUserInfo getLoginUser () {
-        return (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        try {
+            return (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        }catch (Exception e){
+            return  null;
+        }
     }
 }
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroAuthFilter.java b/server/src/main/java/doumeemes/config/shiro/ShiroAuthFilter.java
index b9e3a44..2e5dec5 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroAuthFilter.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroAuthFilter.java
@@ -1,9 +1,10 @@
 package doumeemes.config.shiro;
 
-import doumeemes.core.model.ApiResponse;
 import com.alibaba.fastjson.JSON;
+import doumeemes.core.model.ApiResponse;
 import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
 import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Component;
 
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
@@ -12,7 +13,7 @@
 /**
  * Shiro璁よ瘉杩囨护鍣紝澶勭悊鏈璇佹儏鍐电殑鍝嶅簲
  * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
  */
 public class ShiroAuthFilter extends FormAuthenticationFilter {
 
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroCache.java b/server/src/main/java/doumeemes/config/shiro/ShiroCache.java
index e91737f..6867883 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroCache.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroCache.java
@@ -1,24 +1,28 @@
 package doumeemes.config.shiro;
 
-import doumeemes.service.proxy.CacheProxy;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.cache.Cache;
 import org.apache.shiro.cache.CacheException;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.apache.shiro.util.CollectionUtils;
 import org.springframework.context.annotation.Scope;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.SerializationException;
 import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
 
+import javax.annotation.Resource;
 import java.io.Serializable;
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Shiro缂撳瓨
  * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
  */
 @Scope(value = "prototype")
 @Slf4j
@@ -27,8 +31,8 @@
 
     private String keyPrefix = "";
 
-    @Autowired
-    private CacheProxy<Object, Serializable> cacheProxy;
+    @Resource(name="sessionRedisTemplate")
+    private RedisTemplate<Object, Serializable> redisTemplate;
 
     public ShiroCache () {
         log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
@@ -44,7 +48,7 @@
         if (key == null) {
             return null;
         }
-        return cacheProxy.get(getKey(key));
+        return redisTemplate.opsForValue().get(getKey(key));
     }
 
     @Override
@@ -52,7 +56,7 @@
         if (key == null) {
             return null;
         }
-        cacheProxy.put(getKey(key), value);
+        redisTemplate.opsForValue().set(getKey(key), value);
         return value;
     }
 
@@ -60,14 +64,14 @@
         if (key == null) {
             return null;
         }
-        cacheProxy.put(getKey(key), value, timeout);
+        redisTemplate.opsForValue().set(getKey(key), value, timeout, TimeUnit.SECONDS);
         return value;
     }
 
     @Override
     public void clear() throws CacheException {
         Set<Object> keys = this.keys();
-        cacheProxy.remove(keys);
+        redisTemplate.delete(keys);
     }
 
     @Override
@@ -77,7 +81,7 @@
 
     @Override
     public Set<Object> keys() {
-        Set<Object> keys = cacheProxy.keys(keyPrefix + "*");
+        Set<Object> keys = redisTemplate.keys(keyPrefix + "*");
         if (CollectionUtils.isEmpty(keys)) {
             return Collections.emptySet();
         }
@@ -92,7 +96,7 @@
             return values;
         }
         for (Object k : keys) {
-            values.add(cacheProxy.get(k));
+            values.add(redisTemplate.opsForValue().get(k));
         }
         return values;
     }
@@ -103,11 +107,53 @@
             return null;
         }
         Serializable value = this.get(getKey(key));
-        cacheProxy.remove(getKey(key));
+        redisTemplate.delete(getKey(key));
         return value;
     }
 
     private Object getKey (Object key) {
+        if (key instanceof PrincipalCollection) {
+            return this.keyPrefix + getRedisKeyFromPrincipalIdField((PrincipalCollection)key);
+        }
         return (key instanceof String ? (this.keyPrefix + key) : key);
     }
+
+    /**
+     * 鑾峰彇redis cache key
+     */
+    private String getRedisKeyFromPrincipalIdField(PrincipalCollection key) {
+        Object principalObject = key.getPrimaryPrincipal();
+        if (principalObject instanceof String) {
+            return principalObject.toString();
+        } else {
+            Method pincipalIdGetter = this.getPrincipalIdGetter(principalObject);
+            return this.getIdObj(principalObject, pincipalIdGetter);
+        }
+    }
+
+    private Method getPrincipalIdGetter(Object principalObject) {
+        Method pincipalIdGetter;
+        String principalIdMethodName = this.getPrincipalIdMethodName();
+
+        try {
+            pincipalIdGetter = principalObject.getClass().getMethod(principalIdMethodName);
+            return pincipalIdGetter;
+        } catch (NoSuchMethodException e) {
+            throw new SerializationException(e.getMessage(), e);
+        }
+    }
+
+    private String getIdObj(Object principalObject, Method pincipalIdGetter) {
+        try {
+            Object idObj = pincipalIdGetter.invoke(principalObject);
+            String redisKey = idObj.toString();
+            return redisKey;
+        } catch (Exception e) {
+            throw new SerializationException(e.getMessage(), e);
+        }
+    }
+
+    private String getPrincipalIdMethodName() {
+        return "getId";
+    }
 }
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroCacheManager.java b/server/src/main/java/doumeemes/config/shiro/ShiroCacheManager.java
index cb3ffe7..900c473 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroCacheManager.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroCacheManager.java
@@ -14,7 +14,7 @@
 /**
  * 鑷畾涔塖hiro CacheManager
  * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
  */
 @Slf4j
 @Component
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java b/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
index 526121a..3318795 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
@@ -1,26 +1,29 @@
 package doumeemes.config.shiro;
 
+import doumeemes.task.ScheduleTool;
 import org.apache.shiro.mgt.SecurityManager;
 import org.apache.shiro.session.mgt.SessionManager;
 import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
 import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
-import org.apache.shiro.util.ThreadContext;
 import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
 import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
 
 import javax.servlet.Filter;
-import java.util.HashMap;
+import java.io.Serializable;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
  * Shiro閰嶇疆
  * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
  */
 @Configuration
 public class ShiroConfig {
@@ -40,6 +43,20 @@
     @Autowired
     private ShiroRealm shiroRealm;
 
+    @Bean("sessionRedisTemplate")
+    public RedisTemplate<Object, Serializable> sessionRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
+        RedisTemplate<Object, Serializable> redisTemplate = new RedisTemplate<>();
+        redisTemplate.setConnectionFactory(redisConnectionFactory);
+        // 榛樿搴忓垪鍖栨柟寮�
+        redisTemplate.setDefaultSerializer(new StringRedisSerializer());
+        // 鍊煎簭鍒楀寲鏂瑰紡
+        ShiroSessionSerializer serializer = new ShiroSessionSerializer();
+        redisTemplate.setValueSerializer(serializer);
+        redisTemplate.setHashValueSerializer(serializer);
+        redisTemplate.afterPropertiesSet();
+        return redisTemplate;
+    }
+
     @Bean
     public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
         DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
@@ -51,6 +68,9 @@
     public SessionManager sessionManager() {
         ShiroSessionManager sessionManager = new ShiroSessionManager();
         sessionManager.setSessionDAO(shiroSessionDAO);
+        sessionManager.setGlobalSessionTimeout(sessionExpireTime*1000);
+        // 鍒犻櫎澶辨晥鐨剆ession
+        sessionManager.setDeleteInvalidSessions(true);
         return sessionManager;
     }
 
@@ -60,7 +80,6 @@
         securityManager.setRealm(shiroRealm);
         securityManager.setSessionManager(this.sessionManager());
         securityManager.setCacheManager(shiroCacheManager);
-        ThreadContext.bind(securityManager);
         return securityManager;
     }
 
@@ -70,26 +89,17 @@
         shiroFilterFactoryBean.setSecurityManager(securityManager);
         Map<String, String> map = new LinkedHashMap<>();
         // 璺緞鎷︽埅閰嶇疆
+        map.put("/web/user/login", "anon");
+        map.put("/public/uploadRichText", "anon");
         map.put("/system/login", "anon");
-        map.put("/system/wxLogin", "anon");
-        map.put("/system/wxProgramLogin", "anon");
-        map.put("/system/wxAccountLogin", "anon");
-        map.put("/system/initCompany", "anon");
         map.put("/system/logout", "anon");
         map.put("/common/captcha", "anon");
-        map.put("/statistics/**", "anon");
-        map.put("/dingding/push", "anon");
-//        map.put("/ext/workorderExt/freshStatistics", "anon");
-        map.put("/dingding/jsapiTicket", "anon");
-        map.put("/dingding/ddLogin", "anon");
-        map.put("/dingding/getDingdingCorpId", "anon");
-        map.put("/lingyang/login", "anon");
-        map.put("/lingyang/loginDemo", "anon");
-        map.put("/edgp/**", "anon");
+        //鏀捐 scratch 鎺ュ彛
+        map.put("/web/scratch/**", "anon");
+
         // - 鏀捐swagger
         map.put("/doc.html", "anon");
         map.put("/webjars/**", "anon");
-        map.put("/template/**", "anon");
         map.put("/swagger-resources/**", "anon");
         map.put("/v2/api-docs/**", "anon");
         // - 鍏朵粬鎺ュ彛缁熶竴鎷︽埅
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java b/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java
index 8d01643..a9f8563 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java
@@ -1,5 +1,6 @@
 package doumeemes.config.shiro;
 
+import doumeemes.config.shiro.ShiroToken;
 import doumeemes.core.utils.Utils;
 import doumeemes.dao.system.model.SystemUser;
 import doumeemes.service.system.SystemUserService;
@@ -13,11 +14,10 @@
 /**
  * Shiro瀵嗙爜姣斿澶勭悊
  * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
  */
 @Component
 public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
-
     @Lazy
     @Autowired
     private SystemUserService systemUserService;
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java b/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
index c405ec9..6c0da35 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
@@ -4,9 +4,6 @@
 import doumeemes.core.exception.BusinessException;
 import doumeemes.core.model.LoginUserInfo;
 import doumeemes.core.utils.Constants;
-import doumeemes.dao.business.model.Company;
-import doumeemes.dao.business.model.CompanyUser;
-import doumeemes.dao.business.model.Department;
 import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO;
 import doumeemes.dao.ext.vo.CompanyExtListVO;
 import doumeemes.dao.ext.vo.CompanyUserExtListVO;
@@ -15,7 +12,6 @@
 import doumeemes.dao.system.model.SystemPermission;
 import doumeemes.dao.system.model.SystemRole;
 import doumeemes.dao.system.model.SystemUser;
-import doumeemes.service.business.CompanyUserService;
 import doumeemes.service.ext.CompanyExtService;
 import doumeemes.service.ext.CompanyUserExtService;
 import doumeemes.service.ext.DepartmentExtService;
@@ -37,12 +33,11 @@
 
 import java.util.Date;
 import java.util.List;
-import java.util.Objects;
 
 /**
  * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
  * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2022/03/15 09:54
  */
 @Component
 public class ShiroRealm extends AuthorizingRealm {
@@ -52,7 +47,7 @@
     private DepartmentExtService departmentExtService;
     @Lazy
     @Autowired
-    private SystemDataPermissionService  systemDataPermissionService;
+    private SystemDataPermissionService systemDataPermissionService;
     @Lazy
     @Autowired
     private CompanyExtService companyExtService;
@@ -70,19 +65,11 @@
     @Lazy
     @Autowired
     private SystemPermissionService systemPermissionService;
-    /**
-     * 閲嶅啓supports鏂规硶锛屼娇 Shiro 鑳藉璇嗗埆鑷畾涔夌殑 Token
-     * @param token
-     * @return
-     */
-    @Override
-    public boolean supports(AuthenticationToken token) {
-        return token instanceof ShiroToken;
-    }
+
     /**
      * 鏉冮檺澶勭悊
      * @author Eva.Caesar Liu
-     * @date 2022/04/18 18:12
+     * @date 2022/03/15 09:54
      */
     @Override
     protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
@@ -97,10 +84,10 @@
     /**
      * 璁よ瘉澶勭悊
      * @author Eva.Caesar Liu
-     * @date 2022/04/18 18:12
+     * @date 2022/03/15 09:54
      */
     @Override
-    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException,BusinessException {
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
         // 鑾峰彇鐢ㄦ埛鍚�
         ShiroToken authenticationToken =(ShiroToken) token;
         String username = authenticationToken.getPrincipal().toString();
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroRedisSessionDAO.java b/server/src/main/java/doumeemes/config/shiro/ShiroRedisSessionDAO.java
new file mode 100644
index 0000000..5fb2119
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroRedisSessionDAO.java
@@ -0,0 +1,139 @@
+package doumeemes.config.shiro;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.SerializationUtils;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.UnknownSessionException;
+import org.apache.shiro.session.mgt.SimpleSession;
+import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.concurrent.TimeUnit;
+
+//@Component
+@Slf4j
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class ShiroRedisSessionDAO  implements SessionDAO {
+// Session瓒呮椂鏃堕棿锛屽崟浣嶄负姣
+private static final String KEY_PREFIX = "shiro:session:";
+    private long expireTime = 120000;
+    @Autowired
+    private ShiroTokenManager shiroTokenManager;
+    @Autowired
+    private RedisTemplate redisTemplate;// Redis鎿嶄綔绫伙紝瀵硅繖涓娇鐢ㄤ笉鐔熸倝鐨勶紝鍙互鍙傝�冨墠闈㈢殑鍗氬
+
+    public ShiroRedisSessionDAO() {
+
+        super();
+
+    }
+
+    public ShiroRedisSessionDAO(long expireTime, StringRedisTemplate redisTemplate) {
+
+        super();
+
+        this.expireTime = expireTime;
+
+        this.redisTemplate = redisTemplate;
+
+    }
+
+    @Override // 鏇存柊session
+
+    public void update(Session session) throws UnknownSessionException {
+
+        System.out.println("===============update================");
+
+        if (session == null || session.getId() == null) {
+            return;
+        }
+        session.setTimeout(expireTime);
+        byte[] bytes = SerializationUtils.serialize((Serializable) session);
+        redisTemplate.opsForValue().set(KEY_PREFIX+session.getId(), bytes, expireTime, TimeUnit.MILLISECONDS);
+    }
+
+    @Override // 鍒犻櫎session
+
+    public void delete(Session session) {
+
+        System.out.println("===============delete================");
+
+        if (null == session) {
+
+            return;
+
+        }
+
+        redisTemplate.opsForValue().getOperations().delete(KEY_PREFIX+session.getId());
+
+    }
+
+    @Override// 鑾峰彇娲昏穬鐨剆ession锛屽彲浠ョ敤鏉ョ粺璁″湪绾夸汉鏁帮紝濡傛灉瑕佸疄鐜拌繖涓姛鑳斤紝鍙互鍦ㄥ皢session鍔犲叆redis鏃舵寚瀹氫竴涓猻ession鍓嶇紑锛岀粺璁$殑鏃跺�欏垯浣跨敤keys("session-prefix*")鐨勬柟寮忔潵妯$硦鏌ユ壘redis涓墍鏈夌殑session闆嗗悎
+    public Collection getActiveSessions() {
+
+        System.out.println("==============getActiveSessions=================");
+
+        return redisTemplate.keys("*");
+
+    }
+
+    @Override
+    public Serializable create(Session session) {
+
+        System.out.println("===============doCreate================");
+
+        if (session == null) {
+            log.error("session is null");
+            throw new UnknownSessionException("session is null");
+        }
+        Serializable sessionId = shiroTokenManager.build();
+        ((SimpleSession)session).setId(sessionId);
+        byte[] bytes = SerializationUtils.serialize((Serializable) session);
+        redisTemplate.opsForValue().set(session.getId(), bytes, expireTime, TimeUnit.MILLISECONDS);
+        return sessionId;
+
+    }
+    public Session readSession(Serializable sessionId) throws UnknownSessionException{
+        if (sessionId == null) {
+            log.warn("session id is null");
+            return null;
+        }
+        if (sessionId instanceof String) {
+            // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
+            shiroTokenManager.check((String) sessionId);
+        }
+        log.debug("read session from cache");
+
+        SimpleSession simpleSession = (SimpleSession) SerializationUtils.deserialize((byte[])redisTemplate.opsForValue().get(KEY_PREFIX+sessionId));
+       return simpleSession;
+
+    }
+
+    public long getExpireTime() {
+
+        return expireTime;
+
+    }
+
+    public void setExpireTime(long expireTime) {
+
+        this.expireTime = expireTime;
+
+    }
+
+    public RedisTemplate getRedisTemplate() {
+
+        return redisTemplate;
+
+    }
+
+    public void setRedisTemplate(RedisTemplate redisTemplate) {
+
+        this.redisTemplate = redisTemplate;
+
+    }
+}
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroSessionDAO.java b/server/src/main/java/doumeemes/config/shiro/ShiroSessionDAO.java
index 128383d..3c9ceba 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroSessionDAO.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroSessionDAO.java
@@ -10,12 +10,15 @@
 import org.springframework.stereotype.Component;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
 
 /**
  * 鑷畾涔塖hiro SessionDAO锛屽皢浼氳瘽淇℃伅瀛樺叆缂撳瓨涓�
  * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
  */
 @Data
 @Slf4j
@@ -27,7 +30,7 @@
     @Autowired
     private ShiroCache shiroCache;
 
-    private int expireTime = 1800;
+    private int expireTime = 60 * 60 * 24;
 
     @Autowired
     private ShiroTokenManager shiroTokenManager;
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroSessionManager.java b/server/src/main/java/doumeemes/config/shiro/ShiroSessionManager.java
index 115403a..cfc4c75 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroSessionManager.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroSessionManager.java
@@ -19,7 +19,7 @@
 /**
  * 鑷畾涔変細璇濈鐞嗗櫒
  * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
  */
 @Slf4j
 public class ShiroSessionManager extends DefaultSessionManager implements WebSessionManager {
@@ -65,7 +65,6 @@
         }
         return sessionId;
     }
-
     @Override
     public boolean isServletContainerSessions() {
         return false;
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroSessionSerializer.java b/server/src/main/java/doumeemes/config/shiro/ShiroSessionSerializer.java
new file mode 100644
index 0000000..9a21d79
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroSessionSerializer.java
@@ -0,0 +1,36 @@
+package doumeemes.config.shiro;
+
+import org.apache.commons.lang3.SerializationUtils;
+import org.apache.shiro.codec.Base64;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.SerializationException;
+
+import java.io.Serializable;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * Session搴忓垪鍖�
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+public class ShiroSessionSerializer implements RedisSerializer<Serializable> {
+
+    @Override
+    public byte[] serialize(Serializable obj) throws SerializationException {
+        if (obj == null) {
+            return new byte[0];
+        }
+        String sessionBase64 = Base64.encodeToString(SerializationUtils.serialize(obj));
+        return sessionBase64.getBytes(StandardCharsets.UTF_8);
+    }
+
+    @Override
+    public Serializable deserialize(byte[] bytes) throws SerializationException {
+        if (bytes == null || bytes.length == 0) {
+            return null;
+        }
+        String sessionString = new String(bytes, StandardCharsets.UTF_8);
+        byte[] sessionBytes = Base64.decode(sessionString);
+        return SerializationUtils.deserialize(sessionBytes);
+    }
+}
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroToken.java b/server/src/main/java/doumeemes/config/shiro/ShiroToken.java
index b0fa87c..ff90ee0 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroToken.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroToken.java
@@ -1,27 +1,7 @@
 package doumeemes.config.shiro;
 
-import doumeemes.core.model.LoginUserInfo;
-import doumeemes.core.utils.Constants;
-import doumeemes.dao.business.model.Department;
-import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO;
-import doumeemes.dao.ext.vo.CompanyUserExtListVO;
-import doumeemes.dao.system.model.SystemPermission;
-import doumeemes.dao.system.model.SystemRole;
-import doumeemes.dao.system.model.SystemUser;
-import doumeemes.service.ext.CompanyUserExtService;
-import doumeemes.service.system.SystemPermissionService;
-import doumeemes.service.system.SystemRoleService;
-import doumeemes.service.system.SystemUserService;
-import org.apache.shiro.authc.*;
-import org.apache.shiro.authz.AuthorizationInfo;
-import org.apache.shiro.authz.SimpleAuthorizationInfo;
-import org.apache.shiro.realm.AuthorizingRealm;
-import org.apache.shiro.subject.PrincipalCollection;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
+import org.apache.shiro.authc.UsernamePasswordToken;
 import org.springframework.stereotype.Component;
-
-import java.util.List;
 
 /**
  * 鑷畾涔塗oken 锛屽鐞嗚璇佸拰鏉冮檺
@@ -40,7 +20,7 @@
 
     public ShiroToken() {
     }
-    public  ShiroToken(Integer companyId,String username, String password,boolean isDdLogin,boolean isWxLogin) {
+    public ShiroToken(Integer companyId, String username, String password, boolean isDdLogin, boolean isWxLogin) {
         super(username,  password, false, (String)null);
         this.companyId = companyId;
         this.isDdLogin = isDdLogin;
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroTokenManager.java b/server/src/main/java/doumeemes/config/shiro/ShiroTokenManager.java
index 2b644dc..53c6020 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroTokenManager.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroTokenManager.java
@@ -8,7 +8,7 @@
 /**
  * 榛樿Token绠$悊鍣�
  * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
  */
 @Component
 public class ShiroTokenManager {
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroAuthFilter.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroAuthFilter.java
new file mode 100644
index 0000000..f6d86bd
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroAuthFilter.java
@@ -0,0 +1,30 @@
+package doumeemes.config.shiroMemory;
+
+import doumeemes.core.model.ApiResponse;
+import com.alibaba.fastjson.JSON;
+import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
+import org.springframework.http.HttpStatus;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Shiro璁よ瘉杩囨护鍣紝澶勭悊鏈璇佹儏鍐电殑鍝嶅簲
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+public class ShiroAuthFilter extends FormAuthenticationFilter {
+
+    public ShiroAuthFilter() {
+        super();
+    }
+
+    @Override
+    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
+        HttpServletResponse servletResponse = (HttpServletResponse) response;
+        servletResponse.setHeader("content-type", "application/json;charset=UTF-8");
+        servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "鏈櫥褰曟垨鐧诲綍淇℃伅宸茶繃鏈�")));
+        return Boolean.FALSE;
+    }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroCache.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCache.java
new file mode 100644
index 0000000..d42c75e
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCache.java
@@ -0,0 +1,111 @@
+package doumeemes.config.shiroMemory;
+
+import doumeemes.service.proxy.CacheProxy;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.cache.Cache;
+import org.apache.shiro.cache.CacheException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * Shiro缂撳瓨
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Scope(value = "prototype")
+@Slf4j
+//@Component
+public class ShiroCache implements Cache<Object, Serializable> {
+
+    private String keyPrefix = "";
+
+    @Autowired
+    private CacheProxy<Object, Serializable> cacheProxy;
+
+    public ShiroCache () {
+        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
+    }
+
+    public ShiroCache(String keyPrefix) {
+        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
+        this.keyPrefix = keyPrefix;
+    }
+
+    @Override
+    public Serializable get(Object key) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        return cacheProxy.get(getKey(key));
+    }
+
+    @Override
+    public Serializable put(Object key, Serializable value) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        cacheProxy.put(getKey(key), value);
+        return value;
+    }
+
+    public Serializable put(Object key, Serializable value, int timeout) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        cacheProxy.put(getKey(key), value, timeout);
+        return value;
+    }
+
+    @Override
+    public void clear() throws CacheException {
+        Set<Object> keys = this.keys();
+        cacheProxy.remove(keys);
+    }
+
+    @Override
+    public int size() {
+        return this.keys().size();
+    }
+
+    @Override
+    public Set<Object> keys() {
+        Set<Object> keys = cacheProxy.keys(keyPrefix + "*");
+        if (CollectionUtils.isEmpty(keys)) {
+            return Collections.emptySet();
+        }
+        return keys;
+    }
+
+    @Override
+    public Collection<Serializable> values() {
+        Collection<Serializable> values = new ArrayList<>();
+        Set<Object> keys = this.keys();
+        if (CollectionUtils.isEmpty(keys)) {
+            return values;
+        }
+        for (Object k : keys) {
+            values.add(cacheProxy.get(k));
+        }
+        return values;
+    }
+
+    @Override
+    public Serializable remove(Object key) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        Serializable value = this.get(getKey(key));
+        cacheProxy.remove(getKey(key));
+        return value;
+    }
+
+    private Object getKey (Object key) {
+        return (key instanceof String ? (this.keyPrefix + key) : key);
+    }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroCacheManager.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCacheManager.java
new file mode 100644
index 0000000..2f4f3e8
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCacheManager.java
@@ -0,0 +1,43 @@
+package doumeemes.config.shiroMemory;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.cache.Cache;
+import org.apache.shiro.cache.CacheException;
+import org.apache.shiro.cache.CacheManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * 鑷畾涔塖hiro CacheManager
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+@Slf4j
+//@Component
+public class ShiroCacheManager implements CacheManager {
+
+    private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap();
+
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public <K, V> Cache<K, V> getCache(String name) throws CacheException {
+        log.debug("get cache, name=" + name);
+        Cache cache = this.caches.get(name);
+        if (cache == null) {
+            cache = applicationContext.getBean(ShiroCache.class, "shiro:cache:");
+            this.caches.put(name, cache);
+        }
+        return cache;
+    }
+
+    @Autowired
+    public void setApplicationContext (ApplicationContext applicationContext) {
+        if (ShiroCacheManager.applicationContext == null) {
+            ShiroCacheManager.applicationContext = applicationContext;
+        }
+    }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroConfig.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroConfig.java
new file mode 100644
index 0000000..767cfdb
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroConfig.java
@@ -0,0 +1,121 @@
+package doumeemes.config.shiroMemory;
+
+import org.apache.shiro.mgt.SecurityManager;
+import org.apache.shiro.session.mgt.SessionManager;
+import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
+import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
+import org.apache.shiro.util.ThreadContext;
+import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
+import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+
+import javax.servlet.Filter;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Shiro閰嶇疆
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Configuration
+public class ShiroConfig {
+
+    @Value("${cache.session.expire}")
+    private int sessionExpireTime;
+
+    @Autowired
+    private ShiroCredentialsMatcher shiroCredentialsMatcher;
+
+    @Autowired
+    private ShiroSessionDAO shiroSessionDAO;
+
+    @Autowired
+    private ShiroCacheManager shiroCacheManager;
+
+    @Autowired
+    private ShiroRealm shiroRealm;
+
+    @Bean
+    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
+        DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
+        autoProxyCreator.setProxyTargetClass(true);
+        return autoProxyCreator;
+    }
+
+    @Bean
+    public SessionManager sessionManager() {
+        ShiroSessionManager sessionManager = new ShiroSessionManager();
+        sessionManager.setSessionDAO(shiroSessionDAO);
+        return sessionManager;
+    }
+
+    @Bean
+    public SecurityManager securityManager() {
+        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
+        securityManager.setRealm(shiroRealm);
+        securityManager.setSessionManager(this.sessionManager());
+        securityManager.setCacheManager(shiroCacheManager);
+        ThreadContext.bind(securityManager);
+        return securityManager;
+    }
+
+    @Bean
+    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
+        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
+        shiroFilterFactoryBean.setSecurityManager(securityManager);
+        Map<String, String> map = new LinkedHashMap<>();
+        // 璺緞鎷︽埅閰嶇疆
+        map.put("/system/login", "anon");
+        map.put("/system/wxLogin", "anon");
+        map.put("/system/wxProgramLogin", "anon");
+        map.put("/system/wxAccountLogin", "anon");
+        map.put("/system/initCompany", "anon");
+        map.put("/system/logout", "anon");
+        map.put("/common/captcha", "anon");
+        map.put("/statistics/**", "anon");
+        map.put("/dingding/push", "anon");
+//        map.put("/ext/workorderExt/freshStatistics", "anon");
+        map.put("/dingding/jsapiTicket", "anon");
+        map.put("/dingding/ddLogin", "anon");
+        map.put("/dingding/getDingdingCorpId", "anon");
+        map.put("/lingyang/login", "anon");
+        map.put("/lingyang/loginDemo", "anon");
+        map.put("/edgp/**", "anon");
+        // - 鏀捐swagger
+        map.put("/doc.html", "anon");
+        map.put("/webjars/**", "anon");
+        map.put("/template/**", "anon");
+        map.put("/swagger-resources/**", "anon");
+        map.put("/v2/api-docs/**", "anon");
+        // - 鍏朵粬鎺ュ彛缁熶竴鎷︽埅
+        map.put("/**", "authc");
+        shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
+        // 娣诲姞璁よ瘉杩囨护鍣�
+        Map<String, Filter> filters = new LinkedHashMap<>();
+        filters.put("authc", new ShiroAuthFilter());
+        shiroFilterFactoryBean.setFilters(filters);
+        return shiroFilterFactoryBean;
+    }
+
+    @Bean
+    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
+        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
+        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
+        return authorizationAttributeSourceAdvisor;
+    }
+
+    @Bean
+    public ShiroSessionDAO getShiroSessionDAO () {
+        shiroSessionDAO.setExpireTime(sessionExpireTime);
+        return shiroSessionDAO;
+    }
+
+    @Bean
+    public ShiroRealm getShiroRealm () {
+        shiroRealm.setCredentialsMatcher(shiroCredentialsMatcher);
+        return shiroRealm;
+    }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroCredentialsMatcher.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCredentialsMatcher.java
new file mode 100644
index 0000000..3ee2b0e
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCredentialsMatcher.java
@@ -0,0 +1,45 @@
+package doumeemes.config.shiroMemory;
+
+import doumeemes.core.utils.Utils;
+import doumeemes.dao.system.model.SystemUser;
+import doumeemes.service.system.SystemUserService;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+
+/**
+ * Shiro瀵嗙爜姣斿澶勭悊
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Component
+public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
+
+    @Lazy
+    @Autowired
+    private SystemUserService systemUserService;
+
+    @Override
+    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
+        ShiroToken usernamePasswordToken = (ShiroToken) token;
+        SystemUser queryUserDto = new SystemUser();
+        queryUserDto.setUsername(usernamePasswordToken.getUsername());
+        queryUserDto.setDeleted(Boolean.FALSE);
+        SystemUser systemUser = systemUserService.findOne(queryUserDto);
+        if (systemUser == null) {
+            return Boolean.FALSE;
+        }
+        if(usernamePasswordToken.getDdLogin()){
+            return Boolean.TRUE;
+        }
+        if(usernamePasswordToken.getWxLogin()){
+            return Boolean.TRUE;
+        }
+        // 鍔犲瘑瀵嗙爜
+        String pwd = Utils.Secure.encryptPassword(new String(usernamePasswordToken.getPassword()), systemUser.getSalt());
+        // 姣旇緝瀵嗙爜
+        return this.equals(pwd, systemUser.getPassword());
+    }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroRealm.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroRealm.java
new file mode 100644
index 0000000..a56eb80
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroRealm.java
@@ -0,0 +1,172 @@
+package doumeemes.config.shiroMemory;
+
+import doumeemes.core.constants.ResponseStatus;
+import doumeemes.core.exception.BusinessException;
+import doumeemes.core.model.LoginUserInfo;
+import doumeemes.core.utils.Constants;
+import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO;
+import doumeemes.dao.ext.vo.CompanyExtListVO;
+import doumeemes.dao.ext.vo.CompanyUserExtListVO;
+import doumeemes.dao.ext.vo.DepartmentExtListVO;
+import doumeemes.dao.system.model.SystemDataPermission;
+import doumeemes.dao.system.model.SystemPermission;
+import doumeemes.dao.system.model.SystemRole;
+import doumeemes.dao.system.model.SystemUser;
+import doumeemes.service.ext.CompanyExtService;
+import doumeemes.service.ext.CompanyUserExtService;
+import doumeemes.service.ext.DepartmentExtService;
+import doumeemes.service.system.SystemDataPermissionService;
+import doumeemes.service.system.SystemPermissionService;
+import doumeemes.service.system.SystemRoleService;
+import doumeemes.service.system.SystemUserService;
+import org.apache.shiro.authc.AuthenticationException;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.SimpleAuthenticationInfo;
+import org.apache.shiro.authz.AuthorizationInfo;
+import org.apache.shiro.authz.SimpleAuthorizationInfo;
+import org.apache.shiro.realm.AuthorizingRealm;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Component
+public class ShiroRealm extends AuthorizingRealm {
+
+    @Lazy
+    @Autowired
+    private DepartmentExtService departmentExtService;
+    @Lazy
+    @Autowired
+    private SystemDataPermissionService  systemDataPermissionService;
+    @Lazy
+    @Autowired
+    private CompanyExtService companyExtService;
+    @Lazy
+    @Autowired
+    private SystemUserService systemUserService;
+    @Lazy
+    @Autowired
+    private CompanyUserExtService companyUserExtService;
+
+    @Lazy
+    @Autowired
+    private SystemRoleService systemRoleService;
+
+    @Lazy
+    @Autowired
+    private SystemPermissionService systemPermissionService;
+    /**
+     * 閲嶅啓supports鏂规硶锛屼娇 Shiro 鑳藉璇嗗埆鑷畾涔夌殑 Token
+     * @param token
+     * @return
+     */
+    @Override
+    public boolean supports(AuthenticationToken token) {
+        return token instanceof ShiroToken;
+    }
+    /**
+     * 鏉冮檺澶勭悊
+     * @author Eva.Caesar Liu
+     * @date 2022/04/18 18:12
+     */
+    @Override
+    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
+        LoginUserInfo loginUserInfo = (LoginUserInfo)principalCollection.getPrimaryPrincipal();
+        // 璁剧疆鐢ㄦ埛瑙掕壊鍜屾潈闄�
+        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
+        authorizationInfo.addRoles(loginUserInfo.getRoles());
+        authorizationInfo.addStringPermissions(loginUserInfo.getPermissions());
+        return authorizationInfo;
+    }
+
+    /**
+     * 璁よ瘉澶勭悊
+     * @author Eva.Caesar Liu
+     * @date 2022/04/18 18:12
+     */
+    @Override
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException,BusinessException {
+        // 鑾峰彇鐢ㄦ埛鍚�
+        ShiroToken authenticationToken =(ShiroToken) token;
+        String username = authenticationToken.getPrincipal().toString();
+        boolean isDdLogin = authenticationToken.getDdLogin();
+        // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
+        SystemUser queryDto = new SystemUser();
+        queryDto.setUsername(username);
+        queryDto.setDeleted(Boolean.FALSE);
+        SystemUser user = systemUserService.findOne(queryDto);
+        if (user == null) {
+            return null;
+        }
+        SystemRole role = new SystemRole();
+        SystemPermission per = new SystemPermission();
+        DepartmentExtListVO rootDepart = null,comDepart=null, depart = null;
+        List<Integer> dpList = null;
+        CompanyExtListVO com = null;
+        CompanyUserExtListVO cu =null;
+        if(Constants.equalsInteger(user.getType(),Constants.PlatType.admin)){
+            //濡傛灉鏄钩鍙扮敤鎴�
+            role.setType(Constants.ROLETYPE.plat);
+            per.setType(Constants.PlatType.admin);
+        }else{
+            if(authenticationToken.getCompanyId() == null){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ヨ处鎴峰垹闄わ紒");
+            }
+            com = companyExtService.getModelById(authenticationToken.getCompanyId());
+            if(com == null || Constants.equalsInteger( com.getDeleted(),Constants.ONE)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヨ处鎴峰垹闄わ紒璇疯仈绯荤鐞嗗憳");
+            }
+            if(Constants.equalsInteger( com.getStatus(),Constants.ZERO) ){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氬凡绂佺敤锛�");
+            }
+            if(com.getOepnValidDate() != null && com.getOepnValidDate().before(new Date())){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氬凡杩囦娇鐢ㄦ湁鏁堟湡锛�");
+            }
+            //濡傛灉鏄紒涓氱敤鎴�
+            QueryCompanyUserExtDTO c =new QueryCompanyUserExtDTO();
+            c.setUserId(user.getId());
+            c.setDeleted(Constants.ZERO);
+            c.setCompanyId(authenticationToken.getCompanyId());
+            cu = companyUserExtService.selectOne(c);
+            if(cu == null){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴蜂笉瀛樺湪锛�");
+            }
+            if(Constants.equalsInteger(cu.getStatus(),Constants.ONE)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴峰凡绂佺敤锛�");
+            }
+            rootDepart = departmentExtService.getModelById(c.getCompanyId(),cu.getRootDepartId());
+            comDepart = departmentExtService.getModelById(c.getCompanyId(),cu.getComDepartId());
+            depart = departmentExtService.getModelById(c.getCompanyId(),cu.getDepartmentId());
+            if(rootDepart == null || comDepart == null || depart==null){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴疯处鎴峰紓甯革紒");
+            }
+            role.setCompanyId(authenticationToken.getCompanyId());
+            role.setType(Constants.ROLETYPE.com);
+            per.setType(Constants.PlatType.company);
+            per.setRoleType(Constants.ROLETYPE.com);
+            per.setCompanyId(authenticationToken.getCompanyId());
+            SystemRole rt = new SystemRole();
+            rt.setType(Constants.ROLETYPE.com);
+            rt.setCompanyId(c.getCompanyId());
+            //鏁版嵁閮ㄩ棬鏉冮檺闆嗗悎
+            dpList =systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user,depart);
+
+        }
+        // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
+        List<SystemRole> roles = systemRoleService.findByUserModel(user.getId(),role);
+        List<SystemPermission> permissions = systemPermissionService.findByUserModel(user.getId(),per);
+        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,com,rootDepart,comDepart,depart,dpList,cu);
+        // 楠岃瘉鐢ㄦ埛
+        return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
+    }
+
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionDAO.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionDAO.java
new file mode 100644
index 0000000..1049556
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionDAO.java
@@ -0,0 +1,108 @@
+package doumeemes.config.shiroMemory;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.UnknownSessionException;
+import org.apache.shiro.session.mgt.SimpleSession;
+import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.io.Serializable;
+import java.util.*;
+
+/**
+ * 鑷畾涔塖hiro SessionDAO锛屽皢浼氳瘽淇℃伅瀛樺叆缂撳瓨涓�
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Data
+@Slf4j
+//@Component
+public class ShiroSessionDAO implements SessionDAO {
+
+    private static final String KEY_PREFIX = "shiro:session:";
+
+    @Autowired
+    private ShiroCache shiroCache;
+
+    private int expireTime = 1800;
+
+    @Autowired
+    private ShiroTokenManager shiroTokenManager;
+
+    @Override
+    public Serializable create(Session session) {
+        if (session == null) {
+            log.error("session is null");
+            throw new UnknownSessionException("session is null");
+        }
+        Serializable sessionId = shiroTokenManager.build();
+        ((SimpleSession)session).setId(sessionId);
+        this.saveSession(session);
+        return sessionId;
+    }
+
+    @Override
+    public Session readSession(Serializable sessionId) throws UnknownSessionException{
+        if (sessionId == null) {
+            log.warn("session id is null");
+            return null;
+        }
+        if (sessionId instanceof String) {
+            // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
+            shiroTokenManager.check((String) sessionId);
+        }
+        log.debug("read session from cache");
+        Session session = getSessionFromCache(sessionId);
+        if (session == null) {
+            throw new UnknownSessionException("There is no session with id [" + sessionId + "]");
+        }
+        return session;
+    }
+
+    @Override
+    public void update(Session session) throws UnknownSessionException {
+        this.saveSession(session);
+    }
+
+    @Override
+    public void delete(Session session) {
+        if (session != null && session.getId() != null) {
+            shiroCache.remove(KEY_PREFIX + session.getId());
+        }
+    }
+
+    @Override
+    public Collection<Session> getActiveSessions() {
+        Set<Session> sessions = new HashSet<>();
+        Set<Object> keys = shiroCache.keys();
+        if (keys != null && keys.size() > 0) {
+            Iterator iter = keys.iterator();
+            while(iter.hasNext()) {
+                sessions.add((Session) shiroCache.get(iter.next()));
+            }
+        }
+        return sessions;
+    }
+
+    private void saveSession(Session session) throws UnknownSessionException {
+        if (session == null || session.getId() == null) {
+            log.error("session or session id is null");
+            throw new UnknownSessionException("session or session id is null");
+        }
+        shiroCache.put(KEY_PREFIX + session.getId(), (SimpleSession)session, expireTime);
+    }
+
+    private Session getSessionFromCache (Serializable sessionId) {
+        Serializable object = shiroCache.get(KEY_PREFIX + sessionId);
+        Session session = null;
+        if (object != null) {
+            session = (Session)shiroCache.get(KEY_PREFIX + sessionId);
+        }
+        return session;
+    }
+
+    public void setExpireTime (int expireTime) {
+        this.expireTime = expireTime;
+    }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionManager.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionManager.java
new file mode 100644
index 0000000..352ffe9
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionManager.java
@@ -0,0 +1,86 @@
+package doumeemes.config.shiroMemory;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.mgt.DefaultSessionManager;
+import org.apache.shiro.session.mgt.SessionContext;
+import org.apache.shiro.session.mgt.SessionKey;
+import org.apache.shiro.web.servlet.Cookie;
+import org.apache.shiro.web.servlet.ShiroHttpServletRequest;
+import org.apache.shiro.web.servlet.SimpleCookie;
+import org.apache.shiro.web.session.mgt.WebSessionManager;
+import org.apache.shiro.web.util.WebUtils;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.Serializable;
+
+/**
+ * 鑷畾涔変細璇濈鐞嗗櫒
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+@Slf4j
+public class ShiroSessionManager extends DefaultSessionManager implements WebSessionManager {
+
+    private static final String AUTH_TOKEN = "eva-auth-token";
+
+    @Override
+    protected void onStart(Session session, SessionContext context) {
+        super.onStart(session, context);
+        if (!WebUtils.isHttp(context)) {
+            log.debug("SessionContext argument is not Http compatible or does not have an Http request/response pair. No session ID cookie will be set.");
+            return;
+        }
+        HttpServletRequest request = WebUtils.getHttpRequest(context);
+        HttpServletResponse response = WebUtils.getHttpResponse(context);
+        Serializable sessionId = session.getId();
+        this.storeSessionId(sessionId, request, response);
+        request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE);
+        request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_IS_NEW, Boolean.TRUE);
+    }
+
+    @Override
+    public Serializable getSessionId(SessionKey key) {
+        Serializable sessionId = super.getSessionId(key);
+        if (sessionId == null && WebUtils.isWeb(key)) {
+            ServletRequest servletRequest = WebUtils.getRequest(key);
+            if (!(servletRequest instanceof HttpServletRequest)) {
+                log.trace("Can not get sessionId from header, the request is not HttpServletRequest");
+                return null;
+            }
+            HttpServletRequest request = (HttpServletRequest) servletRequest;
+            // 浠巆ookie涓幏鍙栬璇�
+            javax.servlet.http.Cookie[] cookies = request.getCookies();
+            if (cookies != null) {
+                for (javax.servlet.http.Cookie cookie : cookies) {
+                    if (AUTH_TOKEN.equals(cookie.getName())) {
+                        return cookie.getValue();
+                    }
+                }
+            }
+            // 浠巋eader涓幏鍙栬璇�
+            return request.getHeader(AUTH_TOKEN);
+        }
+        return sessionId;
+    }
+
+    @Override
+    public boolean isServletContainerSessions() {
+        return false;
+    }
+
+    private void storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response) {
+        if (currentId == null) {
+            String msg = "sessionId cannot be null when persisting for subsequent requests.";
+            throw new IllegalArgumentException(msg);
+        }
+        Cookie cookie = new SimpleCookie(AUTH_TOKEN);
+        cookie.setHttpOnly(false);
+        String idString = currentId.toString();
+        cookie.setValue(idString);
+        cookie.saveTo(request, response);
+        log.trace("Set session ID cookie for session with id {}", idString);
+    }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroToken.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroToken.java
new file mode 100644
index 0000000..7913e46
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroToken.java
@@ -0,0 +1,53 @@
+package doumeemes.config.shiroMemory;
+
+import org.apache.shiro.authc.*;
+
+/**
+ * 鑷畾涔塗oken 锛屽鐞嗚璇佸拰鏉冮檺
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Component
+public class ShiroToken extends UsernamePasswordToken {
+
+    /**
+     * 鍏徃ID
+     */
+    Integer companyId;
+    Boolean isDdLogin;
+    Boolean isWxLogin;
+
+    public ShiroToken() {
+    }
+    public ShiroToken(Integer companyId, String username, String password, boolean isDdLogin, boolean isWxLogin) {
+        super(username,  password, false, (String)null);
+        this.companyId = companyId;
+        this.isDdLogin = isDdLogin;
+        this.isWxLogin = isWxLogin;
+    }
+
+    public Boolean getDdLogin() {
+        return isDdLogin;
+    }
+
+    public void setDdLogin(Boolean ddLogin) {
+        isDdLogin = ddLogin;
+    }
+
+
+    public Boolean getWxLogin() {
+        return isWxLogin;
+    }
+
+    public void setWxLogin(Boolean wxLogin) {
+        isWxLogin = wxLogin;
+    }
+
+    public Integer getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Integer companyId) {
+        this.companyId = companyId;
+    }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroTokenManager.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroTokenManager.java
new file mode 100644
index 0000000..f9f6d3e
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroTokenManager.java
@@ -0,0 +1,24 @@
+package doumeemes.config.shiroMemory;
+
+import doumeemes.core.exception.UnSafeSessionException;
+
+import java.util.UUID;
+
+/**
+ * 榛樿Token绠$悊鍣�
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Component
+public class ShiroTokenManager {
+
+    String build() {
+        return UUID.randomUUID().toString();
+    }
+
+    void check(String token) throws UnSafeSessionException {
+        if (token == null || token.length() != 36) {
+            throw new UnSafeSessionException();
+        }
+    }
+}
diff --git a/server/src/main/java/doumeemes/core/annotation/excel/ExcelColumn.java b/server/src/main/java/doumeemes/core/annotation/excel/ExcelColumn.java
index 8755537..91cb9cd 100644
--- a/server/src/main/java/doumeemes/core/annotation/excel/ExcelColumn.java
+++ b/server/src/main/java/doumeemes/core/annotation/excel/ExcelColumn.java
@@ -34,7 +34,7 @@
     /**
      * 瀵归綈鏂瑰紡
      */
-    HorizontalAlignment align() default HorizontalAlignment.LEFT;
+    HorizontalAlignment  align() default HorizontalAlignment.LEFT;
 
     /**
      * 鍒楄儗鏅壊
diff --git a/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java b/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
index 010996c..5ac8412 100644
--- a/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
+++ b/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
@@ -10,8 +10,10 @@
 import org.apache.commons.lang3.CharUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.poi.hssf.usermodel.HSSFRichTextString;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.Logger;
@@ -150,8 +152,188 @@
     public void export (List<T> data, String fileName, HttpServletResponse response) {
         this.export(data, fileName, DEFAULT_SHEET_NAME, response);
     }
+    /**
+     * 瀵煎嚭鑷冲搷搴旀祦
+     * @param data 鏁版嵁
+     * @param fileName Excel鏂囦欢鍚�
+     * @param response HttpServletResponse瀵硅薄
+     */
+    public void exportWithFirstAndEnd (List<T> data, String fileName,String first,String end, HttpServletResponse response) {
+        this.exportWithFirstAndEnd(data, fileName, DEFAULT_SHEET_NAME, first,end,response);
+    }
 
     /**
+     * 瀵煎嚭鑷冲搷搴旀祦
+     * @param data 鏁版嵁
+     * @param fileName Excel鏂囦欢鍚�
+     * @param sheetName Sheet鍚嶇О
+     * @param response HttpServletResponse瀵硅薄
+     */
+    public void exportWithFirstAndEnd (List<T> data, String fileName, String sheetName, String first,String end ,HttpServletResponse response) {
+        try {
+            String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx";
+            response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
+            response.setContentType("application/octet-stream");
+            response.setHeader("eva-opera-type", "download");
+            response.setHeader("eva-download-filename", encodeFileName);
+            this.exportWithFirstAndEnd(data, sheetName,first,end, response.getOutputStream());
+        } catch (IOException e) {
+            throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+        }
+    }
+    /**
+     * 瀵煎嚭鍒版寚瀹氳緭鍑烘祦
+     * @param data 鏁版嵁
+     * @param sheetName Sheet鍚嶇О
+     */
+    public void exportWithFirstAndEnd (List<T> data, String sheetName,String first,String end, OutputStream os) {
+        SXSSFWorkbook sxssfWorkbook;
+        try {
+            sxssfWorkbook = new SXSSFWorkbook();
+            Sheet sheet = sxssfWorkbook.createSheet(sheetName);
+            // 鍒涘缓鍒楀ご
+            sheet.createFreezePane(0, 2);
+            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,this.getColumns().size()-1));
+            Row title = sheet.createRow(0);
+            title.setHeight((short) 1000);
+            Cell c = title.createCell(0);
+            c.setCellValue(first);
+            configFirstCell(sxssfWorkbook,c);
+
+            Row header = sheet.createRow(1);
+            header.setHeight((short)600);
+            List<ColumnInfo> columns = this.getColumns();
+            for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
+                ColumnInfo column = columns.get(columnIndex);
+                Cell cell = header.createCell(columnIndex);
+                cell.setCellValue(new HSSFRichTextString(column.columnConfig.name()));
+                // 鍒楀璁剧疆
+                if (column.columnConfig.width() == -1) {
+                    sheet.setColumnWidth(columnIndex, column.columnConfig.name().length() * 2 * 256);
+                } else {
+                    sheet.setColumnWidth(columnIndex, column.columnConfig.width() * 2 * 256);
+                }
+                // 璁剧疆鍒楀ご鍗曞厓鏍�
+                configHeaderCell(sxssfWorkbook, cell, column.columnConfig);
+            }
+            // 鍒涘缓鏁版嵁璁板綍
+            for (int rowIndex = 0; rowIndex < data.size(); rowIndex++) {
+                Row row = sheet.createRow(rowIndex + 2);
+                for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
+                    ColumnInfo column = columns.get(columnIndex);
+                    Cell cell = row.createCell(columnIndex);
+                    cell.setCellValue(getCellData(column, data.get(rowIndex)));
+                    // 璁剧疆鏁版嵁鍗曞厓鏍�
+                    configDataCell(sxssfWorkbook, cell, column.columnConfig);
+                }
+            }
+            if(StringUtils.isNotBlank(end)){
+                sheet.addMergedRegion(new CellRangeAddress(data.size()+2   ,data.size()+2,0,this.getColumns().size()-1));
+                Row endRow = sheet.createRow(data.size()+2);
+//            endRow.setHeight((short) 600);
+                Cell c1 = endRow.createCell(0);
+                c1.setCellValue(end);
+                configEndCell(sxssfWorkbook,c1);
+            }
+            sxssfWorkbook.write(os);
+            os.close();
+        } catch (Exception e) {
+            throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+        } finally {
+            if (os != null) {
+                try {
+                    os.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+    /**
+     * 閰嶇疆鏁版嵁鍗曞厓鏍�
+     */
+    private void configDataCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig) {
+        CellStyle style = workbook.createCellStyle();
+        style.setAlignment(columnConfig.align());
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        // 璁剧疆鑳屾櫙
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        style.setFillForegroundColor(columnConfig.dataBackgroundColor().getIndex());
+        // 瀛椾綋
+        Font font = workbook.createFont();
+        font.setFontHeightInPoints(columnConfig.fontSize());
+        // 瀛椾綋棰滆壊
+        font.setColor(columnConfig.color().getIndex());
+        // 绮椾綋
+        font.setBold(columnConfig.bold());
+        // 鏂滀綋
+        font.setItalic(columnConfig.italic());
+        style.setFont(font);
+        // 杈规
+        configCellBorder(style);
+        style.setWrapText(true);
+        cell.setCellStyle(style);
+    }
+    /**
+     * 閰嶇疆鍒楀ご鍗曞厓鏍�
+     */
+    private void configFirstCell (SXSSFWorkbook workbook, Cell cell ) {
+        CellStyle style = workbook.createCellStyle();
+        style.setAlignment(HorizontalAlignment.CENTER);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        // 璁剧疆鑳屾櫙
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        style.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
+        // 瀛椾綋
+        Font font = workbook.createFont();
+        font.setFontHeightInPoints((short)24);
+        font.setBold(true);
+        style.setFont(font);
+        // 璁剧疆杈规
+        configCellBorder(style);
+        cell.setCellStyle(style);
+    }
+    /**
+     * 閰嶇疆鍒楀ご鍗曞厓鏍�
+     */
+    private void configEndCell (SXSSFWorkbook workbook, Cell cell ) {
+        CellStyle style = workbook.createCellStyle();
+        style.setAlignment(HorizontalAlignment.RIGHT);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        // 璁剧疆鑳屾櫙
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        // 瀛椾綋
+        Font font = workbook.createFont();
+        font.setFontHeightInPoints((short)14);
+        style.setFont(font);
+        // 璁剧疆杈规
+        configCellBorder(style);
+        cell.setCellStyle(style);
+    }
+    /**
+     * 閰嶇疆鍒楀ご鍗曞厓鏍�
+     */
+    private void configHeaderCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig) {
+        CellStyle style = workbook.createCellStyle();
+        style.setAlignment(columnConfig.align());
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        // 璁剧疆鑳屾櫙
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+//        style.setFillForegroundColor(columnConfig.backgroundColor().getIndex());
+        style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+        // 瀛椾綋
+        Font font = workbook.createFont();
+        font.setFontHeightInPoints((short)11);
+        font.setColor(columnConfig.color().index);
+        font.setBold(true);
+        style.setFont(font);
+        // 璁剧疆杈规
+        style.setWrapText(true);
+        configCellBorder(style);
+        cell.setCellStyle(style);
+    }
+    /**
      * 鑾峰彇鍒楅泦鍚�
      */
     private List<ColumnInfo> getColumns () {
diff --git a/server/src/main/java/doumeemes/core/utils/WxMiniConfig.java b/server/src/main/java/doumeemes/core/utils/WxMiniConfig.java
index 54e3620..7c916a4 100644
--- a/server/src/main/java/doumeemes/core/utils/WxMiniConfig.java
+++ b/server/src/main/java/doumeemes/core/utils/WxMiniConfig.java
@@ -3,12 +3,7 @@
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
 import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
-import com.github.binarywang.wxpay.config.WxPayConfig;
-import com.github.binarywang.wxpay.constant.WxPayConstants;
-import com.github.binarywang.wxpay.service.WxPayService;
-import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
 import doumeemes.biz.system.SystemDictDataBiz;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 
diff --git a/server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java b/server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java
index 709a3e6..a21e31d 100644
--- a/server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java
+++ b/server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java
@@ -33,14 +33,25 @@
     @ExcelColumn(name="鏉ユ簮", valueMapping = "0=PC骞冲彴;1=閽夐拤骞冲彴;2=缇氱緤骞冲彴;3=EDGP骞冲彴;4=寰俊灏忕▼搴�",width = 6,align = HorizontalAlignment.CENTER)
     private Integer orgin;
     @ApiModelProperty(value = "浼佷笟鐢ㄦ埛缂栫爜", example = "1")
+    @ExcelColumn(name="浼佷笟鐢ㄦ埛ID", width = 6)
     private Integer companyUserId;
+
+    @ApiModelProperty(value = "浼佷笟鍚嶇О")
+    @ExcelColumn(name="浼佷笟鍚嶇О",  width = 16)
+    @TableField(exist = false)
+    private String  companyName;
+
+    @ApiModelProperty(value = "浼佷笟鐢ㄦ埛鍚嶇О")
+    @ExcelColumn(name="浼佷笟鐢ㄦ埛鍚嶇О",  width = 16)
+    @TableField(exist = false)
+    private String  companyUserName;
 
     @ApiModelProperty(value = "鐧诲綍鐢ㄦ埛鍚�")
     @ExcelColumn(name="鐧诲綍鐢ㄦ埛鍚�")
     private String loginUsername;
 
     @ApiModelProperty(value = "鐧诲綍IP")
-    @ExcelColumn(name="鐧诲綍IP", color = IndexedColors.RED, width = 8)
+    @ExcelColumn(name="鐧诲綍IP",  width = 8)
     private String ip;
 
     @ApiModelProperty(value = "鐧诲綍鍦板潃")
@@ -68,24 +79,14 @@
     private String serverIp;
 
     @ApiModelProperty(value = "鏄惁鐧诲綍鎴愬姛")
-    @ExcelColumn(name="鏄惁鐧诲綍鎴愬姛", valueMapping = "true=鏄�;false=鍚�", align = HorizontalAlignment.CENTER)
+    @ExcelColumn(name="鏄惁鎴愬姛", valueMapping = "true=鎴愬姛;false=澶辫触", align = HorizontalAlignment.CENTER)
     private Boolean success;
 
     @ApiModelProperty(value = "澶辫触鍘熷洜")
-    @ExcelColumn(name="澶辫触鍘熷洜", color = IndexedColors.RED, width = 16)
+    @ExcelColumn(name="澶辫触鍘熷洜",  width = 16)
     private String reason;
 
     @ApiModelProperty(value = "鐧诲綍鏃堕棿")
     @ExcelColumn(name="鐧诲綍鏃堕棿", dateFormat = "yyyy-MM-dd HH:mm:ss", width = 10)
     private Date loginTime;
-    @ApiModelProperty(value = "浼佷笟鍚嶇О")
-    @ExcelColumn(name="浼佷笟鍚嶇О", color = IndexedColors.RED, width = 16)
-    @TableField(exist = false)
-    private String  companyName;
-
-    @ApiModelProperty(value = "浼佷笟鐢ㄦ埛鍚嶇О")
-    @ExcelColumn(name="浼佷笟鍚嶇О", color = IndexedColors.RED, width = 16)
-    @TableField(exist = false)
-    private String  companyUserName;
-
 }
diff --git a/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java b/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java
index c9fb3a3..d8eb021 100644
--- a/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java
@@ -241,7 +241,7 @@
         queryDeviceExtDTO1.setRootDepartId(user.getRootDepartment().getId());
         List<DeviceExtListVO> list1= deviceExtService.getListByCondition(queryDeviceExtDTO1);*/
         if(list.size()>0){
-            return ApiResponse.failed("璁惧缂栫爜锛屼笉鍏佽娣诲姞");
+            return ApiResponse.failed("璁惧缂栫爜宸插瓨鍦紝涓嶅厑璁告坊鍔�");
         }
         device.setDeleted(Constants.ZERO);
         device.setCreateTime(new Date());
@@ -293,8 +293,8 @@
         }
         List<String> departName = new ArrayList<>();
         List<String> procedureName = new ArrayList<>();
-        plansList.forEach(s->{
-
+        int num =0;
+        for(DeviceImportDTO s : plansList){
             if (StringUtils.isBlank(s.getDeviceName())
                     || s.getDeviceName().length() > 50
                     || StringUtils.isBlank(s.getDepartName())
@@ -303,14 +303,13 @@
                     || StringUtils.isBlank(s.getFinishWarehouseLocationName())){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵煎叆鏁版嵁鍐呭鏈夎");
             }
-            if(isRepeatCode(s.getDeviceCode(),plansList)){
+            if(isRepeatCode(s,num,plansList)){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏂囨。涓澶囧彿銆�"+s.getDeviceCode()+"銆戦噸澶嶏紒");
             }
             departName.add(s.getDepartName());
             procedureName.add(s.getProcedureName());
-        });
-
-
+            num++;
+        }
 
         plansList.forEach(s->{
 
@@ -431,12 +430,14 @@
         });
     }
 
-    private boolean isRepeatCode(String deviceCode, List<DeviceImportDTO> plansList) {
-        if(StringUtils.isNotBlank(deviceCode)){
+    private boolean isRepeatCode(DeviceImportDTO s,int num,List<DeviceImportDTO> plansList) {
+        if(StringUtils.isNotBlank(s.getDeviceCode())){
+            int tNum = 0;
             for(DeviceImportDTO d :plansList){
-                if(StringUtils.equals(deviceCode, d.getDeviceCode())){
+                if(num != tNum && StringUtils.equals(s.getDeviceCode(), d.getDeviceCode())){
                     return  true;
                 }
+                tNum++;
             }
         }
         return  false;
diff --git a/server/src/main/java/doumeemes/service/system/impl/SystemLoginServiceImpl.java b/server/src/main/java/doumeemes/service/system/impl/SystemLoginServiceImpl.java
index 8c7c205..cdd4609 100644
--- a/server/src/main/java/doumeemes/service/system/impl/SystemLoginServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/system/impl/SystemLoginServiceImpl.java
@@ -1,8 +1,6 @@
 package doumeemes.service.system.impl;
 
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.iflytek.antelope.other.client.dto.resp.UserDTO;
 import doumeemes.biz.system.SystemDictDataBiz;
 import doumeemes.config.shiro.ShiroToken;
@@ -14,9 +12,7 @@
 import doumeemes.core.utils.dingding.DingDingUtil;
 import doumeemes.core.utils.dingding.LingyangUtil;
 import doumeemes.core.utils.edpg.EdgpServerUtil;
-import doumeemes.core.utils.edpg.EdgpUtil;
 import doumeemes.core.utils.edpg.bean.AppUserInfoModel;
-import doumeemes.dao.business.dto.CompanyInitDataDTO;
 import doumeemes.dao.business.model.Company;
 import doumeemes.dao.business.model.CompanyUser;
 import doumeemes.dao.ext.CompanyExtMapper;
diff --git a/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java b/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
index dc927b2..1c94047 100644
--- a/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
@@ -19,18 +19,13 @@
 import doumeemes.dao.ext.CompanyExtMapper;
 import doumeemes.dao.ext.CompanyUserExtMapper;
 import doumeemes.dao.ext.DepartmentExtMapper;
-import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO;
 import doumeemes.dao.ext.dto.WxLoginDTO;
 import doumeemes.dao.ext.dto.WxLoginOutDTO;
-import doumeemes.dao.ext.vo.CompanyUserExtListVO;
 import doumeemes.dao.ext.vo.WxLoginVO;
 import doumeemes.dao.system.SystemUserMapper;
 import doumeemes.dao.system.dto.LoginDTO;
 import doumeemes.dao.system.model.SystemLoginLog;
 import doumeemes.dao.system.model.SystemUser;
-import doumeemes.service.common.CaptchaService;
-import doumeemes.service.ext.CompanyExtService;
-import doumeemes.service.ext.CompanyUserExtService;
 import doumeemes.service.system.SystemLoginLogService;
 import doumeemes.service.system.WxLoginService;
 import lombok.extern.slf4j.Slf4j;
@@ -41,7 +36,6 @@
 import org.apache.shiro.subject.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
diff --git a/server/src/main/resources/application-standardPro.yml b/server/src/main/resources/application-standardPro.yml
index a40cccb..6d3132a 100644
--- a/server/src/main/resources/application-standardPro.yml
+++ b/server/src/main/resources/application-standardPro.yml
@@ -6,7 +6,6 @@
       timeout: PT3H  #琛ㄧず12灏忔椂
 
 spring:
-  # 鏁版嵁婧愰厤缃�
 
   datasource:
     url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/doumee_mes_standard_pro?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml
index 72fcf23..c86705c 100644
--- a/server/src/main/resources/application.yml
+++ b/server/src/main/resources/application.yml
@@ -5,10 +5,9 @@
   env: development
 #  env: production
 
-
 spring:
 #  application:
-#    name: doumeemes
+#  name: doumeemes
   profiles:
     active: standard
   # JSON杩斿洖閰嶇疆
@@ -32,7 +31,7 @@
 cache:
   session:
     # 浼氳瘽杩囨湡鏃堕暱(s)
-    expire: 18000
+    expire: 36000
   captcha:
     # 楠岃瘉鐮佽繃鏈熸椂闀�(s)
     expire: 300
diff --git a/web_standard/.env.development b/web_standard/.env.development
index 1d53d1c..9b93c1d 100644
--- a/web_standard/.env.development
+++ b/web_standard/.env.development
@@ -14,11 +14,11 @@
 VUE_APP_API_PREFIX = ''
 
 # 鐒︽澗
-VUE_APP_BASE_URL = 'http://192.168.0.36:10021/'
+# VUE_APP_BASE_URL = 'http://192.168.0.36:10021/'
 # VUE_APP_BASE_URL = 'http://192.168.0.134:10021/'
 
 # 浠诲悍鏈湴
-# VUE_APP_BASE_URL = 'http://192.168.0.15:10021/'
+VUE_APP_BASE_URL = 'http://192.168.0.15:10021/'
 
 # 姹熻悕
 # VUE_APP_BASE_URL = 'http://192.168.0.35:10021/'
diff --git a/web_standard/public/template/material_import_template.xlsx b/web_standard/public/template/material_import_template.xlsx
index 6812b65..b8edec0 100644
--- a/web_standard/public/template/material_import_template.xlsx
+++ b/web_standard/public/template/material_import_template.xlsx
Binary files differ
diff --git a/web_standard/src/api/business/salaryParam.js b/web_standard/src/api/business/salaryParam.js
index 6a34dd9..ace1e8b 100644
--- a/web_standard/src/api/business/salaryParam.js
+++ b/web_standard/src/api/business/salaryParam.js
@@ -38,3 +38,23 @@
     }
   })
 }
+
+
+/**
+// 淇敼
+export function updateById (data) {
+  return http.post('/ext/workorderExt/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return http.get(`/ext/workorderExt/${id}`)
+}
+
+export function outScanAppliances(params) {
+	return http.get('/ext/workorderExt/outScanAppliances', { params })
+} 
+ */
+
+
+

--
Gitblit v1.9.3