Pārlūkot izejas kodu

Merge branch 'master' of gitee.com:panxingxin/sgApp

zhoutao 5 gadi atpakaļ
vecāks
revīzija
bfb514d66c

+ 3 - 3
src/app/app.component.ts

@@ -43,9 +43,6 @@ export class AppComponent {
   }
   ngOnInit() {
     this.initWebSocket()
-    if (this.loggedIn) {
-      this.getMenuList()
-    }
     //WS连接的IP和端口提前保存在localStorage里,现在读出来
     // this.wsService.createObservableSocket(`ws://192.168.20.32:8804/websocket/403`);
     // this.wsService.sendMessage('testhis.fullScreenImaget')
@@ -161,6 +158,9 @@ export class AppComponent {
   updateLoggedInStatus(loggedIn: boolean) {
     setTimeout(() => {
       this.loggedIn = loggedIn;
+      if(this.loggedIn) {
+        this.getMenuList()
+      }
     }, 300);
   }
 

+ 48 - 39
src/app/contract-table/contract-table.page.html

@@ -1,31 +1,36 @@
 <ion-header>
-    <ion-toolbar>
-      <ion-buttons slot="start">
-        <ion-back-button [defaultHref]="defaultHref"></ion-back-button>
-      </ion-buttons>
-      <ion-title>采购合同列表</ion-title>
-    </ion-toolbar>
-  </ion-header>
+  <ion-toolbar>
+    <ion-buttons slot="start">
+      <ion-back-button [defaultHref]="defaultHref"></ion-back-button>
+    </ion-buttons>
+    <ion-title>采购合同列表</ion-title>
+  </ion-toolbar>
+</ion-header>
 
-  <ion-content>
-    <ion-card *ngFor="let contract of contractList" (click)="getDetail(contract)">
-      <ion-card-content class="contract-content">
-        <div class="contract-title">
-          <ion-icon name="briefcase"></ion-icon>
-          <ion-label>供应商:</ion-label>
-          <ion-label>{{contract.sname}}</ion-label>
-        </div>
-<!--        <div class="contract-column">-->
-<!--          <ion-icon name="contract"></ion-icon>-->
-<!--          <ion-label>采购合同ID: </ion-label>-->
-<!--          <ion-label>{{contract.sscId}}</ion-label>-->
-<!--        </div>-->
-        <div class="contract-column">
-          <ion-icon name="folder"></ion-icon>
-          <ion-label>采购合同编号: </ion-label>
-          <ion-label>{{contract.sscCode}}</ion-label>
-        </div>
-        <!-- <div class="contract-column">
+<ion-content>
+  <ion-refresher slot="fixed" (ionRefresh)="doRefresh($event)">
+    <ion-refresher-content pullingIcon="arrow-dropdown" pullingText="加载中..." refreshingSpinner="circles"
+      refreshingText="刷新...">
+    </ion-refresher-content>
+  </ion-refresher>
+  <ion-card *ngFor="let contract of contractList" (click)="getDetail(contract)">
+    <ion-card-content class="contract-content">
+      <div class="contract-title">
+        <ion-icon name="briefcase"></ion-icon>
+        <ion-label>供应商:</ion-label>
+        <ion-label>{{contract.sname}}</ion-label>
+      </div>
+      <!--        <div class="contract-column">-->
+      <!--          <ion-icon name="contract"></ion-icon>-->
+      <!--          <ion-label>采购合同ID: </ion-label>-->
+      <!--          <ion-label>{{contract.sscId}}</ion-label>-->
+      <!--        </div>-->
+      <div class="contract-column">
+        <ion-icon name="folder"></ion-icon>
+        <ion-label>采购合同编号: </ion-label>
+        <ion-label>{{contract.sscCode}}</ion-label>
+      </div>
+      <!-- <div class="contract-column">
           <ion-icon name="time"></ion-icon>
           <ion-label>供应商编号:{{contract.sid}}</ion-label>
           <ion-label></ion-label>
@@ -35,16 +40,20 @@
           <ion-label>供应商名称: </ion-label>
           <ion-label>{{contract.sdSelf}}</ion-label>
         </div> -->
-        <div class="contract-column">
-          <ion-icon name="calendar"></ion-icon>
-          <ion-label>合同日期: </ion-label>
-          <ion-label>{{contract.sscContractdate}}</ion-label>
-        </div>
-        <div class="contract-column">
-          <ion-icon name="man"></ion-icon>
-          <ion-label>下单员: </ion-label>
-          <ion-label>{{contract.sscCreator}}</ion-label>
-        </div>
-      </ion-card-content>
-    </ion-card>
-  </ion-content>
+      <div class="contract-column">
+        <ion-icon name="calendar"></ion-icon>
+        <ion-label>合同日期: </ion-label>
+        <ion-label>{{contract.sscContractdate}}</ion-label>
+      </div>
+      <div class="contract-column">
+        <ion-icon name="man"></ion-icon>
+        <ion-label>下单员: </ion-label>
+        <ion-label>{{contract.sscCreator}}</ion-label>
+      </div>
+    </ion-card-content>
+  </ion-card>
+  <ion-infinite-scroll #IonInfiniteScroll threshold="100px" (ionInfinite)="loadData($event)">
+    <ion-infinite-scroll-content loadingSpinner="bubbles" loadingText="加载...">
+    </ion-infinite-scroll-content>
+  </ion-infinite-scroll>
+</ion-content>

+ 29 - 5
src/app/contract-table/contract-table.page.ts

@@ -1,6 +1,7 @@
 import { Component, OnInit } from '@angular/core';
 import { Router } from '@angular/router';
 import { Storage } from '@ionic/storage'
+import { UserData } from '../../providers/user-data';
 
 @Component({
   selector: 'app-contract-table',
@@ -11,18 +12,41 @@ export class ContractTablePage implements OnInit {
 
   defaultHref=""
   contractList=[]
-  constructor(private router: Router, private storage: Storage) { }
+  queryForm = {}
+  constructor(private router: Router,
+    public userData: UserData,
+     private storage: Storage) { }
 
   ngOnInit() {
-    this.storage.get('contract-table-data').then((val) => {
+    this.getTableData()
+  }
+  ionViewDidEnter() {
+    this.defaultHref = `/contract`;
+  }
+
+  getTableData() {
+    this.storage.get('contractForm').then(async (val) => {
       if (val) {
-        this.contractList = JSON.parse(val).data
+        this.queryForm = val
+        this.contractList = await this.userData.getContractTableData(this.queryForm)
       }
     });
   }
-  ionViewDidEnter() {
-    this.defaultHref = `/contract`;
+
+  doRefresh(event) {
+    this.getTableData()
+    event.target.complete(); 
   }
+
+  async loadData(event) {
+    this.queryForm['size'] += 10
+    this.contractList = await this.userData.getContractTableData(this.queryForm)
+    event.target.complete();
+    if (this.contractList.length < this.queryForm['size']) {
+      event.target.disabled = true;
+    }
+  }
+
   getDetail(contract) {
     this.storage.set('sscId',contract.sscId).then(()=>{
       this.router.navigateByUrl('/contract-detail')

+ 7 - 2
src/app/contract/contract.page.ts

@@ -1,5 +1,7 @@
 import { Component, OnInit } from '@angular/core';
 import { UserData } from '../../providers/user-data';
+import { Storage } from '@ionic/storage'
+import { Router } from '@angular/router';
 
 @Component({
   selector: 'app-contract',
@@ -15,12 +17,15 @@ export class ContractPage implements OnInit {
     sscCreator: '',
     sscCode: ''
   }
-  constructor(public userData: UserData) { }
+  constructor(public userData: UserData,
+    private router: Router, 
+    private storage: Storage,) { }
 
   ngOnInit() {
   }
   search() {
-    this.userData.getContractTableData(this.getSerchForm())
+    this.storage.set('contractForm', this.getSerchForm())
+    this.router.navigateByUrl('/contract-table');
   }
   getSerchForm() {
     let queryForm = {

+ 9 - 0
src/app/sample-table/sample-table.page.html

@@ -8,6 +8,11 @@
 </ion-header>
 
 <ion-content>
+  <ion-refresher slot="fixed" (ionRefresh)="doRefresh($event)">
+    <ion-refresher-content pullingIcon="arrow-dropdown" pullingText="加载中..." refreshingSpinner="circles"
+      refreshingText="刷新...">
+    </ion-refresher-content>
+  </ion-refresher>
   <!-- <ion-item-sliding>
     <ion-item-options side="start">
       <ion-item-option (click)="favorite(item)">Favorite</ion-item-option>
@@ -68,4 +73,8 @@
       </ion-item-options>
     </ion-item-sliding> -->
   </ion-card>
+  <ion-infinite-scroll #IonInfiniteScroll threshold="100px" (ionInfinite)="loadData($event)">
+    <ion-infinite-scroll-content loadingSpinner="bubbles" loadingText="加载...">
+    </ion-infinite-scroll-content>
+  </ion-infinite-scroll>
 </ion-content>

+ 24 - 5
src/app/sample-table/sample-table.page.ts

@@ -1,5 +1,6 @@
 import { Component, OnInit } from '@angular/core';
 import { Router } from '@angular/router';
+import { UserData } from '../../providers/user-data';
 import { Storage } from '@ionic/storage'
 
 @Component({
@@ -8,18 +9,36 @@ import { Storage } from '@ionic/storage'
   styleUrls: ['./sample-table.page.scss'],
 })
 export class SampleTablePage implements OnInit {
-  constructor(private router: Router, private storage: Storage ) { }
+  constructor(private router: Router, private storage: Storage, public userData: UserData ) { }
   sampleList = []
   defaultHref = '';
+  queryForm = {}
   ngOnInit() {
-    this.storage.get('sample-table-data').then((val) => {
+    this.getTableData()
+  }
+  ionViewDidEnter() {
+    this.defaultHref = `/sample`;
+  }
+
+  getTableData() {
+    this.storage.get('sampleForm').then(async (val) => {
       if (val) {
-        this.sampleList = JSON.parse(val).data
+        this.queryForm = val
+        this.sampleList = await this.userData.getSampleTableData(this.queryForm)
       }
     });
   }
-  ionViewDidEnter() {
-    this.defaultHref = `/sample`;
+  doRefresh(event) {
+    this.getTableData()
+    event.target.complete(); 
+  }
+  async loadData(event) {
+    this.queryForm['size'] += 10
+    this.sampleList = await this.userData.getSampleTableData(this.queryForm)
+    event.target.complete();
+    if (this.sampleList.length < this.queryForm['size']) {
+      event.target.disabled = true;
+    }
   }
   getDetail(sample) {
     this.storage.set('sdId',sample.sdId).then(()=>{

+ 7 - 1
src/app/sample/sample.page.ts

@@ -1,5 +1,7 @@
 import { Component, OnInit } from '@angular/core';
 import { UserData } from '../../providers/user-data';
+import { Storage } from '@ionic/storage'
+import { Router } from '@angular/router';
 
 @Component({
   selector: 'app-sample',
@@ -17,12 +19,16 @@ export class SamplePage implements OnInit {
     sdMan: ''
   };
   constructor(
+    private router: Router, 
+    private storage: Storage,
     public userData: UserData
   ) { }
 
   ngOnInit() { }
   search() {
-    this.userData.getSampleTableData(this.getSerchForm())
+    this.storage.set('sampleForm', this.getSerchForm())
+    this.router.navigateByUrl('/sample-table');
+    // this.userData.getSampleTableData(this.getSerchForm())
   }
 
   getSerchForm() {

+ 4 - 0
src/app/store-qc/store-qc.page.html

@@ -26,4 +26,8 @@
       </ion-item>
     </ion-card-content>
   </ion-card>
+  <ion-infinite-scroll #IonInfiniteScroll threshold="100px" (ionInfinite)="loadData($event)">
+      <ion-infinite-scroll-content loadingSpinner="bubbles" loadingText="加载...">
+      </ion-infinite-scroll-content>
+    </ion-infinite-scroll>
 </ion-content>

+ 9 - 0
src/app/store-qc/store-qc.page.ts

@@ -36,4 +36,13 @@ export class StoreQCPage implements OnInit {
       this.router.navigateByUrl('/store-qc-detail')
     })
   }
+
+  async loadData(event) {
+    this.size += 10
+    this.getList()
+    event.target.complete();
+    if (this.qcList.length < this.size) {
+      event.target.disabled = true;
+    }
+  }
 }

+ 5 - 2
src/app/store-sample-pending/store-sample-pending.page.html

@@ -33,8 +33,7 @@
     <ion-card-content class="storeSample-content">
       <ion-item lines="none">
         <span>产品图片:</span>
-        <img slot="end" (click)="showFullScreenImage(storeSample)" [src]="storeSample.imgsrc"
-          class="title-image" />
+        <img slot="end" (click)="showFullScreenImage(storeSample)" [src]="storeSample.imgsrc" class="title-image" />
       </ion-item>
       <ion-item>
         <ion-icon name="briefcase"></ion-icon>
@@ -72,4 +71,8 @@
       </div>
     </ion-card-content>
   </ion-card>
+  <ion-infinite-scroll #IonInfiniteScroll threshold="100px" (ionInfinite)="loadData($event)">
+    <ion-infinite-scroll-content loadingSpinner="bubbles" loadingText="加载...">
+    </ion-infinite-scroll-content>
+  </ion-infinite-scroll>
 </ion-content>

+ 9 - 0
src/app/store-sample-pending/store-sample-pending.page.ts

@@ -49,6 +49,15 @@ export class StoreSamplePendingPage implements OnInit {
     this.commonService.fullScreenImg(form)
   }
 
+  async loadData(event) {
+    this.size += 10
+    this.getList()
+    event.target.complete();
+    if (this.storeSampleLists.length < this.size) {
+      event.target.disabled = true;
+    }
+  }
+
   // 通过code获取仓库样品详情
   async getStoreSampleDetail() {
     this.keyboard.hide()

+ 4 - 0
src/app/warehouse-manage-pending/warehouse-manage-pending.page.html

@@ -68,4 +68,8 @@
       </div>
     </ion-card-content>
   </ion-card>
+  <ion-infinite-scroll #IonInfiniteScroll threshold="100px" (ionInfinite)="loadData($event)">
+      <ion-infinite-scroll-content loadingSpinner="bubbles" loadingText="加载...">
+      </ion-infinite-scroll-content>
+    </ion-infinite-scroll>
 </ion-content>

+ 9 - 0
src/app/warehouse-manage-pending/warehouse-manage-pending.page.ts

@@ -36,6 +36,15 @@ export class WarehouseManagePendingPage implements OnInit {
     // 告诉ion-refresher  更新数据
   }
 
+  async loadData(event) {
+    this.size += 10
+    this.getList()
+    event.target.complete();
+    if (this.warehouseManageLists.length < this.size) {
+      event.target.disabled = true;
+    }
+  }
+
   async getList() {
     const data = await this.userData.getWarehouseManagePendingList(this.current, this.size);
     this.warehouseManageLists = data;

+ 99 - 75
src/providers/user-data.ts

@@ -78,7 +78,7 @@ export class UserData {
         }, async err => {
           console.log(err);
           const toast = await this.toastCtrl.create({
-            message: err.error+err.url,
+            message: err.error + err.url,
             duration: 1000,
             position: 'top'
           });
@@ -105,23 +105,23 @@ export class UserData {
   async getAppMenu(): Promise<any> {
     const token = await this.getToken();
     return new Promise((resolve, reject) => {
-    from(this.nativeHttp.get(`${environment.APP_SERVE_URL}/admin/menu/app`,
-      {},
-      { Authorization: `Bearer ${token}`,'Content-Type': 'application/json;charset=UTF-8' })).pipe(
-        finalize(() => { })
-      ).subscribe(async data => {
-        // console.log(JSON.parse(data.data))
-        resolve(JSON.parse(data.data).data)
-      }, async err => {
-        console.log(err);
-        const toast = await this.toastCtrl.create({
-          message: '查询目录失败',
-          duration: 1000,
-          position: 'top'
+      from(this.nativeHttp.get(`${environment.APP_SERVE_URL}/admin/menu/app`,
+        {},
+        { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json;charset=UTF-8' })).pipe(
+          finalize(() => { })
+        ).subscribe(async data => {
+          // console.log(JSON.parse(data.data))
+          resolve(JSON.parse(data.data).data)
+        }, async err => {
+          console.log(err);
+          const toast = await this.toastCtrl.create({
+            message: '查询目录失败',
+            duration: 1000,
+            position: 'top'
+          });
+          await toast.present();
         });
-        await toast.present();
-      });
-    return;
+      return;
     })
   }
 
@@ -257,23 +257,36 @@ export class UserData {
     await loading.present();
     this.nativeHttp.setDataSerializer('json');
     const headers = { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json;charset=UTF-8' };
-    from(this.nativeHttp.post(`${environment.APP_SERVE_URL}/search/samples/mobile/page`,
-      form,
-      headers)).pipe(
-        finalize(() => loading.dismiss())
-      ).subscribe(data => {
-        this.storage.set('sample-table-data', data.data);
-        this.router.navigateByUrl('/sample-table');
-      }, async err => {
-        console.log(err);
-        const toast = await this.toastCtrl.create({
-          message: '查询失败',
-          duration: 1000,
-          position: 'top'
+    return new Promise((resolve, reject) => {
+      from(this.nativeHttp.post(`${environment.APP_SERVE_URL}/search/samples/mobile/page`,
+        form,
+        headers)).pipe(
+          finalize(() => loading.dismiss())
+        ).subscribe(async data => {
+          if (JSON.parse(data.data).code == 1) {
+            const toast = await this.toastCtrl.create({
+              message: JSON.parse(data.data).msg,
+              duration: 1000,
+              position: 'top'
+            });
+            await toast.present();
+            reject()
+          } else if (JSON.parse(data.data).code == 0) {
+            resolve(JSON.parse(data.data).data)
+          }
+          // this.storage.set('sample-table-data', data.data);
+          // this.router.navigateByUrl('/sample-table');
+        }, async err => {
+          console.log(err);
+          const toast = await this.toastCtrl.create({
+            message: '查询失败',
+            duration: 1000,
+            position: 'top'
+          });
+          await toast.present();
         });
-        await toast.present();
-      });
-    return;
+      return;
+    })
   }
 
   // 获得采购合同列表
@@ -283,23 +296,34 @@ export class UserData {
     await loading.present();
     this.nativeHttp.setDataSerializer('json');
     const headers = { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json;charset=UTF-8' };
-    from(this.nativeHttp.post(`${environment.APP_SERVE_URL}/search/supplier/contract/mobile/page`,
-      form,
-      headers)).pipe(
-        finalize(() => loading.dismiss())
-      ).subscribe(data => {
-        this.storage.set('contract-table-data', data.data);
-        this.router.navigateByUrl('/contract-table');
-      }, async err => {
-        console.log(err);
-        const toast = await this.toastCtrl.create({
-          message: '查询失败',
-          duration: 1000,
-          position: 'top'
+    return new Promise((resolve, reject) => {
+      from(this.nativeHttp.post(`${environment.APP_SERVE_URL}/search/supplier/contract/mobile/page`,
+        form,
+        headers)).pipe(
+          finalize(() => loading.dismiss())
+        ).subscribe(async data => {
+          if (JSON.parse(data.data).code == 1) {
+            const toast = await this.toastCtrl.create({
+              message: JSON.parse(data.data).msg,
+              duration: 1000,
+              position: 'top'
+            });
+            await toast.present();
+            reject()
+          } else if (JSON.parse(data.data).code == 0) {
+            resolve(JSON.parse(data.data).data)
+          }
+        }, async err => {
+          console.log(err);
+          const toast = await this.toastCtrl.create({
+            message: '查询失败',
+            duration: 1000,
+            position: 'top'
+          });
+          await toast.present();
         });
-        await toast.present();
-      });
-    return;
+      return;
+    })
   }
 
   // 获取样品单详情
@@ -395,8 +419,8 @@ export class UserData {
     });
   }
 
-   // 删除qa日志
-   async deleteSampleQa(id: any): Promise<any> {
+  // 删除qa日志
+  async deleteSampleQa(id: any): Promise<any> {
     const token = await this.getToken();
     const loading = await this.loadingCtrl.create();
     await loading.present();
@@ -426,36 +450,36 @@ export class UserData {
     });
   }
 
-     // 删除qc日志
-     async deleteSampleQc(id: any): Promise<any> {
-      const token = await this.getToken();
-      const loading = await this.loadingCtrl.create();
-      await loading.present();
-      const header = { Authorization: `Bearer ${token}` };
-      return new Promise((resolve, reject) => {
-        from(this.nativeHttp.delete(`${environment.APP_SERVE_URL}/inventory/qc/mobile/qclog/${id}`, {},
-          header)).pipe(
-            finalize(() => loading.dismiss())
-          ).subscribe(async data => {
-            if (JSON.parse(data.data).code == 1) {
-              const toast = await this.toastCtrl.create({
-                message: JSON.parse(data.data).msg,
-                duration: 1000,
-                position: 'top'
-              });
-              await toast.present();
-            }
-          }, async err => {
-            console.log(err);
+  // 删除qc日志
+  async deleteSampleQc(id: any): Promise<any> {
+    const token = await this.getToken();
+    const loading = await this.loadingCtrl.create();
+    await loading.present();
+    const header = { Authorization: `Bearer ${token}` };
+    return new Promise((resolve, reject) => {
+      from(this.nativeHttp.delete(`${environment.APP_SERVE_URL}/inventory/qc/mobile/qclog/${id}`, {},
+        header)).pipe(
+          finalize(() => loading.dismiss())
+        ).subscribe(async data => {
+          if (JSON.parse(data.data).code == 1) {
             const toast = await this.toastCtrl.create({
-              message: '操作失败',
+              message: JSON.parse(data.data).msg,
               duration: 1000,
               position: 'top'
             });
             await toast.present();
+          }
+        }, async err => {
+          console.log(err);
+          const toast = await this.toastCtrl.create({
+            message: '操作失败',
+            duration: 1000,
+            position: 'top'
           });
-      });
-    }
+          await toast.present();
+        });
+    });
+  }
 
   // 获取采购合同详情
   async getContractDetail(sscId: Number): Promise<any> {