From cc6914dff1a91dd00e3a86d5daae2c3dba2d6ba8 Mon Sep 17 00:00:00 2001
From: gaoluyang <gaoluyang@rengu.cc>
Date: 星期三, 24 七月 2024 16:28:00 +0800
Subject: [PATCH] 检测中心-班次时间配置功能

---
 src/components/view/b1-expenses.vue |   97 ++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 88 insertions(+), 9 deletions(-)

diff --git a/src/components/view/b1-expenses.vue b/src/components/view/b1-expenses.vue
index 786e791..92081fb 100644
--- a/src/components/view/b1-expenses.vue
+++ b/src/components/view/b1-expenses.vue
@@ -65,20 +65,31 @@
             </el-date-picker>
           </div>
         </div>
-        <div class="search_thing">
+        <div class="search_thing" style="width: 340px">
           <div class="search_label">濮旀墭鍗曚綅锛�</div>
-          <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
-              v-model="componentData.entity.company" @keyup.enter.native="refreshTable()"></el-input></div>
+          <div class="search_input">
+<!--            <el-input size="small" placeholder="璇疯緭鍏�" clearable-->
+<!--               @keyup.enter.native="refreshTable()"></el-input>-->
+            <el-select @focus="getCompanyOptions" @change="refreshTable()" clearable
+                       size="small" v-model="componentData.entity.company" style="width: 100%">
+              <el-option v-for="item in companyOptions" :key="item.value"
+                         :label="item.label" :value="item.label">
+              </el-option>
+            </el-select>
+          </div>
         </div>
         <div class="search_thing" style="padding-left: 30px;">
           <el-button size="small" @click="refresh()">閲� 缃�</el-button>
           <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
         </div>
         <div class="search_thing" style="padding-left: 70px;">鎬讳环锛歿{total}}</div>
+        <div class="search_thing" style="padding-left: 70px;">
+          <el-button size="small" type="primary" @click="handleDown" :loading="outLoading">瀵煎嚭</el-button>
+        </div>
       </div>
       <div class="table">
         <ValueTable ref="ValueTable" :url="$api.insOrder.costStatistics" :componentData="componentData" :key="upIndex"
-          @handleWeave="handleWeave" />
+          @handleWeave="handleWeave" :column-min-width="'140'"/>
       </div>
     </div>
     <el-dialog title="鍦ㄧ嚎缂栧埗" :visible.sync="claimVisible" width="70%" :modal-append-to-body="false">
@@ -106,7 +117,7 @@
             company: null,
             dates: null,
             orderBy: {
-              field: 'id,ins_sample_id',
+              field: 'id',
               order: 'asc'
             }
           },
@@ -127,6 +138,14 @@
                 name: 'entrustCode',
                 index: 2
               },
+              /* {
+                name: 'sample',
+                index: 3
+              },
+              {
+                name: 'model',
+                index: 4
+              }, */
               {
                 name: 'company',
                 index: 8
@@ -137,8 +156,8 @@
               },
             ],
             // 鐗规畩鐨勫悎骞惰锛屾牴鎹甿ain鍜宺ows鐨刵ame鏉ュ悎骞�
-            special: {
-              main: 'insSampleId',
+            /* special: {
+              main: 'entrustCode',
               rows: [{
                   name: 'sample',
                   index: 3
@@ -156,7 +175,7 @@
                   index: 6
                 },
               ]
-            }
+            } */
           },
           tagField: {
             type: {
@@ -187,7 +206,19 @@
         claimVisible: false,
         dates: [],
         index2: 0,
-        total: 0
+        total: 0,
+        companyOptions: [], // 濮旀墭鍗曚綅鏋氫妇鍊�
+        entity: {
+          orderBy: {
+            field: 'id',
+            order: 'asc'
+          }
+        },
+        page: {
+          current: -1,
+          size: -1,
+        },
+        outLoading:false
       }
     },
     mounted() {
@@ -197,6 +228,29 @@
       this.getPower()
     },
     methods: {
+      handleDown(){
+        let entity = {...this.componentData.entity}
+        // entity.dates = JSON.stringify(entity.dates)
+        delete entity.orderBy
+        this.outLoading = true
+        this.$axios.post(this.$api.insOrder.export,{
+          entity:entity
+        },{
+            headers: {
+              'Content-Type': 'application/json'
+            }
+          ,responseType: "blob"}).then(res => {
+          this.outLoading = false
+          this.$message.success('瀵煎嚭鎴愬姛')
+          const blob = new Blob([res],{ type: 'application/octet-stream' });
+          const url = URL.createObjectURL(blob);
+          const link = document.createElement('a');
+          link.href = url;
+          let date = JSON.parse(entity.dates)
+          link.download = (entity.company?entity.company+' ':'')+date[0]+' - '+date[1]+'璐圭敤缁熻.xlsx';
+          link.click();
+        })
+      },
       getTotal(){
         this.$axios.post(this.$api.insOrder.costStatistics2, {
           entity:this.componentData.entity
@@ -226,6 +280,31 @@
         this.index2++
         this.componentData.entity.dates = `["${startDate}","${endDate}"]`
       },
+      getCompanyOptions () {
+        this.$axios.post(this.$api.user.selectCustomPageList, {
+          page: this.page,
+          entity: this.entity
+        }, {
+          headers: {
+            'Content-Type': 'application/json'
+          }
+          }
+        ).then(res => {
+          if (res.code === 200) {
+            const list = res.data.body.records
+            this.companyOptions = []
+            list.map((item) => {
+              const obj = Object.assign({
+                value: item.id,
+                label: item.company,
+              })
+              this.companyOptions.push(obj)
+            })
+          }
+        }).catch(e => {
+          this.$message.error('鏌ヨ澶辫触')
+        })
+      },
       refreshTable() {
         this.$refs['ValueTable'].selectList()
         this.getTotal()

--
Gitblit v1.9.3