From 31a2a1e82c6d1a80b62ef65bcfba46e084e372aa Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 31 一月 2024 09:37:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
 server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java    |  179 ++++-
 company/src/components/enterprise/additionSubtractionApplication.vue                         |  565 +++++++++++++++++++
 company/src/components/enterprise/factoryChange.vue                                          |  477 ++++++++++++++++
 company/src/api/business/applyChange.js                                                      |   10 
 company/src/components/enterprise/OperaInsuranceApplyWindow.vue                              |    7 
 server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java             |    4 
 company/src/components/business/OperaInsuranceApplyWindow.vue                                |   26 
 company/src/components/enterprise/selectEmployees.vue                                        |   26 
 company/src/views/enterprise/myPolicy.vue                                                    |  186 ++++++
 server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java           |    3 
 company/src/views/enterprise/dispatchUnit.vue                                                |   12 
 server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java              |    8 
 server/service/src/main/java/com/doumee/dao/business/dto/ApplyChangeCyclePriceDTO.java       |   25 
 server/service/src/main/java/com/doumee/service/business/impl/WorktypeServiceImpl.java       |    1 
 server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java         |   25 
 server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java                  |    5 
 server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java |   17 
 server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java   |    3 
 company/src/components/enterprise/dispatchUnitDetails.vue                                    |   10 
 server/service/src/main/java/com/doumee/dao/business/dto/MemberQueryDTO.java                 |    5 
 company/src/views/enterprise/add_subtract.vue                                                |    5 
 company/src/components/enterprise/selectEmployeesCopy.vue                                    |  140 ++++
 22 files changed, 1,671 insertions(+), 68 deletions(-)
diff --git a/company/src/api/business/applyChange.js b/company/src/api/business/applyChange.js
index f1decd8..2b43541 100644
--- a/company/src/api/business/applyChange.js
+++ b/company/src/api/business/applyChange.js
@@ -11,3 +11,13 @@
 export function updateById (data) {
     return request.post('/business/applyChange/updateById', data)
 }
+
+// 鏂板缓
+export function create (data) {
+    return request.post('/business/applyChange/create', data)
+}
+
+// 鏂板缓
+export function getChangeCountCyclePriceVO (data) {
+    return request.post('/business/applyChange/getChangeCountCyclePriceVO', data)
+}
diff --git a/company/src/components/business/OperaInsuranceApplyWindow.vue b/company/src/components/business/OperaInsuranceApplyWindow.vue
index c71c349..2277006 100644
--- a/company/src/components/business/OperaInsuranceApplyWindow.vue
+++ b/company/src/components/business/OperaInsuranceApplyWindow.vue
@@ -8,6 +8,14 @@
     >
         <div class="desc">
             <div class="desc_item">
+                <div class="desc_item_label" v-if="model.statusCollect === 2 || model.statusCollect === 3">
+                    <div class="desc_item_label_left">
+                        <span>淇濋櫓鍒版湡杩樻湁 <b style="color: #F95601;">{{model.loseEfficacyDays ? model.loseEfficacyDays : '-'}}</b> 澶�</span>
+                        <el-button type="primary" v-if="model.statusCollect === 2 || model.statusCollect === 3" @click="$refs.OperaInsuranceApply.open('鎶曚繚鐢宠', { id: dataId })">涓�閿画淇�</el-button>
+                        <el-button type="primary" v-if="model.statusCollect === 2" @click="$refs.additionSubtractionApplication.open('鍔犲噺淇濈敵璇�', { id: dataId })">鍔犲噺淇濈敵璇�</el-button>
+                        <el-button type="primary" v-if="model.statusCollect === 2" @click="$refs.factoryChange.open('鎹㈠巶鐢宠', { id: dataId })">鎹㈠巶鐢宠</el-button>
+                    </div>
+                </div>
                 <div class="desc_item_label">
                     <div class="desc_item_label_left">
                         <span>鎶曚繚浼佷笟锛歿{ model.companyName }}</span>
@@ -34,8 +42,6 @@
                             <el-button v-if="model.status != 5 && model.status != 4 && model.status != 1" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('閫�鍥炴姇淇�',model,1)">閫�鍥炴姇淇�</el-button>
                             <el-button v-if="model.status == 5" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('淇敼淇濋櫓鍗�',model,4)">淇敼淇濋櫓鍗�</el-button>
                         </template>
-
-
                   </div>
                 </div>
                 <div class="desc_item_from">
@@ -231,6 +237,10 @@
         <applyReturn ref="applyReturn" @success="successEvent" />
         <!--    鏂板鎶曚繚    -->
         <OperaInsuranceApply ref="OperaInsuranceApply" @success="successEvent" />
+        <!--    鍔犲噺淇濈敵璇�    -->
+        <additionSubtractionApplication ref="additionSubtractionApplication" @success="successEvent" />
+        <!--    鎹㈠巶鐢宠    -->
+        <factoryChange ref="factoryChange" @success="successEvent" />
     </GlobalWindow>
 </template>
 
@@ -239,6 +249,8 @@
 import GlobalWindow from '@/components/common/GlobalWindow'
 import InsuranceDetails from '@/components/business/InsuranceDetails'
 import OperaInsuranceApplyCheckWindow from '@/components/business/OperaInsuranceApplyCheckWindow'
+import additionSubtractionApplication from '@/components/enterprise/additionSubtractionApplication'
+import factoryChange from '@/components/enterprise/factoryChange'
 
 import applyReturn from '@/components/enterprise/applyReturn'
 import { getDetail, getSignLink, applyDetailPage, applyChagneDetailPage, exportExcel, applyChagneDetailExcel } from "@/api/business/insuranceApply";
@@ -250,7 +262,15 @@
 export default {
   name: 'OperaInsuranceApplyWindow',
   extends: BaseOpera,
-  components: { GlobalWindow, InsuranceDetails ,OperaInsuranceApplyCheckWindow, applyReturn, OperaInsuranceApply },
+  components: {
+      GlobalWindow,
+      InsuranceDetails,
+      OperaInsuranceApplyCheckWindow,
+      applyReturn,
+      OperaInsuranceApply,
+      additionSubtractionApplication,
+      factoryChange
+  },
   data () {
     return {
       // 琛ㄥ崟鏁版嵁
diff --git a/company/src/components/enterprise/OperaInsuranceApplyWindow.vue b/company/src/components/enterprise/OperaInsuranceApplyWindow.vue
index d31b415..e54e7a8 100644
--- a/company/src/components/enterprise/OperaInsuranceApplyWindow.vue
+++ b/company/src/components/enterprise/OperaInsuranceApplyWindow.vue
@@ -189,8 +189,11 @@
           this.form.applyStartTime = ''
           this.form.applyEndTime = ''
           if (target && target.id) {
-              this.form.id = target.id
-              this.getDetails()
+              this.$nextTick(() => {
+                  this.$refs.form.resetFields()
+                  this.form.id = target.id
+                  this.getDetails()
+              })
           } else {
               this.$nextTick(() => {
                   this.$refs.form.resetFields()
diff --git a/company/src/components/enterprise/additionSubtractionApplication.vue b/company/src/components/enterprise/additionSubtractionApplication.vue
new file mode 100644
index 0000000..6db50bd
--- /dev/null
+++ b/company/src/components/enterprise/additionSubtractionApplication.vue
@@ -0,0 +1,565 @@
+<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="淇濋櫓鏂规">
+                    <span>{{form.solutionsName}}</span>
+                </el-form-item>
+                <el-form-item label="鎵瑰崟鐢熸晥璧锋湡" prop="applyStartTime">
+                    <div style="display: flex; flex-direction: column;">
+                        <el-date-picker
+                            @change="changeApplyStartTime"
+                            v-model="form.applyStartTime"
+                            type="date"
+                            :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="鎶曚繚骞撮緞" v-if="item">
+                    <span>{{item.minAge}} 鑷� {{item.maxAge}}</span>
+                </el-form-item>
+                <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="desc_item_from">
+            <el-table
+                :data="list"
+                border
+                style="width: 100%">
+                <el-table-column
+                    prop="code"
+                    align="center"
+                    label="鍏宠仈淇濆崟鍙�">
+                </el-table-column>
+                <el-table-column
+                    prop="solutionsName"
+                    label="淇濋櫓鏂规"
+                    align="center"
+                    width="180">
+                </el-table-column>
+                <el-table-column
+                    prop="startTime"
+                    align="center"
+                    label="淇濋櫓鐢熸晥璧锋湡">
+                </el-table-column>
+                <el-table-column
+                    prop="endTime"
+                    align="center"
+                    label="淇濋櫓鐢熸晥姝㈡湡">
+                </el-table-column>
+                <el-table-column
+                    prop="insureNum"
+                    align="center"
+                    label="鎶曚繚浜烘暟">
+                </el-table-column>
+                <el-table-column
+                    prop="serviceDays"
+                    align="center"
+                    label="鍦ㄤ繚鏃堕暱锛堝ぉ锛�">
+                </el-table-column>
+                <el-table-column
+                    prop="currentFee"
+                    align="center"
+                    label="褰撳墠璐圭敤(鍏�)">
+                </el-table-column>
+                <el-table-column
+                    prop="fee"
+                    align="center"
+                    label="鎬昏垂鐢�(鍏�)">
+                </el-table-column>
+            </el-table>
+        </div>
+        <div class="desc_item_cate">
+            <el-tabs v-model="activeName" @tab-click="handleClick">
+                <el-tab-pane label="鍔犱繚鍛樺伐" name="0"></el-tab-pane>
+                <el-tab-pane label="鍑忎繚鍛樺伐" name="1"></el-tab-pane>
+            </el-tabs>
+        </div>
+        <div class="btns">
+            <div class="btns_item">
+                <el-button type="primary" @click="seleUser">閫夊彇鍛樺伐</el-button>
+                <el-button type="primary" @click="uploadUser" v-if="activeName !== '1'">瀵煎叆鍛樺伐</el-button>
+                <el-button type="primary" @click="addUser" v-if="activeName !== '1'">娣诲姞鍛樺伐</el-button>
+                <el-button type="danger" @click="deleItem">鍒犻櫎</el-button>
+            </div>
+            <div class="btns_item" v-if="activeName !== '1'">
+                <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>
+            </div>
+        </div>
+        <el-table
+            :data="activeName === '0' ? form.addDetailList : form.delDetailList"
+            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="memberName"
+                label="濮撳悕">
+            </el-table-column>
+            <el-table-column
+                prop="idCard"
+                label="韬唤璇佸彿">
+            </el-table-column>
+            <el-table-column
+                label="骞撮緞">
+                <template slot-scope="{row}">
+                    <span style="color: red;" v-if="(getAgeByIdCard(row.idCard) < item.minAge) || (getAgeByIdCard(row.idCard) > item.maxAge)">{{getAgeByIdCard(row.idCard)}}</span>
+                    <span v-else>{{ getAgeByIdCard(row.idCard) }}</span>
+                </template>
+            </el-table-column>
+            <el-table-column
+                prop="duName"
+                label="娲鹃仯鍗曚綅">
+            </el-table-column>
+            <el-table-column
+                prop="workTypeName"
+                label="鎵�灞炲伐绉�">
+            </el-table-column>
+            <el-table-column
+                label="璐圭敤">
+                <template slot-scope="{row}">
+                    <span v-if="activeName === '0'">{{row.fee}}</span>
+                    <span v-else>-{{row.fee}}</span>
+                </template>
+            </el-table-column>
+            <el-table-column
+                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="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" @result="getValue" />
+        <!--    娣诲姞鍛樺伐    -->
+        <addEmployee ref="addEmployee" @result="getValue" />
+        <!--    瀵煎叆鍚嶅崟    -->
+        <importEmployees ref="importEmployees" @result="getValue" />
+        <!--    纭宸ョ    -->
+        <confirmJobType ref="confirmJobType" @result="getUser" />
+    </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/addEmployee'
+    import importEmployees from '@/components/enterprise/importEmployees'
+    import confirmJobType from '@/components/enterprise/confirmJobType'
+    import { all } from '@/api/business/solutions'
+    import { getDetail } from '@/api/business/insuranceApply'
+    import { create, getChangeCountCyclePriceVO } from '@/api/business/applyChange'
+    export default {
+        name: 'additionSubtractionApplication',
+        extends: BaseOpera,
+        components: { GlobalWindow, selectEmployees, addEmployee, importEmployees, confirmJobType },
+        data () {
+            return {
+                form: {
+                    id: null,
+                    solutionId: '',
+                    solutionsName: '',
+                    applyStartTime: '',
+                    applyEndTime: '',
+                    addDetailList: [],
+                    delDetailList: [],
+                },
+                activeName: '0',
+                pickerOptions: {},
+                price: '',
+                endTime: '',    // 	瀹為檯淇濋櫓鐢熸晥姝㈡湡
+                company: [],
+                seleData: [],
+                item: null,
+                // 楠岃瘉瑙勫垯
+                rules: {
+                    applyStartTime: [
+                        { required: true, message: '璇烽�夋嫨鎵瑰崟鐢熸晥璧锋湡' }
+                    ]
+                },
+                list: []
+            }
+        },
+        created () {
+            this.config({
+                api: '/business/insuranceApply',
+                'field.id': 'id'
+            })
+        },
+        methods: {
+            open (title, target) {
+                this.title = title
+                this.form.addDetailList = []
+                this.form.delDetailList = []
+                this.list = []
+                this.form.id = null
+                this.item = null
+                this.form.solutionId = ''
+                this.form.solutionsName = ''
+                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()
+            },
+            changeApplyStartTime(e) {
+                getChangeCountCyclePriceVO({
+                    applyId: this.form.id,
+                    validTime: e
+                }).then(res => {
+                    this.price = res.cyclePrice
+                    this.form.addDetailList.forEach(item => {
+                        item.fee = res.cyclePrice
+                    })
+                    this.form.delDetailList.forEach(item => {
+                        item.fee = res.cyclePrice
+                    })
+                })
+            },
+            handleClick(e) {
+                this.activeName = e.index
+            },
+            // 鑾峰彇鎶曚繚璇︽儏
+            getDetails() {
+                // findList({ applyId: this.form.id })
+                //     .then(res => {
+                //         res.forEach(item => {
+                //             item.idCard = item.idcardNo
+                //             item.fee = ''
+                //         })
+                //         this.tableData = res
+                //     })
+                getDetail(this.form.id)
+                    .then(res => {
+                        this.list.push(res)
+                        this.endTime = res.endTime
+                        this.form.solutionId = res.solutionId
+                        this.form.solutionsName = res.solutionsName
+                        this.pickerOptions = {
+                            disabledDate(time) {
+                                // - 8.64e7
+                                return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date().getTime()
+                            }
+                        };
+                        this.changeSolution1(res.solutionId)
+                    })
+            },
+            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
+                        if (this.activeName === '0') {
+                            this.form.addDetailList.forEach(item => {
+                                total += item.fee
+                            })
+                        } else {
+                            this.form.delDetailList.forEach(item => {
+                                total += item.fee
+                            })
+                        }
+                        sums[index] = '-' + total
+                        return
+                    }
+                })
+                return sums
+            },
+            deleItem() {
+                if (this.seleData.length === 0) {
+                    this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
+                    return
+                }
+                if (this.activeName === '0') {
+                    this.seleData.forEach(item => {
+                        this.form.addDetailList.forEach((row, index) => {
+                            if (item === row.name) {
+                                this.form.addDetailList.splice(index, 1)
+                            }
+                        })
+                    })
+                } else {
+                    this.seleData.forEach(item => {
+                        this.form.delDetailList.forEach((row, index) => {
+                            if (item === row.name) {
+                                this.form.delDetailList.splice(index, 1)
+                            }
+                        })
+                    })
+                }
+            },
+            confirm() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        // if (this.form.addDetailList.length === 0) {
+                        //     this.$message.warning('鑷冲皯娣诲姞涓�椤瑰憳宸�')
+                        //     return
+                        // }
+                        for (let i = 0; i < this.form.addDetailList.length; i++) {
+                            if (!this.form.addDetailList[i].worktypeId || !this.form.addDetailList[i].duId) {
+                                this.$message.warning('璇峰畬鍠勫姞淇濇淳閬e崟浣嶅拰宸ョ淇℃伅')
+                                return
+                            }
+                        }
+                        for (let i = 0; i < this.form.delDetailList.length; i++) {
+                            if (!this.form.delDetailList[i].worktypeId || !this.form.delDetailList[i].duId) {
+                                this.$message.warning('璇峰畬鍠勫噺淇濇淳閬e崟浣嶅拰宸ョ淇℃伅')
+                                return
+                            }
+                        }
+                        this.form.addDetailList.forEach(item => {
+                            item.idcardNo = item.idCard
+                        })
+                        this.form.delDetailList.forEach(item => {
+                            item.idcardNo = item.idCard
+                        })
+                        // let arr = JSON.parse(JSON.stringify(this.form.addDetailList))
+                        // arr.forEach(item => {
+                        //     item.idcardNo = item.idCard
+                        // })
+                        this.isWorking = true
+                        create({
+                            applyId: this.form.id,
+                            addDetailList: this.form.addDetailList,
+                            delDetailList: this.form.delDetailList,
+                            validTime: this.form.applyStartTime,
+                            type: 0
+                        }).then(() => {
+                            this.visible = false
+                            this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+                            this.$emit('success')
+                        }).catch(e => {
+                            this.$tip.apiFailed(e)
+                        }).finally(() => {
+                            this.isWorking = false
+                        })
+                    }
+                })
+            },
+            seleUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                if (this.activeName === '0') {
+                    this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.form.addDetailList, price: this.price, notInInsuranceApplyId: this.form.id })
+                } else {
+                    this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.form.delDetailList, price: this.price, insuranceApplyId: this.form.id })
+                }
+            },
+            addUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                if (this.activeName === '0') {
+                    this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.form.addDetailList, price: this.price })
+                } else {
+                    this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.form.delDetailList, price: this.price })
+                }
+            },
+            uploadUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                if (this.activeName === '0') {
+                    this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.form.addDetailList, price: this.price })
+                } else {
+                    this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.form.delDetailList, price: this.price })
+                }
+            },
+            // 鍒囨崲鏂规
+            changeSolution1(e) {
+                this.company.forEach(item => {
+                    if (item.id === e) {
+                        this.item = item
+                    }
+                })
+                // this.tableData.forEach(item => {
+                //     item.fee = this.price
+                // })
+            },
+            dele(index) {
+                if (this.activeName === '0') {
+                    this.form.addDetailList.splice(index, 1)
+                } else {
+                    this.form.delDetailList.splice(index, 1)
+                }
+            },
+            getUser(obj) {
+                this.seleData.forEach(item => {
+                    if (this.activeName === '0') {
+                        this.form.addDetailList.forEach(row => {
+                            if (item === row.name) {
+                                row.workTypeName = obj.workTypeName
+                                row.worktypeId = obj.worktypeId
+                                row.duName = obj.duName
+                                row.duId = obj.duId
+                            }
+                        })
+                    } else {
+                        this.form.delDetailList.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) {
+                console.log(list)
+                if (this.activeName === '0') {
+                    this.form.addDetailList.push(...list)
+                } else {
+                    this.form.delDetailList.push(...list)
+                }
+            }
+        }
+    }
+</script>
+
+<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;
+    }
+    .desc_item_from {
+        width: 100%;
+        margin-bottom: 10px;
+        .desc_item_from_page {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: end;
+            margin-top: 10px;
+        }
+    }
+    .desc_item_cate {
+        width: 100%;
+        margin-bottom: 10px;
+    }
+    .info {
+        width: 100%;
+        font-size: 14px;
+        color: black;
+    }
+</style>
diff --git a/company/src/components/enterprise/dispatchUnitDetails.vue b/company/src/components/enterprise/dispatchUnitDetails.vue
index 33c07bd..da04967 100644
--- a/company/src/components/enterprise/dispatchUnitDetails.vue
+++ b/company/src/components/enterprise/dispatchUnitDetails.vue
@@ -18,9 +18,13 @@
                 </div>
                 <div class="info_list_item">
                     <div class="info_list_item_label">娲鹃仯鍗曚綅鐘舵�侊細</div>
-                    <div class="info_list_item_val" v-if="form.unitStatus === 0">寰呭鏍�</div>
-                    <div class="info_list_item_val" style="color: green;" v-if="form.unitStatus === 1">瀹℃牳閫氳繃</div>
-                    <div class="info_list_item_val" style="color: red;" v-if="form.unitStatus === 2">瀹℃牳涓嶉�氳繃</div>
+                    <div class="info_list_item_val" style="color:#2E68EC;" v-if="form.unitStatus === 0">寰呭鏍�</div>
+                    <div class="info_list_item_val"   v-if="form.unitStatus === 1">
+                        <span style="color:#2E68EC;" v-if="form.worktypeStatus  ==null||form.worktypeStatus === 0">宸ョ寰呭</span>
+                        <span style="color: green" v-if="form.worktypeStatus === 1">瀹℃牳閫氳繃</span>
+                        <span style="color: red;" v-if="form.worktypeStatus === 2">宸ョ瀹℃牳涓嶉�氳繃</span>
+                    </div>
+                    <div class="info_list_item_val"  style="color: red;" v-if="form.unitStatus === 2">瀹℃牳涓嶉�氳繃</div>
                 </div>
                 <div class="info_list_item">
                     <div class="info_list_item_label">娲鹃仯鍗曚綅璇﹁堪锛�</div>
diff --git a/company/src/components/enterprise/factoryChange.vue b/company/src/components/enterprise/factoryChange.vue
new file mode 100644
index 0000000..5d9284f
--- /dev/null
+++ b/company/src/components/enterprise/factoryChange.vue
@@ -0,0 +1,477 @@
+<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="淇濋櫓鏂规">
+                    <span>{{form.solutionsName}}</span>
+                </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"
+                            :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="鎶曚繚骞撮緞" v-if="item">
+                    <span>{{item.minAge}} 鑷� {{item.maxAge}}</span>
+                </el-form-item>
+                <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="desc_item_from">
+            <el-table
+                :data="list"
+                border
+                style="width: 100%">
+                <el-table-column
+                    prop="code"
+                    align="center"
+                    label="鍏宠仈淇濆崟鍙�">
+                </el-table-column>
+                <el-table-column
+                    prop="solutionsName"
+                    label="淇濋櫓鏂规"
+                    align="center"
+                    width="180">
+                </el-table-column>
+                <el-table-column
+                    prop="startTime"
+                    align="center"
+                    label="淇濋櫓鐢熸晥璧锋湡">
+                </el-table-column>
+                <el-table-column
+                    prop="endTime"
+                    align="center"
+                    label="淇濋櫓鐢熸晥姝㈡湡">
+                </el-table-column>
+                <el-table-column
+                    prop="insureNum"
+                    align="center"
+                    label="鎶曚繚浜烘暟">
+                </el-table-column>
+                <el-table-column
+                    prop="serviceDays"
+                    align="center"
+                    label="鍦ㄤ繚鏃堕暱锛堝ぉ锛�">
+                </el-table-column>
+                <el-table-column
+                    prop="currentFee"
+                    align="center"
+                    label="褰撳墠璐圭敤(鍏�)">
+                </el-table-column>
+                <el-table-column
+                    prop="fee"
+                    align="center"
+                    label="鎬昏垂鐢�(鍏�)">
+                </el-table-column>
+            </el-table>
+        </div>
+        <div class="btns">
+            <div class="btns_item">
+                <el-button type="primary" @click="seleUser">閫夊彇鍛樺伐</el-button>
+                <el-button type="danger" @click="deleItem">鍒犻櫎</el-button>
+            </div>
+            <div class="btns_item">
+                <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>
+            </div>
+        </div>
+        <el-table
+            :data="form.factory"
+            border
+            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="memberName"
+                label="濮撳悕">
+            </el-table-column>
+            <el-table-column
+                prop="idCard"
+                label="韬唤璇佸彿">
+            </el-table-column>
+            <el-table-column
+                prop="oldDuName"
+                label="鍘熸淳閬e崟浣�">
+            </el-table-column>
+            <el-table-column
+                prop="oldWorkTypeName"
+                label="鍘熸墍灞炲伐绉�">
+            </el-table-column>
+            <el-table-column
+                prop="duName"
+                label="鍙樻洿鍚庢淳閬e崟浣�">
+            </el-table-column>
+            <el-table-column
+                prop="workTypeName"
+                label="鍙樻洿鍚庢墍灞炲伐绉�">
+            </el-table-column>
+            <el-table-column
+                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="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" @result="getValue" />
+        <!--    娣诲姞鍛樺伐    -->
+        <addEmployee ref="addEmployee" @result="getValue" />
+        <!--    瀵煎叆鍚嶅崟    -->
+        <importEmployees ref="importEmployees" @result="getValue" />
+        <!--    纭宸ョ    -->
+        <confirmJobType ref="confirmJobType" @result="getUser" />
+    </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/addEmployee'
+    import importEmployees from '@/components/enterprise/importEmployees'
+    import confirmJobType from '@/components/enterprise/confirmJobType'
+    import { all } from '@/api/business/solutions'
+    import { getDetail, findList } from '@/api/business/insuranceApply'
+    import { create } from '@/api/business/applyChange'
+    export default {
+        name: 'factoryChange',
+        extends: BaseOpera,
+        components: { GlobalWindow, selectEmployees, addEmployee, importEmployees, confirmJobType },
+        data () {
+            return {
+                form: {
+                    id: null,
+                    solutionId: '',
+                    solutionsName: '',
+                    applyStartTime: '',
+                    applyEndTime: '',
+                    factory: []
+                },
+                pickerOptions: {},
+                price: '',
+                endTime: '',    // 	瀹為檯淇濋櫓鐢熸晥姝㈡湡
+                company: [],
+                seleData: [],
+                item: null,
+                // 楠岃瘉瑙勫垯
+                rules: {
+                    applyStartTime: [
+                        { required: true, message: '璇烽�夋嫨鎵瑰崟鐢熸晥璧锋湡' }
+                    ]
+                },
+                list: []
+            }
+        },
+        created () {
+            this.config({
+                api: '/business/insuranceApply',
+                'field.id': 'id'
+            })
+        },
+        methods: {
+            open (title, target) {
+                this.title = title
+                this.form.addDetailList = []
+                this.form.delDetailList = []
+                this.list = []
+                this.form.id = null
+                this.item = null
+                this.form.solutionId = ''
+                this.form.solutionsName = ''
+                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 => {
+                            item.idCard = item.idcardNo
+                            item.fee = ''
+                        })
+                        res.forEach(item => {
+                            item.oldDuId = item.duId
+                            item.oldDuName = item.duName
+                            item.oldWorkTypeName = item.workTypeName
+                            item.oldWorktypeId = item.worktypeId
+                            item.workTypeName = ''
+                            item.worktypeId = ''
+                            item.duId = ''
+                            item.duName = ''
+                        })
+                        // this.form.factory = res
+                    })
+                getDetail(this.form.id)
+                    .then(res => {
+                        this.list.push(res)
+                        this.endTime = res.endTime
+                        this.form.solutionId = res.solutionId
+                        this.form.solutionsName = res.solutionsName
+                        this.pickerOptions = {
+                            disabledDate(time) {
+                                // - 8.64e7
+                                return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date().getTime()
+                            }
+                        };
+                        this.changeSolution1(res.solutionId)
+                    })
+            },
+            deleItem() {
+                if (this.seleData.length === 0) {
+                    this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
+                    return
+                }
+                this.seleData.forEach(item => {
+                    this.form.factory.forEach((row, index) => {
+                        if (item === row.memberName) {
+                            this.form.factory.splice(index, 1)
+                        }
+                    })
+                })
+            },
+            confirm() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        // if (this.form.addDetailList.length === 0) {
+                        //     this.$message.warning('鑷冲皯娣诲姞涓�椤瑰憳宸�')
+                        //     return
+                        // }
+                        for (let i = 0; i < this.form.factory.length; i++) {
+                            if (!this.form.factory[i].worktypeId || !this.form.factory[i].duId) {
+                                this.$message.warning('璇峰畬鍠勬淳閬e崟浣嶅拰宸ョ淇℃伅')
+                                return
+                            }
+                        }
+                        this.form.factory.forEach(item => {
+                            item.idcardNo = item.idCard
+                        })
+                        // let arr = JSON.parse(JSON.stringify(this.form.factory))
+                        // arr.forEach(item => {
+                        //     item.idcardNo = item.idCard
+                        // })
+                        this.isWorking = true
+                        create({
+                            applyId: this.form.id,
+                            changeDetailList: this.form.factory,
+                            validTime: this.form.applyStartTime,
+                            type: 1
+                        }).then(() => {
+                            this.visible = false
+                            this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+                            this.$emit('success')
+                        }).catch(e => {
+                            this.$tip.apiFailed(e)
+                        }).finally(() => {
+                            this.isWorking = false
+                        })
+                    }
+                })
+            },
+            seleUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.form.delDetailList, price: this.price, insuranceApplyId: this.form.id })
+            },
+            addUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.form.factory, price: this.price })
+            },
+            uploadUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.form.factory, price: this.price })
+            },
+            // 鍒囨崲鏂规
+            changeSolution1(e) {
+                this.company.forEach(item => {
+                    if (item.id === e) {
+                        this.item = item
+                    }
+                })
+                // this.tableData.forEach(item => {
+                //     item.fee = this.price
+                // })
+            },
+            dele(index) {
+                this.form.factory.splice(index, 1)
+            },
+            getUser(obj) {
+                console.log(obj)
+                this.seleData.forEach(item => {
+                    this.form.factory.forEach(row => {
+                        if (item === row.memberName) {
+                            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.memberName)
+            },
+            getValue(list) {
+                let arr = JSON.parse(JSON.stringify(list))
+                
+                arr.forEach(item => {
+                    item.oldDuId = item.duId
+                    item.oldDuName = item.duName
+                    item.oldWorkTypeName = item.workTypeName
+                    item.oldWorktypeId = item.worktypeId
+
+                    item.duId = ''
+                    item.duName = ''
+                    item.workTypeName = ''
+                    item.worktypeId = ''
+                })
+                this.form.factory.push(...arr)
+            }
+        }
+    }
+</script>
+
+<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;
+    }
+    .desc_item_from {
+        width: 100%;
+        margin-bottom: 10px;
+        .desc_item_from_page {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: end;
+            margin-top: 10px;
+        }
+    }
+    .desc_item_cate {
+        width: 100%;
+        margin-bottom: 10px;
+    }
+    .info {
+        width: 100%;
+        font-size: 14px;
+        color: black;
+    }
+</style>
diff --git a/company/src/components/enterprise/selectEmployees.vue b/company/src/components/enterprise/selectEmployees.vue
index d2cb3da..365c51c 100644
--- a/company/src/components/enterprise/selectEmployees.vue
+++ b/company/src/components/enterprise/selectEmployees.vue
@@ -54,6 +54,8 @@
                 val: '',
                 list: [],
                 price: '',
+                insuranceApplyId: '',
+                notInInsuranceApplyId: '',
                 seleData: [],
                 oldList: []
             }
@@ -66,8 +68,17 @@
         },
         methods: {
             open (title, obj) {
+                this.insuranceApplyId = ''
+                this.notInInsuranceApplyId = ''
                 this.price = obj.price
                 this.oldList = obj.arr
+                this.list = []
+                if (obj.insuranceApplyId) {
+                    this.insuranceApplyId = obj.insuranceApplyId
+                }
+                if (obj.notInInsuranceApplyId) {
+                    this.notInInsuranceApplyId = obj.notInInsuranceApplyId
+                }
                 this.title = title
                 this.visible = true
                 this.getList()
@@ -88,10 +99,13 @@
                 this.seleData.forEach(item => {
                     item.idCard = item.idcardNo
                     item.memberName = item.name
-                    item.workTypeName = ''
-                    item.worktypeId = ''
-                    item.duId = ''
-                    item.duName = ''
+                    item.memberId = item.id
+                    if (this.notInInsuranceApplyId) {
+                        item.workTypeName = ''
+                        item.worktypeId = ''
+                        item.duId = ''
+                        item.duName = ''
+                    }
                     item.fee = this.price
                 })
                 this.$emit('result', this.seleData)
@@ -102,7 +116,9 @@
             },
             getList() {
                 findListByDTO({
-                    name: this.val
+                    name: this.val,
+                    insuranceApplyId: this.insuranceApplyId,
+                    notInInsuranceApplyId: this.notInInsuranceApplyId
                 }).then(res => {
                     res.forEach(item => {
                         item.fee = ''
diff --git a/company/src/components/enterprise/selectEmployeesCopy.vue b/company/src/components/enterprise/selectEmployeesCopy.vue
new file mode 100644
index 0000000..8d0362e
--- /dev/null
+++ b/company/src/components/enterprise/selectEmployeesCopy.vue
@@ -0,0 +1,140 @@
+<template>
+    <GlobalWindow
+            :title="title"
+            width="100%"
+            :visible.sync="visible"
+            :confirm-working="isWorking"
+            @confirm="confirm"
+    >
+        <el-input v-model="val" placeholder="鏌ヨ鍛樺伐濮撳悕" @keypress.enter.native="getList" style="margin-bottom: 15px;"></el-input>
+        <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="name"
+                    label="濮撳悕">
+            </el-table-column>
+            <el-table-column
+                    prop="idcardNo"
+                    label="韬唤璇佸彿">
+            </el-table-column>
+            <el-table-column
+                    prop="duName"
+                    label="娲鹃仯鍗曚綅">
+            </el-table-column>
+            <el-table-column
+                    prop="workTypeName"
+                    label="鎵�灞炲伐绉�">
+            </el-table-column>
+        </el-table>
+    </GlobalWindow>
+</template>
+
+<script>
+    import BaseOpera from '@/components/base/BaseOpera'
+    import GlobalWindow from '@/components/common/GlobalWindow'
+    import { findListByDTO } from '@/api/business/member'
+    export default {
+        name: 'selectEmployeesCopy',
+        extends: BaseOpera,
+        components: { GlobalWindow },
+        data () {
+            return {
+                val: '',
+                list: [],
+                price: '',
+                insuranceApplyId: '',
+                notInInsuranceApplyId: '',
+                seleData: [],
+                oldList: []
+            }
+        },
+        created () {
+            this.config({
+                api: '/business/dispatchUnit',
+                'field.id': 'id'
+            })
+        },
+        methods: {
+            open (title, obj) {
+                this.insuranceApplyId = ''
+                this.notInInsuranceApplyId = ''
+                this.price = obj.price
+                this.oldList = obj.arr
+                this.list = []
+                if (obj.insuranceApplyId) {
+                    this.insuranceApplyId = obj.insuranceApplyId
+                }
+                if (obj.notInInsuranceApplyId) {
+                    this.notInInsuranceApplyId = obj.notInInsuranceApplyId
+                }
+                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.memberId = item.id
+
+                    item.oldDuId = JSON.parse(JSON.stringify(item.duId))
+                    item.oldDuName = JSON.parse(JSON.stringify(item.duName))
+                    item.oldWorkTypeName = JSON.parse(JSON.stringify(item.workTypeName))
+                    item.oldWorktypeId = JSON.parse(JSON.stringify(item.worktypeId))
+
+                    item.duId = ''
+                    item.duName = ''
+                    item.workTypeName = ''
+                    item.worktypeId = ''
+
+                    item.fee = this.price
+                })
+                this.$emit('result', this.seleData)
+                this.visible = false
+            },
+            handleSelectionChange (e) {
+                this.seleData = e
+            },
+            getList() {
+                findListByDTO({
+                    name: this.val,
+                    insuranceApplyId: this.insuranceApplyId,
+                    notInInsuranceApplyId: this.notInInsuranceApplyId
+                }).then(res => {
+                    res.forEach(item => {
+                        item.fee = ''
+                    })
+                    this.list = res
+                })
+            }
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git a/company/src/views/enterprise/add_subtract.vue b/company/src/views/enterprise/add_subtract.vue
index 8a89ddc..1c4ad1a 100644
--- a/company/src/views/enterprise/add_subtract.vue
+++ b/company/src/views/enterprise/add_subtract.vue
@@ -9,8 +9,9 @@
                     <el-option label="寰呭鏍�" value="1"></el-option>
                     <el-option label="宸茬敓鏁�" value="2"></el-option>
                     <el-option label="鐢宠閫�鍥�" value="3"></el-option>
-                    <el-option label="宸查��鍥�" value="2"></el-option>
-                    <el-option label="宸插叧闂�" value="3"></el-option>
+<!--                    3 4 閮芥槸閫�鍥炵敵璇蜂腑-->
+                    <el-option label="宸查��鍥�" value="5"></el-option>
+                    <el-option label="宸插叧闂�" value="6"></el-option>
                 </el-select>
             </el-form-item>
             <el-form-item label="淇濋櫓鏂规" prop="solutionsId">
diff --git a/company/src/views/enterprise/dispatchUnit.vue b/company/src/views/enterprise/dispatchUnit.vue
index 5d7a04b..2c8f05b 100644
--- a/company/src/views/enterprise/dispatchUnit.vue
+++ b/company/src/views/enterprise/dispatchUnit.vue
@@ -26,11 +26,15 @@
                     </template>
                 </el-table-column>
                 <el-table-column prop="name" label="娲鹃仯鍗曚綅"></el-table-column>
-                <el-table-column label="浼佷笟鐘舵��">
+                <el-table-column label="娲鹃仯鍗曚綅鐘舵��" min-width="100px">
                     <template slot-scope="{row}">
-                        <span v-if="row.unitStatus === 0">寰呭鏍�</span>
-                        <span v-if="row.unitStatus === 1" style="color: green;">瀹℃牳閫氳繃</span>
-                        <span v-if="row.unitStatus === 2" style="color: red;">瀹℃牳涓嶉�氳繃</span>
+                        <span style="color: #2E68EC" v-if="row.unitStatus === 0">寰呭鏍�</span>
+                        <span v-if="row.unitStatus === 1">
+                            <span style="color:#2E68EC" v-if="row.worktypeStatus ==null || row.worktypeStatus === 0">宸ョ寰呭</span>
+                            <span style="color: green" v-else-if="row.worktypeStatus === 1">瀹℃牳閫氳繃</span>
+                            <span style="color: red"  v-else-if="row.worktypeStatus === 2">宸ョ瀹℃牳涓嶉�氳繃</span>
+                        </span>
+                        <span style="color: red" v-if="row.unitStatus === 2">瀹℃牳涓嶉�氳繃</span>
                     </template>
                 </el-table-column>
                 <el-table-column prop="createDate" label="娣诲姞鏃ユ湡"></el-table-column>
diff --git a/company/src/views/enterprise/myPolicy.vue b/company/src/views/enterprise/myPolicy.vue
new file mode 100644
index 0000000..2dbd1b9
--- /dev/null
+++ b/company/src/views/enterprise/myPolicy.vue
@@ -0,0 +1,186 @@
+<template>
+    <TableLayout :permissions="['business:insuranceapply:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+            <el-form-item label="淇濆崟鍙�" prop="code">
+                <el-input v-model="searchForm.code" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
+            </el-form-item>
+            <el-form-item label="淇濋櫓鏂规" prop="baseSolutionId">
+                <el-select v-model="searchForm.baseSolutionId" placeholder="璇烽�夋嫨" @change="search">
+                    <el-option
+                        v-for="item in solutionList"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鐘舵��" prop="statusCollect">
+                <el-select v-model="searchForm.statusCollect" placeholder="璇烽�夋嫨" @change="search">
+                    <el-option label="寰呭鎵�" value="0"></el-option>
+                    <el-option label="寰呭嚭鍗�" value="1"></el-option>
+                    <el-option label="寰呯绔�" value="7"></el-option>
+                    <el-option label="淇濋殰涓�" value="2"></el-option>
+                    <el-option label="宸茶繃鏈�" value="3"></el-option>
+                    <el-option label="宸查��鍥�" value="4"></el-option>
+                    <el-option label="閫�鍥炵敵璇蜂腑" value="5"></el-option>
+                    <el-option label="宸插叧闂�" value="6"></el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="淇濋櫓鐢熸晥璧锋湡" prop="time1">
+                <el-date-picker
+                    v-model="time1"
+                    @change="changeS"
+                    type="daterange"
+                    range-separator="鑷�"
+                    value-format="yyyy-MM-dd"
+                    start-placeholder="寮�濮嬫棩鏈�"
+                    end-placeholder="缁撴潫鏃ユ湡">
+                </el-date-picker>
+            </el-form-item>
+            <el-form-item label="淇濋櫓鐢熸晥姝㈡湡" prop="time2">
+                <el-date-picker
+                    v-model="time2"
+                    @change="changeE"
+                    type="daterange"
+                    range-separator="鑷�"
+                    value-format="yyyy-MM-dd"
+                    start-placeholder="寮�濮嬫棩鏈�"
+                    end-placeholder="缁撴潫鏃ユ湡">
+                </el-date-picker>
+            </el-form-item>
+            <section>
+                <el-button type="primary" @click="search">鎼滅储</el-button>
+                <el-button @click="reset">閲嶇疆</el-button>
+            </section>
+        </el-form>
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <ul class="toolbar" v-permissions="['business:dispatchunit:create']">
+                <li><el-button type="primary" @click="$refs.OperaInsuranceApplyWindow.open('鎶曚繚鐢宠')">鎶曚繚鐢宠</el-button></li>
+            </ul>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+            >
+                <el-table-column label="搴忓彿" width="80px">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="statusInfo" label="鐘舵��"></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="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="鎿嶄綔"
+                    min-width="150"
+                    fixed="right"
+                >
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.OperaInsuranceApplyDetails.open('鎶曚繚璇︽儏', { id: row.id })" v-permissions="['business:insuranceapply:update']">鏌ョ湅璇︽儏</el-button>
+                        <el-button type="text" @click="$refs.additionSubtractionApplication.open('鍔犲噺淇濈敵璇�', { id: row.id })">鍔犲噺淇濈敵璇�</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+        <!--    鏂板鎶曚繚    -->
+        <OperaInsuranceApplyWindow ref="OperaInsuranceApplyWindow" @success="handlePageChange" />
+        <!--    鎶曚繚璇︽儏    -->
+        <OperaInsuranceApplyDetails ref="OperaInsuranceApplyDetails" @success="handlePageChange" />
+        <!--    鍔犲噺淇濈敵璇�    -->
+        <additionSubtractionApplication ref="additionSubtractionApplication" @success="handlePageChange" />
+    </TableLayout>
+</template>
+
+<script>
+    import BaseTable from '@/components/base/BaseTable'
+    import TableLayout from '@/layouts/TableLayout'
+    import Pagination from '@/components/common/Pagination'
+    import OperaInsuranceApplyWindow from '@/components/enterprise/OperaInsuranceApplyWindow'
+    import OperaInsuranceApplyDetails from '@/components/business/OperaInsuranceApplyWindow'
+    import additionSubtractionApplication from '@/components/enterprise/additionSubtractionApplication'
+
+    import { all as solutionAll} from '@/api/business/solutions'
+    export default {
+        name: 'myPolicy',
+        extends: BaseTable,
+        components: { TableLayout, Pagination, OperaInsuranceApplyWindow, OperaInsuranceApplyDetails, additionSubtractionApplication },
+        data () {
+            return {
+                // 鎼滅储
+                searchForm: {
+                    code: '',
+                    endTimeE: '',
+                    endTimeS: '',
+                    startTimeE: '',
+                    startTimeS: '',
+                    baseSolutionId: '',
+                    statusCollect: '2'
+                },
+                time1: [],
+                time2: [],
+                solutionList:[]
+            }
+        },
+        created () {
+            this.config({
+                module: '鎶曚繚鐢宠淇℃伅琛�',
+                api: '/business/insuranceApply',
+                'field.id': 'id',
+                'field.main': 'id'
+            })
+            this.search()
+            this.loadSelectList()
+        },
+        methods:{
+            reset() {
+                this.time1 = []
+                this.time2 = []
+                this.searchForm.endTimeE = ''
+                this.searchForm.endTimeS = ''
+                this.searchForm.startTimeE = ''
+                this.searchForm.startTimeS = ''
+                this.$refs.searchForm.resetFields()
+                this.search()
+            },
+            changeE(e) {
+                if (e.length > 0) {
+                    this.searchForm.endTimeS = e[0]
+                    this.searchForm.endTimeE = e[1]
+                } else {
+                    this.searchForm.endTimeS = ''
+                    this.searchForm.endTimeE = ''
+                }
+                this.search()
+            },
+            changeS(e) {
+                if (e.length > 0) {
+                    this.searchForm.startTimeS = e[0]
+                    this.searchForm.startTimeE = e[1]
+                } else {
+                    this.searchForm.startTimeS = ''
+                    this.searchForm.startTimeE = ''
+                }
+                this.search()
+            },
+            loadSelectList() {
+                solutionAll({ dataType: 0 }).then(res => {
+                    this.solutionList = res
+                })
+            }
+        }
+    }
+</script>
diff --git a/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java b/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java
index b8b2d70..e0c12bf 100644
--- a/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java
+++ b/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java
@@ -6,9 +6,12 @@
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
+import com.doumee.dao.business.dto.ApplyChangeCyclePriceDTO;
 import com.doumee.dao.business.dto.ApplyChangeOptDTO;
+import com.doumee.dao.business.dto.CountCyclePriceDTO;
 import com.doumee.dao.business.dto.InsuranceApplyOptDTO;
 import com.doumee.dao.business.model.ApplyChange;
+import com.doumee.dao.business.vo.CountCyclePriceVO;
 import com.doumee.service.business.ApplyChangeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -122,5 +125,10 @@
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
+    @ApiOperation("鍔犲噺淇濅笟鍔¤ˉ鍏呴噾棰�")
+    @PostMapping("/getChangeCountCyclePriceVO")
+    public ApiResponse<CountCyclePriceVO> getChangeCountCyclePriceVO (@RequestBody ApplyChangeCyclePriceDTO applyChangeCyclePriceDTO) {
+        return ApiResponse.success("鎿嶄綔鎴愬姛",applyChangeService.getChangeCountCyclePriceVO(applyChangeCyclePriceDTO));
+    }
 
 }
diff --git a/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java b/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
index be8ece9..657a943 100644
--- a/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
+++ b/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
@@ -136,6 +136,9 @@
     }
 
 
+
+
+
     @ApiOperation("娴嬭瘯瀹為檯閲戦")
     @GetMapping("/testFee")
     public ApiResponse testFee(@RequestParam Integer id) {
diff --git a/server/service/src/main/java/com/doumee/dao/business/dto/ApplyChangeCyclePriceDTO.java b/server/service/src/main/java/com/doumee/dao/business/dto/ApplyChangeCyclePriceDTO.java
new file mode 100644
index 0000000..c5f13be
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/business/dto/ApplyChangeCyclePriceDTO.java
@@ -0,0 +1,25 @@
+package com.doumee.dao.business.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author RenKang
+ */
+@Data
+public class ApplyChangeCyclePriceDTO {
+
+    @ApiModelProperty(value = "淇濆崟涓婚敭", example = "1")
+    private Integer applyId;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鎵瑰崟鏃ユ湡")
+    private Date validTime;
+
+
+}
diff --git a/server/service/src/main/java/com/doumee/dao/business/dto/MemberQueryDTO.java b/server/service/src/main/java/com/doumee/dao/business/dto/MemberQueryDTO.java
index bb8c8cf..47bbb54 100644
--- a/server/service/src/main/java/com/doumee/dao/business/dto/MemberQueryDTO.java
+++ b/server/service/src/main/java/com/doumee/dao/business/dto/MemberQueryDTO.java
@@ -26,7 +26,10 @@
     @ApiModelProperty(value = "闇�杩囨护鏁版嵁闆嗗悎")
     private List<Integer> memberIds;
 
-    @ApiModelProperty(value = "杩囨护淇濆崟涓婚敭涓嬫暟鎹�")
+    @ApiModelProperty(value = "杩囨护淇濆崟涓婚敭涓嬫暟鎹�" ,notes = "鍔犱繚鐢宠")
+    private Integer notInInsuranceApplyId;
+
+    @ApiModelProperty(value = "淇濆崟涓婚敭涓嬫暟鎹�" , notes = "鍑忎繚鐢宠/鎹㈠巶鐢宠")
     private Integer insuranceApplyId;
 
     @ApiModelProperty(value = "浼佷笟涓婚敭")
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java b/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java
index 558bf6a..a5ad527 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java
@@ -11,6 +11,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -93,6 +94,10 @@
     private String signApplyNo;
     @ApiModelProperty(value = "鏈熸湜淇濋櫓鐢熸晥璧锋湡")
     @ExcelColumn(name="鏈熸湜淇濋櫓鐢熸晥璧锋湡")
+    //鍏ュ弬
+     @DateTimeFormat(pattern = "yyyy-MM-dd")
+    //鍑哄弬
+    @JsonFormat(pattern="yyyy-MM-dd")
     private Date validTime;
 
     @ApiModelProperty(value = "鎵瑰崟鍙�")
diff --git a/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java b/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java
index 46f3def..df79445 100644
--- a/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java
+++ b/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java
@@ -2,9 +2,11 @@
 
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.dto.ApplyChangeCyclePriceDTO;
 import com.doumee.dao.business.dto.ApplyChangeOptDTO;
 import com.doumee.dao.business.model.ApplyChange;
 import com.doumee.dao.business.model.InsuranceApply;
+import com.doumee.dao.business.vo.CountCyclePriceVO;
 
 import java.util.List;
 
@@ -116,4 +118,6 @@
     String getSignLinkJiajiabao(ApplyChange model);
 
     String getSignLinkChangeUnit(ApplyChange model);
+
+    CountCyclePriceVO getChangeCountCyclePriceVO(ApplyChangeCyclePriceDTO applyChangeCyclePriceDTO);
 }
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
index d74064d..3370231 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
@@ -12,12 +12,16 @@
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dto.ApplyChangeCyclePriceDTO;
 import com.doumee.dao.business.dto.ApplyChangeOptDTO;
+import com.doumee.dao.business.dto.CountCyclePriceDTO;
 import com.doumee.dao.business.dto.InsuranceApplyOptDTO;
 import com.doumee.dao.business.join.ApplyChagneDetailJoinMapper;
 import com.doumee.dao.business.join.ApplyChangeJoinMapper;
 import com.doumee.dao.business.join.ApplyDetailJoinMapper;
+import com.doumee.dao.business.join.DuSolutionJoinMapper;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.vo.CountCyclePriceVO;
 import com.doumee.service.business.ApplyChangeService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -50,6 +54,8 @@
     @Autowired
     private ApplyChangeMapper applyChangeMapper;
 
+    @Autowired
+    private DuSolutionJoinMapper duSolutionJoinMapper;
     @Autowired
     private InsuranceApplyMapper insuranceApplyMapper;
 
@@ -440,7 +446,7 @@
                 || Objects.isNull(applyChange.getApplyId())
                 || Objects.isNull(applyChange.getValidTime())
                 || Objects.isNull(applyChange.getType())
-                || !(applyChange.getType().equals(Constants.ZERO) || applyChange.getType().equals(Constants.TWO))
+                || !(applyChange.getType().equals(Constants.ZERO) || applyChange.getType().equals(Constants.ONE))
         ) {
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
@@ -452,10 +458,11 @@
         if (Objects.isNull(insuranceApply)) {
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        if (insuranceApply.getStatus().equals(Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())) {
+        System.out.println(Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey());
+        if (!Constants.equalsInteger(insuranceApply.getStatus(),Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())) {
             throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "淇濆崟鐘舵�侀敊璇�");
         }
-        if (DateUtil.compareDate(new Date(), insuranceApply.getEndTime()) >= Constants.ZERO
+        if (DateUtil.compareDate(insuranceApply.getEndTime(),new Date()) >= Constants.ZERO
         ) {
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "淇濆崟宸茶繃淇濓紝鏃犳硶杩涜璇ユ搷浣�");
         }
@@ -473,34 +480,41 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌浼佷笟鍒嗛厤淇濋櫓鏂规淇℃伅");
         }
         //鐢宠鏃堕棿蹇呴』澶勪簬淇濆崟鐨勬椂闂磋寖鍥村唴
-        if (!(DateUtil.compareDate(applyChange.getValidTime(), insuranceApply.getStartTime()) >= Constants.ZERO
-                && DateUtil.compareDate(insuranceApply.getEndTime(), applyChange.getValidTime()) >= Constants.ZERO)) {
+        if (!(DateUtil.compareDate( insuranceApply.getStartTime(),applyChange.getValidTime()) >= Constants.ZERO
+                && DateUtil.compareDate( applyChange.getValidTime(),insuranceApply.getEndTime()) >= Constants.ZERO)) {
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鐢宠鏃ユ湡鏈浜庝繚鍗曟棩鏈熷唴锛屾棤娉曡繘琛岃鎿嶄綔");
         }
         applyChange.setCreateDate(new Date());
         applyChange.setCreator(loginUserInfo.getId());
         applyChange.setIsdeleted(Constants.ZERO);
+        applyChange.setApplyStartTime(applyChange.getValidTime());
         applyChange.setStatus(Constants.ZERO);
         applyChangeMapper.insert(applyChange);
 
-
-        List<DuSolution> duSolutionList = duSolutionMapper.selectList(new QueryWrapper<DuSolution>().lambda()
-                .eq(DuSolution::getIsdeleted, Constants.ZERO)
-                .eq(DuSolution::getStatus, Constants.ONE)
-                .eq(DuSolution::getSolutionId, insuranceApply.getSolutionId()));
-        if (!CollectionUtils.isNotEmpty(duSolutionList)) {
-            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏁版嵁寮傚父锛氫繚闄╂柟妗堜笅鏈煡璇㈠埌娲鹃仯鍗曚綅");
+        //鏌ヨ淇濋櫓鏂规涓嬬殑鎵�鏈夋淳閬e崟浣�
+        List<DuSolution>  duSolutionList = duSolutionJoinMapper.selectJoinList(DuSolution.class,new MPJLambdaWrapper<DuSolution>()
+                .selectAll(DuSolution.class)
+                .innerJoin(DispatchUnit.class,DispatchUnit::getId,DuSolution::getDispatchUnitId)
+                .eq(DispatchUnit::getCompanyId,insuranceApply.getCompanyId())
+                .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
+                .eq(DispatchUnit::getUnitStatus,Constants.ONE)
+                .eq(DuSolution::getIsdeleted,Constants.ZERO)
+                .eq(DuSolution::getStatus,Constants.ONE)
+                .eq(DuSolution::getSolutionId,insuranceApply.getSolutionId()));
+        if(!CollectionUtils.isNotEmpty(duSolutionList)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏁版嵁寮傚父锛氫繚闄╂柟妗堜笅鏈煡璇㈠埌娲鹃仯鍗曚綅");
         }
 
         //鏌ヨ鎵�鏈夋淳閬e崟浣嶄笅鐨勫伐绉�
-        List<Integer> duSolutionIdList = duSolutionList.stream().map(i -> i.getId()).collect(Collectors.toList());
+        List<Integer> duSolutionIdList = duSolutionList.stream().map(i->i.getId()).collect(Collectors.toList());
         List<DuWorktype> duWorktypeList = duWorktypeMapper.selectList(new QueryWrapper<DuWorktype>().lambda()
-                .eq(DuWorktype::getIsdeleted, Constants.ZERO)
-                .eq(DuWorktype::getStatus, Constants.ONE)
-                .in(DuWorktype::getDuSolutionId, duSolutionIdList));
+                .eq(DuWorktype::getIsdeleted,Constants.ZERO)
+                .eq(DuWorktype::getStatus,Constants.ONE)
+                .in(DuWorktype::getDuSolutionId,duSolutionIdList));
         if (!CollectionUtils.isNotEmpty(duWorktypeList)) {
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏁版嵁寮傚父锛氫繚闄╂柟妗堜笅鏈煡璇㈠埌宸ョ淇℃伅");
         }
+        BigDecimal fee = BigDecimal.ZERO;
         //鍔犱繚鏁版嵁
         List<ApplyChagneDetail> addDetailList = applyChange.getAddDetailList();
         if (CollectionUtils.isNotEmpty(addDetailList)) {
@@ -508,16 +522,25 @@
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽姞淇�");
            }
             this.addChangeDetail(applyChange,addDetailList,duWorktypeList,duSolutionList,insuranceApply,solutions,loginUserInfo);
+
+            fee = addDetailList.stream().map(ApplyChagneDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add);
+
         }
 
         //鍑忎繚鏁版嵁
         List<ApplyChagneDetail> delDetailList = applyChange.getDelDetailList();
         if (CollectionUtils.isNotEmpty(delDetailList)) {
             if(companySolution.getCanReduce().equals(Constants.ZERO)){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽姞淇�");
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽噺淇�");
             }
-            this.delChangeDetail(applyChange,delDetailList,insuranceApply,solutions,loginUserInfo);
+             this.delChangeDetail(applyChange,delDetailList,insuranceApply,solutions,loginUserInfo);
+            fee = fee.add(delDetailList.stream().map(ApplyChagneDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add));
         }
+        ApplyChange applyChangeFee = new ApplyChange();
+        applyChangeFee.setId(applyChange.getId());
+        applyChangeFee.setFee(fee);
+        applyChangeMapper.updateById(applyChangeFee);
+
         //鎹㈠巶涓氬姟
         List<ApplyChagneDetail> changeDetailList = applyChange.getChangeDetailList();
         if (CollectionUtils.isNotEmpty(changeDetailList)) {
@@ -537,7 +560,11 @@
         applyLog.setIsdeleted(Constants.ZERO);
         applyLog.setApplyId(applyChange.getApplyId());
         applyLog.setTitle(applyChangeLogStatus.getName());
-        applyLog.setContent(applyChangeLogStatus.getInfo().replace("${param}",content));
+        if(StringUtils.isNotBlank(content)){
+            applyLog.setContent(applyChangeLogStatus.getInfo().replace("${param}",content));
+        }else{
+            applyLog.setContent(applyChangeLogStatus.getInfo());
+        }
         applyLog.setObjType(applyChangeLogStatus.getKey());
         applyLog.setObjId( applyChange.getId());
         applyLog.setStatus(applyChange.getStatus());
@@ -578,7 +605,7 @@
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍑忎繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戜繚鍗曚俊鎭紓甯革紝瀛樺湪澶氭潯鏁版嵁");
             }
             ApplyDetail applyDetail = applyDetailList.get(Constants.ZERO);
-            if (applyChange.getValidTime().compareTo(applyDetail.getEndTime()) <= 0) {
+            if (applyChange.getValidTime().compareTo(applyDetail.getEndTime()) > 0) {
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍑忎繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戜繚鍗曚繚闅滄棩鏈熻嚦锛氥��" + applyDetail.getEndTime() + "銆戞棤娉曢�氳繃鏈鐢宠");
             }
             applyChagneDetail.setCreateDate(new Date());
@@ -586,9 +613,17 @@
             applyChagneDetail.setIsdeleted(Constants.ZERO);
             applyChagneDetail.setApplyChangeId(applyChange.getId());
             applyChagneDetail.setType(Constants.ONE);
+
+            System.out.println(DateUtil.dateToString(applyDetail.getEndTime(),"yyyy-MM-dd"));
+            System.out.println(DateUtil.dateToString(applyDetail.getStartTime(),"yyyy-MM-dd"));
+            System.out.println(DateUtil.dateToString(applyChange.getValidTime(),"yyyy-MM-dd"));
+
+            BigDecimal sumFee = Constants.countDetailFee(solutions, applyDetail.getEndTime(),applyDetail.getStartTime());
+            BigDecimal useFee = Constants.countDetailFee(solutions, applyChange.getValidTime(),applyDetail.getStartTime());
+
             applyChagneDetail.setFee(
                     Constants.countDetailFee(solutions, applyDetail.getEndTime(),applyDetail.getStartTime())
-                            .subtract(Constants.countDetailFee(solutions,applyChange.getValidTime(), applyDetail.getStartTime()))
+                            .subtract(Constants.countDetailFee(solutions,applyChange.getValidTime(), applyDetail.getStartTime())).multiply(new BigDecimal(-1))
             );
             applyChagneDetailJoinMapper.insert(applyChagneDetail);
         }
@@ -606,15 +641,51 @@
      */
     public void addChangeDetail(ApplyChange applyChange ,List<ApplyChagneDetail> addDetailList,List<DuWorktype> duWorktypeList,List<DuSolution> duSolutionList,InsuranceApply insuranceApply,Solutions solutions,LoginUserInfo loginUserInfo){
         for (ApplyChagneDetail applyChagneDetail : addDetailList) {
-            if (Objects.isNull(applyChagneDetail.getMemberId())
-                    || Objects.isNull(applyChagneDetail.getDuId())
+            if (    Objects.isNull(applyChagneDetail.getDuId())
                     || Objects.isNull(applyChagneDetail.getWorktypeId())
+                    || StringUtils.isBlank(applyChagneDetail.getIdcardNo())
             ) {
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝繀濉」缂哄け");
             }
-            Member member = memberMapper.selectById(applyChagneDetail.getMemberId());
-            if (Objects.isNull(member)) {
-                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戞湭鏌ヨ鍒扮郴缁熶汉鍛樹俊鎭�");
+
+
+            Member member = new Member();
+            if(Objects.isNull(applyChagneDetail.getMemberId())){
+                //鏌ヨ鏄惁瀛樺湪璇ョ敤鎴�
+                member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
+                        .eq(Member::getCompanyId,insuranceApply.getCompanyId())
+                        .eq(Member::getIsdeleted,Constants.ZERO)
+                        .eq(Member::getIdcardNo,applyChagneDetail.getIdcardNo())
+                        .last(" limit 1")
+                );
+                if(Objects.isNull(member)){
+                    member = new Member();
+                    member.setCreateDate(new Date());
+                    member.setCreator(loginUserInfo.getId());
+                    member.setIsdeleted(Constants.ZERO);
+                    member.setName(applyChagneDetail.getMemberName());
+                    member.setCompanyId(insuranceApply.getCompanyId());
+                    member.setSex(Constants.getSexByIdCard(applyChagneDetail.getIdcardNo()));
+                    member.setIdcardNo(applyChagneDetail.getIdcardNo());
+                    member.setApplyId(insuranceApply.getId());
+                    member.setDuId(applyChagneDetail.getDuId());
+                    member.setWorktypeId(applyChagneDetail.getWorktypeId());
+                    memberMapper.insert(member);
+                }else{
+                    member.setApplyId(insuranceApply.getId());
+                    member.setDuId(applyChagneDetail.getDuId());
+                    member.setWorktypeId(applyChagneDetail.getWorktypeId());
+                    memberMapper.updateById(member);
+                }
+            }else{
+                member = memberMapper.selectById(applyChagneDetail.getMemberId());
+                if(Objects.isNull(member)){
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戞湭鏌ヨ鍒扮郴缁熶汉鍛樹俊鎭�");
+                }
+                member.setApplyId(insuranceApply.getId());
+                member.setDuId(applyChagneDetail.getDuId());
+                member.setWorktypeId(applyChagneDetail.getWorktypeId());
+                memberMapper.updateById(member);
             }
             //鏌ヨ鍛樺伐鏄惁瀛樺湪  0寰呯缃� 1宸茬绔� 鐨勬绫讳笟鍔′繚鏁版嵁 鍚屼竴涓诲崟涓�
             if (applyChagneDetailJoinMapper.selectJoinCount(
@@ -626,30 +697,31 @@
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄧ敵璇蜂腑鐨勫姞鍑忎繚/鎹㈠巶鍗曟嵁");
             }
             //鏌ヨ鍛樺伐鏄湪涓诲崟涓� 鏄惁瀛樺湪鐢熸晥涓殑鏁版嵁
-            if (applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>().lambda()
-                    .eq(ApplyDetail::getApplyId, applyChange.getApplyId())
-                    .eq(ApplyDetail::getMemberId, applyChagneDetail.getMemberId())
-                    .le(ApplyDetail::getStartTime, "now()")
-                    .ge(ApplyDetail::getEndTime, "now()")
-            ) > Constants.ZERO) {
-                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄤ繚闅滀腑鐨勪繚鍗曚俊鎭紝鏃犳硶杩涜鍔犱繚");
+            if(!Objects.isNull(applyChagneDetail.getMemberId())){
+                if (applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>().lambda()
+                        .eq(ApplyDetail::getApplyId, applyChange.getApplyId())
+                        .eq(ApplyDetail::getMemberId, applyChagneDetail.getMemberId())
+                        .le(ApplyDetail::getStartTime, "now()")
+                        .ge(ApplyDetail::getEndTime, "now()")
+                ) > Constants.ZERO) {
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄤ繚闅滀腑鐨勪繚鍗曚俊鎭紝鏃犳硶杩涜鍔犱繚");
+                }
             }
-
             //楠岃瘉娲鹃仯鍗曚綅淇℃伅 涓庡伐绉嶄俊鎭� 鏄惁瀛樺湪
             if (duSolutionList.stream().filter(d -> d.getDispatchUnitId().equals(applyChagneDetail.getDuId())).collect(Collectors.toList()).size() <= Constants.ZERO) {
                 throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "銆�" + applyChagneDetail.getMemberName() + "銆戝憳宸ユ淳閬e崟浣嶆湭鏌ヨ鍒帮紒");
             }
-            if (duWorktypeList.stream().filter(d -> d.getDuSolutionId().equals(applyChagneDetail.getDuId()) && d.getWorkTypeId().equals(applyChagneDetail.getWorktypeId()))
+            if (duWorktypeList.stream().filter(d ->  d.getWorkTypeId().equals(applyChagneDetail.getWorktypeId()))
                     .collect(Collectors.toList()).size() <= Constants.ZERO) {
                 throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "銆�" + applyChagneDetail.getMemberName() + "銆戝憳宸ュ伐绉嶄俊鎭湭鏌ヨ鍒帮紒");
             }
+            applyChagneDetail.setMemberId(member.getId());
             applyChagneDetail.setCreateDate(new Date());
             applyChagneDetail.setCreator(loginUserInfo.getId());
             applyChagneDetail.setIsdeleted(Constants.ZERO);
             applyChagneDetail.setApplyChangeId(applyChange.getId());
             applyChagneDetail.setType(Constants.ZERO);
             applyChagneDetail.setFee(
-
                     Constants.countDetailFee(solutions,insuranceApply.getEndTime(),applyChange.getValidTime())
             );
             applyChagneDetailJoinMapper.insert(applyChagneDetail);
@@ -692,20 +764,20 @@
             List<ApplyDetail>  applyDetailList = applyDetailJoinMapper.selectList(new QueryWrapper<ApplyDetail>().lambda()
                     .eq(ApplyDetail::getApplyId, applyChange.getApplyId())
                     .eq(ApplyDetail::getMemberId, applyChagneDetail.getMemberId())
-                    .le(ApplyDetail::getStartTime, "now()")
-                    .ge(ApplyDetail::getEndTime, "now()"));
+                    .le(ApplyDetail::getStartTime, DateUtil.getDate(new Date(),"yyyy-MM-dd HH:mm:ss"))
+                    .ge(ApplyDetail::getEndTime, DateUtil.getDate(new Date(),"yyyy-MM-dd HH:mm:ss")));
             if(applyDetailList.size()>Constants.ONE){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎹㈠巶浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戜繚鍗曚俊鎭紓甯革紝瀛樺湪澶氭潯鏁版嵁");
             }
             ApplyDetail applyDetail = applyDetailList.get(Constants.ZERO);
-            if(applyChange.getValidTime().compareTo( applyDetail.getEndTime())<=0){
-                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎹㈠巶浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戜繚鍗曚繚闅滄棩鏈熻嚦锛氥��"+applyDetail.getEndTime()+"銆戞棤娉曢�氳繃鏈鐢宠");
+            if(applyChange.getValidTime().compareTo( applyDetail.getEndTime())>0){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎹㈠巶浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戜繚鍗曚繚闅滄棩鏈熻嚦锛氥��"+DateUtil.getDate(applyDetail.getEndTime(),"yyyy-MM-dd HH:mm:ss")+"銆戞棤娉曢�氳繃鏈鐢宠");
             }
             //楠岃瘉娲鹃仯鍗曚綅淇℃伅 涓庡伐绉嶄俊鎭� 鏄惁瀛樺湪
             if (duSolutionList.stream().filter(d -> d.getDispatchUnitId().equals(applyChagneDetail.getDuId())).collect(Collectors.toList()).size() <= Constants.ZERO) {
                 throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "鎹㈠巶浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝憳宸ユ淳閬e崟浣嶆湭鏌ヨ鍒帮紒");
             }
-            if (duWorktypeList.stream().filter(d -> d.getDuSolutionId().equals(applyChagneDetail.getDuId()) && d.getWorkTypeId().equals(applyChagneDetail.getWorktypeId()))
+            if (duWorktypeList.stream().filter(d ->  d.getWorkTypeId().equals(applyChagneDetail.getWorktypeId()))
                     .collect(Collectors.toList()).size() <= Constants.ZERO) {
                 throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "鎹㈠巶浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝憳宸ュ伐绉嶄俊鎭湭鏌ヨ鍒帮紒");
             }
@@ -1116,4 +1188,29 @@
     }
 
 
+    @Override
+    public CountCyclePriceVO getChangeCountCyclePriceVO(ApplyChangeCyclePriceDTO applyChangeCyclePriceDTO){
+        if(Objects.isNull(applyChangeCyclePriceDTO)
+            || Objects.isNull(applyChangeCyclePriceDTO.getApplyId())
+            || Objects.isNull(applyChangeCyclePriceDTO.getValidTime())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+
+        InsuranceApply insuranceApply = insuranceApplyMapper.selectById(applyChangeCyclePriceDTO.getApplyId());
+        if(Objects.isNull(insuranceApply)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌淇濆崟");
+        }
+        Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈡柟妗堜俊鎭�");
+        }
+        CountCyclePriceVO countCyclePriceVO = new CountCyclePriceVO();
+        countCyclePriceVO.setCyclePrice(Constants.countDetailFee(solutions,insuranceApply.getEndTime(),applyChangeCyclePriceDTO.getValidTime()));
+        return countCyclePriceVO;
+
+    }
+
+
+
+
 }
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java
index e88c688..078c04e 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java
@@ -856,7 +856,8 @@
                         .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
                         .eq(loginUserInfo.getType().equals(Constants.ONE),DispatchUnit::getCompanyId,loginUserInfo.getCompanyId())
                         .eq(DispatchUnit::getStatus,Constants.ZERO)
-                        .eq(DispatchUnit::getDataType,dispatchUnitQueryDTO.getDataType())
+                        //.eq(DispatchUnit::getDataType,dispatchUnitQueryDTO.getDataType())
+                        .eq(DispatchUnit::getDataType,Constants.TWO)
                         .eq(!Objects.isNull(dispatchUnitQueryDTO.getSolutionId()),DuSolution::getSolutionId,dispatchUnitQueryDTO.getSolutionId())
                         .exists(!Objects.isNull(dispatchUnitQueryDTO.getApplyId()),
                                 " select 1 from apply_detail ad where ad.isdeleted = 0 and ad.apply_id = "+dispatchUnitQueryDTO.getApplyId()+" " +
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
index b3c53e3..d9c548e 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -17,6 +17,7 @@
 import com.doumee.dao.business.dto.InsuranceApplyQueryDTO;
 import com.doumee.dao.business.join.ApplyDetailJoinMapper;
 import com.doumee.dao.business.join.ApplyLogJoinMapper;
+import com.doumee.dao.business.join.DuSolutionJoinMapper;
 import com.doumee.dao.business.join.InsuranceApplyJoinMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.vo.CountCyclePriceVO;
@@ -86,6 +87,8 @@
     private MemberMapper memberMapper;
     @Autowired
     private DuSolutionMapper duSolutionMapper;
+    @Autowired
+    private DuSolutionJoinMapper duSolutionJoinMapper;
     @Autowired
     private DuWorktypeMapper duWorktypeMapper;
 
@@ -704,7 +707,12 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈煡璇㈠埌鏂规淇℃伅");
         }
         //鏌ヨ淇濋櫓鏂规涓嬬殑鎵�鏈夋淳閬e崟浣�
-        List<DuSolution> duSolutionList = duSolutionMapper.selectList(new QueryWrapper<DuSolution>().lambda()
+        List<DuSolution>  duSolutionList = duSolutionJoinMapper.selectJoinList(DuSolution.class,new MPJLambdaWrapper<DuSolution>()
+                .selectAll(DuSolution.class)
+                .innerJoin(DispatchUnit.class,DispatchUnit::getId,DuSolution::getDispatchUnitId)
+                .eq(DispatchUnit::getCompanyId,insuranceApply.getCompanyId())
+                .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
+                .eq(DispatchUnit::getUnitStatus,Constants.ONE)
                 .eq(DuSolution::getIsdeleted,Constants.ZERO)
                 .eq(DuSolution::getStatus,Constants.ONE)
                 .eq(DuSolution::getSolutionId,insuranceApply.getSolutionId()));
@@ -1044,7 +1052,7 @@
         MPJLambdaWrapper wrapper=  new MPJLambdaWrapper<InsuranceApply>()
                 .selectAll(InsuranceApply.class)
                 .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
-                .selectAs(Company::getName,ApplyLog::getCompanyName)
+                .selectAs(Company::getName,InsuranceApply::getCompanyName)
                 .select(" ( select count(1) from apply_detail ad  where ad.apply_id = t.id ) as insureNum")
                 .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
                 .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
@@ -1056,6 +1064,11 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
 
+        if(insuranceApply.getStartTime().compareTo(new Date())<0  && insuranceApply.getEndTime().compareTo(new Date()) > 0 ){
+            insuranceApply.setLoseEfficacyDays(DateUtil.daysBetweenDates(insuranceApply.getEndTime(),new Date()));
+        }
+
+
         initApplyStatus(insuranceApply);
 
         //鏌ヨ闄勪欢鏁版嵁
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index f5ec6a9..a81f8fe 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -219,7 +219,8 @@
 
     @Override
     public List<Member> findListByDTO(MemberQueryDTO memberQueryDTO) {
-        List<Member> memberList = memberJoinMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
+
+        MPJLambdaWrapper<Member> lambdaWrapper = new MPJLambdaWrapper<Member>()
                 .selectAll(Member.class)
                 .selectAs(DispatchUnit::getName,Member::getDuName)
                 .selectAs(Worktype::getName,Member::getWorkTypeName)
@@ -229,9 +230,25 @@
                 .eq(!Objects.isNull(memberQueryDTO.getCompanyId()),Member::getCompanyId,memberQueryDTO.getCompanyId())
                 .eq(Member::getIsdeleted, Constants.ZERO)
                 .like(StringUtils.isNotBlank(memberQueryDTO.getName()),Member::getName, memberQueryDTO.getName())
-                .notExists(!Objects.isNull(memberQueryDTO.getInsuranceApplyId()),
-                        " select 1 from apply_detail ad where ad.applyId = "+memberQueryDTO.getInsuranceApplyId()+" and ad.END_TIME > now() and ad.isdeleted = 0 " +
-                                " and ad.member_id = t.id ")
+                .notExists(!Objects.isNull(memberQueryDTO.getNotInInsuranceApplyId()),
+                        " select 1 from apply_detail ad where ad.apply_id = "+memberQueryDTO.getNotInInsuranceApplyId()+" and ad.END_TIME > now() and ad.isdeleted = 0 " +
+                                " and ad.member_id = t.id ");
+        if(!Objects.isNull(memberQueryDTO.getInsuranceApplyId())){
+            lambdaWrapper = new MPJLambdaWrapper<Member>()
+                    .selectAll(Member.class)
+                    .selectAs(DispatchUnit::getName,Member::getDuName)
+                    .selectAs(Worktype::getName,Member::getWorkTypeName)
+                    .leftJoin(ApplyDetail.class,ApplyDetail::getMemberId,Member::getId)
+                    .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId)
+                    .leftJoin(DispatchUnit.class,DispatchUnit::getId,ApplyDetail::getDuId)
+                    .leftJoin(Worktype.class,Worktype::getId,ApplyDetail::getWorktypeId)
+                    .eq(Member::getIsdeleted, Constants.ZERO)
+                    .eq(InsuranceApply::getId,memberQueryDTO.getInsuranceApplyId())
+                    .exists(!Objects.isNull(memberQueryDTO.getInsuranceApplyId()),
+                            " select 1 from apply_detail ad where ad.apply_id = "+memberQueryDTO.getInsuranceApplyId()+" and ad.END_TIME > now() and ad.isdeleted = 0 " +
+                                    " and ad.member_id = t.id ");
+        }
+        List<Member> memberList = memberJoinMapper.selectJoinList(Member.class,lambdaWrapper
         );
         return memberList;
     }
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/WorktypeServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/WorktypeServiceImpl.java
index ec13e9d..d1adcf4 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/WorktypeServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/WorktypeServiceImpl.java
@@ -102,6 +102,7 @@
     public List<Worktype> findListByDTO(WorkTypeQueryDTO workTypeQueryDTO){
         List<Worktype> list = worktypeMapper.selectList(new QueryWrapper<Worktype>().lambda()
                 .eq(Worktype::getIsdeleted,Constants.ZERO)
+                .eq(Worktype::getDataType,Constants.TWO)
                 .apply(workTypeQueryDTO.getQueryType().equals(Constants.ZERO),
                         "id in ( select  sw.worktype_id from solution_worktype sw where sw.SOLUTION_ID = "+workTypeQueryDTO.getId()+" )")
                 .apply(workTypeQueryDTO.getQueryType().equals(Constants.ONE),
--
Gitblit v1.9.3