From cfdafcf22dbd868c9876d37efbd92b97ba014bef Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 26 三月 2025 09:17:01 +0800
Subject: [PATCH] 优化
---
company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue | 647 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 647 insertions(+), 0 deletions(-)
diff --git a/company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue b/company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue
new file mode 100644
index 0000000..15fb687
--- /dev/null
+++ b/company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue
@@ -0,0 +1,647 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ width="100%"
+ text="鎶曚繚鐢宠"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ @confirm="confirm"
+ >
+ <div class="list">
+ <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" @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
+ @change="getTimeVal"
+ v-model="form.applyStartTime"
+ type="date"
+ class="date_picker"
+ :clearable="false"
+ :disabled="!form.solutionId"
+ :picker-options="pickerOptions"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ format="yyyy-MM-dd HH:mm:ss"
+ 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"
+ class="date_picker"
+ :picker-options="pickerOptions"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ format="yyyy-MM-dd HH:mm:ss"
+ placeholder="閫夋嫨鏃ユ湡">
+ </el-date-picker>
+ </el-form-item>
+<!-- <el-form-item label="鎶曚繚骞撮緞" v-if="item && item.id !=null">
+ <span>{{item.minAge}} 鑷� {{item.maxAge}}</span>
+ </el-form-item>
+ <el-form-item label="璐圭敤" v-if="item && item.id !=null">
+ <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="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">
+ <div style="display: inline-block;margin-right: 30px;font-size: 14px" v-if="item && item.id !=null">
+ <span>鎶曚繚骞撮緞锛�</span>
+ <span>{{item.minAge}} 鑷� {{item.maxAge}}鍛ㄥ瞾</span>
+ <span style="margin-left: 20px">璐圭敤锛�</span>
+ <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>
+ </div>
+ <div style="display: inline-block;margin-right: 30px;font-size: 14px"><span>鍚堣璐圭敤锛�</span>
+ <span style="font-weight: bold;color: red">{{sumFee}}</span>鍏�
+ </div>
+ <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>
+ </div>
+ </div>
+<!-- show-summary
+ :summary-method="getSummaries"-->
+ <u-table
+ :data="tableData"
+ border
+ use-virtual
+ :row-height="30"
+ :height="680"
+ ref="multipleTable"
+ @selection-change="handleSelectionChange"
+ style="width: 100%;margin-bottom: 15px;">
+ <u-table-column
+ type="selection"
+ width="55">
+ </u-table-column>
+ <u-table-column label="搴忓彿" width="80px">
+ <template slot-scope="scope">
+ <span>{{scope.$index + 1}}</span>
+ </template>
+ </u-table-column>
+ <u-table-column
+ prop="memberName"
+ label="濮撳悕">
+ </u-table-column>
+ <u-table-column
+ prop="idCard"
+ label="韬唤璇佸彿">
+ </u-table-column>
+ <u-table-column
+ label="骞撮緞">
+ <template slot-scope="{row}">
+ <template v-if="item">
+ <span style="color: red;" v-if="row.idCard && (getAgeByIdCard(row.idCard) < item.minAge || getAgeByIdCard(row.idCard) > item.maxAge)">{{ getAgeByIdCard(row.idCard) }}</span>
+ <span v-else>{{ getAgeByIdCard(row.idCard) }}</span>
+ </template>
+ </template>
+ </u-table-column>
+ <u-table-column
+ prop="duName"
+ label="娲鹃仯鍗曚綅">
+ </u-table-column>
+ <u-table-column
+ prop="workTypeName"
+ label="鎵�灞炲伐绉�">
+ </u-table-column>
+ <u-table-column
+ prop="fee"
+ label="璐圭敤">
+ <template slot-scope="{row}">
+ {{row.fee}}
+ </template>
+ </u-table-column>
+ <u-table-column
+ prop="remark"
+ align="center"
+ label="澶囨敞">
+ <template slot-scope="{row}">
+ <el-input v-model="row.remark" placeholder="璇疯緭鍏�"></el-input>
+ </template>
+ </u-table-column>
+ <u-table-column
+ label="鎿嶄綔">
+ <template slot-scope="scope">
+ <el-button type="text" style="color: red;" @click="dele(scope.$index)">鍒犻櫎</el-button>
+ </template>
+ </u-table-column>
+ </u-table>
+ <div class="info" v-if="item">
+ <span v-if="item.specialAgreement" v-html="item.specialAgreement"></span>
+ <span v-if="item.specialInfo" v-html="item.specialInfo"> </span>
+ <span v-if="item.ortherInfo" v-html="item.ortherInfo"></span>
+ </div>
+ <!-- 閫夋嫨鍛樺伐 -->
+ <selectEmployees ref="selectEmployees" @result="getValue" />
+ <!-- 娣诲姞鍛樺伐 -->
+ <addEmployee ref="addEmployee" @result="getValue" />
+ <!-- 瀵煎叆鍚嶅崟 -->
+ <importEmployees ref="importEmployees" @result="getValue" />
+ <!-- 纭宸ョ -->
+ <confirmJobType ref="confirmJobType" @result="getUser" />
+ <!-- 鏌ョ湅璇﹀崟 -->
+ <detailsPolicyholder ref="detailsPolicyholder" @success="successEvent" />
+<!-- <!– 鐩翠繚鎶曚繚璇︽儏 –>
+ <OperaInsuranceApplyDetails ref="OperaInsuranceApplyDetails" />
+ <!– 濮旀墭鎶曚繚璇︽儏 –>
+ <OperaWtbApplyShopWindow ref="OperaWtbApplyShopWindow" />-->
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import selectEmployees from '@/components/enterprise/selectEmployees'
+import addEmployee from '@/components/enterprise/addEmployeeWithDu'
+import importEmployees from '@/components/enterprise/importEmployees'
+import confirmJobType from '@/components/enterprise/confirmJobType'
+import detailsPolicyholder from '@/components/business/detailsPolicyholder'
+import { all, getNewVersion } from '@/api/business/solutions'
+import { mapState } from 'vuex'
+import { create, getCountCyclePriceVO, getDetail, findList } from '@/api/business/insuranceApply'
+import { UTable, UTableColumn } from 'umy-ui'
+export default {
+ name: 'OperaInsuranceApplyAddWindowNew',
+ extends: BaseOpera,
+ components: {
+ GlobalWindow,
+ selectEmployees,
+ addEmployee,
+ importEmployees,
+ confirmJobType,
+ detailsPolicyholder,
+ UTable,
+ UTableColumn
+ },
+ data () {
+ return {
+ sumFee: 0,
+ form: {
+ id: null,
+ ID: null,
+ solutionId: '',
+ applyStartTime: '',
+ applyEndTime: ''
+ },
+ solutionName: '',
+ type: '',
+ pickerOptions: {}, // 瀛樻斁picker options鐨勫彉閲�
+ price: '',
+ company: [],
+ seleData: [],
+ item: null,
+ // 楠岃瘉瑙勫垯
+ rules: {
+ solutionId: [
+ { required: true, message: '璇烽�夋嫨淇濋櫓鏂规' }
+ ],
+ applyStartTime: [
+ { required: true, message: '璇烽�夋嫨鏈熸湜淇濋櫓鐢熸晥璧锋湡' }
+ ]
+ },
+ tableData: []
+ }
+ },
+ created () {
+ this.config({
+ api: '/business/insuranceApply',
+ 'field.id': 'id'
+ })
+ },
+ computed: {
+ ...mapState(['userInfo'])
+ },
+ watch: {
+ // 鐩戝惉tableData鐨勫彉鍖�
+ tableData: {
+ deep: true,
+ handler (newVal, oldVal) {
+ // 鏁版嵁鍙樺寲鏃剁殑澶勭悊閫昏緫
+ this.getSummaries2()
+ console.log(this.tableData.length)
+ }
+ }
+ },
+ methods: {
+ successEvent () {
+ const arr = JSON.parse(JSON.stringify(this.tableData))
+ arr.forEach(item => {
+ item.idcardNo = item.idCard
+ })
+ this.isWorking = true
+ // if (!this.form.id) {
+ create({
+ applyDetailList: arr,
+ applyStartTime: this.form.applyStartTime,
+ applyEndTime: this.form.applyEndTime,
+ solutionId: this.form.solutionId
+ }).then(res => {
+ console.log(res)
+ this.$emit('success', 1, { id: res,godetail:true,type:this.item.type})
+ this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+ this.visible = false
+ // this.$emit('success','濮旀墭鎶曚繚璇︽儏', { id: res })
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ // } else {
+ // updateData({
+ // id: this.form.id,
+ // 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
+ // })
+ // }
+ },
+ open (title, target) {
+ this.title = title
+ this.tableData = []
+ this.form.id = null
+ this.item = {}
+ if (target.type) {
+ this.type = target.type
+ }
+ this.form.solutionId = ''
+ this.form.applyStartTime = ''
+ this.form.applyEndTime = ''
+ if (target && target.id) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form.id = target.id
+ this.getDetails()
+ })
+ } else {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ }
+ this.getCompany()
+ this.visible = true
+ this.updatePickerOptions()
+ },
+ // 鑾峰彇鎶曚繚璇︽儏
+ getDetails () {
+ findList({ applyId: this.form.id })
+ .then(res => {
+ res.forEach(item => {
+ console.log(item)
+ item.idCard = item.idcardNo
+ item.fee = ''
+ if (this.type === 1) {
+ // item.duName = ''
+ // item.duId = ''
+ // item.worktypeId = ''
+ // item.workTypeName = ''
+ }
+ })
+ this.tableData = res
+ })
+ getDetail(this.form.id)
+ .then(res => {
+ // this.form.solutionId = res.solutionId
+ this.changeSolution1(res.solutionId)
+ })
+ },
+ getSummaries ({ columns, data }) {
+ const sums = []
+ // this.currentData = data; //璁板綍褰撳墠椤垫暟鎹�;
+ columns.forEach((column, index) => {
+ if (index == 0) {
+ sums[index] = '鎬讳环'
+ } else if (index == 7) {
+ // if (this.item || this.item.type == 1) {
+ // sums[index] = '-'
+ // } else {
+ let total = 0
+ this.tableData.forEach(item => {
+ total += item.fee
+ })
+ sums[index] = total.toFixed(2)
+ // }
+ } else {
+ sums[index] = ''
+ }
+ })
+ console.log(sums)
+ return sums
+ },
+ getSummaries2 () {
+ this.sumFee = 0
+ if (this.tableData && this.tableData.length) {
+ this.tableData.forEach((column, index) => {
+ this.sumFee = parseFloat(this.sumFee) + parseFloat(column.fee)
+ })
+ this.sumFee = (this.sumFee || 0).toFixed(2)
+ }
+ },
+ deleItem () {
+ if (this.seleData.length === 0) {
+ this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
+ return
+ }
+ this.seleData.forEach(item => {
+ this.tableData.forEach((row, index) => {
+ if (item === row.idCard) {
+ this.tableData.splice(index, 1)
+ }
+ })
+ })
+ // this.getSummaries2()
+ },
+ 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)
+ console.log(this.tableData[i].duId)
+ if (!this.tableData[i].worktypeId || !this.tableData[i].duId) {
+ this.$message.warning('璇峰畬鍠勬淳閬e崟浣嶅拰宸ョ淇℃伅')
+ return
+ }
+ }
+
+ let price = 0
+ // if (this.item && this.item.type != 1) {
+ this.tableData.forEach(item => {
+ price = price + item.fee
+ })
+ // }
+ this.$refs.detailsPolicyholder.open('鎶曚繚璇︽儏鍗�', {
+ companyName: this.userInfo.company.name,
+ solutionName: this.item.name,
+ solutionType: this.item.type,
+ applyStartTime: this.form.applyStartTime,
+ applyEndTime: this.form.applyEndTime,
+ insureNum: this.tableData.length,
+ totalPrice: price,
+ detailList: this.tableData
+ })
+ }
+ })
+ },
+ // 鑾峰彇缁撴潫鏃堕棿鍜屼环鏍�
+ getTimeVal (time) {
+ getCountCyclePriceVO({
+ solutionsId: this.form.solutionId,
+ startDate: time
+ }).then(res => {
+ this.price = res.cyclePrice
+ this.form.applyEndTime = res.endDate
+ this.tableData.forEach(item => {
+ item.fee = res.cyclePrice
+ })
+ this.$forceUpdate()
+ })
+ },
+ getDate (n) { // n涓哄灏戝ぉ锛�-浠h〃寰�鍓嶏紝+浠h〃寰�鍚�
+ const date1 = new Date()
+ const time1 = date1.getFullYear() + '-' + (date1.getMonth() + 1) + '-' + date1.getDate()// time1琛ㄧず褰撳墠鏃堕棿
+ const date2 = new Date(date1)
+ date2.setDate(date1.getDate() + n)
+ const 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 - 1)).getTime()
+ }
+ }
+ }
+ },
+ seleUser () {
+ if (!this.form.solutionId) {
+ this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+ return
+ }
+ this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.tableData, price: this.price, type: 1 })
+ },
+ addUser () {
+ if (!this.form.solutionId) {
+ this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+ return
+ }
+ this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.tableData, price: this.price, solutionId: this.form.solutionId })
+ },
+ uploadUser () {
+ if (!this.form.solutionId) {
+ this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+ return
+ }
+ this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.tableData, solutionId: this.form.solutionId, type: 1, price: this.price })
+ },
+ // 鍒囨崲鏂规
+ changeSolution (e) {
+ this.sumFee = 0
+ this.form.applyEndTime = ''
+ this.form.applyStartTime = ''
+ if (!this.form.id) {
+ this.tableData = []
+ } else {
+ this.price = 0
+ this.tableData.forEach(item => {
+ item.fee = 0
+ item.duName = ''
+ item.duId = ''
+ item.workTypeName = ''
+ item.workTypeId = ''
+ })
+ }
+ this.company.forEach(item => {
+ if (item.id === e) {
+ this.price = item.price
+ this.item = item
+ // if (this.item && this.item.type == 1) {
+ // this.item.fee = 0
+ // }
+ this.updatePickerOptions()
+ }
+ })
+ this.tableData.forEach(item => {
+ item.fee = this.price
+ })
+ },
+ // 鍒囨崲鏂规
+ changeSolution1 (e) {
+ getNewVersion(e)
+ .then(res => {
+ this.form.solutionId = res.id
+ this.company.forEach(item => {
+ if (item.id === res.id) {
+ this.price = item.price
+ this.item = item
+ this.updatePickerOptions()
+ }
+ })
+ })
+ this.tableData.forEach(item => {
+ // if (this.item.type != 0) {
+ item.fee = this.price
+ // }
+ })
+ },
+ dele (index) {
+ this.tableData.splice(index, 1)
+ // this.getSummaries2()
+ },
+ getUser (obj) {
+ this.seleData.forEach(id => {
+ this.tableData.forEach(row => {
+ if (id === row.idCard) {
+ 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.idCard)
+ },
+ getValue (list) {
+ this.tableData.push(...list)
+ this.getSummaries2()
+ }
+ }
+}
+</script>
+
+<style>
+.el-picker-panel__footer .el-button--text.el-picker-panel__link-btn {
+ display: none;
+}
+</style>
+
+<style lang="scss" scoped>
+.list {
+ width: 100%;
+}
+.btns {
+ width: 100%;
+ margin-bottom: 15px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .btns_item {
+ display: flex;
+ align-items: center;
+ }
+}
+.submit {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 15px;
+}
+.info {
+ width: 100%;
+ font-size: 14px;
+ color: black;
+ span{
+ display: block;
+ }
+}
+</style>
--
Gitblit v1.9.3