From d12ea44bbe77f424b17e32abf03b573edee92370 Mon Sep 17 00:00:00 2001
From: qb <1191961160@qq.com>
Date: Tue, 2 Apr 2024 14:31:43 +0800
Subject: [PATCH 1/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=80=83=E6=A0=B8?=
 =?UTF-8?q?=E5=92=8C=E6=96=B0=E5=A2=9E=E6=8C=89=E8=BD=A6=E6=AC=A1=E5=85=A5?=
 =?UTF-8?q?=E5=BA=93=E5=88=97=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../distribution/WarehousingByTrainNumber.js  |  23 ++
 src/option/supervise/supervise.js             |  11 +-
 src/views/supervise/IndicatorList.vue         |  47 ++--
 .../waybill/WarehousingByTrainNumber.vue      | 210 ++++++------------
 4 files changed, 115 insertions(+), 176 deletions(-)
 create mode 100644 src/api/distribution/WarehousingByTrainNumber.js

diff --git a/src/api/distribution/WarehousingByTrainNumber.js b/src/api/distribution/WarehousingByTrainNumber.js
new file mode 100644
index 00000000..753a4efc
--- /dev/null
+++ b/src/api/distribution/WarehousingByTrainNumber.js
@@ -0,0 +1,23 @@
+import request from '@/axios';
+
+/**
+ * 根据类型获取需要入库的暂存单
+ */
+export const postFindIncomingOrderList = (data = {}) => {
+  return request({
+    url: '/api/logpm-trunkline/incoming/findIncomingOrderList',
+    method: 'post',
+    data,
+  });
+};
+
+/**
+ * 入库
+ */
+export const postIncomingBatchOrder = (data = {}) => {
+  return request({
+    url: '/api/logpm-trunkline/incoming/incomingBatchOrder',
+    method: 'post',
+    data,
+  });
+};
diff --git a/src/option/supervise/supervise.js b/src/option/supervise/supervise.js
index e49ed6cb..53b28e60 100644
--- a/src/option/supervise/supervise.js
+++ b/src/option/supervise/supervise.js
@@ -155,8 +155,6 @@ export const managementColumnList = [
     head: false,
   },
 
-
-
   {
     prop: 'createTime',
     label: '创建时间',
@@ -242,7 +240,7 @@ export const IndicatorColumnList = [
     head: false,
   },
   {
-    prop: 'examineDeptName',
+    prop: 'rangeDeptName',
     label: '考核范围',
     type: 1,
     values: '',
@@ -253,7 +251,6 @@ export const IndicatorColumnList = [
     head: false,
   },
 
-
   {
     prop: 'point',
     label: '考核分数',
@@ -267,8 +264,8 @@ export const IndicatorColumnList = [
     isshowSummary: true,
   },
   {
-    prop: 'createDeptName',
-    label: '考核归属部门',
+    prop: 'examineDeptName',
+    label: '指标归属部门',
     type: 1,
     values: '',
     width: '130',
@@ -335,7 +332,7 @@ export const IndicatorColumnList = [
 
   // {
   //   prop: 'isObjection',
-  //   label: '是否存在异议', 
+  //   label: '是否存在异议',
   //   type: 1,
   //   values: '',
   //   width: '130',
diff --git a/src/views/supervise/IndicatorList.vue b/src/views/supervise/IndicatorList.vue
index 07b5c03a..13391cda 100644
--- a/src/views/supervise/IndicatorList.vue
+++ b/src/views/supervise/IndicatorList.vue
@@ -112,10 +112,15 @@
                 <el-button text @click="ClassificationIndicatorView(slotProps.scope)"
                   >查看</el-button
                 >
-                <el-button  v-if="slotProps.scope.row.isEdit != '0'" text @click="ClassificationDditing(slotProps.scope)">编辑</el-button>
                 <el-button
                   v-if="slotProps.scope.row.isEdit != '0'"
                   text
+                  @click="ClassificationDditing(slotProps.scope)"
+                  >编辑</el-button
+                >
+                <el-button
+                  v-if="slotProps.scope.row.isEdit == '1'"
+                  text
                   type="primary"
                   @click="CategoryDeletion(slotProps.scope)"
                   >删除</el-button
@@ -157,11 +162,7 @@
         </el-form-item>
 
         <el-form-item label="指标分类">
-          <el-input
-            v-model="lassificationform.parentClassifyName"
-           
-            placeholder="暂无"
-          />
+          <el-input v-model="lassificationform.parentClassifyName" placeholder="暂无" />
         </el-form-item>
 
         <el-form-item label="考核部门">
@@ -173,8 +174,12 @@
         </el-form-item>
 
         <el-form-item label="整改结果">
-          <el-input  :rows="2"
-    type="textarea" v-model="lassificationform.objectionRemark" placeholder="暂无" />
+          <el-input
+            :rows="2"
+            type="textarea"
+            v-model="lassificationform.objectionRemark"
+            placeholder="暂无"
+          />
         </el-form-item>
 
         <el-form-item label="考核人">
@@ -200,13 +205,11 @@
             暂无
             "
           />
-
-      
         </el-form-item>
         <el-form-item label="意见反馈">
           <el-input
-          :rows="2"
-          type="textarea"
+            :rows="2"
+            type="textarea"
             v-model="lassificationform.appealReason"
             placeholder="暂无"
           />
@@ -439,7 +442,7 @@ const pageSize = ref(50);
 const lassificationform = ref({}); //分类表单
 const lassificationformedit = ref({}); //编辑分类表单
 const title = ref(true); //标题
-const EditEnable = ref(true);//是否可以编辑
+const EditEnable = ref(true); //是否可以编辑
 const EditID = ref(true); //编辑需要的ID
 const currentPage = ref(1);
 const newlyAdded = ref(false); //新增弹窗
@@ -815,10 +818,10 @@ const selectionChange = list => {
   console.log(selectionList.value, '已经选中的数据');
 };
 function ProhibitSelection(val, index) {
-  if (val.isEdit == '0') {
-    return false;
-  } else {
+  if (val.isEdit == '1') {
     return true;
+  } else {
+    return false;
   }
 }
 const searchHide = () => {
@@ -888,9 +891,9 @@ const ClassificationIndicatorView = val => {
       }
 
       //    是否存在异议 0 表示没有1表示存在
-      if (res.data.data.isObjection=='0') {
+      if (res.data.data.isObjection == '0') {
         lassificationform.value.isObjection = '没有';
-      } else if(res.data.data.isObjection=='1') {
+      } else if (res.data.data.isObjection == '1') {
         lassificationform.value.isObjection = '存在';
       }
       console.log(res.data.data.pictures, '图片列表');
@@ -953,10 +956,10 @@ const ClassificationIndicatorView = val => {
 // 编辑弹窗展开
 const ClassificationDditing = async val => {
   console.log(val, '编辑弹窗展开');
-  if(val.row.isEdit ==1){
-    EditEnable.value=false;
-  }else if(val.row.isEdit == 2){
-    EditEnable.value=true;
+  if (val.row.isEdit == 1) {
+    EditEnable.value = false;
+  } else if (val.row.isEdit == 2) {
+    EditEnable.value = true;
   }
   srcList.value = [];
   fileList.value = [];
diff --git a/src/views/waybill/WarehousingByTrainNumber.vue b/src/views/waybill/WarehousingByTrainNumber.vue
index 12058f13..90085b95 100644
--- a/src/views/waybill/WarehousingByTrainNumber.vue
+++ b/src/views/waybill/WarehousingByTrainNumber.vue
@@ -5,8 +5,19 @@
       <div v-h5uShow="!search">
         <!-- 查询模块 -->
         <el-form :inline="true" :model="query" class="header_search">
-          <el-form-item label="车次号">
-            <el-input v-model="query.trainNumber" placeholder="请输入车次号" clearable></el-input>
+          <el-form-item label="搜索模式">
+            <el-radio-group v-model="details.searchType" class="ml-4">
+              <el-radio label="orderCode">订单号</el-radio>
+              <el-radio label="carsNo">车次号</el-radio>
+            </el-radio-group>
+          </el-form-item>
+
+          <el-form-item :label="details.searchType === 'orderCode' ? '订单号' : '车次号'">
+            <el-input
+              v-model="query.incomingCode"
+              :placeholder="'请输入' + details.searchType === 'orderCode' ? '订单号' : '车次号'"
+              clearable
+            ></el-input>
           </el-form-item>
           <!-- 查询按钮 -->
           <el-form-item class="el-btn">
@@ -36,6 +47,7 @@
       <el-row>
         <!-- 列表模块 -->
         <tablecmt
+          ref="tableNodeRef"
           :columnList="details.columnList"
           :tableData="details.data"
           :loading="loadingObj.packageListLoading"
@@ -55,19 +67,6 @@
       <el-row class="el-fy">
         <div class="avue-crud__pagination flex-c-sb" style="width: 100%">
           <div style="font-size: 14px">勾选数量: {{ selectionList.length }}</div>
-          <!-- 分页模块 -->
-          <el-pagination
-            align="right"
-            background
-            @size-change="sizeChange"
-            @current-change="currentChange"
-            :current-page="page.currentPage"
-            :page-sizes="[30, 50, 80, 120]"
-            :page-size="page.pageSize"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="page.total"
-          >
-          </el-pagination>
         </div>
       </el-row>
     </div>
@@ -89,18 +88,26 @@ import dayjs from 'dayjs';
 import { mapGetters } from 'vuex';
 /** 获取字典 */
 import { getDictionaryBiz } from '@/api/system/dict';
-import { getopenOrderAdvancePageList } from '@/api/waybill/TemporaryStorageList';
-import { showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
+import {
+  postFindIncomingOrderList,
+  postIncomingBatchOrder,
+} from '@/api/distribution/WarehousingByTrainNumber';
 import { downloadXls, setNodeHeight, getHtmls } from '@/utils/util';
 import { columnList } from '@/option/waybill/WarehousingByTrainNumber';
 import { useRouter } from 'vue-router';
 import print from '@/utils/print';
 import { ElMessage, ElMessageBox } from 'element-plus';
+import { submit } from '@/api/base/region';
 
 // 获取路由实例
 const $router = useRouter();
 
+// 表格实例
+const tableNodeRef = ref();
+
 const details = reactive<any>({
+  /** 搜索模式 */
+  searchType: 'orderCode',
   /** 是否开启搜索 */
   search: false,
   /** 表格搜索条件 */
@@ -140,7 +147,7 @@ const details = reactive<any>({
   /** 包明细表头 */
   columnList,
   /** 包明细数据 */
-  data: [{}],
+  data: [],
   /** 页面loading */
   loadingObj: {
     /** 列表加载loading */
@@ -172,44 +179,44 @@ const details = reactive<any>({
   form: {},
 });
 
-const {
-  search,
-  query,
-  shortcuts,
-  stockupDate,
-  data,
-  loadingObj,
-  selectionList,
-  drawerShow,
-  page,
-  popUpShow,
-} = toRefs(details);
+const { search, query, loadingObj, selectionList, drawerShow } = toRefs(details);
 
 /** vuex */
 const permission = computed(() => mapGetters(['permission', 'tagWel', 'tagList']));
 console.log('permission :>> ', permission);
 
-onMounted(() => {
-  const timer = setTimeout(() => {
-    details.listNode = document.querySelector('.maboxhi');
-    console.log('details.listNode :>> ', details.listNode);
-    details.listNode.style.transition = 'all .5s ease-out';
-    console.log('details.listNode :>> ', details.listNode);
-    clearTimeout(timer);
-  }, 100);
-});
-
 /** 请求页面数据 */
-const onLoad = async (page: any, params = {}) => {
-  // 获取暂存单列表
-  details.data = await getopenOrderAdvancePageList(page, { ...details.query, ...params });
+const onLoad = async (params = {}) => {
+  try {
+    details.loadingObj.list = true;
+
+    // 获取暂存单列表
+    const submitData = {
+      ...details.query,
+      ...params,
+    };
+
+    // 按订单是5, 车次是4
+    submitData.incomingType = details.searchType === 'orderCode' ? 5 : 4;
+
+    const res = await postFindIncomingOrderList(submitData);
+
+    const { code, data } = res.data;
+    if (code !== 200) return;
+    details.data = data;
+  } catch (error) {
+    console.log('error :>> ', error);
+  } finally {
+    details.loadingObj.list = false;
+  }
 };
 
-onLoad(details.page);
-
 /** 搜索 */
 const searchChange = () => {
-  onLoad(details.page);
+  if (!details.searchType) return ElMessage.error('请选择搜索模式');
+  if (!details.query.incomingCode) return ElMessage.error('请输入搜索内容');
+
+  onLoad();
 };
 
 /** 清空表单 */
@@ -217,7 +224,7 @@ const searchReset = () => {
   details.query = {};
   details.stockupDate = [];
   details.page.currentPage = 1;
-  onLoad(details.page);
+  onLoad();
 };
 
 /** 展开列表控件 */
@@ -229,13 +236,13 @@ const showdrawer = (_flag?: boolean) => {
 const searchHide = () => {
   details.search = !details.search;
 
-  setNodeHeight(details.listNode, '', true);
+  setNodeHeight(tableNodeRef.value.$el, '', true);
 };
 
 /** 表格表头输入框搜索 */
 const inputsc = (index, row) => {
   details.query[row.prop] = index;
-  onLoad(details.page);
+  onLoad();
 };
 
 /** 表格表头时间选择 */
@@ -248,7 +255,7 @@ const timesc = (index, row) => {
   if (!index) {
     delete details.query[row.prop];
   }
-  onLoad(details.page);
+  onLoad();
 };
 
 /** 表格表头输入框搜索 */
@@ -256,13 +263,12 @@ const btnsc = () => {};
 
 /** 表格表头下拉框选择 */
 const selectsc = (index, row) => {
-  details.query[row.prop] = index;
-  if (!index) delete details.query[row.prop];
-  if (row.prop === 'certificateTypeName') {
-    details.query['certificateType'] = index;
-    if (!index) delete details.query['certificateType'];
-  }
-  onLoad(details.page);
+  const _prop = row.prop.replace('Name', '');
+
+  details.query[_prop] = index;
+  if (!index) delete details.query[_prop];
+
+  onLoad();
 };
 
 /** 表格表头复选框选择 */
@@ -270,15 +276,6 @@ const selectionChange = (list: any) => {
   details.selectionList = list;
 };
 
-/** 每页数量改变执行的回调 */
-const sizeChange = (pageSize: number) => {
-  details.page.pageSize = pageSize;
-  onLoad(details.page);
-};
-
-/** 页码改变执行的回调 */
-const currentChange = () => {};
-
 /**
  * 设置列表 -- 固定函数
  * 弹窗的勾选回调,用于更改头部数组
@@ -297,46 +294,6 @@ const setnewcolum = (newarr, headarr, type) => {
   }
 };
 
-/** 弹出层开启前清除数据 */
-const beforeClose = done => {
-  done();
-  details.form = {};
-  details.selectionList = [];
-  details.view = false;
-};
-
-/**
- * 是否开启全屏
- * @params(_type) 开启或关闭
- */
-const handleFullScrean = (_type: 'open' | 'close', _name: string) => {
-  let _node = '';
-  if (_name) _node = document.querySelector(`.${_name} .maboxhi`);
-
-  switch (_name) {
-    // 包内产品
-    case 'packageDetailColumnListVisited':
-      details.fullscreenObj.packageDetailColumnListVisited =
-        !details.fullscreenObj.packageDetailColumnListVisited;
-
-      if (_type === 'close') {
-        if (_node) setNodeHeight(_node, '500px');
-      } else {
-        if (_node) setNodeHeight(_node);
-      }
-      break;
-
-    default:
-      details.fullscreenObj[_name] = !details.fullscreenObj[_name];
-      if (_type === 'close') {
-        if (_node) setNodeHeight(_node, '500px');
-      } else {
-        if (_node) setNodeHeight(_node);
-      }
-      break;
-  }
-};
-
 /** 入库 */
 const handlePutInStorage = row => {
   ElMessageBox.confirm('确认批量入库吗?', '警告', {
@@ -371,19 +328,6 @@ const handlePutInStorage = row => {
   height: 100% !important;
 }
 
-// 新增行
-.add_row {
-  display: flex;
-  justify-content: space-between;
-}
-
-.add_row_title {
-  text-align: center;
-  margin-bottom: 10px;
-  font-size: 18px;
-  font-weight: bold;
-}
-
 // 统计行
 .statistics_row {
   margin: 10px 0;
@@ -395,32 +339,4 @@ const handlePutInStorage = row => {
     margin-right: 20px;
   }
 }
-
-// 卡片容器
-.crad_container {
-  display: flex;
-
-  .card_container_item {
-    flex: 1;
-    // padding: 10px;
-    border-radius: 5px;
-    box-shadow: 0 0 5px #ccc;
-
-    &:first-child {
-      margin-right: 20px;
-    }
-
-    .card_container_item_title {
-      padding: 10px;
-      border-bottom: 1px solid #ccc;
-      display: flex;
-      justify-content: space-between;
-      align-items: center;
-    }
-
-    .card_container_item_box {
-      padding: 10px;
-    }
-  }
-}
 </style>

From 1b9ad4b2ed8557572f2475502e2e4dc44beab1c3 Mon Sep 17 00:00:00 2001
From: qb <1191961160@qq.com>
Date: Tue, 2 Apr 2024 18:20:16 +0800
Subject: [PATCH 2/7] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=96=B0=E5=A2=9E?=
 =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=BB=98=E6=AC=BE=E6=96=B9=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/option/distribution/BookingNote.js        |  10 +-
 .../waybill/WarehousingByTrainNumber.js       |   2 +-
 src/views/basicdata/brand/basicClient.vue     | 286 ++++++++++--------
 src/views/waybill/CreateZeroOrder.vue         |  22 +-
 src/views/waybill/TemporaryStorageList.vue    | 113 +++----
 .../waybill/WarehousingByTrainNumber.vue      | 104 ++++++-
 6 files changed, 331 insertions(+), 206 deletions(-)

diff --git a/src/option/distribution/BookingNote.js b/src/option/distribution/BookingNote.js
index 6d424c95..cc547aa9 100644
--- a/src/option/distribution/BookingNote.js
+++ b/src/option/distribution/BookingNote.js
@@ -136,7 +136,7 @@ export const ChangeOrderColumnList = [
     head: false,
   },
   {
-    prop: 'unloadNumber',
+    prop: 'operationRemark',
     label: '修改内容',
     type: 1,
     values: '',
@@ -146,7 +146,7 @@ export const ChangeOrderColumnList = [
     sortable: true,
   },
   {
-    prop: 'NumberOfPiecesInTheCar',
+    prop: 'createTime',
     label: '申请时间',
     type: 1,
     values: '',
@@ -156,7 +156,7 @@ export const ChangeOrderColumnList = [
     sortable: true,
   },
   {
-    prop: 'unloadNumber',
+    prop: 'warehouseName',
     label: '申请网点',
     type: 1,
     values: '',
@@ -166,7 +166,7 @@ export const ChangeOrderColumnList = [
     sortable: true,
   },
   {
-    prop: 'NumberOfPiecesInTheCar',
+    prop: 'createUserName',
     label: '申请人',
     type: 1,
     values: '',
@@ -176,7 +176,7 @@ export const ChangeOrderColumnList = [
     sortable: true,
   },
   {
-    prop: 'unloadNumber',
+    prop: 'aaa',
     label: '修改原因',
     type: 1,
     values: '',
diff --git a/src/option/waybill/WarehousingByTrainNumber.js b/src/option/waybill/WarehousingByTrainNumber.js
index 433db9b6..9b0fd507 100644
--- a/src/option/waybill/WarehousingByTrainNumber.js
+++ b/src/option/waybill/WarehousingByTrainNumber.js
@@ -16,7 +16,7 @@ export const columnList = [
     fixed: true,
   },
   {
-    prop: 'billladingCode',
+    prop: 'orderCode',
     label: '订单自编号',
     type: 1,
     values: '',
diff --git a/src/views/basicdata/brand/basicClient.vue b/src/views/basicdata/brand/basicClient.vue
index fcd9534b..0ccaedbc 100644
--- a/src/views/basicdata/brand/basicClient.vue
+++ b/src/views/basicdata/brand/basicClient.vue
@@ -287,6 +287,16 @@
           <el-form-item label="详细地址" prop="detailedly">
             <el-input v-model="form.detailedly" placeholder="请填写详细地址" style="width: 100%" />
           </el-form-item>
+          <el-form-item label="默认付款方式" prop="defaultPaymentMethods">
+            <el-select v-model="form.defaultPaymentMethods" placeholder="请选择默认付款方式">
+              <el-option
+                v-for="item in defaultPaymentMethodsOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
           <!--          <el-form-item label="三方商城" prop="tripartiteMall">-->
           <!--            <el-input v-model="form.tripartiteMall" placeholder="请填写三方商城" style="width: 100%" />-->
           <!--          </el-form-item>-->
@@ -319,7 +329,7 @@
               :limit="3"
               :on-exceed="handleExceed"
             >
-              <el-button>上传</el-button>
+              <el-button type="Primary" icon="Position">上传</el-button>
               <template #tip>
                 <div class="el-upload__tip">大小不超过500KB的jpg/png文件。</div>
               </template>
@@ -333,35 +343,23 @@
             />
           </el-form-item>
           <el-form-item label="合同开始时间" prop="contractStartTime" label-width="120px">
-            <!--            <el-input v-model="form.contractStartTime" placeholder="请输入合同开始时间"/>-->
-            <div class="demo-date-picker" style="width: 60%">
-              <div class="block">
-                <!--                <span class="demonstration">Default</span>-->
-                <el-date-picker
-                  v-model="form.contractStartTime"
-                  type="date"
-                  placeholder="选择时间"
-                  format="YYYY/MM/DD HH:mm:ss"
-                  value-format="YYYY-MM-DD HH:mm:ss"
-                />
-              </div>
-            </div>
+            <el-date-picker
+              v-model="form.contractStartTime"
+              type="date"
+              placeholder="选择时间"
+              format="YYYY/MM/DD HH:mm:ss"
+              value-format="YYYY-MM-DD HH:mm:ss"
+            />
           </el-form-item>
 
           <el-form-item label="合同结束时间" prop="contractEntTime" label-width="120px">
-            <!--            <el-input v-model="form.contractEntTime" placeholder="请输入合同结束时间"/>-->
-            <div class="demo-date-picker">
-              <div class="block">
-                <!--                <span class="demonstration">Default</span>-->
-                <el-date-picker
-                  v-model="form.contractEntTime"
-                  type="date"
-                  placeholder="选择时间"
-                  format="YYYY/MM/DD HH:mm:ss"
-                  value-format="YYYY-MM-DD HH:mm:ss"
-                />
-              </div>
-            </div>
+            <el-date-picker
+              v-model="form.contractEntTime"
+              type="date"
+              placeholder="选择时间"
+              format="YYYY/MM/DD HH:mm:ss"
+              value-format="YYYY-MM-DD HH:mm:ss"
+            />
           </el-form-item>
         </el-form>
         <!-- 表单按钮 -->
@@ -756,24 +754,26 @@ export default {
           { required: true, message: '请输入客户名称', trigger: 'blur' },
           // { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
         ],
-        typeService: [{ required: true, message: '请选择客户端类型', trigger: 'blur' }],
+        typeService: [{ required: true, message: '请选择客户端类型', trigger: ['blur', 'change'] }],
         businessType: [
           { required: true, message: '请选择配送业务类型', trigger: 'change' },
-          // { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
+          // { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: ['blur', 'change'] }
         ],
         clientType: [{ required: true, message: '请选择客户类型', trigger: 'change' }],
         typeServiceList: [{ required: true, message: '请选择服务类型', trigger: 'change' }],
-        linkman: [{ required: true, message: '请填写联系人', trigger: 'blur' }],
-        detailedly: [{ required: true, message: '请填写详细地址', trigger: 'blur' }],
-        phone: [{ required: true, message: '请填写联系电话', trigger: 'blur' }],
-        contractEntTime: [
-          { type: 'date', required: true, message: '请选择合同结束时间', trigger: 'change' },
-        ],
-        contractStartTime: [
-          { type: 'date', required: true, message: '请选择合同开始时间', trigger: 'change' },
-        ],
+        linkman: [{ required: true, message: '请填写联系人', trigger: ['blur', 'change'] }],
+        detailedly: [{ required: true, message: '请填写详细地址', trigger: ['blur', 'change'] }],
+        phone: [{ required: true, message: '请填写联系电话', trigger: ['blur', 'change'] }],
+        // contractEntTime: [
+        //   { type: 'date', required: true, message: '请选择合同结束时间', trigger: 'change' },
+        // ],
+        // contractStartTime: [
+        //   { type: 'date', required: true, message: '请选择合同开始时间', trigger: 'change' },
+        // ],
         bladeRegionProvinceId: [{ required: true, message: '请选择地址', trigger: 'change' }],
-        // leaseAccessories: [{ required: true, message: '请上传合同文件', trigger: 'blur' }],
+        defaultPaymentMethods: [
+          { required: true, message: '请选择默认付款方式', trigger: 'change' },
+        ],
       },
       bianji: false,
 
@@ -782,6 +782,29 @@ export default {
         name: '',
         phone: '',
       },
+      /** 付款方式 */
+      defaultPaymentMethodsOptions: [
+        {
+          value: '1',
+          label: '现付',
+        },
+        {
+          value: '2',
+          label: '到付',
+        },
+        {
+          value: '3',
+          label: '月结',
+        },
+        {
+          value: '4',
+          label: '回付',
+        },
+        {
+          value: '5',
+          label: '内部结算',
+        },
+      ],
     };
   },
   created() {},
@@ -1218,6 +1241,10 @@ export default {
       this.box = true;
       this.distriType = false;
       this.viewClientEntd = false;
+      this.$nextTick(() => {
+        this.$refs.form.resetFields();
+        this.form.defaultPaymentMethods = '1';
+      });
     },
     handleAddSon(row) {
       console.log(row);
@@ -1455,102 +1482,104 @@ export default {
         this.query.bladeRegionAreaId = this.query.bladeRegionProvinceId[2];
         this.query.bladeRegionProvinceId = this.query.bladeRegionProvinceId[0];
       }
-      getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
-        const data = res.data.data;
-        console.log(data);
+      getList(page.currentPage, page.pageSize, Object.assign(params, this.query))
+        .then(res => {
+          const data = res.data.data;
+          console.log(data);
 
-        data.records.forEach(i => {
-          let ke = this.clientType.find(kh => parseInt(kh.dictKey) == parseInt(i.clientType));
-          // console.log("客户类型<><><>",ke);
-          if (!!ke) {
-            i.clientTypeName = ke.dictValue;
-            // console.log('==-=-=', i.clientType, ke.dictKey, ke.dictValue);
-          }
-          if (!i.clientType) {
-            i.clientTypeName = '无';
-          }
-          let typeServiceName = [];
+          data.records.forEach(i => {
+            let ke = this.clientType.find(kh => parseInt(kh.dictKey) == parseInt(i.clientType));
+            // console.log("客户类型<><><>",ke);
+            if (!!ke) {
+              i.clientTypeName = ke.dictValue;
+              // console.log('==-=-=', i.clientType, ke.dictKey, ke.dictValue);
+            }
+            if (!i.clientType) {
+              i.clientTypeName = '无';
+            }
+            let typeServiceName = [];
 
-          if (!i.typeServiceBusiness) {
-            i.typeServiceName = '无';
-          } else {
-            i.typeServiceBusiness.forEach(ty => {
-              let fuw = this.freightType.find(
-                fw => parseInt(fw.dictKey) == parseInt(ty.typeService)
-              );
-              if (!!fuw) {
-                // console.log("fuw",fuw);
-                typeServiceName.push(fuw.dictValue);
-                // console.log('==-=-=', i.typeService, fuw.dictKey, fuw.dictValue);
-              }
-            });
-            i.typeServiceNameFy = typeServiceName.join(',');
-          }
-        });
-        // 缺少判断
-        // let dz = '';
-        // data.records.forEach(it => {
-        //   let arrsheng = this.optioner.filter(i => {
-        //     return it.bladeRegionProvinceId == i.value;
-        //   });
-        //   if (arrsheng.length == 0) return;
-        //   // console.log("========",JSON.parse(JSON.stringify(arrsheng)) );
-        //   let arrshi = arrsheng[0].children.filter(i => {
-        //     return it.bladeRegionCityId == i.value;
-        //   });
-        //   // console.log("========",JSON.parse(JSON.stringify(arrsheng)) );
-        //   let arrqu = arrshi[0].children.filter(i => {
-        //     return it.bladeRegionAreaId == i.value;
-        //   });
-
-        //   // console.log("========",JSON.parse(JSON.stringify(arrsheng)) );
-        //   dz =
-        //     arrsheng[0].label +
-        //     (arrshi[0].label ? `/${arrshi[0].label}` : ``) +
-        //     (arrqu[0]?.label ? `/${arrqu[0]?.label}` : '');
-        //   it.bladeRegionProvinceId = dz;
-        // });
-        // 修改后
-        let dz = '';
-        data.records.forEach(it => {
-          let arrsheng = this.optioner.filter(i => {
-            return it.bladeRegionProvinceId == i.value;
+            if (!i.typeServiceBusiness) {
+              i.typeServiceName = '无';
+            } else {
+              i.typeServiceBusiness.forEach(ty => {
+                let fuw = this.freightType.find(
+                  fw => parseInt(fw.dictKey) == parseInt(ty.typeService)
+                );
+                if (!!fuw) {
+                  // console.log("fuw",fuw);
+                  typeServiceName.push(fuw.dictValue);
+                  // console.log('==-=-=', i.typeService, fuw.dictKey, fuw.dictValue);
+                }
+              });
+              i.typeServiceNameFy = typeServiceName.join(',');
+            }
           });
-          let shengLabel = arrsheng.length > 0 ? arrsheng[0].label : ''; // 保存省级地址
+          // 缺少判断
+          // let dz = '';
+          // data.records.forEach(it => {
+          //   let arrsheng = this.optioner.filter(i => {
+          //     return it.bladeRegionProvinceId == i.value;
+          //   });
+          //   if (arrsheng.length == 0) return;
+          //   // console.log("========",JSON.parse(JSON.stringify(arrsheng)) );
+          //   let arrshi = arrsheng[0].children.filter(i => {
+          //     return it.bladeRegionCityId == i.value;
+          //   });
+          //   // console.log("========",JSON.parse(JSON.stringify(arrsheng)) );
+          //   let arrqu = arrshi[0].children.filter(i => {
+          //     return it.bladeRegionAreaId == i.value;
+          //   });
 
-          if (arrsheng.length === 0) {
-            it.bladeRegionProvinceId = shengLabel; // 若未找到省数据,直接将省级地址作为结果
-            return;
-          }
+          //   // console.log("========",JSON.parse(JSON.stringify(arrsheng)) );
+          //   dz =
+          //     arrsheng[0].label +
+          //     (arrshi[0].label ? `/${arrshi[0].label}` : ``) +
+          //     (arrqu[0]?.label ? `/${arrqu[0]?.label}` : '');
+          //   it.bladeRegionProvinceId = dz;
+          // });
+          // 修改后
+          let dz = '';
+          data.records.forEach(it => {
+            let arrsheng = this.optioner.filter(i => {
+              return it.bladeRegionProvinceId == i.value;
+            });
+            let shengLabel = arrsheng.length > 0 ? arrsheng[0].label : ''; // 保存省级地址
 
-          let arrshi = arrsheng[0].children.filter(i => {
-            return it.bladeRegionCityId == i.value;
-          });
-          let shiLabel = arrshi.length > 0 ? arrshi[0].label : ''; // 保存市级地址
+            if (arrsheng.length === 0) {
+              it.bladeRegionProvinceId = shengLabel; // 若未找到省数据,直接将省级地址作为结果
+              return;
+            }
 
-          if (arrshi.length === 0) {
-            dz = shengLabel; // 若未找到市数据,直接将省级地址作为结果
-          } else {
-            let arrqu = arrshi[0].children.filter(i => {
-              return it.bladeRegionAreaId == i.value;
+            let arrshi = arrsheng[0].children.filter(i => {
+              return it.bladeRegionCityId == i.value;
             });
+            let shiLabel = arrshi.length > 0 ? arrshi[0].label : ''; // 保存市级地址
 
-            let quLabel = arrqu.length > 0 ? arrqu[0].label : ''; // 保存区级地址
+            if (arrshi.length === 0) {
+              dz = shengLabel; // 若未找到市数据,直接将省级地址作为结果
+            } else {
+              let arrqu = arrshi[0].children.filter(i => {
+                return it.bladeRegionAreaId == i.value;
+              });
 
-            dz = shengLabel + (shiLabel ? `/${shiLabel}` : '') + (quLabel ? `/${quLabel}` : '');
-          }
+              let quLabel = arrqu.length > 0 ? arrqu[0].label : ''; // 保存区级地址
 
-          it.bladeRegionProvinceId = dz;
+              dz = shengLabel + (shiLabel ? `/${shiLabel}` : '') + (quLabel ? `/${quLabel}` : '');
+            }
+
+            it.bladeRegionProvinceId = dz;
+          });
+          this.page.total = data.total;
+          this.data = data.records;
+          this.data = this.$functions.newdatas(this.columnList, this.data);
+          this.loading = false;
+          this.selectionClear();
+        })
+        .catch(() => {
+          this.data = [];
+          this.loading = false;
         });
-        this.page.total = data.total;
-        this.data = data.records;
-        this.data = this.$functions.newdatas(this.columnList, this.data);
-        this.loading = false;
-        this.selectionClear();
-      }).catch(()=>{
-        this.data =[]
-        this.loading = false;
-      });
     },
   },
 };
@@ -1577,4 +1606,13 @@ export default {
 :deep(.el-cascader) {
   width: 100%;
 }
+
+:deep(.el-date-editor.el-input) {
+  height: 100% !important;
+  width: 100% !important;
+}
+
+:deep(.el-select) {
+  width: 100% !important;
+}
 </style>
diff --git a/src/views/waybill/CreateZeroOrder.vue b/src/views/waybill/CreateZeroOrder.vue
index acf96e80..ed35c0aa 100644
--- a/src/views/waybill/CreateZeroOrder.vue
+++ b/src/views/waybill/CreateZeroOrder.vue
@@ -1764,22 +1764,22 @@ let _ant1 = null;
 const remoteMethod = val => {
   if (_ant1) clearTimeout(_ant1);
   _ant1 = setTimeout(async () => {
-    if (val) {
-      try {
-        details.loadingObj.loading = true;
-        const res = await getOpenOrderAdvanceFindWarehouseList({ warehouseName: val });
-        const { data, code } = res.data;
-        if (code !== 200) return;
-        details.options = data || [];
-      } catch (error) {
-      } finally {
-        details.loadingObj.loading = false;
-      }
+    try {
+      details.loadingObj.loading = true;
+      const res = await getOpenOrderAdvanceFindWarehouseList({ warehouseName: val });
+      const { data, code } = res.data;
+      if (code !== 200) return;
+      details.options = data || [];
+    } catch (error) {
+    } finally {
+      details.loadingObj.loading = false;
     }
     clearTimeout(_ant1);
   }, 1000);
 };
 
+remoteMethod('');
+
 /** 目的仓选择时给目的仓名称赋值 */
 const destinationWarehouseNameChange = val => {
   details.query.destinationWarehouseName = details.options.find(
diff --git a/src/views/waybill/TemporaryStorageList.vue b/src/views/waybill/TemporaryStorageList.vue
index b9ac67de..d43e1980 100644
--- a/src/views/waybill/TemporaryStorageList.vue
+++ b/src/views/waybill/TemporaryStorageList.vue
@@ -311,27 +311,25 @@
       </el-form>
     </div>
 
-    <template #footer>
-      <div class="flex-c-c dialog-footer">
-        <el-button
-          icon="Position"
-          type="primary"
-          :loading="details.loadingObj.addTagLoading"
-          @click="handleSubmitAddTag(ruleFormRef)"
-        >
-          提 交
-        </el-button>
-        <el-button
-          icon="Refresh"
-          type="primary"
-          :loading="details.loadingObj.addTagLoading"
-          @click="handleRefreshAddTag(ruleFormRef)"
-        >
-          重 置
-        </el-button>
-        <el-button icon="Close" @click="details.popUpShow.addTagVisited = false"> 取 消 </el-button>
-      </div>
-    </template>
+    <div class="flex-c-c dialog-footer">
+      <el-button icon="Close" @click="details.popUpShow.addTagVisited = false"> 取 消 </el-button>
+      <el-button
+        icon="Refresh"
+        type="primary"
+        :loading="details.loadingObj.addTagLoading"
+        @click="() => handleRefreshAddTag(ruleFormRef)"
+      >
+        重 置
+      </el-button>
+      <el-button
+        icon="Position"
+        type="primary"
+        :loading="details.loadingObj.addTagLoading"
+        @click="() => handleSubmitAddTag(ruleFormRef)"
+      >
+        提 交
+      </el-button>
+    </div>
   </el-dialog>
 
   <!-- 导入 -- 批量开标签 -->
@@ -1237,50 +1235,63 @@ const handleClose = res => {
 };
 
 /** 开标签提交 */
-const handleSubmitAddTag = async (formEl: FormInstance | undefined) => {
+const handleSubmitAddTag = (formEl: FormInstance | undefined) => {
   if (!formEl) return;
-  await formEl.validate(async (valid, fields) => {
-    if (valid) {
-      console.log('submit!');
-
-      console.log('details.addTagForm :>> ', details.addTagForm);
-      try {
-        if (details.addTagForm.area.length < 2) return ElMessage.warning('区域最少选择到市');
-
-        details.loadingObj.addTagLoading = true;
-
-        const res = await postOpenLabel({
-          ...details.addTagForm,
-          area: details.addTagForm.area.join(','),
-        });
-        const { code } = res.data;
-
-        if (code !== 200) return;
-        ElMessage.success('添加成功');
-        details.popUpShow.addTagVisited = false;
-        initOnLoad({}, true);
-      } catch (error) {
-        console.log('error :>> ', error);
-      } finally {
-        details.loadingObj.addTagLoading = false;
+  formEl.validate((valid, fields) => {
+    ElMessageBox.confirm('确认提交吗?', '提示', {
+      confirmButtonText: '确认',
+      cancelButtonText: '取消',
+      type: 'warning',
+    }).then(async () => {
+      if (valid) {
+        console.log('submit!');
+
+        console.log('details.addTagForm :>> ', details.addTagForm);
+        try {
+          if (details.addTagForm.area.length < 2) return ElMessage.warning('区域最少选择到市');
+
+          details.loadingObj.addTagLoading = true;
+
+          const res = await postOpenLabel({
+            ...details.addTagForm,
+            area: details.addTagForm.area.join(','),
+          });
+          const { code } = res.data;
+
+          if (code !== 200) return;
+          ElMessage.success('添加成功');
+          details.popUpShow.addTagVisited = false;
+          initOnLoad({}, true);
+        } catch (error) {
+          console.log('error :>> ', error);
+        } finally {
+          details.loadingObj.addTagLoading = false;
+        }
+      } else {
+        console.log('error submit!', fields);
       }
-    } else {
-      console.log('error submit!', fields);
-    }
+    });
   });
 };
 
 /** 开标签重置 */
 const handleRefreshAddTag = (formEl: FormInstance | undefined) => {
+  console.log('123123 :>> ', 123123);
   if (!formEl) return;
-  formEl.resetFields();
+  ElMessageBox.confirm('确认重置吗?', '提示', {
+    confirmButtonText: '确认',
+    cancelButtonText: '取消',
+    type: 'warning',
+  }).then(() => {
+    formEl.resetFields();
+  });
 };
 
 /** 开启开标签弹窗 */
 const handleOpenAddTagDlog = () => {
   details.popUpShow.addTagVisited = true;
 
-  handleRefreshAddTag(ruleFormRef.value);
+  ruleFormRef.value.resetFields();
 };
 
 onActivated(() => {
diff --git a/src/views/waybill/WarehousingByTrainNumber.vue b/src/views/waybill/WarehousingByTrainNumber.vue
index 90085b95..c9fee6a9 100644
--- a/src/views/waybill/WarehousingByTrainNumber.vue
+++ b/src/views/waybill/WarehousingByTrainNumber.vue
@@ -1,6 +1,6 @@
 <template>
   <basic-container>
-    <div class="avue-crud">
+    <div class="avue-crud" v-loading="details.loadingObj.pageLoading">
       <!-- 搜索模块 -->
       <div v-h5uShow="!search">
         <!-- 查询模块 -->
@@ -32,7 +32,9 @@
         <div class="avue-crud__header">
           <!-- 头部左侧按钮模块 -->
           <div class="avue-crud__left">
-            <el-button type="primary" icon="Van" @click="handlePutInStorage">批量入库</el-button>
+            <el-button type="primary" icon="Van" @click="handleBatchPutInStorage"
+              >批量入库</el-button
+            >
           </div>
           <!-- 头部右侧按钮模块 -->
           <div class="avue-crud__right">
@@ -50,15 +52,24 @@
           ref="tableNodeRef"
           :columnList="details.columnList"
           :tableData="details.data"
-          :loading="loadingObj.packageListLoading"
+          :loading="loadingObj.list"
           @inputTxt="inputsc"
           @timeCheck="timesc"
           @btnCheck="btnsc"
           @selectCheck="selectsc"
           @selection="selectionChange"
+          :isselectfun="handleIsSelect"
         >
           <template #default="slotProps">
-            <template v-if="slotProps.scope.column.label === '操作'"> </template>
+            <template v-if="slotProps.scope.column.label === '操作'">
+              <el-text
+                v-if="Number(slotProps.scope.row.isIncoming) === 1"
+                @click="handlePutInStorage(slotProps.scope)"
+              >
+                入库
+              </el-text>
+              <el-text @click="handleGoDetails(slotProps.scope)">包明细</el-text>
+            </template>
           </template>
         </tablecmt>
       </el-row>
@@ -152,7 +163,7 @@ const details = reactive<any>({
   loadingObj: {
     /** 列表加载loading */
     list: false,
-    packageListLoading: false,
+    pageLoading: false,
   },
   /** 列表复选框选中的数据 */
   selectionList: [],
@@ -222,9 +233,10 @@ const searchChange = () => {
 /** 清空表单 */
 const searchReset = () => {
   details.query = {};
-  details.stockupDate = [];
-  details.page.currentPage = 1;
-  onLoad();
+  details.data = [];
+  for (let i = 0; i < details.columnList.length; i++) {
+    details.columnList[i].values = '';
+  }
 };
 
 /** 展开列表控件 */
@@ -242,6 +254,7 @@ const searchHide = () => {
 /** 表格表头输入框搜索 */
 const inputsc = (index, row) => {
   details.query[row.prop] = index;
+  if (!index) delete details.query[row.prop];
   onLoad();
 };
 
@@ -295,20 +308,83 @@ const setnewcolum = (newarr, headarr, type) => {
 };
 
 /** 入库 */
-const handlePutInStorage = row => {
+const handlePutInStorage = ({ row }) => {
+  ElMessageBox.confirm('确认批量入库吗?', '警告', {
+    confirmButtonText: '确认',
+    cancelButtonText: '取消',
+    type: 'warning',
+  })
+    .then(async () => {
+      try {
+        details.loadingObj.pageLoading = true;
+
+        const res = await postIncomingBatchOrder({
+          advanceIds: [row.id],
+          incomingType: details.searchType === 'orderCode' ? 5 : 4,
+        });
+
+        const { code, msg } = res.data;
+        if (code !== 200) return;
+        ElMessage.success(msg);
+        onLoad();
+      } catch (error) {
+        console.log('error :>> ', error);
+      } finally {
+        details.loadingObj.pageLoading = false;
+      }
+    })
+    .catch(() => {});
+};
+
+/** 批量入库 */
+const handleBatchPutInStorage = () => {
+  if (!details.selectionList.length) return ElMessage.error('请选择需要入库的数据');
+
   ElMessageBox.confirm('确认批量入库吗?', '警告', {
     confirmButtonText: '确认',
     cancelButtonText: '取消',
     type: 'warning',
   })
-    .then(() => {
-      ElMessage({
-        type: 'success',
-        message: '入库成功',
-      });
+    .then(async () => {
+      try {
+        details.loadingObj.pageLoading = true;
+
+        const res = await postIncomingBatchOrder({
+          advanceIds: details.selectionList.map(val => val.id),
+          incomingType: details.searchType === 'orderCode' ? 5 : 4,
+        });
+
+        const { code, msg } = res.data;
+        if (code !== 200) return;
+        ElMessage.success(msg);
+        onLoad();
+      } catch (error) {
+        console.log('error :>> ', error);
+      } finally {
+        details.loadingObj.pageLoading = false;
+      }
     })
     .catch(() => {});
 };
+
+/** 详情 */
+const handleGoDetails = ({ row }) => {
+  $router.push({
+    path: '/waybill/orderPackageListDetails?name=包明细',
+    query: {
+      id: row.id,
+      name: `订单 -- ${row.orderCode} 包明细`,
+    },
+  });
+};
+
+const handleIsSelect = val => {
+  if (Number(val.isIncoming) === 1) {
+    return true;
+  } else {
+    return false;
+  }
+};
 </script>
 
 <style scoped lang="scss">

From 759994dbb873ba79f3f14f3380fceda1652358d6 Mon Sep 17 00:00:00 2001
From: qb <1191961160@qq.com>
Date: Tue, 2 Apr 2024 18:44:18 +0800
Subject: [PATCH 3/7] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E5=AF=BC=E5=85=A5?=
 =?UTF-8?q?=E6=96=B0=E5=A2=9Eloading?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/basicdata/brand/basicClient.vue | 417 ++++++++++++----------
 1 file changed, 221 insertions(+), 196 deletions(-)

diff --git a/src/views/basicdata/brand/basicClient.vue b/src/views/basicdata/brand/basicClient.vue
index 0ccaedbc..8247b55d 100644
--- a/src/views/basicdata/brand/basicClient.vue
+++ b/src/views/basicdata/brand/basicClient.vue
@@ -60,7 +60,7 @@
             <el-button type="danger" icon="el-icon-delete" @click="handleDelete" plain
               >删 除</el-button
             >
-            <el-button type="danger" icon="el-icon-delete" @click="handleImport">导 入 </el-button>
+            <el-button type="danger" icon="Upload" @click="handleImport">导 入 </el-button>
           </div>
           <!-- 头部右侧按钮模块 -->
           <div class="avue-crud__right">
@@ -184,193 +184,201 @@
         :close-on-click-modal="false"
         append-to-body
       >
-        <el-form :disabled="view" ref="form" :model="form" :rules="rules" label-width="120px">
-          <!-- 表单字段 -->
-          <el-form-item label="客户编码" prop="clientCode">
-            <el-input
-              v-model="form.clientCode"
-              :validate-method="validateInput"
-              placeholder="请输入客户编码"
-              style="width: 100%"
-              :disabled="viewClientEntd"
-            />
-          </el-form-item>
-          <el-form-item label="客户名称" prop="clientName">
-            <el-input v-model="form.clientName" placeholder="请输入客户名称" style="width: 100%" />
-          </el-form-item>
-          <el-form-item label="客户类型" prop="clientType">
-            <!--            <el-input v-model="form.clientName" placeholder="请输入客户名称"  style="width: 100%"/>-->
-            <!--            <el-select v-model="form.clientType" class="m-2" placeholder="请选择客户类型" style="width: 100%">-->
-            <!--              <el-option label="发货方" value="1"/>-->
-            <!--              <el-option label="收货方" value="2"/>-->
-            <!--            </el-select>-->
-            <el-select
-              v-model="form.clientType"
-              class="m-2"
-              placeholder="请选择客户端类型"
-              style="width: 100%"
-            >
-              <el-option
-                v-for="item in clientType"
-                :key="item.dictKey"
-                :label="item.dictValue"
-                :value="item.dictKey"
+        <div v-loading="loadingObj.submitLoading">
+          <el-form :disabled="view" ref="form" :model="form" :rules="rules" label-width="120px">
+            <!-- 表单字段 -->
+            <el-form-item label="客户编码" prop="clientCode">
+              <el-input
+                v-model="form.clientCode"
+                :validate-method="validateInput"
+                placeholder="请输入客户编码"
+                style="width: 100%"
+                :disabled="viewClientEntd"
               />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="服务类型" prop="typeServiceList">
-            <el-select
-              v-model="form.typeServiceList"
-              multiple
-              placeholder="请选择"
-              style="width: 100%"
-              @change="coverCharge"
-            >
-              <el-option
-                v-for="item in freightType"
-                :key="item.dictKey"
-                :label="item.dictValue"
-                :value="item.dictKey"
+            </el-form-item>
+            <el-form-item label="客户名称" prop="clientName">
+              <el-input
+                v-model="form.clientName"
+                placeholder="请输入客户名称"
+                style="width: 100%"
+              />
+            </el-form-item>
+            <el-form-item label="客户类型" prop="clientType">
+              <!--            <el-input v-model="form.clientName" placeholder="请输入客户名称"  style="width: 100%"/>-->
+              <!--            <el-select v-model="form.clientType" class="m-2" placeholder="请选择客户类型" style="width: 100%">-->
+              <!--              <el-option label="发货方" value="1"/>-->
+              <!--              <el-option label="收货方" value="2"/>-->
+              <!--            </el-select>-->
+              <el-select
+                v-model="form.clientType"
+                class="m-2"
+                placeholder="请选择客户端类型"
+                style="width: 100%"
               >
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="配送类型" prop="businessType" v-if="distriType">
-            <el-radio-group
-              v-model="form.businessType"
-              class="ml-4"
-              v-for="item in distributionType"
-            >
-              <el-radio :label="item.dictKey" size="large" style="margin-right: 25px">{{
-                item.dictValue
-              }}</el-radio>
-              <!--                  <el-radio label="2" size="large">Option 2</el-radio>-->
-            </el-radio-group>
-            <!--              </div>-->
-          </el-form-item>
-          <!--                    <el-form-item label="客户端类型" prop="typeService">
-          &lt;!&ndash;            <el-input v-model="form.typeService" placeholder="请输入客户类型"/>&ndash;&gt;
-          &lt;!&ndash;            <el-input v-model="form.typeService" placeholder="请输入客户类型;1 C端  2 B端"/>&ndash;&gt;
-                      <el-select v-model="form.typeService" class="m-2" placeholder="请选择客户端类型" style="width: 100%">
-                        <el-option
-                          v-for="item in clientType"
-                          :key="item.dictKey"
-                          :label="item.dictValue"
-                          :value="item.dictKey"
-
-                        />
-                      </el-select>
-                    </el-form-item>-->
-          <el-form-item label="联系人" prop="linkman" v-if="viewEntd">
-            <el-input v-model="form.linkman" placeholder="请输入联系人" style="width: 100%" />
-          </el-form-item>
-          <el-form-item label="联系电话" prop="phone" v-if="viewEntd">
-            <el-input v-model="form.phone" placeholder="请输入联系电话" style="width: 100%" />
-          </el-form-item>
-          <el-form-item label="地址" prop="bladeRegionProvinceId">
-            <!--            <el-input v-model="form.bladeRegionProvinceId" placeholder="请输入省份"/>-->
-            <el-cascader
-              :options="optioner"
-              style="width: 100%"
-              v-model="form.bladeRegionProvinceId"
-              :props="{
-                checkStrictly: false,
-              }"
-              filterable
-            >
-              <template #default="{ node, data }">
-                <span>{{ data.label }}</span>
-                <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-              </template>
-            </el-cascader>
-          </el-form-item>
-          <el-form-item label="详细地址" prop="detailedly">
-            <el-input v-model="form.detailedly" placeholder="请填写详细地址" style="width: 100%" />
-          </el-form-item>
-          <el-form-item label="默认付款方式" prop="defaultPaymentMethods">
-            <el-select v-model="form.defaultPaymentMethods" placeholder="请选择默认付款方式">
-              <el-option
-                v-for="item in defaultPaymentMethodsOptions"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
+                <el-option
+                  v-for="item in clientType"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="服务类型" prop="typeServiceList">
+              <el-select
+                v-model="form.typeServiceList"
+                multiple
+                placeholder="请选择"
+                style="width: 100%"
+                @change="coverCharge"
+              >
+                <el-option
+                  v-for="item in freightType"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="配送类型" prop="businessType" v-if="distriType">
+              <el-radio-group
+                v-model="form.businessType"
+                class="ml-4"
+                v-for="item in distributionType"
+              >
+                <el-radio :label="item.dictKey" size="large" style="margin-right: 25px">{{
+                  item.dictValue
+                }}</el-radio>
+                <!--                  <el-radio label="2" size="large">Option 2</el-radio>-->
+              </el-radio-group>
+              <!--              </div>-->
+            </el-form-item>
+            <!--                    <el-form-item label="客户端类型" prop="typeService">
+            &lt;!&ndash;            <el-input v-model="form.typeService" placeholder="请输入客户类型"/>&ndash;&gt;
+            &lt;!&ndash;            <el-input v-model="form.typeService" placeholder="请输入客户类型;1 C端  2 B端"/>&ndash;&gt;
+                        <el-select v-model="form.typeService" class="m-2" placeholder="请选择客户端类型" style="width: 100%">
+                          <el-option
+                            v-for="item in clientType"
+                            :key="item.dictKey"
+                            :label="item.dictValue"
+                            :value="item.dictKey"
+  
+                          />
+                        </el-select>
+                      </el-form-item>-->
+            <el-form-item label="联系人" prop="linkman" v-if="viewEntd">
+              <el-input v-model="form.linkman" placeholder="请输入联系人" style="width: 100%" />
+            </el-form-item>
+            <el-form-item label="联系电话" prop="phone" v-if="viewEntd">
+              <el-input v-model="form.phone" placeholder="请输入联系电话" style="width: 100%" />
+            </el-form-item>
+            <el-form-item label="地址" prop="bladeRegionProvinceId">
+              <!--            <el-input v-model="form.bladeRegionProvinceId" placeholder="请输入省份"/>-->
+              <el-cascader
+                :options="optioner"
+                style="width: 100%"
+                v-model="form.bladeRegionProvinceId"
+                :props="{
+                  checkStrictly: false,
+                }"
+                filterable
+              >
+                <template #default="{ node, data }">
+                  <span>{{ data.label }}</span>
+                  <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
+                </template>
+              </el-cascader>
+            </el-form-item>
+            <el-form-item label="详细地址" prop="detailedly">
+              <el-input
+                v-model="form.detailedly"
+                placeholder="请填写详细地址"
+                style="width: 100%"
               />
-            </el-select>
-          </el-form-item>
-          <!--          <el-form-item label="三方商城" prop="tripartiteMall">-->
-          <!--            <el-input v-model="form.tripartiteMall" placeholder="请填写三方商城" style="width: 100%" />-->
-          <!--          </el-form-item>-->
-          <!--          <el-form-item label="开票信息" prop="billingInformation">-->
-          <!--            <el-input v-model="form.billingInformation" placeholder="请填写开票信息" style="width: 100%" />-->
-          <!--          </el-form-item>-->
-          <!--          <el-form-item label="市" prop="bladeRegionCityId">-->
-          <!--            <el-input v-model="form.bladeRegionCityId" placeholder="请输入市"/>-->
-          <!--          </el-form-item>-->
-          <!--          <el-form-item label="区/县" prop="bladeRegionAreaId">-->
-          <!--            <el-input v-model="form.bladeRegionAreaId" placeholder="请输入区/县"/>-->
-          <!--          </el-form-item>-->
-          <el-form-item label="合同附件" prop="leaseAccessories" style="width: 100%">
-            <!--            <el-input v-model="form.leaseAccessories" placeholder="请输入合同附件"/>-->
-            <el-upload
-              v-model:file-list="fileList"
-              class="upload-demo"
-              :action="action"
-              :headers="headers"
-              multiple
-              :on-preview="handlePreview"
-              :on-success="
-                (response, file, fileList) => {
-                  uploadSuccess(fileList);
-                }
-              "
-              :on-remove="handleRemove"
-              :before-remove="beforeRemove"
-              :before-upload="beforeUploadFn"
-              :limit="3"
-              :on-exceed="handleExceed"
-            >
-              <el-button type="Primary" icon="Position">上传</el-button>
-              <template #tip>
-                <div class="el-upload__tip">大小不超过500KB的jpg/png文件。</div>
-              </template>
-            </el-upload>
-            <el-image-viewer
-              v-if="showImgViewer"
-              :url-list="imgPreviewUrl"
-              @close="handleCo"
-              :z-index="300"
-              fit="cover"
-            />
-          </el-form-item>
-          <el-form-item label="合同开始时间" prop="contractStartTime" label-width="120px">
-            <el-date-picker
-              v-model="form.contractStartTime"
-              type="date"
-              placeholder="选择时间"
-              format="YYYY/MM/DD HH:mm:ss"
-              value-format="YYYY-MM-DD HH:mm:ss"
-            />
-          </el-form-item>
+            </el-form-item>
+            <el-form-item label="默认付款方式" prop="defaultPaymentMethods">
+              <el-select v-model="form.defaultPaymentMethods" placeholder="请选择默认付款方式">
+                <el-option
+                  v-for="item in defaultPaymentMethodsOptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <!--          <el-form-item label="三方商城" prop="tripartiteMall">-->
+            <!--            <el-input v-model="form.tripartiteMall" placeholder="请填写三方商城" style="width: 100%" />-->
+            <!--          </el-form-item>-->
+            <!--          <el-form-item label="开票信息" prop="billingInformation">-->
+            <!--            <el-input v-model="form.billingInformation" placeholder="请填写开票信息" style="width: 100%" />-->
+            <!--          </el-form-item>-->
+            <!--          <el-form-item label="市" prop="bladeRegionCityId">-->
+            <!--            <el-input v-model="form.bladeRegionCityId" placeholder="请输入市"/>-->
+            <!--          </el-form-item>-->
+            <!--          <el-form-item label="区/县" prop="bladeRegionAreaId">-->
+            <!--            <el-input v-model="form.bladeRegionAreaId" placeholder="请输入区/县"/>-->
+            <!--          </el-form-item>-->
+            <el-form-item label="合同附件" prop="leaseAccessories" style="width: 100%">
+              <!--            <el-input v-model="form.leaseAccessories" placeholder="请输入合同附件"/>-->
+              <el-upload
+                v-model:file-list="fileList"
+                class="upload-demo"
+                :action="action"
+                :headers="headers"
+                multiple
+                :on-preview="handlePreview"
+                :on-success="
+                  (response, file, fileList) => {
+                    uploadSuccess(fileList);
+                  }
+                "
+                :on-remove="handleRemove"
+                :before-remove="beforeRemove"
+                :before-upload="beforeUploadFn"
+                :limit="3"
+                :on-exceed="handleExceed"
+              >
+                <el-button type="Primary" icon="Position">上传</el-button>
+                <template #tip>
+                  <div class="el-upload__tip">大小不超过500KB的jpg/png文件。</div>
+                </template>
+              </el-upload>
+              <el-image-viewer
+                v-if="showImgViewer"
+                :url-list="imgPreviewUrl"
+                @close="handleCo"
+                :z-index="300"
+                fit="cover"
+              />
+            </el-form-item>
+            <el-form-item label="合同开始时间" prop="contractStartTime" label-width="120px">
+              <el-date-picker
+                v-model="form.contractStartTime"
+                type="date"
+                placeholder="选择时间"
+                format="YYYY/MM/DD HH:mm:ss"
+                value-format="YYYY-MM-DD HH:mm:ss"
+              />
+            </el-form-item>
 
-          <el-form-item label="合同结束时间" prop="contractEntTime" label-width="120px">
-            <el-date-picker
-              v-model="form.contractEntTime"
-              type="date"
-              placeholder="选择时间"
-              format="YYYY/MM/DD HH:mm:ss"
-              value-format="YYYY-MM-DD HH:mm:ss"
-            />
-          </el-form-item>
-        </el-form>
-        <!-- 表单按钮 -->
-        <template #footer>
-          <span v-if="!view" class="dialog-footer">
+            <el-form-item label="合同结束时间" prop="contractEntTime" label-width="120px">
+              <el-date-picker
+                v-model="form.contractEntTime"
+                type="date"
+                placeholder="选择时间"
+                format="YYYY/MM/DD HH:mm:ss"
+                value-format="YYYY-MM-DD HH:mm:ss"
+              />
+            </el-form-item>
+          </el-form>
+          <!-- 表单按钮 -->
+          <div v-if="!view" class="flex-c-c">
             <el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit('form')"
               >提 交</el-button
             >
             <el-button icon="el-icon-circle-close" @click="box = false">取 消</el-button>
-          </span>
-        </template>
+          </div>
+        </div>
       </el-dialog>
 
       <!-- 账号绑定弹出框页面
@@ -805,6 +813,9 @@ export default {
           label: '内部结算',
         },
       ],
+      loadingObj: {
+        submitLoading: false,
+      },
     };
   },
   created() {},
@@ -1191,42 +1202,56 @@ export default {
 
       if (!this.form.id) {
         console.log('添加提交的数据:', this.form);
-        this.$refs[from].validate(valid => {
+        this.$refs[from].validate(async valid => {
           if (valid) {
-            // this.form.typeService = !!this.form.typeService ? parseInt(this.form.typeService) : undefined;
-            this.form.bladeRegionCityId = this.form.bladeRegionProvinceId[1];
-            this.form.bladeRegionAreaId = this.form.bladeRegionProvinceId[2];
-            this.form.bladeRegionProvinceId = this.form.bladeRegionProvinceId[0];
-            console.log('上传llll>>>', this.form);
-            add(this.form).then(() => {
+            try {
+              this.loadingObj.submitLoading = true;
+
+              // this.form.typeService = !!this.form.typeService ? parseInt(this.form.typeService) : undefined;
+              this.form.bladeRegionCityId = this.form.bladeRegionProvinceId[1];
+              this.form.bladeRegionAreaId = this.form.bladeRegionProvinceId[2];
+              this.form.bladeRegionProvinceId = this.form.bladeRegionProvinceId[0];
+              console.log('上传llll>>>', this.form);
+              await add(this.form);
               this.box = false;
               this.onLoad(this.page);
               this.$message({
                 type: 'success',
                 message: '操作成功!',
               });
-            });
+            } catch (error) {
+              console.log('error :>> ', error);
+            } finally {
+              this.loadingObj.submitLoading = false;
+            }
           } else {
             console.log('error submit!!');
             return false;
           }
         });
       } else {
-        this.$refs[from].validate(valid => {
+        this.$refs[from].validate(async valid => {
           if (valid) {
-            console.log('修改提交的数据:', this.form);
-            // this.form.typeService = !!this.form.typeService ? parseInt(this.form.typeService) : undefined;
-            this.form.bladeRegionCityId = this.form.bladeRegionProvinceId[1];
-            this.form.bladeRegionAreaId = this.form.bladeRegionProvinceId[2];
-            this.form.bladeRegionProvinceId = this.form.bladeRegionProvinceId[0];
-            update(this.form).then(() => {
+            try {
+              this.loadingObj.submitLoading = true;
+
+              console.log('修改提交的数据:', this.form);
+              // this.form.typeService = !!this.form.typeService ? parseInt(this.form.typeService) : undefined;
+              this.form.bladeRegionCityId = this.form.bladeRegionProvinceId[1];
+              this.form.bladeRegionAreaId = this.form.bladeRegionProvinceId[2];
+              this.form.bladeRegionProvinceId = this.form.bladeRegionProvinceId[0];
+              await update(this.form);
               this.box = false;
               this.onLoad(this.page);
               this.$message({
                 type: 'success',
                 message: '操作成功!',
               });
-            });
+            } catch (error) {
+              console.log('error :>> ', error);
+            } finally {
+              this.loadingObj.submitLoading = false;
+            }
           } else {
             console.log('error submit!!');
             return false;

From 31041752017b73d280a6457795875fd42b064537 Mon Sep 17 00:00:00 2001
From: qb <1191961160@qq.com>
Date: Tue, 2 Apr 2024 19:12:00 +0800
Subject: [PATCH 4/7] =?UTF-8?q?=E6=9A=82=E5=AD=98=E5=8D=95=E6=96=B0?=
 =?UTF-8?q?=E5=A2=9E=E6=B1=87=E9=80=9A=E5=95=86=E5=9F=8E=E6=9F=A5=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/option/waybill/TemporaryStorageList.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/option/waybill/TemporaryStorageList.js b/src/option/waybill/TemporaryStorageList.js
index 7226745e..7b1f1a7b 100644
--- a/src/option/waybill/TemporaryStorageList.js
+++ b/src/option/waybill/TemporaryStorageList.js
@@ -28,7 +28,7 @@ export const columnList = [
   {
     prop: 'htMallName',
     label: '汇通商场',
-    type: 1,
+    type: 2,
     values: '',
     width: '150',
     checkarr: [],

From 658f862650d63e242076448132201de04868fc3b Mon Sep 17 00:00:00 2001
From: qb <1191961160@qq.com>
Date: Tue, 2 Apr 2024 21:51:28 +0800
Subject: [PATCH 5/7] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/api/distribution/createTask.js            | 51 +++++-----
 .../checkInventoryTask/createTask.vue         | 98 +++++++------------
 2 files changed, 61 insertions(+), 88 deletions(-)

diff --git a/src/api/distribution/createTask.js b/src/api/distribution/createTask.js
index 4edb7355..026b35da 100644
--- a/src/api/distribution/createTask.js
+++ b/src/api/distribution/createTask.js
@@ -63,32 +63,32 @@ export const $_postBatchDelete = params => {
   });
 };
 // 新增盘点任务
-export const $_submit = (data) => {
+export const $_submit = data => {
   return request({
     url: '/api/logpm-basic/material/submit',
     method: 'post',
-    data
-  })
-}
+    data,
+  });
+};
 /**
  * 盘点详情
  */
 export const $_getDetailInfo = params => {
   return request({
     url: '/api/logpm-warehouse/blade-taskQuest/taskQuest/getDetailInfo',
-    method:'get',
+    method: 'get',
     params,
   });
 };
 
 // 查询货位信息
-export const $_getList = ( params) => {
+export const $_getList = params => {
   return request({
     url: '/api/logpm-basicdata/goodsAllocation/list',
     method: 'get',
-    params
-  })
-}
+    params,
+  });
+};
 
 /**
  * 盘点状态修改
@@ -96,7 +96,7 @@ export const $_getList = ( params) => {
 export const $_updateQuestChildInfo = data => {
   return request({
     url: '/api/logpm-warehouse/blade-taskQuest/taskQuest/updateQuestChildInfo',
-    method:'put',
+    method: 'put',
     data,
   });
 };
@@ -107,42 +107,33 @@ export const $_updateQuestChildInfo = data => {
 export const $_getQuestChildInfo = params => {
   return request({
     url: '/api/logpm-warehouse/blade-taskQuest/taskQuest/getQuestChildInfo',
-    method:'get',
+    method: 'get',
     params,
   });
 };
 
-
 /**
  * 盘点查询
  */
 export const $_materialList = params => {
   return request({
     url: '/api/logpm-basic/material/list',
-    method:'get',
+    method: 'get',
     params,
   });
 };
 
-
-
-
-
-
 /**
  * 删除盘点数据接口
  */
 export const $_deleteQuestChild = params => {
   return request({
     url: '/api/logpm-warehouse/blade-taskQuest/taskQuest/deleteQuestChild',
-    method:'get',
+    method: 'get',
     params,
   });
 };
 
-
-
-
 /**
  * 盘点详情保存
  */
@@ -154,8 +145,6 @@ export const $_updateDetailInfo = data => {
   });
 };
 
-
-
 /**
  * 盘点日期延期
  */
@@ -167,7 +156,6 @@ export const $_updateDate = data => {
   });
 };
 
-
 /**
  * 盘点对比数据
  */
@@ -205,7 +193,6 @@ export const $_exportGetContrastInfo = params => {
   });
 };
 
-
 // 盘点任务库存品
 export const $_QuestSelectInventory = params => {
   return request({
@@ -216,7 +203,6 @@ export const $_QuestSelectInventory = params => {
 };
 // 盘点任务零担
 
-
 export const $_taskQuestSelectZreo = params => {
   return request({
     url: '/api/logpm-warehouse/blade-taskQuest/taskQuest/SelectZreo',
@@ -224,3 +210,14 @@ export const $_taskQuestSelectZreo = params => {
     params,
   });
 };
+
+/**
+ * 未盘点数据导出
+ */
+export const postExportContrastStockInfo = params => {
+  return request({
+    url: '/api/logpm-warehouse/blade-taskQuest/taskQuest/exportContrastStockInfo',
+    method: 'get',
+    params,
+  });
+};
diff --git a/src/views/distribution/checkInventoryTask/createTask.vue b/src/views/distribution/checkInventoryTask/createTask.vue
index b205aa11..a95bb18c 100644
--- a/src/views/distribution/checkInventoryTask/createTask.vue
+++ b/src/views/distribution/checkInventoryTask/createTask.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="maxContent">
+  <div class="maxContent" v-loading="loadingObj.pageLoading">
     <!-- 搜索功能  -->
     <div>
       <!-- <div class="SoInput" v-show="searchSo">
@@ -158,6 +158,9 @@
             <el-button type="primary" @click="TcAddData" v-if="Statusjudgment">新 增</el-button>
             <el-button type="primary" @click="InventoryModification">提交修改</el-button>
             <el-button type="primary" @click="ModifyingStatus">修改状态</el-button>
+            <el-button icon="Download" type="primary" @click="handleUncountedExport">
+              导出
+            </el-button>
           </div>
           <div style="margin-left: 10px">
             <!-- v-if="NotCounted" -->
@@ -211,7 +214,7 @@
           >
             <template #header>
               <el-input
-                @change="InputSo(item)"
+                @change="() => InputSo(item)"
                 clearable
                 v-if="item.type == 5 || item.prop == 'categoryName' || item.prop == 'materialCode'"
                 v-model="item.values"
@@ -668,12 +671,13 @@ import {
   $_exportGetContrastInfo,
   $_getList,
   $_postBatchDelete,
+  postExportContrastStockInfo,
 } from '@/api/distribution/createTask';
 import { ElMessageBox } from 'element-plus';
 import { ElMessage } from 'element-plus';
 import { downloadXls } from '@/utils/util';
 import { getDictionaryBiz } from '@/api/system/dict';
-import { ref } from 'vue';
+import { ref, reactive } from 'vue';
 import { off } from 'dom7';
 const wLinput = ref(null); //物料编码搜索框
 const wLinputState = ref(false); //标记是否显示下拉框
@@ -730,6 +734,13 @@ const Statusjudgment = ref(false); //新增按钮
 const DbEx = ref(null); //对比明细导出
 const fullScreen = ref(false); //是否全屏
 const BatchAbandonment = ref([]); //首页废弃
+/** loading */
+const loadingObj = reactive({
+  /** 页面loading */
+  pageLoading: false,
+});
+/** 未盘点query */
+const uncountedQuery = reactive({});
 const radioList = ref([
   { label: 0, txt: '在库', input: 'stockNum', disabled: true },
   { label: 1, txt: '破损', input: 'wornNum', disabled: true },
@@ -1450,57 +1461,7 @@ const InputSo = val => {
   console.log(row.value, 'row.value');
   data.current = TccurrentPage.value;
   data.size = TcpageSize.value;
-  // if (val.prop == 'categoryName') {
-  //   //查询产品名称
-  //   data.name = val.values;
-  //   $_materialList(data).then(res => {
-  //     console.log(res, '查询的返回值');
-  //     if (res.data.data.records.length) {
-  //       Tctotal.value = res.data.data.total;
-  //       res.data.data.records.forEach(item => {
-  //         item.Checkbox = true;
-  //       });
-  //       TcPdloading.value = false;
-  //       console.log(res, '明细返回值');
-  //       TcPD.value = res.data.data.records;
-  //     } else {
-  //       Statusjudgment.value = true; //显示新增按钮
-  //       TcPD.value = res.data.data.records;
-  //       ElMessage({
-  //         message: '暂未查询到内容',
-  //         type: 'warning',
-  //       });
-  //     }
-  //   });
 
-  //   return;
-  // }
-  // if (val.prop == 'materialCode') {
-  //   //查询物料编码
-  //   data.sku = val.values;
-  //   $_materialList(data).then(res => {
-  //     console.log(res, '查询的返回值');
-  //     if (res.data.data.records.length) {
-  //       Tctotal.value = res.data.data.total;
-  //       res.data.data.records.forEach(item => {
-  //         item.Checkbox = true;
-  //       });
-  //       TcPdloading.value = false;
-  //       console.log(res, '明细返回值');
-  //       TcPD.value = res.data.data.records;
-  //     } else {
-  //       Statusjudgment.value = true; //显示新增按钮
-  //       TcPD.value = res.data.data.records;
-  //       ElMessage({
-  //         message: '暂未查询到内容',
-  //         type: 'warning',
-  //       });
-  //     }
-  //   });
-  //   return;
-  // }
-
-  // if (val.prop != 'categoryName' || val.prop != 'materialCode') {
   let dataS = {
     questNum: UncountedDetails.value.questNum,
     questId: UncountedDetails.value.id,
@@ -2463,7 +2424,6 @@ const InventorySubmit = () => {
     loading.value = true; //开启表格加载
     console.log(SubData, '处理好的数据');
     postAddtaskQuest(SubData).then(res => {
-    
       if ((res.data.code = 200)) {
         ElMessage({
           message: res.data.msg,
@@ -2498,14 +2458,13 @@ const InventorySubmit = () => {
   loading.value = true; //开启表格加载
   postAddtaskQuest(SubData).then(res => {
     if ((res.data.code = 200)) {
-        ElMessage({
-          message: res.data.msg,
-          type: 'success',
-        });
-        onLoad(); //体积之后初始化页面
-      }
+      ElMessage({
+        message: res.data.msg,
+        type: 'success',
+      });
+      onLoad(); //体积之后初始化页面
+    }
     console.log(res, '盘点计划提交成功');
-
   });
 };
 // 顶部废弃按钮
@@ -2555,6 +2514,23 @@ const DelayButton = () => {
   console.log('延期');
   dialogTabData.value = true;
 };
+
+/** 未盘点数据导出 */
+const handleUncountedExport = () => {
+  ElMessageBox.confirm('是否导出未盘点数据?').then(async () => {
+    try {
+      TcPdloading.value = true;
+      const res = await postExportContrastStockInfo({ questNum: UncountedDetails.value.questNum });
+      if (res.status !== 200) return;
+
+      downloadXls(res.data, '未盘点数据.xlsx');
+    } catch (error) {
+      console.log('error :>> ', error);
+    } finally {
+      TcPdloading.value = false;
+    }
+  });
+};
 </script>
 
 <style lang="scss" scoped>

From eb41ae9400cb657659332e3cb387da11c5e8d7e8 Mon Sep 17 00:00:00 2001
From: "pref_mail@163.com" <pref_mail@163.com>
Date: Tue, 2 Apr 2024 23:54:43 +0800
Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=82=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/distribution/inventory/distrilbutionBillLading.vue | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/views/distribution/inventory/distrilbutionBillLading.vue b/src/views/distribution/inventory/distrilbutionBillLading.vue
index 616f3370..7fb5ea7c 100644
--- a/src/views/distribution/inventory/distrilbutionBillLading.vue
+++ b/src/views/distribution/inventory/distrilbutionBillLading.vue
@@ -2907,7 +2907,6 @@ export default {
       }
       params.genre = 1;
       params.typeService = 3;
-      params.reservation = '30';
       params.isAll = 0;
       getListOne(page.currentPage, page.pageSize, Object.assign(params, this.queryOrder)).then(
         res => {

From b61ae8314f1b9e0e52981b1c0671d3f5baa6c999 Mon Sep 17 00:00:00 2001
From: qb <1191961160@qq.com>
Date: Wed, 3 Apr 2024 17:57:51 +0800
Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AF=A6=E6=83=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/static/icon_box.png                       |  Bin 0 -> 323 bytes
 src/static/icon_box_file.png                  |  Bin 0 -> 348 bytes
 src/static/icon_box_green.png                 |  Bin 0 -> 569 bytes
 src/static/icon_box_green1.png                |  Bin 0 -> 513 bytes
 src/static/icon_box_red.png                   |  Bin 0 -> 571 bytes
 src/static/icon_box_yellow.png                |  Bin 0 -> 233 bytes
 src/static/icon_car.png                       |  Bin 0 -> 460 bytes
 src/static/icon_car_blue.png                  |  Bin 0 -> 563 bytes
 src/static/icon_car_green.png                 |  Bin 0 -> 425 bytes
 src/static/icon_city.png                      |  Bin 0 -> 513 bytes
 src/static/icon_data.png                      |  Bin 0 -> 580 bytes
 src/static/icon_day.png                       |  Bin 0 -> 832 bytes
 src/static/icon_head.png                      |  Bin 0 -> 564 bytes
 src/static/icon_home.png                      |  Bin 0 -> 495 bytes
 src/static/icon_home1.png                     |  Bin 0 -> 620 bytes
 src/static/icon_home2.png                     |  Bin 0 -> 442 bytes
 src/static/icon_home_data.png                 |  Bin 0 -> 498 bytes
 src/static/icon_home_storage.png              |  Bin 0 -> 649 bytes
 src/static/icon_message.png                   |  Bin 0 -> 697 bytes
 src/static/icon_message_red.png               |  Bin 0 -> 639 bytes
 src/static/icon_money.png                     |  Bin 0 -> 516 bytes
 src/static/icon_money1.png                    |  Bin 0 -> 1045 bytes
 src/static/icon_money_day.png                 |  Bin 0 -> 1275 bytes
 src/static/icon_money_month.png               |  Bin 0 -> 1294 bytes
 src/static/icon_month.png                     |  Bin 0 -> 726 bytes
 src/static/icon_storage.png                   |  Bin 0 -> 1163 bytes
 src/static/listOfLoadedWagons.html            | 1247 --------
 .../checkInventoryTask/createTask.vue         |    7 +-
 .../checkInventoryTask/createTask2.vue        | 2697 +++++++++++++++++
 .../distributionDeliveryListedt.vue           |   64 +-
 src/views/wel/index.vue                       |  381 +--
 src/views/wel/index2.vue                      |  369 +++
 32 files changed, 3114 insertions(+), 1651 deletions(-)
 create mode 100644 src/static/icon_box.png
 create mode 100644 src/static/icon_box_file.png
 create mode 100644 src/static/icon_box_green.png
 create mode 100644 src/static/icon_box_green1.png
 create mode 100644 src/static/icon_box_red.png
 create mode 100644 src/static/icon_box_yellow.png
 create mode 100644 src/static/icon_car.png
 create mode 100644 src/static/icon_car_blue.png
 create mode 100644 src/static/icon_car_green.png
 create mode 100644 src/static/icon_city.png
 create mode 100644 src/static/icon_data.png
 create mode 100644 src/static/icon_day.png
 create mode 100644 src/static/icon_head.png
 create mode 100644 src/static/icon_home.png
 create mode 100644 src/static/icon_home1.png
 create mode 100644 src/static/icon_home2.png
 create mode 100644 src/static/icon_home_data.png
 create mode 100644 src/static/icon_home_storage.png
 create mode 100644 src/static/icon_message.png
 create mode 100644 src/static/icon_message_red.png
 create mode 100644 src/static/icon_money.png
 create mode 100644 src/static/icon_money1.png
 create mode 100644 src/static/icon_money_day.png
 create mode 100644 src/static/icon_money_month.png
 create mode 100644 src/static/icon_month.png
 create mode 100644 src/static/icon_storage.png
 delete mode 100644 src/static/listOfLoadedWagons.html
 create mode 100644 src/views/distribution/checkInventoryTask/createTask2.vue
 create mode 100644 src/views/wel/index2.vue

diff --git a/src/static/icon_box.png b/src/static/icon_box.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea5df03c953e92798f55ccb9e6089bb769685c51
GIT binary patch
literal 323
zcmV-J0lfZ+P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#{YgYYR5(v#WS}x&q_TMoU;{-u|MLoPGGs9^GH{S%!N30uKR$eCnD(Ze@iW*!
zmC678m>3u~l4BT5&p!qR|2w&io4^LDPx<fv|3AY9N(^LVWC*yK!?=+)2C7Z^Z^ppL
zP)Ugk8U8c0-^yb=MVnX#xlC>H|8NEdh6plUx#CtX<4TZTxC_-L|E~uMG>~av!>wG#
zMq&(vD}-5u!(!qL{LjF!;{QK}709k;WMYV5#0(nZ3?#w(qXsfCFsM%YU&F}A&`d(O
z!Il31&ro|ikFf<M*(go;FUQQp5C=4rnG{2ThW-8fk73ch0>(!u29jb3KDAWO%K#%Y
VXB9gelD_}|002ovPDHLkV1msOhlBtC

literal 0
HcmV?d00001

diff --git a/src/static/icon_box_file.png b/src/static/icon_box_file.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3d6782dbb36513c7dedfada272d567afe2dbc12
GIT binary patch
literal 348
zcmV-i0i*tjP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$7D+@wR5(w))FDU%Q5?td@Bf{GVwr})44WF4Eh54#D8e|qNvlO>GcGQ9YgUUe
zu-FZ|ps=dRw9R60=@3*<`5T6^jk{xyoxA+I&-=YUf1Z%?Cn<YO0c@VFgJ~c*$?f%l
z*Ki-N`ZkywZg^A6GdtG;a$}C7#plN^+o$1gei#h=4aDq>iS=VfuGu=ij|T6~v+zA{
z1>(H3dGr#~u-*n%?La!Xm9;pq1FTqrUEIoFiIExB<G=>!0*DuJm?fxkN$>UmiVoS#
z70BKQY6U*xXqm6@8FU7-ltVQDmIqKPu>YTG31bSVUQB-Fe*wV<7J<Wb8Yb^i!VH^!
ufJnh=4^^Kiow(79Z6!sAr|=$5*zyOGdR-N3*+Po|0000<MNUMnLSTY%%a;lO

literal 0
HcmV?d00001

diff --git a/src/static/icon_box_green.png b/src/static/icon_box_green.png
new file mode 100644
index 0000000000000000000000000000000000000000..189ec9ec82643156712e795935d595600e52bf92
GIT binary patch
literal 569
zcmV-90>=G`P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$^GQTOR5(w?ls#w^K@`V-Z+0)n6dFlmrNLN;BHCD~+(scbHVTR$f}jXNVwM==
zN5GsQ5*4|%5o}Ueq=+DrfG9*RU=S3+*1{%2Oh}<NLF8`d$=+^`nEQr+Q_j5k&Hw%1
zn<uREl6B_sAAq@xi)p_A{37j709q@n+6rHdY@%(;G;kn>=sU#eCw=8}HE3nvban@>
zjDmh4ug^(I2IOP{wZIsu)?p6zF0BQZ19K0yLdz^dS1d~BF){?Yh!TM8O~4=dQ#iu0
zYs;&l<-nQX4z8UbG-pt*0vnSH??DGq-G^~DV3@_KN7{c>4;cBg3p9%s#*x%*;1o)T
z@D!tW31tMhh%klcpJ)WQKMDGda1*g}ge-#`LW;2V<oso`z~r7>2RcD}OKM`pV|f0h
zW)#M;A{kUWf%9>pcuPV1aLsmH{mEhf!wR%gQ6djlQZ5Io&Jo%kT<1-!y12&i{IkWk
z%NjHn+(3wYYAv0uR;b(uTtxdoS`bE2cH?j_Qd*<2d01-Ze^S<4V0ME2gtCB<HZ0FT
zj?>-$y7t$bdE5;eAo3#iP`k+MWnAe%m_+3XFo^JtCA){y1HbD}n`k(Mo3~-}4n0F(
zOT!_T^$>Fou|Ftiz|n#E${tqx^$qUVSJ)t^dfPM!SR4KqA<?Q8!HOrx00000NkvXX
Hu0mjfpiBS0

literal 0
HcmV?d00001

diff --git a/src/static/icon_box_green1.png b/src/static/icon_box_green1.png
new file mode 100644
index 0000000000000000000000000000000000000000..77a966f0251ec1a35e861e8d9088d7bfbc4d93b4
GIT binary patch
literal 513
zcmV+c0{;DpP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$yGcYrR5(wy)G=riaTLe#@9!=dEJbt_9ZLu~!AYUuCMN3AL9`@7Q5<v-aS*qH
z)X~9N(xph7K<J<yOpA((AcBI!6@yY#&{YUhDDnPJlC)>4hqM>{kAL3#{NKBKJn@f@
z2EFp*{5ZaM7L&h|cVxES@wwkPx%zo4J_gS{%^l4A$h;TYvlA?iF<J{R!veQ)-Mbj9
zEEjHq?(PcP3^q7XD}~RtgUujB6w-hg4;D^^Q!#kqNpRF6UZujiNyfU|#)0`WAKJZ^
zE6v~-o*PdM0xq(L_0#V@_Q3K=zAWbzhXLhjcD@+C=!46_J;9A(K!c05QaJbD!8M@$
zN2SInV(f1nBvxp$s}{M|?}?JeB(ItX%H6@dD+aexv}|qA-YwW<GjhBE7EQXG09wP)
zmtU2b54t26?G3FsZjNb0$)M_qIdiNaMv_~Gs;~hNVY-gkzxl{o$0%iSQxV>xFP;PY
z`m>$#FB`nYvulb}LmZ0R9|SASU<NTg%p5u~Q7?v%`g6FH%PX6G-TfA+P_s{+HisMM
zSHH*WYqFU;;wdx9uJ@sRvyEuBKGFKRZGEMxEFtM9>HD@7c>O!100000NkvXXu0mjf
Dh<@$*

literal 0
HcmV?d00001

diff --git a/src/static/icon_box_red.png b/src/static/icon_box_red.png
new file mode 100644
index 0000000000000000000000000000000000000000..499ddb21d6cf4f56cb5e2bcc77dc72312f85894f
GIT binary patch
literal 571
zcmV-B0>u4^P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$^+`lQR5(w?lsjlsVHk#=_s_+25wRd5Qj4|VBD%PULv#?lEU6a6wjwBkh&U)(
zFW3qWiipL{r9+Q&NH9_CprztqQQD<z2bT^?b*MT7iQ$~j=BCxe(-w-J@ju`H{O|kS
z#0q~}VIKb;Xvt)hjcZTh_`*;&EwC_Gp$e^Q|7z4UhS*t#n7zii^BQ_Q^*3lkpdCB7
znMnLLrfJO2;9NhbqY4Qy8$?`_m;3Z5xDIHY2iB8Fj00`e;P=2Kuvv@&q-~XRo8)7D
zuSQ4n3!(MEp43g8OB2{pj0=dS%6;D8>>|c?%&j8u$BDS4yzISjV0UT?X)AD_?}cIF
z@f)B{z{hw9+?vPt0jChp<YiM!0q&?4;RA35F#~>{Ai5i8eV{c}$dly(e?5H}qZM&x
zff^rdP+soz(iPSsjebNcaH6XGB}L8=V-pHK%X>Oe3#~6oC5IKujey1sMcYSQX|Q(C
zSKyVrY*#6~QI&f^rKBes1MLn{blz?Y@PHtgLy<A$r%Fo08vE|gX8zssRj@7P>9OJ=
zh?T%EFb?Zc?s@p=9q-svZe}A}$)U9o1ZPpK8T{+OI>a<aJB8U@%Dnxy=(Z^@hYigw
zP>3)*@~*ZVtouk3`8^nO6p91NjFcwoKdi5?Rn_R<qL!Bn`~ln0xD@~rH9!CW002ov
JPDHLkV1hM<2p|9e

literal 0
HcmV?d00001

diff --git a/src/static/icon_box_yellow.png b/src/static/icon_box_yellow.png
new file mode 100644
index 0000000000000000000000000000000000000000..a63726dbb4730b4986e1b1d99b9665846858148e
GIT binary patch
literal 233
zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VV{wqX6T`Z5GB1Ig#hxyXAr}70
zDGQ7emTaozNnrl(U;5Xdw^?#?xp7|%bL^{?!fn-34>$g)-{ft;{J36j6VJc%KUxjT
z&qqy&YiSIQeQ#`FpfMp;f%!1=u{U?STqJ({XJ=-9%pKzW&)dMjplCs)&yvRf|K$_T
z+<e@z=I4Kr>3?~8dia`;IIv|^&-@{wWW>|HvoSbky0JmSB?-%hkF3e(-g!)E@$ECb
f@g-pI5jKVcH&a9f57)i`I+wxI)z4*}Q$iB}iws(~

literal 0
HcmV?d00001

diff --git a/src/static/icon_car.png b/src/static/icon_car.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d25f360782e1e717cae5ba31e6ca0dac7f1e242
GIT binary patch
literal 460
zcmV;-0W<!IP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$hDk(0R5(w?)XytKQ53-O?|EYe$=HyEr6eh3Y2%r)ure0@16fF#M>Z(2AS@WN
zvX<=p+9?fE>}03NLXswg#gt#~>X{ib?lnlc%lpp#+;h*l?+SlB<c~ex!L4XLNGSUT
zY9HHKHN_>toylq*tpfyKb`TK8u$?|#Y!cj_4&$ojZ(->m18M+O9OOJ>0}DkZLhjqV
z2GxU4iDDZ2uRdkG8EpsVKFnvJda%I}R>lh{%IiSL2X%z)EEr28gwu^OgWEGUuDhAc
zM#X99E;WNPgdG|7BF&)pb$y}&zrO&U&j|Hi{vNbwMXcjbHGFnE0k4i9hh)p}NB74&
z=l_A~0b~T+3zQ5ZQl?G*+ZhV8*iP3g5}Rs4WJwDuE`USs?wgZc_PQDH&w~U~3oM`p
zJ$MRSYv3Dh)1YqKSac6jwTLx}a^oll5K4HWipK5}Q{T+*;l@NczQ7t#m0FxYNgJWa
z;#Zg8>jySAl!FB8up~%A?b6hvJ8H(S{nI;_CH@6Ei>aeU_31_c0000<MNUMnLSTZm
C5X#B`

literal 0
HcmV?d00001

diff --git a/src/static/icon_car_blue.png b/src/static/icon_car_blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..933f7c59bc093bcd40c82bff6cca2a507d6a9a5c
GIT binary patch
literal 563
zcmV-30?hr1P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$?MXyIR5(wiluw9^aU8}!&pVUVCR?;pE{a)6a&eG@IN5{4T=wF^Rd)6d;vmiJ
z!C`H(%_Jp?IB<|`Np22`1BDCCOelr?YiVulH1A_)vfDJ?nSFP?r(bVRpPujcdHRa1
zm!-Pd;R*pUzweVg`8=YjD7jJvX9W3}th&r_rj*f%NMKLFSwmKE5145SHoFk3Y{p9i
z8g2;$PFnN}elGw#3T%x7%q?o<7!Gqb`&{K`GdKw7B;ao2|5y%fULk%(IPDN@UOW&U
z2qyo=C`2#N5w(iA4o@lIUA-0|5{x0b43`BT8^IwwE@yPVUCPm+m=}nLHv8L!W^tgL
z(L_z7S`TL*tx|plyam#2TObY=`*pP?aJJ}1T*SN-?EY^caKjMF?6g=T=v=ZxQ?Jgj
zpf9X25F{xe_AD8Q8MWxGhV;E2RH>)n+Y5~RBZR}{jIKxT&>TaY#(bz(sA*(FtuBrI
zd?VOvbEou`p?^|#$dCfYfuhY3iA%uRxsgM2HV_-4RuGCSwR?D6Fgho&8APm;*;E`*
zI+gb$!%eExDg+5WNn8_bvANI)R)SmVKJOJ>A?ZLQ=AjjylVk!jBQah4!gfY9e=FDL
zyga#@L*<OlH9J+S^fu<bGJtJU-+1~yr|G!o?GJtC=#^idS?vG-002ovPDHLkV1hvY
B_vZir

literal 0
HcmV?d00001

diff --git a/src/static/icon_car_green.png b/src/static/icon_car_green.png
new file mode 100644
index 0000000000000000000000000000000000000000..17fe5cc9453de57e5b8debfc3e2561ee48d3932c
GIT binary patch
literal 425
zcmV;a0apHrP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$V@X6oR5(w~l)EoOaTLct=Ux)8MIu5IVG)TKY$QT!Vl+tOZ!oAfOqN<05XEdU
z*+gRS7}}MjBTFL~L{b9@N~-OVd#^`sJg!HZ_)Wi)ob&m8&+j~hA|EL-j}ig5W^1Xb
zTm`QOWQ{;*<EyM3h4IA}L{2=@7m4BzP5*OXUbjISUR9bL;SZ%=?4PHsIt0`MX;2fS
z3BwqmZ|uN={tjqJl)liWttt^4MRkTtZ6p}E|2xouDyp^ghp+z$(5b-bb0I2#!M`bl
z&Ud}|Y09dHh*)3I{w~OBY^TbdD8~pl_T4&e;CvlYwhP)!#`M_^RfP-S%mr0lLZlxU
z=JCPDRq~elo)oGXvbin>Chy$KA+eakG)8PlzOYUp-1^~|C1OdC3C!F%d2@&KRU5(S
z>{}ncM8%i8k-~y)nndUw-~SL8pX)%%SAc3@iop1udr~~N!uK6Yv=6^8z|->y>)MzV
T1Qfi)00000NkvXXu0mjfxAMBH

literal 0
HcmV?d00001

diff --git a/src/static/icon_city.png b/src/static/icon_city.png
new file mode 100644
index 0000000000000000000000000000000000000000..f86b88802a5852da1bc0bb8c919ec1f3916968fd
GIT binary patch
literal 513
zcmV+c0{;DpP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$yGcYrR5(w?l)p<=VHn3h&%Ng!8$=T!#L4d9pf<D=<Z=s<pdnkE?&P3D@3B8X
zNLoE71ve=d=fDEdz(8DdupwL$2M2Ldi<{<q@;q^F_d<Hl^<L?M&-lL2^Wppa6dG*O
zU>=tOHHQ=4WmuIlfi8p%f$@ybQZ*q}fuYAh1c5;B#bAX67skYA`{G{(P(891CIz0>
zD2G)gD4g-SeVQL--*Z6wg8K-c5Sp)0+pV8Ue_Oy&9CIG%u?9RyNO4h=eS{(4W<r{;
zGCt##K*Mi@v?_Z7Ps)KO!fvb2!7q<&N@<DTqlnH_nvX>vW!ViFOj4*NNCd2FtO`h{
zm~|%kaOyFE(pU5mdIY*lz|U^L!^?p2U*7eZ3k^9(*cG3h(9rKhe3vP{TEkm}{FQ;$
zu!-=_^?73rE5H{wz`G`3sVSv2Mlwyzhn7`fHdc6Qc<&0MxD-Om4Dh^GQxeA}ZV<|r
z3XcUk>K>b8k9&@?jQkyqI<5L($AA+<S4xVj_pH|Hi4q)ICT`78NL;;t0iofM3IT8@
zVRIJrjF&g2_?D1<bsgpN1$Zd8|Lc6!S-%RmhF|PIL{zvHfgsQ800000NkvXXu0mjf
DlB?s&

literal 0
HcmV?d00001

diff --git a/src/static/icon_data.png b/src/static/icon_data.png
new file mode 100644
index 0000000000000000000000000000000000000000..3915ea372fc52bb6f2a47bee689b3253cf54f277
GIT binary patch
literal 580
zcmV-K0=xZ*P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px${z*hZR5(wqmA`8fVHn3h&n31{oOE+jlFR0gNzg$z9R%y9=%8R1+e@H-fVSY^
zqQ-lzgASsTPIXY|SPKqz(NU7vE`oy!1uda%a$obNO^k4jHu_A*-Sd9#zR&Y~pR<C~
z{sf)?#|$zI5P~M~CV<P9cUtf;V9sD;03L!}z-bTlz=nraBRew)taB!GdL=kzp_70Y
zmB`NhEims?La5&0(WgnP`*WewEHL^TFpM=O<60Li){_huKaN`sWcirLU<Jd!d{nSl
z-{7Q&rUUQmDq_6nOV=9-mzGLa&BeMN7}Kq1Q!Pb@J<#V#l&VFGQ-S>?hq1n4?D4<^
z)&e-{^AqEBZNkc_z(QFEm1)aqhoHXll?Pv@?MLYJ9oQ|HH<;f_SgsW9>Gm~rnt`4g
zdZ=-tI$;Yrr-uQI^{VK|-4>XOHQY=nWJTbUngOf6e*SvjltxDOQV!q(P#3sr#7!_i
zCFx!Ez{Ci<zznOK9sYBqce#(`G-U3c&IZQkO3@b6fwy&tq0MnfY03@YLnX53J?`k5
zV&`MC<tX4;3w(YJCWm3E<FXw)rDM_7K)?61s0K$Y%e(%-K28}3*w-mevkANnV7W)~
z9e=MD*{!bR|FypIPA~mV{Iy`koY`Ot78vrou)SczyE>pOkAdU=`U|iISAGKGn_w(3
SKZIQX0000<MNUMnLSTYz(h}4F

literal 0
HcmV?d00001

diff --git a/src/static/icon_day.png b/src/static/icon_day.png
new file mode 100644
index 0000000000000000000000000000000000000000..d88ea4ad37164c4fa73744a65220df6594ca0e49
GIT binary patch
literal 832
zcmV-G1Hb%<P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px%`bk7VR9Hvtmt9B{Q5462XI9GuF(VD4BziCkB7}&<%Gt7qDCkpPg6zSJ2y|8-
z%%bRnDEn|%sfUOl>ZK%#ih{~=vWOmndaa)NASw$H%WYHVgu7yG>F%s;NzlCAnREW<
zcmFf@+&jW3Uoy(|i49-}8i7jS45n4)8uo5eK2F~~gb+QF&r<8<aJlgSS^*Pyf@$Tu
z2WTuq^>jF1)r;3>{{sNFzX0U`NG8G?OlvuIAliY}z&T(>Oee(Ig?J`JIUt&W8hgWe
zqK|m5m6TQo!^1%_JMaR?jg0jbrZ4wb0RIz2=EMe&jX2tea5fz0I3^y?v_YUqauuf4
z^fQ2d7uH_7gOf=gR}4}La)qvr^JHYc1<8mFz(IoAM4B80LUe{I89#PA%C^BgAwZGk
zivbXJ;SL^W3kz$WbNg5>p56vvjf)R4h)_<dbBR!vLdPn^I0d992;idBNJHE?Fj93F
zdH(^D;(+RBMA{>(mZ=CH7v@Jok^m4yjm3B?A9CwpCMju85hnc|040PtC79J$X*rrl
zam_PsHOwZ}xD8~xg7^&wUZX}yc;;<Q^KklF5b7!N?We^*ofNqM#NV_M2hd*NB%i+Q
zU`1UAZH-G%Ek>|$xCk7<w03i%B89w}RS2~p6NhypVF00wBI^vzB_6U1>kxLKvH@?^
zIa>Ye5NQUkkw!W5t#{b|Wgyp+2cUe!U@MN+4Q@vLtH96#)bIlJKpLu@i1fGYO~91o
z0YsGUqq;Ln)G)r{IAfyjiR=Rw#M!XiY(_sxs9vKtef^NaS@bY>b9eZe9k>dtNIt;u
zii+W^W>NKJ+Wdt$*dQr?5kL=N`f9mxIES&RkAcZ?dqKjhU^qq9%d|gO3$r}rWZf7z
zz{ahgj8+^eqPmB6ttUqUAQkZ|4@4x*fe6Kim`!IWs^kK=p7-~_p#l8u3D0B%wFll^
z4W_TZVf}C{zuQoX%JDx7p$^DRIzy$btnG>h81Za=FLBiWj=uq2Fi|i|5v^7L0000<
KMNUMnLSTY?Bz5@!

literal 0
HcmV?d00001

diff --git a/src/static/icon_head.png b/src/static/icon_head.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3f93d06ddb56c93cf350269bd1ac916c186ddf3
GIT binary patch
literal 564
zcmV-40?Yl0P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$?ny*JR5(wql+8<2VHC!H&u|r@8l*o!2wLby2%|--phXd6P7zT};j#&WAQB>o
zR?!z0v~ediYKseVC!`N((V|?mmV$N_1VUMYK~p*Ri96OfjaMDTyLq|1=lsrd&ilNt
z*x*ka%%dfsL7Y0Whxqq9J)HQml86<7?(5r1Hj_s>59$X0#DrMG8Y@kvftLk3pSyu5
zfU>EI>?y=K6{A;;`>8;mIMhWD6fj200i6v=G4Krh8avQv`ReMxeE(jQc>#RHo<w{A
z_0(1~0~`Q$f#0hbZEqcDUjlzZ8X@L784UmpfVBc^r9Feyfw&JOz>Y;l>jKu(?=1n^
zQyPtWR&Tktw~g-3#4dwC*WZLip!r@?JQv?mxjefn@Lzx-L%u%;x{UM^a}qI5rE*i@
zlj$}2usPVr_HUytu*M&MYw4yqu?o72bX&#JxCf4QG4JExEanaE!GuP_&r1sB`*xt<
zO5#-&OZ)1^_L<yatTNUGh<75LCTV%G|0?p_!mncRS<pf3WYz)pkVd16=|K5flRbuk
zDrob9lh}gX3EB;b(Opn63Tvh60vZ)A0j5qZxq=U<{1{aDv_6XU0B5ly9N*E{qqoha
z(t)0Tj@ABOuw3O=^($<eRv1>7JL#4l*p+P3y!QtzGSC%Tw4rhU0000<MNUMnLSTZZ
CF98(*

literal 0
HcmV?d00001

diff --git a/src/static/icon_home.png b/src/static/icon_home.png
new file mode 100644
index 0000000000000000000000000000000000000000..d62889100cf609d757b290f010faa83ea8b54e58
GIT binary patch
literal 495
zcmV<L0TBL)P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$sYygZR5(x7lrd;iQ5c2Kd3{l7Vk4<bp}07>2riEDHn9{07sU{QkAh;8sDz4B
z!S03<8l$aP49Su<ZiRr8kYsRI+(gJy4I&yzLRxx%?W@YuCO2u~;$83gKh8b><q$p2
zt<bAUWo|`8NK^QDDR-`_8=>xU)-GK#fK>p2J)L|J#p{o<*7I(29f7v}@`zW=1SrwY
zgIuXKHsgiDmDb<)`+&1El~aaNYXHvlNaM9ZTunW*-nw;v0Hbz!2BMZgdV6K-1OPOt
za3`I$p8nE1z)+|-<~M!IB!c~bI%x9SjrPqah4Wt-3s=sHq4FS34hZ|XFT4|~AS2gG
zA4wbnaBLW$0N)^JGaP>5JvuUamym^FfIkc+>pQJ^C&P$czW*<P>5LWsPk~Aq(=@g>
zb(xCtOc;hLx-?1Mlkb62(*tpwWTIc-APevAP(<F4{G@d#vg`14Uk>X#EnhBop`iob
zxVSOu8TY$2nhXV1p?uaBsW1TIgiEuS&RBEKKaAPs%K}*+Bsf>g+<us`QorkKubpKI
l;Nb&<1@CLk4-a+=_d9`Ay2zUhx~%{J002ovPDHLkV1i+S+{^#~

literal 0
HcmV?d00001

diff --git a/src/static/icon_home1.png b/src/static/icon_home1.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5a1116b5e90683f1c37ec440e4f08760120ec92
GIT binary patch
literal 620
zcmV-y0+aoTP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px%CP_p=R5(wqluKw+Q4of|KS>KseV}f%K0r+(3W^ICRZ(1s=td}_2)c0>DzOy=
z1yNI9;6|mXx>4xDotvU4bSEm<jffyZ+gOT-qSQW+q^)i4=nXe%(npdO&+42r|9s5M
znK`0@weG$xb7fx|HB?Tna)NNeP6-}h$Ptanm>!k#DG3ZG>=Mu-$m<-4Cu3@v3pzXS
zsQJTtX%j?eb99V{$=5`AqRe#r3}9W{g0(AnENCc|ni<bhgB<@BSGrJF1YC35mIteN
z3hXXdTi0&zR^uG*Ij4b~J`db@&(``JIt806f#o$u_n!<0`_HQ1y~_gE-?eR3eqI2p
z=LO4&jqkvro-_KOP{Q^JIs{9n!wiN5*&YObVf^;?b%^Rhy}^jY5k=bUhB*X*dWrg+
z$bpXWG^cBVyaQGardcv@URhu`VbN@FddrM1pi5#bU&BbkuKcsdy<-2&q=@ug&`7A&
z4){c;89xN0Cay|280`fS#(TWpoC|2c^Gu49fm*%-i>As&v&8VcfL@d@CnjmA4p20|
z#(xAFbWUbya#Q#FxG8bMi@bEoxd?k-u|K?vty!l4cQCda?3f%QRb9h-_pvGlVx$~s
z7fc`|;}~L<!6)1nft?jU$^x2uX3F7&T@+kj0L-1~%e^sO%a5MB3ANf5i8lq4Q4!mW
zVaM3>xk(?3fbL<_En93gY_QDKhgym%Kc-Roy1fZ<wSNH{Gu%*?;9}MQ0000<MNUMn
GLSTZn8x^hq

literal 0
HcmV?d00001

diff --git a/src/static/icon_home2.png b/src/static/icon_home2.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2af9c2e7530dfd47b787d14f2770dc34e973761
GIT binary patch
literal 442
zcmV;r0Y(0aP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$bV)=(R5(xVk}*hIQ5c246Df9Z5iArsC^Rp06$d+rLpO1;pe}{dsZ$cGh*Lqq
zO}dz;;;N%Kh!h+|I=DNOQi?vQLkB0fDoXNBeN}^LHO4sVo$kH=Ip1*pBWgIA(0!$t
zXm?28Zj!62V89JQH*<pbhQk=%?B=vm&2ugA$+(-ETUY{mE&zs-#ZZ*h>~+v9fo)TM
z`sgvAB|5G$8b0mh7z6p=`G3Gn=ogqZL|fH3%u)<*qr8qU>nebmS$8>RRnUA>_{rR6
z^QcJQuMr(w=*z(Lv<Fiu7J<fEV3#yMPKxyG4Qns?`wI+0j{;LVf8P?A$oFH>8)dbn
zpx{Y~k99yQE#^1yN<ru?LHnJ7XPJ&EUGVb;(Q4SJ7iw6?%pVn5D=#Gz`m9sp-F8+B
zwZKn3<EOd_U}Za}*X5-omj~c|$S^3lB$2A8Ha5#Uc@0$5CS7p9#50@qD6j9e^e~ul
kC+20b#Fw8R^fmGP0q-8R-$Bc=mjD0&07*qoM6N<$f>C(G;s5{u

literal 0
HcmV?d00001

diff --git a/src/static/icon_home_data.png b/src/static/icon_home_data.png
new file mode 100644
index 0000000000000000000000000000000000000000..62c9d9e65253501021bd670d65895edc1f4f8530
GIT binary patch
literal 498
zcmV<O0S*3%P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$tVu*cR5(x7l0QgWQ5eO~c`u?32rVL=TGT<4)ISKNARS7FcGif9B6SeDbZ}D?
zjUmxN1h+1QLZ?z4+Bk}XlY<}#Mx!{0c9o+2qXtRd5gxv%N%TGK<lXM~o%6f*eD@L_
z)>gc(&Z3bHjco3@$>}Co9}l$4GQI#frPy6RwlRN`=UU)w2h31oa6-TUKwBp$YY5T$
z$mWE-EwYLNmxlrsem}ngd|T8c%%zXgz0W6ie&_cKfa|f^CJSbQWYta4ByF2u_*o>i
zaanf-n2d#bM13Ooz-_j6U-$>0uOX6}b@VoH<vmJDp9H4>_Im>5i6l(_vQmSuqsTBh
zT>V&OWiupS-36BO2#ZLcbTJtZegoK<yRtAX;?E`FI}kPA4$};i@z4(dt&Sm+J$}?2
z-92>n`F$5~;vNEFDV&iGoM=ANm;~^`+YC_{8PI15e=q(O!yukQ_$lanu1=H#?8`go
zRx?aAjHcQgz-qMWq0jW^lAPD?BT&#AL)m>Nn&A5g;w6M7BJ;tiTQn;PF1XIn<7-|g
oOK>d~XfX`b{wK(`TNbv@02qqWOk|E=(EtDd07*qoM6N<$g3E;3JOBUy

literal 0
HcmV?d00001

diff --git a/src/static/icon_home_storage.png b/src/static/icon_home_storage.png
new file mode 100644
index 0000000000000000000000000000000000000000..d36a6deb00fad8260b32f4feeb7bab0e8badc952
GIT binary patch
literal 649
zcmV;40(Sk0P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px%LrFwIR5(xVls#xuQ547j=iZmbG~y>H29=1RHeW^^oD|F=LL3x|gM+$=4i$@3
z1>xD3v{i!@w7BTfK}Ar4AA`_A9CQ*PHi<8#7AzIJh$1dc)0cZ}o{gGkj1De>cf0qT
z`#b0U|My<PUmo;3ULm<5u1KB)fh6Nx_^kP~*`9_#!+_|Z_Ps2`DF9m?fM){KAJ$(D
z17Ih-4*2L;z`b^b`+#EAO+;;WGGh{iL4cP6I112mdzq0X!Rd@uylWUxHLwlL8vZ3x
zdX5lq9H3QSImm+5zy~#YCvL#1uDvjPt!}yaATzqY6$D-boF<EIM3QEia;adNs+EZr
zRqHZnSSk#Jd(6kb(#n=Z3n!S>34nIY=e-5^66JeCRUOI<zAY4IKx(o)t){k|AAes+
zwZ-h@idHO@N}dH?%`Y`E9XvBSmhW4?hLl`Jtof9{egOLbwAdZ0nabd%{;_xY-q1Y&
zdjRf=>cuPb#b8y`x)x2u6yyF}{AE-(Hy8RsL(DidSI>y*W^$w_uv%)a&N@@R1M!?0
zCXv0N9?1B}z(WGIfe@$x>rAOlegM|V=jhNWt=-{23LNQP=~W9oF6WsZVB+)cDM;z_
zd!4aQKq+oalo}p6mkM12cqfQb8+CIimkPeIFL`BlyAZA*6Rs1%jOxWiKGlAaK^;W6
zT)h!ZH6+H>S*0?X6i*tsJZ>p<SW0o4fL;GxhV!M|1dwn#Ib)S#t(rSh0p0rf|Kkf0
jy_jxjO0%E%Ph(#ISQI6hSYQV300000NkvXXu0mjf)!-i}

literal 0
HcmV?d00001

diff --git a/src/static/icon_message.png b/src/static/icon_message.png
new file mode 100644
index 0000000000000000000000000000000000000000..af2431eb85400de2d7b6037b60350fcf836f9f05
GIT binary patch
literal 697
zcmV;q0!ICbP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px%b4f%&R5(wqlubxfVHAen_ue~7Hd?rdb`_0(cg7!F1g*ldm8F|j!5B6zf*>s_
zqOgK~AgCa8;UdvdTeY#NRv|>T$YnFvq3MrSW)T_c7~VVgJ2i?rrDJ3HZO{8Y-}yN2
zcZhX9TxT9u1YS1Hyb^=QL{LZIvoO^Wj3yGfT)qq#uB@mh^bQi`3jhHeh}@oX<@$+u
ze0nwTA~0NCUP{q#5j>dHAo59s?H??w=L(=!(#-(}0_IVrX<Y<7i(Lu6X^@B_OoF>I
z%>o&AW>XEJL}KbsD0@tEtFH4S$$SyF!F42_7AX-slt_#X_<Ti<VH7VI4Uhf=qzRF$
z!Pw}fWx)PGpaB{l&lN->fD8s>@t(d)^Dw~u0KPQGM$d<<%^E761kgyb7?7c0bhLgM
z@P4J)q^J$f7i0vGv%zS5I6di|y1v_W-9$?~K7P;d_vPzs0dQenif6%?RktdTkW<cN
zvdbvk*qRcK=v1W??G31Qkj7Kjwtr}O#@C#I0NN%~s=H9fAzLw$ufYOwTom7e+~Vp}
zuMFj#SQ9W9weI!>0u><6kWvf5cL;C1x2&OUHQS5+3jA#-K-<jpOmBg=;9M|jUF`S!
zt0!h>UvJuA)N0gAQd%;y2+TH=%-E!#oYJPlhVmXsciLYSXm!MXL`PGeJbjO&B_A$z
zm?buu!G_2Kk}m*h1o(0(<g%FpFNjHyry+Q5+s=U%gS}wtt|}|@h;fr-Q}(|qV^nN^
zXIZ_ge!Wb<K$W>qiPo999DZfb7LhxkeyuqgP3E*5GDYc7`!p>C%3c8DHdCFUe_da>
f?7TI1_&?B}MqDQ(aPwq)00000NkvXXu0mjf|Bg7e

literal 0
HcmV?d00001

diff --git a/src/static/icon_message_red.png b/src/static/icon_message_red.png
new file mode 100644
index 0000000000000000000000000000000000000000..c18d51487c1ebbe4dc93eca5c76455b619235ed7
GIT binary patch
literal 639
zcmV-_0)YLAP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px%IY~r8R5(wyl|5)vVHAd+_oiw=QR-q96zfpLp{q-ws7nVeCaVc34uTHt;?Llu
zgV;`1MRZVX`X_;;P5eOzks@|*aM8(9)GBSUXlS8-N$#<?iA_@4UR&_nzK?UB`<`>&
z@4K={umSW4sA2u<C*)cb?eG4ZDvN}MHweo!j2R}gyOc~$d0P)?>ld~xBjeVnx9`h;
z2j(y?;Mkb2VwY`5?ZD2(*i{t%BAwZ*RBGA}Xy6bDeE{m#0)p8%FzN?fQ0FPzw-mRb
z9-0}_E1(ybPbfQyQ?UnVAd|hPo}?${U#Dy%<P=tSe83_nYG6}6*mhhSW`6vQVuLfK
zJ}lVArf_Eusq4k}l}fg7XgA_MX2+3KjIlIuRnf%Va)q8jT^fO}OTmG8Q}pS#Jj~vK
z_UFxPx0sv0M&;H)ptf+<rq0AAKV!dCG~Q_8U_VmR(uZWH)sc8?kx&9SS)%rsAMgx0
z4dA##Wo51kB()sqd8=6Ryj^Cq4g(!!eO+B)x(GCzV6LKCu~@D&*-nMd<FMFp|B`V_
zf!?%R!HULKE{OsMG3R;t<Sn*v?b<P(AbDQQFXQvtJv8?^bK^JIQvCy|ssuU;_7)TZ
z0ww3IK0~n)0>5j?Rh<RhDN%Axo$&`23B3l66wb$(ovHJGV9jo-GjYYj!B(V;h0;EP
zJws{+DuFTFOq04&@3r^~Fg-*ZSn*Nt?y#d~b;NI5BzP3mf>}M%4qyoABb#YcPin%;
Z{{uk%Cn`Up&bR;o002ovPDHLkV1i%kDAxc0

literal 0
HcmV?d00001

diff --git a/src/static/icon_money.png b/src/static/icon_money.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f4fc28da3cc939b23b0e8075503a33292a004c9
GIT binary patch
literal 516
zcmV+f0{i`mP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px$zDYzuR5(wql)Y<HVHC!H&&~C_sDp}e6NfA!4lW8hxi|<-qy=jmi$f9r1L@=-
zxH$?PN=+hy#U$V)I4S6=A`}NfK`eejI!LYDn@4(MYa;o^cRW1j_de&m=RM*-A2stl
zF?yUpd8C$j$2)BUcU7vq+R(HDr?L+~V}qIYqKcLA4!~Rm7;OU9z#l<J8!<0|(!ky(
zO;yEmwm+a*A&xSH;XGy!Q8Z4NT0+`A956BE0`*@vNNwE-x(-bI(~<!k;x|~cd|!Rc
z$Op3}bB;i_5r>C#==WF);3|<<2!qRrtH8lwfi=ua6x<??KPT?c3B<^dz|FKOPy?ph
zjMN}K>}w+X0eT(>ue;(@KL)x2^Z~S=A-(Ggw2vU2?g;c`E{!MvXR$v4UwRaL0O=6$
z1d~^(yu7YY{<6nT?qGZRE3m8a!<dEo^X|al6yoL|%@2Mq@7Lms)dp}KJej+LJPq2`
z*HdhYyq3&rseDaPZ{0Q*&+j7@<`FZXOn0!~V&;gWg6=>1)^<5;1QW+o*)yOS@P)sw
zy#{&+o}*ZKs-(Eq({qtJah<x9q{Z>QW;g9B=m{LGpYR*TMY$F1j)W5c0000<MNUMn
GLSTZALF6<5

literal 0
HcmV?d00001

diff --git a/src/static/icon_money1.png b/src/static/icon_money1.png
new file mode 100644
index 0000000000000000000000000000000000000000..422c486df0303e980797058e59103843e8175e7f
GIT binary patch
literal 1045
zcmV+w1nT>VP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px&&q+i<R9HvFmtAOEWf;eQ|C4rY_hsv-Vx3oBbShI2hOi12HwzWk^#lsmq^yXa
zxCx4&?#>&b17U13cA+wxgesv)*NQ`78j)={=Y_jaC|+4Nl+CTIqifpcJd!m1NNrBi
zROq>U-{<4^KF|OCIAWbYt#f`V2C%Ny&D3sd!OIxa<L4Dm-L7OYWdRsCgn~_YvojhP
z{@X&G?Kp~nw#_BAf4~VTGWfN1cif9pRZT2$Rp6C^@&&N2t^hTe!-zvbV?Nm^upP9q
zFt|-(j3G7W$FE@=B^~HfJf0~A;tvoG9!DH3wTcq+#}!Guv1$O@w{Ii$)#E_*8Ubb)
zyRlWN)YM9GidMkd+BR{|rg5aIH3N*#)N5p9a#a91Y4x}tfnHxDKxHk+0c1s3oB0^%
ztq|fAQ-K#N7h#Y466hFETM>Y92eX5UB|lx22n|HoJ%aRhMTwU?ne`D(z9+EdQ!9$l
z!tRGiZ~ZUH7lRy8B=Js301LS<;OLX$$?at(EY23^d*IQ$-4!xZEd**F1f4DFE9+H%
z^0TG$1r@MR`*u|K8)9?OAZ7;?P4-*ZeGKs<MgUW*Vu^DW-oG0K&K39NHtFddihp@!
z-lh;B?4Cq=#kcgv@BDe=A*E8Y7It$bRW#X`yD!4QpAe7x`+Fx89a`Ah3jo&JTFdO+
z*L+ux{eqEVh7<ZCIhxz1@wk^2mxVi;A@CaTG}2C=7EW+|s!?aoq;v4|hSuXg3Hrg8
z-pf3q*y&&WY%H{YCr;q9e-$z<ik?1S2oQEdNYN6?AHlpikx6Mqk|*;g=Bt?1%#Ay3
zz_b2wtXq-f=Y;^F&M=M>DY^BGLBtpycN9w;&H;piAK*}j*~3U#fD-w==M^0qSYCl=
zkiIG5c~Oz%6UA(D2Uw4L1$3W(E4{sn4dp7isDbA?ny9W?*d8kfur%2Fc)E&gdVUoa
z?(D|20Y}Z4y^B=*ondCA(@lzh^;ZGFTrYz^Ly2v)NH(rWq9N~h6R0m$`TYDPMH0K_
zZI>NH?g1Q~Dl3pNjqCwT0kA*Hem8htk77d$VlM>99wt5Rx1guWg1{!`?6jpkd%h!*
z*t7If`cJQ{tG$uB+OwG7VNzzgLbJ=v&g{{^$n~YeE8m7)d+(xV>#?jVd<9hwM^<#u
z&#lZM4G-rlw&>{pDh>sA5wJJ$)QPAoC*PutO@fl3qlye(D&||>k4g50+^}IcW?A*_
z!0did1DKQ7fCqLHX$%;}^Dc5LbD`Knv}6lbx6-v)msNqarSSJ&cYuEZ9~WUTdYlQr
P00000NkvXXu0mjfQO)lm

literal 0
HcmV?d00001

diff --git a/src/static/icon_money_day.png b/src/static/icon_money_day.png
new file mode 100644
index 0000000000000000000000000000000000000000..185ccbb7bf27e93a077a8b595ad70f7aa6ccbbba
GIT binary patch
literal 1275
zcmV<X1O)quP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px(wMj%lR9HvFmwRkebri=x=eFAzDs;x7hKNx?gBl5tVC1p(I#hxNBuK<Wh#176
zxVC^IhOo{=5FG2Bim$|XM1nyy^2j3Cb`WAB5&uD>K#1~if?=D$V6S`RuHDvc?b<2{
z_ut<+-{0q+dtO(#%#U2=`^gNjsXU({o<%56B0P^TxPx~W<Z;``*@$s7%4tOQ;4Rz#
zUtT6PK&>?soB1f$Aq)kI6XK`P`kRrWHNZ1HE);znZ}78RA^HMDLT<#<2n<Xk=128q
zL<aXf*D8F$C6@*O&sl_mlwwLdf~)VD%*E&b^#21m3eoTekjHWmYoM`t7}J-X$-$??
zG<6Q_s=N`G`zOGYm7vN(O#eGs+4eF@Uj?;QUTj$jV)QF4e2+Kq5}=nBAY#1;JepZl
z+n{9z=CWg%ZBt}UTBoS>6fi!ssJ3D7HYLFyGuvhZu)TZ`1B*TaW@Im@ZHTPE8*utV
zPEXGq*uJWm!oqJ68I_Ytr?K!R-oSIY_;v$CLIV)buI$3z&lSpY%)qPJLUaSf!eLYb
z**d1T(>7G^!CbsA8?87%ZFmeeKcp@>Sq=6GkVm=%oo;CG21*GqCh4M9&~i>TtfTm<
zK^U%S*o*}7Fyts=?4YFV=VY)rKqR~skq1)}8#0*^|93>I*Mlwunh=?V*T0>p^#L$1
z;n##A)2KVWn;}KzKoBVGqp7-$0)3kCi;p{JLd|P8QQ$t*Ps2Hd%DtHW1H{5>X|uOb
zx@0dgYc-0~E8>qbhx5i46x!PmN;8DN4mUm~27VQymP1<AuY>Aw@?BmglpXG{i&`r$
z!dE0+UV|B!Le#1T%Ch<Ppuf=M8tnjl4NS|zX)nIO1Zu4Zu-S;Jbd6-g@NvHR4+`AB
zfw+^jj-j>*jdh4;KgjT2_dF{^tV0O5qyacVQ~gM$R{WFlyrWy{Dx!_o;wxGTn%syY
zX!Bf*yi(K{M{{ch`R?}+ncl6XyPXJ}2L_}Da7s!(2F`#U#|%~ydwn!&C&H{_fxqwt
z?;~n$06Itb0xsB_8DLam=w{lD8xVUYdF}IQb&mr!#q&nbIRO1kF=x=ohZlFjbJz)h
z-RnkSyPilS-Z+$_n1R_utu4UAi5EGDunon7P>15oiK(D1AX9*0ovG^poJ`vJdIrKt
zzC0;K+!ttXZJ{LiC*Onya`iRw9kHd=nHQ5WgAWn2oW8KAOF()xwN~ATOA8S>(w)5e
zyATc6fZU%k2~`hZ2Ja+NJsZ)_lPcgaW?(qA)zh){t28=qq4mqav!}<LQQmg|=74;X
z5g@*BI2Ge`zRnQF-9&E1u0Mi!oGv$_msSIYmSVF8WO7mh+9+d%_!b-iCT0PVCRcSm
zW^fVFs!1R_LGm+dslI|4ToG@@TUQrxW#N|>TZ}KGV@iXLrR468r6g8872Dp>cWqDl
zXv$j5z;dS!x~E|%WMF#cVQUbPJ8}onLukWj%!;$@sv3%m7r>YWT%XWt0%{Pc#OvSN
zsh@f&-C21%dG1LlcLC1tS23c4ySkjx3^X8|06hq@4{eKJF8#X?xD(wgTm{6MP7(^)
lz0WiM8|EI0oIEZ&z`yu&m~kZ{-!uRK002ovPDHLkV1j*XR22XK

literal 0
HcmV?d00001

diff --git a/src/static/icon_money_month.png b/src/static/icon_money_month.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1dcaafb6bd42c7e9733d0f346cdfd1e3ff8fbc5
GIT binary patch
literal 1294
zcmV+p1@ZccP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px($Vo&&R9HvFmuqYkRTRg6XLfcLix!BfN=g79Xb=Jv5{VC_5qty<TD1`k7&H+=
zpmZ0(fD%v>MG1BXD`<>@kBBBDA_+){4?aMMi3Eue6on9|MFBMhO6$(d&M`A?mu<W4
z?!pJ|$GPYH?{ChWd(Ii*5-+*L=Ti{ir&_F=Dw(e^(||>$&9*(Wh>q&Z6QT@N_y>bs
zRs%m=$jjsf@DkLdVU{S@0F?+8p}2CY#o@aC7Aq0v<Q}NX^q9>jr9yNA&{`tyAkG4p
z<rNd^QC<f6b=p@NESqO99-tc2t)dl(^&sX0M%O(<dD67`_@V&<0VmD|gvUz|YdL+I
z!4>Pm$d$D6=0N*ghD0p(0sV_qn`0$;r%2mQW<A~lH^D?zmgNg~r{oj9vywb7L5g0$
z>J4DADvuSR>3L~t${P8-2-|KZJpwrOJcDps5uzUOwq>)o2;0H{f7eldxyc6tH6;jo
z;<Gfmn%7J42~9gi;A|ZgF_W)=(WMGy?BBAI)Rp3!1voO3K9vLb28s%Mk7o!hi6(ii
zScoiu6DNrfFV?XayC5fSwUX>9Mk@qx;*3T3KHrs7WrZOOQ+PBhsHA~L;7)|GInP}&
zSbngHH%1Jm+)Xo8VYmoUfhN;qn>2DD7c2xw#n~dl{rQMRm~1xits7@e*npHa!=Tn|
z;7cdLI^e0$PiYf_sRx_bIcyNi1rquCi7HzyVYVb`4wJBb9@j>q9O|*)D5s((cd?57
zPMno#pG{?NvO87J3NcvR0j<J}V=fzqm}~_m^%j1GKP{hXS<OLl5+P|r0f%PGW1=*2
zIIwdQEK_(Xd$_VaW^<pDU^Os56Oo{yb;|>Vp&|?gem?3^C2pL}DoiaRVRl<dZg=as
zR}DVPT;Z@K3sie9$0AXF1<VY<KFg-6Jx+CpcG}^Wn8j=rUd%k3E2%h#M7Ta5fGWpZ
z(+t0|ku&-B!)j^pYBb5!UYvz0IfY0G0h~DNJA4J+119GH><m6ZJJ6?x2n1K^LzJ@u
z%~6|GP90T5GGP|R0Vk{^cXw;y82~TAgB{utVXx=&bPm9|0HC)n767bAIhO@kz-WAC
zhN8kPC{32lG&jyB6&}jDlKY~~jCU(LMP-8sQ?dYxiWBE#cIN9628CwJXA&m=lEx96
zKaS6$Y~U6D&xmfC8imO*n+KdkSQqAH6B9O{In9iI{dl<JS=3{f7h!q_fWlEpCD<--
zPr)Qq_FFb1QwgRCe429u4##Y62tw_{7nuaq;7vt|_`()oKgtOV7K+a!D!h>Ke?N%8
z41|x008oX^z*rFm=h{cp+{lj{amH{!gkeB?P#45!3Bovmji$jO$ERF09QQ^7zN3s2
z4TjJ$>_E7qAVg0F${NdNo||BT!q<RRNK2GgqBcvzQrt3!0c9~hN6z2bLIPd(J(Tgm
zP~t6MiXXgX*RlP4a;OR`tt3l=F)rH;6%02K*7cw=jwlfzFhA6iqUx%(w6-OvG~qdg
zT7iL?yl4|)JHo1H1G{r-L-(Unb=)il6EGO1aGfX>D&dbvN0mznw1{xrSAL5a>}hLd
zNBO(_)m1Hst|`R&uH~da@K4cc75q26fJl_&a>)Vy1OG0mEyTU!N&o-=07*qoM6N<$
Ef|g-6MF0Q*

literal 0
HcmV?d00001

diff --git a/src/static/icon_month.png b/src/static/icon_month.png
new file mode 100644
index 0000000000000000000000000000000000000000..468d50db2ebf86e12337d3d77c5aedebd933ee08
GIT binary patch
literal 726
zcmV;{0xA88P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px%kV!;AR9HvtmrY1iQ5462XC~iBk`@)Ai@qR`5K4l+AfiPp30#!h2ui3$zBf_}
zm$fix@tzK$L`j?46ttQ}(JI<RU_#QOFAK`3pvbXk-W%U3$8mTX^PG=HU37OB&i|g@
z{l9zexldT)AxoT}PypBBDsT#Az;HNIEUXu2zbX$<Cey!YSvAP#LfUWulcxwfQAP}h
z)?xu%i{rqJY`oHHIE*ZR0MBHf3cV-|DvZZ$+T3{#q%D%7G=(`KV5zVv=s-l+?knfA
zI^ofa_jI@1#+{kwM%v_^2peZy<891li)%3qw4w|f4!hD8V*;DQ03y)t!|EUa!a=|Z
z=uR6pgL42}YdUX!{77YJYKU?~;i$l!6eR0}k3emx14@tQb8|(6O9+#nplbv40$l-}
zZP>)a08k}q2xrCSjaqDVm3|T0ia3a=h;SlWPm*yWULD6ETTMn@t2l;(6$(&9qVhwQ
zB|!PxsZ1HHg0ae$DoH&QbGZ2b43zAE!hL~TVP>mxVfI2R7*}=`1cZea&tKo6l;z$7
zIRMY(t_tn*a+roq-{JtoIixz%H)e-scoIwSd{F?jla;KYCJ6BAC%?8ONG}S&l6?YI
zdSebfuEp*MGzJ~WWEibY@VdGVz)8dAx|%c+4Rkl)tIM~w2_~uuknuA#Pwz5q@<HUU
zmr-@AK;d%C=Dfz);c5PnIgIiULH#KPYWsQVnmj{j3GEDJT|_>eHGN$B^LD(4a5$Sl
zd2BfB&6i>~&E6EF2+@BJkV}ZLC-AcI6q31ljlcnf`UU%9Sq?0?Y6$@a0KNe0N?4|n
z(70h^&*_F4iw+;IR2jmb?x+*r=~zERY7Rgp+o?pm<bTJ%0c;OfFfV`-+yDRo07*qo
IM6N<$f=pXOasU7T

literal 0
HcmV?d00001

diff --git a/src/static/icon_storage.png b/src/static/icon_storage.png
new file mode 100644
index 0000000000000000000000000000000000000000..7bbade6103008502ee07806592289afa16a5392c
GIT binary patch
literal 1163
zcmV;61a$j}P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px(MM*?KR9HvFmtAa=WfaGMr|TMrBoG)9gTe+|A;gf7NTL@;6HUBTqVWR3cq76-
zU{eyh&3(xj3CdvICU|3X;llWNYobQtg(jE~qe194m?$yAAebOv*S>#w-|=>B_jc=+
z5qi}==Q;oLf6jM}d;GC`Y@az3h#uA^O4#o`AWc(Zx1F5JV`fbt8rM3YQ}BW@@c@Ag
zJ_TA6b#`VpM2aS`re6=2IJ6;N!3YN$5h;uh(;+%WYV40<h|EY}MW2?IImFDUF}SZ7
zP{A#U{+l7XFV@<X>2wMbSk|wFiyaz(Hw+dPV>thg;2+@KYax0r*Vy$Sj41@xw<(fZ
z%4;&-GI(Gvh69LPGVyl!3h$rpuw=G;lE8~9i9W%W+rswSajcvV!&5NCc^5zNJ;(XP
z(yly1AR3ojQn9;Ycq(XjqRyIf2)IA0`t-Otber+y-5?@yLLp+qwf2LLADDzyaXo9$
zZLo1ZhzL#zV#9UzRX$$fGL$UZ&r5RXG^2VhL?nhRL~Ejkk1<nGRWRk!F_l)2^Qwtf
zU`3HcF3RW}D&+&V+xRT{fUG*sW}sGLaQG@8(QYXh;Gsh*TTsd_U=OgQ0O(cV;Ei#P
z{Ml$Xy*up+S1n<i8CwzYp?bc6NpDP6L7$$+p&MgU7Wi)xE!j#HJz5+oWe@Vm+<)ip
zzZgf7;~X4quxk@%vg%%*H=_%1=f|C6P7)%PsI_l$%P^QgMk#IV9jUW#eVkQ2dN309
z!a_1d=kE>nmoJOXfE7q!TGl>!@pamWovX8-f<mx5u18DcmGLtH@-q_61w)Xd;Kr?-
zZRXHs#>#A&J9-hHrNXqF-)U!ES>=G%hSQ#_H~S+x<8g68Av%V~Ci5v9Z`x_-C0>Lb
zIK(i@b4cD9y%XUM7|~+PG4|gY=V&G&1KbiwVC{f5oZZPUezvYYphe*YG-5OY3ky_$
ze|#NrD0PEF=k}UA4ZVbn_Oc;SZ$Ibj<`Agr)njH}2YgE6lq|P<RUX#zaEK;@*D)e_
z9!Uz0I{(o%vd1p@GOw#n<i$q8cM`GTdi&9rX9!fswa=hApJ9+vMUN^XVLBvU_DabZ
zOr~fbZLrad;jG65V0I1FSxZhC(ymanoGmzXVpIgU`AbJM57*miU$*9m9&x{q?6P08
z46hGO)c$i*FvKWsYaZh`?dIeX@Nc&%QeDn=M6(&ob1FbM7=!6Ft><>zg=|@6pH_uM
z2V$!kp*+36F}jAvI7Y#RB#-X0HZ5FSUSK5?Ng3}+-b>vOG@ICwpBI^xY>b}E9YwBW
z`EHB8qjD$0UW1)xl;z3&Jujy+ByI`@LP-uJ-n6mls%FNm*jHYCSS!ONv=+0Lr_yxh
zho}&Vq6zo_6>+UAg?-sw&+Crx`8c$U-mO0-`7dz$epqz7=c#Gt!*uQsu7a5~=2<@L
d5X`fE{s;GksxUnLJ%0cI002ovPDHLkV1i-*A5H)O

literal 0
HcmV?d00001

diff --git a/src/static/listOfLoadedWagons.html b/src/static/listOfLoadedWagons.html
deleted file mode 100644
index b8b86bba..00000000
--- a/src/static/listOfLoadedWagons.html
+++ /dev/null
@@ -1,1247 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Document</title>
-  </head>
-  <body>
-    <!-- 主体部分 -->
-
-    <style>
-      .table_div {
-        padding: 30px;
-      }
-      .table {
-        margin-top: 10px;
-      }
-      .table tr {
-        height: 40px;
-        text-align: center;
-      }
-      .table td {
-      }
-      .tableLine {
-        border-top: 1px solid #000000 !important;
-        border-right: 1px solid #000000 !important;
-        border-collapse: collapse !important;
-      }
-      .tdLine {
-        border-left: 1px solid #000000 !important;
-        border-bottom: 1px solid #000000 !important;
-        border-collapse: collapse !important;
-      }
-      #top_title {
-        display: flex;
-        justify-content: space-between;
-      }
-      #top_title > div {
-      }
-      .head_01 th {
-        border: none;
-      }
-      .head_02 th {
-        border-top: 1px solid grey;
-      }
-    </style>
-    <script type="text/javascript" src="/admin_static/js/jquery.min.js"></script>
-    <script type="text/javascript" src="/admin_static/js/JsBarcode.all.js"></script>
-    <div class="table_div">
-      <div>
-        <button onclick="printFun()">打印</button>
-        <button onclick="method5('print')">Excel导出</button>
-      </div>
-      <script>
-        var parent;
-        function doTests(p) {
-          parent = p;
-          var data = [
-            {
-              id: 'LQWBZZ230516001',
-              text: 'LQWBZZ230516001',
-            },
-          ];
-          createTests(newTest, data);
-        }
-        function newTest(text, options) {
-          var testbox = document.createElement('div');
-          testbox.className = 'testbox';
-          var format = (typeof options !== 'undefined' && options.aaa) || '车次号';
-          testbox.innerHTML = '<img class="barcode"/>' + '<p class="span">' + format + '<p></p>';
-          try {
-            $('.barcode', testbox).JsBarcode(text, options);
-          } catch (e) {
-            testbox.className = 'errorbox';
-            testbox.onclick = function () {
-              throw e;
-            };
-          }
-          // parent.appendChild(testbox);
-          $(parent).html(testbox);
-        }
-        function createTests(newTest, data) {
-          for (var i = 0; i < data.length; i++) {
-            newTest(data[i].id, {
-              aaa: data[i].text,
-              width: 1.3,
-              height: 20,
-              displayValue: false,
-              font: 'cursive',
-              textAlign: 'center',
-              fontSize: 14,
-            });
-          }
-        }
-      </script>
-      <div id="print">
-        <table
-          class="table tableLine"
-          id="printcontent"
-          style="width: 100%"
-          border="1"
-          cellpadding="0"
-          cellspacing="0"
-        >
-          <tbody>
-            <tr style="height: 60px; text-align: center">
-              <th colspan="4" class="tdLine">
-                <img class="logo_op" src="/admin_resource/ueditor/image/20200428/huitong.png" />
-              </th>
-              <th colspan="6" class="tdLine"><h1>汇通运输中转装载清单</h1></th>
-              <!--                <th colspan="2">车次号:LQWBZZ230516001</th>-->
-              <th colspan="4" class="tdLine">
-                <div id="content" data-type="1">
-                  <div class="testbox">
-                    <img
-                      class="barcode"
-                      src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAO4AAAAoCAYAAAD5X8aLAAAAAXNSR0IArs4c6QAAAvhJREFUeF7tnE+KwjAUh19XrgR3oi4FwZ2geAp16w30ForewiO4VU8hCu4EwaWKO8EDOCSdlLYTOxkYpIGvq/nTmJfvvdfEX14avF6vl3BBAAJeEQhIXK/8hbEQ0ARIXAIBAh4SIHE9dBomQ4DEJQYg4CEBEtdDp2EyBEhcYgACHhIgcT10GiZDgMQlBiDgIQES10OnYTIEnBM3CALpdrvSarVkOp1KrVaT3W4n7XZb9vu9dDoduVwuUq1WE1QHg4FUKhVZLBbR32ezmSyXSzkej7qN+v1wOMh2u9X3rFYrud1uMplM5H6/6342m42s12v9s7nU7+rz1ZW2rdlsSrlclufzqdsoe5Xdo9Eoaq/aPh4POZ/P2g41hn6/r+8z13g81rYom+IM3o1H9Tmfz/WYjW2qrfpcc5l+er2e7lO1aTQaUiqVfu3HMFDjqdfrURv12WY8p9Mp4pb2j2KdHk+hUEgwKBaLur3yz7vx2PwT92k8Dmyx8xf/xMej4sD0Y+Nmi504gyz/XK9XHSfKtuFwKL/5x8bNxJtLjJq4fsct6/FE4pK4QuKGD1YSN/aoYMYNVxDMuMnVGjNuuGKNryBsK9Z3sy4zLjMuM+73g5UZlxmX77gxrYPvuHYdhhkXcUo/KhGnAquwiTiFqhyp16jKP1V/VOVitIuBqsx2UGIbje0gtoNUQCBOIU4hTiFOUYBBAUZYVEMBRrhQyioSQpxCnEKc+q5so3IqtfNLySMlj/ESTkoeu9avGJQ8Uqus68LT6jXiFOIU4hSHDPT2FrXK1CpzOojTQYhTjifYEKcQpxCnEKfs5xEQpxCnEKeS56U5j8tBeg7SZ7zogIP0PydTKqeonEKconKKyikqp6iccn290kfEqaz33/A/CEDgswScl8qfNYveIACBf3lZHBghAIH8EGDGzY8vsAQCzgRIXGdU3AiB/BAgcfPjCyyBgDMBEtcZFTdCID8ESNz8+AJLIOBMgMR1RsWNEMgPARI3P77AEgg4E/gCABF8xMakUbYAAAAASUVORK5CYII="
-                    />
-                    <p class="span">LQWBZZ230516001</p>
-                    <p></p>
-                  </div>
-                </div>
-              </th>
-            </tr>
-            <tr style="height: 40px; text-align: center" class="head_01">
-              <th colspan="3" class="tdLine">始发站:龙泉仓</th>
-              <th colspan="11" class="tdLine"></th>
-            </tr>
-            <tr style="height: 40px; text-align: center" class="head_01 head_02">
-              <th contenteditable="true" colspan="3" class="tdLine">
-                承运商:顺丰快递(成都XX营业部)
-              </th>
-              <th contenteditable="true" colspan="4" class="tdLine">
-                承运商联系电话:028-678920001
-              </th>
-              <th contenteditable="true" colspan="2" class="tdLine">承运单号:21</th>
-              <th contenteditable="true" colspan="3" class="tdLine">卸车完成时间: 年 月 日</th>
-              <th contenteditable="true" colspan="2" class="tdLine">卸车人员签字:</th>
-            </tr>
-            <tr style="height: 20px; text-align: center">
-              <td rowspan="2" class="tdLine">序号</td>
-              <td rowspan="2" class="tdLine">发货单位</td>
-              <td rowspan="2" class="tdLine">开单时间</td>
-              <td rowspan="2" class="tdLine">收货单位</td>
-              <td rowspan="2" class="tdLine">收货人</td>
-              <td rowspan="2" class="tdLine">收货电话</td>
-              <td rowspan="2" class="tdLine">物流单号</td>
-              <td rowspan="2" class="tdLine">合同号</td>
-              <td rowspan="2" class="tdLine">计划件数</td>
-              <td rowspan="2" class="tdLine">货位</td>
-              <td colspan="1" class="tdLine">装车产品明细</td>
-              <td rowspan="2" class="tdLine">合计计数</td>
-              <td rowspan="2" class="tdLine">卸车件数</td>
-              <td rowspan="2" class="tdLine">异常备注</td>
-            </tr>
-            <tr style="text-align: center">
-              <td class="tdLine">小计</td>
-            </tr>
-            <tr style="text-align: center">
-              <td class="tdLine">1</td>
-              <td rowspan="1" contenteditable="true" style="min-width: 60px" class="tdLine">
-                双流欧派
-              </td>
-              <td rowspan="2" contenteditable="true" style="min-width: 60px" class="tdLine">
-                2023-05-09
-              </td>
-              <td rowspan="1" contenteditable="true" class="tdLine">成都欧派衣柜</td>
-              <td rowspan="1" contenteditable="true" class="tdLine">杨林 郑三丰</td>
-              <td rowspan="2" contenteditable="true" class="tdLine">15730097068</td>
-              <td rowspan="1" class="tdLine">SL23050788</td>
-              <td class="tdLine">OPLYA成都市230400025YA4-1</td>
-              <td contenteditable="true" class="tdLine">10</td>
-              <td class="tdLine"></td>
-              <!--明细-->
-              <td contenteditable="true" class="tdLine">0</td>
-              <td contenteditable="true" rowspan="1" class="tdLine">0</td>
-              <td contenteditable="true" class="tdLine"></td>
-              <td contenteditable="true" style="min-width: 80px" class="tdLine"></td>
-            </tr>
-            <tr style="text-align: center">
-              <td class="tdLine">2</td>
-              <td rowspan="1" contenteditable="true" style="min-width: 60px" class="tdLine">
-                成都欧派
-              </td>
-              <td rowspan="1" contenteditable="true" class="tdLine">成都欧派衣柜</td>
-              <td rowspan="1" contenteditable="true" class="tdLine">杨林</td>
-              <td rowspan="1" class="tdLine">LQ23050050</td>
-              <td class="tdLine">OPLYC成都市23030508</td>
-              <td contenteditable="true" class="tdLine">3</td>
-              <td class="tdLine">E区-E14-2-2</td>
-              <!--明细-->
-              <td contenteditable="true" class="tdLine">0</td>
-              <td contenteditable="true" rowspan="1" class="tdLine">0</td>
-              <td contenteditable="true" class="tdLine"></td>
-              <td contenteditable="true" style="min-width: 80px" class="tdLine"></td>
-            </tr>
-            <tr style="text-align: center">
-              <td colspan="8" class="tdLine">合计</td>
-              <td contenteditable="true" class="tdLine">13</td>
-              <td class="tdLine"></td>
-              <td class="tdLine"></td>
-              <td contenteditable="true" class="tdLine"></td>
-              <td contenteditable="true" class="tdLine"></td>
-              <td contenteditable="true" class="tdLine"></td>
-            </tr>
-            <tr>
-              <td colspan="14" contenteditable="true" style="text-align: center" class="tdLine">
-                投诉电话:4000184668
-                <sapn style="width: 15px; display: inline-block"></sapn> 营业部售后电话: *******
-                <sapn style="width: 15px; display: inline-block"></sapn> 系统派单调度:
-              </td>
-            </tr>
-          </tbody>
-        </table>
-      </div>
-    </div>
-
-    <script type="text/javascript" src="/admin_static/layui/layui.all.js"></script>
-    <script type="text/javascript" src="/admin_static/xm-select/dist/xm-select.js?vs2021"></script>
-
-    <!-- js 的一些配置 -->
-    <script>
-      layui.config({
-        base: '/admin_static/layui/dist/',
-      });
-      let local = window.localStorage['layuiAdmin'];
-      let alias = 'default';
-      if (local != '{}') {
-        alias = eval('(' + window.localStorage['layuiAdmin'] + ')').theme.color.alias;
-        alias = alias === 'default' ? 'default' : alias;
-      }
-      layer.config({
-        extend: alias + '/style.css',
-        skin: 'demo-class',
-      });
-
-      layui.use('notice', function () {
-        window.layNotice = layui.notice;
-      });
-    </script>
-
-    <script type="text/javascript" src="/admin_static/js/custom.js"></script>
-    <script type="text/javascript" src="/admin_static/js/tableInput.js?vs2021"></script>
-
-    <!-- js 部分-->
-
-    <script>
-      let print_data = '';
-
-      layui.laydate.render({
-        elem: '#test5',
-        type: 'date',
-        done: function (value, date, endDate) {
-          layui.jquery('#test5').parent('td').html(value);
-        },
-      });
-
-      function getExplorer() {
-        var explorer = window.navigator.userAgent;
-        //ie
-        if (explorer.indexOf('MSIE') >= 0) {
-          return 'IE';
-        }
-        //firefox
-        else if (explorer.indexOf('Firefox') >= 0) {
-          return 'Firefox';
-        }
-        //Chrome
-        else if (explorer.indexOf('Chrome') >= 0) {
-          return 'Chrome';
-        }
-        //Opera
-        else if (explorer.indexOf('Opera') >= 0) {
-          return 'Opera';
-        }
-        //Safari
-        else if (explorer.indexOf('Safari') >= 0) {
-          return 'Safari';
-        }
-      }
-      function printFun() {
-        if (getExplorer() == 'IE') {
-          pagesetup_null();
-        }
-        //根据div标签ID拿到div中的局部内容
-        let $ = layui.jquery;
-        $('td').addClass('tdLine');
-        $('table').addClass('tableLine');
-        $('th').addClass('tdLine');
-        let bdhtml = $('body').html();
-        var jubuData = $('#print').html();
-        $('body').html(jubuData);
-        //调用打印功能
-        window.print();
-        $('body').html(bdhtml);
-
-        save_print();
-
-        return false;
-      }
-      function pagesetup_null() {
-        var hkey_root, hkey_path, hkey_key;
-        hkey_root = 'HKEY_CURRENT_USER';
-        hkey_path = '\\Software\\Microsoft\\Internet Explorer\\PageSetup\\';
-        try {
-          var RegWsh = new ActiveXObject('WScript.Shell');
-          hkey_key = 'header';
-          RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, '');
-          hkey_key = 'footer';
-          RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, '');
-        } catch (e) {}
-      }
-
-      function save_print() {
-        layui.jquery.ajax({
-          url: '/admin/goods/printRecord.html',
-          type: 'post',
-          data: print_data,
-        });
-      }
-
-      // 以下为excel导出
-      var idTmr;
-      function getExplorer() {
-        var explorer = window.navigator.userAgent;
-        //ie
-        if (explorer.indexOf('MSIE') >= 0) {
-          return 'ie';
-        }
-        //firefox
-        else if (explorer.indexOf('Firefox') >= 0) {
-          return 'Firefox';
-        }
-        //Chrome
-        else if (explorer.indexOf('Chrome') >= 0) {
-          return 'Chrome';
-        }
-        //Opera
-        else if (explorer.indexOf('Opera') >= 0) {
-          return 'Opera';
-        }
-        //Safari
-        else if (explorer.indexOf('Safari') >= 0) {
-          return 'Safari';
-        }
-      }
-      function method5(tableid) {
-        if (getExplorer() == 'ie') {
-          var curTbl = document.getElementById(tableid);
-          var oXL = new ActiveXObject('Excel.Application');
-          var oWB = oXL.Workbooks.Add();
-          var xlsheet = oWB.Worksheets(1);
-          var sel = document.body.createTextRange();
-          sel.moveToElementText(curTbl);
-          sel.select();
-          sel.execCommand('Copy');
-          xlsheet.Paste();
-          oXL.Visible = true;
-
-          try {
-            var fname = oXL.Application.GetSaveAsFilename(
-              'Excel.xls',
-              'Excel Spreadsheets (*.xls), *.xls'
-            );
-          } catch (e) {
-            print('Nested catch caught ' + e);
-          } finally {
-            oWB.SaveAs(fname);
-            oWB.Close((savechanges = false));
-            oXL.Quit();
-            oXL = null;
-            idTmr = window.setInterval('Cleanup();', 1);
-          }
-        } else {
-          tableToExcel(tableid);
-        }
-      }
-      function Cleanup() {
-        window.clearInterval(idTmr);
-        CollectGarbage();
-      }
-      var tableToExcel = (function () {
-        var uri = 'data:application/vnd.ms-excel;base64,',
-          template =
-            '<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>',
-          base64 = function (s) {
-            return window.btoa(unescape(encodeURIComponent(s)));
-          },
-          format = function (s, c) {
-            return s.replace(/{(\w+)}/g, function (m, p) {
-              return c[p];
-            });
-          };
-        return function (table, name) {
-          if (!table.nodeType) table = document.getElementById(table);
-          var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML };
-          window.location.href = uri + base64(format(template, ctx));
-        };
-      })();
-    </script>
-
-    <script>
-      // layui.jquery('#search-sd').removeClass('layui-hide');
-    </script>
-
-    <script>
-      localStorage.setItem('search', JSON.stringify({})); // 搜索重置为空
-      localStorage.setItem('_M', JSON.stringify({})); // 搜索重置为空
-
-      /**
-       *  日期
-       */
-      let tableTime11 = function (param, renderName = 'test') {
-        let el = param['el'] ? param['el'] : 'timeXm',
-          id = param['id'] ? param['id'] : 'laydate',
-          key = param['key'] ? param['key'] : 'i.create_time_>';
-        let search = localStorage.getItem('search');
-        search = search ? JSON.parse(search) : {};
-        let dataTime = search[key] ? search[key] : search[key],
-          data = [];
-
-        if (dataTime) {
-          dataTime.split('~').forEach(function (val) {
-            data.push({
-              name: val,
-              val: val,
-              selected: true,
-            });
-          });
-        }
-
-        var timeXm = xmSelect.render({
-          el: '#' + el,
-          content: '<div id="' + id + '" ></div>',
-          showBottom: false,
-          calendar: true,
-          format: 'yyyy-MM-dd',
-          data: data,
-          clickClose: true,
-          on: function (data) {
-            let search = localStorage.getItem('search');
-            search = search ? JSON.parse(search) : {};
-            search[key] = '';
-            localStorage.setItem('search', JSON.stringify(search));
-            searchSubmitHandle(renderName);
-          },
-          hide: function () {
-            hideRepeatSubmit(key);
-          },
-        });
-        layui.laydate.render({
-          elem: '#' + id,
-          position: 'static',
-          showBottom: false,
-          format: 'yyyy-MM-dd',
-          clickClose: true,
-          change: function () {
-            dateSelect(timeXm.getValue('value'));
-          },
-          done: function (value) {
-            var values = timeXm.getValue('value');
-            var index = values.findIndex(function (val) {
-              return val === value;
-            });
-            if (values.length) {
-              values.shift(values);
-            }
-            values.push(value);
-            let search = localStorage.getItem('search');
-            search = search ? JSON.parse(search) : {};
-            search[key] = values.join(' ~ ');
-            localStorage.setItem('search', JSON.stringify(search));
-            timeXm.update({
-              data: values.map(function (val) {
-                return {
-                  name: val,
-                  value: val,
-                  selected: true,
-                };
-              }),
-            });
-          },
-          ready: removeAll,
-        });
-        /** 下拉框隐藏时刷新 **/
-        function hideRepeatSubmit(key) {
-          let search = localStorage.getItem('search');
-          search = search ? JSON.parse(search) : {};
-          if (search[key]) {
-            searchSubmitHandle();
-          }
-        }
-        /** 搜索提交 **/
-        function searchSubmitHandle(renderName = 'test') {
-          let search = localStorage.getItem('search');
-          search = search ? JSON.parse(search) : {};
-          console.log(search, 321);
-          table.reload('' + renderName + '', {
-            where: {
-              search: search,
-            },
-            page: {
-              curr: 1,
-            },
-          });
-          return false;
-        }
-        function removeAll() {
-          document.querySelectorAll('#' + id + ' td[lay-ymd].layui-this').forEach(function (dom) {
-            dom.classList.remove('layui-this');
-          });
-        }
-        function dateSelect(values) {
-          // removeAll();
-          let search = localStorage.getItem('search');
-          search = search ? JSON.parse(search) : {};
-          values = values[0] ? values : search[key] ? search[key].split('~') : [];
-          if (values) {
-            values.forEach(function (val) {
-              var dom = document.querySelector(
-                '#' + id + ' td[lay-ymd="' + val.replace(/-0([1-9])/g, '-$1') + '"]'
-              );
-              dom && dom.classList.add('layui-this');
-            });
-          }
-        }
-      };
-
-      /**
-       *  日期时间段筛选
-       */
-      let tableTime = function (param, renderName = 'test') {
-        let el = param['el'] ? param['el'] : 'timeXm',
-          id = param['id'] ? param['id'] : 'laydate',
-          key = param['key'] ? param['key'] : 'i.create_time_>';
-        let search = localStorage.getItem('search');
-        search = search ? JSON.parse(search) : {};
-        let dataTime = search[key] ? search[key] : search[key],
-          data = [];
-
-        if (dataTime) {
-          dataTime.split('~').forEach(function (val) {
-            data.push({
-              name: val,
-              val: val,
-              selected: true,
-            });
-          });
-        }
-
-        var timeXm = xmSelect.render({
-          el: '#' + el,
-          content: '<div id="' + id + '"  style="position: relative;"></div>',
-          // showBottom: false,
-          // calendar: true,
-          // format: 'yyyy-MM-dd',
-          data: data,
-          // clickClose: true,
-          on: function (data) {
-            console.log(55555);
-            let search = localStorage.getItem('search');
-            search = search ? JSON.parse(search) : {};
-            search[key] = '';
-            localStorage.setItem('search', JSON.stringify(search));
-            searchSubmitHandle(renderName);
-          },
-          hide: function () {
-            console.log(3333);
-            hideRepeatSubmit(key);
-          },
-        });
-
-        layui.laydate.render({
-          elem: '#' + id,
-          position: 'static',
-          // showBottom: false,
-          // format: 'yyyy-MM-dd',
-          type: 'datetime',
-          range: '~',
-          clickClose: true,
-          change: function () {
-            dateSelect(timeXm.getValue('value'));
-          },
-          done: function (value) {
-            var values = timeXm.getValue('value');
-            var index = values.findIndex(function (val) {
-              return val === value;
-            });
-            if (values.length) {
-              values.shift(values);
-            }
-            values.push(value);
-            let search = localStorage.getItem('search');
-            search = search ? JSON.parse(search) : {};
-            search[key] = values.join(' ~ ');
-            localStorage.setItem('search', JSON.stringify(search));
-            timeXm.update({
-              data: values.map(function (val) {
-                return {
-                  name: val,
-                  value: val,
-                  selected: true,
-                };
-              }),
-            });
-          },
-          ready: removeAll,
-        });
-        /** 下拉框隐藏时刷新 **/
-        function hideRepeatSubmit(key) {
-          let search = localStorage.getItem('search');
-          search = search ? JSON.parse(search) : {};
-          if (search[key]) {
-            searchSubmitHandle();
-          }
-        }
-        /** 搜索提交 **/
-        function searchSubmitHandle(renderName = 'test') {
-          let search = localStorage.getItem('search');
-          search = search ? JSON.parse(search) : {};
-          console.log(search, 321);
-          table.reload('' + renderName + '', {
-            where: {
-              search: search,
-            },
-            page: {
-              curr: 1,
-            },
-          });
-          return false;
-        }
-        function removeAll() {
-          document.querySelectorAll('#' + id + ' td[lay-ymd].layui-this').forEach(function (dom) {
-            dom.classList.remove('layui-this');
-            dom.classList.add('laydate-selected');
-          });
-        }
-        function dateSelect(values) {
-          // removeAll();
-          let search = localStorage.getItem('search');
-          search = search ? JSON.parse(search) : {};
-          values = values[0] ? values : search[key] ? search[key].split('~') : [];
-          if (values) {
-            values.forEach(function (val) {
-              var dom = document.querySelector(
-                '#' + id + ' td[lay-ymd="' + val.replace(/-0([1-9])/g, '-$1') + '"]'
-              );
-              dom && dom.classList.add('layui-this');
-            });
-          }
-        }
-      };
-
-      /***
-       *  输入框
-       */
-      function inputChange(obj) {
-        let value = obj.value,
-          key = obj.name;
-        let search = localStorage.getItem('search');
-        let renderName = obj.getAttribute('type') ? obj.getAttribute('type') : 'test';
-        search = search ? JSON.parse(search) : {};
-        if (key.indexOf('_M') !== -1) {
-          moreSearchLocal(key, value);
-        } else {
-          search[key] = value;
-        }
-        localStorage.setItem('search', JSON.stringify(search));
-        searchSubmitHandle(renderName);
-        /** 搜索提交 **/
-        function searchSubmitHandle(renderName = 'test') {
-          let search = localStorage.getItem('search');
-          search = search ? JSON.parse(search) : {};
-          let more = moreSearchAssemble();
-          let where = {};
-          if (more) {
-            where = more;
-          }
-          where.search = search;
-          table.reload('' + renderName + '', {
-            where: where,
-            page: {
-              curr: 1,
-            },
-          });
-          return false;
-        }
-      }
-
-      /** 下拉 **/
-      let downSelect = function (param, radio = true, renderName = 'test') {
-        let data = param['data'] ? param['data'] : [],
-          key = param['key'] ? param['key'] : 'i.type',
-          id = param['id'] ? param['id'] : 'type';
-        let search = localStorage.getItem('search');
-        search = search ? JSON.parse(search) : {};
-
-        if (search[key]) {
-          search[key] = search[key].split(',');
-          data.forEach(function (item, i) {
-            search[key].forEach(function (it) {
-              if (item['value'] == it) {
-                data[i].selected = true;
-              }
-            });
-          });
-        }
-
-        xmSelect.render({
-          el: '#' + id,
-          radio: radio,
-          clickClose: radio,
-          filterable: true,
-          data: data,
-          on: function (data) {
-            if (key.indexOf('_M') !== -1) {
-              moreSearchLocal(key, value);
-            } else {
-              if (data['arr'].length) {
-                let searchArr = [];
-                data['arr'].forEach(function (item) {
-                  searchArr.push(item['value']);
-                });
-                let strSearch = searchArr.join(',');
-                localSearch(key, strSearch);
-              } else {
-                localSearch(key, '');
-                searchSubmitHandle(renderName);
-              }
-            }
-          },
-          hide() {
-            hideRepeatSubmit(key);
-          },
-        });
-
-        /** 存储搜索条件 **/
-        function localSearch(key, value) {
-          let search = localStorage.getItem('search');
-          search = search ? JSON.parse(search) : {};
-          search[key] = value;
-          console.log(search, 11);
-          localStorage.setItem('search', JSON.stringify(search));
-        }
-
-        /** 搜索提交 **/
-        function searchSubmitHandle(renderName = 'test') {
-          let search = localStorage.getItem('search');
-          search = search ? JSON.parse(search) : {};
-          console.log(search, 123);
-          table.reload('' + renderName + '', {
-            where: {
-              search: search,
-            },
-            page: {
-              curr: 1,
-            },
-          });
-          return false;
-        }
-
-        /** 下拉框隐藏时刷新 **/
-        function hideRepeatSubmit(key) {
-          let search = localStorage.getItem('search');
-          search = search ? JSON.parse(search) : {};
-          if (search[key]) {
-            searchSubmitHandle(renderName);
-          }
-        }
-      };
-
-      /**
-       * 存储额外搜索条件
-       * @param key
-       * @param value
-       * @param more
-       */
-      function moreSearchLocal(key, value, more = '_M') {
-        let _M = localStorage.getItem(more);
-        _M = _M ? JSON.parse(_M) : {};
-        let _K = key.substr(key, key.indexOf('_M'));
-        _M[_K] = value;
-        localStorage.setItem(more, JSON.stringify(_M));
-      }
-
-      /**
-       * @param more
-       * @returns {any}
-       */
-      function moreSearchAssemble(more = '_M') {
-        let _M = localStorage.getItem(more);
-        _M = _M ? JSON.parse(_M) : {};
-        return _M;
-      }
-    </script>
-    <style type="text/css">
-      .toast-title {
-        font-weight: bold;
-      }
-      .toast-message {
-        -ms-word-wrap: break-word;
-        word-wrap: break-word;
-      }
-      .toast-message a,
-      .toast-message label {
-        color: #fff;
-      }
-      .toast-message a:hover {
-        color: #ccc;
-        text-decoration: none;
-      }
-      .toast-close-button {
-        position: relative;
-        right: -0.3em;
-        top: -0.3em;
-        float: right;
-        font-size: 20px;
-        font-weight: bold;
-        color: #fff;
-        -webkit-text-shadow: 0 1px 0 #fff;
-        text-shadow: 0 1px 0 #fff;
-        opacity: 0.8;
-        -ms-filter: alpha(opacity=80);
-        filter: alpha(opacity=80);
-        line-height: 1;
-      }
-      .toast-close-button:hover,
-      .toast-close-button:focus {
-        color: #000;
-        text-decoration: none;
-        cursor: pointer;
-        opacity: 0.4;
-        -ms-filter: alpha(opacity=40);
-        filter: alpha(opacity=40);
-      }
-      .rtl .toast-close-button {
-        left: -0.3em;
-        float: left;
-        right: 0.3em;
-      }
-      button.toast-close-button {
-        padding: 0;
-        cursor: pointer;
-        background: transparent;
-        border: 0;
-        -webkit-appearance: none;
-      }
-      .toast-top-center {
-        top: 0;
-        right: 0;
-        width: 100%;
-      }
-      .toast-bottom-center {
-        bottom: 0;
-        right: 0;
-        width: 100%;
-      }
-      .toast-top-full-width {
-        top: 0;
-        right: 0;
-        width: 100%;
-      }
-      .toast-bottom-full-width {
-        bottom: 0;
-        right: 0;
-        width: 100%;
-      }
-      .toast-top-left {
-        top: 12px;
-        left: 12px;
-      }
-      .toast-top-right {
-        top: 12px;
-        right: 12px;
-      }
-      .toast-bottom-right {
-        right: 12px;
-        bottom: 12px;
-      }
-      .toast-bottom-left {
-        bottom: 12px;
-        left: 12px;
-      }
-      #toast-container {
-        position: fixed;
-        z-index: 999999;
-        pointer-events: none;
-      }
-      #toast-container * {
-        -moz-box-sizing: border-box;
-        -webkit-box-sizing: border-box;
-        box-sizing: border-box;
-      }
-      #toast-container > div {
-        position: relative;
-        pointer-events: auto;
-        overflow: hidden;
-        margin: 0 0 6px;
-        padding: 15px 15px 15px 50px;
-        width: 300px;
-        -moz-border-radius: 3px 3px 3px 3px;
-        -webkit-border-radius: 3px 3px 3px 3px;
-        border-radius: 3px 3px 3px 3px;
-        background-position: 15px center;
-        background-repeat: no-repeat;
-        -moz-box-shadow: 0 0 12px #999;
-        -webkit-box-shadow: 0 0 12px #999;
-        box-shadow: 0 0 12px #999;
-        color: #fff;
-        opacity: 0.8;
-        -ms-filter: alpha(opacity=80);
-        filter: alpha(opacity=80);
-      }
-      #toast-container > div.rtl {
-        direction: rtl;
-        padding: 15px 50px 15px 15px;
-        background-position: right 15px center;
-      }
-      #toast-container > div:hover {
-        -moz-box-shadow: 0 0 12px #000;
-        -webkit-box-shadow: 0 0 12px #000;
-        box-shadow: 0 0 12px #000;
-        opacity: 1;
-        -ms-filter: alpha(opacity=100);
-        filter: alpha(opacity=100);
-        cursor: pointer;
-      }
-      #toast-container > .toast-info {
-        background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=') !important;
-      }
-      #toast-container > .toast-error {
-        background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=') !important;
-      }
-      #toast-container > .toast-success {
-        background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==') !important;
-      }
-      #toast-container > .toast-warning {
-        background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=') !important;
-      }
-      #toast-container.toast-top-center > div,
-      #toast-container.toast-bottom-center > div {
-        width: 300px;
-        margin-left: auto;
-        margin-right: auto;
-      }
-      #toast-container.toast-top-full-width > div,
-      #toast-container.toast-bottom-full-width > div {
-        width: 96%;
-        margin-left: auto;
-        margin-right: auto;
-      }
-      .toast {
-        background-color: #030303;
-      }
-      .toast-success {
-        background-color: #51a351;
-      }
-      .toast-error {
-        background-color: #bd362f;
-      }
-      .toast-info {
-        background-color: #2f96b4;
-      }
-      .toast-warning {
-        background-color: #f89406;
-      }
-      .toast-progress {
-        position: absolute;
-        left: 0;
-        bottom: 0;
-        height: 4px;
-        background-color: #000;
-        opacity: 0.4;
-        -ms-filter: alpha(opacity=40);
-        filter: alpha(opacity=40);
-      }
-      @media all and (max-width: 240px) {
-        #toast-container > div {
-          padding: 8px 8px 8px 50px;
-          width: 11em;
-        }
-        #toast-container > div.rtl {
-          padding: 8px 50px 8px 8px;
-        }
-        #toast-container .toast-close-button {
-          right: -0.2em;
-          top: -0.2em;
-        }
-        #toast-container .rtl .toast-close-button {
-          left: -0.2em;
-          right: 0.2em;
-        }
-      }
-      @media all and (min-width: 241px) and (max-width: 480px) {
-        #toast-container > div {
-          padding: 8px 8px 8px 50px;
-          width: 18em;
-        }
-        #toast-container > div.rtl {
-          padding: 8px 50px 8px 8px;
-        }
-        #toast-container .toast-close-button {
-          right: -0.2em;
-          top: -0.2em;
-        }
-        #toast-container .rtl .toast-close-button {
-          left: -0.2em;
-          right: 0.2em;
-        }
-      }
-      @media all and (min-width: 481px) and (max-width: 768px) {
-        #toast-container > div {
-          padding: 15px 15px 15px 50px;
-          width: 25em;
-        }
-        #toast-container > div.rtl {
-          padding: 15px 50px 15px 15px;
-        }
-      }
-    </style>
-    <style type="text/css">
-      .toast-title {
-        font-weight: bold;
-      }
-      .toast-message {
-        -ms-word-wrap: break-word;
-        word-wrap: break-word;
-      }
-      .toast-message a,
-      .toast-message label {
-        color: #fff;
-      }
-      .toast-message a:hover {
-        color: #ccc;
-        text-decoration: none;
-      }
-      .toast-close-button {
-        position: relative;
-        right: -0.3em;
-        top: -0.3em;
-        float: right;
-        font-size: 20px;
-        font-weight: bold;
-        color: #fff;
-        -webkit-text-shadow: 0 1px 0 #fff;
-        text-shadow: 0 1px 0 #fff;
-        opacity: 0.8;
-        -ms-filter: alpha(opacity=80);
-        filter: alpha(opacity=80);
-        line-height: 1;
-      }
-      .toast-close-button:hover,
-      .toast-close-button:focus {
-        color: #000;
-        text-decoration: none;
-        cursor: pointer;
-        opacity: 0.4;
-        -ms-filter: alpha(opacity=40);
-        filter: alpha(opacity=40);
-      }
-      .rtl .toast-close-button {
-        left: -0.3em;
-        float: left;
-        right: 0.3em;
-      }
-      button.toast-close-button {
-        padding: 0;
-        cursor: pointer;
-        background: transparent;
-        border: 0;
-        -webkit-appearance: none;
-      }
-      .toast-top-center {
-        top: 0;
-        right: 0;
-        width: 100%;
-      }
-      .toast-bottom-center {
-        bottom: 0;
-        right: 0;
-        width: 100%;
-      }
-      .toast-top-full-width {
-        top: 0;
-        right: 0;
-        width: 100%;
-      }
-      .toast-bottom-full-width {
-        bottom: 0;
-        right: 0;
-        width: 100%;
-      }
-      .toast-top-left {
-        top: 12px;
-        left: 12px;
-      }
-      .toast-top-right {
-        top: 12px;
-        right: 12px;
-      }
-      .toast-bottom-right {
-        right: 12px;
-        bottom: 12px;
-      }
-      .toast-bottom-left {
-        bottom: 12px;
-        left: 12px;
-      }
-      #toast-container {
-        position: fixed;
-        z-index: 999999;
-        pointer-events: none;
-      }
-      #toast-container * {
-        -moz-box-sizing: border-box;
-        -webkit-box-sizing: border-box;
-        box-sizing: border-box;
-      }
-      #toast-container > div {
-        position: relative;
-        pointer-events: auto;
-        overflow: hidden;
-        margin: 0 0 6px;
-        padding: 15px 15px 15px 50px;
-        width: 300px;
-        -moz-border-radius: 3px 3px 3px 3px;
-        -webkit-border-radius: 3px 3px 3px 3px;
-        border-radius: 3px 3px 3px 3px;
-        background-position: 15px center;
-        background-repeat: no-repeat;
-        -moz-box-shadow: 0 0 12px #999;
-        -webkit-box-shadow: 0 0 12px #999;
-        box-shadow: 0 0 12px #999;
-        color: #fff;
-        opacity: 0.8;
-        -ms-filter: alpha(opacity=80);
-        filter: alpha(opacity=80);
-      }
-      #toast-container > div.rtl {
-        direction: rtl;
-        padding: 15px 50px 15px 15px;
-        background-position: right 15px center;
-      }
-      #toast-container > div:hover {
-        -moz-box-shadow: 0 0 12px #000;
-        -webkit-box-shadow: 0 0 12px #000;
-        box-shadow: 0 0 12px #000;
-        opacity: 1;
-        -ms-filter: alpha(opacity=100);
-        filter: alpha(opacity=100);
-        cursor: pointer;
-      }
-      #toast-container > .toast-info {
-        background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=') !important;
-      }
-      #toast-container > .toast-error {
-        background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=') !important;
-      }
-      #toast-container > .toast-success {
-        background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==') !important;
-      }
-      #toast-container > .toast-warning {
-        background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=') !important;
-      }
-      #toast-container.toast-top-center > div,
-      #toast-container.toast-bottom-center > div {
-        width: 300px;
-        margin-left: auto;
-        margin-right: auto;
-      }
-      #toast-container.toast-top-full-width > div,
-      #toast-container.toast-bottom-full-width > div {
-        width: 96%;
-        margin-left: auto;
-        margin-right: auto;
-      }
-      .toast {
-        background-color: #030303;
-      }
-      .toast-success {
-        background-color: #51a351;
-      }
-      .toast-error {
-        background-color: #bd362f;
-      }
-      .toast-info {
-        background-color: #2f96b4;
-      }
-      .toast-warning {
-        background-color: #f89406;
-      }
-      .toast-progress {
-        position: absolute;
-        left: 0;
-        bottom: 0;
-        height: 4px;
-        background-color: #000;
-        opacity: 0.4;
-        -ms-filter: alpha(opacity=40);
-        filter: alpha(opacity=40);
-      }
-      @media all and (max-width: 240px) {
-        #toast-container > div {
-          padding: 8px 8px 8px 50px;
-          width: 11em;
-        }
-        #toast-container > div.rtl {
-          padding: 8px 50px 8px 8px;
-        }
-        #toast-container .toast-close-button {
-          right: -0.2em;
-          top: -0.2em;
-        }
-        #toast-container .rtl .toast-close-button {
-          left: -0.2em;
-          right: 0.2em;
-        }
-      }
-      @media all and (min-width: 241px) and (max-width: 480px) {
-        #toast-container > div {
-          padding: 8px 8px 8px 50px;
-          width: 18em;
-        }
-        #toast-container > div.rtl {
-          padding: 8px 50px 8px 8px;
-        }
-        #toast-container .toast-close-button {
-          right: -0.2em;
-          top: -0.2em;
-        }
-        #toast-container .rtl .toast-close-button {
-          left: -0.2em;
-          right: 0.2em;
-        }
-      }
-      @media all and (min-width: 481px) and (max-width: 768px) {
-        #toast-container > div {
-          padding: 15px 15px 15px 50px;
-          width: 25em;
-        }
-        #toast-container > div.rtl {
-          padding: 15px 50px 15px 15px;
-        }
-      }
-    </style>
-  </body>
-</html>
diff --git a/src/views/distribution/checkInventoryTask/createTask.vue b/src/views/distribution/checkInventoryTask/createTask.vue
index a95bb18c..338f0865 100644
--- a/src/views/distribution/checkInventoryTask/createTask.vue
+++ b/src/views/distribution/checkInventoryTask/createTask.vue
@@ -158,7 +158,12 @@
             <el-button type="primary" @click="TcAddData" v-if="Statusjudgment">新 增</el-button>
             <el-button type="primary" @click="InventoryModification">提交修改</el-button>
             <el-button type="primary" @click="ModifyingStatus">修改状态</el-button>
-            <el-button icon="Download" type="primary" @click="handleUncountedExport">
+            <el-button
+              icon="Download"
+              v-if="InventoryState"
+              type="primary"
+              @click="handleUncountedExport"
+            >
               导出
             </el-button>
           </div>
diff --git a/src/views/distribution/checkInventoryTask/createTask2.vue b/src/views/distribution/checkInventoryTask/createTask2.vue
new file mode 100644
index 00000000..72b71e7c
--- /dev/null
+++ b/src/views/distribution/checkInventoryTask/createTask2.vue
@@ -0,0 +1,2697 @@
+<template>
+  <div class="maxContent" v-loading="loadingObj.pageLoading">
+    <!-- 搜索功能  -->
+    <div>
+      <div class="avue-crud__right">
+        <div>
+          <el-button type="primary" @click="InventoryTask"
+            ><el-icon>
+              <Plus />
+            </el-icon>
+            创建盘点任务</el-button
+          >
+          <el-button type="primary" @click="discard"> 废弃</el-button>
+          <el-button type="primary" @click="DelayButton"> 延期</el-button>
+        </div>
+        <div>
+          <el-button icon="el-icon-refresh" @click="Refresh" circle></el-button>
+          <el-button icon="el-icon-search" @click="searchSo = !searchSo" circle></el-button>
+        </div>
+      </div>
+
+      <tablecmt
+        :columnList="menuData"
+        :tableData="details.data"
+        :loading="loading"
+        @inputTxt="inputsc"
+        @selectCheck="selectsc"
+        @selection="selectionChange"
+      >
+        <template #default="slotProps">
+          <template v-if="slotProps.scope.column.label === '盘点任务编号'">
+            <span class="mr10" @click="ViewEvent(slotProps.scope.row)">{{
+              slotProps.scope.row.questNum
+            }}</span>
+            <el-text @click="ExportDC(slotProps.scope.row)">导出</el-text>
+          </template>
+
+          <template v-else-if="slotProps.scope.column.label === '操作'">
+            <el-text @click="ViewEvent(slotProps.scope.row)">已盘点明细</el-text>
+            <el-text @click="DetailsNotCounted(slotProps.scope.row)">未盘点明细</el-text>
+            <el-text @click="comparativeData(slotProps.scope.row)">对比数据</el-text>
+          </template>
+        </template>
+      </tablecmt>
+    </div>
+    <!-- 表格翻页功能 -->
+    <div class="demo-pagination-block TCdemo-pagination-block">
+      <el-pagination
+        v-model:current-page="currentPage"
+        v-model:page-size="pageSize"
+        :page-sizes="pageList"
+        :disabled="disabled"
+        :background="background"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="total"
+        @size-change="PageSizeChange"
+        @current-change="SizeChange"
+      />
+    </div>
+    <!-- 弹窗详情 -->
+
+    <el-dialog
+      v-model="PopupDetails"
+      :title="!InventoryState ? '盘点数据' : '未盘点数据'"
+      width="80%"
+      :before-close="handleClose"
+      :fullscreen="fullScreen"
+    >
+      <div style="margin-bottom: 10px">
+        <div style="display: flex">
+          <!-- v-if="TcMInventoryStatus" -->
+          <div>
+            <!-- v-if="!NotCounted" -->
+            <el-button type="primary" @click="BatchdeletePackages">删 除</el-button>
+            <el-button type="primary" @click="TcAddData" v-if="Statusjudgment">新 增</el-button>
+            <el-button type="primary" @click="InventoryModification">提交修改</el-button>
+            <el-button type="primary" @click="ModifyingStatus">修改状态</el-button>
+            <el-button
+              icon="Download"
+              v-if="InventoryState"
+              type="primary"
+              @click="handleUncountedExport"
+            >
+              导出
+            </el-button>
+          </div>
+          <div style="margin-left: 10px">
+            <!-- v-if="NotCounted" -->
+            <el-button type="primary" @click="NotInventoried">盘点</el-button>
+          </div>
+
+          <div class="fullScreen" @click="BtnfullScreen">
+            <el-icon><FullScreen /></el-icon>
+          </div>
+        </div>
+      </div>
+      <!-- 表格开始 -->
+      <el-table
+        v-loading="TcPdloading"
+        element-loading-text="数据正在更新中..."
+        :data="TcPD"
+        row-key="name"
+        border
+        :height="eightyPercentHeight + 'px'"
+        style="width: 100%"
+        @select-all="TcselectAll"
+        @select="TcselectChange"
+      >
+        <el-table-column type="selection" width="55" fixed />
+        <el-table-column type="index" fixed width="50" height="100" label="#" align="center" />
+        <el-table-column
+          :prop="item.prop"
+          :label="item.label"
+          :width="item.width"
+          :fixed="item.fixed"
+          align="center"
+          v-for="(item, index) in InventoryDetails"
+          :key="item.label"
+        >
+          <el-table-column
+            :prop="item.prop"
+            :label="item.label"
+            :width="item.width"
+            :fixed="item.fixed"
+            align="center"
+          >
+            <template #header>
+              <el-input
+                @change="() => InputSo(item)"
+                clearable
+                v-if="item.type == 5 || item.prop == 'categoryName' || item.prop == 'materialCode'"
+                v-model="item.values"
+                :placeholder="`请输入${item.label}`"
+              />
+
+              <el-select
+                v-model="TcFrom[item.prop]"
+                class="m-2"
+                placeholder="请选择"
+                size="large"
+                v-if="item.type == 6"
+                @change="TcChenge($event, item)"
+                :clearable="true"
+              >
+                <el-option
+                  v-for="item in item.checkarr"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+
+              <!-- 日期搜索 -->
+              <el-date-picker
+                v-if="item.type == 8"
+                v-model="TcFrom[item.prop]"
+                type="datetimerange"
+                format="YYYY-MM-DD HH:mm:ss"
+                value-format="YYYY-MM-DD HH:mm:ss"
+                range-separator="至"
+                start-placeholder="开始时间"
+                end-placeholder="结束时间"
+                @change="TcChenge($event, item)"
+              />
+            </template>
+            <template #default="props">
+              <span v-if="item.type == 1 && item.prop == 'questStatus'">
+                {{
+                  props.row[item.prop] == 0
+                    ? '待盘点'
+                    : props.row[item.prop] == 1
+                    ? '已盘'
+                    : props.row[item.prop] == 2
+                    ? '未盘点'
+                    : props.row[item.prop] == 3
+                    ? '已排除'
+                    : '/'
+                }}
+              </span>
+
+              <span v-if="item.type == 6 && item.prop === 'questTarget'">
+                {{
+                  props.row[item.prop] == 1
+                    ? '定制品'
+                    : props.row[item.prop] == 2
+                    ? '零担'
+                    : props.row[item.prop] == 3
+                    ? '库存品'
+                    : '/'
+                }}</span
+              >
+
+              <span v-if="item.type == 10 && item.prop != 'materialCode'">
+                <el-input
+                  clearable
+                  :disabled="props.row.Checkbox"
+                  v-model="props.row[item.prop]"
+                  :placeholder="`请输入${item.label}`"
+                />
+              </span>
+
+              <span v-if="item.type == 10 && item.prop == 'materialCode'">
+                <!-- 下拉搜索 -->
+                <el-select
+                  v-if="props.row.wLinputState"
+                  v-model="props.row.Input"
+                  filterable
+                  placeholder="请输入物料编码"
+                >
+                  <el-option
+                    v-for="item in Wloptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  />
+                </el-select>
+                <el-input
+                  v-else
+                  @change="wLcheng(props.row, props.row)"
+                  clearable
+                  :disabled="props.row.Checkbox"
+                  v-model="props.row.Input"
+                  :placeholder="`请输入${item.label}`"
+                />
+              </span>
+              <div :class="ElBtnClass" v-if="item.type == 3 && !NotCounted">
+                <el-button
+                  :link="ElButtonS[2].link"
+                  :class="ElButtonS[2].class"
+                  :auto-insert-space="ElButtonS[2].space"
+                  :size="ElButtonS[2].size"
+                  :icon="ElButtonS[2].icon"
+                  @click="InventoryEditing(props.row)"
+                  >编辑</el-button
+                >
+              </div>
+
+              <span v-if="item.type == 4">{{
+                props.row[item.prop] ? props.row[item.prop] : '/'
+              }}</span>
+            </template>
+          </el-table-column>
+        </el-table-column>
+      </el-table>
+      <template #footer>
+        <!-- 表格翻页功能 -->
+        <div class="demo-pagination-blockPD demo-pagination-block TCdemo-pagination-block">
+          <el-pagination
+            v-model:current-page="TccurrentPage"
+            v-model:page-size="TcpageSize"
+            :page-sizes="pageList"
+            :disabled="disabled"
+            :background="background"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="Tctotal"
+            @size-change="TcPageSizeChange"
+            @current-change="TcSizeChange"
+          />
+        </div>
+        <span class="dialog-footer">
+          <el-button @click="PopupDetails = false">取消</el-button>
+          <el-button type="primary">确定</el-button>
+        </span>
+      </template>
+    </el-dialog>
+
+    <!-- 弹窗里面的详情 -->
+
+    <!-- 状态选择 -->
+    <el-dialog
+      v-model="InventoryStatus"
+      title="状态选择"
+      width="70%"
+      style="display: flex; flex-direction: column"
+    >
+      <!-- 定制品单选框 -->
+      <el-radio-group v-model="WrapBarEditing.radio" class="tcradiogroup" v-if="!TcStateSwitching">
+        <template v-for="(item, index) in radioList" :key="item.label">
+          <div class="Tcstate">
+            <el-radio @change="TcReac" :label="item.label">{{ item.txt }} </el-radio>
+            <el-input-number
+              v-model="counting[item.input]"
+              :disabled="item.disabled"
+              placeholder="数量"
+              :min="0"
+            />
+          </div>
+        </template>
+      </el-radio-group>
+
+      <!-- 多选框 -->
+      <el-checkbox-group v-model="readList" @change="Tcmultiple" v-else>
+        <template v-for="(item, index) in radioList" :key="item.label">
+          <div class="Tcstate TcstateS">
+            <el-checkbox :label="item.txt" @change="Tclist(index + 1)" /><el-input-number
+              v-model="counting[item.input]"
+              :disabled="item.disabled"
+              placeholder="数量"
+              :min="0"
+            />
+          </div>
+        </template>
+      </el-checkbox-group>
+
+      <span class="Tcstdialog-footer">
+        <el-button @click="InventoryStatus = false">取消</el-button>
+        <el-button type="primary" @click="StatusDetermination">确定</el-button>
+      </span>
+    </el-dialog>
+
+    <el-dialog v-model="PopupEditing" title="信息编辑" width="60%" @close="closeInformationediting">
+      <el-form :model="WrapBarEditing" label-position="right" label-width="100px">
+        <el-form-item label="包条:">
+          <el-input v-model="WrapBarEditing.orderPackageCode" disabled placeholder="包条" />
+        </el-form-item>
+        <el-form-item label="订单自编号:">
+          <el-input v-model="WrapBarEditing.orderCode" placeholder="请输入订单自编号" />
+        </el-form-item>
+
+        <el-form-item label="异常状态:">
+          <!-- 定制品单选框 -->
+          <el-radio-group
+            v-model="WrapBarEditing.radio"
+            class="tcradiogroup"
+            v-if="!TcStateSwitching"
+          >
+            <template v-for="(item, index) in radioList" :key="item.label">
+              <div class="Tcstate">
+                <el-radio @change="TcReac" :label="item.label">{{ item.txt }} </el-radio>
+                <el-input-number
+                  v-model="counting[item.input]"
+                  :disabled="item.disabled"
+                  placeholder="数量"
+                  :min="0"
+                />
+              </div>
+            </template>
+          </el-radio-group>
+
+          <!-- 多选框 -->
+          <el-checkbox-group v-model="readList" @change="Tcmultiple" v-else>
+            <template v-for="(item, index) in radioList" :key="item.label">
+              <div class="Tcstate TcstateS">
+                <el-checkbox :label="item.txt" @change="Tclist(index + 1)" /><el-input-number
+                  v-model="counting[item.input]"
+                  :disabled="item.disabled"
+                  placeholder="数量"
+                  :min="0"
+                />
+              </div>
+            </template>
+          </el-checkbox-group>
+        </el-form-item>
+
+        <el-form-item label="新的货位">
+          <el-select-v2
+            v-model="WrapBarEditing.groundingPositionCode"
+            style="width: 240px"
+            filterable
+            remote
+            :remote-method="remoteMethod"
+            clearable
+            :options="optionss"
+            placeholder="请输入货位"
+          />
+        </el-form-item>
+      </el-form>
+
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="PopupEditing = false">取消</el-button>
+          <el-button type="primary" @click="InformationEditing">提交</el-button>
+        </span>
+      </template>
+    </el-dialog>
+
+    <!-- 新增弹窗 -->
+    <el-dialog
+      v-model="TcDataaddition"
+      title="新增"
+      width="70%"
+      style="display: flex; flex-direction: column"
+    >
+      <el-form
+        :model="Fromnewlyadded"
+        label-position="right"
+        label-width="100px"
+        style="margin-top: 40px"
+      >
+        <el-form-item label="SKU:">
+          <el-input v-model="Fromnewlyadded.sku" placeholder="请输入SKU" />
+        </el-form-item>
+        <el-form-item label="货物名称:">
+          <el-input v-model="Fromnewlyadded.name" placeholder="请输入货物名称" />
+        </el-form-item>
+        <el-form-item label="货物单位:">
+          <el-select v-model="Fromnewlyadded.logpmUnit" class="m-2" placeholder="选择货物单位">
+            <el-option
+              v-for="item in classification"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="规格:">
+          <el-input v-model="Fromnewlyadded.specification" placeholder="请输入规格" />
+        </el-form-item>
+        <el-form-item label="物料编码:">
+          <el-input v-model="Fromnewlyadded.packingSpecification" placeholder="请输入物料编码" />
+        </el-form-item>
+
+        <el-form-item label="产品编码:">
+          <el-input v-model="Fromnewlyadded.productCode" placeholder="请输入产品编码" />
+        </el-form-item>
+        <el-form-item label="包装数量:">
+          <el-input v-model="Fromnewlyadded.packageNum" placeholder="请输入包装数量" />
+        </el-form-item>
+      </el-form>
+
+      <span class="Tcstdialog-footer">
+        <el-button @click="TcDataaddition = false">取消</el-button>
+        <el-button type="primary" @click="TcDataadditionsubmit">确定</el-button>
+      </span>
+    </el-dialog>
+    <!-- 创建盘点弹窗 -->
+    <el-dialog v-model="InventoryPopup" title="创建盘点任务" width="30%">
+      <el-form :model="formInventory" label-width="120px">
+        <el-form-item label="商场名称">
+          <el-select
+            multiple
+            v-model="formInventory.scname"
+            filterable
+            placeholder="请选择商场"
+            @change="formInventoryChange"
+          >
+            <el-option
+              v-for="item in formInventory.select"
+              :key="item.id"
+              :label="item.clientName"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="品牌">
+          <el-input v-model="formInventory.brandName" disabled placeholder="品牌名称" />
+        </el-form-item>
+
+        <el-form-item label="盘点时间" class="pdsj">
+          <el-date-picker
+            v-model="formInventory.time"
+            type="datetimerange"
+            range-separator="至"
+            start-placeholder="盘点开始时间"
+            format="YYYY-MM-DD HH:mm:ss"
+            date-format="YYYY/MM/DD ddd"
+            value-format="YYYY/MM/DD HH:mm:ss"
+            end-placeholder="盘点结束时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="InventoryPopup = false">取消</el-button>
+          <el-button type="primary" @click="InventorySubmit"> 提交 </el-button>
+        </span>
+      </template>
+    </el-dialog>
+
+    <!-- 延期弹窗 -->
+    <el-dialog v-model="dialogTabData" width="780px" title="选择延期时间">
+      <el-date-picker
+        class="w100"
+        v-model="TcData"
+        type="date"
+        placeholder="请选择延期时间"
+        value-format="YYYY-MM-DD HH:mm:ss"
+      />
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="dialogTabData = false">取消</el-button>
+          <el-button type="primary" @click="InventoryDate"> 提交 </el-button>
+        </span>
+      </template>
+    </el-dialog>
+
+    <!-- 对比信息弹窗 -->
+    <el-dialog v-model="dialogcontrast" title="对比信息" width="70%">
+      <div class="dbExPo">
+        <el-button type="primary" @click="MXexport">导出</el-button>
+      </div>
+      <!-- 表格开始 -->
+      <el-table
+        v-loading="contrastloading"
+        element-loading-text="数据正在更新中..."
+        :data="contrastData"
+        row-key="name"
+        border
+        height="600"
+        style="width: 100%"
+        @select-all="contrastselectAll"
+        @select="contrastselectChange"
+      >
+        <el-table-column type="selection" width="55" fixed />
+        <el-table-column type="index" fixed width="50" height="100" label="#" align="center" />
+        <!-- 
+            Type ===1 普通文本
+            Type ===2 图片显示
+            Type ===3 操作功能
+            label:    标题
+            width:    宽度
+            prop:     数据字段
+           -->
+        <el-table-column
+          :prop="item.prop"
+          :label="item.label"
+          :width="item.width"
+          :fixed="item.fixed"
+          align="center"
+          v-for="(item, index) in contrast"
+          :key="item.label"
+        >
+          <el-table-column
+            :prop="item.prop"
+            :label="item.label"
+            :width="item.width"
+            :fixed="item.fixed"
+            align="center"
+          >
+            <template #header>
+              <!-- <el-input
+                @change="InputSo(item)"
+                clearable
+                v-if="item.type == 4"
+                v-model="item.values"
+                :placeholder="`请输入${item.label}`"
+              /> -->
+            </template>
+
+            <template #default="props">
+              <div :class="ElBtnClass" v-if="item.type == 3">
+                <!-- 按钮 -->
+              </div>
+              <span v-if="item.type == 4">{{
+                props.row[item.prop] != null ? props.row[item.prop] : '/'
+              }}</span>
+              <span v-if="item.type == 6">{{
+                props.row[item.prop] == null ? 0 : props.row[item.prop]
+              }}</span>
+            </template>
+          </el-table-column>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
+    <!-- 数据对比结束 -->
+  </div>
+</template>
+
+<script setup>
+import {
+  $_getContrastInfo,
+  $_getDetailInfo,
+  $_updateDate,
+  $_updateDetailInfo,
+  $_updateQuestChildInfo,
+  $_getQuestChildInfo,
+  getDictList,
+  getTaskQuestPage,
+  postAddtaskQuest,
+  $_materialList,
+  $_submit,
+  $_questDetailIds,
+  $_exportGetContrastInfo,
+  $_getList,
+  $_postBatchDelete,
+  postExportContrastStockInfo,
+} from '@/api/distribution/createTask';
+import { ElMessageBox } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { downloadXls } from '@/utils/util';
+import { getDictionaryBiz } from '@/api/system/dict';
+import { ref, reactive } from 'vue';
+import { off } from 'dom7';
+const wLinput = ref(null); //物料编码搜索框
+const wLinputState = ref(false); //标记是否显示下拉框
+const SoInfoData = ref({}); //搜索框参数
+const searchSo = ref(false); //搜索框
+const ElData = ref([]); //表格的值
+const TcPD = ref([]); //弹窗盘点表格得值
+const currentPage = ref(1); // 默认页码
+const pageSize = ref(40); // 默认每一页几条
+const dialogTabData = ref(false); //延期弹窗
+const TccurrentPage = ref(1); // 默认页码
+const TcpageSize = ref(50); // 默认每一页几条
+const Tctotal = ref(null); //明细页码总数
+const TcData = ref(null); //延期时间
+const pageList = ref([50, 100, 200, 500, 1000]); // 选择每页显示多少条
+const background = ref(true); // 是否开启背景颜色
+const disabled = ref(false); // 是否禁止使用页码功能
+const total = ref(0); //页码总数
+const loading = ref(false); //表格加载Load
+const PopupDetails = ref(false); //弹窗详情是否展示
+const InventoryPopup = ref(false); //创建判断任务弹窗
+const formInventory = ref({}); //盘点任务表单_
+const TcPdloading = ref(false); //弹窗盘点数据
+const PdRow = ref(null); //盘点任务选中
+const TcFrom = ref({}); //弹窗搜索
+const row = ref({}); //选择当前列
+const Tcrow = ref(); //弹窗当前行
+const WrapBarEditing = ref({}); //弹窗数据编辑
+const PopupEditing = ref(false); //弹窗编辑
+const ElBtnClass = ref(null);
+const DiskStatus = ref(true); //已盘、未盘状态
+const UncountedDetails = ref(); //未盘点明细盘点必须参数
+const contrastData = ref([]); //对比数据表格
+const dialogcontrast = ref(false); //对比数据弹窗
+const contrastloading = ref(false); //对比数据表格加载
+const Inventoryrow = ref({}); //详情编辑响应式临时数据
+const NotCounted = ref(false); //为盘点信息
+const UncheckedRow = ref({}); //未盘点当前行存储数据
+const InventoryStatus = ref(false); //盘点中的状态修改
+const InventoryInput = ref(null); //用来存储盘点状态定制品选怎的第几个input
+const InventoryState = ref(false); //盘带状态修改保存的数据
+const TcMInventoryStatus = ref(true); //盘点弹窗按钮权限控制
+const TcStatusModification = ref(false); //表示当前在修改状态
+const TcStateSwitching = ref(false); //默认表示定制品状态
+const TcnumStatu = ref(false); //表示零担,库存品,初始化状态
+const readList = ref([]); //多选框
+const TcReaJoin = ref([]); //零担库存品状态10,20,30...
+const TcDataaddition = ref(false); //数据新增弹唱
+const Fromnewlyadded = ref({}); //数据新增
+const screenHeight = ref(0); // 屏幕高度
+const HomepageDelay = ref(null); //首页延期
+const eightyPercentHeight = ref(0); // 80% 高度
+const Statusjudgment = ref(false); //新增按钮
+const DbEx = ref(null); //对比明细导出
+const fullScreen = ref(false); //是否全屏
+const BatchAbandonment = ref([]); //首页废弃
+/** loading */
+const loadingObj = reactive({
+  /** 页面loading */
+  pageLoading: false,
+});
+/** 未盘点query */
+const uncountedQuery = reactive({});
+const radioList = ref([
+  { label: 0, txt: '在库', input: 'stockNum', disabled: true },
+  { label: 1, txt: '破损', input: 'wornNum', disabled: true },
+  { label: 2, txt: '丢失', input: 'lossNum', disabled: true },
+  { label: 3, txt: '不可修复', input: 'noRepairNum', disabled: true },
+  { label: 4, txt: '已配送', input: 'deliveNum', disabled: true },
+  { label: 5, txt: '未入库', input: 'noReceivedNum', disabled: true },
+]);
+const counting = ref({});
+const options = [
+  {
+    value: 1,
+    label: '定制品',
+  },
+  {
+    value: 2,
+    label: '零担',
+  },
+  {
+    value: 3,
+    label: '库存品',
+  },
+];
+// 新增物品分类
+const classification = ref([]);
+// 菜单表头
+const menuData = ref([
+  {
+    prop: '',
+    label: '复选框',
+    type: 0,
+    values: '',
+    width: 55,
+    checkarr: [],
+    fixed: true,
+  },
+  {
+    prop: '',
+    label: '序号',
+    type: 12,
+    values: '',
+    width: 55,
+    checkarr: [],
+    fixed: true,
+  },
+  {
+    prop: 'questNum',
+    label: '盘点任务编号',
+    type: 13,
+    values: '',
+    width: '250',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+  },
+  {
+    prop: 'warehouseName',
+    label: '仓库名称',
+    type: 1,
+    values: '',
+    width: '130',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+  },
+  {
+    prop: 'marketName',
+    label: '商城名称',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+  },
+  {
+    prop: 'marketName',
+    label: '收货单位',
+    type: 1,
+    values: '',
+    width: '200',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+  },
+  {
+    prop: 'brandName',
+    label: '品牌名称',
+    type: 1,
+    values: '',
+    width: '200',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+  },
+  {
+    prop: 'startTime',
+    label: '任务开始时间',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+  },
+  {
+    prop: 'endTime',
+    label: '任务结束时间',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+  },
+  {
+    prop: 'stockNum',
+    label: '数量',
+    type: 2,
+    values: '',
+    width: '260',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+  },
+  {
+    prop: 'questTypeName',
+    label: '类型',
+    type: 3,
+    values: '',
+    width: '150',
+    checkarr: [
+      {
+        value: 1,
+        label: '全部',
+      },
+      {
+        value: 2,
+        label: '全仓',
+      },
+    ],
+    fixed: false,
+    sortable: true,
+  },
+  {
+    prop: 'questStatusName',
+    label: '状态',
+    type: 3,
+    values: '',
+    width: '150',
+    checkarr: [
+      {
+        value: 0,
+        label: '创建全部',
+      },
+      {
+        value: 1,
+        label: '开始',
+      },
+      {
+        value: 2,
+        label: '暂停',
+      },
+      {
+        value: 3,
+        label: '结束',
+      },
+    ],
+    fixed: false,
+    sortable: true,
+  },
+  {
+    prop: '',
+    label: '操作',
+    type: 6,
+    values: '',
+    width: '230',
+    checkarr: [],
+    fixed: 'right',
+    sortable: true,
+  },
+]); //表头结构
+
+// 弹窗盘点
+const InventoryDetails = ref([
+  {
+    prop: 'orderCode',
+    label: '订单自编号',
+    type: 5,
+    values: '',
+    width: '230',
+    checkarr: [],
+    fixed: true,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'orderPackageCode',
+    label: '包条',
+    type: 5,
+    values: '',
+    width: '200',
+    checkarr: [],
+    fixed: true,
+    search: true,
+    head: true,
+  },
+
+  {
+    prop: 'questTarget',
+    label: '品类',
+    type: 6,
+    values: '',
+    width: '100',
+    checkarr: [
+      {
+        value: 1,
+        label: '定制品',
+      },
+      {
+        value: 2,
+        label: '零担',
+      },
+      {
+        value: 3,
+        label: '库存品',
+      },
+    ],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'questStatus',
+    label: '盘点状态',
+    type: 1,
+    values: '',
+    width: '100',
+    checkarr: [
+      {
+        value: 0,
+        label: '待盘点',
+      },
+      {
+        value: 1,
+        label: '已盘',
+      },
+      {
+        value: 2,
+        label: '未盘点',
+      },
+      {
+        value: 3,
+        label: '已排除',
+      },
+    ],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'positionCode',
+    label: '货位',
+    type: 5,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'materialName',
+    label: '物料名称',
+    type: 5,
+    values: '',
+    width: '260',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'stockNum',
+    label: '数量',
+    type: 5,
+    values: '',
+    width: '260',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'trayCode',
+    label: '托盘码',
+    type: 5,
+    values: '',
+    width: '260',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'trayName',
+    label: '托盘名称',
+    type: 5,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'inventoryPerson',
+    label: '盘点人',
+    type: 5,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'inventoryDate',
+    label: '盘点时间',
+    type: 8,
+    values: '',
+    width: '350',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'firsts',
+    label: '一级品类',
+    type: 10,
+    values: '',
+    width: '260',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'second',
+    label: '二级品类',
+    type: 10,
+    values: '',
+    width: '260',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'thirdProduct',
+    label: '三级品类',
+    type: 10,
+    values: '',
+    width: '260',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+
+  {
+    prop: 'categoryName',
+    label: '产品名称',
+    type: 10,
+    values: '',
+    width: '260',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'materialCode',
+    label: '物料编码',
+    type: 10,
+    values: '',
+    width: '260',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'brandName',
+    label: '品牌',
+    type: 5,
+    values: '',
+    width: '250',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: '',
+    label: '操作',
+    type: 3,
+    values: '',
+    width: '120',
+    checkarr: [],
+    fixed: 'right',
+    search: false,
+    head: true,
+  },
+]);
+// 对比数据表格结构
+const contrast = ref([
+  {
+    prop: 'orderCode',
+    label: '订单自编号',
+    type: 4,
+    values: '',
+    width: '260',
+    checkarr: [],
+    fixed: true,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'orderPackageCode',
+    label: '包条',
+    type: 5,
+    values: '',
+    width: '260',
+    checkarr: [],
+    fixed: true,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'trayCode',
+    label: '托盘码',
+    type: 4,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'trayName',
+    label: '托盘名称',
+    type: 4,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'brandName',
+    label: '品牌',
+    type: 4,
+    values: '',
+    width: '250',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'mallName',
+    label: '商场名称',
+    type: 4,
+    values: '',
+    width: '250',
+    checkarr: [],
+    fixed: false,
+    search: true,
+    head: true,
+  },
+  {
+    prop: 'customerName',
+    label: '客户名称',
+    type: 4,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'thirdProduct',
+    label: '三级品',
+    type: 4,
+    values: '',
+    width: '350',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'materialName',
+    label: '物料名称',
+    type: 4,
+    values: '',
+    width: '200',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'totalNumber',
+    label: '总件数',
+    type: 4,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'handQuantity',
+    label: '在库件数',
+    type: 4,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'positionCode',
+    label: '货区-货架-货位',
+    type: 4,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'inventoryPerson',
+    label: '盘点人',
+    type: 4,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'inventoryDate',
+    label: '盘点时间',
+    type: 8,
+    values: '',
+    width: '350',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'questNum',
+    label: '盘点件数',
+    type: 6,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'differenceNum',
+    label: '差异数',
+    type: 4,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+
+  {
+    prop: 'groundingPositionCode',
+    label: '新货位',
+    type: 4,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+  {
+    prop: 'questStatusName',
+    label: '货物状态',
+    type: 4,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    search: false,
+    head: true,
+  },
+]);
+// 按钮配置
+const ElButtonS = ref([
+  // 1.link    切换按钮样式(文本模式-false ,按钮模式-tre)
+  // 2.class   按钮样式名(用于切换按钮样式)
+  // 3.space   是否开启按钮文子直接间距(true开启 ,false关闭)
+  // 4.size    按钮尺寸默认小尺寸('large'| 'default'| 'small')
+  // 5.icon    按钮图标
+  // 6.table   按钮名称
+  {
+    link: false,
+    class: 'el-btn-view',
+    space: true,
+    size: 'small',
+    icon: 'el-icon-view',
+    table: '详情',
+  },
+  {
+    link: false,
+    class: 'el-btn-view',
+    space: true,
+    size: 'small',
+    icon: 'el-icon-view',
+    table: '延期',
+  },
+  {
+    link: false,
+    class: 'el-btn-view',
+    space: true,
+    size: 'small',
+    icon: 'el-icon-view',
+    table: '编辑',
+  },
+  {
+    link: false,
+    class: 'el-btn-view',
+    space: true,
+    size: 'small',
+    icon: 'el-icon-view',
+    table: '对比数据',
+  },
+]);
+
+const details = reactive({
+  /** 盘点数据 */
+  data: [],
+  /** 被选中数据 */
+  selectionList: [],
+  query: {},
+});
+// 页面初始化请求
+
+const IndexPd = val => {
+  let Data = {
+    current: currentPage.value, //页码
+    size: pageSize.value, //条数
+    ...val,
+  };
+  getTaskQuestPage(Data).then(res => {
+    console.log(res, '获取盘点列表');
+    if (res.data.code == 200) {
+      total.value = res.data.data.total;
+      loading.value = false; //关闭表格加载
+      res.data.data.records; //初始化盘点列表
+      if (res.data.data.records) {
+        res.data.data.records.forEach(items => {
+          items.marketName = items.list.map(item => item.refName).join(','); //商场名称
+          items.brandName = items.list.map(item => item.brandName).join(','); //品牌名称
+        });
+        console.log(ElData.value, 'ElData.value');
+      }
+      ElData.value = res.data.data.records;
+      details.data = res.data.data.records;
+    }
+  });
+};
+// 弹窗全屏
+const BtnfullScreen = () => {
+  fullScreen.value = !fullScreen.value;
+};
+
+function onLoad() {
+  // 在组件挂载后获取屏幕高度
+  screenHeight.value = window.innerHeight;
+  // 计算80%的高度
+  eightyPercentHeight.value = screenHeight.value * 0.8;
+  getDictionaryBiz('logpm_unit').then(res => {
+    //异常类型
+    console.log(res, '字典返回值');
+
+    if (res.data.data.length) {
+      res.data.data.forEach(item => {
+        classification.value.push({
+          value: item.dictKey,
+          label: item.dictValue,
+        });
+      });
+    }
+  });
+
+  // loading.value = true; //开启表格加载
+  // IndexPd();
+}
+// 调用页面初始化获取数据
+onLoad();
+
+async function initTableData(params = {}) {
+  try {
+    loading.value = true; // 开启加载
+
+    let submitData = {
+      current: currentPage.value, //页码
+      size: pageSize.value, //条数
+      ...details.query,
+    };
+    const res = await getTaskQuestPage(submitData);
+    const { code, data } = res.data;
+    console.log(res, '获取盘点列表');
+    if (code !== 200) return;
+
+    total.value = data.total;
+    data.records; //初始化盘点列表
+    if (!data.records) return (details.data = []);
+    const _typeArr = menuData.value.filter(item => item.type === 3);
+
+    for (let i = 0; i < data.records.length; i++) {
+      const value = data.records[i];
+
+      const _marketNameArr = [];
+      const _brandNameArr = [];
+
+      for (let j = 0; j < value.list.length; j++) {
+        const item = value.list[j];
+
+        _marketNameArr.push(item.refName);
+        _brandNameArr.push(item.brandName);
+      }
+      value.marketName = _marketNameArr.join(','); //商场名称
+      value.brandName = _brandNameArr.join(','); //品牌名称
+
+      // 转译码值
+      for (let j = 0; j < _typeArr.length; j++) {
+        const item = _typeArr[j];
+
+        const _prop = item.prop.replace('Name', '');
+
+        for (let index = 0; index < item.checkarr.length; index++) {
+          const val = item.checkarr[index];
+
+          if (Number(val.value) !== Number(value[_prop])) continue;
+          value[item.prop] = val.label || '/';
+          break;
+        }
+      }
+    }
+    details.data = data.records;
+  } catch (error) {
+    console.log('error :>> ', error);
+  } finally {
+    loading.value = false; // 关闭表格加载
+  }
+}
+
+initTableData();
+
+/** 盘点任务表头输入框 */
+const inputsc = (value, row) => {
+  console.log('value :>> ', value);
+  console.log('row :>> ', row);
+};
+
+/** 复选框勾选变化 */
+const selectionChange = list => {
+  details.selectionList = list;
+};
+
+// 首页搜索框
+const InInputSo = (values, val) => {
+  console.log(values, val);
+  let data = {
+    [val.prop]: values,
+  };
+  console.log(data);
+  IndexPd(data);
+};
+
+// 搜索框
+const InputSo = val => {
+  TcPdloading.value = true;
+  console.log(val, '搜索框接收的值');
+  let data = {};
+  console.log(row.value, 'row.value');
+  data.current = TccurrentPage.value;
+  data.size = TcpageSize.value;
+
+  let dataS = {
+    questNum: UncountedDetails.value.questNum,
+    questId: UncountedDetails.value.id,
+    current: TccurrentPage.value, //页码
+    size: TcpageSize.value, //条数
+    [val.prop]: val.values,
+  };
+  if (DiskStatus.value) {
+    dataS.questStatus = 1;
+  } else {
+    dataS.questStatus = 0;
+  }
+  console.log(dataS, '要提交的数据');
+  $_getDetailInfo(dataS).then(res => {
+    Tctotal.value = res.data.data.total;
+    res.data.data.records.forEach(item => {
+      item.Checkbox = true;
+      item.wLinputState = false;
+      item.Input = null;
+    });
+    TcPdloading.value = false;
+    console.log(res, '明细返回值222');
+    TcPD.value = res.data.data.records;
+  });
+  // }
+};
+// 点击新增按钮
+const TcAddData = () => {
+  TcDataaddition.value = true; //新增弹窗显示
+};
+// 对比数据导出公共函数
+const DbExTc = async data => {
+  try {
+    loading.value = true;
+
+    const res = await $_exportGetContrastInfo({
+      id: data.id,
+      questNum: data.questNum,
+    });
+    if (res.status !== 200) return;
+    console.log(res, '导出');
+    downloadXls(res.data, `${data.questNum}对比明细.xlsx`);
+  } catch (error) {
+    console.log('error :>> ', error);
+  } finally {
+    loading.value = false;
+  }
+};
+// 盘点对比导出
+const ExportDC = val => {
+  // 触发下载函数
+  console.log(val);
+  DbExTc(val);
+};
+// 对比数据导出
+const MXexport = () => {
+  // 触发下载函数
+  DbExTc(DbEx.value);
+};
+
+// 新增任务按钮(搜索不到出现此按钮)
+const TcDataadditionsubmit = () => {
+  console.log(Fromnewlyadded.value);
+  const validations = [
+    { property: 'sku', message: 'SKU为空' },
+    { property: 'name', message: '货物名称为空' },
+    { property: 'logpmUnit', message: '货物单位为空' },
+    { property: 'specification', message: '规格为空' },
+    { property: 'packingSpecification', message: '物料编码为空' },
+    { property: 'productCode', message: '产品编码为空' },
+    { property: 'packageNum', message: '包装数量为空' },
+  ];
+
+  for (const validation of validations) {
+    if (!Fromnewlyadded.value[validation.property]) {
+      ElMessage({
+        message: validation.message,
+        type: 'warning',
+      });
+      return;
+    }
+  }
+  TcDataaddition.value = false; //关闭弹窗
+  $_submit({ ...Fromnewlyadded.value }).then(res => {
+    console.log(res, '添加物品返回值');
+    if (res.data.code == 200) {
+      ElMessage({
+        message: res.data.msg,
+        type: 'success',
+      });
+    }
+  });
+  Statusjudgment.value = false; //点击确定之后关闭按钮
+};
+
+// 盘点任务单选
+const selectChange = (select, val) => {
+  HomepageDelay.value = val; //首页延期
+  console.log('首页触发了选择');
+  BatchAbandonment.value = select; //批量废弃
+  console.log(select, val);
+  PdRow.value = select;
+};
+// 表格筛选
+const selectAll = val => {
+  console.log(val, '触发了选择');
+};
+// 弹窗详情选中(全选)
+const TcselectAll = (selectAll, val) => {
+  Tcrow.value = selectAll;
+  if (!selectAll.length) {
+    TcPD.value.forEach(item => {
+      item.Checkbox = !item.Checkbox;
+    });
+  } else {
+    selectAll.forEach(item => {
+      item.Checkbox = !item.Checkbox;
+    });
+  }
+  console.log(Tcrow.value, '全选复选框');
+  // 状态修改
+};
+// 弹窗详情单选
+const TcselectChange = (selectAll, val) => {
+  console.log(val, '当前选中的');
+  console.log(Tcrow.value);
+  val.Checkbox = !val.Checkbox; //开启修改
+  Tcrow.value = selectAll;
+};
+
+// 批量删除盘点任务
+const BatchDelete = () => {};
+
+// 延期提交
+const InventoryDate = async () => {
+  try {
+    if (!TcData.value) return ElMessage.warning('请选择延期时间');
+
+    loadingObj.pageLoading = true;
+    dialogTabData.value = false;
+
+    const _value = details.selectionList[0];
+
+    const res = await $_updateDate({
+      id: _value.id,
+      startTime: _value.startTime,
+      endTime: TcData.value,
+    });
+
+    const { code, msg } = res.data;
+
+    if (code !== 200) return;
+    ElMessage.success(msg);
+    initTableData();
+  } catch (error) {
+    console.log('error :>> ', error);
+  } finally {
+    loadingObj.pageLoading = false;
+  }
+};
+
+// 提交修改
+const InventoryModification = () => {
+  console.log(Tcrow.value, 'Tcrow.value');
+  if (!Tcrow.value) {
+    ElMessage({
+      showClose: true,
+      message: '暂未选择信息',
+      type: 'warning',
+    });
+    return;
+  }
+  let data = [];
+  Tcrow.value.forEach(item => {
+    data.push({
+      id: item.id,
+      firsts: item.firsts,
+      second: item.second,
+      thirdProduct: item.thirdProduct,
+      categoryName: item.categoryName,
+      questId: item.questId,
+      questNum: row.value.questNum,
+      name: item.Input,
+      questStatus: 1,
+    });
+  });
+  console.log(data, '要提交的数据');
+  $_updateDetailInfo(data).then(res => {
+    TcViewEvent(row.value); //修改之后刷新页面
+    console.log(res, '修改成功之后的返回值');
+    if (res.data.code == 200) {
+      ElMessage({
+        showClose: true,
+        message: res.data.msg,
+        type: 'success',
+      });
+    }
+  });
+};
+// 对比数据按钮
+const comparativeData = val => {
+  dialogcontrast.value = true; //显示对比数据表格
+  contrastloading.value = true; //开启表格加载
+  console.log(val, '对比数据当前行');
+  DbEx.value = val; //存储当前行数据用于导出
+  let data = {};
+  data.questNum = val.questNum;
+  data.questId = val.id;
+  $_getContrastInfo(data).then(res => {
+    console.log(res, '对比数据返回值');
+    contrastData.value = res.data.data;
+    contrastloading.value = false; //关闭表格加载
+  });
+};
+// 重置搜索表单
+const searchReset = () => {
+  SoInfoData.value = {};
+};
+
+const TcViewEvent = (val, Inso) => {
+  Statusjudgment.value = false; //关闭新增按钮
+  TcPdloading.value = true;
+  console.log(val, '要传递的对象');
+  let data = {
+    questNum: val.questNum,
+    questId: val.id,
+    current: TccurrentPage.value, //页码
+    size: TcpageSize.value, //条数
+    questStatus: 1,
+    ...Inso,
+  };
+  console.log(data, '要提交的数据');
+
+  $_getDetailInfo(data).then(res => {
+    Tctotal.value = res.data.data.total;
+    res.data.data.records.forEach(item => {
+      item.Checkbox = true;
+      item.wLinputState = false;
+      item.Input = null;
+    });
+    TcPdloading.value = false;
+    console.log(res, '明细返回值');
+    TcPD.value = res.data.data.records;
+  });
+};
+// 点击详情按钮
+const ViewEvent = val => {
+  DiskStatus.value = true; //表示当前在已盘点列表
+  InventoryDetails.value.forEach(item => {
+    item.values = null;
+  });
+  InventoryState.value = false; //修改标题(盘点数据)
+  TccurrentPage.value = 1; //重置页码
+  NotCounted.value = false; //关闭未盘点
+  row.value = val;
+  PopupDetails.value = true;
+  TcPdloading.value = true;
+  console.log(val, '明细');
+  if (val.questStatus != 1) {
+    TcMInventoryStatus.value = false; //表示当前盘点任务不属于盘点中,关闭所有按钮权限
+  } else {
+    TcMInventoryStatus.value = true;
+  }
+  TcViewEvent(row.value);
+};
+// 废弃按钮
+const Discard = val => {
+  console.log(val);
+  let data = [];
+  data.push(val.id);
+  let ids = data.join(',');
+  console.log(data);
+  ElMessageBox.confirm('是否废弃该盘点任务?')
+    .then(() => {
+      $_postBatchDelete({ ids }).then(res => {
+        console.log(res, '删除成功');
+        if (res.data.code == 200) {
+          ElMessage({
+            message: '删除成功.',
+            type: 'success',
+          });
+        }
+        IndexPd();
+      });
+    })
+    .catch(() => {
+      // catch error
+    });
+};
+// 未盘点数据请求
+const NotCountedFn = (row, Inso, type = 0) => {
+  TcPdloading.value = true;
+  let dataInfo = {
+    ...Inso,
+  };
+  dataInfo.questStatus = type;
+  dataInfo.questNum = row.questNum;
+  dataInfo.questId = row.id;
+  dataInfo.current = TccurrentPage.value; //页码
+  dataInfo.size = TcpageSize.value; //条数
+  if (!DiskStatus.value) {
+    dataInfo.questStatus = 0;
+  } //表示当前在未盘点列表)
+  $_getDetailInfo(dataInfo).then(res => {
+    TcPdloading.value = false;
+    console.log(res, '未盘点明细返回值');
+    res.data.data.records.forEach(item => {
+      item.Checkbox = true;
+      item.wLinputState = false;
+      item.Input = null;
+    });
+    TcPD.value = res.data.data.records;
+    Tctotal.value = res.data.data.total; //总页码
+  });
+};
+
+// 未盘点明细
+const DetailsNotCounted = row => {
+  DiskStatus.value = false; //表示当前在未盘点列表
+  InventoryDetails.value.forEach(item => {
+    item.values = null;
+  });
+
+  UncountedDetails.value = row;
+  row.value = row;
+  InventoryState.value = true; //修改弹窗标题(未盘点数据),
+  TcFrom.value = {}; //重置搜索
+  TccurrentPage.value = 1; //重置页码
+  UncheckedRow.value = row; //存储当前点击行的数据
+  console.log(row.value, '存储好的数据');
+  NotCounted.value = true; //展开未盘点
+  TcPdloading.value = true;
+  PopupDetails.value = true;
+  NotCountedFn(row);
+
+  console.log(row.value, '未盘点明细存储值');
+};
+
+// 未盘点转已盘点按钮
+const NotInventoried = val => {
+  if (!Tcrow.value) {
+    ElMessage({
+      showClose: true,
+      message: '暂未选择信息',
+      type: 'warning',
+    });
+    return;
+  }
+  let data = [];
+  console.log(UncheckedRow.value, '提交盘点了');
+  Tcrow.value.forEach(item => {
+    data.push({
+      id: item.id,
+      questStatus: (item.questStatus = 1),
+      questId: item.questId,
+      questNum: UncheckedRow.value.questNum,
+    });
+  });
+  console.log(data, '未盘点处理好的值');
+  $_updateDetailInfo(data).then(res => {
+    console.log(res, '未盘点转为已盘点');
+    if (res.data.code == 200) {
+      ElMessage({
+        showClose: true,
+        message: res.data.msg,
+        type: 'success',
+      });
+      NotCountedFn(UncheckedRow.value);
+    }
+  });
+};
+// 对盘点中的参数,修改状态
+const ModifyingStatus = () => {
+  if (!Tcrow.value) {
+    ElMessage({
+      showClose: true,
+      message: '暂未选择信息',
+      type: 'warning',
+    });
+    return;
+  }
+  counting.value = {}; //重置数据值对象
+  // 修改过的参数回显
+  $_getQuestChildInfo({
+    questNum: row.value.questNum,
+    id: Tcrow.value[0].id,
+  }).then(res => {
+    console.log(res, '数量回显');
+    if (res.data.data.length) {
+      res.data.data.forEach((item, index) => {
+        counting.value[radioList.value[index].input] = item.questNum;
+      });
+    }
+  });
+
+  InventoryStatus.value = true; //展开状态选择
+  if (Tcrow.value[0].questTarget == 1) {
+    //表示当前是定制品
+    TcStateSwitching.value = false;
+  } else {
+    TcStateSwitching.value = true; //表示当前是零担,库存品
+  }
+};
+
+// 删除盘点任务包件(只能删除已盘)
+const BatchdeletePackages = () => {
+  const invalidQuestStatusIndex = Tcrow.value.findIndex(item => item.questStatus !== 1);
+  if (invalidQuestStatusIndex !== -1) {
+    // 存在状态不为1的元素
+    ElMessage({
+      message: '只能删除已盘',
+      type: 'warning',
+    });
+    return;
+  }
+
+  const data = {
+    questDetailIds: Tcrow.value.map(item => item.id),
+    questId: Tcrow.value[0]?.questId,
+    questNum: row.value.questNum,
+  };
+  console.log(data, '要删除处理好的数据');
+  $_questDetailIds(data).then(res => {
+    TcViewEvent(row.value);
+    console.log(res, '删除后的返回值');
+    if (res.data.code === 200) {
+      ElMessage({
+        message: res.data.msg,
+        type: 'success',
+      });
+    }
+  });
+};
+
+// 信息编辑弹窗关闭的时候重置保存的数据
+const closeInformationediting = () => {
+  Tcrow.value = null;
+};
+// 盘点状态选择
+const TcReac = val => {
+  console.log(val);
+  InventoryInput.value = val; //存储当前选择的是第几个input
+  if (!TcStateSwitching.value) {
+    //定制品规则 可以批量操作
+    radioList.value.forEach(item => {
+      item.disabled = true;
+      counting.value[item.input] = 0;
+    });
+    radioList.value[val].disabled = false;
+    counting.value[radioList.value[val].input] = 1; //定制品选中的值默认为1
+  } else {
+    //零担,库存品规则
+    if (!TcnumStatu.value) {
+      radioList.value.forEach(item => {
+        item.disabled = true;
+        counting.value[item.input] = 0;
+      });
+      TcnumStatu.value = true; //表示当前零担库存品已经初始化了
+    } else {
+      radioList.value[val].disabled = false;
+    }
+  }
+};
+// 零担,库存品多选处理
+function updateFlag(ids, contents, newFlag) {
+  contents.forEach((content, index) => {
+    if (ids.includes(content.txt)) {
+      content.disabled = newFlag;
+      counting.value[content.input] = 1;
+    } else {
+      content.disabled = !newFlag;
+      counting.value[content.input] = 0;
+    }
+  });
+  console.log(radioList.value);
+}
+// 状态多选操作
+const Tcmultiple = val => {
+  updateFlag(val, radioList.value, false); //吧选中的状态设为可以修改
+};
+
+// 盘点状态确认修改
+const StatusDetermination = () => {
+  console.log(row.value, 'row.value');
+  if (!TcStateSwitching.value) {
+    //为假表示当前走定制品规则
+    //定制品规则
+    let InputMax = counting.value[radioList.value[InventoryInput.value].input]; //存储当前输入框最大值
+    if (InputMax > Tcrow.value[0].questTarget) {
+      ElMessage({
+        showClose: true,
+        message: `总数[${InputMax}]不能超过在库数量[${Tcrow.value[0].questTarget}]`,
+        type: 'warning',
+      });
+      return;
+    }
+    console.log(counting.value, '状态输入框的值');
+    let start = Tcrow.value.questTarget;
+    let data = [];
+    const filteredData = Tcrow.value.filter(item => item.name == start); //
+    filteredData.forEach(item => {
+      console.log(item);
+      data.push({
+        stockNum: counting.value.stockNum, //在库数量
+        lossNum: counting.value.lossNum, //丢失数量
+        deliveNum: counting.value.deliveNum, //配送数量
+        wornNum: counting.value.wornNum, //破损数量
+        noRepairNum: counting.value.noRepairNum, //不可修复数量
+        noReceivedNum: counting.value.noReceivedNum, //未入库数量
+        questNum: row.value.questNum, //任务编号
+        questId: item.questId,
+        allocationId: item.allocationId, //上架后的库位id
+        id: item.id,
+        cargoName: Number(InventoryInput.value + 1 + '0'), //状态
+      });
+    });
+    console.log(data, '处理好的数据');
+
+    $_updateQuestChildInfo(data).then(res => {
+      console.log(res, '盘点状态修改完成的返回值');
+      if (res.data.code == 200) {
+        ElMessage({
+          showClose: true,
+          message: res.data.msg,
+          type: 'success',
+        });
+        InventoryStatus.value = false; //关闭状态选择
+        TcViewEvent(row.value);
+      }
+    });
+  } else {
+    // 零担,库存品规则
+    console.log(counting.value, 'input输入框的数据');
+    console.log(Tcrow.value, 'questId');
+    let data = [
+      {
+        stockNum: counting.value.stockNum, //在库数量
+        wornNum: counting.value.wornNum, //破损数量
+        lossNum: counting.value.lossNum, //丢失数量
+        noRepairNum: counting.value.noRepairNum, //不可修复数量
+        deliveNum: counting.value.deliveNum, //配送数量
+        noReceivedNum: counting.value.noReceivedNum, //未入库数量
+        questNum: row.value.questNum, //任务编号
+        questId: Tcrow.value[0].questId, //零担和库存品一次只能操作第一条数据,这里暂取第一个选中的数据,后续的数据无效操作
+        allocationId: Tcrow.value[0].allocationId, //上架后的库位id
+        id: Tcrow.value[0].id,
+        cargoName: TcReaJoin.value.join(), //状态
+      },
+    ];
+    let sum =
+      data[0].stockNum +
+      data[0].wornNum +
+      data[0].lossNum +
+      data[0].noRepairNum +
+      data[0].deliveNum +
+      data[0].noReceivedNum;
+    if (sum > Tcrow.value[0].stockNum) {
+      ElMessage({
+        showClose: true,
+        message: `总数[${sum}]不能超过在库数量[${Tcrow.value[0].stockNum}]`,
+        type: 'error',
+      });
+      return;
+    }
+    console.log(data, '处理好的数据');
+    $_updateQuestChildInfo(data).then(res => {
+      console.log(res, '盘点状态修改完成的返回值');
+      if (res.data.code == 200) {
+        ElMessage({
+          showClose: true,
+          message: res.data.msg,
+          type: 'success',
+        });
+        InventoryStatus.value = false; //关闭状态选择
+        TcViewEvent(row.value);
+      }
+    });
+  }
+};
+
+const optionss = ref([]);
+const list = ref([]);
+const remoteMethod = query => {
+  if (query !== '') {
+    optionss.value = list.value.filter(item => {
+      return item.label.toLowerCase().includes(query.toLowerCase());
+    });
+  } else {
+    optionss.value = [];
+  }
+};
+// 多选数据状态处理
+const Tclist = val => {
+  console.log(val);
+  if (val >= 1 && val <= 6 && !radioList.value[val - 1].disabled) {
+    if (!TcReaJoin.value.includes(val * 10)) {
+      TcReaJoin.value.push(val * 10);
+    }
+  } else {
+    const index = TcReaJoin.value.indexOf(val * 10);
+    if (index !== -1) {
+      TcReaJoin.value.splice(index, 1);
+    }
+  }
+  console.log(TcReaJoin.value, '处理好的数据');
+};
+// 物料编码
+
+const Wllist = ref([]);
+const WLCode = query => {
+  if (query !== '') {
+    optionss.value = Wllist.value.filter(item => {
+      return item.label.toLowerCase().includes(query.toLowerCase());
+    });
+  } else {
+    optionss.value = [];
+  }
+};
+// 物料列表
+const Wloptions = ref([]);
+// 物料信息搜索
+const wLcheng = (val, info) => {
+  console.log(val.undefined);
+  console.log(info, '信息');
+  $_materialList({
+    name: val.undefined,
+  }).then(res => {
+    console.log(res, '物料查询');
+    if (!res.data.data.records.length) {
+      ElMessageBox.confirm('暂无数据是否新增?')
+        .then(() => {
+          TcDataaddition.value = true;
+        })
+        .catch(() => {
+          // catch error
+        });
+    } else {
+      // productCode
+      // wLinputState.value=true;//开启下拉选择
+
+      info.wLinputState = true;
+      // Wloptions.value 下拉选择变量
+      res.data.data.records.forEach(item => {
+        Wloptions.value.push({
+          label: item.name,
+          value: item.name,
+        });
+      });
+    }
+  });
+};
+
+// 盘点详情编辑
+const InventoryEditing = val => {
+  $_getList({
+    current: 1, //页码
+    size: 10000, //条数
+    warehouseId: val.warehouseId,
+  }).then(res => {
+    console.log(res);
+
+    if (res.data.data.records) {
+      list.value = res.data.data.records.map(item => {
+        return { value: `${item.id}`, label: `${item.qrCode}` };
+      });
+      console.log(list.value);
+    }
+  });
+
+  counting.value = {}; //重置数据值对象
+  WrapBarEditing.value.radio = null;
+  readList.value = [];
+  // 修改过的参数回显
+  $_getQuestChildInfo({
+    questNum: row.value.questNum,
+    id: val.id,
+  }).then(res => {
+    console.log(res, '数量回显');
+    if (res.data.data.length) {
+      res.data.data.forEach((item, index) => {
+        counting.value[radioList.value[index].input] = item.questNum;
+      });
+    }
+  });
+
+  Tcrow.value = val;
+  if (val.questTarget == 1) {
+    TcStateSwitching.value = false; //定制品规则
+  } else {
+    TcStateSwitching.value = true; //库存品,零担规则
+  }
+  PopupEditing.value = true;
+  Inventoryrow.value = val; //存一份响应式数据
+  const copiedObject = Object.assign({}, val);
+  console.log(val, '盘点详情编辑');
+  WrapBarEditing.value.orderPackageCode = copiedObject.orderPackageCode; //包条
+  WrapBarEditing.value.orderCode = copiedObject.orderCode; //订单自编号
+  WrapBarEditing.value.positionCode = copiedObject.positionCode; //货位
+};
+// 信息编辑弹窗提交
+const InformationEditing = () => {
+  TcPdloading.value = true;
+  console.log(WrapBarEditing.value, 'WrapBarEditing.value');
+  let data = [
+    {
+      orderCode: WrapBarEditing.value.orderCode, //订单编号
+      groundingPositionCode: WrapBarEditing.value.groundingPositionCode, //新的货位
+      stockNum: counting.value.stockNum, //在库数量
+      lossNum: counting.value.lossNum, //丢失数量
+      deliveNum: counting.value.deliveNum, //配送数量
+      wornNum: counting.value.wornNum, //破损数量
+      noRepairNum: counting.value.noRepairNum, //不可修复数量
+      noReceivedNum: counting.value.noReceivedNum, //未入库数量
+      allocationId: Tcrow.value.allocationId, //上架后的库位id
+      questId: Tcrow.value.questId,
+      questNum: row.value.questNum, //任务编号
+      id: Tcrow.value.id,
+    },
+  ];
+  if (WrapBarEditing.value.groundingPositionCode) {
+    let val = list.value.find(obj => obj.value == WrapBarEditing.value.groundingPositionCode);
+    console.log(data, '货位处理好的数据');
+    data[0].groundingAllocationId = val.value;
+    data[0].groundingPositionCode = val.label;
+  }
+  if (!TcStateSwitching.value) {
+    //为假表示当前走定制品规则
+    let InputMax = counting.value[radioList.value[InventoryInput.value].input]; //存储当前输入框最大值
+    if (InputMax > Tcrow.value.questTarget) {
+      ElMessage({
+        showClose: true,
+        message: `总数[${InputMax}]不能超过在库数量[${Tcrow.value.questTarget}]`,
+        type: 'warning',
+      });
+      return;
+    }
+
+    console.log(data, '处理好的数据');
+  } else {
+    let sum =
+      data[0].stockNum +
+      data[0].wornNum +
+      data[0].lossNum +
+      data[0].noRepairNum +
+      data[0].deliveNum +
+      data[0].noReceivedNum;
+    if (sum > Tcrow.value.stockNum) {
+      ElMessage({
+        showClose: true,
+        message: `总数[${sum}]不能超过在库数量[${Tcrow.value.stockNum}]`,
+        type: 'error',
+      });
+      return;
+    }
+    (data[0].cargoName = TcReaJoin.value.join()), //状态 //状态
+      console.log(data, '处理好的数据d');
+  }
+  $_updateQuestChildInfo(data).then(res => {
+    console.log(res, '盘点状态修改完成的返回值');
+    if (res.data.code == 200) {
+      ElMessage({
+        showClose: true,
+        message: res.data.msg,
+        type: 'success',
+      });
+      WrapBarEditing.value = {}; //重置提交表单
+      InventoryStatus.value = false; //关闭状态选择
+      TcViewEvent(row.value);
+    }
+  });
+  PopupEditing.value = false; //关闭弹窗
+  TcFrom.value = {}; //重置搜索对象
+};
+
+// 弹窗品类搜索
+const TcChenge = (event, val) => {
+  // 开始时间 startTime
+  // 结束时间 endTime
+  console.log(event, val);
+  TcPdloading.value = true;
+  console.log(row.value, '必须参数');
+  console.log(UncountedDetails.value.questNum, 'questNum');
+  let quest = UncountedDetails.value.questNum;
+  let qstId = UncountedDetails.value.id;
+  let data = {
+    current: TccurrentPage.value, //页码
+    size: TcpageSize.value, //条数
+    ...TcFrom.value,
+    questNum: quest,
+    questId: qstId,
+  };
+  console.log(event, 'event');
+  if (event) {
+    if (event.length == 2) {
+      //时间
+      data.startTime = event[0];
+      data.endTime = event[1];
+      delete data.inventoryDate;
+    }
+  }
+  console.log(DiskStatus.value, 'DiskStatus.value');
+  if (DiskStatus.value) {
+    data.questStatus = 1;
+  } else {
+    data.questStatus = 0;
+  }
+  $_getDetailInfo(data).then(res => {
+    Tctotal.value = res.data.data.total;
+    res.data.data.records.forEach(item => {
+      item.Checkbox = true;
+      item.wLinputState = false;
+      item.Input = null;
+    });
+    TcPdloading.value = false;
+    console.log(res, '明细返回值');
+    TcPD.value = res.data.data.records;
+  });
+};
+// 弹窗明细,每一页多少条
+const TcPageSizeChange = val => {
+  console.log('每一页多少条');
+  TcpageSize.value = val;
+  if (NotCounted.value) {
+    //表示当前是未盘点翻页
+    NotCountedFn(UncheckedRow.value, TcFrom.value);
+  } else {
+    console.log(val);
+    TcViewEvent(row.value, TcFrom.value);
+  }
+};
+
+// 弹窗明细,选择了多少页
+const TcSizeChange = val => {
+  console.log('翻页');
+  TccurrentPage.value = val;
+  if (NotCounted.value) {
+    //表示当前是未盘点翻页
+
+    NotCountedFn(UncheckedRow.value, TcFrom.value);
+  } else {
+    console.log(val);
+    TcViewEvent(row.value, TcFrom.value);
+  }
+};
+// 弹窗翻页
+const TcpageList = val => {
+  console.log(val, '弹窗翻页');
+};
+// 条数
+const SizeChange = val => {
+  console.log(val, '条数');
+  currentPage.value = val;
+  onLoad();
+};
+// 翻页···························
+const PageSizeChange = val => {
+  console.log(val, '每页50条');
+  pageSize.value = val;
+  onLoad();
+};
+// 对比数据单选按钮
+const contrastselectChange = (select, val) => {
+  console.log(select, val, '对比数据1');
+};
+// 对比数据全选按钮
+const contrastselectAll = (select, val) => {
+  console.log(select, val, '对比数据2');
+};
+
+// 关闭弹窗关闭回调
+const handleClose = () => {
+  PopupDetails.value = false;
+};
+// 刷新页面按钮(初始化页面参数)
+const Refresh = () => {
+  onLoad(); //初始化表格数据
+};
+
+// 获取盘点列表
+// 搜索盘点任务
+//  const searchChange=()=>{
+// console.log('触发搜索');
+// $_getDetailInfo({...SoInfoData.value}).then(res=>{
+//     console.log(res,'搜索框的值');
+// })
+//  }
+
+// 创建盘点任务
+const InventoryTask = () => {
+  formInventory.value = {};
+  formInventory.value.scname = [];
+  let select = [];
+  InventoryPopup.value = true; //开启创建盘点任务弹窗
+  getDictList().then(res => {
+    console.log('创建盘点返回值', res);
+    if (res.data.code == 200) {
+      res.data.data.forEach(item => {
+        console.log(item, '盘点任务返回值');
+        select.push({
+          clientName: item.clientName, // 商城名称
+          id: item.id, // 商场id
+          brandName: item.brandName, // 商场下品牌名
+        });
+      });
+      formInventory.value.select = select;
+      console.log(formInventory.value, '处理好的商场名称');
+    }
+  });
+};
+
+// 处理商场名称函数根据传入ID读取列表中的商场
+function matchInfoById(idArray, infoArray) {
+  const matchedInfo = [];
+  idArray.forEach(id => {
+    const matchedItem = infoArray.find(item => item.id === id);
+    if (matchedItem) {
+      matchedInfo.push(matchedItem);
+    }
+  });
+  return matchedInfo;
+}
+
+// 商场名称选择回调
+const formInventoryChange = val => {
+  console.log('选择了商场名称');
+  formInventory.value.id = val;
+  const matchedInfo = matchInfoById(val, formInventory.value.select);
+  console.log(matchedInfo, '处理好的参数');
+  formInventory.value.brandName;
+  let name = [];
+  matchedInfo.forEach(item => {
+    name.push(item.brandName);
+  });
+  formInventory.value.brandName = name.join(','); //处理品牌名称显示
+};
+
+// 创建盘点任务弹窗关闭回调
+const InventoryPopupClose = () => {
+  console.log('创建盘点任务关闭弹窗回调');
+};
+// 盘点提交
+const InventorySubmit = async () => {
+  try {
+    loadingObj.pageLoading = true;
+
+    if (!formInventory.value.time) {
+      ElMessage({
+        message: '请选择盘点任务时间',
+        type: 'warning',
+      });
+      return;
+    }
+    console.log(formInventory.value, '盘点选择好的参数');
+    // 创建提交表单
+    let SubData = {};
+    SubData.list = [];
+    console.log(formInventory.value.scname, 'formInventory.value.scname.length');
+    if (!formInventory.value.scname.length && !formInventory.value.brandName) {
+      //
+      SubData.list = [];
+      // 结束时间
+      SubData.endTime = formInventory.value.time[1];
+      // 开始时间
+      SubData.startTime = formInventory.value.time[0];
+      InventoryPopup.value = false; //关闭创建盘点任务弹窗
+      console.log(SubData, '处理好的数据');
+      const res = await postAddtaskQuest(SubData);
+      if (res.data.code !== 200) return;
+
+      ElMessage.success(res.data.msg);
+      initTableData(); //体积之后初始化页面
+
+      console.log(res, '盘点计划提交成功');
+
+      return;
+    }
+
+    // 处理商场名称和商场ID
+    const matchedInfo = matchInfoById(formInventory.value.id, formInventory.value.select);
+    console.log(matchedInfo, 'matchedInfo');
+    console.log(matchedInfo, 'matchedInfo提交处理数据');
+    if (matchedInfo) {
+      matchedInfo.forEach(item => {
+        SubData.list.push({
+          refId: item.id,
+          refName: item.clientName,
+        });
+      });
+    }
+
+    // 结束时间
+    SubData.endTime = formInventory.value.time[1];
+    // 开始时间
+    SubData.startTime = formInventory.value.time[0];
+    console.log(SubData, '处理好要提交的数据');
+    InventoryPopup.value = false; //关闭创建盘点任务弹窗
+    const res = await postAddtaskQuest(SubData);
+    if (res.data.code !== 200) return;
+
+    ElMessage.success(res.data.msg);
+    initTableData(); //体积之后初始化页面
+  } catch (error) {
+    console.log('error :>> ', error);
+  } finally {
+    loadingObj.pageLoading = false;
+  }
+};
+// 顶部废弃按钮
+const discard = () => {
+  if (details.selectionList.length === 0) return ElMessage.warning('请选择需要废弃的盘点任务');
+
+  const ids = details.selectionList.map(val => val.id).join(',');
+  ElMessageBox.confirm('是否废弃该盘点任务?')
+    .then(async () => {
+      try {
+        loadingObj.pageLoading = true;
+
+        const res = await $_postBatchDelete({ ids });
+        const { code, msg } = res.data;
+        if (code !== 200) return;
+        ElMessage.success(msg || '废弃成功');
+
+        initTableData();
+      } catch (error) {
+        console.log('error :>> ', error);
+      } finally {
+        loadingObj.pageLoading = false;
+      }
+    })
+    .catch(() => {
+      // catch error
+    });
+};
+
+// 顶部延期(延期只能单个延期)
+const DelayButton = () => {
+  console.log('延期');
+  const _length = details.selectionList.length;
+  if (_length === 0) return ElMessage.warning('请选择需要延期的数据(单选操作)');
+  else if (_length > 1) return ElMessage.warning('暂不支持批量操作');
+  TcData.value = details.selectionList[0].endTime;
+  dialogTabData.value = true;
+};
+
+/** 未盘点数据导出 */
+const handleUncountedExport = () => {
+  ElMessageBox.confirm('是否导出未盘点数据?').then(async () => {
+    try {
+      TcPdloading.value = true;
+      const res = await postExportContrastStockInfo({ questNum: UncountedDetails.value.questNum });
+      if (res.status !== 200) return;
+
+      downloadXls(res.data, '未盘点数据.xlsx');
+    } catch (error) {
+      console.log('error :>> ', error);
+    } finally {
+      TcPdloading.value = false;
+    }
+  });
+};
+</script>
+
+<style lang="scss" scoped>
+.maxContent {
+  width: 100%;
+  box-sizing: border-box;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+}
+
+.SoInput {
+  display: flex;
+  justify-content: space-between;
+  padding: 0 10px;
+  margin-top: 10px;
+
+  form {
+    display: flex;
+    flex-wrap: wrap;
+    margin-top: 5px;
+
+    :deep(.el-form-item) {
+      margin-bottom: 0;
+    }
+  }
+
+  .SoBtn {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+}
+
+.avue-crud__right {
+  margin-top: 5px;
+  display: flex;
+  justify-content: space-between;
+  margin-bottom: 5px;
+  padding: 0 10px;
+}
+
+.demo-pagination-block {
+  flex: 1;
+  display: flex;
+  align-items: flex-end;
+  margin-bottom: 8px;
+  justify-content: flex-end;
+  margin-right: 6px;
+}
+
+.demo-pagination-blockPD {
+  justify-content: space-between;
+}
+
+:deep(.el-table-column--selection) {
+  text-align: center;
+}
+
+:deep(.el-dialog__footer) {
+  display: flex;
+}
+
+:deep(.el-dialog__body) {
+  padding-top: 0;
+}
+
+:deep(.el-dialog) {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  margin-top: 0;
+}
+
+.Tcstdialog-footer {
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 80px;
+}
+
+.Tcstate {
+  display: flex;
+  margin-bottom: 20px;
+
+  .el-radio {
+    width: 54px;
+  }
+}
+
+.TcstateS {
+  margin: 0 2%;
+  margin-bottom: 30px;
+
+  label {
+    width: 80px;
+  }
+}
+
+.tcradiogroup {
+  display: inline-flex;
+  align-items: flex-start;
+  font-size: 0;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: space-between;
+}
+
+.el-checkbox-group {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+}
+
+.el-input__inner {
+  text-align: center;
+}
+
+.dbExPo {
+  display: flex;
+  justify-content: flex-end;
+  margin-bottom: 10px;
+}
+.el-exDc {
+  margin-left: 20px;
+  color: #10d070;
+  cursor: pointer;
+}
+:deep(.el-dialog) {
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+  .el-dialog__footer {
+    flex: 1;
+  }
+  .dialog-footer {
+    display: flex;
+    align-items: flex-end;
+  }
+}
+.fullScreen {
+  display: flex;
+  margin-left: auto;
+  align-items: center;
+  justify-content: center;
+  i {
+    width: 20px;
+    height: 20px;
+    svg {
+      height: 100%;
+      width: 100%;
+    }
+  }
+}
+:deep(.el-input__wrapper) {
+  height: 30px;
+}
+:deep(.el-input__inner) {
+  height: 100% !important;
+}
+.pdsj {
+  :deep(.el-input__wrapper) {
+    height: 30px !important;
+  }
+}
+.ElBtnClass {
+  .el-button {
+    padding: 0;
+    border: none;
+    background-color: transparent;
+  }
+}
+
+.w100 {
+  width: 100% !important;
+}
+</style>
diff --git a/src/views/distribution/deliverylist/distributionDeliveryListedt.vue b/src/views/distribution/deliverylist/distributionDeliveryListedt.vue
index f9488ead..8454a660 100644
--- a/src/views/distribution/deliverylist/distributionDeliveryListedt.vue
+++ b/src/views/distribution/deliverylist/distributionDeliveryListedt.vue
@@ -4339,9 +4339,8 @@ export default {
                 this.getReservationInventoryPackageListInfo(this.page);
               }
             })
-            .catch(res => {
-         
-            }).finally(()=>{
+            .catch(res => {})
+            .finally(() => {
               this.loading = false;
             });
         })
@@ -4467,40 +4466,27 @@ export default {
     // 零担批量计划取消
     LdBatchcancellation() {
       return;
-      if (!this.selectionList.length) {
-        ElMessage({
-          message: '请勾选需要计划取消的数据',
-          type: 'warning',
-        });
-        return;
-      }
-      this.$confirm('是否进行批量计划取消?')
-        .then(() => {
-          this.loading = true; //开启加载
-          if (res.data.code == 200) {
-            this.truckload(this.page);
-          }
-        })
-        .catch(() => {});
     },
 
-// 客户包件批量取消
-PackBatchcancellation(){
-  if (!this.selectionList.length) { 
+    // 客户包件批量取消
+    PackBatchcancellation() {
+      if (!this.selectionList.length) {
         ElMessage({
           message: '请勾选需要计划取消的数据',
           type: 'warning',
         });
         return;
       }
-      let result = this.selectionList.every(item => item.orderPackageStatus == !70 || item.orderPackageLoadingStatus !=20);
-      console.log(result,'result');
-      if(!result){
+      let result = this.selectionList.every(
+        item => item.orderPackageStatus == !70 || item.orderPackageLoadingStatus != 20
+      );
+      console.log(result, 'result');
+      if (!result) {
         ElMessage({
           message: '有已经存在签收的订单或已装车,不满足批量签收条件',
           type: 'warning',
         });
-        return
+        return;
       }
       this.$confirm('是否进行批量计划取消?')
         .then(() => {
@@ -4521,15 +4507,13 @@ PackBatchcancellation(){
               this.selectionList = []; //清空选择
               this.loading = false;
             })
-            .catch(res => {
-            
-            }).finally(()=>{
+            .catch(res => {})
+            .finally(() => {
               this.loading = false;
             });
         })
         .catch(() => {});
-},
-
+    },
 
     // 批量签收
     Batchsigning() {
@@ -4565,13 +4549,15 @@ PackBatchcancellation(){
         });
         return;
       }
-      let result = this.selectionList.every(item => item.stockSignfoStatus == 10 && item.stockLockingStatus==10);
-      if(!result){
+      let result = this.selectionList.every(
+        item => item.stockSignfoStatus == 10 && item.stockLockingStatus == 10
+      );
+      if (!result) {
         ElMessage({
           message: '有已经存在签收的订单,不满足批量签收条件',
           type: 'warning',
         });
-        return
+        return;
       }
       this.$confirm('是否进行批量计划取消?')
         .then(() => {
@@ -4598,10 +4584,6 @@ PackBatchcancellation(){
             });
         })
         .catch(() => {});
-
-    
-
-
     },
     /**printTemplate
      * 打印
@@ -5355,7 +5337,7 @@ PackBatchcancellation(){
 
         this.deliverydata = data;
         // this.deliverydata.outboundDate = data.stockupInfo.outboundDate;
-        if (data.stockupInfo.forkliftName) {
+        if (data.stockupInfo && data.stockupInfo.forkliftName) {
           this.deliverydata.forkliftName = data.stockupInfo.forkliftName;
         }
 
@@ -5464,9 +5446,9 @@ PackBatchcancellation(){
     height: 500px !important;
   }
 }
-:deep(.el-upload-dragger){
+:deep(.el-upload-dragger) {
   display: flex;
-    align-items: center;
-    justify-content: center;
+  align-items: center;
+  justify-content: center;
 }
 </style>
diff --git a/src/views/wel/index.vue b/src/views/wel/index.vue
index 3be044ab..80394da6 100644
--- a/src/views/wel/index.vue
+++ b/src/views/wel/index.vue
@@ -134,53 +134,49 @@
       <div class="info">
         <div class="name">{{ name }}</div>
         <div class="slogan">您好!欢迎使用货无忧</div>
-        <div class="title"> 成都数联物科信息技术有限公司</div>
-        <div class="time">{{currentTime}}</div>
-       
-      
+        <div class="title">成都数联物科信息技术有限公司</div>
+        <div class="time">{{ currentTime }}</div>
       </div>
     </div>
   </div>
 </template>
 <script setup>
-import { ref ,onMounted } from 'vue';
+import { ref, onMounted } from 'vue';
 const indexState = ref(false);
 const currentTime = ref('0000年00月00日00时00分00秒');
 const name = ref('');
 name.value = JSON.parse(localStorage.getItem('TWMS-userInfo')).content.real_name;
-      setInterval(() => {
-        const now = new Date();
-        const year = now.getFullYear();
-        const month = String(now.getMonth() + 1).padStart(2, '0');
-        const day = String(now.getDate()).padStart(2, '0');
-        const hours = String(now.getHours()).padStart(2, '0');
-        const minutes = String(now.getMinutes()).padStart(2, '0');
-        const seconds = String(now.getSeconds()).padStart(2, '0');
-        currentTime.value = `${year}年${month}月${day}日${hours}时${minutes}分${seconds}秒`;
-      }, 1000);
- 
+setInterval(() => {
+  const now = new Date();
+  const year = now.getFullYear();
+  const month = String(now.getMonth() + 1).padStart(2, '0');
+  const day = String(now.getDate()).padStart(2, '0');
+  const hours = String(now.getHours()).padStart(2, '0');
+  const minutes = String(now.getMinutes()).padStart(2, '0');
+  const seconds = String(now.getSeconds()).padStart(2, '0');
+  currentTime.value = `${year}年${month}月${day}日${hours}时${minutes}分${seconds}秒`;
+}, 1000);
 </script>
 <style scoped lang="scss">
-
 .info {
   display: flex;
   display: flex;
   flex-direction: column;
   justify-content: center;
-  .name{
+  .name {
     font-size: 40px;
     color: #d3832a;
     font-weight: bold;
   }
-  .slogan{
+  .slogan {
     font-size: 3em;
   }
-  .time{
+  .time {
     display: flex;
     margin-top: 10px;
     justify-content: flex-end;
   }
-  .title{
+  .title {
     display: flex;
     margin-top: 10px;
     justify-content: flex-end;
@@ -190,8 +186,8 @@ name.value = JSON.parse(localStorage.getItem('TWMS-userInfo')).content.real_name
   width: 100%;
   height: 100%;
   display: flex;
-    align-items: center;
-    justify-content: center;
+  align-items: center;
+  justify-content: center;
   span {
     color: #d3832a;
   }
@@ -226,345 +222,6 @@ name.value = JSON.parse(localStorage.getItem('TWMS-userInfo')).content.real_name
 <style lang="scss" scope>
 @import '../../styles/flowStyle.scss';
 
-// .bx {
-//   position: relative;
-//   .ztjk {
-//     display: flex;
-//     flex-direction: column;
-//     align-items: center;
-//     position: absolute;
-//     font-size: 14px;
-//     font-size: #747474;
-//     top: 235px;
-//     left: 680px;
-//     > img {
-//       width: 62px;
-//       height: 62px;
-//     }
-//   }
-//   .left {
-//     width: 640px !important;
-//     height: 500px;
-//     background: #ffffff;
-//     box-shadow: 0px 0px 16px 0px rgba(211, 131, 42, 0.1);
-//     border-radius: 32px;
-//     opacity: 1;
-//     box-sizing: border-box;
-//     position: absolute;
-//     left: 20px;
-//     top: 10px;
-//     padding: 30px 44px;
-//     .tptitl {
-//       display: flex;
-//       align-items: center;
-//       > img {
-//         width: 32px;
-//         height: 22px;
-//         margin-right: 8px;
-//       }
-//     }
-//     .onebx1 {
-//       width: 100%;
-//       height: 100%;
-//       position: relative;
-//       margin-top: 30px;
-//       > div {
-//         display: flex;
-//         flex-direction: column;
-//         align-items: center;
-//         position: absolute;
-//         font-size: 14px;
-//         font-size: #747474;
-//         > img {
-//           width: 62px;
-//           height: 62px;
-//         }
-//       }
-//       .item1 {
-//         top: 10px;
-//         left: 0px;
-//       }
-//       .item2 {
-//         top: 140px;
-//         left: 0px;
-//       }
-//       .item3 {
-//         top: 10px;
-//         left: 140px;
-//       }
-//       .item4 {
-//         top: 140px;
-//         left: 140px;
-//       }
-//       .item5 {
-//         top: 270px;
-//         left: 140px;
-//       }
-//       .item6 {
-//         top: 10px;
-//         left: 330px;
-//       }
-//       .item7 {
-//         top: 140px;
-//         left: 330px;
-//       }
-//       .item8 {
-//         top: 140px;
-//         left: 450px;
-//       }
-//       .upimg {
-//         width: 15px;
-//         height: 40px;
-//         position: absolute;
-//         left: 355px;
-//         top: 100px;
-//       }
-//       .rigth1 {
-//         width: 40px;
-//         height: 15px;
-//         position: absolute;
-//         left: 80px;
-//         top: 40px;
-//       }
-//       .rigth2 {
-//         width: 40px;
-//         height: 15px;
-//         position: absolute;
-//         left: 80px;
-//         top: 180px;
-//       }
-//       .rigth3 {
-//         width: 40px;
-//         height: 15px;
-//         position: absolute;
-//         left: 400px;
-//         top: 180px;
-//       }
-//       .rigth4 {
-//         width: 40px;
-//         height: 15px;
-//         position: absolute;
-//         left: 530px;
-//         top: 180px;
-//       }
-//       .rigthall {
-//         width: 40px;
-//         height: 270px;
-//         position: absolute;
-//         left: 250px;
-//         top: 50px;
-//       }
-//     }
-//   }
-//   .rigth {
-//     width: 640px;
-//     height: 500px;
-//     background: #ffffff;
-//     box-shadow: 0px 0px 16px 0px rgba(58, 216, 188, 0.102);
-//     border-radius: 32px;
-//     opacity: 1;
-//     box-sizing: border-box;
-//     position: absolute;
-//     left: 760px;
-//     top: 10px;
-//     padding: 30px 44px;
-//     .tptitl {
-//       display: flex;
-//       align-items: center;
-//       > img {
-//         width: 32px;
-//         height: 22px;
-//         margin-right: 8px;
-//       }
-//     }
-//     .onebx1 {
-//       width: 100%;
-//       height: 100%;
-//       position: relative;
-//       margin-top: 30px;
-//       > div {
-//         display: flex;
-//         flex-direction: column;
-//         align-items: center;
-//         position: absolute;
-//         font-size: 14px;
-//         font-size: #747474;
-//         > img {
-//           width: 62px;
-//           height: 62px;
-//         }
-//       }
-//       .item1 {
-//         top: 140px;
-//         left: 50px;
-//       }
-//       .item2 {
-//         top: 140px;
-//         left: 170px;
-//       }
-//       .item3 {
-//         top: 270px;
-//         left: 170px;
-//       }
-//       .item4 {
-//         top: 10px;
-//         left: 300px;
-//       }
-//       .item5 {
-//         top: 140px;
-//         left: 300px;
-//       }
-//       .item6 {
-//         top: 10px;
-//         left: 430px;
-//       }
-//       .item7 {
-//         top: 140px;
-//         left: 430px;
-//       }
-//       .item8 {
-//         top: 270px;
-//         left: 430px;
-//       }
-//       .upimg {
-//         width: 15px;
-//         height: 40px;
-//         position: absolute;
-//         left: 190px;
-//         top: 230px;
-//       }
-//       .rigth1 {
-//         width: 40px;
-//         height: 15px;
-//         position: absolute;
-//         left: 0px;
-//         top: 180px;
-//       }
-//       .rigth2 {
-//         width: 40px;
-//         height: 15px;
-//         position: absolute;
-//         left: 120px;
-//         top: 180px;
-//       }
-//       .rigth3 {
-//         width: 40px;
-//         height: 15px;
-//         position: absolute;
-//         left: 375px;
-//         top: 180px;
-//       }
-//       .rigth4 {
-//         width: 40px;
-//         height: 15px;
-//         position: absolute;
-//         left: 375px;
-//         top: 50px;
-//       }
-//       .leftall {
-//         width: 182px;
-//         height: 540px;
-//         position: absolute;
-//         left: 350px;
-//         top: 50px;
-//         z-index: 99;
-//       }
-//       .rigthall {
-//         width: 165px;
-//         height: 270px;
-//         position: absolute;
-//         left: 250px;
-//         top: 50px;
-//       }
-//     }
-//   }
-//   .buts {
-//     width: 1380px;
-//     height: 234px;
-//     background: #ffffff;
-//     box-shadow: 0 0 16px 0 rgba(0, 134, 241, 0.102);
-//     border-radius: 32px;
-//     opacity: 1;
-//     position: absolute;
-//     box-sizing: border-box;
-//     left: 20px;
-//     top: 540px;
-//     padding: 30px 44px;
-//     .tptitl {
-//       display: flex;
-//       align-items: center;
-//       > img {
-//         width: 32px;
-//         height: 22px;
-//         margin-right: 8px;
-//       }
-//     }
-//     .onebx1{
-//       width: 100%;
-//       height: 100%;
-//       position: relative;
-//       margin-top: 30px;
-//       > div {
-//         display: flex;
-//         flex-direction: column;
-//         align-items: center;
-//         position: absolute;
-//         font-size: 14px;
-//         font-size: #747474;
-//         > img {
-//           width: 62px;
-//           height: 62px;
-//         }
-//       }
-//       .item1{
-//         left: 1000px;
-//         top:10px;
-//       }
-//       .item2{
-//         left: 800px;
-//         top:10px;
-//       }
-//       .item3{
-//         left: 600px;
-//         top:10px;
-//       }
-//       .item4{
-//         left: 400px;
-//         top:10px;
-//       }
-//       .left1{
-//         width: 60px;
-//         height: 15px;
-//         position: absolute;
-//         left: 900px;
-//         top: 50px;
-//         transform: rotate(180deg);
-//       }
-//       .left2{
-//         width: 60px;
-//         height: 15px;
-//         position: absolute;
-//         left: 700px;
-//         top: 50px;
-//         transform: rotate(180deg);
-//       }
-//       .left3{
-//         width: 60px;
-//         height: 15px;
-//         position: absolute;
-//         left: 500px;
-//         top: 50px;
-//         transform: rotate(180deg);
-//       }
-//     }
-//   }
-// }
-// .tptitl{
-//   color: #172E60;
-// }
-// .bx{
-//   user-select: none;
-// }
 #avue-view {
   background-color: #fff;
 }
diff --git a/src/views/wel/index2.vue b/src/views/wel/index2.vue
new file mode 100644
index 00000000..ea5f332a
--- /dev/null
+++ b/src/views/wel/index2.vue
@@ -0,0 +1,369 @@
+<template>
+  <div class="bx" v-if="indexState">
+    <div class="left">
+      <div class="tptitl">
+        <img src="./static/topicon.png" />
+        <span>发货操作</span>
+      </div>
+      <div class="onebx1">
+        <div class="item1">
+          <img src="./static/1.png" />
+          <span>提货</span>
+        </div>
+        <div class="item2">
+          <img src="./static/2.png" />
+          <span>预开单</span>
+        </div>
+        <div class="item3">
+          <img src="./static/3.png" />
+          <span>创建运单</span>
+        </div>
+        <div class="item4">
+          <img src="./static/4.png" />
+          <span>补录运单</span>
+        </div>
+        <div class="item5">
+          <img src="./static/5.png" />
+          <span>短驳发车</span>
+        </div>
+        <div class="item6">
+          <img src="./static/6.png" />
+          <span>外部中转</span>
+        </div>
+        <div class="item7">
+          <img src="./static/7.png" />
+          <span>库存管理</span>
+        </div>
+        <div class="item8">
+          <img src="./static/8.png" />
+          <span>车辆配载</span>
+        </div>
+        <img class="upimg" src="./static/up.png" />
+        <img class="rigth1" src="./static/rigth.png" />
+        <img class="rigth2" src="./static/rigth.png" />
+        <img class="rigth3" src="./static/rigth.png" />
+        <img class="rigth4" src="./static/rigth.png" />
+        <img class="rigthall" src="./static/rigthall.png" />
+      </div>
+    </div>
+    <div class="ztjk">
+      <img src="./static/9.png" />
+      <span>到货操作</span>
+    </div>
+    <div class="rigth">
+      <div class="tptitl">
+        <img src="./static/topicon.png" />
+        <span>到货操作</span>
+      </div>
+      <div class="onebx1">
+        <div class="item1">
+          <img src="./static/10.png" />
+          <span>到站卸车</span>
+        </div>
+        <div class="item2">
+          <img src="./static/11.png" />
+          <span>库存管理</span>
+        </div>
+        <div class="item3">
+          <img src="./static/12.png" />
+          <span>短驳接收</span>
+        </div>
+        <div class="item4">
+          <img src="./static/13.png" />
+          <span>外部中转</span>
+        </div>
+        <div class="item5">
+          <img src="./static/14.png" />
+          <span>送货</span>
+        </div>
+        <div class="item6">
+          <img src="./static/15.png" />
+          <span>中转签收</span>
+        </div>
+        <div class="item7">
+          <img src="./static/16.png" />
+          <span>送货签收</span>
+        </div>
+        <div class="item8">
+          <img src="./static/17.png" />
+          <span>自提签收</span>
+        </div>
+        <img class="upimg" src="./static/down.png" />
+        <img class="rigth1" src="./static/rigth.png" />
+        <img class="rigth2" src="./static/rigth.png" />
+        <img class="rigth3" src="./static/rigth.png" />
+        <img class="rigth4" src="./static/rigth.png" />
+        <img class="rigthall" src="./static/rigthall2.png" />
+        <img class="leftall" src="./static/leftall.png" />
+      </div>
+    </div>
+    <div class="buts">
+      <div class="tptitl">
+        <img src="./static/topicon.png" />
+        <span>回单管理</span>
+      </div>
+      <div class="onebx1">
+        <div class="item1">
+          <img src="./static/18.png" />
+          <span>回单回收</span>
+        </div>
+        <div class="item2">
+          <img src="./static/19.png" />
+          <span>回单寄出</span>
+        </div>
+        <div class="item3">
+          <img src="./static/20.png" />
+          <span>回单接收</span>
+        </div>
+        <div class="item4">
+          <img src="./static/21.png" />
+          <span>回单发放</span>
+        </div>
+        <img class="left1" src="./static/rigth.png" />
+        <img class="left2" src="./static/rigth.png" />
+        <img class="left3" src="./static/rigth.png" />
+      </div>
+    </div>
+    <div class="el-gl">
+      <div>公告栏</div>
+    </div>
+  </div>
+
+  <div class="main_container">
+    <!-- 开单数据 && 开单收入 -->
+    <div class="flex mb5pt row_first">
+      <!-- 开单数据 -->
+      <div class="mr5pt box1 view_box">
+        <!-- 标题 -->
+        <div class="align_center mb10pt">
+          <img class="mr5pt img_13pt" src="@/static/icon_data.png" alt="" />
+
+          <div class="title">开单数据</div>
+        </div>
+
+        <!-- 数据 -->
+        <div class="border padding5pt">
+          <div class="height40pt flex-c-sb border-bottom">
+            <div class="align_center">
+              <img class="mr5pt img_16pt" src="@/static/icon_storage.png" alt="" />
+
+              <div>总计</div>
+            </div>
+
+            <div class="align_center">
+              <span class="data mr5pt">123</span>
+              <span>件</span>
+            </div>
+          </div>
+
+          <div class="height40pt flex-c-sb border-bottom">
+            <div class="align_center">
+              <img class="mr5pt img_16pt" src="@/static/icon_month.png" alt="" />
+
+              <div>当月</div>
+            </div>
+
+            <div class="align_center">
+              <span class="data mr5pt">123</span>
+              <span>件</span>
+            </div>
+          </div>
+
+          <div class="height40pt flex-c-sb">
+            <div class="align_center">
+              <img class="mr5pt img_16pt" src="@/static/icon_day.png" alt="" />
+
+              <div>当日</div>
+            </div>
+
+            <div class="align_center">
+              <span class="data mr5pt">123</span>
+              <span>件</span>
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <!-- 开单收入 -->
+      <div class="flex1 box2 view_box">
+        <!-- 标题 -->
+        <div class="align_center mb10pt">
+          <img class="mr5pt img_13pt" src="@/static/icon_money.png" alt="" />
+
+          <div class="title">开单收入</div>
+        </div>
+
+        <div class="border padding5pt">
+          <div class="height40pt flex-c-sb border-bottom">
+            <div class="align_center">
+              <img class="mr5pt img_16pt" src="@/static/icon_storage.png" alt="" />
+
+              <div>总计</div>
+            </div>
+
+            <div class="align_center">
+              <span class="data mr5pt">123</span>
+              <span>件</span>
+            </div>
+          </div>
+
+          <div class="height40pt flex-c-sb border-bottom">
+            <div class="align_center">
+              <img class="mr5pt img_16pt" src="@/static/icon_month.png" alt="" />
+
+              <div>当月</div>
+            </div>
+
+            <div class="align_center">
+              <span class="data mr5pt">123</span>
+              <span>件</span>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script setup>
+import { ref, onMounted } from 'vue';
+const indexState = ref(false);
+</script>
+
+<style scoped lang="scss">
+.info {
+  display: flex;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  .name {
+    font-size: 40px;
+    color: #d3832a;
+    font-weight: bold;
+  }
+  .slogan {
+    font-size: 3em;
+  }
+  .time {
+    display: flex;
+    margin-top: 10px;
+    justify-content: flex-end;
+  }
+  .title {
+    display: flex;
+    margin-top: 10px;
+    justify-content: flex-end;
+  }
+}
+
+.el-gl {
+  font-weight: 500;
+  text-align: center;
+  position: absolute;
+  right: 10px;
+  top: 10px;
+  width: 15%;
+  background-color: #fff;
+  border-radius: 32px;
+  padding: 5px;
+  box-sizing: border-box;
+  border: 1px solid #f1eeee69;
+  box-shadow: 4px 6px 0 #d3dff6, 1px 1px 9px #d3dff6;
+  height: 762px;
+}
+
+.main_container {
+  background: #f5f5f6;
+  padding: 0 5pt;
+}
+
+.view_box {
+  padding: 10pt;
+  padding-top: 8pt;
+  background: #fff;
+  border-radius: 2.5pt;
+
+  .title {
+    font-weight: bold;
+    font-size: 12pt;
+    line-height: 12pt;
+  }
+
+  .img_10pt {
+    width: 12pt;
+    height: 12pt;
+  }
+
+  .img_16pt {
+    width: 16pt;
+    height: 16pt;
+  }
+}
+
+.mb10pt {
+  margin-bottom: 10pt;
+}
+
+.mb5pt {
+  margin-bottom: 5pt;
+}
+
+.mr5pt {
+  margin-right: 5pt;
+}
+
+.padding5pt {
+  padding: 0 5pt;
+}
+
+.align_center {
+  display: flex;
+  align-items: center;
+}
+
+// 开单数据
+.height40pt {
+  height: 40pt;
+
+  font-size: 12pt;
+}
+
+// 数据样式
+.data {
+  font-weight: bold;
+  color: #000;
+  font-family: DIN-Bold;
+  font-size: 15pt;
+}
+
+.border {
+  border: 1pt solid #f5f5f6;
+  border-radius: 2.5pt;
+  box-sizing: border-box;
+}
+
+.border-bottom {
+  border-bottom: 1pt solid #f5f5f6;
+}
+
+// 第一排
+.row_first {
+  height: 160pt;
+  .box1 {
+    height: 100%;
+    width: 170pt;
+    box-sizing: border-box;
+    flex: none;
+  }
+
+  .box2 {
+    height: 100%;
+  }
+}
+</style>
+<style lang="scss" scope>
+@import '../../styles/flowStyle.scss';
+
+#avue-view {
+  background-color: #fff;
+}
+</style>