From 663dbe4ddca1fa409e6acbc1f77d924c161b0c39 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 09 六月 2025 17:04:50 +0800
Subject: [PATCH] 提交一把订单

---
 company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue |  385 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 250 insertions(+), 135 deletions(-)

diff --git a/company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue b/company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue
index b079e87..2b3f5b0 100644
--- a/company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue
+++ b/company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue
@@ -10,7 +10,7 @@
     <div class="list">
       <el-form :inline="true" ref="form" :model="form" :rules="rules" class="demo-form-inline">
         <el-form-item label="淇濋櫓鏂规" prop="solutionId">
-          <el-select v-model="form.solutionId" @change="changeSolution" placeholder="璇烽�夋嫨">
+          <el-select v-model="form.solutionId" filterable @change="changeSolution" placeholder="璇烽�夋嫨">
             <el-option
                 v-for="item in company"
                 :key="item.id"
@@ -48,17 +48,17 @@
               placeholder="閫夋嫨鏃ユ湡">
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="鎶曚繚骞撮緞" v-if="item">
+<!--        <el-form-item label="鎶曚繚骞撮緞" v-if="item && item.id !=null">
           <span>{{item.minAge}} 鑷� {{item.maxAge}}</span>
         </el-form-item>
-        <el-form-item label="璐圭敤" v-if="item && item.type ==0">
+        <el-form-item label="璐圭敤" v-if="item && item.id !=null">
           <span>{{item.price}}鍏�</span>
           <span v-if="item.timeUnit === 0">/澶�</span>
           <span v-if="item.timeUnit === 1">/鍗婃湀</span>
           <span v-if="item.timeUnit === 2">/鏈�</span>
           <span v-if="item.timeUnit === 3">/骞�</span>
           <span>/浜�</span>
-        </el-form-item>
+        </el-form-item>-->
       </el-form>
     </div>
     <div class="btns">
@@ -69,35 +69,53 @@
         <el-button type="danger" @click="deleItem">鍒犻櫎</el-button>
       </div>
       <div class="btns_item">
-        <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>
+        <div style="display: inline-block;margin-right: 30px;font-size: 14px" v-if="item && item.id !=null">
+          <span>鎶曚繚骞撮緞锛�</span>
+          <span>{{item.minAge}} 鑷� {{item.maxAge}}鍛ㄥ瞾</span>
+          <span style="margin-left: 20px">璐圭敤锛�</span>
+          <span>{{item.price}}鍏�</span>
+          <span v-if="item.timeUnit === 0">/澶�</span>
+          <span v-if="item.timeUnit === 1">/鍗婃湀</span>
+          <span v-if="item.timeUnit === 2">/鏈�</span>
+          <span v-if="item.timeUnit === 3">/骞�</span>
+          <span>/浜�</span>
+        </div>
+        <div style="display: inline-block;margin-right: 30px;font-size: 14px"><span>鍚堣璐圭敤锛�</span>
+        <span style="font-weight: bold;color: red">{{sumFee}}</span>鍏�
+        </div>
+        <el-button type="primary" @click="sele(1)" v-if="item && item.hasDispatchUnit !== 1">閫夊彇娲鹃仯鍗曚綅</el-button>
+        <el-button type="primary" @click="sele(2)" v-if="item && item.hasDispatchUnit === 1">閫夊彇宸ョ</el-button>
       </div>
     </div>
-    <el-table
+<!--    show-summary
+    :summary-method="getSummaries"-->
+    <u-table
         :data="tableData"
         border
-        show-summary
-        :summary-method="getSummaries"
+        use-virtual
+        :row-height="30"
+        :height="680"
         ref="multipleTable"
         @selection-change="handleSelectionChange"
         style="width: 100%;margin-bottom: 15px;">
-      <el-table-column
+      <u-table-column
           type="selection"
           width="55">
-      </el-table-column>
-      <el-table-column label="搴忓彿" width="80px">
+      </u-table-column>
+      <u-table-column label="搴忓彿" width="80px">
         <template slot-scope="scope">
           <span>{{scope.$index + 1}}</span>
         </template>
-      </el-table-column>
-      <el-table-column
+      </u-table-column>
+      <u-table-column
           prop="memberName"
           label="濮撳悕">
-      </el-table-column>
-      <el-table-column
+      </u-table-column>
+      <u-table-column
           prop="idCard"
           label="韬唤璇佸彿">
-      </el-table-column>
-      <el-table-column
+      </u-table-column>
+      <u-table-column
           label="骞撮緞">
         <template slot-scope="{row}">
           <template v-if="item">
@@ -105,41 +123,42 @@
             <span v-else>{{ getAgeByIdCard(row.idCard) }}</span>
           </template>
         </template>
-      </el-table-column>
-      <el-table-column
+      </u-table-column>
+      <u-table-column
+          v-if="item && item.hasDispatchUnit !== 1"
           prop="duName"
           label="娲鹃仯鍗曚綅">
-      </el-table-column>
-      <el-table-column
+      </u-table-column>
+      <u-table-column
           prop="workTypeName"
           label="鎵�灞炲伐绉�">
-      </el-table-column>
-      <el-table-column
+      </u-table-column>
+      <u-table-column
           prop="fee"
           label="璐圭敤">
         <template slot-scope="{row}">
-          {{item.type==1?'-':row.fee}}
+          {{row.fee}}
         </template>
-      </el-table-column>
-      <el-table-column
+      </u-table-column>
+      <u-table-column
           prop="remark"
           align="center"
           label="澶囨敞">
         <template slot-scope="{row}">
           <el-input v-model="row.remark" placeholder="璇疯緭鍏�"></el-input>
         </template>
-      </el-table-column>
-      <el-table-column
+      </u-table-column>
+      <u-table-column
           label="鎿嶄綔">
         <template slot-scope="scope">
           <el-button type="text" style="color: red;" @click="dele(scope.$index)">鍒犻櫎</el-button>
         </template>
-      </el-table-column>
-    </el-table>
+      </u-table-column>
+    </u-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>
+      <span v-if="item.specialAgreement"  v-html="item.specialAgreement"></span>
+      <span v-if="item.specialInfo" v-html="item.specialInfo"> </span>
+      <span v-if="item.ortherInfo" v-html="item.ortherInfo"></span>
     </div>
     <!--    閫夋嫨鍛樺伐    -->
     <selectEmployees ref="selectEmployees" @result="getValue" />
@@ -162,29 +181,37 @@
 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 addEmployee from '@/components/enterprise/addEmployeeWithDu'
 import importEmployees from '@/components/enterprise/importEmployees'
 import confirmJobType from '@/components/enterprise/confirmJobType'
 import detailsPolicyholder from '@/components/business/detailsPolicyholder'
-// import OperaInsuranceApplyDetails from '@/components/business/OperaInsuranceApplyWindow'
-// import OperaWtbApplyShopWindow from '@/components/business/OperaWtbApplyShopWindow'
-import { all, getNewVersion } from '@/api/business/solutions'
+import { all, getNewVersion, getUseList } from '@/api/business/solutions'
 import { mapState } from 'vuex'
-import { create, getCountCyclePriceVO, getDetail, findList, updateData } from '@/api/business/insuranceApply'
+import { create, getCountCyclePriceVO, getDetail, findList } from '@/api/business/insuranceApply'
+import { UTable, UTableColumn } from 'umy-ui'
 export default {
-  name: 'OperaInsuranceApplyAddWindow',
+  name: 'OperaInsuranceApplyAddWindowNew',
   extends: BaseOpera,
-  components: { GlobalWindow, selectEmployees, addEmployee,importEmployees, confirmJobType, detailsPolicyholder
-    // ,  OperaWtbApplyShopWindow, OperaInsuranceApplyDetails
+  components: {
+    GlobalWindow,
+    selectEmployees,
+    addEmployee,
+    importEmployees,
+    confirmJobType,
+    detailsPolicyholder,
+    UTable,
+    UTableColumn
   },
   data () {
     return {
+      sumFee: 0,
       form: {
         id: null,
         ID: null,
         solutionId: '',
         applyStartTime: '',
-        applyEndTime: ''
+        applyEndTime: '',
+        companyId: null
       },
       solutionName: '',
       type: '',
@@ -214,6 +241,17 @@
   computed: {
     ...mapState(['userInfo'])
   },
+  watch: {
+    // 鐩戝惉tableData鐨勫彉鍖�
+    tableData: {
+      deep: true,
+      handler (newVal, oldVal) {
+        // 鏁版嵁鍙樺寲鏃剁殑澶勭悊閫昏緫
+        this.getSummaries2()
+        console.log(this.tableData.length)
+      }
+    }
+  },
   methods: {
     successEvent () {
       const arr = JSON.parse(JSON.stringify(this.tableData))
@@ -223,29 +261,24 @@
       this.isWorking = true
       // if (!this.form.id) {
       create({
+        companyId: this.form.companyId,
         applyDetailList: arr,
         applyStartTime: this.form.applyStartTime,
         applyEndTime: this.form.applyEndTime,
         solutionId: this.form.solutionId
-      }).then(res=> {
+      }).then(res => {
         console.log(res)
-        this.visible = false
-        if (this.item.type == 1) {
-          // this.$refs.OperaWtbApplyShopWindow.open('濮旀墭鎶曚繚璇︽儏', { id: res })
-          this.$emit('success','濮旀墭鎶曚繚璇︽儏', { id: res })
-        } else {
-          // this.$refs.OperaInsuranceApplyDetails.open('鎶曚繚璇︽儏', { id: res })
-          this.$emit('success','鎶曚繚璇︽儏', { id: res })
-        }
+        this.$emit('success', 1, { id: res,godetail:true,type:this.item.type})
         this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+        this.visible = false
         // this.$emit('success','濮旀墭鎶曚繚璇︽儏', { id: res })
       })
-          .catch(e => {
-            this.$tip.apiFailed(e)
-          })
-          .finally(() => {
-            this.isWorking = false
-          })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+          this.isWorking = false
+        })
       // } else {
       //     updateData({
       //         id: this.form.id,
@@ -276,6 +309,10 @@
       this.form.solutionId = ''
       this.form.applyStartTime = ''
       this.form.applyEndTime = ''
+      if (target.companyId) {
+        this.form.companyId = target.companyId
+        this.form.companyName = target.companyName
+      }
       if (target && target.id) {
         this.$nextTick(() => {
           this.$refs.form.resetFields()
@@ -295,45 +332,57 @@
     // 鑾峰彇鎶曚繚璇︽儏
     getDetails () {
       findList({ applyId: this.form.id })
-          .then(res => {
-            res.forEach(item => {
-              console.log(item)
-              item.idCard = item.idcardNo
-              item.fee = ''
-              if (this.type === 1) {
-                item.duName = ''
-                item.duId = ''
-                item.worktypeId = ''
-                item.workTypeName = ''
-              }
-            })
-            this.tableData = res
+        .then(res => {
+          res.forEach(item => {
+            console.log(item)
+            item.idCard = item.idcardNo
+            item.fee = ''
+            if (this.type === 1) {
+              // item.duName = ''
+              // item.duId = ''
+              // item.worktypeId = ''
+              // item.workTypeName = ''
+            }
           })
+          this.tableData = res
+        })
       getDetail(this.form.id)
-          .then(res => {
-            // this.form.solutionId = res.solutionId
-            this.changeSolution1(res.solutionId)
-          })
+        .then(res => {
+          // this.form.solutionId = res.solutionId
+          this.changeSolution1(res.solutionId)
+        })
     },
-    getSummaries (param) {
-      const { columns, data } = param
+    getSummaries ({ columns, data }) {
       const sums = []
+      // this.currentData = data; //璁板綍褰撳墠椤垫暟鎹�;
       columns.forEach((column, index) => {
-        if (index === 0) {
+        if (index == 0) {
           sums[index] = '鎬讳环'
-        } else if (index === 7) {
-          if(this.item || this.item.type == 1){
-            sums[index] = "-"
-          }else{
-            let total = 0
-            this.tableData.forEach(item => {
-              total += item.fee
-            })
-            sums[index] = total.toFixed(2)
-          }
+        } else if (index == 7) {
+          // if (this.item || this.item.type == 1) {
+          //   sums[index] = '-'
+          // } else {
+          let total = 0
+          this.tableData.forEach(item => {
+            total += item.fee
+          })
+          sums[index] = total.toFixed(2)
+          // }
+        } else {
+          sums[index] = ''
         }
       })
+      console.log(sums)
       return sums
+    },
+    getSummaries2 () {
+      this.sumFee = 0
+      if (this.tableData && this.tableData.length) {
+        this.tableData.forEach((column, index) => {
+          this.sumFee = parseFloat(this.sumFee) + parseFloat(column.fee)
+        })
+        this.sumFee = (this.sumFee || 0).toFixed(2)
+      }
     },
     deleItem () {
       if (this.seleData.length === 0) {
@@ -347,6 +396,7 @@
           }
         })
       })
+      // this.getSummaries2()
     },
     confirm () {
       this.$refs.form.validate((valid) => {
@@ -355,31 +405,90 @@
             this.$message.warning('鑷冲皯娣诲姞涓�椤瑰憳宸�')
             return
           }
-          for (let i = 0; i < this.tableData.length; i++) {
-            console.log(this.tableData[i].worktypeId)
-            console.log(this.tableData[i].duId)
-            if (!this.tableData[i].worktypeId || !this.tableData[i].duId) {
-              this.$message.warning('璇峰畬鍠勬淳閬e崟浣嶅拰宸ョ淇℃伅')
-              return
+          if (this.item.hasDispatchUnit !== 1) {
+            for (let i = 0; i < this.tableData.length; i++) {
+              if (!this.tableData[i].worktypeId || !this.tableData[i].duId) {
+                this.$message.warning('璇峰畬鍠勬淳閬e崟浣嶅拰宸ョ淇℃伅')
+                return
+              }
+            }
+          } else {
+            for (let i = 0; i < this.tableData.length; i++) {
+              if (!this.tableData[i].worktypeId) {
+                this.$message.warning('璇峰畬鍠勬淳宸ョ淇℃伅')
+                return
+              }
             }
           }
-
           let price = 0
-          if (this.item && this.item.type != 1) {
-            this.tableData.forEach(item => {
-              price = price + item.fee
-            })
-          }
-          this.$refs.detailsPolicyholder.open('鎶曚繚璇︽儏鍗�', {
-            companyName: this.userInfo.company.name,
-            solutionName: this.item.name,
-            solutionType: this.item.type,
-            applyStartTime: this.form.applyStartTime,
-            applyEndTime: this.form.applyEndTime,
-            insureNum: this.tableData.length,
-            totalPrice: price,
-            detailList: this.tableData
+          // if (this.item && this.item.type != 1) {
+          this.tableData.forEach(item => {
+            price = price + item.fee
           })
+          // }
+          const endTime = Number(this.item.correctWarnTime.split(':')[0] + this.item.correctWarnTime.split(':')[1])
+          const now = new Date();
+          const hours = now.getHours();
+          const minutes = now.getMinutes();
+          const date = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
+          const startTime = Number(date.split(':')[0] + date.split(':')[1])
+          if (startTime > endTime) {
+            this.$confirm('鎮ㄥ凡瓒呰繃褰撳ぉ鏈�鏅氭壒鏀规椂闂达紝淇濆崟瀹為檯鐢熸晥鏃堕棿浠ヤ繚闄╁叕鍙稿鏍镐负鍑嗭紒', '鎻愮ず', {
+              confirmButtonText: '纭畾',
+              cancelButtonText: '鍙栨秷',
+              type: 'warning'
+            }).then(() => {
+              if (!this.form.companyId) {
+                this.$refs.detailsPolicyholder.open('鎶曚繚璇︽儏鍗�', {
+                  companyName: this.userInfo.company.name,
+                  solutionName: this.item.name,
+                  solutionType: this.item.type,
+                  applyStartTime: this.form.applyStartTime,
+                  applyEndTime: this.form.applyEndTime,
+                  insureNum: this.tableData.length,
+                  totalPrice: price,
+                  detailList: this.tableData
+                })
+              } else {
+                this.$refs.detailsPolicyholder.open('鎶曚繚璇︽儏鍗�', {
+                  companyName: this.form.companyName,
+                  solutionName: this.item.name,
+                  solutionType: this.item.type,
+                  applyStartTime: this.form.applyStartTime,
+                  applyEndTime: this.form.applyEndTime,
+                  insureNum: this.tableData.length,
+                  totalPrice: price,
+                  detailList: this.tableData
+                })
+              }
+            }).catch(() => {
+
+            });
+          } else {
+            if (!this.form.companyId) {
+              this.$refs.detailsPolicyholder.open('鎶曚繚璇︽儏鍗�', {
+                companyName: this.userInfo.company.name,
+                solutionName: this.item.name,
+                solutionType: this.item.type,
+                applyStartTime: this.form.applyStartTime,
+                applyEndTime: this.form.applyEndTime,
+                insureNum: this.tableData.length,
+                totalPrice: price,
+                detailList: this.tableData
+              })
+            } else {
+              this.$refs.detailsPolicyholder.open('鎶曚繚璇︽儏鍗�', {
+                companyName: this.form.companyName,
+                solutionName: this.item.name,
+                solutionType: this.item.type,
+                applyStartTime: this.form.applyStartTime,
+                applyEndTime: this.form.applyEndTime,
+                insureNum: this.tableData.length,
+                totalPrice: price,
+                detailList: this.tableData
+              })
+            }
+          }
         }
       })
     },
@@ -428,32 +537,33 @@
         this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
         return
       }
-      this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.tableData, price: this.price, type: 1 })
+      this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.tableData, price: this.price, type: 1, companyId: this.form.companyId })
     },
     addUser () {
       if (!this.form.solutionId) {
         this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
         return
       }
-      this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.tableData, price: this.price })
+      this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.tableData, price: this.price, solutionId: this.form.solutionId, hasDispatchUnit: this.item.hasDispatchUnit, companyId: this.userInfo.type === 1 ? this.userInfo.companyId : this.form.companyId })
     },
     uploadUser () {
       if (!this.form.solutionId) {
         this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
         return
       }
-      this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.tableData, solutionId: this.form.solutionId, type: 1, price: this.price })
+      this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.tableData, solutionId: this.form.solutionId, type: 1, hasDispatchUnit: this.item.hasDispatchUnit, price: this.price })
     },
     // 鍒囨崲鏂规
     changeSolution (e) {
+      this.sumFee = 0
       this.form.applyEndTime = ''
       this.form.applyStartTime = ''
       if (!this.form.id) {
         this.tableData = []
       } else {
-        this.price = ''
+        this.price = 0
         this.tableData.forEach(item => {
-          item.fee = ''
+          item.fee = 0
           item.duName = ''
           item.duId = ''
           item.workTypeName = ''
@@ -462,11 +572,11 @@
       }
       this.company.forEach(item => {
         if (item.id === e) {
-          // this.price = item.price
+          this.price = item.price
           this.item = item
-          if(this.item && this.item.type==1){
-            this.item.fee=0
-          }
+          // if (this.item && this.item.type == 1) {
+          //   this.item.fee = 0
+          // }
           this.updatePickerOptions()
         }
       })
@@ -477,25 +587,25 @@
     // 鍒囨崲鏂规
     changeSolution1 (e) {
       getNewVersion(e)
-          .then(res => {
-            this.form.solutionId = res.id
-            this.company.forEach(item => {
-              if (item.id === res.id) {
-                // this.price = item.price
-                this.item = item
-                if(this.item && this.item.type==1){
-                  this.item.fee=0
-                }
-                this.updatePickerOptions()
-              }
-            })
+        .then(res => {
+          this.form.solutionId = res.id
+          this.company.forEach(item => {
+            if (item.id === res.id) {
+              this.price = item.price
+              this.item = item
+              this.updatePickerOptions()
+            }
           })
+        })
       this.tableData.forEach(item => {
+        // if (this.item.type != 0) {
         item.fee = this.price
+        // }
       })
     },
     dele (index) {
       this.tableData.splice(index, 1)
+      // this.getSummaries2()
     },
     getUser (obj) {
       this.seleData.forEach(id => {
@@ -512,7 +622,7 @@
       this.$refs.multipleTable.clearSelection()
     },
     // 閫夋嫨鍛樺伐
-    sele () {
+    sele (type) {
       if (!this.form.solutionId) {
         this.$message.warning('璇烽�夋嫨淇濋櫓鏂规')
         return
@@ -521,14 +631,18 @@
         this.$message.warning('璇烽�夋嫨鍛樺伐')
         return
       }
-      this.$refs.confirmJobType.open('纭宸ョ', { solutionId: this.form.solutionId })
+      this.$refs.confirmJobType.open('纭宸ョ', { solutionId: this.form.solutionId, type })
     },
     // 鏌ヨ鍏ㄩ儴鏂规
     getCompany () {
-      all({})
-          .then(res => {
-            this.company = res
-          })
+      getUseList(this.form.companyId ? this.form.companyId : this.userInfo.companyId, 2)
+        .then(res => {
+          this.company = res
+        })
+      // all({ companyId: this.form.companyId })
+      //   .then(res => {
+      //     this.company = res
+      //   })
     },
     getAgeByIdCard (idCard) {
       const sexAndAge = {}
@@ -559,6 +673,7 @@
     },
     getValue (list) {
       this.tableData.push(...list)
+      this.getSummaries2()
     }
   }
 }

--
Gitblit v1.9.3