Pārlūkot izejas kodu

Merge branch 'master' of https://prodog.leanwo.com:3000/prodog-client-2023/client-eam-v3

YangZhiJie 2 gadi atpakaļ
vecāks
revīzija
018ce69ba8

+ 1 - 1
package.json

@@ -1,7 +1,7 @@
 {
   "name": "client-eam-v3",
   "description": "Leanwo Prodog Client",
-  "version": "3.0.39",
+  "version": "3.0.47",
   "author": "yangzhijie1488 <yangzhijie1488@163.com>",
   "scripts": {
     "dev": "cross-env webpack serve --config ./webpack.dev.js",

+ 4 - 4
src/components/customer/AssetByRfid.vue

@@ -137,7 +137,7 @@ export default {
       assetInstances: [],
       field: {
         name: '',
-        listFieldNames: 'location.name',
+        listFieldNames: 'name',
       },
       fieldValue: {
         id: null,
@@ -146,8 +146,8 @@ export default {
       },
       whereClauseSource: {
         customerDataDimensions:[{
-          fieldName: 'o.id',
-          dataDimensionTypeNo: '202201191700',
+          fieldName: 'c.id',
+          dataDimensionTypeNo: '202201191757',
           defaultDataDimensionTypeValueNo: '1',
         }],
       },
@@ -202,7 +202,7 @@ export default {
      * @param {Object} newFieldValue
      */
     valueChanged: function (newFieldValue) {
-      console.log(newFieldValue);
+      console.log('newFieldValue',newFieldValue);
       this.fieldValue = newFieldValue;
       this.locationId = newFieldValue.id;
     },

+ 5 - 0
src/components/customer/AssetInventory.vue

@@ -31,6 +31,11 @@
             :description="$t('lang.AssetInventory.inventoryDataProcessingDesc')"
             @click="openRouter('/eam/inventoryDataProcessing')"
           />
+          <a-step
+            title="盘点数据归档"
+            description="对历史盘点数据进行归档"
+            @click="openRouter('/eam/RunDataArchive')"
+          />
         </a-steps>
       </div>
     </section>

+ 227 - 178
src/components/customer/AssetInventoryStep5.vue

@@ -8,7 +8,7 @@
             class="btn btn-success"
             @click="getAssetInstance(false)"
           >
-            {{ $t("lang.AssetInventorySearch.query") }}
+            {{ $t('lang.AssetInventorySearch.query') }}
           </button>
 
           <!-- <button type="button" class="btn btn-info" @click="generateAssetInventoryLine">
@@ -22,17 +22,19 @@
             查看盘点清单(已选择:{{ assetInstancesTempory.length }})
           </button>
           <button type="button" class="btn btn-danger" @click="clearFilter">
-            {{ $t("lang.AssetInventorySearch.empty") }}
+            {{ $t('lang.AssetInventorySearch.empty') }}
           </button>
-          <a-button style="height: 33.5px" type="primary" @click="downloadFile">下载</a-button>
-          <a-upload
-            v-model:file-list="fileList"
-            :show-upload-list="false"
-            :before-upload="beforeUpload"
-            @change="uploadFileChange"
-          >
-            <a-button type="dashed" style="height: 33.5px"> 上传 </a-button>
-          </a-upload>
+          <!--          <a-button style="height: 33.5px" type="primary" @click="downloadFile">-->
+          <!--            下载-->
+          <!--          </a-button>-->
+          <!--          <a-upload-->
+          <!--            v-model:file-list="fileList"-->
+          <!--            :show-upload-list="false"-->
+          <!--            :before-upload="beforeUpload"-->
+          <!--            @change="uploadFileChange"-->
+          <!--          >-->
+          <!--            <a-button type="dashed" style="height: 33.5px"> 上传</a-button>-->
+          <!--          </a-upload>-->
         </div>
       </div>
       <!-- <div class="grid-item-row2-column1">
@@ -46,11 +48,31 @@
         </div>
       </div> -->
 
-      <div class="grid-item-row1-column2" style="margin-left: 100px">
+      <div class="grid-item-row1-column2">
         <a-form-item label="盘点单名称">
-          <a-input v-model:value="inventorySheetName" size="default" />
+          <a-input v-model:value="inventorySheetName" size="default" style="width: 70%" />
+          <a-button type="primary" style="height: 33.5px; margin-left: 30px" @click="showModal">上传</a-button>
         </a-form-item>
       </div>
+      <a-modal
+        v-model:visible="visible" title="上传盘点资产数据" ok-text="确认" cancel-text="取消"
+        @ok="handleOk"
+      >
+        <p>1、请点击【下载】按钮,下载所有的资产数据。</p>
+        <a-button style="height: 33.5px" type="primary" @click="downloadFile">
+          下载
+        </a-button>
+        <p>2、使用Excel打开下载的数据,删除不要盘点的数据,保存Excel。</p>
+        <p>3、点击上传按钮,上传数据。</p>
+        <a-upload
+          v-model:file-list="fileList"
+          :show-upload-list="false"
+          :before-upload="beforeUpload"
+          @change="uploadFileChange"
+        >
+          <a-button type="primary" style="height: 33.5px"> 上传</a-button>
+        </a-upload>
+      </a-modal>
       <div class="grid-item-row3-column1">
         <div>
           <div class="panel panel-default m-panel">
@@ -58,7 +80,7 @@
               class="panel-heading"
               @click="type == 1 ? (type = 0) : (type = 1)"
             >
-              {{ $t("lang.AssetInventorySearch.ownerDepartment") }}
+              {{ $t('lang.AssetInventorySearch.ownerDepartment') }}
             </div>
             <div v-show="type == 1" class="panel-body">
               <ClientOrganizationTree
@@ -74,7 +96,7 @@
               class="panel-heading"
               @click="type == 3 ? (type = 0) : (type = 3)"
             >
-              {{ $t("lang.AssetInventorySearch.useDepartment") }}
+              {{ $t('lang.AssetInventorySearch.useDepartment') }}
             </div>
             <div v-show="type == 3" class="panel-body">
               <ClientOrganizationTree
@@ -90,7 +112,7 @@
               class="panel-heading"
               @click="type == 2 ? (type = 0) : (type = 2)"
             >
-              {{ $t("lang.AssetInventorySearch.category") }}
+              {{ $t('lang.AssetInventorySearch.category') }}
             </div>
             <div v-show="type == 2" class="panel-body">
               <div>
@@ -108,7 +130,7 @@
               class="panel-heading"
               @click="type == 4 ? (type = 0) : (type = 4)"
             >
-              {{ $t("lang.AssetInventorySearch.project") }}
+              {{ $t('lang.AssetInventorySearch.project') }}
             </div>
             <div v-show="type == 4" class="panel-body">
               <div>
@@ -226,8 +248,8 @@
           <thead>
             <tr>
               <!-- <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.serialNumber") }}
-              </th>-->
+            {{ $t("lang.AssetInventorySearch.serialNumber") }}
+          </th>-->
               <th style="width: 50px">
                 <input
                   autocomplete="off"
@@ -237,73 +259,73 @@
                 />
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.ownerClient") }}
+                {{ $t('lang.AssetInventorySearch.ownerClient') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.ownerDepartment") }}
+                {{ $t('lang.AssetInventorySearch.ownerDepartment') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.useClient") }}
+                {{ $t('lang.AssetInventorySearch.useClient') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.useDepartment") }}
+                {{ $t('lang.AssetInventorySearch.useDepartment') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.assetName") }}
+                {{ $t('lang.AssetInventorySearch.assetName') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.assetNumber") }}
+                {{ $t('lang.AssetInventorySearch.assetNumber') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.cardNumber") }}
+                {{ $t('lang.AssetInventorySearch.cardNumber') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.type") }}
+                {{ $t('lang.AssetInventorySearch.type') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.assetClassification") }}
+                {{ $t('lang.AssetInventorySearch.assetClassification') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.subordinateToTheProject") }}
+                {{ $t('lang.AssetInventorySearch.subordinateToTheProject') }}
               </th>
               <th style="width: 90px">
-                {{ $t("lang.AssetInventorySearch.originalValue") }}
+                {{ $t('lang.AssetInventorySearch.originalValue') }}
               </th>
               <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.placeOfPlacement") }}
+                {{ $t('lang.AssetInventorySearch.placeOfPlacement') }}
               </th>
               <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.placementLocation") }}
+                {{ $t('lang.AssetInventorySearch.placementLocation') }}
               </th>
               <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.unitOfMeasurement") }}
+                {{ $t('lang.AssetInventorySearch.unitOfMeasurement') }}
               </th>
               <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.user") }}
+                {{ $t('lang.AssetInventorySearch.user') }}
               </th>
               <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.custodianName") }}
+                {{ $t('lang.AssetInventorySearch.custodianName') }}
               </th>
               <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.depositoryUserName") }}
+                {{ $t('lang.AssetInventorySearch.depositoryUserName') }}
               </th>
               <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.usageStatus") }}
+                {{ $t('lang.AssetInventorySearch.usageStatus') }}
               </th>
               <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.userInput") }}
+                {{ $t('lang.AssetInventorySearch.userInput') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.licensePlate") }}
+                {{ $t('lang.AssetInventorySearch.licensePlate') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.selfNumbering") }}
+                {{ $t('lang.AssetInventorySearch.selfNumbering') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.startUseDate") }}
+                {{ $t('lang.AssetInventorySearch.startUseDate') }}
               </th>
               <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.remarks") }}
+                {{ $t('lang.AssetInventorySearch.remarks') }}
               </th>
             </tr>
           </thead>
@@ -314,20 +336,21 @@
               @dblclick="openCurdWindow(assetInstance)"
             >
               <!-- <td>
-                {{
-                  index +
-                    1 +
-                    (_self.pagination.current_page - 1) *
-                    _self.pagination.per_page
-                }}
-              </td>-->
+            {{
+              index +
+                1 +
+                (_self.pagination.current_page - 1) *
+                _self.pagination.per_page
+            }}
+          </td>-->
               <td>
                 <input
                   id="assetInstance.id"
-                  v-model="assetInstancesTempory"
+                  v-model="assetInstance.checked"
                   autocomplete="off"
                   type="checkbox"
                   :value="assetInstance"
+                  @change="checkedChange(assetInstance)"
                 />
               </td>
               <td>{{ assetInstance.clientName }}</td>
@@ -360,7 +383,7 @@
       <div class="grid-item-row3-column2">
         <div>
           <p class="bg-success m-grid-footer">
-            {{ $t("lang.AssetInventorySearch.totalOfOriginalValue") }}:{{
+            {{ $t('lang.AssetInventorySearch.totalOfOriginalValue') }}:{{
               orginalValueTotal
             }}
           </p>
@@ -369,17 +392,19 @@
       <div class="grid-item-row4-column2">
         <div>
           <div class="pull-left">
-            <span>{{ $t("lang.AssetInventorySearch.the")
+            <span>{{
+              $t('lang.AssetInventorySearch.the')
             }}{{ (pagination.current_page - 1) * pagination.per_page + 1 }}-{{
               pagination.current_page * pagination.per_page
-            }}{{ $t("lang.AssetInventorySearch.strip") }},{{
-              $t("lang.AssetInventorySearch.inTotal")
-            }}{{ pagination.total
-            }}{{ $t("lang.AssetInventorySearch.strip") }},{{
-              $t("lang.AssetInventorySearch.eachPage")
+            }}{{ $t('lang.AssetInventorySearch.strip') }},{{
+              $t('lang.AssetInventorySearch.inTotal')
+            }}{{
+              pagination.total
+            }}{{ $t('lang.AssetInventorySearch.strip') }},{{
+              $t('lang.AssetInventorySearch.eachPage')
             }}</span>
             <PageSizeSelect @page-size-changed="pageSizeChanged" />
-            <span>{{ $t("lang.AssetInventorySearch.strip") }}</span>
+            <span>{{ $t('lang.AssetInventorySearch.strip') }}</span>
           </div>
           <div class="pull-right">
             <VueBootstrapPagination
@@ -416,82 +441,82 @@
     </div> -->
     <Loading v-if="loading" />
     <Modal v-model:show="modal1" title="盘点清单" small="true">
-      <div>
+      <div style="height: 500px; overflow: auto">
         <table class="fixed-table table-striped table-bordered">
           <thead>
             <tr>
               <!-- <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.serialNumber") }}
-              </th>-->
+            {{ $t("lang.AssetInventorySearch.serialNumber") }}
+          </th>-->
               <!-- <th style="width: 50px">
-                <input autocomplete="off" type="checkbox" :checked="allChecked" @click="isAllChecked()" />
-              </th> -->
+            <input autocomplete="off" type="checkbox" :checked="allChecked" @click="isAllChecked()" />
+          </th> -->
               <!-- <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.ownerClient") }}
-              </th>
-              <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.ownerDepartment") }}
-              </th>
-              <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.useClient") }}
-              </th>
-              <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.useDepartment") }}
-              </th> -->
+            {{ $t("lang.AssetInventorySearch.ownerClient") }}
+          </th>
+          <th style="width: 130px">
+            {{ $t("lang.AssetInventorySearch.ownerDepartment") }}
+          </th>
+          <th style="width: 130px">
+            {{ $t("lang.AssetInventorySearch.useClient") }}
+          </th>
+          <th style="width: 130px">
+            {{ $t("lang.AssetInventorySearch.useDepartment") }}
+          </th> -->
               <th style="width: 60px">
-                {{ $t("lang.AssetInventorySearch.assetName") }}
+                {{ $t('lang.AssetInventorySearch.assetName') }}
               </th>
               <th style="width: 60px">
-                {{ $t("lang.AssetInventorySearch.assetNumber") }}
+                {{ $t('lang.AssetInventorySearch.assetNumber') }}
               </th>
               <th style="width: 60px">
-                {{ $t("lang.AssetInventorySearch.cardNumber") }}
+                {{ $t('lang.AssetInventorySearch.cardNumber') }}
               </th>
               <!-- <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.type") }}
-              </th> -->
+            {{ $t("lang.AssetInventorySearch.type") }}
+          </th> -->
               <th style="width: 60px">
-                {{ $t("lang.AssetInventorySearch.assetClassification") }}
+                {{ $t('lang.AssetInventorySearch.assetClassification') }}
               </th>
               <th style="width: 60px">
-                {{ $t("lang.AssetInventorySearch.operation") }}
-              </th>
-              <!-- <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.subordinateToTheProject") }}
-              </th>
-              <th style="width: 90px">
-                {{ $t("lang.AssetInventorySearch.originalValue") }}
-              </th>
-              <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.placeOfPlacement") }}
-              </th>
-              <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.placementLocation") }}
-              </th>
-              <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.unitOfMeasurement") }}
-              </th>
-              <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.user") }}
-              </th>
-              <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.usageStatus") }}
-              </th>
-              <th style="width: 100px">
-                {{ $t("lang.AssetInventorySearch.userInput") }}
-              </th>
-              <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.licensePlate") }}
-              </th>
-              <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.selfNumbering") }}
-              </th>
-              <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.startUseDate") }}
+                {{ $t('lang.AssetInventorySearch.operation') }}
               </th>
-              <th style="width: 130px">
-                {{ $t("lang.AssetInventorySearch.remarks") }}
-              </th> -->
+            <!-- <th style="width: 130px">
+              {{ $t("lang.AssetInventorySearch.subordinateToTheProject") }}
+            </th>
+            <th style="width: 90px">
+              {{ $t("lang.AssetInventorySearch.originalValue") }}
+            </th>
+            <th style="width: 100px">
+              {{ $t("lang.AssetInventorySearch.placeOfPlacement") }}
+            </th>
+            <th style="width: 100px">
+              {{ $t("lang.AssetInventorySearch.placementLocation") }}
+            </th>
+            <th style="width: 100px">
+              {{ $t("lang.AssetInventorySearch.unitOfMeasurement") }}
+            </th>
+            <th style="width: 100px">
+              {{ $t("lang.AssetInventorySearch.user") }}
+            </th>
+            <th style="width: 100px">
+              {{ $t("lang.AssetInventorySearch.usageStatus") }}
+            </th>
+            <th style="width: 100px">
+              {{ $t("lang.AssetInventorySearch.userInput") }}
+            </th>
+            <th style="width: 130px">
+              {{ $t("lang.AssetInventorySearch.licensePlate") }}
+            </th>
+            <th style="width: 130px">
+              {{ $t("lang.AssetInventorySearch.selfNumbering") }}
+            </th>
+            <th style="width: 130px">
+              {{ $t("lang.AssetInventorySearch.startUseDate") }}
+            </th>
+            <th style="width: 130px">
+              {{ $t("lang.AssetInventorySearch.remarks") }}
+            </th> -->
             </tr>
           </thead>
           <tbody>
@@ -500,20 +525,20 @@
               :key="assetInstance.id"
             >
               <!-- <td>
-                {{
-                  index +
-                    1 +
-                    (_self.pagination.current_page - 1) *
-                    _self.pagination.per_page
-                }}
-              </td>-->
+            {{
+              index +
+                1 +
+                (_self.pagination.current_page - 1) *
+                _self.pagination.per_page
+            }}
+          </td>-->
               <!-- <td>
-                <input autocomplete="off" id="assetInstance.id" v-model="checkedIds" type="checkbox" :value="assetInstance.id" />
-              </td> -->
+            <input autocomplete="off" id="assetInstance.id" v-model="checkedIds" type="checkbox" :value="assetInstance.id" />
+          </td> -->
               <!-- <td>{{ assetInstance.clientName }}</td>
-              <td>{{ assetInstance.organizationName }}</td>
-              <td>{{ assetInstance.responseClientName }}</td>
-              <td>{{ assetInstance.responseOrganizationName }}</td> -->
+          <td>{{ assetInstance.organizationName }}</td>
+          <td>{{ assetInstance.responseClientName }}</td>
+          <td>{{ assetInstance.responseOrganizationName }}</td> -->
               <td>{{ assetInstance.name }}</td>
               <td>{{ assetInstance.assetNo }}</td>
               <td>{{ assetInstance.no }}</td>
@@ -525,21 +550,21 @@
                   class="btn btn-danger"
                   @click="deleteCountList(assetInstance.id)"
                 >
-                  {{ $t("lang.AssetInventorySearch.delete") }}
+                  {{ $t('lang.AssetInventorySearch.delete') }}
                 </button>
               </td>
-              <!-- <td>{{ assetInstance.projectItemName }}</td>
-              <td>{{ assetInstance.orginalValue }}</td>
-              <td>{{ assetInstance.savePosition }}</td>
-              <td>{{ assetInstance.locationName }}</td>
-              <td>{{ assetInstance.computationUnitName }}</td>
-              <td>{{ assetInstance.useUserName }}</td>
-              <td>{{ assetInstance.useStatusName }}</td>
-              <td>{{ assetInstance.useUserNameInput }}</td>
-              <td>{{ assetInstance.vehicleNo }}</td>
-              <td>{{ assetInstance.selfNo }}</td>
-              <td>{{ assetInstance.depreciationStartDate }}</td>
-              <td>{{ assetInstance.description }}</td> -->
+            <!-- <td>{{ assetInstance.projectItemName }}</td>
+            <td>{{ assetInstance.orginalValue }}</td>
+            <td>{{ assetInstance.savePosition }}</td>
+            <td>{{ assetInstance.locationName }}</td>
+            <td>{{ assetInstance.computationUnitName }}</td>
+            <td>{{ assetInstance.useUserName }}</td>
+            <td>{{ assetInstance.useStatusName }}</td>
+            <td>{{ assetInstance.useUserNameInput }}</td>
+            <td>{{ assetInstance.vehicleNo }}</td>
+            <td>{{ assetInstance.selfNo }}</td>
+            <td>{{ assetInstance.depreciationStartDate }}</td>
+            <td>{{ assetInstance.description }}</td> -->
             </tr>
           </tbody>
         </table>
@@ -558,11 +583,12 @@ import AssetInventoryLineResource from '../../api/asset/AssetInventoryLineResour
 import ClientOrganizationTree from '../../widget/ClientOrganizationTree.vue';
 import ProjectItemTree from '../../widget/ProjectItemTree.vue';
 import AssetCategoryTree from '../../widget/AssetCategoryTree.vue';
+import {Notify, Uuid} from 'pc-component-v3';
+import {message} from 'ant-design-vue';
 
-import { Notify, Uuid } from 'pc-component-v3';
-import { message } from 'ant-design-vue';
 
 export default {
+
   components: {
     Date,
 
@@ -572,8 +598,10 @@ export default {
   },
   // 定义抛出的事件名称
   emits: ['previous', 'next'],
+
   data: function () {
     return {
+      visible: false, //模态框状态
       clientOrganizations: [], // 所属部门
       responseClientOrganizations: [], // 使用部门
       categories: [], // 资产类别
@@ -731,7 +759,7 @@ export default {
       });
     },
     // 上传文件事件
-    uploadFileChange: function ({ file }) {
+    uploadFileChange: function ({file}) {
       const _self = this;
       const formData = new FormData();
       formData.append('file', file);
@@ -746,10 +774,10 @@ export default {
         data: formData,
         contentType: false,
         processData: false,
-        success: function ({ errorCode,datas }) {
+        success: function ({errorCode, datas,errorMessage}) {
           if (errorCode === 0) {
-            if(datas){
-              datas.forEach(item =>{
+            if (datas) {
+              datas.forEach(item => {
                 item.name = item.assetName;
                 item.no = item.assetCardNo;
                 item.categoryName = item.assetCategory;
@@ -757,8 +785,9 @@ export default {
               });
             }
             message.success('上传成功,已加入至盘点清单', 5);
+            _self.visible = false; // 关闭模态框
           } else {
-            message.error('上传失败');
+            message.error(errorMessage);
           }
           _self.loading = false;
         },
@@ -768,6 +797,18 @@ export default {
         },
       });
     },
+
+    //开启上传资产数据模态框
+    showModal: function () {
+      const _self = this;
+      _self.visible = true;
+    },
+    //关闭上传资产数据模态框
+    handleOk: function () {
+      const _self = this;
+      _self.visible = false;
+    },
+
     // 取消默认上传
     beforeUpload: function () {
       return false;
@@ -827,15 +868,15 @@ export default {
       var _self = this;
       if (
         _self.inventorySheetName == null ||
-        _self.inventorySheetName == undefined ||
-        _self.inventorySheetName == ''
+          _self.inventorySheetName == undefined ||
+          _self.inventorySheetName == ''
       ) {
         Notify.error('错误', '请填写盘点单名称', 1000);
         return;
       }
       if (
         _self.assetInstancesTempory == null ||
-        _self.assetInstancesTempory.length < 1
+          _self.assetInstancesTempory.length < 1
       ) {
         Notify.error('错误', '请至少选择一条盘点明细', 1000);
         return;
@@ -878,7 +919,7 @@ export default {
           _self.assetInventoryOrganizationIds = data.organizationIds;
 
           _self.assetInventoryResponseOrganizationIds =
-            data.responseOrganizationIds;
+                data.responseOrganizationIds;
 
           _self.assetInventoryCategoryIds = data.categoryIds;
 
@@ -925,8 +966,12 @@ export default {
           item.checked = false;
           let index = _self.checkedIds.indexOf(item.id);
           _self.checkedIds.splice(index, 1);
-          let index2 = _self.assetInstancesTempory.indexOf(item);
-          _self.assetInstancesTempory.splice(index2, 1);
+          const data = _self.assetInstancesTempory;
+          data.forEach((obj, index) => {
+            if (obj.id == item.id) {
+              _self.assetInstancesTempory.splice(index, 1);
+            }
+          });
         });
       }
       const checkedIds = new Set(_self.checkedIds);
@@ -935,6 +980,28 @@ export default {
       _self.assetInstancesTempory = Array.from(assetInstancesTempory);
     },
 
+    // 单条checked改变更新清单和选择的id
+    checkedChange: function (data) {
+      var _self = this;
+      if (data.checked) {
+        _self.assetInstancesTempory.push(data);
+        _self.checkedIds.push(data.id);
+      } else {
+        for (var i = 0; i < _self.checkedIds.length; i++) {
+          if (_self.checkedIds[i] == data.id) {
+            _self.checkedIds.splice(i, 1);
+            i--;
+          }
+        }
+        for (var j = 0; j < _self.assetInstancesTempory.length; j++) {
+          if (_self.assetInstancesTempory[j].id == data.id) {
+            _self.assetInstancesTempory.splice(j, 1);
+            j--;
+          }
+        }
+      }
+    },
+
     /**
      * 选择的房间发生了改变
      */
@@ -967,7 +1034,7 @@ export default {
       var projectItemIds = _self.$refs.projectItem.getSelectedIds();
       var organizationIds = _self.$refs.organization.getSelectedIds();
       var responseOrganizationIds =
-        _self.$refs.responseOrganization.getSelectedIds();
+          _self.$refs.responseOrganization.getSelectedIds();
       var categoryIds = _self.$refs.assetCategory.getSelectedIds();
 
       //_self.clearPageData();
@@ -991,7 +1058,7 @@ export default {
         filter: _self.filter,
         range: {
           start:
-            (_self.pagination.current_page - 1) * _self.pagination.per_page,
+              (_self.pagination.current_page - 1) * _self.pagination.per_page,
           length: _self.pagination.per_page,
         },
         inventoryStatus: 'RANDOM_STOCKTAKING',
@@ -1012,27 +1079,6 @@ export default {
       );
     },
 
-    changeAassetInstanceId: function (data) {
-      var _self = this;
-      if (data.checked) {
-        _self.assetInstancesTempory.push(data);
-        _self.checkedIds.push(data.id);
-      } else {
-        for (var i = 0; i < _self.checkedIds.length; i++) {
-          if (_self.checkedIds[i] == data.id) {
-            _self.checkedIds.splice(i, 1);
-            i--;
-          }
-        }
-        for (var j = 0; j < _self.assetInstancesTempory.length; j++) {
-          if (_self.assetInstancesTempory[j].id == data.id) {
-            _self.assetInstancesTempory.splice(j, 1);
-            j--;
-          }
-        }
-      }
-    },
-
     /**
      * 重新绘制资产卡片
      * @author YangZhiJie 20200806
@@ -1275,4 +1321,7 @@ table.fixed-table td {
   white-space: nowrap;
   text-overflow: ellipsis;
 }
+:deep(.ant-form-item-control-input-content){
+  display: flex;
+}
 </style>

+ 156 - 125
src/components/customer/AssetLabelPrint.vue

@@ -6,101 +6,117 @@
     />
     <div>
       <div class="form-inline" style="margin-top: 0px !important">
-        <label class="labelStyle">所属部门</label>
-        <div class="form-inline-div">
-          <SearchWidget
-            style="width: 200px"
-            :info-window-no="organizationWindowNo"
-            :field="organizationField"
-            :field-value="organizationFieldValue"
-            :display-name="organizationField.listDisplayFieldName"
-            :where-clause-source="organizationWCS"
-            @value-changed="organizationValueChanged"
-          />
-        </div>
-        <label class="labelStyle">责任人</label>
-        <div class="form-inline-div">
-          <SearchWidget
-            style="width: 200px"
-            :info-window-no="userWindowNo"
-            :field="custodianNameField"
-            :field-value="custodianNameFieldValue"
-            :display-name="custodianNameField.listDisplayFieldName"
-            :where-clause-source="custodianIdWhereClauseSource"
-            @value-changed="custodianNameValueChanged"
-          />
-        </div>
-        <label class="labelStyle">保管人</label>
-        <div class="form-inline-div">
-          <SearchWidget
-            :info-window-no="userWindowNo"
-            :field="userField"
-            :field-value="userFieldValue"
-            :display-name="userField.listDisplayFieldName"
-            :where-clause-source="custodianIdWhereClauseSource"
-            @value-changed="userValueChanged"
-          />
-        </div>
-        <label class="labelStyle">申购人</label>
-        <div class="form-inline-div">
-          <SearchWidget
-            style="width: 200px"
-            :info-window-no="userWindowNo"
-            :field="applyPurchaseUserField"
-            :field-value="applyPurchaseUserFieldValue"
-            :display-name="applyPurchaseUserField.listDisplayFieldName"
-            :where-clause-source="custodianIdWhereClauseSource"
-            @value-changed="applyPurchaseUserValueChanged"
-          />
-        </div>
-      </div>
-      <label class="labelStyle">资产名称</label>
-      <div class="form-inline-div">
-        <a-input
-          v-model:value="searchParams.assetInstanceName"
-          style="width: 200px"
-        />
-      </div>
-      <label class="labelStyle">资产编号</label>
-      <div class="form-inline-div">
-        <a-input
-          v-model:value="searchParams.assetNo"
-          style="width: 200px"
-        />
-      </div>
-      <label class="labelStyle">规格型号</label>
-      <div class="form-inline-div">
-        <a-input
-          v-model:value="searchParams.type"
-          style="width: 224px"
-        />
-      </div>
-      <label class="labelStyle">epc</label>
-      <div class="form-inline-div">
-        <a-input
-          v-model:value="searchParams.epc"
-          style="width: 200px"
-        />
+        <ul class="ulStyle">
+          <li class="listStyle">
+            <label class="labelStyle">所属部门</label>
+            <div class="form-inline-div">
+              <SearchWidget
+                style="width: 200px"
+                :info-window-no="organizationWindowNo"
+                :field="organizationField"
+                :field-value="organizationFieldValue"
+                :display-name="organizationField.listDisplayFieldName"
+                :where-clause-source="organizationWCS"
+                @value-changed="organizationValueChanged"
+              />
+            </div>
+          </li>
+          <li class="listStyle">
+            <label class="labelStyle">责任人</label>
+            <div class="form-inline-div">
+              <SearchWidget
+                style="width: 200px"
+                :info-window-no="userWindowNo"
+                :field="custodianNameField"
+                :field-value="custodianNameFieldValue"
+                :display-name="custodianNameField.listDisplayFieldName"
+                :where-clause-source="custodianIdWhereClauseSource"
+                @value-changed="custodianNameValueChanged"
+              />
+            </div>
+          </li>
+          <li class="listStyle">
+            <label class="labelStyle">保管人</label>
+            <div class="form-inline-div">
+              <SearchWidget
+                style="width: 200px"
+                :info-window-no="userWindowNo"
+                :field="userField"
+                :field-value="userFieldValue"
+                :display-name="userField.listDisplayFieldName"
+                :where-clause-source="custodianIdWhereClauseSource"
+                @value-changed="userValueChanged"
+              />
+            </div>
+          </li>
+          <li class="listStyle">
+            <label class="labelStyle">申购人</label>
+            <div class="form-inline-div">
+              <SearchWidget
+                style="width: 200px"
+                :info-window-no="userWindowNo"
+                :field="applyPurchaseUserField"
+                :field-value="applyPurchaseUserFieldValue"
+                :display-name="applyPurchaseUserField.listDisplayFieldName"
+                :where-clause-source="custodianIdWhereClauseSource"
+                @value-changed="applyPurchaseUserValueChanged"
+              />
+            </div>
+          </li>
+          <li class="listStyle">
+            <label class="labelStyle">资产名称</label>
+            <div class="form-inline-div">
+              <a-input
+                v-model:value="searchParams.assetInstanceName"
+                style="width: 200px"
+              />
+            </div>
+          </li>
+          <li class="listStyle">
+            <label class="labelStyle">资产编号</label>
+            <div class="form-inline-div">
+              <a-input
+                v-model:value="searchParams.assetNo"
+                style="width: 200px"
+              />
+            </div>
+          </li>
+          <li class="listStyle">
+            <label class="labelStyle">规格型号</label>
+            <div class="form-inline-div">
+              <a-input v-model:value="searchParams.type" style="width: 200px" />
+            </div>
+          </li>
+          <li class="listStyle">
+            <label class="labelStyle">epc</label>
+            <div class="form-inline-div">
+              <a-input v-model:value="searchParams.epc" style="width: 200px" />
+            </div>
+          </li>
+          <li class="listStyle">
+            <label class="labelStyle">{{
+              $t("lang.AssetLabelPrint.printStatus")
+            }}</label>
+            <div class="form-inline-div">
+              <select
+                v-model="searchParams.printStatus"
+                class="form-control m-form-input"
+                style="width: 15em"
+              >
+                <option value="">{{ $t("lang.AssetLabelPrint.all") }}</option>
+                <option value="false">
+                  {{ $t("lang.AssetLabelPrint.notPrint") }}
+                </option>
+                <option value="true">
+                  {{ $t("lang.AssetLabelPrint.havePrint") }}
+                </option>
+              </select>
+            </div>
+          </li>
+        </ul>
       </div>
+
       <div style="display: flex">
-        <label class="labelStyle">{{
-          $t("lang.AssetLabelPrint.printStatus")
-        }}</label>
-        <div class="form-inline-div">
-          <select
-            v-model="searchParams.printStatus"
-            class="form-control m-form-input"
-            style="width: 15em"
-          >
-            <option value="">{{ $t("lang.AssetLabelPrint.all") }}</option>
-            <option value="false">
-              {{ $t("lang.AssetLabelPrint.notPrint") }}
-            </option>
-            <option value="true">
-              {{ $t("lang.AssetLabelPrint.havePrint") }}
-            </option>
-          </select>
-        </div>
         <div style="margin-left: 18px">
           <button class="btn btn-default m-btn" @click="reQuery()">
             {{ $t("lang.AssetLabelPrint.query") }}
@@ -112,7 +128,7 @@
       </div>
       <div class="form-inline" style="margin-top: 0px !important">
         <div class="form-group m-form-group">
-          <label for="assetNo" class="m-form-group-label" style="width: 96px">{{
+          <label for="assetNo" class="m-form-group-label" style="width: 100px;padding: 8px;">{{
             $t("lang.AssetLabelPrint.selectPrintTemplate")
           }}</label>
           <div class="form-inline-div">
@@ -133,7 +149,7 @@
           </div>
         </div>
         <div class="form-group m-form-group">
-          <label for="selectPrinter" class="m-form-group-label">{{
+          <label for="selectPrinter" class="m-form-group-label" style="width: 100px;padding: 8px;">{{
             $t("lang.AssetLabelPrint.selectPrinter")
           }}</label>
           <div class="form-inline-div">
@@ -159,14 +175,17 @@
           </button>
         </div>
         <div class="form-group m-form-group">
-          <PrintEpc ref="printEpc" v-model:visible="printEpcVisible" :printer-name="selectedPrinterCard" @ok="closePrintEpc" />
-          <button class="btn btn-default m-btn" @click="cardEpc()">
-            发卡
-          </button>
+          <PrintEpc
+            ref="printEpc"
+            v-model:visible="printEpcVisible"
+            :printer-name="selectedPrinterCard"
+            @ok="closePrintEpc"
+          />
+          <button class="btn btn-default m-btn" @click="cardEpc()">发卡</button>
         </div>
       </div>
     </div>
-    
+
     <div class="grid-item-3">
       <table class="fixed-table table table-striped table-bordered">
         <thead>
@@ -344,22 +363,20 @@ export default {
     };
   },
 
-  computed: {
-    
-  },
+  computed: {},
 
   watch: {},
 
   /**
-         * 冻结表头
-         */
+   * 冻结表头
+   */
   fixedTableHeader: function () {
     let _self = this;
 
     _self.$nextTick(function () {
       $('.fixed-table').tableFixer({
-        'left': 0,
-        'head': true,
+        left: 0,
+        head: true,
       });
     });
   },
@@ -432,10 +449,10 @@ export default {
       return recordIds;
     },
 
-    getPrintData: function(recordIds) {
+    getPrintData: function (recordIds) {
       const _self = this;
       let contents = [];
-    
+
       $.ajax({
         url: Common.getApiURL(
           'AssetInstanceResource/print?printPreview=' +
@@ -499,7 +516,7 @@ export default {
         return;
       }
       let contents = [];
-    
+
       $.ajax({
         url: Common.getApiURL(
           'AssetInstanceResource/print?printPreview=' +
@@ -537,13 +554,16 @@ export default {
             }
             contents.push(printItem.content);
           });
-          PrintUtil.printPrintPages(contents, selectedPrinter).then(success => {
-            // 补充提示信息
-            console.log(success);
-          }, error =>{
-            // 补充提示信息
-            console.log(error);
-          });
+          PrintUtil.printPrintPages(contents, selectedPrinter).then(
+            success => {
+              // 补充提示信息
+              console.log(success);
+            },
+            error => {
+              // 补充提示信息
+              console.log(error);
+            },
+          );
           _self.loading = false;
         },
         error: function (XMLHttpRequest, textStatus, errorThrown) {
@@ -551,26 +571,24 @@ export default {
           Common.processException(XMLHttpRequest, textStatus, errorThrown);
         },
       });
-      
-      
     },
 
-    cardEpc: function() {
+    cardEpc: function () {
       const _self = this;
       let recordIds = _self.getSelectedRecordIds();
       if (recordIds == null || recordIds.length == 0) {
         Notify.error('提示', '请先选择发卡数据。', false);
         return;
       }
-      
-      if(recordIds.length > 1) {
+
+      if (recordIds.length > 1) {
         Notify.error('提示', '请先选择至多一条发卡数据。', false);
         return;
       }
 
       let contents = [];
       let contentCards = [];
-    
+
       $.ajax({
         url: Common.getApiURL(
           'AssetInstanceResource/print?printPreview=' +
@@ -617,10 +635,9 @@ export default {
           Common.processException(XMLHttpRequest, textStatus, errorThrown);
         },
       });
-      
     },
 
-    closePrintEpc: function() {
+    closePrintEpc: function () {
       const _self = this;
       _self.printEpcVisible = false;
     },
@@ -967,4 +984,18 @@ table.fixed-table td {
   text-align: center;
   padding: 8px;
 }
+
+.ulStyle {
+  width: 100%;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  margin: 0;
+  padding: 0;
+}
+.listStyle {
+  width: 32%;
+  margin-top: 8px;
+  list-style: none;
+}
 </style>

+ 101 - 0
src/components/customer/RunDataArchive.vue

@@ -0,0 +1,101 @@
+<template>
+  <div class="grid-container">
+    <div class="grid-item-1">
+      <div>
+        <Navbar
+          title="盘点数据归档"
+          :is-go-back="false"
+        />
+      </div>
+      <div id="step-container" style="margin-top: 20px">
+        <section>
+          <a-steps :current="pageInformation.currentStep">
+            <a-step title="选择归档操作" />
+            <a-step title="数据归档" />
+          </a-steps>
+        </section>
+      </div>
+      <a-divider />
+      <section>
+        <RunDataArchiveStep
+          v-if="pageInformation.showPage == 0"
+          :current-step="pageInformation"
+          @next="nextStep"
+        />
+      </section>
+    </div>
+  </div>
+</template>
+
+<script>
+import RunDataArchiveStep from './RunDataArchiveStep.vue';
+
+export default {
+  components: {
+    RunDataArchiveStep,
+  },
+  data: function () {
+    return {
+      pageInformation: {
+        currentStep: 0,
+        showPage: 0,
+        assetInventoryStep3: undefined,
+      },
+    };
+  },
+
+  methods: {
+    nextStep: function (data) {
+      var _self = this;
+      _self.pageInformation = data;
+      Object.assign(this.pageInformation, data);
+    },
+    previousStep: function (data) {
+      var _self = this;
+      _self.pageInformation = data;
+    },
+   
+
+    mounted: function () {},
+  },
+};
+</script>
+<style scoped>
+.grid-container {
+  display: grid;
+  grid-template-rows: 8% 8% 84%;
+  grid-template-columns: 100%;
+  width: 100%;
+  /*视口被均分为 100 单位的 vh 占据整个窗口,扣掉顶部 topNav 的距离后,计算得到 responseOrganizationSelect 的高度*/
+  height: calc(100vh - 130px);
+  margin-top: 10px;
+}
+
+.grid-item-1 {
+  grid-row: 1/2;
+}
+
+.grid-item-2 {
+  grid-row: 2/3;
+}
+
+.grid-item-3 {
+  grid-row: 3/4;
+}
+
+.box {
+  border: 1px #ccc solid;
+  margin-bottom: 15px;
+  padding-top: 10px;
+  border-radius: 5px;
+  background-color: #ffffff;
+}
+
+.label {
+  float: left;
+}
+
+.div-form {
+  margin-bottom: 10px;
+}
+</style>

+ 116 - 0
src/components/customer/RunDataArchiveStep.vue

@@ -0,0 +1,116 @@
+<template>
+  <div class="grid-container">
+    <div class="grid-item-1">
+      <div>
+        <a-radio-group v-model:value="value">
+          <a-radio :style="radioStyle" :value="1">执行数据归档</a-radio>
+          <a-radio :style="radioStyle" :value="2">查看历史归档数据</a-radio>
+        </a-radio-group>
+      </div>
+      <a-divider />
+      <a-button type="primary" @click="previousStep">上一步</a-button>
+      <a-button style="float: right;" type="primary" @click="next">下一步</a-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import { Notify } from 'pc-component-v3';
+
+export default {
+
+  components: {
+    
+    
+  },
+  props: {
+    currentStep: {
+      type: Object,
+      default(){
+        return {};
+      },
+    },
+  },
+  emits: ['next'],
+  data: function() {
+    return {
+      value: undefined,
+      radioStyle: {
+        size: 'large',
+        display: 'flex',
+        height: '60px',
+        lineHeight: '60px',
+      },
+      isShow: false,
+      step: undefined,
+    };
+  },
+
+  methods: {
+    next: function() {
+      var _self = this;
+      if(_self.value == undefined || _self.value == null){
+        Notify.error('错误','未选择数据归档操作',1000);
+        return;
+      }
+      // var data = {
+      //   currentStep: 1,
+      //   showPage: _self.value,
+      //   assetInventoryStep3: undefined,
+      // };
+      if(_self.value == 1){
+        this.$router.push({path:'/desktop/dataArchive',query:{businessName:'资产盘点'}});
+      } else {
+        this.$router.push({path:'/desktop/info/20231117_152804'});
+      }
+    },
+    previousStep: function() {
+      var _self = this;
+      _self.$router.push('/eam/assetInventory');
+    },
+
+    mounted: function() {
+
+    },
+  },
+};
+</script>
+<style scoped>
+  .grid-container {
+    display: grid;
+    grid-template-rows: 8% 8% 84%;
+    grid-template-columns: 100%;
+    width: 100%;
+    /*视口被均分为 100 单位的 vh 占据整个窗口,扣掉顶部 topNav 的距离后,计算得到 responseOrganizationSelect 的高度*/
+    height: calc(100vh - 130px);
+    margin-top: 10px;
+  }
+
+  .grid-item-1 {
+    grid-row: 1/2;
+  }
+
+  .grid-item-2 {
+    grid-row: 2/3;
+  }
+
+  .grid-item-3 {
+    grid-row: 3/4;
+  }
+
+  .box {
+    border: 1px #ccc solid;
+    margin-bottom: 15px;
+    padding-top: 10px;
+    border-radius: 5px;
+    background-color: #ffffff;
+  }
+
+  .label {
+    float: left;
+  }
+
+  .div-form {
+    margin-bottom: 10px;
+  }
+</style>

+ 2 - 1
src/index.js

@@ -40,7 +40,7 @@ import PerformInventoryTasks from './components/customer/PerformInventoryTasks.v
 import InventoryDataProcessing from './components/customer/InventoryDataProcessing.vue';
 import AssetLabelPrint from './components/customer/AssetLabelPrint.vue';
 import InventoryAssetInstanceSearch from './customer/InventoryAssetInstanceSearch.vue';
-
+import RunDataArchive from './components/customer/RunDataArchive.vue';
 export {
   langZhCn,
   langEnUs,
@@ -81,4 +81,5 @@ export {
   InventoryDataProcessing,
   AssetLabelPrint,
   InventoryAssetInstanceSearch,
+  RunDataArchive,
 };

+ 11 - 1
src/locales/zh-CN.json

@@ -1033,7 +1033,17 @@
       "serialNumber": "序列号",
       "tagNumber": "标签编号",
       "balancingSegment": "公司代码",
-      "description": "资产名称"
+      "description": "资产名称",
+      "ownerDepartment": "所属单位部门",
+      "useDepartment": "使用单位部门",
+      "projectName": "项目名称",
+      "originalValue": "原值",
+      "placeOfPlacement": "原放置位置",
+      "aLocationToBePlacedIn":"放置位置",
+      "startDate": "开始使用日期",
+      "user": "使用人",
+      "specificationUser": "规格使用人(输入)",
+      "usageStatus": "使用状况"
     },
     "AssetBatchOperationQueue": {
       "book": "账套",

+ 4 - 0
src/router/index.js

@@ -33,6 +33,7 @@ const ManuallyConfirmCountingData = () => import(/* webpackChunkName: "component
 const PerformInventoryTasks = () => import(/* webpackChunkName: "component-33" */ '../components/customer/PerformInventoryTasks.vue');
 const InventoryDataProcessing = () => import(/* webpackChunkName: "component-34" */ '../components/customer/InventoryDataProcessing.vue');
 const AssetLabelPrint = () => import(/* webpackChunkName: "component-35" */ '../components/customer/AssetLabelPrint.vue');
+const RunDataArchive = () => import(/* webpackChunkName: "component-35" */ '../components/customer/RunDataArchive.vue');
 const routes = [
 
   { path: '/eam/hello-world', component: HelloWorld },
@@ -290,6 +291,9 @@ const routes = [
   {
     path: '/eam/assetLabelPrint', component: AssetLabelPrint,
   },
+  {
+    path: '/eam/runDataArchive', component: RunDataArchive,
+  },
 ];