From 2f919191f1c7739eb0ef54392cd265284b55af9e Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 29 一月 2024 19:58:52 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 company/src/api/business/dispatchUnit.js                        |    5 
 company/src/components/enterprise/importEmployees.vue           |   57 ++++
 company/src/api/business/member.js                              |    5 
 company/src/components/enterprise/OperaInsuranceApplyWindow.vue |  329 ++++++++++++++++++++++++--
 company/src/components/enterprise/addEmployee.vue               |   64 +++-
 company/src/api/business/insuranceApply.js                      |   11 
 company/src/components/common/GlobalWindow.vue                  |    7 
 company/src/components/enterprise/selectEmployees.vue           |   55 ++++
 company/src/components/enterprise/confirmJobType.vue            |  112 +++++++++
 company/src/utils/util.js                                       |   49 ++++
 company/src/views/enterprise/insuranceApply.vue                 |   17 +
 11 files changed, 642 insertions(+), 69 deletions(-)

diff --git a/company/src/api/business/dispatchUnit.js b/company/src/api/business/dispatchUnit.js
index 873ef6f..4c74a05 100644
--- a/company/src/api/business/dispatchUnit.js
+++ b/company/src/api/business/dispatchUnit.js
@@ -31,3 +31,8 @@
 export function editDispatchUnit (data) {
     return request.post('/business/dispatchUnit/editDispatchUnit', data)
 }
+
+// 鏁版嵁鍒楄〃
+export function findListByDTO (data) {
+    return request.post('/business/dispatchUnit/findListByDTO', data)
+}
diff --git a/company/src/api/business/insuranceApply.js b/company/src/api/business/insuranceApply.js
index 7235962..a4c416f 100644
--- a/company/src/api/business/insuranceApply.js
+++ b/company/src/api/business/insuranceApply.js
@@ -11,6 +11,12 @@
 export function updateById (data) {
     return request.post('/business/insuranceApply/updateById', data)
 }
+
+// 鏂板缓
+export function create (data) {
+    return request.post('/business/insuranceApply/create', data)
+}
+
 export function check (data) {
     return request.post('/business/insuranceApply/check', data)
 }
@@ -31,6 +37,11 @@
     return request.post('/business/insuranceApply/dealBackApply', data)
 }
 
+// 鑾峰彇淇濆崟姝㈡湡涓庡垵濮嬮噾棰�
+export function getCountCyclePriceVO (data) {
+    return request.post('/business/insuranceApply/getCountCyclePriceVO', data)
+}
+
 export function exportDetailExcel (data) {
     return request.post('/business/insuranceApply/exportDetailExcel', data, {
         trim: true,
diff --git a/company/src/api/business/member.js b/company/src/api/business/member.js
index f336652..a5c98dc 100644
--- a/company/src/api/business/member.js
+++ b/company/src/api/business/member.js
@@ -16,3 +16,8 @@
 export function findListByDTO (data) {
     return request.post('/business/member/findListByDTO', data)
 }
+
+// 瀵煎叆妯℃澘
+export function importExcel (data) {
+    return request.post('/business/member/importExcel', data)
+}
diff --git a/company/src/components/common/GlobalWindow.vue b/company/src/components/common/GlobalWindow.vue
index 7967500..f973e7c 100644
--- a/company/src/components/common/GlobalWindow.vue
+++ b/company/src/components/common/GlobalWindow.vue
@@ -20,7 +20,7 @@
     </div>
     <div v-if="withFooter" class="window__footer">
       <slot name="footer">
-        <el-button @click="confirm" :loading="confirmWorking" type="primary">纭畾</el-button>
+        <el-button @click="confirm" :loading="confirmWorking" type="primary">{{text}}</el-button>
         <el-button @click="close">杩斿洖</el-button>
       </slot>
     </div>
@@ -40,6 +40,11 @@
       type: Boolean,
       default: true
     },
+    // 鎻愪氦鎸夐挳鏂囧瓧
+    text: {
+      type: String,
+      default: '纭畾'
+    },
     // 纭鎸夐挳loading鐘舵��
     confirmWorking: {
       type: Boolean,
diff --git a/company/src/components/enterprise/OperaInsuranceApplyWindow.vue b/company/src/components/enterprise/OperaInsuranceApplyWindow.vue
index 5b6018b..424cb7b 100644
--- a/company/src/components/enterprise/OperaInsuranceApplyWindow.vue
+++ b/company/src/components/enterprise/OperaInsuranceApplyWindow.vue
@@ -2,102 +2,135 @@
     <GlobalWindow
         :title="title"
         width="100%"
-        :withFooter="false"
+        text="鎶曚繚鐢宠"
         :visible.sync="visible"
         :confirm-working="isWorking"
         @confirm="confirm"
     >
         <div class="list">
-            <el-form :inline="true" :model="form" :rules="rules" class="demo-form-inline">
+            <el-form :inline="true" ref="form" :model="form" :rules="rules" class="demo-form-inline">
                 <el-form-item label="淇濋櫓鏂规" prop="solutionId">
-                    <el-select v-model="form.solutionId" placeholder="璇烽�夋嫨">
-                        <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
-                        <el-option label="鍖哄煙浜�" value="beijing"></el-option>
+                    <el-select v-model="form.solutionId" @change="changeSolution" placeholder="璇烽�夋嫨">
+                        <el-option
+                            v-for="item in company"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.id">
+                        </el-option>
                     </el-select>
                 </el-form-item>
                 <el-form-item label="鏈熸湜淇濋櫓鐢熸晥璧锋湡" prop="applyStartTime">
                     <div style="display: flex; flex-direction: column;">
                         <el-date-picker
-                                v-model="form.applyStartTime"
-                                type="date"
-                                placeholder="閫夋嫨鏃ユ湡">
+                            @change="getTimeVal"
+                            v-model="form.applyStartTime"
+                            type="date"
+                            :disabled="!form.solutionId"
+                            :picker-options="pickerOptions"
+                            value-format="yyyy-MM-dd"
+                            format="yyyy 骞� MM 鏈� dd 鏃�"
+                            placeholder="閫夋嫨鏃ユ湡">
                         </el-date-picker>
                         <span style="color: #F95601; font-size: 14px;">锛堟鏃ョ敓鏁堟姇淇濊浜�17:30鍓嶆彁浜わ紝瓒呮椂鎻愪氦浠ヤ繚闄╁崟涓哄噯锛�</span>
                     </div>
                 </el-form-item>
                 <el-form-item label="淇濋櫓鐢熸晥姝㈡湡" prop="applyEndTime">
                     <el-date-picker
+                        disabled
                         v-model="form.applyEndTime"
                         type="date"
+                        value-format="yyyy-MM-dd"
+                        format="yyyy 骞� MM 鏈� dd 鏃�"
                         placeholder="閫夋嫨鏃ユ湡">
                     </el-date-picker>
                 </el-form-item>
-                <el-form-item label="鎶曚繚骞撮緞">
-                    <span>25鑷�65</span>
+                <el-form-item label="鎶曚繚骞撮緞" v-if="item">
+                    <span>{{item.minAge}} 鑷� {{item.maxAge}}</span>
                 </el-form-item>
-                <el-form-item label="璐圭敤">
-                    <span>200鍏�/骞�/浜�</span>
+                <el-form-item label="璐圭敤" v-if="item">
+                    <span>{{item.price}}鍏�</span>
+                    <span v-if="item.timeUnit === 0">/澶�</span>
+                    <span v-if="item.timeUnit === 1">/鍗婃湀</span>
+                    <span v-if="item.timeUnit === 2">/鏈�</span>
+                    <span v-if="item.timeUnit === 3">/骞�</span>
+                    <span>/浜�</span>
                 </el-form-item>
             </el-form>
         </div>
         <div class="btns">
             <div class="btns_item">
-                <el-button type="primary" @click="$refs.selectEmployees.open('閫夊彇鍛樺伐')">閫夊彇鍛樺伐</el-button>
-                <el-button type="primary">瀵煎叆鍛樺伐</el-button>
-                <el-button type="primary" @click="$refs.addEmployee.open('娣诲姞鍛樺伐', tableData)">娣诲姞鍛樺伐</el-button>
+                <el-button type="primary" @click="seleUser">閫夊彇鍛樺伐</el-button>
+                <el-button type="primary" @click="uploadUser">瀵煎叆鍛樺伐</el-button>
+                <el-button type="primary" @click="addUser">娣诲姞鍛樺伐</el-button>
+                <el-button type="danger" @click="deleItem">鍒犻櫎</el-button>
             </div>
             <div class="btns_item">
-                <el-button type="primary">閫夊彇娲鹃仯鍗曚綅</el-button>
+                <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>
             </div>
         </div>
         <el-table
             :data="tableData"
             border
+            show-summary
+            :summary-method="getSummaries"
+            ref="multipleTable"
+            @selection-change="handleSelectionChange"
             style="width: 100%;margin-bottom: 15px;">
+            <el-table-column
+                type="selection"
+                width="55">
+            </el-table-column>
             <el-table-column label="搴忓彿" width="80px">
                 <template slot-scope="scope">
                     <span>{{scope.$index + 1}}</span>
                 </template>
             </el-table-column>
             <el-table-column
-                prop="name"
+                prop="memberName"
                 label="濮撳悕">
             </el-table-column>
             <el-table-column
-                prop="idcardNo"
+                prop="idCard"
                 label="韬唤璇佸彿">
             </el-table-column>
             <el-table-column
-                prop="address"
                 label="骞撮緞">
+                <template slot-scope="{row}">
+                    <span v-if="row.idCard">{{ getAgeByIdCard(row.idCard) }}</span>
+                </template>
             </el-table-column>
             <el-table-column
-                prop="address"
+                prop="duName"
                 label="娲鹃仯鍗曚綅">
             </el-table-column>
             <el-table-column
-                prop="address"
+                prop="workTypeName"
                 label="鎵�灞炲伐绉�">
             </el-table-column>
             <el-table-column
-                prop="address"
+                prop="fee"
                 label="璐圭敤">
             </el-table-column>
             <el-table-column
-                prop="address"
                 label="鎿嶄綔">
+                <template slot-scope="scope">
+                    <el-button type="text" style="color: red;" @click="dele(scope.$index)">鍒犻櫎</el-button>
+                </template>
             </el-table-column>
         </el-table>
-        <div class="submit">
-            <el-button type="primary">鎶曚繚鐢宠</el-button>
-        </div>
-        <div class="info">
-            瀵屾枃鏈�
+        <div class="info" v-if="item">
+            <span v-if="item.specialAgreement">{{item.specialAgreement}}</span>
+            <span v-if="item.specialInfo">{{item.specialInfo}}</span>
+            <span v-if="item.ortherInfo">{{item.ortherInfo}}</span>
         </div>
         <!--    閫夋嫨鍛樺伐    -->
-        <selectEmployees ref="selectEmployees" />
+        <selectEmployees ref="selectEmployees" @result="getValue" />
         <!--    娣诲姞鍛樺伐    -->
         <addEmployee ref="addEmployee" @result="getValue" />
+        <!--    瀵煎叆鍚嶅崟    -->
+        <importEmployees ref="importEmployees" @result="getValue" />
+        <!--    纭宸ョ    -->
+        <confirmJobType ref="confirmJobType" @result="getUser" />
     </GlobalWindow>
 </template>
 
@@ -106,10 +139,14 @@
 import GlobalWindow from '@/components/common/GlobalWindow'
 import selectEmployees from '@/components/enterprise/selectEmployees'
 import addEmployee from '@/components/enterprise/addEmployee'
+import importEmployees from '@/components/enterprise/importEmployees'
+import confirmJobType from '@/components/enterprise/confirmJobType'
+import { all } from '@/api/business/solutions'
+import { create, getCountCyclePriceVO } from '@/api/business/insuranceApply'
 export default {
   name: 'OperaInsuranceApplyWindow',
   extends: BaseOpera,
-  components: { GlobalWindow, selectEmployees, addEmployee },
+  components: { GlobalWindow, selectEmployees, addEmployee, importEmployees, confirmJobType },
   data () {
     return {
       form: {
@@ -118,6 +155,11 @@
           applyStartTime: '',
           applyEndTime: ''
       },
+      pickerOptions: {}, // 瀛樻斁picker options鐨勫彉閲�
+      price: '',
+      company: [],
+      seleData: [],
+      item: null,
       // 楠岃瘉瑙勫垯
       rules: {
           solutionId: [
@@ -136,7 +178,230 @@
           'field.id': 'id'
       })
   },
-  methods: {
+    methods: {
+      open (title, target) {
+          this.title = title
+          this.tableData = []
+          this.form.id = null
+          this.item = null
+          this.form.solutionId = ''
+          this.form.applyStartTime = ''
+          this.form.applyEndTime = ''
+          this.$nextTick(() => {
+              this.$refs.form.resetFields()
+              this.form[this.configData['field.id']] = null
+          })
+          this.visible = true
+          this.getCompany()
+          this.updatePickerOptions()
+      },
+        getSummaries(param) {
+            const { columns, data } = param
+            const sums = []
+            columns.forEach((column, index) => {
+                if (index === 0) {
+                    sums[index] = '鎬讳环'
+                    return
+                } else if (index === 7) {
+                    let total = 0
+                    this.tableData.forEach(item => {
+                        total += item.fee
+                    })
+                    sums[index] = total
+                    return
+                }
+            })
+            return sums
+        },
+        deleItem() {
+            if (this.seleData.length === 0) {
+                this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
+                return
+            }
+            this.seleData.forEach(item => {
+                this.tableData.forEach((row, index) => {
+                    if (item === row.name) {
+                        this.tableData.splice(index, 1)
+                    }
+                })
+            })
+        },
+        confirm() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    if (this.tableData.length === 0) {
+                        this.$message.warning('鑷冲皯娣诲姞涓�椤瑰憳宸�')
+                        return
+                    }
+                    for (let i = 0; i < this.tableData.length; i++) {
+                        console.log(this.tableData[i].worktypeId, this.tableData[i].duId)
+                        if (!this.tableData[i].worktypeId || !this.tableData[i].duId) {
+                            this.$message.warning('璇峰畬鍠勬淳閬e崟浣嶅拰宸ョ淇℃伅')
+                            return
+                        }
+                    }
+                    let arr = JSON.parse(JSON.stringify(this.tableData))
+                    arr.forEach(item => {
+                        item.idcardNo = item.idCard
+                    })
+                    this.isWorking = true
+                    create({
+                        applyDetailList: arr,
+                        applyStartTime: this.form.applyStartTime,
+                        applyEndTime: this.form.applyEndTime,
+                        solutionId: this.form.solutionId
+                    }).then(() => {
+                        this.visible = false
+                        this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+                        this.$emit('success')
+                    })
+                    .catch(e => {
+                        this.$tip.apiFailed(e)
+                    })
+                    .finally(() => {
+                        this.isWorking = false
+                    })
+                }
+            })
+        },
+        // 鑾峰彇缁撴潫鏃堕棿鍜屼环鏍�
+        getTimeVal(time) {
+            getCountCyclePriceVO({
+                solutionsId: this.form.solutionId,
+                startDate: time
+            }).then(res => {
+                this.price = res.cyclePrice
+                this.form.applyEndTime = res.endDate.substring(0, 10)
+                this.tableData.forEach(item => {
+                    item.fee = res.cyclePrice
+                })
+                console.log(this.tableData)
+                this.$forceUpdate()
+            })
+        },
+        getDate(n) { // n涓哄灏戝ぉ锛�-浠h〃寰�鍓嶏紝+浠h〃寰�鍚�
+            let date1 = new Date(),
+            time1 = date1.getFullYear() + "-" + (date1.getMonth() + 1) + "-" + date1.getDate();//time1琛ㄧず褰撳墠鏃堕棿
+            let date2 = new Date(date1);
+            date2.setDate(date1.getDate() + n);
+            let time2 = date2.getFullYear() + "-" + ("0" + (date2.getMonth() + 1)).slice(-2) + "-" + ("0" + date2.getDate()).slice(-2);
+            return time2
+        },
+        updatePickerOptions() {
+          var that = this;
+            this.pickerOptions = {
+                disabledDate(time) {
+                    if (!that.item) return
+                    if (that.item.validType === 1) {
+                        // 娆℃湀
+                        const currentDate = new Date();
+                        currentDate.setMonth(currentDate.getMonth() + 1);
+                        currentDate.setDate(1);
+                        return time.getTime() <= new Date(currentDate.toLocaleString()).getTime() - 8.64e7;
+                    } else if (that.item.validType === 0) {
+                        // 澶氬皯鏃ュ悗鐢熸晥
+                        return time.getTime() <= new Date(that.getDate(that.item.validTypeNum)).getTime();
+                    }
+                }
+            };
+        },
+        seleUser() {
+            if (!this.form.solutionId) {
+                this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                return
+            }
+            this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.tableData, price: this.price })
+        },
+      addUser() {
+          if (!this.form.solutionId) {
+              this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+              return
+          }
+          this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.tableData, price: this.price })
+      },
+      uploadUser() {
+          if (!this.form.solutionId) {
+              this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+              return
+          }
+          this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.tableData, price: this.price })
+      },
+      // 鍒囨崲鏂规
+      changeSolution(e) {
+          this.company.forEach(item => {
+              if (item.id === e) {
+                  // this.price = item.price
+                  this.item = item
+                  this.updatePickerOptions()
+              }
+          })
+          this.tableData.forEach(item => {
+              item.fee = this.price
+          })
+      },
+      dele(index) {
+          this.tableData.splice(index, 1)
+      },
+      getUser(obj) {
+          this.seleData.forEach(item => {
+              this.tableData.forEach(row => {
+                   if (item === row.name) {
+                       row.workTypeName = obj.workTypeName
+                       row.worktypeId = obj.worktypeId
+                       row.duName = obj.duName
+                       row.duId = obj.duId
+                   }
+              })
+          })
+          this.seleData = []
+          this.$refs.multipleTable.clearSelection();
+      },
+      // 閫夋嫨鍛樺伐
+      sele() {
+          if (!this.form.solutionId) {
+              this.$message.warning('璇烽�夋嫨淇濋櫓鏂规')
+              return
+          }
+          if (this.seleData.length === 0) {
+              this.$message.warning('璇烽�夋嫨鍛樺伐')
+              return
+          }
+          this.$refs.confirmJobType.open('纭宸ョ', { solutionId: this.form.solutionId })
+      },
+      // 鏌ヨ鍏ㄩ儴鏂规
+      getCompany() {
+          all({})
+            .then(res => {
+                this.company = res
+            })
+      },
+      getAgeByIdCard(idCard){
+          const sexAndAge = {}
+          //鑾峰彇鐢ㄦ埛韬唤璇佸彿鐮�
+          const userCard = idCard
+          //濡傛灉鐢ㄦ埛韬唤璇佸彿鐮佷负undefined鍒欒繑鍥炵┖
+          if (!userCard) {
+              return sexAndAge
+          }
+          // 鑾峰彇鍑虹敓鏃ユ湡
+          const yearBirth = userCard.substring(6, 10)
+          const monthBirth = userCard.substring(10, 12)
+          const dayBirth = userCard.substring(12, 14)
+          // 鑾峰彇褰撳墠骞存湀鏃ュ苟璁$畻骞撮緞
+          const myDate = new Date()
+          const monthNow = myDate.getMonth() + 1
+          const dayNow = myDate.getDate()
+          let age = myDate.getFullYear() - yearBirth
+          if (monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)) {
+              age--
+          }
+          // 寰楀埌骞撮緞
+          sexAndAge.age = age
+          return sexAndAge.age
+      },
+      handleSelectionChange (e) {
+          this.seleData = e.map(item => item.name)
+      },
       getValue(list) {
           this.tableData.push(...list)
       }
@@ -168,5 +433,7 @@
     }
     .info {
         width: 100%;
+        font-size: 14px;
+        color: black;
     }
 </style>
diff --git a/company/src/components/enterprise/addEmployee.vue b/company/src/components/enterprise/addEmployee.vue
index 075e407..34d6fdb 100644
--- a/company/src/components/enterprise/addEmployee.vue
+++ b/company/src/components/enterprise/addEmployee.vue
@@ -9,10 +9,10 @@
         <el-form :inline="true" class="demo-form-inline">
             <div v-for="(item, index) in list" :key="index">
                 <el-form-item label="濮撳悕" required>
-                    <el-input v-model="item.name" placeholder="璇疯緭鍏�"></el-input>
+                    <el-input v-model="item.memberName" placeholder="璇疯緭鍏�"></el-input>
                 </el-form-item>
                 <el-form-item label="韬唤璇佸彿" required>
-                    <el-input v-model="item.idcardNo" maxlength="18" placeholder="璇疯緭鍏�"></el-input>
+                    <el-input v-model="item.idCard" maxlength="18" placeholder="璇疯緭鍏�"></el-input>
                 </el-form-item>
                 <el-form-item>
                     <el-button type="primary" v-if="index === 0" @click="add">娣诲姞</el-button>
@@ -34,29 +34,46 @@
             return {
                 list: [
                     {
-                        name: '',
-                        idcardNo: ''
+                        memberName: '',
+                        idCard: '',
+                        workTypeName: '',
+                        worktypeId: '',
+                        duName: '',
+                        duId: '',
+                        fee: ''
                     }
                 ],
+                price: 0,
                 arr: []
             }
         },
         methods: {
-            open (title, arr) {
+            open (title, obj) {
                 this.title = title
                 this.visible = true
                 this.list = [
                     {
-                        name: '',
-                        idcardNo: ''
+                        memberName: '',
+                        idCard: '',
+                        workTypeName: '',
+                        worktypeId: '',
+                        duName: '',
+                        duId: '',
+                        fee: ''
                     }
                 ]
-                this.arr = arr
+                this.arr = obj.arr
+                this.price = obj.price
             },
             add() {
                 this.list.push({
-                    name: '',
-                    idCard: ''
+                    memberName: '',
+                    idCard: '',
+                    workTypeName: '',
+                    worktypeId: '',
+                    duName: '',
+                    duId: '',
+                    fee: ''
                 })
             },
             dele(index) {
@@ -67,28 +84,39 @@
             },
             confirm() {
                 // 鍒ゆ柇鍒楄〃鍚︽槸鏈夌┖鍊�
-                for (let i = 0; this.list.length; i++) {
-                    if (!this.list[i].name || !this.list[i].idcardNo) {
-                        this.$message.warning('璇峰厛瀹屽杽淇℃伅鍚庡啀鎻愪氦')
-                        return
-                    }
-                }
+                // for (let i = 0; this.list.length; i++) {
+                //     if (!this.list[i].memberName || !this.list[i].idCard) {
+                //         this.$message.warning('璇峰厛瀹屽杽淇℃伅鍚庡啀鎻愪氦')
+                //         return
+                //     }
+                // }
                 // 鍒ゆ柇鏂板綍鍏ユ暟鎹韩浠借瘉鏄惁鏈夐噸澶�
-                let idcardList = this.list.map(item => item.idcardNo)
+                let idcardList = this.list.map(item => item.idCard)
                 if (this.hasDuplicates(idcardList)) {
                     this.$message.warning('韬唤璇佹湁閲嶅')
                     return
+                }
+                // 鍒ゆ柇韬唤璇佹槸鍚︽湁鏁�
+                for (let i = 0; i < this.list.length; i++) {
+                    const regExp = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
+                    if (!regExp.test(this.list[i].idCard)) {
+                        this.$message.warning(`绗�${i + 1}椤瑰憳宸ヨ韩浠借瘉涓嶅悎娉昤)
+                        return
+                    }
                 }
                 // 鍒ゆ柇璇︽儏鍒楄〃鏁版嵁韬唤璇佹槸鍚︽湁閲嶅
                 let next = true
                 this.list.forEach(item => {
                     this.arr.forEach(child => {
-                        if (item.idcardNo === child.idcardNo) {
+                        if (item.idCard === child.idCard) {
                             next = false
                         }
                     })
                 })
                 if (next) {
+                    this.list.forEach(item => {
+                        item.fee = this.price
+                    })
                     this.$emit('result', this.list)
                     this.visible = false
                 } else {
diff --git a/company/src/components/enterprise/confirmJobType.vue b/company/src/components/enterprise/confirmJobType.vue
new file mode 100644
index 0000000..b371ad2
--- /dev/null
+++ b/company/src/components/enterprise/confirmJobType.vue
@@ -0,0 +1,112 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="30%"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <el-form class="demo-form-inline">
+            <el-form-item label="娲鹃仯鍗曚綅" required>
+                <el-select v-model="dw" @change="selectChange" placeholder="璇烽�夋嫨">
+                    <el-option
+                        v-for="item in dispatching"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鎵�灞炲伐绉�" required>
+                <el-select v-model="gz" placeholder="璇烽�夋嫨">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+    import BaseOpera from '@/components/base/BaseOpera'
+    import GlobalWindow from '@/components/common/GlobalWindow'
+    import { findListByDTO } from '@/api/business/dispatchUnit'
+    import { findListByDTO as worktype } from '@/api/business/worktype'
+    export default {
+        name: 'confirmJobType',
+        extends: BaseOpera,
+        components: { GlobalWindow },
+        data () {
+            return {
+                form: {
+                    solutionId: ''
+                },
+                data: [],
+                dw: [],
+                gz: [],
+                dispatching: [],
+                options: []
+            }
+        },
+        methods: {
+            open (title, arr) {
+                this.title = title
+                this.form.solutionId = arr.solutionId
+                this.data = arr.seleData
+                this.visible = true
+                this.getFindListByDTO()
+            },
+            getFindListByDTO () {
+                findListByDTO({
+                    solutionId: this.form.solutionId,
+                    dataType: 2
+                }).then(res => {
+                    this.dispatching = res
+                })
+            },
+            selectChange(id) {
+                this.gz = ''
+                let duSolutionId = ''
+                this.dispatching.forEach(item => {
+                    if (item.id === id) {
+                        duSolutionId = item.duSolutionId
+                    }
+                })
+                worktype({ id: duSolutionId, queryType: 1 })
+                    .then(res => {
+                        this.options = res
+                    })
+            },
+            confirm() {
+                let obj = {
+                    workTypeName: '',
+                    worktypeId: '',
+                    duName: '',
+                    duId: ''
+                }
+                this.dispatching.forEach(item => {
+                    if (item.id === this.dw) {
+                        obj.duName = item.name
+                        obj.duId = item.id
+                    }
+                })
+                this.options.forEach(item => {
+                    if (item.id === this.gz) {
+                        obj.workTypeName = item.name
+                        obj.worktypeId = item.id
+                    }
+                })
+                this.$emit('result', obj)
+                this.visible = false
+            }
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git a/company/src/components/enterprise/importEmployees.vue b/company/src/components/enterprise/importEmployees.vue
index ccba938..dc04b87 100644
--- a/company/src/components/enterprise/importEmployees.vue
+++ b/company/src/components/enterprise/importEmployees.vue
@@ -1,43 +1,86 @@
 <template>
     <GlobalWindow
         :title="title"
-        width="100%"
+        width="30%"
         :visible.sync="visible"
         :confirm-working="isWorking"
         @confirm="confirm"
     >
         <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">鐐瑰嚮涓婁紶</el-button>
+                    <el-button type="text">鍚嶅崟妯℃澘.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" style="position: fixed; left: 0; top: -50px;" accept=".xlsx" ref="fileExcel" @change="result" />
     </GlobalWindow>
 </template>
 
 <script>
     import BaseOpera from '@/components/base/BaseOpera'
     import GlobalWindow from '@/components/common/GlobalWindow'
+    import { importExcel } from '@/api/business/member'
     export default {
         name: 'importEmployees',
         extends: BaseOpera,
         components: { GlobalWindow },
         data () {
             return {
-                list: []
+                list: [],
+                price: 0,
+                addList: [],
+                fileName: ''
             }
         },
         methods: {
-            open (title, arr) {
+            open (title, obj) {
                 this.title = title
+                this.addList = []
+                this.fileName = ''
                 this.visible = true
+                this.list = obj.arr
+                this.price = obj.price
             },
             clickRef () {
                 this.$refs.fileExcel.click()
             },
             result (e) {
-                console.log(e)
+                const data = new FormData()
+                data.append('file', e.target.files[0])
+                importExcel(data)
+                    .then(res => {
+                        res.forEach(item => {
+                            item.memberName = item.name
+                            item.fee = ''
+                        })
+                        this.addList = res
+                        this.fileName = e.target.files[0].name
+                    })
+                    .catch(err => {
+                        this.$message.error(err)
+                        this.fileName = ''
+                    })
+                    .finally(() => {
+                        this.$refs.fileExcel.value = null
+                    })
+            },
+            confirm () {
+                for (let i = 0; i < this.addList.length; i++) {
+                    for (let a = 0; a < this.list.length; a++) {
+                        if (this.addList[i].name === this.list[a].memberName || this.addList[i].idCard === this.list[a].idcardNo) {
+                            this.$message.warning(`[${this.addList[i].name}]鍛樺伐閲嶅`)
+                            return
+                        }
+                    }
+                }
+                this.addList.forEach(item => {
+                    item.fee = this.price || ''
+                })
+                this.$emit('result', this.addList)
+                this.visible = false
             }
         }
     }
diff --git a/company/src/components/enterprise/selectEmployees.vue b/company/src/components/enterprise/selectEmployees.vue
index c25116c..d2cb3da 100644
--- a/company/src/components/enterprise/selectEmployees.vue
+++ b/company/src/components/enterprise/selectEmployees.vue
@@ -10,26 +10,31 @@
         <el-table
             :data="list"
             border
+            @selection-change="handleSelectionChange"
             style="width: 100%">
+            <el-table-column
+                type="selection"
+                width="55">
+            </el-table-column>
             <el-table-column label="搴忓彿" width="80px">
                 <template slot-scope="scope">
                     <span>{{scope.$index + 1}}</span>
                 </template>
             </el-table-column>
             <el-table-column
-                prop="date"
+                prop="name"
                 label="濮撳悕">
             </el-table-column>
             <el-table-column
-                prop="name"
+                prop="idcardNo"
                 label="韬唤璇佸彿">
             </el-table-column>
             <el-table-column
-                prop="address"
+                prop="duName"
                 label="娲鹃仯鍗曚綅">
             </el-table-column>
             <el-table-column
-                prop="address"
+                prop="workTypeName"
                 label="鎵�灞炲伐绉�">
             </el-table-column>
         </el-table>
@@ -47,7 +52,10 @@
         data () {
             return {
                 val: '',
-                list: []
+                list: [],
+                price: '',
+                seleData: [],
+                oldList: []
             }
         },
         created () {
@@ -57,16 +65,49 @@
             })
         },
         methods: {
-            open (title) {
+            open (title, obj) {
+                this.price = obj.price
+                this.oldList = obj.arr
                 this.title = title
                 this.visible = true
                 this.getList()
+            },
+            confirm() {
+                if (this.seleData.length === 0) {
+                    this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
+                    return
+                }
+                for (let i = 0; i < this.seleData.length; i++) {
+                    for (let a = 0; a < this.oldList.length; a++) {
+                        if (this.seleData[i].name === this.oldList[a].memberName || this.seleData[i].idCard === this.oldList[a].idcardNo) {
+                            this.$message.warning(`[${this.seleData[i].name}]鍛樺伐閲嶅`)
+                            return
+                        }
+                    }
+                }
+                this.seleData.forEach(item => {
+                    item.idCard = item.idcardNo
+                    item.memberName = item.name
+                    item.workTypeName = ''
+                    item.worktypeId = ''
+                    item.duId = ''
+                    item.duName = ''
+                    item.fee = this.price
+                })
+                this.$emit('result', this.seleData)
+                this.visible = false
+            },
+            handleSelectionChange (e) {
+                this.seleData = e
             },
             getList() {
                 findListByDTO({
                     name: this.val
                 }).then(res => {
-                    this.list = []
+                    res.forEach(item => {
+                        item.fee = ''
+                    })
+                    this.list = res
                 })
             }
         }
diff --git a/company/src/utils/util.js b/company/src/utils/util.js
index bc975bc..2677347 100644
--- a/company/src/utils/util.js
+++ b/company/src/utils/util.js
@@ -18,3 +18,52 @@
   }
   return data
 }
+
+// 鏍规嵁韬唤璇佽幏鍙栧勾榫�
+export function GetAge (identityCard) {
+  let len = (identityCard + "").length;
+  let strBirthday = "";
+  if (len === 18) {
+    //澶勭悊18浣嶇殑韬唤璇佸彿鐮佷粠鍙风爜涓緱鍒扮敓鏃ュ拰鎬у埆浠g爜
+    strBirthday =
+        identityCard.substr(6, 4) +
+        "/" +
+        identityCard.substr(10, 2) +
+        "/" +
+        identityCard.substr(12, 2);
+  }
+  if (len === 15) {
+    let birthdayValue = "";
+    birthdayValue = identityCard.charAt(6) + identityCard.charAt(7);
+    if (parseInt(birthdayValue) < 10) {
+      strBirthday =
+          "20" +
+          identityCard.substr(6, 2) +
+          "/" +
+          identityCard.substr(8, 2) +
+          "/" +
+          identityCard.substr(10, 2);
+    } else {
+      strBirthday =
+          "19" +
+          identityCard.substr(6, 2) +
+          "/" +
+          identityCard.substr(8, 2) +
+          "/" +
+          identityCard.substr(10, 2);
+    }
+  }
+  let birthDate = new Date(strBirthday);
+  let nowDateTime = new Date();
+  let age = nowDateTime.getFullYear() - birthDate.getFullYear();
+  //鍐嶈�冭檻鏈堛�佸ぉ鐨勫洜绱�;.getMonth()鑾峰彇鐨勬槸浠�0寮�濮嬬殑锛岃繖閲岃繘琛屾瘮杈冿紝涓嶉渶瑕佸姞1
+  if (
+      nowDateTime.getMonth() < birthDate.getMonth() ||
+      (nowDateTime.getMonth() == birthDate.getMonth() &&
+          nowDateTime.getDate() < birthDate.getDate())
+  ) {
+    age--;
+  }
+  return age;
+}
+
diff --git a/company/src/views/enterprise/insuranceApply.vue b/company/src/views/enterprise/insuranceApply.vue
index 8fd1d43..0561cbf 100644
--- a/company/src/views/enterprise/insuranceApply.vue
+++ b/company/src/views/enterprise/insuranceApply.vue
@@ -3,7 +3,7 @@
         <!-- 鎼滅储琛ㄥ崟 -->
         <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
             <el-form-item label="鐘舵��" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
+                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @change="search">
                     <el-option label="寰呭鎵�" value="0"></el-option>
                     <el-option label="寰呯缃�" value="2"></el-option>
                     <el-option label="宸茬缃�" value="3"></el-option>
@@ -51,14 +51,21 @@
                         <span>{{scope.$index + 1}}</span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="status" label="鐘舵��"></el-table-column>
+                <el-table-column prop="status" label="鐘舵��">
+                    <template slot-scope="{row}">
+                        <span v-if="row.status === 0">寰呭鎵�</span>
+                        <span v-if="row.status === 2">寰呯缃�</span>
+                        <span v-if="row.status === 3">宸茬缃�</span>
+                        <span v-if="row.status === 4">宸叉挙閿�</span>
+                    </template>
+                </el-table-column>
                 <el-table-column prop="solutionsName" label="淇濋櫓鏂规"></el-table-column>
                 <el-table-column prop="insureNum" label="鎶曚繚浜烘暟"></el-table-column>
                 <el-table-column prop="serviceDays" label="鎶曚繚鏃堕暱锛堝ぉ锛�"></el-table-column>
                 <el-table-column prop="fee" label="鎬昏垂鐢紙鍏冿級"></el-table-column>
-                <el-table-column prop="createTimeS" label="鎻愪氦鏃ユ湡"></el-table-column>
-                <el-table-column prop="endTimeE" label="鎶曚繚鐢熸晥鏃ユ湡"></el-table-column>
-                <el-table-column prop="endTimeS" label="鎶曚繚澶辨晥鏃ユ湡"></el-table-column>
+                <el-table-column prop="checkDate" label="鎻愪氦鏃ユ湡"></el-table-column>
+                <el-table-column prop="startTime" label="鎶曚繚鐢熸晥鏃ユ湡"></el-table-column>
+                <el-table-column prop="endTime" label="鎶曚繚澶辨晥鏃ユ湡"></el-table-column>
                 <el-table-column
                     v-if="containPermissions(['business:insuranceapply:update', 'business:insuranceapply:delete'])"
                     label="鎿嶄綔"

--
Gitblit v1.9.3