From 09da100729793848bc01b51f7b05ca3f1e7ec64f Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 20 六月 2024 14:05:35 +0800
Subject: [PATCH] 提交一把

---
 company/src/components/enterprise/importEmployees.vue |  215 +++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 188 insertions(+), 27 deletions(-)

diff --git a/company/src/components/enterprise/importEmployees.vue b/company/src/components/enterprise/importEmployees.vue
index ccba938..45550ff 100644
--- a/company/src/components/enterprise/importEmployees.vue
+++ b/company/src/components/enterprise/importEmployees.vue
@@ -1,46 +1,207 @@
 <template>
     <GlobalWindow
         :title="title"
-        width="100%"
+        width="30%"
         :visible.sync="visible"
         :confirm-working="isWorking"
         @confirm="confirm"
     >
+      <p class="tip-warn" v-if="type ==1"><i class="el-icon-warning"></i>鎻愰啋锛�<br>
+         <span style="">鍔犱繚浜哄憳鍚嶅崟涓紝浜哄憳濮撳悕銆佽韩浠借瘉鍙枫�佹淳閬e崟浣嶅拰宸ョ淇℃伅鍧囦负蹇呭~椤癸紝澶囨敞淇℃伅鍙负绌猴紝璇峰綍鍏ュ悎娉曟暟鎹��</span>
+      </p>
+      <p class="tip-warn"  v-if="type !=1"><i class="el-icon-warning"></i>鎻愰啋锛�<br>
+        <span style="">鍑忎繚浜哄憳鍚嶅崟涓紝浜哄憳濮撳悕銆佽韩浠借瘉鍙峰潎涓哄繀濉」锛屽娉ㄤ俊鎭彲涓虹┖锛岃褰曞叆鍚堟硶鏁版嵁銆�</span>
+      </p>
         <el-form class="demo-form-inline">
             <el-form-item label="涓婁紶鍚嶅崟" required>
-                <el-button type="primary" @click="clickRef">鐐瑰嚮涓婁紶</el-button>
-                <el-button type="text">鍚嶅崟妯℃澘.EXCEL</el-button>
+                <div style="width: 100%;display: flex;align-items: center;">
+                    <el-button type="primary" @click="clickRef" :loading="importing">鐐瑰嚮涓婁紶</el-button>
+                    <el-button type="text" @click="exportTemplate">鍚嶅崟妯℃澘.EXCEL</el-button>
+                </div>
+                <div style="font-size: 14px; color: black;" v-if="fileName">{{fileName}}</div>
             </el-form-item>
         </el-form>
-        <input type="file" accept=".excel" ref="fileExcel" @change="result" />
+        <input type="file"   @cancel="importing=false"  style="position: fixed; left: 0; top: -50px;" accept=".xlsx" ref="fileExcel" @change="result" />
+      <template  v-slot:footer>
+        <el-button type="primary"   :loading="confirming" @click="confirm">纭畾</el-button>
+        <el-button @click="visible=false">杩斿洖</el-button>
+      </template>
     </GlobalWindow>
 </template>
 
 <script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    export default {
-        name: 'importEmployees',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                list: []
-            }
-        },
-        methods: {
-            open (title, arr) {
-                this.title = title
-                this.visible = true
-            },
-            clickRef () {
-                this.$refs.fileExcel.click()
-            },
-            result (e) {
-                console.log(e)
-            }
-        }
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { importExcel,importReuduceExcel } from '@/api/business/member'
+export default {
+  name: 'importEmployees',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      importing:false,
+      confirming:false,
+      list: [],
+      price: 0,
+      type: null,
+      solutionId: null,
+      applyId: null,
+      addList: [],
+      delList: [],
+      fileName: ''
     }
+  },
+  methods: {
+    open (title, obj) {
+      this.title = title
+      this.addList = []
+      this.delList = []
+      this.fileName = ''
+      this.type = obj.type
+      this.visible = true
+      this.solutionId = obj.solutionId
+      this.applyId = obj.insuranceApplyId
+      this.list = obj.arr
+      this.price = obj.price
+      this.importing= false
+      this.confirming= false
+    },
+    // 瀵煎嚭妯℃澘
+    exportTemplate () {
+      // 鎶曚繚鐢宠
+      if (this.type === 1) {
+        window.open('/template/personnel_add.xlsx')
+      } else {
+        window.open('/template/personnel_reduce.xlsx')
+      }
+    },
+    clickRef () {
+      if(this.importing){
+        return
+      }
+      this.importing=true
+      this.$refs.fileExcel.click()
+    },
+    result(e){
+      if (this.type === 1) {
+        this.result1(e)
+      } else {
+        this.result2(e)
+      }
+    },
+    result1 (e) {
+      this.addList = []
+      const data = new FormData()
+      data.append('file', e.target.files[0])
+      data.append('solutionId', this.solutionId)
+      importExcel(data)
+        .then(res => {
+          res.forEach(item => {
+            item.memberName = item.name
+            item.fee = ''
+          })
+          this.addList = res
+          this.fileName = e.target.files[0].name
+          this.importing =false
+        })
+        .catch(err => {
+          this.importing =false
+          this.$message.error(err)
+          this.fileName = ''
+        })
+        .finally(() => {
+          this.importing =false
+          this.$refs.fileExcel.value = null
+        })
+    },
+    result2 (e) {
+      this.delList = []
+      const data = new FormData()
+      data.append('file', e.target.files[0])
+      data.append('applyId', this.applyId)
+      importReuduceExcel(data)
+        .then(res => {
+          res.forEach(item => {
+            item.memberName = item.name
+          })
+          this.delList = res
+          this.fileName = e.target.files[0].name
+          this.importing =false
+        })
+        .catch(err => {
+          this.importing = false
+          this.$message.error(err)
+          this.fileName = ''
+        })
+        .finally(() => {
+          this.importing =false
+          this.$refs.fileExcel.value = null
+        })
+    },
+    confirm () {
+      if (this.type === 1) {
+        this.confirm1()
+      } else {
+        this.confirm2()
+      }
+    },
+    confirm1 () {
+      if(this.addList==null || this.addList.length ==0){
+        this.$message.error('瀵煎叆浜哄憳鍚嶅崟涓虹┖锛岃鍏堜笂浼犱汉鍛樺悕鍗�')
+        return
+      }
+      if(this.confirming){
+        return
+      }
+      this.confirming = true
+      for (let i = 0; i < this.addList.length; i++) {
+        for (let a = 0; a < this.list.length; a++) {
+          if (this.addList[i].idCard === this.list[a].idcardNo) {
+            this.$message.warning(`銆�${this.addList[i].name}銆戝憳宸ヨ韩浠借瘉銆�${this.addList[i].idCard}銆戦噸澶峘)
+            this.confirming = false
+            return
+          }
+          if (this.addList[i].idCard === this.list[a].idCard) {
+            this.$message.warning(`銆�${this.addList[i].name}銆戝憳宸ヨ韩浠借瘉銆�${this.addList[i].idCard}銆戦噸澶峘)
+            this.confirming = false
+            return
+          }
+        }
+      }
+      this.addList.forEach(item => {
+        item.fee = this.price
+      })
+      this.visible = false
+      this.$emit('result', this.addList)
+    },
+    confirm2() {
+      if(this.delList==null || this.delList.length ==0){
+        this.$message.error('瀵煎叆浜哄憳鍚嶅崟涓虹┖锛岃鍏堜笂浼犱汉鍛樺悕鍗�')
+        return
+      }
+      if(this.confirming){
+        return
+      }
+      this.confirming = true
+      for (let i = 0; i < this.delList.length; i++) {
+        for (let a = 0; a < this.list.length; a++) {
+          if (this.delList[i].idCard === this.list[a].idcardNo) {
+            this.$message.warning(`銆�${this.delList[i].name}銆戝憳宸ヨ韩浠借瘉銆�${this.delList[i].idCard}銆戦噸澶峘)
+            this.confirming = false
+            return
+          }
+          if (this.delList[i].idCard === this.list[a].idCard) {
+            this.$message.warning(`銆�${this.delList[i].name}銆戝憳宸ヨ韩浠借瘉銆�${this.delList[i].idCard}銆戦噸澶峘)
+            this.confirming = false
+            return
+          }
+        }
+      }
+      this.visible = false
+      this.$emit('result', this.delList)
+    }
+  }
+}
 </script>
 
 <style lang="scss" scoped>

--
Gitblit v1.9.3