MrShi
2024-03-05 84b74d64ecc519882b89278f1011f7ac7525d190
company/src/components/enterprise/OperaInsuranceApplyWindow.vue
@@ -24,13 +24,13 @@
                        <el-date-picker
                            @change="getTimeVal"
                            v-model="form.applyStartTime"
                            type="datetime"
                            type="date"
                            class="date_picker"
                            default-time="00:00:00"
                            :clearable="false"
                            :disabled="!form.solutionId"
                            :picker-options="pickerOptions"
                            value-format="yyyy-MM-dd hh:mm:ss"
                            format="yyyy-MM-dd hh:mm:ss"
                            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>
@@ -40,10 +40,11 @@
                    <el-date-picker
                        disabled
                        v-model="form.applyEndTime"
                        type="datetime"
                        default-time="00:00:00"
                        value-format="yyyy-MM-dd hh:mm:ss"
                        format="yyyy-MM-dd hh:mm:ss"
                        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>
@@ -99,7 +100,10 @@
            <el-table-column
                label="年龄">
                <template slot-scope="{row}">
                    <span v-if="row.idCard">{{ getAgeByIdCard(row.idCard) }}</span>
                    <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>
            </el-table-column>
            <el-table-column
@@ -134,6 +138,8 @@
        <importEmployees ref="importEmployees" @result="getValue" />
        <!--    确认工种    -->
        <confirmJobType ref="confirmJobType" @result="getUser" />
        <!--    查看详单    -->
        <detailsPolicyholder ref="detailsPolicyholder" @success="successEvent" />
    </GlobalWindow>
</template>
@@ -144,12 +150,14 @@
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 detailsPolicyholder from '@/components/business/detailsPolicyholder'
import { all, getNewVersion } from '@/api/business/solutions'
import { mapState } from 'vuex'
import { create, getCountCyclePriceVO, getDetail, findList, updateData } from '@/api/business/insuranceApply'
export default {
  name: 'OperaInsuranceApplyWindow',
  name: 'OperaInsuranceApplyWindow2',
  extends: BaseOpera,
  components: { GlobalWindow, selectEmployees, addEmployee, importEmployees, confirmJobType },
  components: { GlobalWindow, selectEmployees, addEmployee, importEmployees, confirmJobType, detailsPolicyholder },
  data () {
    return {
      form: {
@@ -159,6 +167,8 @@
          applyStartTime: '',
          applyEndTime: ''
      },
      solutionName: '',
      type: '',
      pickerOptions: {}, // 存放picker options的变量
      price: '',
      company: [],
@@ -182,12 +192,60 @@
          'field.id': 'id'
      })
  },
    computed: {
      ...mapState(['userInfo'])
    },
    methods: {
      successEvent() {
          let 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(() => {
                  this.visible = false
                  this.$tip.apiSuccess('操作成功')
                  this.$emit('success')
              })
                  .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 = null
          if (target.type) {
              this.type = target.type
          }
          this.form.solutionId = ''
          this.form.applyStartTime = ''
          this.form.applyEndTime = ''
@@ -212,14 +270,21 @@
            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.form.solutionId = res.solutionId
                    this.changeSolution1(res.solutionId)
                })
        },
@@ -248,7 +313,7 @@
            }
            this.seleData.forEach(item => {
                this.tableData.forEach((row, index) => {
                    if (item === row.name) {
                    if (item === row.idCard) {
                        this.tableData.splice(index, 1)
                    }
                })
@@ -262,52 +327,27 @@
                        return
                    }
                    for (let i = 0; i < this.tableData.length; i++) {
                        console.log(this.tableData[i].worktypeId, this.tableData[i].duId)
                        console.log(this.tableData[i].worktypeId)
                        console.log(this.tableData[i].duId)
                        if (!this.tableData[i].worktypeId || !this.tableData[i].duId) {
                            this.$message.warning('请完善派遣单位和工种信息')
                            return
                        }
                    }
                    let arr = JSON.parse(JSON.stringify(this.tableData))
                    arr.forEach(item => {
                        item.idcardNo = item.idCard
                    let price = 0
                    this.tableData.forEach(item => {
                        price = price + item.fee
                    })
                    this.isWorking = true
                    if (!this.form.id) {
                        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
                            })
                    } 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
                        })
                    }
                    this.$refs.detailsPolicyholder.open('投保详情单', {
                        companyName: this.userInfo.company.name,
                        solutionName: this.item.name,
                        applyStartTime: this.form.applyStartTime,
                        applyEndTime: this.form.applyEndTime,
                        insureNum: this.tableData.length,
                        totalPrice: price,
                        detailList: this.tableData
                    })
                }
            })
@@ -319,11 +359,10 @@
                startDate: time
            }).then(res => {
                this.price = res.cyclePrice
                this.form.applyEndTime = res.endDate.substring(0, 10)
                this.form.applyEndTime = res.endDate
                this.tableData.forEach(item => {
                    item.fee = res.cyclePrice
                })
                console.log(this.tableData)
                this.$forceUpdate()
            })
        },
@@ -348,7 +387,7 @@
                        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();
                        return time.getTime() <= new Date(that.getDate(that.item.validTypeNum - 1)).getTime();
                    }
                }
            };
@@ -358,7 +397,7 @@
                this.$message.warning('请先选择保险方案')
                return
            }
            this.$refs.selectEmployees.open('选取员工', { arr: this.tableData, price: this.price })
            this.$refs.selectEmployees.open('选取员工', { arr: this.tableData, price: this.price, type: 1 })
        },
      addUser() {
          if (!this.form.solutionId) {
@@ -372,11 +411,24 @@
              this.$message.warning('请先选择保险方案')
              return
          }
          this.$refs.importEmployees.open('上传名单', { arr: this.tableData, price: this.price })
          this.$refs.importEmployees.open('上传名单', { arr: this.tableData, solutionId: this.form.solutionId, type: 1, price: this.price })
      },
      // 切换方案
      changeSolution(e) {
          this.tableData = []
          if (!this.form.id) {
              this.tableData = []
          } else {
              this.price = ''
              this.form.applyEndTime = ''
              this.form.applyStartTime = ''
              this.tableData.forEach(item => {
                  item.fee = ''
                  item.duName = ''
                  item.duId = ''
                  item.workTypeName = ''
                  item.workTypeId = ''
              })
          }
          this.company.forEach(item => {
              if (item.id === e) {
                  // this.price = item.price
@@ -390,13 +442,17 @@
      },
        // 切换方案
        changeSolution1(e) {
            this.company.forEach(item => {
                if (item.id === e) {
                    // this.price = item.price
                    this.item = item
                    this.updatePickerOptions()
                }
            })
            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 => {
                item.fee = this.price
            })
@@ -405,9 +461,9 @@
          this.tableData.splice(index, 1)
      },
      getUser(obj) {
          this.seleData.forEach(item => {
          this.seleData.forEach(id => {
              this.tableData.forEach(row => {
                   if (item === row.name) {
                   if (id === row.idCard) {
                       row.workTypeName = obj.workTypeName
                       row.worktypeId = obj.worktypeId
                       row.duName = obj.duName
@@ -462,7 +518,7 @@
          return sexAndAge.age
      },
      handleSelectionChange (e) {
          this.seleData = e.map(item => item.name)
          this.seleData = e.map(item => item.idCard)
      },
      getValue(list) {
          this.tableData.push(...list)