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/components/enterprise/OperaInsuranceApplyWindow.vue | 329 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 298 insertions(+), 31 deletions(-) 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> -- Gitblit v1.9.3