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