Просмотр исходного кода

Merge branch 'dev' of http://39.101.143.165:8090/sxzgd/vue-insagent-pc into dev

lihongxiao 1 год назад
Родитель
Сommit
ba55aa0426

+ 1 - 1
config/prod.env.js

@@ -5,7 +5,7 @@ module.exports = {
   BASE_URL: '"https://sxzgkj.baoxianzhanggui.com/web-api"',
   CONSOLE_BASE_URL: '"https://sxzgkj.baoxianzhanggui.com/console-api"', //控制台测试服务器
   CONSOLE_KHGX_URL: '"https://sxzgkj.baoxianzhanggui.com/khgx/login"', //跳转客户服务平台地址
-  CONSOLE_ZGD_URL: '"http://sxzgkj.baoxianzhanggui.com"', //核心平台地址
+  CONSOLE_ZGD_URL: '"https://sxzgkj.baoxianzhanggui.com"', //核心平台地址
   APP_BASE_URL: '"https://pre.baoxianzhanggui.com/web-api"',    // app打包上传地址
   SOCKET_Url: '"wss://sxzgkj.baoxianzhanggui.com/web-api/"',
 

+ 1 - 1
config/test.env.js

@@ -11,6 +11,6 @@ module.exports = merge(prodEnv, {
   APP_BASE_URL: '"https://test.baoxianzhanggui.com/web-api"',    // app打包上传地址
   CONSOLE_BASE_URL: '"https://test.baoxianzhanggui.com/console-api"', //控制台测试服务器
   CONSOLE_KHGX_URL: '"https://test.baoxianzhanggui.com/khgx/login"', //跳转客户服务平台地址
-  CONSOLE_ZGD_URL: '"http://test.baoxianzhanggui.com"', //核心平台地址
+  CONSOLE_ZGD_URL: '"https://test.baoxianzhanggui.com"', //核心平台地址
   SOCKET_Url: '"wss://test.baoxianzhanggui.com/web-api/"',
 })

BIN
src/assets/image/title_khfw.png


+ 7 - 0
src/http/moudules/insCompany.js

@@ -58,6 +58,13 @@ export const agreementCopy = (data) => {
     data
   })
 }
+export const copyAgreementAllInformation = (data) => {
+  return axios({
+    url: '/plt/new/agreement/copyAgreementAllInformation',
+    method: 'post',
+    data
+  })
+}
 // 保存保险公司
 export const addCompany = (data) => {
   return axios({

+ 16 - 0
src/http/moudules/letter.js

@@ -1520,3 +1520,19 @@ export const yangGuangautoWriteOff = (data) => {
   })
 }
 
+// 站内信
+export const getMessage = (data) => {
+  return axios({
+    url: '/sys/message/get',
+    method: 'post',
+    data
+  })
+}
+
+// 站内信更改为已读状态
+export const updateMessage = (data) => {
+  return axios({
+    url: `/sys/message/update?id=${data}`,
+    method: 'post'
+  })
+}

+ 88 - 0
src/http/moudules/quote.js

@@ -1,5 +1,6 @@
 import axios from '../axios'
 
+// 获取保险公司
 export const getCompany  = () => {
   return axios({
     url: '/esmInsCompany/liveCompanyList',
@@ -7,6 +8,7 @@ export const getCompany  = () => {
   })
 }
 
+// 获取代理人
 export const getAgentUser = (data) => {
   return axios({
     url: '/user/queryPage',
@@ -15,6 +17,7 @@ export const getAgentUser = (data) => {
   })
 }
 
+// 报价配置
 export const setQuoteInfo = (data) => {
   return axios({
     url: '/quoteConfig/setQuoteInfo',
@@ -23,3 +26,88 @@ export const setQuoteInfo = (data) => {
   })
 }
 
+// 报价明细
+export const getQuoteDetails = (data) => {
+  return axios({
+    url: '/quoteConfig/quoteDetails',
+    method: 'post',
+    data
+  })
+}
+
+// 动作
+export const getQuoteAction = () => {
+  return axios({
+    url: '/quoteConfig/getQuoteAction',
+    method: 'get'
+  })
+}
+
+// 结果
+export const getQuoteResult = () => {
+  return axios({
+    url: '/quoteConfig/getQuoteResult',
+    method: 'get'
+  })
+}
+
+// 获取报价配置详情
+export const getQuoteConfigInfo = (data) => {
+  return axios({
+    url: `/quoteConfig/getQuoteConfigInfo?companyId=${data}`,
+    method: 'get'
+  })
+}
+
+// 报价管理
+export const quoteUserDetails = (data) => {
+  return axios({
+    url: '/quoteConfig/quoteUserDetails',
+    method: 'post',
+    data
+  })
+}
+
+// 报价次数配置
+export const quoteRequestDetail = () => {
+  return axios({
+    url: '/quoteConfig/quoteRequestDetail',
+    method: 'post'
+  })
+}
+
+// 同步配置
+export const syncQuoteInfo = (data) => {
+  return axios({
+    url: '/quoteConfig/syncQuoteInfo',
+    method: 'post',
+    data
+  })
+}
+
+// 增加次数
+export const appendUserConfig = (data) => {
+  return axios({
+    url: '/quoteConfig/appendUserConfig',
+    method: 'post',
+    data
+  })
+}
+
+// 增次明细
+export const getAppendUserQuotePage = (data) => {
+  return axios({
+    url: '/quoteConfig/getAppendUserQuotePage',
+    method: 'post',
+    data
+  })
+}
+
+// 增次明细详情
+export const getAppendUserQuoteInfo = (data) => {
+  return axios({
+    url: '/quoteConfig/getAppendUserQuoteInfo',
+    method: 'post',
+    data
+  })
+}

+ 9 - 1
src/http/moudules/user.js

@@ -739,4 +739,12 @@ export const saveUserInfoByPartne = (data) => {
     method: 'post',
     data
   })
-}
+}
+// 查询所有的后台用户
+export const findAllUsers = (data) => {
+  return axios({
+    url: '/sysUserLinkArea/findAllUsers',
+    method: 'post',
+    data
+  })
+}

+ 5 - 0
src/router/index.js

@@ -63,6 +63,11 @@ const router = new Router({
             icon: 'fa fa-home fa-lg',
             index: 3
           }
+        },
+        {
+          path: '/message',
+          name: '站内信',
+          component: () => import('@/views/message/index.vue')
         }
       ]
     },

+ 8 - 4
src/store/modules/user.js

@@ -4,7 +4,8 @@ export default {
     state: {
         perms: [],  // 用户权限标识集合
         token: getToken(),
-        roles:{}
+        roles:{},
+        myTimer: null,
     },
     getters: {
       // roles: state => state.roles
@@ -18,6 +19,9 @@ export default {
           },
         SET_USER: (state, roles) => {
           state.roles = roles
+        },
+        SET_TIMER: (state, myTimer) => {
+          state.myTimer = myTimer
         }
     },
     actions: {
@@ -59,7 +63,7 @@ export default {
               })
             })
           },
-      
-       
+
+
     }
-}
+}

+ 285 - 92
src/views/AgreementManage/CarInsurance/AgreementEntry.vue

@@ -140,8 +140,8 @@
         </div>
       </div>
       <el-table :size="overSize" ref="multipleTable" :data="pageResult" height="580" border v-loading="loading"
-        @selection-change="agreementSelectionChange" @select="handleSelectChange" @current-change="agreementCurrentChange" highlight-current-row stripe
-        :header-cell-style="{
+        @selection-change="agreementSelectionChange" @select="handleSelectChange" @current-change="agreementCurrentChange"
+        highlight-current-row stripe :header-cell-style="{
           background: '#F2F7FC',
           fontWeight: '700',
           color: '#606266',
@@ -158,13 +158,13 @@
         <el-table-column prop="dockingPerson" label="对接人" align="center"></el-table-column>
         <el-table-column prop="agreementType" label="协议类型" align="center" width="150"
           :formatter="agreementtypeFormatter"></el-table-column>
-        <el-table-column prop="startDate" label="协议生效日期" align="center"></el-table-column>
+        <el-table-column prop="startDate" label="协议生效日期" align="center" width="150"></el-table-column>
         <el-table-column prop="isExternal" label="外部订单" align="center">
           <template slot-scope="scope">
             <span>{{ scope.row.isExternal == '1' ? '是' : '否' }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="endDate" label="协议失效日期" align="center"></el-table-column>
+        <el-table-column prop="endDate" label="协议失效日期" align="center" width="150"></el-table-column>
         <el-table-column prop="matchType" label="匹配日期类型" align="center" :formatter="matchtypeFormatter"></el-table-column>
         <el-table-column prop="moneyTime" label="结算周期" align="center" :formatter="moneytimeFormatter"></el-table-column>
         <el-table-column prop="validStatus" label="是否启用" align="center">
@@ -195,12 +195,13 @@
             </span>
           </template>
         </el-table-column> -->
-        <el-table-column prop="feeFileName" label="文件名" align="center">
+        <el-table-column prop="feeFileName" label="文件名" align="center" width="150">
           <template slot-scope="scope">
             <el-link @click="downloadFile(scope.row)">{{ scope.row.feeFileName }}</el-link>
           </template>
         </el-table-column>
-        <el-table-column prop="updateTime" label="修改时间" align="center" :formatter="updatetimeFormatter"></el-table-column>
+        <el-table-column prop="updateTime" label="修改时间" align="center" :formatter="updatetimeFormatter"
+          width="150"></el-table-column>
         <el-table-column prop="modifiedName" label="修改人" align="center" width="130"></el-table-column>
         <el-table-column label="操作" align="center" width="200" fixed="right">
           <template slot-scope="scope">
@@ -211,14 +212,11 @@
             <kt-button label="删除" :size="overSize" type="text" perms="agreement:input:delete"
               @click="deletequery(scope.$index, scope.row)" style="color: #D42426 !important " />
             <kt-button label="协议轨迹" :size="overSize" type="text" perms="agreement:input:update"
-                       @click="handleTrajectory(scope.$index, scope.row)" style="color: #2D4D89 !important " />
-            <el-upload
-              action="#"
-              :show-file-list="false"
-              :auto-upload="false"
-              :on-change="(file) => handleUpload(file, scope.$index, scope.row)"
-            >
-              <kt-button label="上传费用文件" :size="overSize" type="text" perms="agreement:input:update" style="color: #2D4D89 !important " />
+              @click="handleTrajectory(scope.$index, scope.row)" style="color: #2D4D89 !important " />
+            <el-upload action="#" :show-file-list="false" :auto-upload="false"
+              :on-change="(file) => handleUpload(file, scope.$index, scope.row)">
+              <kt-button label="上传费用文件" :size="overSize" type="text" perms="agreement:input:update"
+                style="color: #2D4D89 !important " />
             </el-upload>
 
             <!-- <el-button type="text" size="mini">
@@ -250,8 +248,8 @@
       <div class="paginationCustom">
         <span class="selected">已选{{ selectedLength }}条 /</span>
         <el-pagination @size-change="handleSizeChange" background @current-change="handleCurrentChange"
-                       :current-page="pageNum" :page-sizes="[20, 50, 100, 200]" :page-size="pageSize"
-                       layout="total, sizes, prev, pager, next, jumper" :total="totalSize" style="float: right;margin-top: 5px; ">
+          :current-page="pageNum" :page-sizes="[20, 50, 100, 200]" :page-size="pageSize"
+          layout="total, sizes, prev, pager, next, jumper" :total="totalSize" style="float: right;margin-top: 5px; ">
         </el-pagination>
       </div>
     </el-main>
@@ -379,7 +377,8 @@
               <el-row>
                 <el-col :span="12">
                   <el-form-item label="选择机构">
-                    <el-select v-model="custodianIdData" placeholder="请选择对接管理人机构" :popper-append-to-body="false" style="width: 100%">
+                    <el-select v-model="custodianIdData" placeholder="请选择对接管理人机构" :popper-append-to-body="false"
+                      style="width: 100%">
                       <el-option :value="custodianIdTree" class="deptOption">
                         <el-tree :data="internalDept" :props="defaultProps" ref="tree1" :highlight-current="true"
                           @node-click="handleNodeClick1" default-expand-all></el-tree>
@@ -389,7 +388,8 @@
                 </el-col>
                 <el-col :span="12">
                   <el-form-item label="对接管理人">
-                    <el-select v-model="agreement.custodianId" filterable clearable placeholder="请选择对接管理人" style="width: 100%">
+                    <el-select v-model="agreement.custodianId" filterable clearable placeholder="请选择对接管理人"
+                      style="width: 100%">
                       <el-option v-for="item in custodianList" :key="item.dictValue" :label="item.name"
                         :value="item.userId"></el-option>
                     </el-select>
@@ -417,8 +417,8 @@
               <el-row>
                 <el-col :span="12">
                   <el-form-item label="协议生效日期" prop="startDate">
-                    <el-date-picker style="width: 100%" v-model="agreement.startDate" type="datetime" placeholder="选择协议生效日期"
-                      format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss">
+                    <el-date-picker style="width: 100%" v-model="agreement.startDate" type="datetime"
+                      placeholder="选择协议生效日期" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
@@ -990,7 +990,7 @@
       <el-form :inline="true" :model="productcopyItemPageRequest" class="demo-form-inline" size="small"
         label-width="80px">
         <el-form-item label="选择协议">
-          <el-select v-model="productcopyItemPageRequest.agreementId" filterable clearable  placeholder="请选择协议">
+          <el-select v-model="productcopyItemPageRequest.agreementId" filterable clearable placeholder="请选择协议">
             <el-option v-for="(item, index) in pageResult" :key="index" :label="item.agreementAbbreviation"
               :value="item.id"></el-option>
           </el-select>
@@ -1415,25 +1415,115 @@
         <div v-show="!trajectoryTable1.length">暂无轨迹</div>
       </div>
     </el-dialog>
-    <el-drawer
-
-    :visible.sync="drawer"
-    :direction="'rtl'"
-    size="100%"
-    :before-close="handleClose"
-    :destroy-on-close="true">
+    <el-dialog title="协议复制" :visible.sync="copyProtocolVisible" width="90%" top="6vh" :fullscreen="true"  @open="copyProtocolOpen">
+      <el-form :model="copyProtocolform" class="demo-form-inline" :size="overSize" label-width="110px"
+        style="margin: 10px 20px;border-bottom: 1px solid #D7DBE7;">
+        <el-row>
+          <el-col :span="6">
+            <el-form-item label="协议代码">
+              <el-input style="width: 100%;" v-model="copyProtocolform.agreementCode" disabled
+                placeholder="协议代码"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="协议名称">
+              <el-input v-model="copyProtocolform.agreementTitle" disabled clearable placeholder="协议名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="协议简称">
+              <el-input v-model="copyProtocolform.agreementAbbreviation" disabled clearable placeholder="协议简称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="协议生效日期">
+              <el-date-picker style="width: 100%" v-model="copyProtocolform.startDate" type="datetime"
+                placeholder="选择协议生效日期" format="yyyy-MM-dd HH:mm:ss" disabled value-format="yyyy-MM-dd HH:mm:ss">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="协议描述">
+              <el-input v-model="copyProtocolform.agreementName" disabled clearable placeholder="协议描述"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="业务描述">
+              <el-input v-model="copyProtocolform.businessDescription" disabled clearable placeholder="业务描述"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="工号描述">
+              <el-input v-model="copyProtocolform.jobDescription" disabled clearable placeholder="工号描述"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="协议失效日期">
+              <el-date-picker style="width: 100%" v-model="copyProtocolform.endDate" disabled type="datetime"
+                placeholder="选择失效日期" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div class="flex  ">
+        <div class="sidebarShortcut">
+          <ul class="flex j-c a-c f-c">
+            <li :class="{ sidebarstyle: sidebarItem == 'fyfz' }" class="flex a-c " @click="scrollToSection('fyfz')">
+              费用复制
+            </li>
+            <li :class="{ sidebarstyle: sidebarItem == 'cbgzfz' }" class="flex a-c " @click="scrollToSection('cbgzfz')">
+              承保规则复制
+            </li>
+          </ul>
+        </div>
+        <div class="tab-panecent1">
+          <div id="fyfz" class="copyFee">
+            <div style="margin-bottom: 10px;" class="flex ">
+              <span style="font-weight: bold;margin-right: 10px;">费用复制</span>
+              <el-checkbox v-model="copyProtocolInfo.cost.all">{{ copyProtocolInfo.cost.all ? '取消全选' : '全选'
+              }}</el-checkbox>
+            </div>
+            <kt-common-table :tableHeights="260" :SerialShow="false" :operationWidth="250" :showOperation="false"
+              :customToolseletted="false" customToolName="批量复制" permscustomTool="agreement:input:productCost"
+              @customTool="customTool" :showBatchDelete="true" :showBatchSettled="false" :showBatchPrint="false"
+              :data="productcopyItemResult" :columns="productcopyItemColumns" @findPage="productcopyItemFindPage"
+              @selectionChange="costselectionChange">
+            </kt-common-table>
+          </div>
+          <div id="fyfz" class="copyFee">
+            <div style="margin-bottom: 10px;" class="flex ">
+              <span style="font-weight: bold;margin-right: 10px;">承保规则复制</span>
+              <el-checkbox v-model="copyProtocolInfo.underwritingRules.all">{{ copyProtocolInfo.underwritingRules.all
+                ? '取消全选' : '全选' }}</el-checkbox>
+            </div>
+            <kt-common-table :tableHeights="260" :SerialShow="false" :operationWidth="250" :showOperation="false"
+              :showBatchDelete="true" :showBatchSettled="false" :showBatchPrint="false" :data="underwritingRulesResult"
+              :columns="underwritingRulesColumns" @findPage="underwritingRulesFindPage"
+              @selectionChange="underwritingRulesselectionChange">
+            </kt-common-table>
+          </div>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button :size="overSize" @click="copyProtocolVisible = false">取 消</el-button>
+        <el-button :size="overSize" type="primary" @click="copyProtocolSubmit"
+          style="background: #2D4D89;color: #fff;border-color: #2D4D89;">确 定</el-button>
+      </span>
+    </el-dialog>
+    <el-drawer :visible.sync="drawer" :direction="'rtl'" size="100%" :before-close="handleClose" :destroy-on-close="true">
 
-    <div class="drawer-main">
-      <agreementHistoryRecord :messageInfo="agreementActiveInfo" v-if="operationTypeBtn==1"/>
+      <div class="drawer-main">
+        <agreementHistoryRecord :messageInfo="agreementActiveInfo" v-if="operationTypeBtn == 1" />
 
-      <agreementProductFee :messageInfo="agreementActiveInfo" v-if="operationTypeBtn==2"/>
+        <agreementProductFee :messageInfo="agreementActiveInfo" v-if="operationTypeBtn == 2" />
 
-      <agreementUnderwritingRule :messageInfo="agreementActiveInfo" v-if="operationTypeBtn==3"/>
+        <agreementUnderwritingRule :messageInfo="agreementActiveInfo" v-if="operationTypeBtn == 3" />
 
-      <agreementNonVehicleConfig :messageInfo="agreementActiveInfo" v-if="operationTypeBtn==4"/>
+        <agreementNonVehicleConfig :messageInfo="agreementActiveInfo" v-if="operationTypeBtn == 4" />
 
-    </div>
-  </el-drawer>
+      </div>
+    </el-drawer>
   </div>
 </template>
 <script>
@@ -1449,7 +1539,7 @@ import agreementProductFee from "./AgreementProductFee.vue"
 import agreementHistoryRecord from "./AgreementHistoryRecord.vue"
 import agreementUnderwritingRule from "./AgreementUnderwritingRule.vue"
 import agreementNonVehicleConfig from "./AgreementNonVehicleConfig.vue"
-import {updateFeeFile} from "../../../http/moudules/insCompany";
+import { updateFeeFile } from "../../../http/moudules/insCompany";
 export default {
   components: {
     tree,
@@ -1463,8 +1553,22 @@ export default {
   },
   data() {
     return {
-      operationTypeBtn:0,
-      drawer:false,
+      copyProtocolVisible: false,//协议复制
+      copyProtocolform: {},
+      copyProtocolInfo: {//复制协议json
+        agreementId: "",
+        cost: {
+          all: true,
+          informationId: []
+        },
+        underwritingRules: {
+          all: true,
+          informationId: []
+        }
+      },//协议复制
+      sidebarItem: "fyfz",
+      operationTypeBtn: 0,
+      drawer: false,
       apiTypelist: [
         {
           id: 1,
@@ -1888,6 +1992,7 @@ export default {
         { prop: "costsEndDate", label: "费用止期", minWidth: 160 },
         { prop: "costsDescription", label: "费用描述", minWidth: 220 },
         { prop: "desc", label: "费用因子描述", minWidth: 520 },
+        { prop: "effective", label: "有效状态", minWidth: 100 ,formatter: this.effectiveFormatter},
         { prop: "priorityLevel", label: "方案优先级", minWidth: 120 },
         {
           prop: "jqCarCostsProportion",
@@ -2163,9 +2268,14 @@ export default {
         costStartDate: "",
         costsEndDate: "",
         isEffective: "",
-        costsDescription: "",
+        costsDescription: [],
         pageNum: 1,
-        pageSize: 20,
+        pageSize: 10,
+      },
+      underwritingRulesPageRequest: {
+        agreementId: "",
+        pageNum: 1,
+        pageSize: 10,
       },
       value1: [],
       vehicleCategoryList: [], //费用因子-车辆大类
@@ -2551,8 +2661,8 @@ export default {
     this.findLeftTreeData();
   },
   methods: {
-    downloadFile(row){
-      let url = process.env.BASE_URL  + row.feeFileUrl.substring(1,row.feeFileUrl.length); // 3.创建一个临时的url指向blob对象
+    downloadFile(row) {
+      let url = process.env.BASE_URL + row.feeFileUrl.substring(1, row.feeFileUrl.length); // 3.创建一个临时的url指向blob对象
       let link = document.createElement("a");
       link.target = '_blank'
       link.href = url;
@@ -2567,7 +2677,7 @@ export default {
       formData.append('multipartFile', file.raw)
       formData.append('agreementId', row.id)
       this.$api.insCompany.updateFeeFile(formData).then(res => {
-        if(res.code == 200) {
+        if (res.code == 200) {
           this.$message.success(res.msg)
           this.findPage();
         } else {
@@ -2631,7 +2741,7 @@ export default {
         list.push(element.id)
       });
       this.agreementSelectionList = list;
-      this.selectedLength = val.length>0?val.length:0
+      this.selectedLength = val.length > 0 ? val.length : 0
       // if(val.length>0) {
       //   this.$set(this.hasSelectedList, this.pageNum-1, val)
       //   this.hadSelectedList = [...this.hasSelectedList]
@@ -2653,7 +2763,7 @@ export default {
       // }
     },
     handleSelectChange(rows) {
-      this.selectedLength = rows.length>0?rows.length:0
+      this.selectedLength = rows.length > 0 ? rows.length : 0
       // if(rows.length>0) {
       //   this.$set(this.hasSelectedList, this.pageNum-1, rows)
       //   this.hadSelectedList = [...this.hasSelectedList]
@@ -2962,6 +3072,13 @@ export default {
       this.underwritingRulesHistoryDetailsDialogVisible = true;
 
     },
+    scrollToSection(sectionId) {
+      this.sidebarItem = sectionId;
+      const element = document.getElementById(sectionId);
+      if (element) {
+        element.scrollIntoView({ behavior: 'smooth' });
+      }
+    },
     getFactorTemplate() {
       this.$api.insCompany.productConfigItem(this.insuranceCompanyId).then(res => {
         if (res.code == '200') {
@@ -3038,14 +3155,14 @@ export default {
       //   path: "agreementHistoryRecord",
       //   query: this.agreementActiveInfo,
       // });
-      this.drawer=true
-      this.operationTypeBtn=1
+      this.drawer = true
+      this.operationTypeBtn = 1
 
     },
     //产品费用按钮点击
     productCost1() {
-      this.drawer=true
-      this.operationTypeBtn=2
+      this.drawer = true
+      this.operationTypeBtn = 2
 
       // this.$router.push({
       //   path: "agreementProductFee",
@@ -3058,8 +3175,8 @@ export default {
       //   path: "agreementUnderwritingRule",
       //   query: this.agreementActiveInfo,
       // });
-      this.drawer=true
-      this.operationTypeBtn=3
+      this.drawer = true
+      this.operationTypeBtn = 3
 
 
     },
@@ -3069,9 +3186,14 @@ export default {
       //   path: "agreementNonVehicleConfig",
       //   query: this.agreementActiveInfo,
       // });
-      this.drawer=true
-      this.operationTypeBtn=4
+      this.drawer = true
+      this.operationTypeBtn = 4
+
+    },
+    copyProtocolOpen(){
 
+      this.copyProtocolInfo.cost.all=true;
+      this.copyProtocolInfo.underwritingRules.all=true;
     },
     //非车规则分页查询
     accidentalInsuranceFindPage(data) {
@@ -3153,15 +3275,14 @@ export default {
     },
     underwritingRulesFindPage(data) {
       if (data && data.pageRequest) {
-        this.productpageRequest.pageNum = data.pageRequest.pageNum;
-        this.productpageRequest.pageSize = data.pageRequest.pageSize;
+        this.underwritingRulesPageRequest.pageNum = data.pageRequest.pageNum;
+        this.underwritingRulesPageRequest.pageSize = data.pageRequest.pageSize;
       } else {
-        this.productpageRequest.pageNum = 1;
-        this.productpageRequest.pageSize = 20;
+        this.underwritingRulesPageRequest.pageNum = 1;
+        this.underwritingRulesPageRequest.pageSize = 20;
       }
-      this.productpageRequest["agreementId"] = this.agreementId;
       this.$api.insCompany
-        .getUndwrtRulesQuery(this.productpageRequest)
+        .getUndwrtRulesQuery(this.underwritingRulesPageRequest)
         .then((res) => {
           this.underwritingRulesResult = res;
         });
@@ -3530,7 +3651,7 @@ export default {
       let params = {
         insCompanyId: this.queryForm.partnerCompaniesId,
         apiType: id,
-        agreementId:this.agreementId,
+        agreementId: this.agreementId,
       };
       this.$api.insCompany.getPtlInsAttributionTemplate(params).then((res) => {
         if (res.code == "200") {
@@ -3562,35 +3683,40 @@ export default {
     },
     //协议复制
     agreementCopy(index, row) {
-      this.$confirm("复制该条协议, 是否继续?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          this.$api.insCompany.agreementCopy({ id: row.id }).then((res) => {
-            if (res.code == '200') {
-              this.$message({
-                type: 'success',
-                message: res.msg,
-              });
-              this.findPage();
-            } else {
-              this.$message({
-                type: 'error',
-                message: res.msg,
-              });
-            }
+      this.copyProtocolVisible = true;
+      this.copyProtocolform = Object.assign({}, row);
+      this.copyProtocolInfo.agreementId = row.id;
+      this.productcopyItemPageRequest.agreementId = row.id;
+      this.underwritingRulesPageRequest.agreementId = row.id;
+      this.productcopyItemFindPage();
+      this.underwritingRulesFindPage();
+
+    },
+    costselectionChange(data) {
+      this.copyProtocolInfo.cost.informationId = data;
+    },
+    underwritingRulesselectionChange(data) {
+      this.copyProtocolInfo.underwritingRules.informationId = data;
+    },
+    copyProtocolSubmit() {
+      this.$api.insCompany.copyAgreementAllInformation(this.copyProtocolInfo).then((res) => {
+        if (res.code == '200') {
+          this.$message({
+            type: 'success',
+            message: res.msg,
           });
-        })
-        .catch(() => {
+          this.copyProtocolVisible = false;
+          this.findPage();
+        } else {
           this.$message({
-            type: "info",
-            message: "已取消",
+            type: 'error',
+            message: res.msg,
           });
-        });
+        }
+      });
 
     },
+    //协议复制
     //编辑事件
     uplatequery(index, row) {
       //每次修改时,先把变量清空,解决累加存储问题
@@ -3752,7 +3878,7 @@ export default {
       //不管新增,还是编辑  关闭窗口后,都清空临时数据 以免编辑后新增默认带出上一次打开协议中信息
       for (let key in this.agreement) {
         if (key != "partnerCompaniesId") {
-        this.agreement[key] = "";
+          this.agreement[key] = "";
 
         }
       }
@@ -3899,7 +4025,7 @@ export default {
       let parmas = {
         pageNum: this.pageNum,
         pageSize: this.pageSize,
-        partnerCompaniesId:this.queryForm.partnerCompaniesId,
+        partnerCompaniesId: this.queryForm.partnerCompaniesId,
         companiesType: this.supplierType,
         startDate: this.queryForm.startDate,
         endDate: this.queryForm.endDate,
@@ -3934,6 +4060,14 @@ export default {
           return '删除'
       }
     },
+    effectiveFormatter(row,column){
+      let effective = row.effective;
+      if(effective){
+        return <el-tag type="success">有效</el-tag>;
+      }else{
+        return <el-tag type="error">无效</el-tag>;
+      }
+    },
     useNatureFormatter(row, column) {
       let natureOfVehicle = row.useNature;
       return CommonUtil.getDataName({
@@ -4052,7 +4186,7 @@ export default {
       }
       this.agreement.partnerCompaniesId = value[value.length - 1];
       this.agreement.insuranceCompanyId = value[0];
-      this.queryForm.partnerCompaniesId=value[value.length - 1];
+      this.queryForm.partnerCompaniesId = value[value.length - 1];
       if (this.supplierType == "1") {
         this.agreement.agreementType = "1";
       } else if (this.supplierType == "0") {
@@ -4208,8 +4342,8 @@ export default {
       this.findPage();
     },
     //关闭抽屉
-    handleClose(){
-      this.drawer=false
+    handleClose() {
+      this.drawer = false
     }
   },
 };
@@ -4326,6 +4460,10 @@ export default {
     background: #2D4D89;
   }
 
+  .el-tabs__active-bar {
+    background-color: transparent;
+  }
+
   .el-tabs--card>.el-tabs__header .el-tabs__nav,
   .el-tabs--card>.el-tabs__header,
   .el-tabs--card>.el-tabs__header .el-tabs__item {
@@ -4430,7 +4568,8 @@ export default {
 
 
 }
-.el-link.el-link--default{
+
+.el-link.el-link--default {
   color: #409eff;
 }
 
@@ -4467,14 +4606,68 @@ export default {
   padding: 4px 20px;
   font-weight: 400;
 }
-.paginationCustom{
+
+.paginationCustom {
   display: flex;
   justify-content: flex-end;
   align-items: center;
-  .selected{
+
+  .selected {
     font-size: 13px;
     margin-top: 5px;
     color: #606266;
   }
+
+
+}
+
+.tab-panecent1 {
+
+  height: 600px;
+  width: 90%;
+  overflow-y: auto;
+}
+
+.sidebarstyle {
+  background: rgba(45, 77, 137, 0.1);
+  border-radius: 4px;
+  font-weight: bold;
+  color: #2D4D89;
+}
+
+.sidebarShortcut {
+  width: 136px;
+  height: auto;
+  background: #fff;
+  padding: 0 6px;
+  border-radius: 4px;
+  box-sizing: border-box;
+  font-size: 14px;
+
+  ul {
+    list-style: none;
+    padding: 0;
+  }
+
+  ul>li {
+    padding: 6px;
+    box-sizing: border-box;
+    width: 100%;
+    margin-top: 2px;
+  }
+
+  li:hover {
+    background: rgba(45, 77, 137, 0.1);
+    border-radius: 4px 4px 4px 4px;
+    color: #2D4D89;
+    cursor: pointer;
+  }
+}
+
+.copyFee {
+  border: 2px solid #D7DBE7;
+  border-radius: 10px;
+  padding: 10px;
+  box-sizing: border-box;
 }
 </style>

+ 309 - 265
src/views/AgreementManage/CarInsurance/ProductCostExamine.vue

@@ -11,9 +11,11 @@
       </el-form-item>
 
       <el-form-item label="协议选择">
-        <el-select size="small" multiple clearable collapse-tags filterable v-model="productpageRequest.agreementIdList" :placeholder="'请输入'">
+        <el-select size="small" multiple clearable collapse-tags filterable v-model="productpageRequest.agreementIdList"
+          :placeholder="'请输入'">
           <el-option v-for="(s, i) in agreementList" :key="i"
-          :label="s.agreementTitle + '-' + (s.businessDescription || ' ') + '-' + (s.jobDescription || '  ')" :value="s.id"></el-option>
+            :label="s.agreementTitle + '-' + (s.businessDescription || ' ') + '-' + (s.jobDescription || '  ')"
+            :value="s.id"></el-option>
         </el-select>
       </el-form-item>
 
@@ -41,13 +43,13 @@
         </el-select>
       </el-form-item>
       <el-form-item label="费用起期">
-        <el-date-picker value-format="yyyy-MM-dd HH:mm:ss" v-model="productpageRequest.costStartDate" size="small" type="datetime" align="left"
-          range-separator="至" placeholder="费用起期">
+        <el-date-picker value-format="yyyy-MM-dd HH:mm:ss" v-model="productpageRequest.costStartDate" size="small"
+          type="datetime" align="left" range-separator="至" placeholder="费用起期">
         </el-date-picker>
       </el-form-item>
       <el-form-item label="费用止期">
-        <el-date-picker value-format="yyyy-MM-dd HH:mm:ss" v-model="productpageRequest.costsEndDate" @change="costsEndDateChange" size="small" type="datetime" align="left"
-          range-separator="至" placeholder="费用止期">
+        <el-date-picker value-format="yyyy-MM-dd HH:mm:ss" v-model="productpageRequest.costsEndDate"
+          @change="costsEndDateChange" size="small" type="datetime" align="left" range-separator="至" placeholder="费用止期">
         </el-date-picker>
       </el-form-item>
 
@@ -59,255 +61,246 @@
       permsButton2="agreement:input:productCost" @handleButton2="viewDetails" :showBatchDelete="true" deleteName="批量审核"
       @handleDelete="handleDelete" :data="costAudit" :columns="costColumns" @findPage="costPage">
     </kt-common-table>
-    <el-dialog title="详情" :visible.sync="productCostAddVehicleFactorVisible" width="80%" top="6vh">
-      <div class="productstitle flex j-s" style="margin-top: 10px">
+    <el-dialog title="详情" :visible.sync="productCostAddVehicleFactorVisible" width="80%" top="3vh" class="custom-class">
+      <!-- <div class="productstitle flex j-s" style="margin-top: 10px">
         <div>
           <span>{{ productCostForm.productName }}费用</span>
         </div>
-      </div>
-      <el-button class="mrgin-1" size="small" type="warning"
-        @click="productCostFactorDialogVisible = true">产品费用因子</el-button>
-      <el-form ref="productCostForm" :model="productCostForm" label-width="130px" size="mini" disabled>
-        <el-row>
-          <el-col :span="20" :offset="2">
-            <el-form-item label="费用描述">
-              <el-input type="textarea" v-model="productCostForm.costsDescription" placeholder="输入费用描述内容"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="10" :offset="2">
-            <el-form-item label="费用起期" prop="costsStartDate">
-              <el-date-picker style="width: 100%" v-model="productCostForm.costsStartDate" type="datetime"
-                placeholder="选择费用开始日期" value-format="yyyy-MM-dd HH:mm:ss">
-              </el-date-picker>
-            </el-form-item>
-          </el-col>
-          <el-col :span="10">
-            <el-form-item label="费用止期" prop="costsEndDate">
-              <el-date-picker style="width: 100%" v-model="productCostForm.costsEndDate" type="datetime"
-                placeholder="选择费用结束日期" value-format="yyyy-MM-dd HH:mm:ss">
-              </el-date-picker>
-            </el-form-item>
-          </el-col>
-          <el-col :span="10" :offset="2">
-            <el-form-item label="优先级">
-              <el-input style="width: 100%" v-model="productCostForm.priorityLevel"
-                onkeyup="value=value.replace(/\D/g,'')" placeholder="输入数字"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row v-if="['单交', '交三', '交商', '兜底配置'].includes(
-          productCostForm.productName
-        )
-          ">
-          <h4 style="color: tomato">交强险费用</h4>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="费用比例" prop="jqCarCostsProportion">
-              <el-input v-model="productCostForm.jqCarCostsProportion" placeholder="请输入费用比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="其他费用比例">
-              <el-input disabled v-model="productCostForm.jqCarOtherCostsProportion" placeholder="请输入其他费用比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="总费用比例" prop="jqCostsProportion">
-              <el-input v-model="productCostForm.jqCostsProportion" placeholder="请输入总费用比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="交强管理比例一级	" prop="jqExportRadioLevel1">
-              <el-input v-model="productCostForm.jqExportRadioLevel1" placeholder="请输入管理费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="交强管理比例二级	" prop="jqExportRadioLevel2">
-              <el-input v-model="productCostForm.jqExportRadioLevel2" placeholder="请输入管理费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="交强管理比例三级	" prop="jqExportRadioLevel3">
-              <el-input v-model="productCostForm.jqExportRadioLevel3" placeholder="请输入管理费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="交强管理比例四级	" prop="jqExportRadioLevel4">
-              <el-input v-model="productCostForm.jqExportRadioLevel4" placeholder="请输入管理费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="交强管理比例五级	" prop="jqExportRadioLevel5">
-              <el-input v-model="productCostForm.jqExportRadioLevel5" placeholder="请输入管理费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="交强出口手续比例" prop="jqCostsExportProportion">
-              <el-input v-model="productCostForm.jqCostsExportProportion" placeholder="请输入出口手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row v-if="['单商', '单三', '交商', '交三', '兜底配置'].includes(
-          productCostForm.productName
-        )
-          ">
-          <h4 style="color: tomato">商业险费用</h4>
-
-          <el-col :span="5" :offset="1">
-            <el-form-item label="费用比例" prop="syCarCostsProportion">
-              <el-input v-model="productCostForm.syCarCostsProportion" placeholder="请输入费用比例"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="5" :offset="1">
-            <el-form-item label="其他费用比例">
-              <el-input v-model="productCostForm.syCarOtherCostsProportion" placeholder="请输入其他费用比例" disabled></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="5" :offset="1">
-            <el-form-item label="总费用比例" prop="syCostsProportion">
-              <el-input v-model="productCostForm.syCostsProportion" placeholder="请输入总费用比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="商业手续比例一级	" prop="syExportRadioLevel1">
-              <el-input v-model="productCostForm.syExportRadioLevel1" placeholder="请输入手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="商业手续比例二级	" prop="syExportRadioLevel2">
-              <el-input v-model="productCostForm.syExportRadioLevel2" placeholder="请输入手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="商业手续比例三级	" prop="syExportRadioLevel3">
-              <el-input v-model="productCostForm.syExportRadioLevel3" placeholder="请输入手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="商业手续比例四级	" prop="syExportRadioLevel4">
-              <el-input v-model="productCostForm.syExportRadioLevel4" placeholder="请输入手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="商业手续比例五级	" prop="syExportRadioLevel5">
-              <el-input v-model="productCostForm.syExportRadioLevel5" placeholder="请输入手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="商业出口手续比例" prop="syCostsExportProportion">
-              <el-input v-model="productCostForm.syCostsExportProportion" placeholder="请输入出口手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <h4 style="color: tomato">非车费用</h4>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="费用比例" prop="noCarCostsProportion">
-              <el-input v-model="productCostForm.noCarCostsProportion" placeholder="请输入费用比例"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="5" :offset="1">
-            <el-form-item label="其他费用比例">
-              <el-input v-model="productCostForm.noCarOtherCostsProportion" placeholder="请输入其他费用比例" disabled></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="5" :offset="1">
-            <el-form-item label="总费用比例" prop="noCostsProportion">
-              <el-input v-model="productCostForm.noCostsProportion" placeholder="请输入总费用比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="非车手续比例一级	" prop="noCarExportRadioLevel1">
-              <el-input v-model="productCostForm.noCarExportRadioLevel1" placeholder="请输入手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="非车手续比例二级	" prop="noCarExportRadioLevel2">
-              <el-input v-model="productCostForm.noCarExportRadioLevel2" placeholder="请输入手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="非车手续比例三级	" prop="noCarExportRadioLevel3">
-              <el-input v-model="productCostForm.noCarExportRadioLevel3" placeholder="请输入手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="非车手续比例四级	" prop="noCarExportRadioLevel4">
-              <el-input v-model="productCostForm.noCarExportRadioLevel4" placeholder="请输入手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="非车手续比例五级	" prop="noCarExportRadioLevel5">
-              <el-input v-model="productCostForm.noCarExportRadioLevel5" placeholder="请输入手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5" :offset="1">
-            <el-form-item label="非车出口手续比例" prop="noCostsExportProportion">
-              <el-input v-model="productCostForm.noCostsExportProportion" placeholder="请输入出口手续费比例"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-      <div class="flex j-s a-c">
-        <span style="margin-right: 10px; width: 100px">驳回原因</span>
-        <el-input type="textarea" v-model="reject" maxlength="100" show-word-limit></el-input>
-      </div>
+      </div> -->
+      <el-tabs v-model="activeName" type="card">
+        <el-tab-pane :label="productCostForm.productName + '费用'" name="feiyong" class="tab-panestyle">
+          <div class="tab-panecent">
+            <el-form ref="productCostForm" :model="productCostForm" label-width="130px" size="mini" disabled>
+              <el-row>
+                <h4>费用详情</h4>
+                <el-col :span="20" :offset="2">
+                  <el-form-item label="费用描述">
+                    <el-input type="textarea" v-model="productCostForm.costsDescription"
+                      placeholder="输入费用描述内容"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="10" :offset="2">
+                  <el-form-item label="费用起期" prop="costsStartDate">
+                    <el-date-picker style="width: 100%" v-model="productCostForm.costsStartDate" type="datetime"
+                      placeholder="选择费用开始日期" value-format="yyyy-MM-dd HH:mm:ss">
+                    </el-date-picker>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="10">
+                  <el-form-item label="费用止期" prop="costsEndDate">
+                    <el-date-picker style="width: 100%" v-model="productCostForm.costsEndDate" type="datetime"
+                      placeholder="选择费用结束日期" value-format="yyyy-MM-dd HH:mm:ss">
+                    </el-date-picker>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="10" :offset="2">
+                  <el-form-item label="优先级">
+                    <el-input style="width: 100%" v-model="productCostForm.priorityLevel"
+                      onkeyup="value=value.replace(/\D/g,'')" placeholder="输入数字"></el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row v-if="['单交', '交三', '交商', '兜底配置'].includes(
+                productCostForm.productName
+              )
+                ">
+                <h4 >交强险费用</h4>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="费用比例" prop="jqCarCostsProportion">
+                    <el-input v-model="productCostForm.jqCarCostsProportion" placeholder="请输入费用比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="其他费用比例">
+                    <el-input disabled v-model="productCostForm.jqCarOtherCostsProportion"
+                      placeholder="请输入其他费用比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="总费用比例" prop="jqCostsProportion">
+                    <el-input v-model="productCostForm.jqCostsProportion" placeholder="请输入总费用比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="交强管理比例一级	" prop="jqExportRadioLevel1">
+                    <el-input v-model="productCostForm.jqExportRadioLevel1" placeholder="请输入管理费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="交强管理比例二级	" prop="jqExportRadioLevel2">
+                    <el-input v-model="productCostForm.jqExportRadioLevel2" placeholder="请输入管理费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="交强管理比例三级	" prop="jqExportRadioLevel3">
+                    <el-input v-model="productCostForm.jqExportRadioLevel3" placeholder="请输入管理费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="交强管理比例四级	" prop="jqExportRadioLevel4">
+                    <el-input v-model="productCostForm.jqExportRadioLevel4" placeholder="请输入管理费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="交强管理比例五级	" prop="jqExportRadioLevel5">
+                    <el-input v-model="productCostForm.jqExportRadioLevel5" placeholder="请输入管理费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="交强出口手续比例" prop="jqCostsExportProportion">
+                    <el-input v-model="productCostForm.jqCostsExportProportion" placeholder="请输入出口手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row v-if="['单商', '单三', '交商', '交三', '兜底配置'].includes(
+                productCostForm.productName
+              )
+                ">
+                <h4 >商业险费用</h4>
+
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="费用比例" prop="syCarCostsProportion">
+                    <el-input v-model="productCostForm.syCarCostsProportion" placeholder="请输入费用比例"></el-input>
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="其他费用比例">
+                    <el-input v-model="productCostForm.syCarOtherCostsProportion" placeholder="请输入其他费用比例"
+                      disabled></el-input>
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="总费用比例" prop="syCostsProportion">
+                    <el-input v-model="productCostForm.syCostsProportion" placeholder="请输入总费用比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="商业手续比例一级	" prop="syExportRadioLevel1">
+                    <el-input v-model="productCostForm.syExportRadioLevel1" placeholder="请输入手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="商业手续比例二级	" prop="syExportRadioLevel2">
+                    <el-input v-model="productCostForm.syExportRadioLevel2" placeholder="请输入手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="商业手续比例三级	" prop="syExportRadioLevel3">
+                    <el-input v-model="productCostForm.syExportRadioLevel3" placeholder="请输入手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="商业手续比例四级	" prop="syExportRadioLevel4">
+                    <el-input v-model="productCostForm.syExportRadioLevel4" placeholder="请输入手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="商业手续比例五级	" prop="syExportRadioLevel5">
+                    <el-input v-model="productCostForm.syExportRadioLevel5" placeholder="请输入手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="商业出口手续比例" prop="syCostsExportProportion">
+                    <el-input v-model="productCostForm.syCostsExportProportion" placeholder="请输入出口手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <h4 >非车费用</h4>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="费用比例" prop="noCarCostsProportion">
+                    <el-input v-model="productCostForm.noCarCostsProportion" placeholder="请输入费用比例"></el-input>
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="其他费用比例">
+                    <el-input v-model="productCostForm.noCarOtherCostsProportion" placeholder="请输入其他费用比例"
+                      disabled></el-input>
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="总费用比例" prop="noCostsProportion">
+                    <el-input v-model="productCostForm.noCostsProportion" placeholder="请输入总费用比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="非车手续比例一级	" prop="noCarExportRadioLevel1">
+                    <el-input v-model="productCostForm.noCarExportRadioLevel1" placeholder="请输入手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="非车手续比例二级	" prop="noCarExportRadioLevel2">
+                    <el-input v-model="productCostForm.noCarExportRadioLevel2" placeholder="请输入手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="非车手续比例三级	" prop="noCarExportRadioLevel3">
+                    <el-input v-model="productCostForm.noCarExportRadioLevel3" placeholder="请输入手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="非车手续比例四级	" prop="noCarExportRadioLevel4">
+                    <el-input v-model="productCostForm.noCarExportRadioLevel4" placeholder="请输入手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="非车手续比例五级	" prop="noCarExportRadioLevel5">
+                    <el-input v-model="productCostForm.noCarExportRadioLevel5" placeholder="请输入手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5" :offset="1">
+                  <el-form-item label="非车出口手续比例" prop="noCostsExportProportion">
+                    <el-input v-model="productCostForm.noCostsExportProportion" placeholder="请输入出口手续费比例"></el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+            </el-form>
+            <div class="flex j-s a-c">
+              <span style="margin-right: 10px; width: 100px">驳回原因</span>
+              <el-input type="textarea" v-model="reject" maxlength="100" show-word-limit></el-input>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane label="产品费用因子" name="yinzi" class="tab-panestyle">
+          <div class="tab-panecent2">
+            <Product-Cost-Form v-if="productCostAddVehicleFactorVisible" :form="dynamicFormArray" :operator="operatorlist"
+              :disabled="true" over-size="small" @cancelForm="cancel"></Product-Cost-Form>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
       <span slot="footer" class="dialog-footer">
         <el-button size="mini" @click="productCostAddVehicleFactorVisible = false">关闭</el-button>
         <el-button size="mini" type="success" @click="approval">审核通过</el-button>
         <el-button size="mini" type="primary" @click="rejectionReason">审核驳回</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="产品因子录入" :visible.sync="productCostFactorDialogVisible" :close-on-click-modal="false" width="70%"
-      top="6vh" :fullscreen="true">
-      <Product-Cost-Form v-if="productCostFactorDialogVisible" :form="dynamicFormArray" :operator="operatorlist"
-        :disabled="true" over-size="small" @cancelForm="cancel"></Product-Cost-Form>
-    </el-dialog>
     <!--    -->
-    <el-dialog
-      title="承保规则"
-      :visible.sync="agreementListShow"
-      :fullscreen="true"
-    >
-      <el-table
-        :data="underwritingRulesResult"
-        @expand-change="handleExpandChange"
-        :expand-row-keys="expandRows"
-        row-key="id"
-        style="width: 100%">
-        <el-table-column
-          type="expand"
-        >
+    <el-dialog title="承保规则" :visible.sync="agreementListShow" :fullscreen="true">
+      <el-table :data="underwritingRulesResult" @expand-change="handleExpandChange" :expand-row-keys="expandRows"
+        row-key="id" style="width: 100%">
+        <el-table-column type="expand">
           <template slot-scope="scope">
-            <Product-Cost-Form ref="ProductRef" :form="dynamicFormArray" :operator="operatorlist" over-size="small" :underwritingRulesForm="scope.row.underwritingRulesForm" :disabled="true"></Product-Cost-Form>
+            <Product-Cost-Form ref="ProductRef" :form="dynamicFormArray" :operator="operatorlist" over-size="small"
+              :underwritingRulesForm="scope.row.underwritingRulesForm" :disabled="true"></Product-Cost-Form>
           </template>
         </el-table-column>
-        <el-table-column
-          prop="validInd"
-          label="是否启用"
-          width="180">
+        <el-table-column prop="validInd" label="是否启用" width="180">
           <template slot-scope="scope">
-            <span class="disused" :class="{'used': scope.row.validInd == 1}">{{ scope.row.validInd == 1? '启用':'禁用' }}</span>
+            <span class="disused" :class="{ 'used': scope.row.validInd == 1 }">{{ scope.row.validInd == 1 ? '启用' : '禁用'
+            }}</span>
           </template>
         </el-table-column>
-        <el-table-column
-          prop="rulesStartDate"
-          label="规则起期">
+        <el-table-column prop="rulesStartDate" label="规则起期">
         </el-table-column>
-        <el-table-column
-          prop="rulesEndDate"
-          label="规则止期">
+        <el-table-column prop="rulesEndDate" label="规则止期">
         </el-table-column>
-        <el-table-column
-          prop="ruleDescription"
-          label="规则描述">
+        <el-table-column prop="ruleDescription" label="规则描述">
         </el-table-column>
-        <el-table-column
-          prop="desc"
-          label="规则因子描述">
+        <el-table-column prop="desc" label="规则因子描述">
         </el-table-column>
       </el-table>
       <span slot="footer" class="dialog-footer">
@@ -330,6 +323,7 @@ export default {
   // 数据存放区域
   data() {
     return {
+      activeName: 'feiyong',
       date: "",
       date1: "",
       reject: "",
@@ -343,8 +337,8 @@ export default {
         agreementIdList: [],
         costsDescription: [],
         productCode: [],
-        costStartDate:"",
-        costsEndDate:"",
+        costStartDate: "",
+        costsEndDate: "",
       },
       //保险公司列表
       InsCompanyList: [],
@@ -353,7 +347,6 @@ export default {
       //产品代码列表
       insuranceRepertoire: [],
       productCostAddVehicleFactorVisible: false, //产品费用录入    显示/隐藏
-      productCostFactorDialogVisible: false,
       //操作符字典
       operator: {
         pageNum: 1,
@@ -588,7 +581,7 @@ export default {
   },
   watch: {
     underwritingRulesResult(val, old) {
-      if(val.length> 0) {
+      if (val.length > 0) {
         let obj = val[0]
         this.underwritingRulesHistoryDetails(obj, val)
       }
@@ -622,17 +615,17 @@ export default {
   },
   // 方法函数
   methods: {
-    costsEndDateChange(){
+    costsEndDateChange() {
       let tempStartDate = this.productpageRequest.costStartDate;
       let tempEndDate = this.productpageRequest.costsEndDate;
-      if (!tempStartDate) {
-        this.productpageRequest.costsEndDate = null;
-        this.$message({
-          message: "请先选择费用起期!",
-          type: "error",
-        });
-      }
-      if (!this.validateEndDate(tempStartDate, tempEndDate)) {
+      // if (!tempStartDate) {
+      //   this.productpageRequest.costsEndDate = null;
+      //   this.$message({
+      //     message: "请先选择费用起期!",
+      //     type: "error",
+      //   });
+      // }
+      if ( tempStartDate && !this.validateEndDate(tempStartDate, tempEndDate)) {
         this.productpageRequest.costsEndDate = null;
         this.$message({
           message: "费用止期不能小于/等于费用起期!",
@@ -647,8 +640,8 @@ export default {
       return endDate.getTime() > startDate.getTime();
     },
     // 点击展开行
-    handleExpandChange(row,rows) {
-      if(rows.length>0) {
+    handleExpandChange(row, rows) {
+      if (rows.length > 0) {
         this.underwritingRulesHistoryDetails(row)
       }
     },
@@ -660,10 +653,10 @@ export default {
       })
       that.$api.insCompany.getUndwrtRulesFactorQuery(row.id).then((res) => {
         if (res.code == '200') {
-          if(value&&value.length == 1) {
+          if (value && value.length == 1) {
             this.expandRows.push(value[0].id)
           }
-          let obj = {...res.data}
+          let obj = { ...res.data }
           obj.costsAttrLinks.map(val => {
             switch (val.attrType) {
               case 'inputNumber':
@@ -856,15 +849,15 @@ export default {
     },
     agreementIdFormatter(row, column) {
       let allAgreementItem = this.allAgreementList.find((val) => val.id == row.agreementId)
-      if(allAgreementItem) {
-        return <a onClick={ this.handleAgreement.bind(null, row) } style={{color: '#409eff', cursor: 'pointer'}}>{ row.agreementName }</a>;
+      if (allAgreementItem) {
+        return <a onClick={this.handleAgreement.bind(null, row)} style={{ color: '#409eff', cursor: 'pointer' }}>{row.agreementName}</a>;
       }
     },
     downloadRender(row) {
-      return <a onClick={ this.handleDownloadFile.bind(null, row) } style={{color: '#409eff', cursor: 'pointer'}}>{ row.feeFileName }</a>
+      return <a onClick={this.handleDownloadFile.bind(null, row)} style={{ color: '#409eff', cursor: 'pointer' }}>{row.feeFileName}</a>
     },
     handleDownloadFile(row) {
-      let url = process.env.BASE_URL  + row.feeFileUrl.substring(1,row.feeFileUrl.length); // 3.创建一个临时的url指向blob对象
+      let url = process.env.BASE_URL + row.feeFileUrl.substring(1, row.feeFileUrl.length); // 3.创建一个临时的url指向blob对象
       let link = document.createElement("a");
       link.target = '_blank'
       link.href = url;
@@ -882,9 +875,9 @@ export default {
       this.$api.insCompany
         .getUndwrtRulesQuery(params)
         .then((res) => {
-          if(res.content) {
+          if (res.content) {
             this.underwritingRulesResult = res.content.filter(item => item.validInd == 1);
-            if(this.underwritingRulesResult.length>0) {
+            if (this.underwritingRulesResult.length > 0) {
               this.underwritingRulesResult.forEach(item => {
                 item.underwritingRulesForm = {
                   agreementId: "", //协议id
@@ -933,20 +926,70 @@ export default {
   padding: 2px;
   font-size: 12px;
 }
-.disused{
+
+.disused {
   background: #A6A6A6;
-  borderRadius: 4px;
+  border-radius: 4px;
   padding: 4px 10px;
   color: #fff;
 }
-.used{
-  background: linear-gradient( 180deg, #66CDBB 0%, #33A08D 100%);
-  borderRadius: 4px;
+
+.used {
+  background: linear-gradient(180deg, #66CDBB 0%, #33A08D 100%);
+  border-radius: 4px;
   padding: 4px 10px;
   color: #fff;
 }
 
+.tab-panestyle {
+  padding: 20px;
+  background: #F2F2F2;
+}
+
+.tab-panecent {
+  background: #fff;
+  border-radius: 4px;
+  padding: 15px;
+  box-sizing: border-box;
+  max-height: 640px;
+  overflow-y: auto;
+}
+
+.tab-panecent2 {
+  border-radius: 4px;
+  box-sizing: border-box;
+}
+
 /deep/ {
+  .custom-class .el-dialog__header {
+    font-weight: bold;
+    border-bottom: 1px solid #D7DBE7;
+  }
+
+  .custom-class .el-dialog__body {
+    padding: 0;
+  }
+
+  .custom-class .el-dialog__footer {
+    padding: 10px 20px 10px 10px;
+  }
+
+  .el-tabs__item.is-active {
+    color: #fff;
+    background: #2D4D89;
+  }
+
+  .el-tabs--card>.el-tabs__header .el-tabs__nav,
+  .el-tabs--card>.el-tabs__header,
+  .el-tabs--card>.el-tabs__header .el-tabs__item {
+    border: none;
+    margin: 0;
+  }
+
+  .el-tabs--card>.el-tabs__header .el-tabs__nav {
+    padding-left: 20px;
+  }
+
   .el-button--warning {
     color: #fff;
     background-color: #ee7000;
@@ -964,7 +1007,8 @@ export default {
     justify-content: center;
     align-items: center;
   }
-  .el-link.el-link--default{
+
+  .el-link.el-link--default {
     color: #409eff;
   }
 

+ 7 - 6
src/views/Core/KtCommonTable.vue

@@ -1017,11 +1017,11 @@ export default {
     },
     // 选择切换
     selectionChange: function (selections) {
+      let idlist = [];
       this.tableSelectedCount=selections.length;
       this.selections = selections;
-      this.$emit("selectionChange", {
-        selections: selections,
-      });
+      this.selections.map((item) => idlist.push(item.id));
+      this.$emit("selectionChange", idlist);
     },
     // 选择切换
     handleCurrentChange: function (val) {
@@ -1306,12 +1306,13 @@ export default {
     }
     setTimeout(() => {
       let tableTop = that.$refs.commonTable.offsetTop;
-      let bottomTop = that.$refs.bottomFixed.offsetTop;
-      that.tableHeight = bottomTop - tableTop - 120 + "px";
+      let height = window.innerHeight;
+      that.tableHeight = height - tableTop - 160 + "px";
     }, 10);
     // window.onresize = function () {
     //   let tableTop = that.$refs.commonTable.offsetTop;
     //   let bottomTop = that.$refs.bottomFixed.offsetTop;
+
     //   that.tableHeight = bottomTop - tableTop - 120 + "px";
     // };
   },
@@ -1329,7 +1330,7 @@ export default {
 /* 底部固定分页 */
 .bottomFixed {
   height: 40px;
-  position: fixed;
+  /* position: fixed; */
   bottom: 0;
   width: 100%;
   background: #fff;

+ 16 - 9
src/views/Core/PersonalPanel.vue

@@ -16,10 +16,12 @@
           <img src="@/assets/image/个人信息.png" />
             个人信息
         </li>
-        <li @click="notify">
-          <img src="@/assets/image/消息通知.png" />
-          消息通知
-        </li>
+        <el-badge :is-dot="isDot">
+          <li @click="notify">
+            <img src="@/assets/image/消息通知.png" />
+            消息通知
+          </li>
+        </el-badge>
         <li @click="showPsdDialog">
           <img src="@/assets/image/修改密码.png" />
           修改密码
@@ -78,7 +80,6 @@ import TemplateForm from "@/components/TemplateForm/index"
 import { closeWebsocket  } from '@/utils/websocket.js'
 
 export default {
-  name: "qrCode",
   name: 'PersonalPanel',
   components: {
     Backup,
@@ -102,6 +103,10 @@ export default {
         registeInfo: "注册时间:2018-12-25 ",
         createTime:'',
       }
+    },
+    isDot: {
+      type: Boolean,
+      default: false
     }
   },
   computed: {
@@ -199,9 +204,12 @@ export default {
     personalInformation(){
       this.backupVisible=true
     },
- //消息通知
-  notify() {
+    //消息通知
+    notify() {
       this.$refs.messagePanel.setBackupVisible(true)
+      // this.$router.push({
+      //   path: '/message'
+      // })
     },
     //闪电增员
     recruiting() {
@@ -227,6 +235,7 @@ export default {
         type: "warning"
       })
         .then(() => {
+          this.$emit('handle-clear')
           localStorage.clear()
           closeWebsocket()
           sessionStorage.removeItem("user")
@@ -272,8 +281,6 @@ export default {
 
     }
   },
-  mounted() {
-  }
 }
 </script>
 

+ 34 - 5
src/views/HeadBar/HeadBar.vue

@@ -41,13 +41,15 @@
         ref="reference"
         width="300px"
         trigger="click" @show="show" @hide="hide">
-        <personal-panel :user="userData"></personal-panel>
+        <personal-panel :user="userData" :isDot="isDot"></personal-panel>
         <img  slot="reference" :src="userData.headSculpture?userData.headSculpture:avatar" />
       </el-popover>
-      <div class="personalStyle">
-        <span >{{ userData.roleName }} - {{ userData.name }}</span>
-        <span style="color:rgba(51, 51, 51, 0.80) ">{{ userData.id }}</span>
-      </div>
+      <el-badge :is-dot="isDot">
+        <div class="personalStyle">
+          <span >{{ userData.roleName }} - {{ userData.name }}</span>
+          <span style="color:rgba(51, 51, 51, 0.80) ">{{ userData.id }}</span>
+        </div>
+      </el-badge>
     </span>
   </div>
 </template>
@@ -97,6 +99,7 @@ export default {
   },
   data() {
     return {
+      isDot: false,
       toolbarActive:false,
       sum: null,
       datawidth: 1920,
@@ -187,6 +190,12 @@ export default {
       this.screenWidth = document.body.clientWidth
     }
     this.sysName = "Zgdd Platform";
+
+    // this.$store.commit('SET_TIMER', setInterval(() => {
+    //   this.getMessage()
+    // }, 3000))
+
+
     // var user = sessionStorage.getItem("user")
 
 
@@ -219,6 +228,26 @@ export default {
     // }
   },
   methods: {
+    getMessage() {
+      let that = this
+      that.$api.letter.getMessage({
+        pageNum: 1,
+        pageSize: 10
+      }).then(res => {
+        if(res.code === 200) {
+          if(res.data.list&&res.data.list.length>0) {
+            let list = res.data.list.filter(item => item.state === '0')
+            if(list.length>0) {
+              that.isDot = true
+            } else {
+              that.isDot = false
+            }
+          } else {
+            that.isDot = false
+          }
+        }
+      })
+    },
     show(e){
       this.toolbarActive=true;
     },

+ 3 - 2
src/views/Login.vue

@@ -316,8 +316,8 @@ export default {
                     "token"
                   ).toString();
                   window.location.href =process.env.CONSOLE_KHGX_URL + "?token=" + token;
-    
-                } 
+
+                }
                 else {
                   this.getUser();
                   Cookies.set("token", res.data); // 放置token到Cookie
@@ -501,6 +501,7 @@ export default {
     this.stopPolling();
   },
   mounted() {
+    clearInterval(this.$store.state.user.myTimer)
     this.refreshCaptcha();
     /**获取当前登录的ip地址 */
     getUserIP((ip) => {

+ 2 - 2
src/views/NavBar/NavBar.vue

@@ -40,7 +40,7 @@
           <el-dropdown-item v-if="showKhgxConfig">
             <div class="flex" @click="toKhgxConfig">
               <img
-                src="@/assets/image/title.png"
+                src="@/assets/image/title_khfw.png"
                 style="width: 30px; height: 30px; margin-right: 5px"
               />
               <span>客户服务平台</span>
@@ -151,7 +151,7 @@ export default {
           ).toString();
           window.location.href =process.env.CONSOLE_KHGX_URL + "?token=" + token;
     },
-                    
+
     getKhgxConfig() {
       // console.log();
       let userId = Cookies.get('user');

+ 104 - 47
src/views/PeopleManage/Agent/AddCountDetail.vue

@@ -1,52 +1,50 @@
 <template>
   <div class="quoteDetail">
     <el-form ref="QuoteDetailForm" v-model="quoteDetailForm" :inline="true" label-width="130px">
-      <el-form-item style="width: 30%;" label="代理人信息">
+<!--      <el-form-item style="width: 30%;" label="代理人信息">
         <el-input size="small" v-model="quoteDetailForm.orderNumber" placeholder="请输入订单号"></el-input>
-      </el-form-item>
+      </el-form-item>-->
       <el-form-item style="width: 30%;" label="保险公司">
-        <el-select style="width: 100%" size="small" v-model="quoteDetailForm.action">
-          <el-option label="动作1" value="1"></el-option>
-          <el-option label="动作2" value="2"></el-option>
+        <el-select style="width: 100%" size="small" filterable v-model="quoteDetailForm.companyId">
+          <el-option :label="item.namesimple" :value="item.id" v-for="(item, index) in leftTree" :key="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item style="width: 30%;" label="操作时间">
-        <el-date-picker size="small" v-model="quoteDetailForm.rangeDate" type="daterange" range-separator="至"
+        <el-date-picker size="small" v-model="quoteDetailForm.rangeDate" value-format="yyyy-MM-dd" type="daterange" range-separator="至"
           start-placeholder="开始日期" end-placeholder="结束日期">
         </el-date-picker>
       </el-form-item>
+      <el-form-item style="width: 30%;" label="用户信息">
+        <el-input size="small" v-model="quoteDetailForm.agent" placeholder="请输入工号、姓名查找"></el-input>
+      </el-form-item>
       <el-form-item style="width: 30%;" label="操作人信息">
-        <el-input size="small" v-model="quoteDetailForm.agentPeoeple" placeholder="请输入工号、姓名查找"></el-input>
+        <el-input size="small" v-model="quoteDetailForm.createBy" placeholder="请输入工号查找"></el-input>
       </el-form-item>
       <el-form-item style="width: 30%;">
-        <el-button type="primary" size="small" style="margin-left: 150px;">查询</el-button>
-        <el-button size="small">重置</el-button>
+        <el-button type="primary" size="small" style="margin-left: 150px;" @click="search()">查询</el-button>
+        <el-button size="small" @click="reset()">重置</el-button>
       </el-form-item>
     </el-form>
     <el-table :data="tableData">
-      <el-table-column prop="code" label="部门编码" width="150"></el-table-column>
-      <el-table-column prop="organization" label="机构名称" width="150"></el-table-column>
-      <el-table-column prop="department" label="部门名称" width="150"></el-table-column>
-      <el-table-column prop="number" label="工号" width="200">
-        <template slot-scope="scope">
-          <a>{{ scope.row.orderNumber }}</a>
-        </template>
-      </el-table-column>
+      <el-table-column prop="deptId" label="部门编码" width="150"></el-table-column>
+<!--      <el-table-column prop="organization" label="机构名称" width="150"></el-table-column>-->
+      <el-table-column prop="deptName" label="部门名称" width="150"></el-table-column>
+      <el-table-column prop="userId" label="工号" width="200"></el-table-column>
       <el-table-column prop="name" label="姓名" width="150"></el-table-column>
-      <el-table-column prop="phone" label="联系电话" width="150"></el-table-column>
+      <el-table-column prop="mobile" label="联系电话" width="150"></el-table-column>
       <el-table-column prop="company" label="保险公司" width="150"></el-table-column>
-      <el-table-column prop="count" label="增加次数" width="150"></el-table-column>
-      <el-table-column prop="time" label="操作时间" width="150"></el-table-column>
-      <el-table-column prop="people" label="操作人" width="150"></el-table-column>
+      <el-table-column prop="dayMaxQuoteNum" label="增加次数" width="150"></el-table-column>
+      <el-table-column prop="createTime" label="操作时间" width="150"></el-table-column>
+      <el-table-column prop="createBy" label="操作人" width="150"></el-table-column>
       <el-table-column label="操作" fixed="right" width="200">
         <template slot-scope="scope">
-          <kt-button label="详情" @click="dialogVisible = true" size="small" type="text" perms="agreement:input:update"
+          <kt-button label="详情" @click="handleDetail(scope.row)" size="small" type="text" perms="agreement:input:update"
             style="color: #D42426 !important " />
         </template>
       </el-table-column>
     </el-table>
     <div class="flex-box">
-      <el-pagination @size-change="handleSizeChange" :current-page="pageNum" :page-sizes="[10, 20, 30, 40]"
+      <el-pagination @size-change="handleSizeChange" @current-change="handlePageChange" :current-page="pageNum" :page-sizes="[10, 20, 30, 40]"
         :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total">
       </el-pagination>
     </div>
@@ -59,25 +57,24 @@
           <el-input v-model="addCountForm.company"></el-input>
         </el-form-item>
         <el-form-item label="今日已报价" style="width: 80%">
-          <el-input v-model="addCountForm.hadQuote"></el-input>
+          <el-input v-model="addCountForm.numCount"></el-input>
         </el-form-item>
         <el-form-item label="今日已承保" style="width: 80%">
-          <el-input v-model="addCountForm.had"></el-input>
+          <el-input v-model="addCountForm.dayCoverOrder"></el-input>
         </el-form-item>
         <el-form-item label="报价出单比" style="width: 80%">
-          <el-input v-model="addCountForm.assign"></el-input>
+          <el-input v-model="addCountForm.rate"></el-input>
           <span style="font-size: 12px; color: #999;">报价出单比=承保单数/报价单数*100%(四舍五入到小数点后两位)</span>
         </el-form-item>
         <el-form-item label="增加次数" style="width: 80%">
-          <el-input v-model="addCountForm.count"></el-input>
+          <el-input v-model="addCountForm.dayMaxQuoteNum"></el-input>
         </el-form-item>
         <el-form-item label="备注" style="width: 80%">
-          <el-input type="textarea" v-model="addCountForm.tips"></el-input>
+          <el-input type="textarea" v-model="addCountForm.remark"></el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
+        <el-button @click="dialogVisible = false">关 闭</el-button>
       </span>
     </el-dialog>
   </div>
@@ -85,35 +82,95 @@
 
 <script>
 import KtButton from "../../Core/KtButton.vue";
+import {getAppendUserQuoteInfo} from "../../../http/moudules/quote";
 
 export default {
   components: { KtButton },
   data() {
     return {
-      quoteDetailForm: {},
-      tableData: [{
-        code: 1,
-        organization: 1,
-        department: 1,
-        number: 1,
-        name: 1,
-        phone: 1,
-        company: 1,
-        count: 1,
-        time: 1,
-        people: 1
-      }],
+      quoteDetailForm: {}, // 查询条件
+      tableData: [], // 列表数据
       pageNum: 1,
       pageSize: 10,
       total: 0,
-      dialogVisible: false,
-      addCountForm: {}
+      dialogVisible: false, // 详情弹框
+      addCountForm: {}, // 详情form数据
+      leftTree: [] // 保险公司
     }
   },
   methods: {
-    handleSizeChange() {
-
+    // 查询
+    search() {
+      this.pageNum = 1
+      this.initData()
+    },
+    // 获取列表数据
+    initData() {
+      this.$api.quote.getAppendUserQuotePage({
+        companyId: this.quoteDetailForm.companyId,
+        agent: this.quoteDetailForm.agent,
+        createBy: this.quoteDetailForm.createBy,
+        startTime: this.quoteDetailForm.rangeDate&&this.quoteDetailForm.rangeDate.length>0?this.quoteDetailForm.rangeDate[0]:'',
+        endTime: this.quoteDetailForm.rangeDate&&this.quoteDetailForm.rangeDate.length>1?this.quoteDetailForm.rangeDate[1]:'',
+        pageNum: this.pageNum,
+        pageSize: this.pageSize
+      }).then(res => {
+        if(res.code === 200) {
+          this.tableData = res.data.records
+          this.total = res.data.total
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    // 重置
+    reset() {
+      this.pageNum = 1
+      this.quoteDetailForm = {}
+      this.initData();
+    },
+    // 获取保险公司
+    initCompany() {
+      this.$api.quote.getCompany().then(res => {
+        if(res.code == 200) {
+          this.leftTree = res.data
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    // 分页(每页条数变化)
+    handleSizeChange(size) {
+      this.pageSize = size
+      this.initData();
+    },
+    // 分页(页码改变)
+    handlePageChange(page) {
+      this.pageNum = page
+      this.initData();
+    },
+    // 点击详情
+    handleDetail(row) {
+      this.$api.quote.getAppendUserQuoteInfo({
+        id: row.id,
+        companyId: row.companyId,
+        agentId: row.userId
+      }).then(res => {
+        if(res.code === 200) {
+          this.dialogVisible = true
+          console.log(123, res.data)
+          let obj = {...res.data}
+          obj.agent = `${obj.name}-${obj.userId}`
+          this.addCountForm = {...obj}
+        } else {
+          this.$message.warning(res.msg)
+        }
+      })
     }
+  },
+  mounted() {
+    this.initCompany();
+    this.initData();
   }
 }
 </script>

+ 189 - 56
src/views/PeopleManage/Agent/QuoteCountManagement.vue

@@ -8,67 +8,78 @@
         <el-row :gutter="20" align="middle" style="display: flex; align-items: center; width: 100%; overflow: hidden; margin: 0">
           <el-col :span="18" style="padding-left: 20px">报价限制</el-col>
           <el-col :span="6">
-            <el-button type="primary" @click="handleSync" :disabled="!quoteForm.isEnabled">同步配置到其他保司</el-button>
-            <el-button type="primary" @click="handleEdit" :disabled="!quoteForm.isEnabled" v-if="!quoteForm.isEnabled">编辑</el-button>
+            <el-button type="primary" @click="handleSync" :disabled="!isEdit">同步配置到其他保司</el-button>
+            <el-button type="primary" @click="handleEdit" v-if="!isEdit">编辑</el-button>
             <el-button type="primary" @click="handleSave" v-else>保存</el-button>
           </el-col>
         </el-row>
         <el-divider></el-divider>
         <el-form :model="quoteForm" ref="QuoteFormRef" :rules="quoteRules" style="padding-left: 30px;" label-width="120px">
-          <el-form-item prop="count" label="报价次数限制">
-            <el-switch v-model="quoteForm.isEnabled"></el-switch>
+          <el-form-item prop="isEnabled" label="报价次数限制">
+            <el-switch v-model="quoteForm.isEnabled" :disabled="!isEdit"></el-switch>
             <p class="tips">开启后,代理人的报价次数将受到限制,超出设置的报价次数后将停止代理人的报价功能</p>
           </el-form-item>
-          <el-form-item prop="agentLimit" label="代理人限制">
+          <el-form-item prop="authorize" label="代理人限制">
             <div>
-              <el-radio-group v-model="quoteForm.authorize" :disabled="!quoteForm.isEnabled">
+              <el-radio-group v-model="quoteForm.authorize" :disabled="!isEdit">
                 <el-radio :label="0">限制全部代理人</el-radio>
                 <el-radio :label="1">限制部分代理人</el-radio>
               </el-radio-group>
-              <kt-button v-if="quoteForm.authorize" type="text" label="选择代理人" icon="el-icon-plus" style="color: #2D4D89; margin-left: 30px" @click="selectAgent" />
+              <kt-button v-if="quoteForm.authorize" type="text" label="选择代理人" :disabled="!isEdit" icon="el-icon-plus" style="color: #2D4D89; margin-left: 30px" @click="selectAgent" />
             </div>
             <el-table
-              :data="selectedList"
+              :data="selectList"
             >
               <el-table-column prop="deptId" label="部门编码"></el-table-column>
-              <el-table-column prop="organization" label="机构名称"></el-table-column>
+<!--              <el-table-column prop="organization" label="机构名称"></el-table-column>-->
               <el-table-column prop="deptName" label="部门名称"></el-table-column>
               <el-table-column prop="id" label="工号"></el-table-column>
               <el-table-column prop="name" label="姓名"></el-table-column>
               <el-table-column prop="mobile" label="联系电话"></el-table-column>
               <el-table-column label="操作">
                 <template slot-scope="scope">
-                  <kt-button :disabled="!quoteForm.isEnabled" type="text" label="删除" style="color: #2D4D89;" />
+                  <el-popconfirm
+                    confirm-button-text='确定'
+                    cancel-button-text='取消'
+                    icon="el-icon-info"
+                    icon-color="red"
+                    :ref="`popconfirm-${scope.row.id}`"
+                    title="确定删除吗?"
+                    @confirm="handleDelete(scope.row)"
+                  >
+                    <kt-button slot="reference" :disabled="!isEdit" type="text" label="删除" style="color: #2D4D89;" />
+                  </el-popconfirm>
                 </template>
               </el-table-column>
             </el-table>
           </el-form-item>
           <el-form-item prop="quoteLimit" label="报价限制">
-            <el-checkbox-group v-model="quoteForm.quoteLimit" :disabled="!quoteForm.isEnabled">
+            <el-checkbox-group v-model="quoteForm.quoteLimit" @change="checkChange">
               <div>
-                <el-checkbox :label="1">
+                <el-checkbox label="1" :disabled="!isEdit">
                   <div style="display: flex; align-items: center">
-                    单日报价,出单比不满<el-input size="small" v-model="quoteForm.orderRatio" :disabled="!quoteForm.isEnabled" style="width: 100px; margin: 0 20px;">
+                    单日报价,出单比不满<el-input size="small" maxlength="2" v-model="quoteForm.orderRatio" :disabled="!isEdit" style="width: 150px; margin: 0 20px;">
                     <template slot="append">%</template>
                   </el-input>后,锁定代理人报价次数
                   </div>
                 </el-checkbox>
               </div>
+              <p style="font-size: 12px; color: #999; margin: 0">报价出单比=承保单数/报价单数*100% (四舍五入到小数点后两位)</p>
               <div>
-                <el-checkbox :label="2">
+                <el-checkbox label="2" :disabled="!isEdit">
                   <div>单日最大报价次数</div>
                   <div style="display: flex; align-items: center">
-                    单日代理人报价满<el-input size="small" v-model="quoteForm.dayMaxQuoteNum" :disabled="!quoteForm.isEnabled" style="width: 100px; margin: 0 20px;">
+                    单日代理人报价满<el-input size="small" maxlength="4" v-model="quoteForm.dayMaxQuoteNum" :disabled="!isEdit" style="width: 150px; margin: 0 20px;">
                     <template slot="append">次</template>
                   </el-input>后,锁定代理人报价次数
                   </div>
                 </el-checkbox>
               </div>
               <div>
-                <el-checkbox :label="3">
+                <el-checkbox label="3" :disabled="!isEdit">
                   <div>单日单车限制</div>
                   <div style="display: flex; align-items: center">
-                    单日代理人单车最多报价<el-input size="small" :disabled="!quoteForm.isEnabled" v-model="quoteForm.carMaxQuoteNum" style="width: 100px; margin: 0 20px;">
+                    单日代理人单车最多报价<el-input size="small" maxlength="4" :disabled="!isEdit" v-model="quoteForm.carMaxQuoteNum" style="width: 150px; margin: 0 20px;">
                     <template slot="append">次</template>
                   </el-input>后,锁定代理人报价次数
                   </div>
@@ -129,11 +140,12 @@
         row-key="id"
         :reserve-selection="true"
         style="width: 100%"
-        @selection-change="handleSelectChange"
+        @select-all="handleSelectAll"
+        @select="handleSelectChange"
       >
         <el-table-column type="selection"></el-table-column>
         <el-table-column prop="deptId" label="部门编码"></el-table-column>
-        <el-table-column prop="organization" label="机构名称"></el-table-column>
+<!--        <el-table-column prop="organization" label="机构名称"></el-table-column>-->
         <el-table-column prop="deptName" label="部门名称"></el-table-column>
         <el-table-column prop="id" label="工号"></el-table-column>
         <el-table-column prop="name" label="姓名"></el-table-column>
@@ -150,8 +162,8 @@
         </el-pagination>
       </div>
       <template slot="footer">
-        <kt-button label="取消" size="small" type="text" @click="agentTableShow = false" />
-        <kt-button label="确认" size="small" type="primary" @click="agentTableShow = false" />
+        <kt-button label="取消" size="small" type="text" @click="handleCancel" />
+        <kt-button label="确认" size="small" type="primary" @click="handleOk" />
       </template>
     </el-dialog>
   </div>
@@ -159,7 +171,7 @@
 
 <script>
 import KtButton from "../../Core/KtButton.vue";
-import {getAgentUser, setQuoteInfo} from "../../../http/moudules/quote";
+import {getAgentUser, getQuoteConfigInfo, setQuoteInfo, syncQuoteInfo} from "../../../http/moudules/quote";
 import {findTree} from "../../../http/moudules/insCompany";
 
 export default {
@@ -172,6 +184,7 @@ export default {
       menuIndex: 0, // 保险公司item下标
       syncShow: false, // 同步设置弹框
       quoteForm: {
+        id: '',
         isEnabled: false,
         authorize: '',
         quoteLimit: []
@@ -189,15 +202,16 @@ export default {
         ],
         quoteLimit: [
           {
-            type: 'array',required: true, message: '请选择报价限制', triangle: 'change'
+            type: 'array',required: true, message: '请选择报价限制', trigger: 'change'
           }
         ]
       }, // 报价form规则
-      isCheckedAll: false,
-      checkType: '',
-      agentTableShow: false,
+      isEdit: false, // 是否可编辑
+      checkType: '', // 全选类型
+      agentTableShow: false, // 控制选择代理人弹框
       agentDataList: [],
-      selectList: [], // 勾选的数据(格式为每页勾选的为一个数组并作为数组元素保存)
+      myList: [], // 记录每个保险公司接口返回的已经选好的代理人
+      selectList: [], // 勾选的数据
       selectedList: [], // 勾选的数据(格式为平铺后)
       pageList: [1], // 记录点击了的页码
       selectedLength: 0, // 选择(包括全选后)的数据数量
@@ -208,11 +222,23 @@ export default {
     }
   },
   methods: {
+    checkChange() {
+      if(!this.quoteForm.quoteLimit.includes('1')) {
+        this.$set(this.quoteForm, 'orderRatio', '')
+      }
+      if(!this.quoteForm.quoteLimit.includes('2')) {
+        this.$set(this.quoteForm, 'dayMaxQuoteNum', '')
+      }
+      if(!this.quoteForm.quoteLimit.includes('3')) {
+        this.$set(this.quoteForm, 'carMaxQuoteNum', '')
+      }
+    },
     // 获取保险公司
     initCompany() {
       this.$api.quote.getCompany().then(res => {
         if(res.code == 200) {
           this.leftTree = res.data
+          this.initQuoteDetails(res.data[0].id)
         } else {
           this.$message.error(res.msg)
         }
@@ -234,8 +260,8 @@ export default {
           name: {
             value: that.countDetailForm.orderNumber?that.countDetailForm.orderNumber: ''
           },
-          deptId: {
-            value: that.countDetailForm.organization?that.countDetailForm.organization: ''
+          deptid: {
+            value: that.countDetailForm.organization?that.countDetailForm.organization[that.countDetailForm.organization.length-1]: ''
           }
         }
       }).then(res => {
@@ -247,7 +273,7 @@ export default {
               that.selectedLength = res.data.totalSize
               if(that.agentDataList.length>0) {
                 that.agentDataList.forEach(item => {
-                  that.$refs.multipleTable.toggleRowSelection(item)
+                  that.$refs.multipleTable.toggleRowSelection(item, true)
                 })
               }
             } else {
@@ -256,7 +282,7 @@ export default {
                 list.forEach(item => {
                   let arrayItem = that.agentDataList.find(sub => sub.id === item.id)
                   if(arrayItem) {
-                    that.$refs.multipleTable.toggleRowSelection(arrayItem)
+                    that.$refs.multipleTable.toggleRowSelection(arrayItem, true)
                   }
                 })
               }
@@ -269,34 +295,72 @@ export default {
     reset() {
       this.countDetailForm = {}
       this.pageNum = 1
+      this.initAgentUser()
     },
     // 代理人分页页数变化函数
     handlePageNumChange(page) {
       this.pageNum = page
+      if(this.checkType === 'cur') {
+        this.checkType = ''
+      }
       this.initAgentUser()
     },
+    // 选择代理人确认
+    handleOk() {
+      if(this.checkType === 'all') {
+        this.quoteForm.authorize = 0
+        this.selectList = []
+      } else {
+        this.selectList = [...this.selectedList]
+      }
+      this.agentTableShow = false
+    },
+    // 选择代理人取消
+    handleCancel() {
+      // this.selectList = [...this.myList]
+      this.selectedList = [...this.selectList]
+      this.selectedLength = this.selectedList.length
+      this.agentTableShow = false
+    },
     // 代理选择
     handleSelectChange(rows) {
       if(this.checkType === 'all') {
         this.selectedLength = this.total
         return;
       }
-      if(rows.length>0) {
-        let list = [...this.selectedList]
-        if(this.selectedList.length>0){
-          list.forEach((item, index) => {
-            this.agentDataList.forEach(sub => {
-              if(sub.id === item.id) {
-                list.splice(index,1)
-              }
-            })
-          })
-          this.selectedList = this.uniqueItems([...list, ...rows])
-          this.selectedLength = this.selectedList.length
+      let list = [...this.selectedList]
+      if(list.length>0){
+        if(rows.length>0) {
+          let arr = list.filter(item1 => !this.agentDataList.some(item2 => item1.id === item2.id))
+          this.selectedList = this.uniqueItems([...arr, ...rows])
         } else {
+          this.selectedList = this.uniqueItems([...list])
+        }
+        this.selectedLength = this.selectedList.length
+      } else {
+        if(rows.length>0) {
           this.selectedList = [...rows]
+        } else {
+          this.selectedList = []
+        }
+        this.selectedLength = this.selectedList.length
+      }
+    },
+    // 手动点击全选
+    handleSelectAll(rows) {
+      let list = [...this.selectedList]
+      if(rows.length===0) {
+        if(list.length>0){
+          let arr = list.filter(item1 => !this.agentDataList.some(item2 => item1.id === item2.id))
+          this.selectedList = this.uniqueItems([...arr])
           this.selectedLength = this.selectedList.length
+        } else {
+          this.selectedList = [...rows]
         }
+      } else {
+        let arr = [...rows], brr = [...list], crr = brr.concat(arr)
+        this.selectedList = this.uniqueItems([...crr])
+        this.selectedLength = this.selectedList.length
       }
     },
     // 数组去重
@@ -313,7 +377,43 @@ export default {
     // 保险公司切换
     handleSelect(item, index) {
       this.menuIndex = index
-      this.quoteForm = {}
+      this.quoteForm = {
+        id: '',
+        isEnabled: false,
+        authorize: '',
+        quoteLimit: []
+      }
+      this.isEdit = false
+      this.initQuoteDetails(item.id)
+    },
+    // 获取详情
+    initQuoteDetails(id) {
+      this.selectList = []
+      this.selectedList = []
+      this.myList = []
+      this.$api.quote.getQuoteConfigInfo(id).then(res => {
+        if(res.code === 200) {
+          this.quoteForm = {...res.data}
+          this.quoteForm.isEnabled = res.data.isEnabled?true:false
+          let list = []
+          if(res.data.orderRatio){
+            list.push('1')
+          }
+          if(res.data.dayMaxQuoteNum){
+            list.push('2')
+          }
+          if(res.data.carMaxQuoteNum){
+            list.push('3')
+          }
+          this.$set(this.quoteForm, 'quoteLimit', list)
+          this.selectedList = [...res.data.proxyList]
+          this.selectedLength = res.data.proxyList.length
+          this.selectList = [...res.data.proxyList]
+          this.myList = [...res.data.proxyList]
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
     },
     // 同步到其他
     handleSync() {
@@ -321,7 +421,7 @@ export default {
     },
     // 编辑
     handleEdit() {
-
+      this.isEdit = true
     },
     // 保存
     handleSave() {
@@ -330,16 +430,16 @@ export default {
           this.$api.quote.setQuoteInfo({
             companyId: this.leftTree[this.menuIndex].id,
             isEnabled: this.quoteForm.isEnabled?1:0,
-            id: null,
+            id: this.quoteForm.id,
             authorize: this.quoteForm.authorize,
             proxyList: this.selectedList,
             orderRatio: this.quoteForm.orderRatio,
             dayMaxQuoteNum: this.quoteForm.dayMaxQuoteNum,
             carMaxQuoteNum: this.quoteForm.carMaxQuoteNum
           }).then(res => {
-            console.log('保存', res)
             if(res.code == 200) {
               this.$message.success(res.msg)
+              this.initQuoteDetails(this.leftTree[this.menuIndex].id)
               this.quoteForm = {}
             } else {
               this.$message.error(res.msg)
@@ -348,16 +448,36 @@ export default {
         } else {
           this.$message.error('请填写或选择必要数据!')
         }
+        this.isEdit = false
       })
     },
     // 同步到其他确定
     handleSubmit() {
-
+      this.$api.quote.syncQuoteInfo({
+        companyId: this.leftTree[this.menuIndex].id,
+        isEnabled: this.quoteForm.isEnabled?1:0,
+        id: this.quoteForm.id,
+        authorize: this.quoteForm.authorize,
+        proxyList: this.selectedList,
+        orderRatio: this.quoteForm.orderRatio,
+        dayMaxQuoteNum: this.quoteForm.dayMaxQuoteNum,
+        carMaxQuoteNum: this.quoteForm.carMaxQuoteNum
+      }).then(res => {
+        if(res.code === 200) {
+          this.$message.success(res.msg)
+        } else {
+          this.$message.error(res.msg)
+        }
+        this.syncShow = false
+      })
     },
     // 选择代理人
     selectAgent() {
       this.agentTableShow = true
       this.countDetailForm = {}
+      this.pageNum = 1
+      this.checkType = ''
+      this.selectedLength = 0
       this.initAgentUser()
       this.initOrganization()
     },
@@ -365,31 +485,44 @@ export default {
     selectTypeChange() {
       if(this.agentDataList.length>0) {
         this.agentDataList.forEach(item => {
-          this.$refs.multipleTable.toggleRowSelection(item)
+          this.$refs.multipleTable.toggleRowSelection(item, true)
         })
       }
       if(this.checkType === 'all') {
         this.selectedLength = this.total
+        this.selectedList = []
       }
       if(this.checkType === 'cur') {
-        this.selectedLength = 0
-        let list = [...this.selectedList, ...this.agentDataList]
-        this.selectedList = this.uniqueItems(list)
+        let list = [...this.selectedList], arr = [...this.agentDataList]
+        this.selectedList = this.uniqueItems(list.concat(arr))
         this.selectedLength = this.selectedList.length
       }
     },
     // 监听浏览器刷新
     handleBeforeUnload(event) {
-      event.preventDefault();
-      event.returnValue = '';
+      if(this.isEdit) {
+        event.preventDefault();
+        event.returnValue = '';
+      }
+    },
+    // 删除选择的代理人
+    handleDelete(row) {
+      let list = []
+      list = this.selectList.filter((item) => {
+        return item.id != row.id
+      })
+      this.selectList = [...list]
+      this.selectedList = [...list]
+      this.selectedLength = this.selectedList.length
+      this.myList = [...list]
     }
   },
   mounted() {
     this.initCompany();
-    // window.addEventListener('beforeunload', this.handleBeforeUnload);
+    window.addEventListener('beforeunload', this.handleBeforeUnload);
   },
   beforeDestroy() {
-    // window.removeEventListener('beforeunload', this.handleBeforeUnload)
+    window.removeEventListener('beforeunload', this.handleBeforeUnload)
   }
 }
 </script>

+ 143 - 26
src/views/PeopleManage/Agent/QuoteDetail.vue

@@ -5,6 +5,7 @@
         <el-date-picker
           size="small"
           v-model="quoteDetailForm.rangeDate"
+          value-format="yyyy-MM-dd"
           type="daterange"
           range-separator="至"
           start-placeholder="开始日期"
@@ -12,53 +13,56 @@
         </el-date-picker>
       </el-form-item>
       <el-form-item style="width: 30%;" label="订单号">
-        <el-input size="small" v-model="quoteDetailForm.orderNumber" placeholder="请输入订单号"></el-input>
+        <el-input size="small" v-model="quoteDetailForm.subOrderNo" placeholder="请输入订单号"></el-input>
       </el-form-item>
       <el-form-item style="width: 30%;" label="动作">
         <el-select style="width: 100%" size="small" v-model="quoteDetailForm.action">
-          <el-option label="动作1" value="1"></el-option>
-          <el-option label="动作2" value="2"></el-option>
+          <el-option :label="item.desc" :value="item.code" v-for="(item, index) in actionList" :key="item.code"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item style="width: 30%;" label="代理人">
-        <el-input size="small" v-model="quoteDetailForm.agentPeoeple" placeholder="请输入工号、姓名查找"></el-input>
+        <el-input size="small" v-model="quoteDetailForm.agent" placeholder="请输入工号、姓名查找"></el-input>
       </el-form-item>
       <el-form-item style="width: 30%;" label="车牌号">
-        <el-input size="small" v-model="quoteDetailForm.carNumber" placeholder="请输入车牌号"></el-input>
+        <el-input size="small" v-model="quoteDetailForm.licenseNo" placeholder="请输入车牌号"></el-input>
       </el-form-item>
       <el-form-item style="width: 30%;" label="结果">
-        <el-select style="width: 100%" size="small" v-model="quoteDetailForm.action">
-          <el-option label="结果1" value="1"></el-option>
-          <el-option label="结果2" value="2"></el-option>
+        <el-select style="width: 100%" size="small" v-model="quoteDetailForm.result">
+          <el-option :label="item.desc" :value="item.code" v-for="(item, index) in resultList" :key="item.code"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item style="width: 30%;" label="操作人">
-        <el-input size="small" v-model="quoteDetailForm.person" placeholder="请输入操作人"></el-input>
+        <el-input size="small" v-model="quoteDetailForm.operator" placeholder="请输入操作人"></el-input>
       </el-form-item>
       <el-form-item style="width: 30%;">
-        <el-button type="primary" size="small" style="margin-left: 150px;">查询</el-button>
-        <el-button size="small">重置</el-button>
+        <el-button type="primary" size="small" style="margin-left: 150px;" @click="search()">查询</el-button>
+        <el-button size="small" @click="reset">重置</el-button>
       </el-form-item>
     </el-form>
     <el-table
       :data="tableData"
     >
-      <el-table-column prop="" label="报价时间"></el-table-column>
-      <el-table-column prop="" label="动作"></el-table-column>
-      <el-table-column prop="" label="保险公司"></el-table-column>
-      <el-table-column prop="" label="订单号">
+      <el-table-column prop="createTime" label="报价时间"></el-table-column>
+      <el-table-column prop="action" label="动作"></el-table-column>
+      <el-table-column prop="companyId" label="保险公司">
         <template slot-scope="scope">
-          <a>{{ scope.row.orderNumber }}</a>
+          {{ leftTree.find(item => item.id === scope.row.companyId)?leftTree.find(item => item.id === scope.row.companyId).namesimple:'' }}
         </template>
       </el-table-column>
-      <el-table-column prop="" label="车牌号"></el-table-column>
-      <el-table-column prop="" label="工号"></el-table-column>
-      <el-table-column prop="" label="姓名"></el-table-column>
-      <el-table-column prop="" label="联系电话"></el-table-column>
-      <el-table-column prop="" label="结果"></el-table-column>
+      <el-table-column prop="subOrderNo" label="订单号">
+        <template slot-scope="scope">
+          <a class="link" @click="getQuoteDetail(scope.row)">{{ scope.row.subOrderNo }}</a>
+        </template>
+      </el-table-column>
+      <el-table-column prop="licenseNo" label="车牌号"></el-table-column>
+      <el-table-column prop="userId" label="工号"></el-table-column>
+      <el-table-column prop="name" label="姓名"></el-table-column>
+      <el-table-column prop="mobile" label="联系电话"></el-table-column>
+      <el-table-column prop="result" label="结果"></el-table-column>
     </el-table>
     <div class="flex-box">
       <el-pagination
+        @current-change="handlePageChange"
         @size-change="handleSizeChange"
         :current-page="pageNum"
         :page-sizes="[10, 20, 30, 40]"
@@ -67,24 +71,133 @@
         :total="total">
       </el-pagination>
     </div>
+    <detailsDialog
+      ref="detailsDialog"
+      :orderInfo.sync="orderInfo"
+      :Feepermissions="false"
+    ></detailsDialog>
   </div>
 </template>
 
 <script>
+import detailsDialog from "@/views/Core/components/detailsDialog.vue";
+
 export default {
+  components: {
+    detailsDialog
+  },
   data() {
     return {
-      quoteDetailForm: {},
-      tableData: [],
+      quoteDetailForm: {}, // 查询条件
+      tableData: [], // 列表数据
       pageNum: 1,
       pageSize: 10,
-      total: 0
+      total: 0,
+      orderInfo: {
+        carinfo: {},
+        applyinfo: {},
+        insureinfo: {},
+        kindinfo: [],
+        riskinfo: [],
+        ownerinfo: {},
+        orderCommissionVo: {},
+        extendInfo: {},
+      }, //选中的订单
+      actionList: [], // 动过list
+      resultList: [], // 结果list
+      leftTree: [] // 保险公司
     }
   },
   methods: {
-    handleSizeChange() {
-
+    // 查询
+    search() {
+      this.pageNum = 1
+      this.initData()
+    },
+    // 结果数据转换展示
+    filterResult(value,row) {
+      return row.result === value
+    },
+    // 获取保险公司
+    initCompany() {
+      this.$api.quote.getCompany().then(res => {
+        if(res.code == 200) {
+          this.leftTree = res.data
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    // 分页(每页条数变化)
+    handleSizeChange(size) {
+      this.pageSize = size
+      this.initData();
+    },
+    // 分页(页码改变)
+    handlePageChange(page) {
+      this.pageNum = page
+      this.initData();
+    },
+    // 获取列表数据
+    initData() {
+      this.$api.quote.getQuoteDetails({
+        startTime: this.quoteDetailForm.rangeDate&&this.quoteDetailForm.rangeDate[0]?this.quoteDetailForm.rangeDate[0]:'',
+        endTime: this.quoteDetailForm.rangeDate&&this.quoteDetailForm.rangeDate[1]?this.quoteDetailForm.rangeDate[1]:'',
+        subOrderNo: this.quoteDetailForm.subOrderNo?this.quoteDetailForm.subOrderNo:'',
+        action: this.quoteDetailForm.action?this.quoteDetailForm.action: this.quoteDetailForm.action==0?0:'',
+        licenseNo: this.quoteDetailForm.licenseNo?this.quoteDetailForm.licenseNo:'',
+        result: this.quoteDetailForm.result?this.quoteDetailForm.result: this.quoteDetailForm.result==0?0:'',
+        agent: this.quoteDetailForm.agent?this.quoteDetailForm.agent:'',
+        operator: this.quoteDetailForm.operator?this.quoteDetailForm.operator:'',
+        pageNum: this.pageNum,
+        pageSize: this.pageSize
+      }).then(res => {
+        if(res.code === 200) {
+          this.tableData = res.data.records
+          this.total = res.data.total
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    // 重置
+    reset() {
+      this.quoteDetailForm = {}
+      this.pageNum = 1
+      this.pageSize = 10
+      this.initData();
+    },
+    // 获取详情
+    getQuoteDetail(row) {
+      this.$api.letter.getByCompanyId({
+        companyId: row.subOrderNo
+      }).then(res => {
+        this.orderInfo = {...res.data}
+        this.$refs.detailsDialog.setBackupVisible(true);
+      })
+    },
+    // 动作
+    initAction() {
+      this.$api.quote.getQuoteAction().then(res => {
+        if(res.code === 200) {
+          this.actionList = res.data
+        }
+      })
+    },
+    // 结果
+    initResult() {
+      this.$api.quote.getQuoteResult().then(res => {
+        if(res.code === 200) {
+          this.resultList = res.data
+        }
+      })
     }
+  },
+  mounted() {
+    this.initData();
+    this.initAction();
+    this.initResult();
+    this.initCompany();
   }
 }
 </script>
@@ -96,6 +209,10 @@ export default {
   justify-content: flex-end;
   margin: 10px 0;
 }
+.link{
+  color: rgb(64, 158, 255);
+  cursor: pointer;
+}
 /deep/ {
   .el-form-item__content {
     width: calc(100% - 150px);

+ 103 - 49
src/views/PeopleManage/Agent/QuoteManagement.vue

@@ -2,35 +2,35 @@
   <div class="quoteManagement">
     <el-form ref="QuoteForm" :model="quoteForm" :inline="true" label-width="130px">
       <el-form-item style="width: 20%" label="代理人信息" prop="people">
-        <el-input v-model="quoteForm.people" size="small" placeholder="请输入姓名和手机号查找"></el-input>
+        <el-input v-model="quoteForm.agent" size="small" placeholder="请输入姓名和手机号查找"></el-input>
       </el-form-item>
       <el-form-item style="width: 20%" label="工号" prop="number">
-        <el-input v-model="quoteForm.number" size="small" placeholder="请输入工号查找"></el-input>
+        <el-input v-model="quoteForm.agentId" size="small" placeholder="请输入工号查找"></el-input>
       </el-form-item>
       <el-form-item style="width: 20%" label="保险公司" prop="company">
-        <el-select v-model="quoteForm.company" filterable size="small">
+        <el-select v-model="quoteForm.companyId" filterable size="small">
           <el-option v-for="(item, index) in quoteCompany" :key="item.id" :label="item.namesimple" :value="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item style="width: 20%">
-        <el-button size="small">重置</el-button>
-        <el-button type="primary" size="small">查询</el-button>
+        <el-button size="small" @click="reset()">重置</el-button>
+        <el-button type="primary" size="small" @click="search()">查询</el-button>
       </el-form-item>
     </el-form>
     <el-table
       :data="quoteData"
     >
-      <el-table-column prop="" label="部门编码" width="150"></el-table-column>
-      <el-table-column prop="" label="机构名称" width="150"></el-table-column>
-      <el-table-column prop="" label="部门名称" width="150"></el-table-column>
-      <el-table-column prop="" label="工号" width="150"></el-table-column>
-      <el-table-column prop="" label="姓名" width="150"></el-table-column>
-      <el-table-column prop="" label="联系电话" width="150"></el-table-column>
-      <el-table-column prop="" label="保险公司" width="150"></el-table-column>
-      <el-table-column prop="" label="今日报价(次)" width="150"></el-table-column>
-      <el-table-column prop="" label="今日报价(单)" width="150"></el-table-column>
-      <el-table-column prop="" label="今日承保(单)" width="150"></el-table-column>
-      <el-table-column width="150">
+      <el-table-column prop="deptId" label="部门编码" width="150"></el-table-column>
+<!--      <el-table-column prop="" label="机构名称" width="150"></el-table-column>-->
+      <el-table-column prop="deptName" label="部门名称" width="150"></el-table-column>
+      <el-table-column prop="userId" label="工号" width="150"></el-table-column>
+      <el-table-column prop="name" label="姓名" width="150"></el-table-column>
+      <el-table-column prop="mobile" label="联系电话" width="150"></el-table-column>
+      <el-table-column prop="company" label="保险公司" width="150"></el-table-column>
+      <el-table-column prop="numCount" label="今日报价(次)" width="150"></el-table-column>
+      <el-table-column prop="dayAllOrder" label="今日报价(单)" width="150"></el-table-column>
+      <el-table-column prop="dayCoverOrder" label="今日承保(单)" width="150"></el-table-column>
+      <el-table-column prop="rate" width="150">
         <template slot="header" slot-scope="scope">
           <div>
             <span>报价出单比</span>
@@ -47,9 +47,9 @@
             </el-popover>
           </div>
         </template>
-      </el-table-column>
-      <el-table-column prop="" label="累计报价(次)" width="150"></el-table-column>
-      <el-table-column prop="" label="累计承保(单)" width="150"></el-table-column>
+      </el-table-column> <!--报价出单比-->
+      <el-table-column prop="wholeAllOrder" label="累计报价(次)" width="150"></el-table-column>
+      <el-table-column prop="wholeCoverOrder" label="累计承保(单)" width="150"></el-table-column>
       <el-table-column label="操作" width="200" fixed="right">
         <template slot-scope="scope">
           <kt-button label="增加次数" size="small" type="text" perms="agreement:input:delete"
@@ -59,6 +59,7 @@
     </el-table>
     <div class="flex-box">
       <el-pagination
+        @current-change="handlePageChange"
         @size-change="handleSizeChange"
         :current-page="pageNum"
         :page-sizes="[10, 20, 30, 40]"
@@ -79,25 +80,25 @@
           <el-input v-model="addForm.company" disabled></el-input>
         </el-form-item>
         <el-form-item label="今日已报价" style="width: 80%">
-          <el-input v-model="addForm.hadQuote" disabled></el-input>
+          <el-input v-model="addForm.dayAllOrder" disabled></el-input>
         </el-form-item>
         <el-form-item label="今日已承保" style="width: 80%">
-          <el-input v-model="addForm.had" disabled></el-input>
+          <el-input v-model="addForm.dayCoverOrder" disabled></el-input>
         </el-form-item>
         <el-form-item label="报价出单比" style="width: 80%">
-          <el-input v-model="addForm.assign" disabled></el-input>
+          <el-input v-model="addForm.rate" disabled></el-input>
           <span style="font-size: 12px; color: #999;">报价出单比=承保单数/报价单数*100%(四舍五入到小数点后两位)</span>
         </el-form-item>
         <el-form-item label="增加次数" style="width: 80%">
-          <el-input v-model="addForm.count"></el-input>
+          <el-input v-model="addForm.quoteNumber"></el-input>
         </el-form-item>
         <el-form-item label="备注" style="width: 80%">
-          <el-input type="textarea" v-model="addForm.tips"></el-input>
+          <el-input type="textarea" v-model="addForm.remark"></el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
+        <el-button type="primary" @click="addCountSubmit">确 定</el-button>
       </span>
     </el-dialog>
   </div>
@@ -105,6 +106,7 @@
 
 <script>
 import KtButton from "@/views/Core/KtButton";
+import {appendUserConfig, quoteUserDetails} from "../../../http/moudules/quote";
 export default {
   components: {
     KtButton
@@ -113,17 +115,18 @@ export default {
     return {
       quoteForm: {
         people: '',
-        number: '',
-        company: ''
-      },
-      quoteData: [{}],
+        agentId: '',
+        companyId: '',
+      }, // 查询条件form
+      quoteData: [], // 列表数据
       pageNum: 1,
       pageSize: 10,
       total: 0,
-      dialogVisible: false,
+      dialogVisible: false, // 增加次数弹框
       addForm: {
-
-      },
+        quoteNumber: 0,
+        remark: ''
+      }, // 增加次数form
 
       quoteCompany:[], // 保险公司list
 
@@ -131,8 +134,14 @@ export default {
   },
   created() {
     this.initCompany();
+    this.initData();
   },
   methods: {
+    // 查询
+    search() {
+      this.pageNum = 1
+      this.initData()
+    },
     // 获取保险公司
     initCompany() {
       this.$api.quote.getCompany().then(res => {
@@ -141,19 +150,74 @@ export default {
         }
       })
     },
+    // 列表
+    initData() {
+      this.$api.quote.quoteUserDetails({
+        pageNum: this.pageNum,
+        pageSize: this.pageSize,
+        ...this.quoteForm
+      }).then(res => {
+        if(res.code === 200) {
+          this.quoteData = res.data.records
+          this.total = res.data.total
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    // 重置
+    reset() {
+      this.quoteForm = {}
+      this.pageNum = 1
+      this.initData()
+    },
+    // 点击增加次数
     addCount(index, row) {
       this.dialogVisible = true
+      row.agent = `${row.name}-${row.userId}`
+      this.addForm = {...row}
+    },
+    // 分页(每页条数变化)
+    handleSizeChange(size) {
+      this.pageSize = size
+      this.initData();
+    },
+    // 分页(页码改变)
+    handlePageChange(page) {
+      this.pageNum = page
+      this.initData();
+    },
+    // 增加次数保存
+    addCountSubmit() {
+      this.$api.quote.appendUserConfig({
+        userId: this.addForm.userId,
+        companyId: this.addForm.companyId,
+        quoteNumber: this.addForm.quoteNumber,
+        remark: this.addForm.remark
+      }).then(res => {
+        if(res.code === 200) {
+          this.$message.success(res.msg)
+        } else {
+          this.$message.error(res.msg)
+        }
+        this.dialogVisible = false
+      })
     },
-    handleSizeChange() {
-
-    }
   },
-  mounted() {
-
-  }
 }
 </script>
-
+<style>
+.popover-box.el-popover {
+  background: rgba(0, 0, 0, .5) !important;
+  color: #fff !important;
+}
+.popover-box .popper__arrow {
+  border-top-color: rgba(0, 0, 0, .4) !important;
+}
+.popover-box .popper__arrow::after {
+  border-top-color: rgba(0, 0, 0, 0) !important;
+}
+</style>
 <style lang="scss" scoped>
 /deep/ {
   .el-form-item__content {
@@ -166,14 +230,4 @@ export default {
   justify-content: flex-end;
 }
 
-.popover-box{
-  background: rgba(0,0,0,.5) !important;
-  color: #fff !important;
-}
-.popper__arrow{
-  border-top-color: rgba(0,0,0,.4) !important;
-}
-.popper__arrow::after{
-  border-top-color: rgba(0,0,0,0) !important;
-}
 </style>

+ 2 - 2
src/views/Sys/Deptall.vue

@@ -44,12 +44,12 @@
           </el-table-column>
           <el-table-column prop="comtype" label="机构类型" :formatter="comtypeFormatter" align="center" width="150">
           </el-table-column>
-          <!-- <el-table-column prop="managementSource" label="业务来源" align="center" width="150">
+          <el-table-column prop="managementSource" label="业务来源" align="center" width="150">
             <template slot-scope="scope">
               <span v-for="(item, index) in business_sourceoptions" :key="index"
                 v-show="item.value == scope.row.managementSource">{{ item.label }}</span>
             </template>
-          </el-table-column> -->
+          </el-table-column>
           <el-table-column prop="address" label="机构地址" align="center">
           </el-table-column>
           <el-table-column prop="leadername" label="负责人" align="center">

+ 2 - 2
src/views/Sys/SysManage/SysAllocation.vue

@@ -314,7 +314,7 @@ export default {
           ];
       }
       this.$api.user
-        .findAllUserList({ ...this.personnePageRequest, deptId })
+        .findAllUsers({ ...this.personnePageRequest, deptId })
         .then((res) => {
           if (res.code == 200) {
             this.personnePageReData = res.data.content;
@@ -491,4 +491,4 @@ export default {
   }
   right: 0;
 }
-</style>
+</style>

+ 2 - 1
src/views/Task/DaikeLetter.vue

@@ -288,7 +288,8 @@ export default {
                 item.areaNewCode = item.liveAddress.split(',')
               }
             })
-            console.log(123123123, this.salespersonData)
+          } else {
+            this.$refs.Ktletter.userId = this.salespersonForm.userId
           }
           loading.close();
           this.dialogVisible = true;

+ 3 - 4
src/views/Task/daikeComponents/KhgxKtLetter.vue

@@ -270,8 +270,8 @@
           <el-col :xs="colSpan.xs" :sm="colSpan.sm" :md="colSpan.md" :lg="colSpan.lg" :xl="colSpan.xl">
             <el-form-item label="车主类型"  >
               <el-select v-model="ownerInfo.property" placeholder="车主类型" @change="propertyTpe('ownerInfo')">
-                <el-option label="法人" value="0"></el-option>
                 <el-option label="个人" value="1"></el-option>
+                <el-option label="法人" value="0"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -397,8 +397,8 @@
           <el-col :xs="colSpan.xs" :sm="colSpan.sm" :md="colSpan.md" :lg="colSpan.lg" :xl="colSpan.xl">
             <el-form-item label="投保人类型" prop="property">
               <el-select v-model="policyHolderInfo.property" placeholder="投保人类型" @change="propertyTpe('policyHolderInfo')">
-                <el-option label="法人" value="0"></el-option>
                 <el-option label="个人" value="1"></el-option>
+                <el-option label="法人" value="0"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -537,8 +537,8 @@
           <el-col :xs="colSpan.xs" :sm="colSpan.sm" :md="colSpan.md" :lg="colSpan.lg" :xl="colSpan.xl">
             <el-form-item label="被保人类型" prop="property">
               <el-select v-model="insuredPersonInfo.property" placeholder="被保人类型" @change="propertyTpe('insuredPersonInfo')">
-                <el-option label="法人" value="0"></el-option>
                 <el-option label="个人" value="1"></el-option>
+                <el-option label="法人" value="0"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -13346,7 +13346,6 @@ export default {
         getToken(),
         "token"
       ).toString();
-      alert(process.env.CONSOLE_ZGD_URL + '/#/login?token=' + token)
       window.location.href = process.env.CONSOLE_ZGD_URL + '/#/login?token=' + token;
     },
     //回显客户信息和车辆信息以及影像信息

+ 19 - 4
src/views/Task/daikeComponents/KtLetter.vue

@@ -179,7 +179,7 @@
           </el-col>
           <el-col :span="5">
             <el-form-item label="车辆用途" prop="vehicleUse">
-              <el-select v-if="carInfo.carnature == '02'" v-model="carInfo.vehicleUse" placeholder="请选择使车辆用途">
+              <el-select v-if="carInfo.carnature == '02'" v-model="carInfo.vehicleUse" @change="vehicleUseChange" placeholder="请选择使车辆用途">
                 <el-option :label="item.dictTag" :value="item.dictValue"
                   v-for="(item, index) in outOfBusinessVehicleUseoptions" :key="index"></el-option>
               </el-select>
@@ -217,7 +217,7 @@
             <el-form-item label="所属性质 " prop="property">
               <el-select v-model="carInfo.property" placeholder="请选择所属性质" @change="getCompanyListProperty">
                 <el-option :label="item.label" :value="item.value" v-for="(item, index) in propertyoptions"
-                  :key="index"></el-option>
+                  :key="index" :disabled="propertyDisable(item)"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -263,8 +263,8 @@
           <el-col :span="5" :offset="1">
             <el-form-item label="车主类型" >
               <el-select v-model="ownerInfo.property" placeholder="车主类型" @change="propertyTpe('ownerInfo')" >
-                <el-option label="个人" value="1"></el-option>
-                <el-option label="法人" value="0"></el-option>
+                <el-option label="法人" value="0" :disabled="carInfo.property=='1'"></el-option>
+                <el-option label="个人" value="1" :disabled="carInfo.property=='2'"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -4082,6 +4082,21 @@ export default {
     },
   },
   methods: {
+    vehicleUseChange(value){
+      if(value='05'){
+        this.carInfo.property='1';
+        this.ownerInfo.property='1';
+        this.ownerInfo.identifyType='01'
+      }
+    },
+    propertyDisable(item){
+      if(this.carInfo.vehicleUse=='05' && item.label=='企业'){
+        return true;
+      }else{
+        return false;
+
+      }
+    },
     // add  by hxl  2024-12-16  ---begin
     //保险公司列表
     findLeftTreeData: function () {

+ 38 - 25
src/views/Task/daikeComponents/KtLetter1.vue

@@ -172,7 +172,7 @@
           </el-col>
           <el-col :xs="colSpan.xs" :sm="colSpan.sm" :md="colSpan.md" :lg="colSpan.lg" :xl="colSpan.xl">
             <el-form-item label="车辆用途" prop="vehicleUse">
-              <el-select v-if="carInfo.carnature == '02'" v-model="carInfo.vehicleUse" placeholder="请选择使车辆用途" @blur="getCompanyList">
+              <el-select v-if="carInfo.carnature == '02'" v-model="carInfo.vehicleUse" placeholder="请选择使车辆用途" @change="vehicleUseChange" @blur="getCompanyList">
                 <el-option :label="item.dictTag" :value="item.dictValue"
                   v-for="(item, index) in outOfBusinessVehicleUseoptions" :key="index"></el-option>
               </el-select>
@@ -210,7 +210,7 @@
             <el-form-item label="所属性质 " prop="property">
               <el-select v-model="carInfo.property" placeholder="请选择所属性质" @change="getCompanyListProperty">
                 <el-option :label="item.label" :value="item.value" v-for="(item, index) in propertyoptions"
-                  :key="index"></el-option>
+                  :key="index"  :disabled="propertyDisable(item)"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -256,8 +256,8 @@
           <el-col :xs="colSpan.xs" :sm="colSpan.sm" :md="colSpan.md" :lg="colSpan.lg" :xl="colSpan.xl">
             <el-form-item label="车主类型"  >
               <el-select v-model="ownerInfo.property" placeholder="车主类型" @change="propertyTpe('ownerInfo')">
-                <el-option label="个人" value="1"></el-option>
-                <el-option label="法人" value="0"></el-option>
+                <el-option label="法人" value="0" :disabled="carInfo.property=='1'"></el-option>
+                <el-option label="个人" value="1" :disabled="carInfo.property=='2'"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -283,7 +283,7 @@
           </el-col>
           <el-col :xs="colSpan.xs" :sm="colSpan.sm" :md="colSpan.md" :lg="colSpan.lg" :xl="colSpan.xl" v-if="ownerInfo.property=='0'">
             <el-form-item label="注册资金" prop="registeredCapital">
-              <el-input v-model="ownerInfo.registeredCapital" placeholder="请输入注册资金" type="text" 
+              <el-input v-model="ownerInfo.registeredCapital" placeholder="请输入注册资金" type="text"
                 show-word-limit @blur="getCompanyList">
                 <el-button slot="append">万元</el-button>
                 </el-input>
@@ -367,7 +367,7 @@
               <el-input v-model="ownerInfo.email" placeholder="请输入电子邮箱"></el-input>
             </el-form-item>
           </el-col>
-         
+
         </el-row>
       </el-form>
     </div>
@@ -426,7 +426,7 @@
           </el-col>
           <el-col :xs="colSpan.xs" :sm="colSpan.sm" :md="colSpan.md" :lg="colSpan.lg" :xl="colSpan.xl" v-if="policyHolderInfo.property=='0'">
             <el-form-item label="注册资金" prop="registeredCapital">
-              <el-input v-model="policyHolderInfo.registeredCapital" placeholder="请输入注册资金" type="text" 
+              <el-input v-model="policyHolderInfo.registeredCapital" placeholder="请输入注册资金" type="text"
                 show-word-limit @blur="getCompanyList">
                 <el-button slot="append">万元</el-button>
                 </el-input>
@@ -582,7 +582,7 @@
           </el-col>
           <el-col :xs="colSpan.xs" :sm="colSpan.sm" :md="colSpan.md" :lg="colSpan.lg" :xl="colSpan.xl" v-if="insuredPersonInfo.property=='0'">
             <el-form-item label="注册资金" prop="registeredCapital">
-              <el-input v-model="insuredPersonInfo.registeredCapital" placeholder="请输入注册资金" type="text" 
+              <el-input v-model="insuredPersonInfo.registeredCapital" placeholder="请输入注册资金" type="text"
                 show-word-limit @blur="getCompanyList">
                 <el-button slot="append">万元</el-button>
                 </el-input>
@@ -641,7 +641,7 @@
             </el-form-item>
           </el-col>
           <el-col :xs="colSpan.xs" :sm="colSpan.sm" :md="colSpan.md" :lg="colSpan.lg" :xl="colSpan.xl">
-            <el-form-item label="地址" prop="addr"> 
+            <el-form-item label="地址" prop="addr">
               <el-input v-model="insuredPersonInfo.addr" placeholder="请输入地址" type="text" @blur="getCompanyList"></el-input>
             </el-form-item>
           </el-col>
@@ -5709,10 +5709,10 @@ export default {
       propertyoptions:[
         {
           value:'1',
-          label:'个人'
+          label:'个人',
         },{
           value:'2',
-          label:'企业'
+          label:'企业',
         },
       ],
       relifReasonoptions: [], //减免税原因代码
@@ -5820,7 +5820,7 @@ export default {
       detailJiaYiTitle: '查看详情',
       oldData: {},    // 旧获取公司参数
       myQrCode: null,
-      businessform:{ 
+      businessform:{
         name: "", //姓名
         identifyType: "02", //身份证类型
         legalRepresentative: "", //法人
@@ -6065,6 +6065,21 @@ export default {
     },
   },
   methods: {
+    vehicleUseChange(value){
+      if(value='05'){
+        this.carInfo.property='1';
+        this.ownerInfo.property='1';
+        this.ownerInfo.identifyType='01'
+      }
+    },
+    propertyDisable(item){
+      if(this.carInfo.vehicleUse=='05' && item.label=='企业'){
+        return true;
+      }else{
+        return false;
+
+      }
+    },
     deleteJiaYi(reslistindex, drivingIndex) {
       this.totalCompanyList[reslistindex].programme.drivingList.splice(drivingIndex, 1)
       this.$forceUpdate()
@@ -6087,6 +6102,7 @@ export default {
     },
     // 所属性质字段
     getCompanyListProperty(data){
+      console.log(data)
       if(data=='1'){
         this.ownerInfo.property='1'
         this.policyHolderInfo.property='1'
@@ -6191,7 +6207,7 @@ export default {
                       Number(_this.policyHolderInfo.city),
                       Number(_this.policyHolderInfo.county),
                     ]:[]
-                     
+
                     this.selectedOptions13 = _this.insuredPersonInfo.province?[
                        Number(_this.insuredPersonInfo.province),
                        Number(_this.insuredPersonInfo.city),
@@ -6617,7 +6633,7 @@ export default {
         if (paramsEdit.carinfo.transferFlag) {
           this.transferDateShow = true;
         }
-        paramsEdit.risk.map((ele) => {                                       
+        paramsEdit.risk.map((ele) => {
           if (ele.riskCode == "0507") {
             _this.jqchecked = true;
             this.protocolJudge("0507", true);
@@ -8995,7 +9011,6 @@ export default {
       });
     },
     quote1() {
-      console.log('最后的信息')
       let starttime = new Date(this.carInfo.registerDate);
       let endtime = new Date(this.carInfo.issueDate);
       if (endtime < starttime) {
@@ -9393,9 +9408,6 @@ export default {
         vehicleAndVesselTax: this.vehicleAndVesselTaxForm,
         productId: this.productId
       };
-      console.log('车主信息', this.ownerInfo)
-      console.log('投保人信息', this.policyHolderInfo)
-      console.log('被投保人信息', this.insuredPersonInfo)
       this.$api.letter[this.apiInterfaceName](param).then((res) => {
         if (res.code == "200") {
           //上传图片
@@ -10085,6 +10097,7 @@ export default {
           };
 
           return this.$api.letter[this.apiInterfaceName](param).then((res) => {
+
             this.yangguang(num, id);
           });
         } else if (res.code == "200") {
@@ -12698,7 +12711,7 @@ export default {
         this.$message.error("上传图片只能是 JPG、PNG 格式!");
         return false;
       }
-      
+
       var file = file.raw;
       let files = window.URL.createObjectURL(file); //转链接
       this.businessImg = files;
@@ -12928,7 +12941,7 @@ else{
         default:
       }
 }
-      
+
     },
     businessjoggle(param) {
       const loading = this.$loading({
@@ -12952,7 +12965,7 @@ else{
               identifyType:'10',
               scope: res.data.businessScope,
               legalPerson: res.data.legalRepresentative,
-              registeredCapital:parseInt(res.data.registeredCapital) 
+              registeredCapital:parseInt(res.data.registeredCapital)
             }
           }
 
@@ -13042,13 +13055,13 @@ else{
       this.businessform.property='0'
       switch (this.userIndex) {
         case 2:
-            this.ownerInfo ={...this.ownerInfo,...this.businessform} 
+            this.ownerInfo ={...this.ownerInfo,...this.businessform}
             break;
           case 3:
-            this.policyHolderInfo ={...this.policyHolderInfo,...this.businessform} 
+            this.policyHolderInfo ={...this.policyHolderInfo,...this.businessform}
             break;
           case 4:
-          this.insuredPersonInfo ={...this.insuredPersonInfo,...this.businessform} 
+          this.insuredPersonInfo ={...this.insuredPersonInfo,...this.businessform}
             break;
         }
     }
@@ -13089,7 +13102,7 @@ else{
           this.D03File = ""; // 投保人背面base64
           Object.keys(this.ownerInfoform).forEach((key) => {
             this.ownerInfoform[key] = "";
-          });  
+          });
            Object.keys(this.businessform).forEach((key) => {
             this.businessform[key] = "";
           });

+ 204 - 0
src/views/message/index.vue

@@ -0,0 +1,204 @@
+<template>
+  <el-row class="message">
+    <el-col :span="4" class="colLeft">
+      <div class="menu">
+        <div class="menuItem" :class="{'active':menuIndex === index}" @click="handleClick(item,index)" v-for="(item, index) in menuList" :key="item+index">
+          <el-badge :value="item.value" :max="99">{{ item.text }}</el-badge>
+        </div>
+      </div>
+    </el-col>
+    <el-col :span="20" class="colRight">
+      <div class="message-list">
+        <el-row style="cursor: pointer" :gutter="20" class="message-item" v-for="(item, index) in menuList[menuIndex].list" :key="index">
+          <el-col :span="3" style="text-align: right; color: #cccccc">
+            <p @click="handleItemClick(item, index)">{{ item.time }}</p>
+            <p></p>
+            <p @click="handleItemClick(item, index)">{{item.day}}</p>
+          </el-col>
+          <el-col :span="21">
+            <p class="title" @click="handleItemClick(item, index)">{{ item.title }}</p>
+            <p class="content" @click="handleItemClick(item, index)" :class="{'custom': item.state !== '0'}" v-html="item.content"></p>
+          </el-col>
+        </el-row>
+        <div v-if="menuList[menuIndex].list.length===0" style="height: 100%;display: flex; align-items: center; justify-content: center">
+          <el-empty description="暂无数据"></el-empty>
+        </div>
+      </div>
+      <div class="flex-box">
+        <el-pagination
+          @current-change="handlePageChange"
+          @size-change="handleSizeChange"
+          :current-page="pageNum"
+          :page-sizes="[10, 20, 30, 40]"
+          :page-size="pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="total">
+        </el-pagination>
+      </div>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+import {updateMessage} from "../../http/moudules/letter";
+
+export default {
+  data() {
+    return {
+      menuList: [
+        {
+          text: '增员信息',
+          value: 0,
+          type: 1,
+          list: [],
+        },
+        {
+          text: '待我审批',
+          value: 0,
+          type: 2,
+          list: [],
+        },
+        // {
+        //   text: '审批结果',
+        //   value: 0,
+        //   type: 3,
+        //   list: [],
+        // },
+      ],
+      menuIndex: 0,
+      pageNum: 1,
+      pageSize: 10,
+      total: 0,
+      msgType: 1
+    }
+  },
+  methods:{
+    initData(type) {
+      this.$api.letter.getMessage({
+        msgType: type?type:null,
+        pageNum: this.pageNum,
+        pageSize: this.pageSize
+      }).then(res => {
+        if(res.code === 200) {
+          this.total = res.data.total
+          this.menuList.forEach(item => {
+            if(item.type === type) {
+              item.value = res.data.list.filter(item => item.state === '0').length
+              item.list = res.data.list.map(item => {
+                return {
+                  time: item.sendTime?item.sendTime.split(' ')[1]:'',
+                  day: item.sendTime?item.sendTime.split(' ')[0]:'',
+                  highList: item.highLight?item.highLight.split(';'):[],
+                  ...item
+                }
+              })
+            }
+          })
+          this.menuList.forEach(item => {
+            item.list.forEach(sub => {
+              if(sub.highList.length>0) {
+                sub.highList.forEach(str => {
+                  sub.content = `<span>${sub.content.substring(0,sub.content.indexOf(str))}<a style="color: ${sub.state === '0'?'#00C2FF':'#cccccc'}">${sub.content.substring(sub.content.indexOf(str),sub.content.indexOf(str)+str.length)}</a>${sub.content.substring(sub.content.indexOf(str)+str.length, sub.content.length-1)}</span>`
+                })
+              }
+            })
+          })
+        }
+      })
+    },
+    handleClick(item, index) {
+      this.menuIndex = index
+      this.msgType = item.type
+      this.initData(this.msgType)
+    },
+    handlePageChange(page) {
+      this.pageNum = page
+      this.initData(this.msgType)
+    },
+    handleSizeChange(size) {
+      this.pageSize = size
+      this.initData(this.msgType)
+    },
+    handleItemClick(item, index) {
+      console.log(123, item)
+      if(item.state === '0') {
+        this.$api.letter.updateMessage(item.id).then(res => {
+          if(res.code === 200) {
+            this.$message.success(res.msg)
+            this.initData(this.msgType)
+          } else {
+            this.$message.warning(res.msg)
+          }
+        })
+      }
+      if(item.jump === '1') {
+        this.$router.push({
+          path: item.jumpUrl
+        })
+      }
+    }
+  },
+  mounted() {
+    this.initData(1);
+    this.initData(2);
+    this.initData(3);
+    this.initData();
+  }
+}
+</script>
+
+<style scoped lang="scss">
+  .message{
+    width: 100%;
+    height: 100%;
+    overflow: hidden;
+    .colLeft, .colRight{
+      height: 100%;
+      overflow: hidden;
+    }
+    .colLeft{
+      border-right: 1px solid #cccccc;
+      .menu{
+        height: 100%;
+        width: 100%;
+        overflow-y: auto;
+        .menuItem{
+          cursor: pointer;
+          padding: 10px 20px;
+          width: calc(100% - 40px);
+          text-overflow: ellipsis;
+          overflow: hidden;
+          word-break: break-all;
+          white-space: nowrap;
+        }
+        .active{
+          background: #F0F0F0;
+        }
+      }
+    }
+    .message-list{
+      margin: 10px 40px;
+      width: calc(100% - 80px);
+      height: calc(100% - 60px);
+      overflow-y: auto;
+      .message-item{
+        border-bottom: 1px solid #cccccc;
+        width: 100%;
+        .title, .content{
+          width: 100%;
+          text-overflow: ellipsis;
+          overflow: hidden;
+          word-break: break-all;
+          white-space: nowrap;
+        }
+        .custom{
+          color: #ccc;
+        }
+      }
+    }
+    .flex-box{
+      display: flex;
+      justify-content: flex-end;
+    }
+  }
+</style>