Quellcode durchsuchen

Merge remote-tracking branch 'origin/dev' into wuguojie

wuguojie vor 1 Jahr
Ursprung
Commit
6e01d95674
43 geänderte Dateien mit 2696 neuen und 2188 gelöschten Zeilen
  1. 3 3
      config/dev.env.js
  2. 1 1
      config/prod.env.js
  3. 1 1
      config/test.env.js
  4. BIN
      src/assets/image/title_khfw.png
  5. 19 0
      src/components/Form/retrievalForm.vue
  6. 18 0
      src/http/moudules/custInfo.js
  7. 16 0
      src/http/moudules/insCompany.js
  8. 8 0
      src/http/moudules/letter.js
  9. 72 0
      src/http/moudules/sys.js
  10. 8 0
      src/http/moudules/task.js
  11. 2 2
      src/http/moudules/user.js
  12. 1 1
      src/views/AgreementManage/CarInsurance/AgreementEntry.vue
  13. 207 64
      src/views/AgreementManage/CarInsurance/AgreementProductFee.vue
  14. 37 12
      src/views/AgreementManage/CarInsurance/ProductCostExamine.vue
  15. 8 0
      src/views/AgreementManage/InsuranceCompany/CargoTruck/BusinessOperation/Fuel/Company.vue
  16. 8 0
      src/views/AgreementManage/InsuranceCompany/CargoTruck/BusinessOperation/NewEnergy/Company.vue
  17. 8 0
      src/views/AgreementManage/InsuranceCompany/CargoTruck/NonBusiness/Fuel/Company.vue
  18. 8 0
      src/views/AgreementManage/InsuranceCompany/CargoTruck/NonBusiness/NewEnergy/Company.vue
  19. 8 0
      src/views/AgreementManage/InsuranceCompany/PassengerBus/BusinessOperation/Fuel/Company.vue
  20. 8 0
      src/views/AgreementManage/InsuranceCompany/PassengerBus/BusinessOperation/NewEnergy/Company.vue
  21. 8 0
      src/views/AgreementManage/InsuranceCompany/PassengerBus/NonBusiness/Fuel/Company.vue
  22. 8 0
      src/views/AgreementManage/InsuranceCompany/PassengerBus/NonBusiness/NewEnergy/Company.vue
  23. 44 3
      src/views/Core/KtCommonTable.vue
  24. 15 9
      src/views/Core/components/detailsDialog.vue
  25. 26 22
      src/views/Core/components/detailsDialogPro.vue
  26. 15 8
      src/views/Core/components/quotationDialog.vue
  27. 17 8
      src/views/Core/components/quotationDialogPro.vue
  28. 1 0
      src/views/FinancialManagement/CarInsurance/Verifytasks/Verifyintasks.vue
  29. 6 5
      src/views/FinancialManagement/CarInsurance/Verifytasks/Verifyuntasks.vue
  30. 119 2
      src/views/FinancialManagement/ContractManagement/ContractManagement.vue
  31. 27 27
      src/views/Home.vue
  32. 2 2
      src/views/NavBar/NavBar.vue
  33. 1 1
      src/views/PeopleManage/Sales/SalesExamine.vue
  34. 1 1
      src/views/PeopleManage/Sales/SalesExamineGroup.vue
  35. 1 1
      src/views/PeopleManage/Sales/SalesManage.vue
  36. 1 1
      src/views/PeopleManage/Sales/SalesManageGroup.vue
  37. 118 6
      src/views/Sys/DataPermissions.vue
  38. 141 404
      src/views/Sys/Deptall.vue
  39. 539 0
      src/views/Sys/RulePermissions.vue
  40. 47 26
      src/views/Task/TaskPoolChannel/TaskPoolChannel3.vue
  41. 283 162
      src/views/Task/daikeComponents/KhgxKtLetter.vue
  42. 400 1313
      src/views/Task/daikeComponents/KtLetter.vue
  43. 435 103
      src/views/Task/daikeComponents/KtLetter1.vue

+ 3 - 3
config/dev.env.js

@@ -5,7 +5,7 @@ const prodEnv = require('./prod.env')
 module.exports = merge(prodEnv, {
   NODE_ENV: '"development"',
   ENV_CONFIG: '"dev"',
-  // BASE_URL: '"https://test.baoxianzhanggui.com/web-api"',//测试服务器
+  BASE_URL: '"https://test.baoxianzhanggui.com/web-api"',//测试服务器
   // BASE_URL:'"https://sxzgkj.baoxianzhanggui.com/web-api"',//正式服务器
   // BASE_URL:'"https://sxzgkj.baoxianzhanggui.com/web-api"'//正式服务器
   // BASE_URL: '"http://192.168.0.115:8080/"', //凯森
@@ -17,8 +17,8 @@ module.exports = merge(prodEnv, {
   // BASE_URL: '"http://192.168.1.101:8080/"',
   // BASE_URL: '"http://192.168.0.250:8080/"',//
   //  BASE_URL: '"http:///192.168.0.103:8080/"',//霍续亮
-  BASE_URL: '"http://192.168.0.52:8080/"',//贺礼霄
-  // BASE_URL: '"http:///192.168.0.55:8080/"',// 董鑫
+  // BASE_URL: '"http://192.168.0.52:8080/"',//贺礼霄
+  // BASE_URL: '"http:///192.168.0.55:8080/"',// 董鑫 
   CONSOLE_BASE_URL: '"http://localhost:8080/"', //控制台测试服务器
   CONSOLE_KHGX_URL: '"http://192.168.0.103:8081/login"', //跳转客户服务平台地址
   // CONSOLE_BASE_URL: '"https://test.baoxianzhanggui.com/console-api"' //控制台正式服务器

+ 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


+ 19 - 0
src/components/Form/retrievalForm.vue

@@ -26,6 +26,7 @@
               v-model="formData[field.name]"
               filterable
               clearable
+              :multiple="field.multiple"
               :placeholder="'请选择' + field.label"
               @change="selectChange($event, field.name)"
             >
@@ -94,6 +95,9 @@
         />
       </el-col>
       <el-col :span="2" style="text-align: right">
+        <el-button v-if="isExport" size="small" type="primary" @click="exportFileSubmit"
+          >导出</el-button
+        >
         <el-button size="small" type="primary" @click="handleSubmit"
           >查询</el-button
         >
@@ -116,6 +120,10 @@ export default {
     dateType :{
       type: String,
       default: "0",
+    },
+    isExport:{
+      type:Boolean,
+      default:false,
     }
   },
   data() {
@@ -209,6 +217,17 @@ export default {
       this.isCollapsed = !this.isCollapsed; // 切换折叠状态
       this.$emit("toggleCollapse", this.isCollapsed);
     },
+    //导出
+    exportFileSubmit(){
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.$emit("exportSubmit", this.formData);
+        } else {
+          // 表单验证失败,做相应处理
+        }
+      });
+    },
+    //查询
     handleSubmit() {
       this.$refs.form.validate((valid) => {
         if (valid) {

+ 18 - 0
src/http/moudules/custInfo.js

@@ -13,6 +13,24 @@ export const queryCustInfo = (data) => {
   })
 }
 
+// 获取外部协议的非现询费用
+export const externalInquiryNowFeeOrderFee = (data) => {
+  return axios({
+    url: '/api/externalOrder/externalInquiryNowFeeOrderFee',
+    method: 'post',
+    data
+  })
+}
+//查询外部协议的保险公司
+export const getExternalAgreementCompanyList = (data) => {
+  return axios({
+    url: '/esmInsCompany/getExternalAgreementCompanyList',
+    method: 'post',
+    data
+  })
+}
+
+
 
 
 

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

@@ -348,6 +348,7 @@ export const getPtlInsAttributionTemplate = (data) => {
 
 
 /** 协议产品费用 */
+
 //查询
 export const productCostQuery = (data) => {
   return axios({
@@ -432,6 +433,21 @@ export const productContbatchCopy = (data) => {
     data
   })
 }
+//费用禁用
+export const productdisable = (id) => {
+  return axios({
+    url: '/plt/new/agreement/costs/disable/'+id,
+    method: "post",
+  })
+}
+//费用批量禁用
+export const productbatchDisable = (data) => {
+  return axios({
+    url: '/plt/new/agreement/costs/batchDisable',
+    method: "post",
+    data
+  })
+}
 /** 协议产品费用 */
 /** 费用审核 */
 

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

@@ -18,6 +18,14 @@ export const idCard = (data) => {
     data
   })
 }
+//营业执照识别
+export const businessLicense = (data) => {
+  return axios({
+    url: '/order/identify/businessLicense',
+    method: 'post',
+    data
+  })
+}
 //VIN查询  中煤
 export const insZhongmeiVIN = (data) => {
   return axios({

+ 72 - 0
src/http/moudules/sys.js

@@ -427,3 +427,75 @@ export const dataPermissionsUpdate = (data) => {
     })
 }
 
+//数据权限详情列表
+export const getDataPermissions = (data) => {
+    return axios({
+        url: '/dataPermissions/queryPage',
+        method: 'post',
+        data
+    })
+}
+
+//数据权限回显
+export const getDataPermissionsItem = (id) => {
+    return axios({
+        url:`/dataPermissions/${id}`,
+        method: 'get',
+      
+    })
+}
+
+
+//获取角色关联菜单列表
+export const getInsRoleMenuPermissions = (data) => {
+    return axios({
+        url:`/insRolePermissions/getInsRoleMenuPermissions`,
+        method: 'post',
+        data
+      
+    })
+}
+//设置角色关联菜单
+export const saveAndUpdateRuleMenu = (data) => {
+    return axios({
+        url:`/insRolePermissions/saveAndUpdateRuleMenu`,
+        method: 'post',
+        data
+      
+    })
+}
+
+//获取菜单关联数据-无分页
+export const getMenuRelaPerqueryList = (data) => {
+    return axios({
+        url:`/dataPermissions/queryList`,
+        method: 'post',
+        data
+      
+    })
+}
+//获取角色关联菜单 关联的规则数据
+export const getInsRolePermissionsDtoList = (data) => {
+    return axios({
+        url:`/insRolePermissions/getInsRolePermissionsDtoList`,
+        method: 'post',
+        data
+      
+    })
+}
+//保存角色关联菜单 关联的规则数据
+export const roleMenuPerSaveAndUpdate = (data) => {
+    return axios({
+        url:`/insRolePermissions/saveAndUpdate`,
+        method: 'post',
+        data
+      
+    })
+}
+
+
+
+
+
+
+

+ 8 - 0
src/http/moudules/task.js

@@ -1004,6 +1004,14 @@ export const queryPageHospitalityByChannel = (data) => {
     data
   })
 }
+//任务池(渠道)列表导出接口
+export const exportHospitalityByChannel = (data) => {
+  return axios({
+    url: "/insurance/order/exportHospitalityByChannel ",
+    method: "post",
+    data
+  })
+}
 // 任务池(代理人)列表接口
 export const queryPageHospitalityLinkagent = (data) => {
   return axios({

+ 2 - 2
src/http/moudules/user.js

@@ -688,9 +688,9 @@ export const queryGeographyRecord = (data) => {
 
 
 // 电销管理人
-export const findDxUserList = () => {
+export const findDxUserList = (type) => {
   return axios({
-    url: '/user/findDxUserList',
+    url: '/user/findDxUserList?type='+type,
     method: 'get',
   })
 }

+ 1 - 1
src/views/AgreementManage/CarInsurance/AgreementEntry.vue

@@ -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" 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>

+ 207 - 64
src/views/AgreementManage/CarInsurance/AgreementProductFee.vue

@@ -44,6 +44,14 @@
             </el-select>
           </el-form-item>
         </el-col>
+        <el-col :span="6">
+          <el-form-item label="费用状态">
+            <el-select style="width: 100%;" v-model="productpageRequest.validStatus" clearable>
+              <el-option label="启用" value="1"></el-option>
+              <el-option label="禁用" value="0"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
         <el-col :span="6">
           <el-form-item label="创建日期">
             <el-date-picker style="width: 100%;" v-model="createDate" type="daterange" value-format="yyyy-MM-dd"
@@ -53,8 +61,8 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="费用描述">
-            <el-select style="width: 100%;"  v-model="productpageRequest.costsDescription" multiple filterable allow-create default-first-option
-              placeholder="关键字搜索 例:新能源、非车险、评分等">
+            <el-select style="width: 100%;" v-model="productpageRequest.costsDescription" multiple filterable allow-create
+              default-first-option placeholder="关键字搜索 例:新能源、非车险、评分等">
             </el-select>
           </el-form-item>
         </el-col>
@@ -86,21 +94,21 @@
     </div>
     <kt-common-table :tableHeights="580" :SerialShow="false" :operationWidth="250" :showOperation="true"
       :showBatchDelete="true" :showBatchSettled="false" :showBatchPrint="false" :customToolseletted="true"
-      :data="productPageResult" :columns="productColumns" @findPage="productCostFindPage" button2Name="编辑"
-      button2Type="text" button3Type="text" button5Type="text" :button2style="{ color: '#2D4D89' }"
-      :button3style="{ color: '#D42426' }" :button5style="{ color: '#2D4D89' }" permsButton2="agreement:input:productCost"
-      @handleButton2="productUpdate" deleteName="批量修改费用" @handleDelete="batchUpdate" @customTool="batchDelete"
-      @customTool1="customTool1" customToolName1="批量修改起止时间"
-      customToolName="批量删除" button3Name="删除"  permsButton3="agreement:input:productCost" @handleButton3="productDelete"
+      :disableInBulk="false" :data="productPageResult" :columns="productColumns" @findPage="productCostFindPage"
+      button2Name="编辑" button2Type="text" button3Type="text" button5Type="text" button4Type="text"
+      :button2style="{ color: '#2D4D89' }" :button3style="{ color: '#D42426' }" :button5style="{ color: '#2D4D89' }"
+      permsButton2="agreement:input:productCost" @handleButton2="productUpdate" deleteName="批量修改费用"
+      @handleDelete="batchUpdate" @customTool="batchDelete" @customTool1="customTool1" customToolName1="批量修改起止时间"
+      customToolName="批量删除" button3Name="删除" permsButton3="agreement:input:productCost" @handleButton3="productDelete" button6Name="查看" button6Icon="" button6Type="text" @handleButton6="projectView"
       button5Name="轨迹" @handleButton5="trajectory" button3Icon="">
     </kt-common-table>
-    <el-dialog  :append-to-body="true" :title="productCostAddDialogTitle" :visible.sync="productCostAddVehicleFactorVisible" width="80%" top="6vh"
-      @close="productcloseDialog">
+    <el-dialog :append-to-body="true" :title="productCostAddDialogTitle"
+      :visible.sync="productCostAddVehicleFactorVisible" width="80%" top="6vh" @close="productcloseDialog">
       <el-tabs v-model="activeName" type="card">
         <el-tab-pane :label="tabtitle + '费用'" name="feiyong" class="tab-panestyle">
           <div class="tab-panecent">
             <el-form ref="productCostForm" :model="productCostForm" label-width="140px" :size="overSize"
-              :rules="costformRules">
+              :rules="costformRules" :disabled="isView">
               <el-row>
                 <h4>费用详情</h4>
                 <el-col :span="20" :offset="2" v-if="productCostAddDialogType == 'edit'">
@@ -324,18 +332,22 @@
         <el-tab-pane label="产品费用因子" name="yinzi" class="tab-panestyle" v-if="!messageInfo.isExternal">
           <div class="tab-panecent2">
             <Product-Cost-Form ref="ProductRef" v-if="productCostAddVehicleFactorVisible" :form="dynamicFormArray"
-              :operator="operatorlist" over-size="small"></Product-Cost-Form>
+              :operator="operatorlist" over-size="small" :disabled="isView"></Product-Cost-Form>
           </div>
         </el-tab-pane>
       </el-tabs>
-      <span slot="footer" class="dialog-footer">
+      <span slot="footer" class="dialog-footer" v-if="isView">
+        <el-button :size="overSize" style="background: #EAEDF1;color: #2D4D89;"
+                   @click="productCostAddVehicleFactorVisible = false; isView = false">确 定</el-button>
+      </span>
+      <span slot="footer" class="dialog-footer" v-else>
         <el-button :size="overSize" style="background: #EAEDF1;color: #2D4D89;"
-          @click="productCostAddVehicleFactorVisible = false">取 消</el-button>
+          @click="productCostAddVehicleFactorVisible = false; isView = false">取 消</el-button>
         <el-button :size="overSize" style="background: #2D4D89;color: #fff;border-color: #2D4D89;" type="primary"
           @click="productCostAddSubmit('productCostForm')">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog  :append-to-body="true" :visible.sync="ddgjdialogVisible" width="25%" title="订单轨迹">
+    <el-dialog :append-to-body="true" :visible.sync="ddgjdialogVisible" width="25%" title="订单轨迹">
       <div class="tab-panestyle">
         <div style="height: 400px; overflow-y: auto;padding: 6px;">
           <el-steps direction="vertical" :active="trajectoryTable.length - 1">
@@ -351,7 +363,8 @@
         </div>
       </div>
     </el-dialog>
-    <el-dialog  :append-to-body="true" title="产品历史记录" :visible.sync="productHistoryRecordDialogVisible" width="70%" :fullscreen="true">
+    <el-dialog :append-to-body="true" title="产品历史记录" :visible.sync="productHistoryRecordDialogVisible" width="70%"
+      :fullscreen="true">
       <div class="p-2">
         <el-row class="queryFrom">
           <el-form ref="queryFormRef" :model="productHistoryRecordForm" label-width="80px">
@@ -393,9 +406,10 @@
       </div>
 
     </el-dialog>
-    <el-dialog  :append-to-body="true" title="批量操作" :visible.sync="batchdialogVisible" width="50%">
+    <el-dialog :append-to-body="true" title="批量操作" :visible.sync="batchdialogVisible" width="50%">
       <div class="tab-panestyle">
-        <el-form :inline="true" :model="batchUpdateForm" id="bulkOperation" class="demo-form-inline  tab-panecent" style="padding: 20px;">
+        <el-form :inline="true" :model="batchUpdateForm" id="bulkOperation" class="demo-form-inline  tab-panecent"
+          style="padding: 20px;">
           <!-- <el-row>
             <el-col :span="8">
               <el-form-item label="费用起期:">
@@ -412,7 +426,7 @@
               </el-form-item>
             </el-col>
           </el-row> -->
-          <el-row >
+          <el-row>
             <div class="title">交强险费用</div>
             <el-col :span="8">
               <el-form-item label="总费用比例" prop="jqCostsProportion">
@@ -552,14 +566,15 @@
           @click="batchCostsubmit">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog  :append-to-body="true" title="费用复制窗口" :visible.sync="productCostCopyDialogVisible" :close-on-click-modal="false"
-      :fullscreen="true">
+    <el-dialog :append-to-body="true" title="费用复制窗口" :visible.sync="productCostCopyDialogVisible"
+      :close-on-click-modal="false" :fullscreen="true">
       <div class="p-2">
         <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" placeholder="请选择协议">
-              <el-option v-for="(item, index) in protocolpageResult" :key="index" :label="`${item.agreementName}-${item.businessDescription}-${item.jobDescription}`"
+            <el-select v-model="productcopyItemPageRequest.agreementId" filterable clearable placeholder="请选择协议">
+              <el-option v-for="(item, index) in protocolpageResult" :key="index"
+                :label="`${item.agreementName}-${item.businessDescription}-${item.jobDescription}`"
                 :value="item.id"></el-option>
             </el-select>
           </el-form-item>
@@ -582,8 +597,8 @@
             </el-date-picker>
           </el-form-item>
           <el-form-item label="费用描述">
-            <el-select style="width: 300px;"  v-model="productcopyItemPageRequest.costsDescription" multiple filterable allow-create default-first-option
-              placeholder="费用描述">
+            <el-select style="width: 300px;" v-model="productcopyItemPageRequest.costsDescription" multiple filterable
+              allow-create default-first-option placeholder="费用描述">
             </el-select>
           </el-form-item>
           <el-form-item>
@@ -597,7 +612,8 @@
         </kt-common-table>
       </div>
     </el-dialog>
-    <el-dialog  :append-to-body="true" title="产品费用历史记录详情" :visible.sync="productHistoryDetailsDialogVisible" width="80%" top="6vh">
+    <el-dialog :append-to-body="true" title="产品费用历史记录详情" :visible.sync="productHistoryDetailsDialogVisible" width="80%"
+      top="6vh">
       <div class="tab-panestyle">
         <Product-Cost-Form v-if="productHistoryDetailsDialogVisible" :form="dynamicFormArray" :operator="operatorlist"
           over-size="small" @cancelForm="productHistoryDetailsDialogVisible = false" :disabled="true"></Product-Cost-Form>
@@ -605,21 +621,22 @@
     </el-dialog>
 
 
-    <el-dialog  :append-to-body="true" title="批量修改起止时间" :visible.sync="showUpdate1" width="30%" top="6vh">
+    <el-dialog :append-to-body="true" title="批量修改起止时间" :visible.sync="showUpdate1" width="30%" top="6vh">
       <div class="tab-panestyle">
-        <el-form :inline="true" :model="batchUpdateForm1" id="bulkOperation" class="demo-form-inline  tab-panecent" style="padding: 20px;">
+        <el-form :inline="true" :model="batchUpdateForm1" id="bulkOperation" class="demo-form-inline  tab-panecent"
+          style="padding: 20px;">
           <el-row>
             <el-col :span="12">
               <el-form-item label="费用起期:">
-                <el-date-picker size="small"  v-model="batchUpdateForm1.costsStartDate" type="datetime"
+                <el-date-picker size="small" v-model="batchUpdateForm1.costsStartDate" type="datetime"
                   placeholder="选择开始日期" value-format="yyyy-MM-dd HH:mm:ss">
                 </el-date-picker>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="费用止期:">
-                <el-date-picker size="small"  v-model="batchUpdateForm1.costsEndDate" type="datetime"
-                  placeholder="选择结束日期" value-format="yyyy-MM-dd HH:mm:ss" @change="checkStartDate1">
+                <el-date-picker size="small" v-model="batchUpdateForm1.costsEndDate" type="datetime" placeholder="选择结束日期"
+                  value-format="yyyy-MM-dd HH:mm:ss" @change="checkStartDate1">
                 </el-date-picker>
               </el-form-item>
             </el-col>
@@ -645,13 +662,14 @@ export default {
     KtCommonTable,
     ProductCostForm
   },
-  props:{
-    messageInfo:{
-      default:{}
+  props: {
+    messageInfo: {
+      default: {}
     }
   },
   data() {
     return {
+      isView: false,
       productDate: [],
       createDate: [],
       productcopyDate: [],
@@ -982,6 +1000,7 @@ export default {
         { prop: "desc", label: "费用因子描述", minWidth: 520 },
         { prop: "priorityLevel", label: "方案优先级", minWidth: 100 },
         { prop: "isAudit", label: "审核状态", minWidth: 120, formatter: this.auditTypeFormation },
+        { prop: "validStatus", label: "费用状态", minWidth: 200, formatter: this.validStatusFormation },
         {
           prop: "jqCarCostsProportion",
           label: "费用比例(交强)",
@@ -1175,6 +1194,7 @@ export default {
         pageNum: 1,
         pageSize: 20,
         agreementId: "",
+        validStatus: "",
       },
       productPageResult: [],
       insuranceCompanyId: "",
@@ -1232,13 +1252,12 @@ export default {
       showUpdate1: false,
       batchUpdateForm1: {},
       carClassList: [],
-      batchUpdatelist:[],
+      batchUpdatelist: [],
       lineData: {},
     }
   },
   // 生命周期函数
   created() {
-    console.log(this.messageInfo, 888888);
     this.lineData = this.messageInfo
     this.insuranceCompanyId = this.messageInfo.insuranceCompanyId;
     this.productpageRequest.agreementId = this.messageInfo.id;
@@ -1261,11 +1280,10 @@ export default {
       if (res.code == 200) {
         this.protocolpageResult = res.data;
         this.protocolpageResult.forEach(item => {
-          item.agreementName == null ? item.agreementName='' : item.agreementName,
-          item.businessDescription ==  null ?  item.businessDescription='' : item.businessDescription,
-          item.jobDescription == null ? item.jobDescription=''  : item.jobDescription
-         });
-        console.log(this.protocolpageResult);
+          item.agreementName == null ? item.agreementName = '' : item.agreementName,
+            item.businessDescription == null ? item.businessDescription = '' : item.businessDescription,
+            item.jobDescription == null ? item.jobDescription = '' : item.jobDescription
+        });
       } else {
         this.$message.error(res.msg);
       }
@@ -1273,6 +1291,7 @@ export default {
   },
   // 方法函数
   methods: {
+
     disabledDate1(time) {
       let datetime = this.productcopyItemPageRequest.costStartDate;
       const disabledTime = new Date(datetime).getTime() - 8.64e7;
@@ -1693,30 +1712,108 @@ export default {
       // costsDateBatch
       this.showUpdate1 = true
     },
+    //批量禁用
+    batchdisableInBulkClick(data) {
+      this.$confirm('禁用后今日内可支付的订单将失效, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'danger'
+      }).then(() => {
+        this.$api.insCompany.productbatchDisable({ costsIdList: data }).then((res) => {
+          if (res.code == '200') {
+            this.$message({
+              type: 'success',
+              message: res.msg,
+            });
+            this.productCostFindPage();
+
+          } else {
+            this.$message({
+              type: 'error',
+              message: res.msg,
+            });
+          }
+        });
+      }).catch(() => {
+
+      });
+
+    },
     //产品批量编辑
     batchUpdate(data) {
-      let listName=[];
-      data.map(val=>{
-        let name=this.productPageResult.content.find(ele=>ele.id==val).productName;
+      let listName = [];
+      data.map(val => {
+        let name = this.productPageResult.content.find(ele => ele.id == val).productName;
         listName.push(name)
         return val;
       })
-      this.batchUpdatelist=listName;
+      this.batchUpdatelist = listName;
       console.log(this.batchUpdatelist)
       let contains1 = listName.every(item => ['单交'].includes(item));
-      let contains2 = listName.every(item => ['单商','单三'].includes(item));
-      let contains3 = listName.every(item => ['交商','交三'].includes(item));
-      if(contains1 || contains2 || contains3){
-      this.batchUpdateForm = {
-        ids: data,
-      };
-      this.batchdialogVisible = true;
-      }else{
+      let contains2 = listName.every(item => ['单商', '单三'].includes(item));
+      let contains3 = listName.every(item => ['交商', '交三'].includes(item));
+      if (contains1 || contains2 || contains3) {
+        this.batchUpdateForm = {
+          ids: data,
+        };
+        this.batchdialogVisible = true;
+      } else {
         return this.$message.error('险种选择错误,无法批量修改');
       }
     },
+    // 产品查看
+    projectView({ row, cloumn }) {
+      this.isView = true
+      this.$api.insCompany.productcostFactorQuery(row.id).then((res) => {
+        if (res.code == '200') {
+          let obj = Object.assign({}, res.data);
+          obj.costsAttrLinks.map(val => {
+            switch (val.attrType) {
+              case 'inputNumber':
+              case 'datetime':
+                if (!val.operator) {
+                  val.operator = '1';
+                }
+                break;
+            }
+            if (val.attrCode == 'LicenseNo') {
+              val.dictLabal = this.areanumberplateList;
+            }
+            if (val.attrCode == 'LicenseArea') {
+              val.dictLabal = this.licenseAreaList;
+            }
+            if (val.attrCode == 'CarClass') {
+              val.dictLabal = this.carClassList
+            }
+            return val;
+          })
+          this.dynamicFormArray = obj.costsAttrLinks;
+          this.productCostForm = obj;
+          this.productUpdateObj.productId = this.productCostForm.productId;
+          this.productUpdateObj.productName = this.productCostForm.productName;
+          this.productCostForm.productId = [this.productCostForm.productId]
+          this.productCostForm.productName = [this.productCostForm.productName]
+          this.tabtitle = this.productCostForm.productName.join(', '); // 使用逗号和空格作为分隔符
+          this.productCostAddDialogType = "edit";
+          this.productCostAddDialogTitle = "产品详情";
+          this.productCostAddVehicleFactorVisible = true;
+        } else {
+          this.$message({
+            type: 'error',
+            message: res.msg,
+          });
+        }
+      });
+    },
     //产品编辑
     productUpdate({ row, column }) {
+      if (row.validStatus === 1) {
+        return this.$message({
+          type: 'warning',
+          message: "请先禁用后再编辑费用",
+        });
+      }
+      this.isView = false
       this.$api.insCompany.productcostFactorQuery(row.id).then((res) => {
         if (res.code == '200') {
           let obj = Object.assign({}, res.data);
@@ -1877,6 +1974,44 @@ export default {
       let expense = this.expenseAuditlist.find(val => val.value == expenseAudit).label;
       return <el-tag type="success">{expense}</el-tag>;
     },
+    validStatusFormation(row, column) {
+      let _this = this;
+      return <el-switch value={row.validStatus} active-value={1}
+        inactive-value={0} onChange={validStatuschange} ></el-switch>;
+      function validStatuschange(value) {
+        if (value) {
+          _this.productdisableUP(row.id);
+        } else {
+          _this.$confirm('禁用后今日内可支付的订单将失效, 是否继续?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'danger'
+          }).then(() => {
+            _this.productdisableUP(row.id);
+          }).catch(() => {
+          });
+        }
+
+
+      }
+    },
+    //费用启用/禁用
+    productdisableUP(id) {
+      this.$api.insCompany.productdisable(id).then((res) => {
+        if (res.code == '200') {
+          this.$message({
+            type: 'success',
+            message: res.msg,
+          });
+          this.productCostFindPage();
+        } else {
+          this.$message({
+            type: 'error',
+            message: res.msg,
+          });
+        }
+      });
+    },
     operatorTypeFormatter(row, column) {
       let operatorType = row.operatorType;
       switch (operatorType) {
@@ -1918,7 +2053,7 @@ export default {
       }
       return contains
     },
-    batchUpdateincludes(){
+    batchUpdateincludes() {
       let a = ['单交'];
       let contains = this.batchUpdatelist.every(item => a.includes(item));
       return contains
@@ -2228,40 +2363,48 @@ export default {
   background: #f2f7fc;
   border-color: #fff;
 }
+
 // 批量操作弹窗样式
-#bulkOperation{
-  .title{
+#bulkOperation {
+  .title {
     color: #333;
     font-size: 16px;
     font-weight: 500;
     padding-bottom: 20px;
   }
-  .el-form-item{
+
+  .el-form-item {
     margin-bottom: 20px;
-    >>>.el-form-item__content{
+
+    >>>.el-form-item__content {
       width: 100%;
       line-height: normal;
-      .el-date-editor.el-input, .el-date-editor.el-input__inner{
+
+      .el-date-editor.el-input,
+      .el-date-editor.el-input__inner {
         width: 100%;
       }
     }
-    >>>.el-form-item__label{
+
+    >>>.el-form-item__label {
       height: 22px;
       line-height: 22px;
       margin-bottom: 10px;
     }
-    >>>.el-input-number{
+
+    >>>.el-input-number {
       width: 100%;
-      .el-input__inner{
+
+      .el-input__inner {
         color: #333;
         text-align: left;
-        &:focus{
+
+        &:focus {
           color: #333;
         }
       }
     }
   }
 }
-
 </style>
 

+ 37 - 12
src/views/AgreementManage/CarInsurance/ProductCostExamine.vue

@@ -40,11 +40,17 @@
           default-first-option placeholder="费用描述">
         </el-select>
       </el-form-item>
-      <el-form-item label="费用起止期">
-        <el-date-picker value-format="yyyy-MM-dd" v-model="date1" size="small" type="daterange" align="left"
-          range-separator="至" start-placeholder="费用起期" end-placeholder="费用止期">
+      <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>
       </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>
+      </el-form-item>
+
       <el-form-item>
         <el-button type="primary" @click="costQuery">查询</el-button>
       </el-form-item>
@@ -337,6 +343,8 @@ export default {
         agreementIdList: [],
         costsDescription: [],
         productCode: [],
+        costStartDate:"",
+        costsEndDate:"",
       },
       //保险公司列表
       InsCompanyList: [],
@@ -614,6 +622,30 @@ export default {
   },
   // 方法函数
   methods: {
+    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)) {
+        this.productpageRequest.costsEndDate = null;
+        this.$message({
+          message: "费用止期不能小于/等于费用起期!",
+          type: "error",
+        });
+      }
+    },
+    //日期比较
+    validateEndDate(startDateStr, endDateStr) {
+      const startDate = new Date(startDateStr);
+      const endDate = new Date(endDateStr);
+      return endDate.getTime() > startDate.getTime();
+    },
     // 点击展开行
     handleExpandChange(row,rows) {
       if(rows.length>0) {
@@ -812,13 +844,6 @@ export default {
         this.productpageRequest.createStartTime = "";
         this.productpageRequest.createEndTime = "";
       }
-      if (this.date1 != null) {
-        this.productpageRequest.costStartDate = this.date1[0];
-        this.productpageRequest.costsEndDate = this.date1[1];
-      } else {
-        this.productpageRequest.costStartDate = "";
-        this.productpageRequest.costsEndDate = "";
-      }
       this.$api.insCompany
         .getCostsAuditList(this.productpageRequest)
         .then((res) => {
@@ -832,7 +857,7 @@ 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'}}>{ allAgreementItem.agreementName }</a>;
+        return <a onClick={ this.handleAgreement.bind(null, row) } style={{color: '#409eff', cursor: 'pointer'}}>{ row.agreementName }</a>;
       }
     },
     downloadRender(row) {
@@ -879,7 +904,7 @@ export default {
             this.$message.warning(res.msg)
           }
         });
-    }
+    },
   },
   // 计算属性
   computed: {},

+ 8 - 0
src/views/AgreementManage/InsuranceCompany/CargoTruck/BusinessOperation/Fuel/Company.vue

@@ -1,6 +1,10 @@
 <!-- 模板区域 -->
 <template>
   <div>
+    <div class="flex a-c">
+      <el-input v-model="pageRequest.companyName"  clearable :size="overSize" placeholder="保险公司名称" style="width: 300px;margin: 10px 20px 10px 0;"></el-input>
+      <el-button type="primary" :size="overSize" @click="companyQuery">查询</el-button>
+    </div>
     <kt-common-table :tableHeights="700" :SerialShow="false" :operationWidth="300" :showOperation="true"
       :showBatchDelete="false" :showBatchSettled="false" :showBatchPrint="false" :data="solutionResult" button2Name="规则配置"
       button2Type="text" @handleButton2="attrConfig" button3Name="已配置方案" button3Type="text" @handleButton3="solutionConfig"
@@ -27,6 +31,7 @@ export default {
       solutionResult: [],
       //操作符字典
       pageRequest: {
+        companyName:"",
         pageNum: 1,
         pageSize: 20,
       },
@@ -38,6 +43,9 @@ export default {
   },
   // 方法函数
   methods: {
+    companyQuery(){
+      this.companyFindPage();
+    },
     companyFindPage(data) {
       if (data && data.pageRequest) {
         this.pageRequest.pageNum = data.pageRequest.pageNum;

+ 8 - 0
src/views/AgreementManage/InsuranceCompany/CargoTruck/BusinessOperation/NewEnergy/Company.vue

@@ -1,6 +1,10 @@
 <!-- 模板区域 -->
 <template>
   <div>
+    <div class="flex a-c">
+      <el-input v-model="pageRequest.companyName"  clearable :size="overSize" placeholder="保险公司名称" style="width: 300px;margin: 10px 20px 10px 0;"></el-input>
+      <el-button type="primary" :size="overSize" @click="companyQuery">查询</el-button>
+    </div>
     <kt-common-table :tableHeights="700" :SerialShow="false" :operationWidth="300" :showOperation="true"
       :showBatchDelete="false" :showBatchSettled="false" :showBatchPrint="false" :data="solutionResult" button2Name="规则配置"
       button2Type="text" @handleButton2="attrConfig" button3Name="已配置方案" button3Type="text" @handleButton3="solutionConfig"
@@ -27,6 +31,7 @@ export default {
       solutionResult: [],
       //操作符字典
       pageRequest: {
+        companyName:"",
         pageNum: 1,
         pageSize: 20,
       },
@@ -38,6 +43,9 @@ export default {
   },
   // 方法函数
   methods: {
+    companyQuery(){
+      this.companyFindPage();
+    },
     companyFindPage(data) {
       if (data && data.pageRequest) {
         this.pageRequest.pageNum = data.pageRequest.pageNum;

+ 8 - 0
src/views/AgreementManage/InsuranceCompany/CargoTruck/NonBusiness/Fuel/Company.vue

@@ -1,6 +1,10 @@
 <!-- 模板区域 -->
 <template>
   <div>
+    <div class="flex a-c">
+      <el-input v-model="pageRequest.companyName"  clearable :size="overSize" placeholder="保险公司名称" style="width: 300px;margin: 10px 20px 10px 0;"></el-input>
+      <el-button type="primary" :size="overSize" @click="companyQuery">查询</el-button>
+    </div>
     <kt-common-table :tableHeights="700" :SerialShow="false" :operationWidth="300" :showOperation="true"
       :showBatchDelete="false" :showBatchSettled="false" :showBatchPrint="false" :data="solutionResult" button2Name="规则配置"
       button2Type="text" @handleButton2="attrConfig" button3Name="已配置方案" button3Type="text" @handleButton3="solutionConfig"
@@ -27,6 +31,7 @@ export default {
       solutionResult: [],
       //操作符字典
       pageRequest: {
+        companyName:"",
         pageNum: 1,
         pageSize: 20,
       },
@@ -38,6 +43,9 @@ export default {
   },
   // 方法函数
   methods: {
+    companyQuery(){
+      this.companyFindPage();
+    },
     companyFindPage(data) {
       if (data && data.pageRequest) {
         this.pageRequest.pageNum = data.pageRequest.pageNum;

+ 8 - 0
src/views/AgreementManage/InsuranceCompany/CargoTruck/NonBusiness/NewEnergy/Company.vue

@@ -1,6 +1,10 @@
 <!-- 模板区域 -->
 <template>
   <div>
+    <div class="flex a-c">
+      <el-input v-model="pageRequest.companyName"  clearable :size="overSize" placeholder="保险公司名称" style="width: 300px;margin: 10px 20px 10px 0;"></el-input>
+      <el-button type="primary" :size="overSize" @click="companyQuery">查询</el-button>
+    </div>
     <kt-common-table :tableHeights="700" :SerialShow="false" :operationWidth="300" :showOperation="true"
       :showBatchDelete="false" :showBatchSettled="false" :showBatchPrint="false" :data="solutionResult" button2Name="规则配置"
       button2Type="text" @handleButton2="attrConfig" button3Name="已配置方案" button3Type="text" @handleButton3="solutionConfig"
@@ -27,6 +31,7 @@ export default {
       solutionResult: [],
       //操作符字典
       pageRequest: {
+        companyName:"",
         pageNum: 1,
         pageSize: 20,
       },
@@ -38,6 +43,9 @@ export default {
   },
   // 方法函数
   methods: {
+    companyQuery(){
+      this.companyFindPage();
+    },
     companyFindPage(data) {
       if (data && data.pageRequest) {
         this.pageRequest.pageNum = data.pageRequest.pageNum;

+ 8 - 0
src/views/AgreementManage/InsuranceCompany/PassengerBus/BusinessOperation/Fuel/Company.vue

@@ -1,6 +1,10 @@
 <!-- 模板区域 -->
 <template>
   <div>
+    <div class="flex a-c">
+      <el-input v-model="pageRequest.companyName"  clearable :size="overSize" placeholder="保险公司名称" style="width: 300px;margin: 10px 20px 10px 0;"></el-input>
+      <el-button type="primary" :size="overSize" @click="companyQuery">查询</el-button>
+    </div>
     <kt-common-table :tableHeights="700" :SerialShow="false" :operationWidth="300" :showOperation="true"
       :showBatchDelete="false" :showBatchSettled="false" :showBatchPrint="false" :data="solutionResult" button2Name="规则配置"
       button2Type="text" @handleButton2="attrConfig" button3Name="已配置方案" button3Type="text" @handleButton3="solutionConfig"
@@ -27,6 +31,7 @@ export default {
       solutionResult: [],
       //操作符字典
       pageRequest: {
+        companyName:"",
         pageNum: 1,
         pageSize: 20,
       },
@@ -38,6 +43,9 @@ export default {
   },
   // 方法函数
   methods: {
+    companyQuery(){
+      this.companyFindPage();
+    },
     companyFindPage(data) {
       if (data && data.pageRequest) {
         this.pageRequest.pageNum = data.pageRequest.pageNum;

+ 8 - 0
src/views/AgreementManage/InsuranceCompany/PassengerBus/BusinessOperation/NewEnergy/Company.vue

@@ -1,6 +1,10 @@
 <!-- 模板区域 -->
 <template>
   <div>
+    <div class="flex a-c">
+      <el-input v-model="pageRequest.companyName"  clearable :size="overSize" placeholder="保险公司名称" style="width: 300px;margin: 10px 20px 10px 0;"></el-input>
+      <el-button type="primary" :size="overSize" @click="companyQuery">查询</el-button>
+    </div>
     <kt-common-table :tableHeights="700" :SerialShow="false" :operationWidth="300" :showOperation="true"
       :showBatchDelete="false" :showBatchSettled="false" :showBatchPrint="false" :data="solutionResult" button2Name="规则配置"
       button2Type="text" @handleButton2="attrConfig" button3Name="已配置方案" button3Type="text" @handleButton3="solutionConfig"
@@ -27,6 +31,7 @@ export default {
       solutionResult: [],
       //操作符字典
       pageRequest: {
+        companyName:"",
         pageNum: 1,
         pageSize: 20,
       },
@@ -38,6 +43,9 @@ export default {
   },
   // 方法函数
   methods: {
+    companyQuery(){
+      this.companyFindPage();
+    },
     companyFindPage(data) {
       if (data && data.pageRequest) {
         this.pageRequest.pageNum = data.pageRequest.pageNum;

+ 8 - 0
src/views/AgreementManage/InsuranceCompany/PassengerBus/NonBusiness/Fuel/Company.vue

@@ -1,6 +1,10 @@
 <!-- 模板区域 -->
 <template>
   <div>
+    <div class="flex a-c">
+      <el-input v-model="pageRequest.companyName"  clearable :size="overSize" placeholder="保险公司名称" style="width: 300px;margin: 10px 20px 10px 0;"></el-input>
+      <el-button type="primary" :size="overSize" @click="companyQuery">查询</el-button>
+    </div>
     <kt-common-table :tableHeights="700" :SerialShow="false" :operationWidth="300" :showOperation="true"
       :showBatchDelete="false" :showBatchSettled="false" :showBatchPrint="false" :data="solutionResult" button2Name="规则配置"
       button2Type="text" @handleButton2="attrConfig" button3Name="已配置方案" button3Type="text" @handleButton3="solutionConfig"
@@ -27,6 +31,7 @@ export default {
       solutionResult: [],
       //操作符字典
       pageRequest: {
+        companyName:"",
         pageNum: 1,
         pageSize: 20,
       },
@@ -38,6 +43,9 @@ export default {
   },
   // 方法函数
   methods: {
+    companyQuery(){
+      this.companyFindPage();
+    },
     companyFindPage(data) {
       if (data && data.pageRequest) {
         this.pageRequest.pageNum = data.pageRequest.pageNum;

+ 8 - 0
src/views/AgreementManage/InsuranceCompany/PassengerBus/NonBusiness/NewEnergy/Company.vue

@@ -1,6 +1,10 @@
 <!-- 模板区域 -->
 <template>
   <div>
+    <div class="flex a-c">
+      <el-input v-model="pageRequest.companyName"  clearable :size="overSize" placeholder="保险公司名称" style="width: 300px;margin: 10px 20px 10px 0;"></el-input>
+      <el-button type="primary" :size="overSize" @click="companyQuery">查询</el-button>
+    </div>
     <kt-common-table :tableHeights="700" :SerialShow="false" :operationWidth="300" :showOperation="true"
       :showBatchDelete="false" :showBatchSettled="false" :showBatchPrint="false" :data="solutionResult" button2Name="规则配置"
       button2Type="text" @handleButton2="attrConfig" button3Name="已配置方案" button3Type="text" @handleButton3="solutionConfig"
@@ -27,6 +31,7 @@ export default {
       solutionResult: [],
       //操作符字典
       pageRequest: {
+        companyName:"",
         pageNum: 1,
         pageSize: 20,
       },
@@ -38,6 +43,9 @@ export default {
   },
   // 方法函数
   methods: {
+    companyQuery(){
+      this.companyFindPage();
+    },
     companyFindPage(data) {
       if (data && data.pageRequest) {
         this.pageRequest.pageNum = data.pageRequest.pageNum;

+ 44 - 3
src/views/Core/KtCommonTable.vue

@@ -166,6 +166,7 @@
           showBatchSettled ||
           showBatchPrint ||
           customToolseletted ||
+          disableInBulk ||
           select
         "
       ></el-table-column>
@@ -431,7 +432,7 @@
     </el-table>
     <!--分页栏-->
     <!-- 底部分页 -->
-    <div class="bottomFixed" ref="bottomFixed">
+    <div class="bottomFixed flex a-c" ref="bottomFixed">
       <kt-button
         :label="customToolName"
         :perms="permscustomTool"
@@ -464,6 +465,16 @@
         style="float: left"
         v-if="customToolseletted"
       />
+      <kt-button
+        :label="disableInBulkName"
+        :perms="disableInBulkperms"
+        :size="size"
+        type="danger"
+        @click="disableInBulkClick()"
+        :disabled="selections.length === 0"
+        style="float: left"
+        v-if="disableInBulk"
+      />
       <kt-button
         :label="settledName"
         :perms="permsSettled"
@@ -483,6 +494,9 @@
         style="float: left"
         v-if="showBatchPrint"
       />
+      <div v-if="tableSelectedCount" class="tableSelectedCountClass" >已选
+          <span >{{ tableSelectedCount }}</span>
+        条</div>
       <el-pagination
         background
         @size-change="handleSizeChange"
@@ -495,6 +509,7 @@
         style="float: left; margin-left: 20px"
         v-if="isshowpagination"
       >
+
       </el-pagination>
     </div>
   </div>
@@ -554,7 +569,17 @@ export default {
       type: Boolean,
       default: false,
     },
-
+    disableInBulkName: {
+      type: String,
+    },
+    disableInBulkperms: {
+      type: String,
+    },
+    disableInBulk:{
+        // 批量禁用
+        type: Boolean,
+      default: false,
+    },
     settledName: {
       //批量按钮name
       type: String,
@@ -788,6 +813,7 @@ export default {
   },
   data() {
     return {
+      tableSelectedCount:"",
       tableHeight: 0,
       loading: false, // 加载标识
       selections: [], // 列表选中列
@@ -991,6 +1017,7 @@ export default {
     },
     // 选择切换
     selectionChange: function (selections) {
+      this.tableSelectedCount=selections.length;
       this.selections = selections;
       this.$emit("selectionChange", {
         selections: selections,
@@ -1204,7 +1231,12 @@ export default {
       this.selections.map((item) => idlist.push(item.id));
       this.$emit("customTool1", idlist);
     },
-
+    //批量导出
+    disableInBulkClick(){
+      let idlist = [];
+      this.selections.map((item) => idlist.push(item.id));
+      this.$emit("disableInBulkClick", idlist);
+    },
     // 删除操作
     delete: function (ids) {
       var _keyName = "id";
@@ -1321,6 +1353,15 @@ export default {
 }
 </style>
 <style lang="scss" scoped>
+.tableSelectedCountClass{
+  color: #606266;
+  font-size: 14px;
+  font-weight: bold;
+  margin-left: 10px;
+  span{
+    color:red;
+  }
+}
 /deep/ .el-tag--plain {
   background: rgba(93, 125, 255, 0.1);
   border-radius: 4px;

+ 15 - 9
src/views/Core/components/detailsDialog.vue

@@ -193,8 +193,9 @@
               <div slot="boby">
                 <el-row class="premium-style" :gutter="20">
                   <el-col :span="6"><span>车主姓名:</span>{{ orderInfo.ownerinfo.name }}</el-col>
-                  <el-col :span="6"><span>证件类型:</span>{{ orderInfo.ownerinfo.identifyType }}</el-col>
-                  <el-col :span="6"><span>身份证号:</span>{{ orderInfo.ownerinfo.identifyNumber }}</el-col>
+                  <el-col :span="6"><span>证件类型:</span>{{ orderInfo.ownerinfo.identifyType=='身份证'?'身份证':'统一社会信用代码' }}</el-col>
+                  <el-col :span="6" v-if="orderInfo.ownerinfo.identifyType=='身份证'"><span>身份证号:</span>{{ orderInfo.ownerinfo.identifyNumber }}</el-col>
+                  <el-col :span="6" v-else><span>统一社会信用代码:</span>{{ orderInfo.ownerinfo.organizationCode }}</el-col>
                   <el-col :span="6" class="flex a-c"><span>手机号:</span>{{ orderInfo.ownerinfo.mobile }}
                     <img style="margin-left:20px;width: 20px;height: 20px;cursor: pointer;"
                       v-if="isTaskPool && orderInfo.isDial && orderInfo.isDial == '1'" @click="phoneDial('ownerinfo')"
@@ -214,8 +215,10 @@
               <div slot="boby">
                 <el-row class="premium-style" :gutter="20">
                   <el-col :span="6"><span>投保人姓名:</span>{{ orderInfo.applyinfo.name }}</el-col>
-                  <el-col :span="6"><span>证件类型:</span>{{ orderInfo.applyinfo.identifyType }}</el-col>
-                  <el-col :span="6"><span>身份证号:</span>{{ orderInfo.applyinfo.identifyNumber }}</el-col>
+                <el-col :span="6"><span>证件类型:</span>{{ orderInfo.applyinfo.identifyType=='身份证'?'身份证':'统一社会信用代码' }}</el-col>
+                  <!-- <el-col :span="6"><span>身份证号:</span>{{ orderInfo.applyinfo.identifyNumber }}</el-col> -->
+                  <el-col :span="6" v-if="orderInfo.applyinfo.identifyType=='身份证'"><span>身份证号:</span>{{ orderInfo.applyinfo.identifyNumber }}</el-col>
+                  <el-col :span="6" v-else><span>统一社会信用代码:</span>{{ orderInfo.applyinfo.organizationCode }}</el-col>
                   <el-col :span="6"><span>手机号:</span>{{ orderInfo.applyinfo.mobile }} <img
                       style="margin-left:20px;width: 20px;height: 20px;cursor: pointer;"
                       v-if="isTaskPool && orderInfo.isDial && orderInfo.isDial == '1'" @click="phoneDial('applyinfo')"
@@ -235,8 +238,10 @@
               <div slot="boby">
                 <el-row class="premium-style" :gutter="20">
                   <el-col :span="6"><span>被保人姓名:</span>{{ orderInfo.insureinfo.name }}</el-col>
-                  <el-col :span="6"><span>证件类型:</span>{{ orderInfo.insureinfo.identifyType }}</el-col>
-                  <el-col :span="6"><span>身份证号:</span>{{ orderInfo.insureinfo.identifyNumber }}</el-col>
+                  <el-col :span="6"><span>证件类型:</span>{{ orderInfo.insureinfo.identifyType=='身份证'?'身份证':'统一社会信用代码' }}</el-col>
+                  <!-- <el-col :span="6"><span>身份证号:</span>{{ orderInfo.insureinfo.identifyNumber }}</el-col> -->
+                  <el-col :span="6" v-if="orderInfo.insureinfo.identifyType=='身份证'"><span>身份证号:</span>{{ orderInfo.insureinfo.identifyNumber }}</el-col>
+                  <el-col :span="6" v-else><span>统一社会信用代码:</span>{{ orderInfo.insureinfo.organizationCode }}</el-col>
                   <el-col :span="6"><span>手机号:</span>{{ orderInfo.insureinfo.mobile }}<img
                       style="margin-left:20px;width: 20px;height: 20px;cursor: pointer;"
                       v-if="isTaskPool && orderInfo.isDial && orderInfo.isDial == '1'" @click="phoneDial('insureinfo')"
@@ -383,10 +388,11 @@
                   <el-col :span="6"><span>交强出险次数:</span>{{ orderInfo.extendInfo.jqClaims }}</el-col>
                   <el-col :span="6"><span>商业出险次数:</span>{{ orderInfo.extendInfo.syClaims }}</el-col>
                 </el-row>
-                <el-row class="premium-style " :gutter="20" v-if="orderInfo.ubiPredictedInfoScore">
-                  <el-col :span="6"><span>紫金能源车(鼎然-车辆风险评分):</span>{{ orderInfo.ubiPredictedInfoScore }}</el-col>
+                <el-row class="premium-style " :gutter="20" >
+                  <el-col :span="6" v-if="orderInfo.ubiPredictedInfoScore"><span>紫金能源车(鼎然-车辆风险评分):</span>{{ orderInfo.ubiPredictedInfoScore }}</el-col>
+                  <el-col :span="6" v-if="orderInfo.mergeCostRate"><span>交商合并经营成本率:</span>{{ orderInfo.mergeCostRate }}</el-col>
                 </el-row>
-              </div>
+              </div> 
             </OpenCloseBox>
             <!-- <OpenCloseBox id="yxzl" v-if="Object.keys(obj).length != 0">
               <span slot="title">影像资料</span>

+ 26 - 22
src/views/Core/components/detailsDialogPro.vue

@@ -410,14 +410,9 @@
                 <el-col :span="6"
                   ><span>车主姓名:</span>{{ orderInfo.ownerinfo.name }}</el-col
                 >
-                <el-col :span="6"
-                  ><span>证件类型:</span
-                  >{{ orderInfo.ownerinfo.identifyType }}</el-col
-                >
-                <el-col :span="6"
-                  ><span>身份证号:</span
-                  >{{ orderInfo.ownerinfo.identifyNumber }}</el-col
-                >
+                <el-col :span="6"><span>证件类型:</span>{{ orderInfo.ownerinfo.identifyType=='身份证'?'身份证':'统一社会信用代码' }}</el-col>
+                <el-col :span="6" v-if="orderInfo.ownerinfo.identifyType=='身份证'"><span>身份证号:</span>{{ orderInfo.ownerinfo.identifyNumber }}</el-col>
+                  <el-col :span="6" v-else><span>统一社会信用代码:</span>{{ orderInfo.ownerinfo.organizationCode }}</el-col>
                 <el-col :span="6"
                   ><span>手机号:</span>{{ orderInfo.ownerinfo.mobile }}</el-col
                 >
@@ -443,14 +438,17 @@
                   ><span>投保人姓名:</span
                   >{{ orderInfo.applyinfo.name }}</el-col
                 >
-                <el-col :span="6"
+                <!-- <el-col :span="6"
                   ><span>证件类型:</span
                   >{{ orderInfo.applyinfo.identifyType }}</el-col
                 >
                 <el-col :span="6"
                   ><span>身份证号:</span
                   >{{ orderInfo.applyinfo.identifyNumber }}</el-col
-                >
+                > -->
+                <el-col :span="6"><span>证件类型:</span>{{ orderInfo.applyinfo.identifyType=='身份证'?'身份证':'统一社会信用代码' }}</el-col>
+                <el-col :span="6" v-if="orderInfo.applyinfo.identifyType=='身份证'"><span>身份证号:</span>{{ orderInfo.applyinfo.identifyNumber }}</el-col>
+                  <el-col :span="6" v-else><span>统一社会信用代码:</span>{{ orderInfo.applyinfo.organizationCode }}</el-col>
                 <el-col :span="6"
                   ><span>手机号:</span>{{ orderInfo.applyinfo.mobile }}</el-col
                 >
@@ -476,14 +474,17 @@
                   ><span>被保人姓名:</span
                   >{{ orderInfo.insureinfo.name }}</el-col
                 >
-                <el-col :span="6"
+                <!-- <el-col :span="6"
                   ><span>证件类型:</span
                   >{{ orderInfo.insureinfo.identifyType }}</el-col
                 >
                 <el-col :span="6"
                   ><span>身份证号:</span
                   >{{ orderInfo.insureinfo.identifyNumber }}</el-col
-                >
+                > -->
+                <el-col :span="6"><span>证件类型:</span>{{ orderInfo.insureinfo.identifyType=='身份证'?'身份证':'统一社会信用代码' }}</el-col>
+                <el-col :span="6" v-if="orderInfo.insureinfo.identifyType=='身份证'"><span>身份证号:</span>{{ orderInfo.insureinfo.identifyNumber }}</el-col>
+                  <el-col :span="6" v-else><span>统一社会信用代码:</span>{{ orderInfo.insureinfo.organizationCode }}</el-col>
                 <el-col :span="6"
                   ><span>手机号:</span
                   >{{ orderInfo.insureinfo.mobile }}</el-col
@@ -643,16 +644,10 @@
                   >{{ orderInfo.extendInfo.syClaims }}</el-col
                 >
               </el-row>
-              <el-row
-                class="premium-style"
-                :gutter="20"
-                v-if="orderInfo.ubiPredictedInfoScore"
-              >
-                <el-col :span="6"
-                  ><span>紫金能源车(鼎然-车辆风险评分):</span
-                  >{{ orderInfo.ubiPredictedInfoScore }}</el-col
-                >
-              </el-row>
+              <el-row :span="6" >
+                  <el-col :span="6" v-if="orderInfo.ubiPredictedInfoScore"><span>紫金能源车(鼎然-车辆风险评分):</span>{{ orderInfo.ubiPredictedInfoScore }}</el-col>
+                  <el-col :span="6" v-if="orderInfo.mergeCostRate"><span>交商合并经营成本率:</span>{{ orderInfo.mergeCostRate }}</el-col>
+                </el-row>
             </div>
           </OpenCloseBox>
           <OpenCloseBox
@@ -683,6 +678,15 @@
                   >
                     {{ kindinfoitem.deductibleRate }}
                   </span>
+                  <span
+                    v-else-if="
+                      ['TY1', 'TY2', 'TY3', 'TY4'].includes(
+                        kindinfoitem.kindCode
+                      )
+                    "
+                  >
+                    {{ kindinfoitem.serviceTimes }}次
+                  </span>
                   <span v-else>{{ kindinfoitem.amount }}</span>
                   <span>{{
                     kindinfoitem.coveragePremium

+ 15 - 8
src/views/Core/components/quotationDialog.vue

@@ -56,14 +56,21 @@
             queryOrders.applyinfo.name }}</el-descriptions-item>
           <el-descriptions-item label-class-name="my-label2" content-class-name="my-content" label="被保人姓名">{{
             queryOrders.insureinfo.name }}</el-descriptions-item>
-          <el-descriptions-item label-class-name="my-label" content-class-name="my-content" label="车主身份证号">
+          <el-descriptions-item label-class-name="my-label" content-class-name="my-content" label="车主身份证号" v-if="queryOrders.ownerinfo.property=='1'">
             {{ queryOrders.ownerinfo.identifyNumber }}
           </el-descriptions-item>
-          <el-descriptions-item label-class-name="my-label1" content-class-name="my-content" label="投保人身份证号">{{
+          <el-descriptions-item label-class-name="my-label" content-class-name="my-content" label="车主统一社会信用代码" v-else>
+            {{queryOrders.ownerinfo.organizationCode }}
+          </el-descriptions-item>
+          <el-descriptions-item label-class-name="my-label1" content-class-name="my-content" label="投保人身份证号" v-if="queryOrders.applyinfo.property=='1'">{{
             queryOrders.applyinfo.identifyNumber }}</el-descriptions-item>
-          <el-descriptions-item label-class-name="my-label2" content-class-name="my-content" label="被保人身份证号">{{
-            queryOrders.insureinfo.identifyNumber }}</el-descriptions-item>
-        </el-descriptions>
+            <el-descriptions-item label-class-name="my-label1" content-class-name="my-content" label="投保人统一社会信用代码" v-else>{{
+           queryOrders.applyinfo.organizationCode }}</el-descriptions-item>
+           <el-descriptions-item label-class-name="my-label2" content-class-name="my-content" label="被保人身份证号" v-if="queryOrders.insureinfo.property=='1'">{{
+              queryOrders.insureinfo.identifyNumber }}</el-descriptions-item>
+          <el-descriptions-item label-class-name="my-label2" content-class-name="my-content" label="被保人统一社会信用代码" v-else>{{
+              queryOrders.insureinfo.organizationCode }}</el-descriptions-item>
+          </el-descriptions>
       </div>
       <div class="tableInfo">
         <div class="header">
@@ -299,9 +306,9 @@ export default {
           this.businessVehicleUseoptions
         );
       }
-      this.queryOrders.ownerinfo.identifyNumber = this.queryOrders.ownerinfo.identifyNumber.slice(0, 4) + '******' + this.queryOrders.ownerinfo.identifyNumber.slice(14, 18);
-      this.queryOrders.applyinfo.identifyNumber = this.queryOrders.applyinfo.identifyNumber.slice(0, 4) + '******' + this.queryOrders.applyinfo.identifyNumber.slice(14, 18);
-      this.queryOrders.insureinfo.identifyNumber = this.queryOrders.insureinfo.identifyNumber.slice(0, 4) + '******' + this.queryOrders.insureinfo.identifyNumber.slice(14, 18);
+      this.queryOrders.ownerinfo.identifyNumber=this.queryOrders.ownerinfo.identifyNumber?this.queryOrders.ownerinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.ownerinfo.identifyNumber.slice(14,18):'';
+      this.queryOrders.applyinfo.identifyNumber=this.queryOrders.applyinfo.identifyNumber?this.queryOrders.applyinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.applyinfo.identifyNumber.slice(14,18):'';
+      this.queryOrders.insureinfo.identifyNumber=this.queryOrders.insureinfo.identifyNumber?this.queryOrders.insureinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.insureinfo.identifyNumber.slice(14,18):'';
       let data = JSON.parse(JSON.stringify(this.queryOrders))
       if (data.jqpremium) {
         this.jqProducts.forEach(e => { e.name = '交通事故强制责任险'; e.totalPremium = data.jqpremium });

+ 17 - 8
src/views/Core/components/quotationDialogPro.vue

@@ -36,11 +36,20 @@
                 queryOrders.ownerinfo.name }}</el-descriptions-item>
               <el-descriptions-item label="投保人姓名">{{ queryOrders.applyinfo.name }}</el-descriptions-item>
               <el-descriptions-item label="被保人姓名">{{ queryOrders.insureinfo.name }}</el-descriptions-item>
-              <el-descriptions-item label="车主身份证号">
-                {{ queryOrders.ownerinfo.identifyNumber }}
-              </el-descriptions-item>
-              <el-descriptions-item label="投保人身份证号">{{ queryOrders.applyinfo.identifyNumber }}</el-descriptions-item>
-              <el-descriptions-item label="被保人身份证号">{{ queryOrders.insureinfo.identifyNumber }}</el-descriptions-item>
+              <el-descriptions-item label-class-name="my-label" content-class-name="my-content" label="车主身份证号" v-if="queryOrders.ownerinfo.property=='1'">
+            {{ queryOrders.ownerinfo.identifyNumber }}
+          </el-descriptions-item>
+          <el-descriptions-item label-class-name="my-label" content-class-name="my-content" label="车主统一社会信用代码" v-else>
+            {{queryOrders.ownerinfo.organizationCode }}
+          </el-descriptions-item>
+          <el-descriptions-item label-class-name="my-label1" content-class-name="my-content" label="投保人身份证号" v-if="queryOrders.applyinfo.property=='1'">{{
+            queryOrders.applyinfo.identifyNumber }}</el-descriptions-item>
+            <el-descriptions-item label-class-name="my-label1" content-class-name="my-content" label="投保人统一社会信用代码" v-else>{{
+           queryOrders.applyinfo.organizationCode }}</el-descriptions-item>
+           <el-descriptions-item label-class-name="my-label2" content-class-name="my-content" label="被保人身份证号" v-if="queryOrders.insureinfo.property=='1'">{{
+              queryOrders.insureinfo.identifyNumber }}</el-descriptions-item>
+          <el-descriptions-item label-class-name="my-label2" content-class-name="my-content" label="被保人统一社会信用代码" v-else>{{
+              queryOrders.insureinfo.organizationCode }}</el-descriptions-item>
             </el-descriptions>
           </div>
           <div class="tableInfo flex ">
@@ -252,9 +261,9 @@ export default {
   methods: {
     setBackupVisible: function (backupVisible) {
       this.dialogVisible = backupVisible
-      this.queryOrders.ownerinfo.identifyNumber=this.queryOrders.ownerinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.ownerinfo.identifyNumber.slice(14,18);
-      this.queryOrders.applyinfo.identifyNumber=this.queryOrders.applyinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.applyinfo.identifyNumber.slice(14,18);
-      this.queryOrders.insureinfo.identifyNumber=this.queryOrders.insureinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.insureinfo.identifyNumber.slice(14,18);
+      this.queryOrders.ownerinfo.identifyNumber=this.queryOrders.ownerinfo.identifyNumber?this.queryOrders.ownerinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.ownerinfo.identifyNumber.slice(14,18):'';
+      this.queryOrders.applyinfo.identifyNumber=this.queryOrders.applyinfo.identifyNumber?this.queryOrders.applyinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.applyinfo.identifyNumber.slice(14,18):'';
+      this.queryOrders.insureinfo.identifyNumber=this.queryOrders.insureinfo.identifyNumber?this.queryOrders.insureinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.insureinfo.identifyNumber.slice(14,18):'';
       let data = JSON.parse(JSON.stringify(this.queryOrders))
       data.jqInsuranceType.forEach(e => { e.label = '交强险'; e.totalPremium = data.jqpremium });
       if ((data.kindinfo && data.kindinfo.length > 0) || (data.accidentInfo && data.accidentInfo.length > 0)) {

+ 1 - 0
src/views/FinancialManagement/CarInsurance/Verifytasks/Verifyintasks.vue

@@ -334,6 +334,7 @@ export default {
           label: "业务来源",
           type: "select",
           options: [],
+          multiple:true,
           optionsIabel: "dictTag",
           optionsValue: "dictValue",
         },

+ 6 - 5
src/views/FinancialManagement/CarInsurance/Verifytasks/Verifyuntasks.vue

@@ -208,6 +208,7 @@ export default {
           label: '业务来源',
           type: 'select',
           options: [],
+          multiple:true,
           optionsIabel: "dictTag",
           optionsValue: "dictValue",
         },
@@ -917,7 +918,7 @@ export default {
           let businessList = []
           let accidentList = []
           if (res.data.orderstatus == "3") {
-            /** 
+            /**
             if (res.data.isExternal == 1) {
               this.$api.letter
                 .getPolicyPrintexternalOrder(res.data.id).then(res1 => {
@@ -1630,9 +1631,9 @@ export default {
                 this.$refs.detailsDialog.warrantyFun(res.data);
               } else{
                 this.$message.error(res.msg);
-              } 
-            }); 
-            
+              }
+            });
+
           }
           this.feeDetailInfo = res.data.orderFeeResult;
           this.oldFeeInfo = res.data.adjustFeeDescVo;
@@ -1717,7 +1718,7 @@ export default {
 
     },
     tableRowColor({ row, rowIndex }) {
-      console.log(row.problemOrder);
+      // console.log(row.problemOrder);
       if (row.problemOrder  == 1) {
         return "blue-row";
       }

+ 119 - 2
src/views/FinancialManagement/ContractManagement/ContractManagement.vue

@@ -443,6 +443,7 @@
                   :label="item.accountName"
                 ></el-option>
               </el-select>
+              <el-button size="small" type="primary" @click="addAmount('1')">添加</el-button>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -477,6 +478,8 @@
                   :label="item.accountName"
                 ></el-option>
               </el-select>
+              <el-button size="small" type="primary" @click="addAmount('2')">添加</el-button>
+
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -505,6 +508,7 @@
               "
             >
               <!-- <treeSelect :options="esmInsCompanyList" @getValue="getValue" /> -->
+              <!-- @select="handleSelect" -->
               <treeselect
                 style="width: 600px"
                 v-model="form.supplierIdList"
@@ -512,7 +516,7 @@
                 :options="esmInsCompanyList"
                 :normalizer="normalizer"
                 :multiple="true"
-                @select="handleSelect"
+               
                 :children-as-objects="true"
                 flat
               ></treeselect>
@@ -932,7 +936,7 @@
                     :options="esmInsCompanyList"
                     :normalizer="normalizer"
                     :multiple="true"
-                    @select="handleSelect"
+                    
                     :children-as-objects="true"
                     :disabled="true"
                   ></treeselect>
@@ -1104,6 +1108,19 @@
         >
       </span>
     </el-dialog>
+    <expense-component
+      ref="expenseComponent"
+      :type="1"
+      :formData="accountFormData "
+      :formDataId="''"
+      :title="'新增账户信息'"
+      :dialogFormVisible="dialogFormVisible"
+      :nature_businessData="nature_businessData"
+      @resetForm="resetFormItem"
+      @submitForm="submitForm"
+      
+    ></expense-component>
+    <!-- @setDateInterval="setDateInterval" -->
   </div>
 </template>
 
@@ -1115,15 +1132,20 @@ import "@vue-office/docx/lib/index.css";
 import KtButton from "@/views/Core/KtButton";
 
 import VueDocPreview from "vue-doc-preview";
+import ExpenseComponent from "../ExpenseManagement/ExpenseComponent.vue"; //新增账户信息弹框
+
 export default {
   components: {
     VueOfficeDocx,
     VueOfficePdf,
     KtButton,
     VueDocPreview,
+    ExpenseComponent
   },
   data() {
     return {
+      dialogFormVisible: false, //弹出框状态
+
       fileDialog: false,
       showFileList: [],
       formInline: {
@@ -1135,6 +1157,19 @@ export default {
         internalCompanyId: "",
         supplierIdList: [],
       },
+      //账户信息form
+      accountFormData: {
+        outerFlag: "0", //账户类别
+        accountName: "", //户名
+        businessQuality: "", //营业性质
+        establishTime: "", //成立日期
+        invoicingAmount: 0, //开票额度
+        juridicalPerson: "", //法人
+        owned: "", //所属地
+        biller: "", //开票员
+        tentativeEstimates: "", //暂估值
+        simpleName: "", //账户简称
+      },
       messageDialog: false,
       tableDialog: false,
       multipleSelection: [],
@@ -1255,6 +1290,9 @@ export default {
       contractStatus: "",
       shoulDisabled: true,
       isMessage: false,
+      nature_businessData: [], //营业性质数据字典
+      accountType:"",//1为甲方  2为乙方
+
     };
   },
   watch: {
@@ -1283,9 +1321,84 @@ export default {
     this.getEsmInsCompany();
     this.getContractType();
     this.getList();
+    this.business("nature_business"); //营业性质字典
     this.resetForm = { ...this.form };
   },
   methods: {
+    //数据字典
+    business(typeName) {
+      this.$api.dict.findByLableName(typeName).then((res) => {
+        this[typeName + "Data"] = res.data;
+      
+      });
+    },
+    //新增事件
+    addAmount(type) {
+      this.accountType=type
+      this.dialogFormVisible = true;
+      // this.resetFormItem();
+      this.accountFormData= {
+        outerFlag: "0", //账户类别
+        accountName: "", //户名
+        businessQuality: "", //营业性质
+        establishTime: "", //成立日期
+        invoicingAmount: 0, //开票额度
+        juridicalPerson: "", //法人
+        owned: "", //所属地
+        biller: "", //开票员
+        tentativeEstimates: "", //暂估值
+        simpleName: "", //账户简称
+      }
+    },
+     //提交
+     async submitForm() {
+      
+        //新增修改账户信息
+        let params = JSON.parse(JSON.stringify(this.accountFormData));
+       
+          //新增
+           this.$api.expense.insertAccount(params).then((res) => {
+            if (res.code == 200) {
+              this.$message({
+                message: "添加成功",
+                type: "success",
+              });
+              console.log(res.data)
+             
+              if(res.data.accountName==this.accountFormData.accountName){
+                if(this.accountType==1){
+                  this.form.externalCompaniesId=res.data.accountId
+                  this.getInvAccountList();
+
+                  this.resetFormItem();
+
+                }else{
+                  this.form.internalCompanyId=res.data.accountId
+                  this.getInvAccountList();
+
+                  this.resetFormItem();
+                }
+              }
+              //  this.getInvAccountList();
+              // this.getEsmInsCompany();
+             
+              // this.dialogFormVisible = false;
+            } else {
+              this.$message({
+                message: `添加失败, ${res.msg}`,
+                type: "error",
+              });
+            }
+          });
+        
+      
+    },
+     //弹框取消重置
+     resetFormItem() {
+      this.dialogFormVisible = false;
+    
+      this.$refs.expenseComponent.cleanForm();
+    },
     downLoadFile(row) {
       let name = row.fileName;
       fetch(`${process.env.BASE_URL}${row.url}`)
@@ -1653,6 +1766,7 @@ export default {
         if (res.code === 200) {
           this.esmInsCompanyList = [...res.data];
         }
+        
       });
     },
     //甲方/乙方选择
@@ -1705,10 +1819,13 @@ export default {
         if (res.code === 200) {
           this.accountList = [...res.data];
           const obj = {};
+         
           res.data.forEach((v, i) => {
             obj[v.accountId] = v.outerFlag;
+            
           });
           this.accountObj = { ...obj };
+          this.resetFormItem();
         }
       });
     },

+ 27 - 27
src/views/Home.vue

@@ -26,34 +26,34 @@ export default {
     NavBar,
     MainContent
   },
-  created() {
-    setInterval(() => {
-      setTimeout(() => {
-        if (Cookies.get("token")) {
-          let userId = sessionStorage.getItem("user");
-          getUserIP((ip) => {
-            // getAddressLocation(ip, (info) => {
-              let data = {
-                ip,
-                systemType: '1',
-                userId
-              };
-              websocketSend(
-                data
-              );
-            // });
-          })
-        }
-        else {
-          closeWebsocket()
-        } 
-      }, 0);
-      // // }, 2 * 60 * 60000); // 两个小时
-       }, 19 * 60000); // 19分钟
-      // }, 20 * 60000); // 半小时
-    // }, 5000); // 一秒
+  // created() {
+  //   setInterval(() => {
+  //     setTimeout(() => {
+  //       if (Cookies.get("token")) {
+  //         let userId = sessionStorage.getItem("user");
+  //         getUserIP((ip) => {
+  //           // getAddressLocation(ip, (info) => {
+  //             let data = {
+  //               ip,
+  //               systemType: '1',
+  //               userId
+  //             };
+  //             websocketSend(
+  //               data
+  //             );
+  //           // });
+  //         })
+  //       }
+  //       else {
+  //         closeWebsocket()
+  //       } 
+  //     }, 0);
+  //     // // }, 2 * 60 * 60000); // 两个小时
+  //      }, 19 * 60000); // 19分钟
+  //     // }, 20 * 60000); // 半小时
+  //   // }, 5000); // 一秒
 
-  }
+  // }
 
 };
 </script>

+ 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');

+ 1 - 1
src/views/PeopleManage/Sales/SalesExamine.vue

@@ -630,7 +630,7 @@ export default {
           });
         });
         //添加电销负责人
-        this.$api.user.findDxUserList().then((res) => {
+        this.$api.user.findDxUserList("2").then((res) => {
           this.managerOptions = res.data;
         }); 
     },

+ 1 - 1
src/views/PeopleManage/Sales/SalesExamineGroup.vue

@@ -626,7 +626,7 @@ export default {
           this.searchLeaderOptions = [...res.data];
         });
         //添加电销负责人
-        this.$api.user.findDxUserList().then((res) => {
+        this.$api.user.findDxUserList("1").then((res) => {
           this.managerOptions = res.data;
         }); 
     },

+ 1 - 1
src/views/PeopleManage/Sales/SalesManage.vue

@@ -826,7 +826,7 @@ export default {
           this.searchLeaderOptions = res.data;
         });
       //添加电销负责人
-      this.$api.user.findDxUserList().then((res) => {
+      this.$api.user.findDxUserList("2").then((res) => {
         this.managerOptions = res.data;
       });
     },

+ 1 - 1
src/views/PeopleManage/Sales/SalesManageGroup.vue

@@ -804,7 +804,7 @@ export default {
           this.searchLeaderOptions = res.data;
         });
         //添加电销负责人
-        this.$api.user.findDxUserList().then((res) => {
+        this.$api.user.findDxUserList("1").then((res) => {
         this.managerOptions = res.data;
       }); 
     },

+ 118 - 6
src/views/Sys/DataPermissions.vue

@@ -59,9 +59,19 @@
         fixed="right" header-align="center" align="center" width="185" :label="$t('action.operation')">
         <template slot-scope="scope">
           <kt-button 
-           label="数据权限" 
-           sperms="sys:menu:edit" 
-          @click="handPermissions(scope.row)"/>
+          v-if="scope.row.type === 1"
+            label="数据权限" 
+            sperms="sys:dataPermissions:save" 
+            @click="handPermissions(scope.row)"
+            type="primary"
+          />
+          <kt-button 
+          v-if="scope.row.type === 1"
+            label="详情" 
+            sperms="sys:dataPermissions:view" 
+            @click="watchPermissions(scope.row)"
+            type="primary"
+          />
           <!-- <kt-button icon="fa fa-trash" :label="$t('action.delete')" perms="sys:menu:delete" type="danger" @click="handleDelete(scope.row)"/> -->
         </template>
       </el-table-column>
@@ -96,6 +106,7 @@
         </el-form-item>
         
         <el-form-item label="状态" prop="status">
+        
             <el-radio-group v-model="form.status"  size="mini">
               <el-radio-button label="有效" :value="1"></el-radio-button>
               <el-radio-button label="无效" :value="0"></el-radio-button>
@@ -107,6 +118,47 @@
         <el-button type="primary" @click="submit" :disabled="btnDisabled">确 定</el-button>
       </div>
     </el-dialog>
+    <el-dialog title="权限详情" :visible.sync="messageDialog">
+      <el-table :data="messageList">
+        <el-table-column property="ruleName" label="规则名称" ></el-table-column>
+        <el-table-column property="ruleField" label="规则字段" ></el-table-column>
+        <el-table-column property="ruleCondition" label="条件规则">
+          <template slot-scope="scope">
+              {{conditionalRule.find((v,i)=>{
+               
+                return v.value==scope.row.ruleCondition 
+                 
+              }).label }}
+          </template>
+        </el-table-column>
+        <el-table-column property="ruleValue" label="规则值"></el-table-column>
+        <el-table-column property="status" label="状态">
+          <template slot-scope="scope">
+              {{ scope.row.status=='1' ? '有效':'无效' }}
+          </template>
+        </el-table-column>
+        <el-table-column property="createTime" label="创建日期"></el-table-column>
+        <el-table-column property="operation" label="操作">
+          <template slot-scope="scope">
+            <kt-button 
+              label="编辑" 
+              sperms="sys:dataPermissions:update" 
+              @click="updatePermission(scope.row)"
+              type="primary"
+            />
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :current-page="pageInfo.pageNum"
+        :page-sizes="[10, 20, 30, 40]"
+        :page-size="pageInfo.pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="pageInfo.total">
+      </el-pagination>
+    </el-dialog>
   </div>
 </template>
 
@@ -185,7 +237,14 @@ export default {
           
       },
       conditionalRule:[],
-      btnDisabled:false
+      btnDisabled:false,
+      messageDialog:false,
+      messageList:[],
+      pageInfo:{
+        pageNum:1,
+        pageSize:10,
+        total:0
+      }
     };
   },
   mounted() {
@@ -226,7 +285,7 @@ export default {
             this.$api.sys
               .dataPermissionsUpdate({
                 ...this.form,
-               
+                status:this.form.status=="有效" ? 1:0
               })
               .then((res) => {
                 if (res.code === 200) {
@@ -237,6 +296,9 @@ export default {
                     this.$refs.ruleForm.clearValidate();
                   });
                   this.findTreeData();
+                  if(this.messageDialog){
+                    this.getMessageList()
+                  }
                 } else {
                   this.$message.error(res.msg);
                   this.btnDisabled = false;
@@ -293,11 +355,61 @@ export default {
     iconActiveHandle(iconName) {
       this.dataForm.icon = iconName;
     },
+    //给菜单设置数据权限
     handPermissions(data){
-      console.log(data)
+    
       this.dialogFormVisible=true
       this.form.menuId=data.id
     },
+    //修改菜单的数据权限-单项
+    updatePermission(data){
+      
+      this.$api.sys.getDataPermissionsItem(data.id).then(res=>{
+        // console.log(res)
+        if(res.code===200){
+          this.form={...res.data}
+          // console.log(res.data.status)
+          this.form.status=res.data.status=='0' ? '无效':'有效'
+          console.log(this.form)
+
+          this.dialogFormVisible=true
+        }
+      })
+    },
+    //查看菜单的数据权限列表
+    watchPermissions(data){
+      // console.log(data)
+      this.form.menuId=data.id
+      this.messageDialog=true
+      this.getMessageList()
+
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.pageInfo.pageSize=val
+
+      this.getMessageList()
+    },
+    handleCurrentChange(val) {
+      this.pageInfo.pageNum=val
+
+      // console.log(`当前页: ${val}`);
+      this.getMessageList()
+
+    },
+    getMessageList(){
+      this.$api.sys.getDataPermissions({
+        menuId:this.form.menuId,
+        ...this.pageInfo
+
+      }).then(res=>{
+       
+        if(res.code===200){
+          this.messageList=[...res.data.records]
+          this.pageInfo.total=res.data.total
+        }
+      })
+    },
     
   },
   

+ 141 - 404
src/views/Sys/Deptall.vue

@@ -5,220 +5,89 @@
       <el-main ref="elMain" style="padding: 0px">
         <!-- 新增展开折叠 -->
         <div style="margin-bottom: 20px; margin-top: 15px" class="flex a-start">
-          <el-button
-            size="small"
-            type="primary"
-            plain
-            icon="el-icon-plus"
-            :label="$t('action.addCompany')"
-            @click="handleAddCompany"
-            >新增子公司</el-button
-          >
-          <el-button
-            size="small"
-            type="warning"
-            plain
-            icon="el-icon-plus"
-            :label="$t('action.addDept')"
-            @click="handleAddDept"
-            >新增部门</el-button
-          >
-          <el-button
-            size="small"
-            type="info"
-            plain
-            icon="el-icon-sort"
-            @click="fold()"
-            >展开折叠</el-button
-          >
-          <el-form
-            :inline="true"
-            class="demo-form-inline"
-            size="small"
-            style="margin-left: 30px"
-          >
+          <el-button size="small" type="primary" plain icon="el-icon-plus" :label="$t('action.addCompany')"
+            @click="handleAddCompany">新增子公司</el-button>
+          <el-button size="small" type="warning" plain icon="el-icon-plus" :label="$t('action.addDept')"
+            @click="handleAddDept">新增部门</el-button>
+          <el-button size="small" type="info" plain icon="el-icon-sort" @click="fold()">展开折叠</el-button>
+          <el-form :inline="true" class="demo-form-inline" size="small" style="margin-left: 30px">
             <el-form-item label="机构编码:">
-              <el-input
-                clearable
-                v-model="peopledeptid"
-                placeholder="请输入机构编码"
-              ></el-input>
+              <el-input clearable v-model="peopledeptid" placeholder="请输入机构编码"></el-input>
             </el-form-item>
             <el-form-item label="业务来源:">
-              <el-select
-                v-model="managementSource"
-                placeholder="选择业务来源"
-                clearable
-              >
-                <el-option
-                  v-for="val in business_sourceoptions"
-                  :key="val.value"
-                  :label="val.label"
-                  :value="val.value"
-                ></el-option>
+              <el-select v-model="managementSource" placeholder="选择业务来源" clearable>
+                <el-option v-for="val in business_sourceoptions" :key="val.value" :label="val.label"
+                  :value="val.value"></el-option>
               </el-select>
             </el-form-item>
             <el-form-item>
-              <el-button
-                type="primary"
-                size="small"
-                @click="managementSourceQuery"
-                >查询</el-button
-              >
+              <el-button type="primary" size="small" @click="managementSourceQuery">查询</el-button>
             </el-form-item>
           </el-form>
         </div>
         <!-- 表格渲染 -->
-        <el-table
-          permsEdit="sys:dept:edit"
-          height="720"
-          permsDelete="sys:dept:delete"
-          row-key="id"
-          :expand-row-keys="['9']"
-          v-loading="loading"
-          border
-          :data="ztreeNodes"
-          :tree-props="{ children: 'children', hasChildren: 'hasChilkdren' }"
-          :header-cell-style="{
+        <el-table permsEdit="sys:dept:edit" height="720" permsDelete="sys:dept:delete" row-key="id" v-loading="loading"
+          border :data="ztreeNodes" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" :header-cell-style="{
             background: '#F2F7FC',
             fontWeight: '900',
             color: '#606266',
-          }"
-          size="small"
-          ref="expandTable"
-          highlight-current-row
-          @row-click="rowClick"
-        >
+          }" size="small" ref="expandTable" highlight-current-row @row-click="rowClick">
           <el-table-column prop="name" label="部门管理" width="300">
           </el-table-column>
-          <el-table-column
-            prop="deptCount"
-            label="部门数量"
-            width="80"
-            align="center"
-          >
+          <el-table-column prop="deptCount" label="部门数量" width="80" align="center">
           </el-table-column>
-          <el-table-column prop="id" label="ID" width="150" align="center">
+          <!-- <el-table-column prop="id" label="ID" width="150" align="center">
+          </el-table-column> -->
+          <el-table-column prop="comlevel" label="机构级别" :formatter="comlevelFormatter" align="center"
+            width="150"></el-table-column>
+          <el-table-column prop="comattribute" label="机构性质" :formatter="comattributeFormatter" align="center" width="150">
           </el-table-column>
-          <el-table-column
-            prop="comlevel"
-            label="机构级别"
-            :formatter="comlevelFormatter"
-            align="center"
-            width="150"
-          ></el-table-column>
-          <el-table-column
-            prop="comattribute"
-            label="机构性质"
-            :formatter="comattributeFormatter"
-            align="center"
-            width="150"
-          >
+          <el-table-column prop="comtype" label="机构类型" :formatter="comtypeFormatter" align="center" width="150">
           </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>
+              <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">
           </el-table-column>
-          <el-table-column
-            label="操作"
-            fixed="right"
-            align="center"
-            width="150"
-          >
+          <el-table-column label="操作" fixed="right" align="center" width="150">
             <template slot-scope="scope">
-              <KtButton
-                :perms="'sys:institution:edit'"
-                :size="'medium'"
-                :type="'text'"
-                :label="'编辑'"
-                @click.native.stop="handleEdit(scope.row)"
-                @findPage="findSubDeptPage"
-              ></KtButton>
-              <KtButton
-                :perms="'sys:institution:delete'"
-                v-show="scope.row.parentId != '0'"
-                :size="'medium'"
-                :type="'text'"
-                :label="'删除'"
-                @click.native.stop="deleteMechanism(scope.row)"
-              ></KtButton>
-              <KtButton
-                :size="'medium'"
-                :type="'text'"
-                :label="'设置机构负责人'"
-                @click.native.stop="setLeadUserId(scope.row)"
-              ></KtButton>
+              <KtButton :perms="'sys:institution:edit'" :size="'medium'" :type="'text'" :label="'编辑'"
+                @click.native.stop="handleEdit(scope.row)" @findPage="findSubDeptPage"></KtButton>
+              <KtButton :perms="'sys:institution:delete'" v-show="scope.row.parentId != '0'" :size="'medium'"
+                :type="'text'" :label="'删除'" @click.native.stop="deleteMechanism(scope.row)"></KtButton>
+              <KtButton :size="'medium'" :type="'text'" :label="'设置机构负责人'" @click.native.stop="setLeadUserId(scope.row)">
+              </KtButton>
             </template>
           </el-table-column>
         </el-table>
       </el-main>
     </el-container>
     <!-- 新增修改机构界面 -->
-    <el-dialog
-      :title="dialogTitle"
-      width="1000px"
-      :visible.sync="dialogVisible"
-      :close-on-click-modal="false"
-      v-dialogDrag
-      @close="closeDialog"
-    >
-      <el-form
-        :model="dataForm"
-        :rules="dataRule"
-        ref="dataForm"
-        @keyup.enter.native="submitForm()"
-        label-width="100px"
-        size="small"
-        style="text-align: left"
-      >
+    <el-dialog :title="dialogTitle" width="1000px" :visible.sync="dialogVisible" :close-on-click-modal="false"
+      v-dialogDrag @close="closeDialog">
+      <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="submitForm()" label-width="100px"
+        size="small" style="text-align: left">
         <el-row>
           <el-col :span="8">
             <el-form-item label="机构编码" prop="id">
-              <el-input
-                style="width: 100%"
-                v-model="dataForm.id"
-                placeholder="机构编码"
-                :disabled="operType != 'ADDC'"
-              ></el-input>
+              <el-input style="width: 100%" v-model="dataForm.id" placeholder="机构编码"
+                :disabled="operType != 'ADDC'"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="机构名称" prop="name">
-              <el-input
-                style="width: 100%"
-                v-model="dataForm.name"
-                placeholder="机构名称"
-              ></el-input>
+              <el-input style="width: 100%" v-model="dataForm.name" placeholder="机构名称"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="上级机构" prop="parentName">
-              <span
-                style="width: 100%"
-                v-if="
-                  currentTreeNode && currentTreeNode.id == dataForm.parentId
-                "
-                class="span-disabled"
-                >{{ currentTreeNode.name }}</span
-              >
+              <span style="width: 100%" v-if="currentTreeNode && currentTreeNode.id == dataForm.parentId
+                " class="span-disabled">{{ currentTreeNode.name }}</span>
               <!-- <span v-if="currentTreeNode && (currentTreeNode.id == dataForm.parentId)" class="span-disabled" >{{currentTreeNode.name}}-{{currentTreeNode.id}}</span> -->
               <span style="width: 100%" v-else class="span-disabled">{{
                 dataForm.parentId
@@ -230,61 +99,28 @@
           <el-col :span="24">
             <el-col :span="8">
               <el-form-item label="省公司" prop="province">
-                <el-select
-                  :disabled="!disabledAddress.province"
-                  @change="selectProvince"
-                  value-key="areaCname"
-                  style="width: 100%"
-                  v-model="selectAddress.province"
-                  placeholder="请选择省"
-                  size="small"
-                >
-                  <el-option
-                    v-for="item in provinces"
-                    :value="item"
-                    :key="item.areaCode"
-                    :label="item.areaCname"
-                  ></el-option>
+                <el-select :disabled="!disabledAddress.province" @change="selectProvince" value-key="areaCname"
+                  style="width: 100%" v-model="selectAddress.province" placeholder="请选择省" size="small">
+                  <el-option v-for="item in provinces" :value="item" :key="item.areaCode"
+                    :label="item.areaCname"></el-option>
                 </el-select>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="支公司" prop="city">
-                <el-select
-                  :disabled="!disabledAddress.city"
-                  @change="selectCity"
-                  value-key="areaCname"
-                  style="width: 100%"
-                  v-model="selectAddress.city"
-                  placeholder="请选择市"
-                  size="small"
-                >
-                  <el-option
-                    v-for="(item, index) in cities"
-                    :key="index"
-                    :value="item"
-                    :label="item.areaCname"
-                  ></el-option>
+                <el-select :disabled="!disabledAddress.city" @change="selectCity" value-key="areaCname"
+                  style="width: 100%" v-model="selectAddress.city" placeholder="请选择市" size="small">
+                  <el-option v-for="(item, index) in cities" :key="index" :value="item"
+                    :label="item.areaCname"></el-option>
                 </el-select>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="营销服务部" prop="area">
-                <el-select
-                  :disabled="!disabledAddress.area"
-                  @change="selectArea"
-                  value-key="areaCname"
-                  style="width: 100%"
-                  v-model="selectAddress.area"
-                  placeholder="请选择区"
-                  size="small"
-                >
-                  <el-option
-                    v-for="(item, index) in areas"
-                    :key="index"
-                    :value="item"
-                    :label="item.areaCname"
-                  ></el-option>
+                <el-select :disabled="!disabledAddress.area" @change="selectArea" value-key="areaCname"
+                  style="width: 100%" v-model="selectAddress.area" placeholder="请选择区" size="small">
+                  <el-option v-for="(item, index) in areas" :key="index" :value="item"
+                    :label="item.areaCname"></el-option>
                 </el-select>
               </el-form-item>
             </el-col>
@@ -299,29 +135,17 @@
         <el-row v-if="dataForm.comlevel == '5'">
           <el-col :span="8">
             <el-form-item label="门店" prop="house">
-              <el-input
-                style="width: 100%"
-                placeholder="门店"
-                v-model="dataForm.house"
-              ></el-input>
+              <el-input style="width: 100%" placeholder="门店" v-model="dataForm.house"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="业务来源" prop="managementSource">
-              <el-select
-                :disabled="operType == 'EDIT'"
-                style="width: 100%"
-                v-model="dataForm.managementSource"
-              >
+              <el-select :disabled="operType == 'EDIT'" style="width: 100%" v-model="dataForm.managementSource">
                 <!-- <el-option label="渠道" value="1"></el-option>
                 <el-option label="个代" value="2"></el-option>
                 <el-option label="服务" value="3"></el-option> -->
-                <el-option
-                  v-for="val in business_sourceoptions"
-                  :key="val.value"
-                  :label="val.label"
-                  :value="val.value"
-                ></el-option>
+                <el-option v-for="val in business_sourceoptions" :key="val.value" :label="val.label"
+                  :value="val.value"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -330,51 +154,26 @@
         <el-row>
           <el-col :span="8">
             <el-form-item label="机构类型" prop="comtype">
-              <el-select
-                style="width: 100%"
-                v-model="dataForm.comtype"
-                placeholder="请选择"
-              >
-                <el-option
-                  v-for="item in comtypeoptions"
-                  :key="item.label"
-                  :label="item.label"
-                  :value="item.value"
-                ></el-option>
+              <el-select style="width: 100%" v-model="dataForm.comtype" placeholder="请选择">
+                <el-option v-for="item in comtypeoptions" :key="item.label" :label="item.label"
+                  :value="item.value"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
             <el-form-item label="机构级别" prop="comlevel">
-              <el-select
-                style="width: 100%"
-                disabled
-                v-model="dataForm.comlevel"
-                placeholder="请选择"
-              >
-                <el-option
-                  v-for="item in comleveloptions"
-                  :key="item.label"
-                  :label="item.label"
-                  :value="item.value"
-                ></el-option>
+              <el-select style="width: 100%" disabled v-model="dataForm.comlevel" placeholder="请选择">
+                <el-option v-for="item in comleveloptions" :key="item.label" :label="item.label"
+                  :value="item.value"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="机构性质" prop="comattribute">
-              <el-select
-                style="width: 100%"
-                v-model="dataForm.comattribute"
-                placeholder="请选择"
-              >
-                <el-option
-                  v-for="item in comattributeoptions"
-                  :key="item.label"
-                  :label="item.label"
-                  :value="item.value"
-                ></el-option>
+              <el-select style="width: 100%" v-model="dataForm.comattribute" placeholder="请选择">
+                <el-option v-for="item in comattributeoptions" :key="item.label" :label="item.label"
+                  :value="item.value"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -382,20 +181,13 @@
         <el-row>
           <el-col :span="16">
             <el-form-item label="机构地址" prop="address">
-              <el-input
-                v-model="dataForm.address"
-                placeholder="机构地址"
-              ></el-input>
+              <el-input v-model="dataForm.address" placeholder="机构地址"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="排序" prop="orderNum">
-              <el-input-number
-                v-model="dataForm.orderNum"
-                placeholder="排序"
-                controls-position="right"
-                :min="0"
-              ></el-input-number>
+              <el-input-number v-model="dataForm.orderNum" placeholder="排序" controls-position="right"
+                :min="0"></el-input-number>
             </el-form-item>
           </el-col>
         </el-row>
@@ -481,47 +273,23 @@
         <el-row> </el-row>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button
-          size="small"
-          type="primary"
-          style="background-color: #ffc000; border: 1px solid #ffc000"
-          @click="dialogVisible = false"
-          >取消</el-button
-        >
+        <el-button size="small" type="primary" style="background-color: #ffc000; border: 1px solid #ffc000"
+          @click="dialogVisible = false">取消</el-button>
         <el-button size="small" type="primary" @click="submitForm()">{{
           $t("action.comfirm")
         }}</el-button>
       </span>
     </el-dialog>
     <!-- 新增修改界面 -->
-    <el-dialog
-      :title="dialogTitle"
-      width="1000px"
-      :visible.sync="deptDialogVisible"
-      :close-on-click-modal="false"
-      v-dialogDrag
-      @close="closeDeptDialog"
-    >
-      <el-form
-        :model="deptDataForm"
-        :rules="deptDataRule"
-        ref="deptDataForm"
-        @keyup.enter.native="deptSubmitForm()"
-        label-width="100px"
-        size="small"
-        style="text-align: left"
-      >
+    <el-dialog :title="dialogTitle" width="1000px" :visible.sync="deptDialogVisible" :close-on-click-modal="false"
+      v-dialogDrag @close="closeDeptDialog">
+      <el-form :model="deptDataForm" :rules="deptDataRule" ref="deptDataForm" @keyup.enter.native="deptSubmitForm()"
+        label-width="100px" size="small" style="text-align: left">
         <el-row>
           <el-col :span="8">
             <el-form-item label="所属机构" prop="id">
-              <span
-                style="width: 100%; overflow: hidden"
-                v-if="
-                  currentTreeNode && currentTreeNode.id == deptDataForm.parentId
-                "
-                class="span-disabled"
-                >{{ currentTreeNode.name }}-{{ currentTreeNode.id }}</span
-              >
+              <span style="width: 100%; overflow: hidden" v-if="currentTreeNode && currentTreeNode.id == deptDataForm.parentId
+                " class="span-disabled">{{ currentTreeNode.name }}-{{ currentTreeNode.id }}</span>
               <span style="width: 100%" v-else class="span-disabled">{{
                 deptDataForm.id
               }}</span>
@@ -529,42 +297,26 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="部门编号" prop="id">
-              <el-input
-                style="width: 100%"
-                v-model="deptDataForm.id"
-                placeholder="部门编号"
-                disabled
-              ></el-input>
+              <el-input style="width: 100%" v-model="deptDataForm.id" placeholder="部门编号" disabled></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="部门名称" prop="name">
-              <el-input
-                style="width: 100%"
-                v-model="deptDataForm.name"
-                placeholder="部门名称"
-              ></el-input>
+              <el-input style="width: 100%" v-model="deptDataForm.name" placeholder="部门名称"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="16">
             <el-form-item label="机构地址" prop="address">
-              <el-input
-                v-model="deptDataForm.address"
-                placeholder="机构地址"
-              ></el-input>
+              <el-input v-model="deptDataForm.address" placeholder="机构地址"></el-input>
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
             <el-form-item label="排序" prop="orderNum">
-              <el-input-number
-                v-model="deptDataForm.orderNum"
-                placeholder="排序"
-                controls-position="right"
-                :min="0"
-              ></el-input-number>
+              <el-input-number v-model="deptDataForm.orderNum" placeholder="排序" controls-position="right"
+                :min="0"></el-input-number>
             </el-form-item>
           </el-col>
         </el-row>
@@ -578,43 +330,21 @@
         }}</el-button>
       </span>
     </el-dialog>
-     <!-- 设置部门负责人 -->
-    <el-dialog
-      title="设置部门负责人"
-      width="500px"
-      :visible.sync="deptDialogLeadVisible"
-      :close-on-click-modal="false"
-      v-dialogDrag
-      @close="closeLeadDialog"
-    >
-    <el-form
-        :model="leadDataForm"
-        :rules="leadDataRule"
-        ref="leadDataForm"
-        label-width="100px"
-        size="small"
-        style="text-align: left"
-      >
-      <el-row>
-        <el-col :span="8">
-        <el-form-item label="机构负责人" prop="address">
-          <el-select
-            style="width: 200px;"
-            filterable
-            v-model="leadDataForm.leadId"
-            placeholder="请选择"
-          >
-            <el-option
-              v-for="item in userList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-       </el-col>
-      </el-row>
-    </el-form>
+    <!-- 设置部门负责人 -->
+    <el-dialog title="设置部门负责人" width="500px" :visible.sync="deptDialogLeadVisible" :close-on-click-modal="false"
+      v-dialogDrag @close="closeLeadDialog">
+      <el-form :model="leadDataForm" :rules="leadDataRule" ref="leadDataForm" label-width="100px" size="small"
+        style="text-align: left">
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="机构负责人" prop="address">
+              <el-select style="width: 200px;" filterable v-model="leadDataForm.leadId" placeholder="请选择">
+                <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
       <span slot="footer" class="dialog-footer">
         <el-button size="small" @click="closeLeadDialog">取消
         </el-button>
@@ -646,6 +376,7 @@ export default {
     // }
 
     this.findTreeData(); // 获取左边机构树数据
+    // this.generateUniqueKeys(this.ztreeNodes)
     //获取所有下拉框数据
     this.getDictItems("comlevel");
     this.getDictItems("comattribute");
@@ -661,10 +392,11 @@ export default {
   },
   data() {
     return {
-      deptDialogLeadVisible:false,
-      leadDataForm:{
-        leadId:"",
-        deptId:""
+      expandrowkeys: '',
+      deptDialogLeadVisible: false,
+      leadDataForm: {
+        leadId: "",
+        deptId: ""
       },
       userList: [],
       loading: false,
@@ -741,7 +473,7 @@ export default {
         managementSource: 1, //来源
         orderNum: 0,
       },
-      leadDataRule:{
+      leadDataRule: {
         leadId: [
           {
             required: true,
@@ -881,36 +613,44 @@ export default {
     };
   },
   methods: {
+    generateUniqueKeys(nodes, parentKey = '') {
+      return nodes.map((node, index) => {
+        const key = `${parentKey}${node.id}-${index}`; // 结合父节点和当前索引生成一个唯一键
+        if (node.children && node.children.length > 0) {
+          node.children = generateUniqueKeys(node.children, `${key}-`);
+        }
+        return { ...node, uniqueKey: key };
+      });
+    },
     //关闭部门弹框
     closeLeadDialog() {
-      this.leadDataForm={
-        leadId:"",
-        deptId:""
+      this.leadDataForm = {
+        leadId: "",
+        deptId: ""
       },
-      this.deptDialogLeadVisible = false;
+        this.deptDialogLeadVisible = false;
     },
     //提交
-    leadSubmitForm(){
+    leadSubmitForm() {
       this.$api.dept.saveLeadId(this.leadDataForm).then((res) => {
         if (res.code == 200) {
-              this.findTreeData();
-              this.closeLeadDialog();
-              this.$message({
-                type: "success",
-                message: "设置成功!",
-              });
-            } else {
-              this.$message({
-                type: "error",
-                message: "设置失败!",
-              });
-            }
+          this.findTreeData();
+          this.closeLeadDialog();
+          this.$message({
+            type: "success",
+            message: "设置成功!",
+          });
+        } else {
+          this.$message({
+            type: "error",
+            message: "设置失败!",
+          });
+        }
       });
     },
     // 设置机构负责人
     setLeadUserId(data) {
-      console.log(data.id)
-      this.leadDataForm.deptId =data.id;
+      this.leadDataForm.deptId = data.id;
       //查询该机构下的后线人员
       this.$api.dept.getLeadListDeptId(data.id).then((res) => {
         this.userList = res.data;
@@ -920,11 +660,13 @@ export default {
     //点击每一行的事件
     rowClick(row, treeNode) {
       //点每行展开折叠
+      if (row.expanded === undefined) {
+        row.expanded = false;
+      }
       row.expanded = !row.expanded;
       this.$refs.expandTable.toggleRowExpansion(row, row.expanded);
       //新增子公司、部门
       this.currentTreeNode = row;
-      // this.currentTreeNode = treeNode;
       this.filters.id = this.currentTreeNode.id;
       this.findSubDeptPage();
     },
@@ -1122,6 +864,8 @@ export default {
       this.ztreeRightWidth = 100 - (this.ztreeLeftWidth - 0);
     },
     findTreeData() {
+      this.ztreeNodes=[];
+
       // 获取机构树的数据
       this.loading = true;
       this.$api.dept.findDeptTree(this.peopledeptid, "").then((res) => {
@@ -1130,20 +874,17 @@ export default {
       });
     },
     managementSourceQuery() {
+      this.ztreeNodes=[];
       this.loading = true;
+
       this.$api.dept
         .findDeptTree(this.peopledeptid, this.managementSource)
         .then((res) => {
           this.ztreeNodes = res.data;
-          this.loading = false;
+        this.loading = false;
+
         });
     },
-    handleCreated(ztreeObj) {
-      this.ztreeObj = ztreeObj;
-      // onCreated 中操作ztreeObj对象展开第一个节点
-      ztreeObj.expandNode(ztreeObj.getNodes()[0], true);
-      this.currentTreeNode = ztreeObj.getNodes()[0];
-    },
     // 右边表格Start
     findSubDeptPage: function (data) {
       // 获取分页数据
@@ -1532,11 +1273,7 @@ export default {
 };
 </script>
 
-<style scoped>
-body {
-  scrollbar-gutter: stable both-edges;
-}
-
+<style lang="scss" scoped>
 .bh-medium-font-size {
   font-size: 30px !important;
 }

+ 539 - 0
src/views/Sys/RulePermissions.vue

@@ -0,0 +1,539 @@
+<template>
+    <div class="page-container">
+      <!--工具栏-->
+      <div
+        class="toolbar"
+        style="float: left; padding-top: 10px; padding-left: 50px"
+      >
+        <el-form :inline="true" :model="filters" :size="size">
+          <el-form-item>
+            <el-input v-model="filters.name" placeholder="角色名"></el-input>
+          </el-form-item>
+          <el-form-item>
+            <kt-button
+              icon="fa fa-search"
+              :label="$t('action.search')"
+              perms="sys:role:view"
+              type="primary"
+              @click="findPage(null)"
+            />
+          </el-form-item>
+          
+        </el-form>
+      </div>
+      <div class="conent-box" >
+        <!--表格内容栏-->
+        <el-table
+            :data="pageResult.content"
+            border
+            style="width: 100%; "
+            height="600"
+        >
+            <el-table-column
+                v-for="column in columns"
+                header-align="center"
+                align="center"
+                :prop="column.prop"
+                :label="column.label"
+                :width="column.width"
+                :min-width="column.minWidth"
+                :fixed="column.fixed"
+                :key="column.prop"
+                :type="column.type"
+                :formatter="column.formatter"
+                :sortable="column.sortable == null ? true : column.sortable"
+            >
+            </el-table-column>
+            <el-table-column
+                :label="$t('action.operation')"
+                width="185"
+                fixed="right"
+                
+                header-align="center"
+                align="center"
+            >
+                <template slot-scope="scope">
+                <kt-button
+                    
+                    label="菜单配置"
+                    :perms="''"
+                    :size="size"
+                    @click="handleEdit( scope.row)"
+                />
+                <!-- <kt-button
+                    icon="fa fa-trash"
+                    :label="$t('action.delete')"
+                    :perms="permsDelete"
+                    :size="size"
+                    type="danger"
+                    @click="handleDelete(scope.$index, scope.row)"
+                /> -->
+                </template>
+            </el-table-column>
+        </el-table>
+       
+       
+      </div>
+      <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="pageRequest.pageNum"
+            :page-sizes="[10, 20, 30, 40]"
+            :page-size="pageRequest.pageSize"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="pageRequest.total">
+        </el-pagination>
+     
+      <!-- </el-col> -->
+      <!--新增编辑界面-->
+      <el-dialog
+        v-dialogDrag
+        :title="'菜单配置'"
+        width="40%"
+        :visible.sync="dialogVisible"
+        :close-on-click-modal="false"
+      >
+        <el-tree
+          :data="menuData"
+          size="mini"
+          show-checkbox
+          node-key="id"
+          :props="defaultProps"
+          ref="menuTree"
+          :default-checked-keys="checkedKeys"
+        
+          v-loading="menuLoading"
+          element-loading-text="拼命加载中"
+          @check="handleMenuCheckChange"
+          @node-click="treeClick"
+        >
+        </el-tree>
+        <div slot="footer" class="dialog-footer">
+          <el-button :size="size" @click.native="dialogVisible = false">{{
+            $t("action.cancel")
+          }}</el-button>
+          <el-button
+            :size="size"
+            type="primary"
+            @click.native="submitForm"
+            :loading="editLoading"
+            >{{ $t("action.submit") }}</el-button
+          >
+        </div>
+      </el-dialog>
+      <el-drawer
+        title="数据规则/按钮权限配置"
+        :visible.sync="drawer"
+        :direction="'rtl'"
+        :before-close="handleClose">
+        <el-tree
+            :data="messageList"
+            size="mini"
+            show-checkbox
+            node-key="id"
+            :props="ruleProps"
+            ref="perMisseionTree"
+            :default-checked-keys="perCheckedKeys"
+            
+            
+            element-loading-text="拼命加载中"
+            @check="handlePerCheckChange"
+            >
+            </el-tree>
+            <el-button style="margin-left: 20px;" type="primary" @click="submitPer">保存</el-button>
+            <!-- v-loading="menuLoading" -->
+        </el-drawer>
+    </div>
+  </template>
+  
+  <script>
+  import KtTable from "@/views/Core/KtTable";
+  import KtButton from "@/views/Core/KtButton";
+  import TableTreeColumn from "@/views/Core/TableTreeColumn";
+  import { format } from "@/utils/datetime";
+
+
+  export default {
+    components: {
+      KtTable,
+      KtButton,
+      TableTreeColumn,
+    },
+    data() {
+      return {
+        messageList:[],
+        drawer:false,
+        size: "small",
+        filters: {
+          name: "",
+        },
+        columns: [
+          { prop: "id", label: "ID", minWidth: 50 },
+          { prop: "name", label: "角色名", minWidth: 120 },
+          { prop: "remark", label: "备注", minWidth: 120 },
+          { prop: "createBy", label: "创建人", minWidth: 120 },
+          {
+            prop: "createTime",
+            label: "创建时间",
+            minWidth: 120,
+            formatter: this.dateFormat,
+          },
+          // {prop:"lastUpdateBy", label:"更新人", minWidth:100},
+          // {prop:"lastUpdateTime", label:"更新时间", minWidth:120, formatter:this.dateFormat}
+        ],
+        pageRequest: { pageNum: 1, pageSize: 10,total:0 },
+        pageResult: {},
+  
+        operation: false, // true:新增, false:编辑
+        dialogVisible: false, // 新增编辑界面是否显示
+        editLoading: false,
+        dataFormRules: {
+          name: [{ required: true, message: "请输入角色名", trigger: "blur" }],
+        },
+        // 新增编辑界面数据
+        dataForm: {
+          id: 0,
+          name: "",
+          remark: "",
+        },
+        selectRole: {},
+        menuData: [],
+        menuSelections: [],
+        menuLoading: false,
+        authLoading: false,
+        checkAll: false,
+        currentRoleMenus: [],
+        defaultProps: {
+          children: "children",
+          label: "name",
+        },
+        ruleProps:{
+            children: "children",
+            label: "ruleName",
+        },
+        leveData: [],
+        checkedKeys:[],
+        roleId:"",
+        clickMenuId:"",
+        perCheckedKeys:[]
+      };
+    },
+    created() {
+      this.findPage({});
+    },
+    methods: {
+        handleSizeChange(val) {
+            // console.log(`每页 ${val} 条`);
+            this.pageRequest.pageSize=val
+            this.findPage({});
+        },
+        handleCurrentChange(val) {
+            // console.log(`当前页: ${val}`);
+            this.pageRequest.pageNum=val
+            this.findPage({});
+
+        },
+      getLeveData() {},
+      // 获取分页数据
+      findPage: function (data) {
+        // if (data !== null) {
+        //   this.pageRequest = data.pageRequest;
+        // }
+        this.pageRequest.columnFilters = {
+          name: { name: "name", value: this.filters.name },
+        };
+        this.$api.role
+          .findPage(this.pageRequest)
+          .then((res) => { 
+            this.pageResult = res.data;
+            this.pageRequest.total=res.data.totalSize
+            this.findTreeData();
+          })
+          .then(data != null ? data.callback : "");
+      },
+     
+    
+      // 显示编辑界面
+      handleEdit: function (params) {
+        this.checkedKeys=[]
+        this.dialogVisible = true;
+        this.operation = false;
+        // console.log(params)
+        this.roleId=params.id
+        // this.dataForm = Object.assign({}, params.row);
+        this.$api.sys.getInsRoleMenuPermissions({
+            roleId:params.id
+        }).then(res=>{
+            // console.log(res)
+            if(res.code===200){
+             
+                if(res.data.length>0){
+                    this.checkedKeys=res.data.map((v)=>{
+                        return v.menuId
+                    })
+                }else{
+                    this.$refs.menuTree.setCheckedKeys([],false);
+                }
+            }
+        })
+      },
+      // 保存角色关联菜单
+      submitForm: function () {
+        
+        this.$api.sys.saveAndUpdateRuleMenu({
+            menuIdList:this.checkedKeys,
+            roleId:this.roleId
+        }).then((res) => {
+            this.editLoading = false;
+            if (res.code == 200) {
+                this.$message({ message: "操作成功", type: "success" });
+                this.dialogVisible = false;
+                this.checkedKeys=[]
+            } else {
+                this.$message({
+                    message: "操作失败, " + res.msg,
+                    type: "error",
+                });
+            }
+            // this.findPage(null);
+        });
+          
+          
+      },
+    // 保存角色-菜单-关联权限规则
+    submitPer(){
+        this.$api.sys.roleMenuPerSaveAndUpdate({
+            permissionsIdList:this.perCheckedKeys,
+            roleId:this.roleId,
+            menuId:this.clickMenuId
+        }).then((res) => {
+            this.editLoading = false;
+            if (res.code == 200) {
+                this.$message({ message: "操作成功", type: "success" });
+                this.drawer = false;
+                this.perCheckedKeys=[]
+            } else {
+                this.$message({
+                    message: "操作失败, " + res.msg,
+                    type: "error",
+                });
+            }
+            // this.findPage(null);
+        });
+        
+    },
+      // 获取数据
+      findTreeData: function () {
+        this.menuLoading = true;
+        this.$api.menu.findMenuTree().then((res) => {
+          this.menuData = res.data;
+          this.menuLoading = false;
+        });
+      },
+      // 角色选择改变监听
+      async handleRoleSelectChange(val) {
+        if (val == null || val.val == null) {
+          return;
+        }
+        this.selectRole = val.val;
+        if (val.val.id == 1 && val.val.name == "admin") {
+          let allMenus = [];
+          this.checkAllMenu(this.menuData, allMenus);
+          this.$refs.menuTree.setCheckedNodes(allMenus);
+          return;
+        }
+        let res = await this.$api.role.findRoleMenus({ roleId: val.val.id });
+        if (res.code == 200) {
+          this.$nextTick(() => {
+            const arr = [];
+            res.data.forEach((item) => {
+              if (
+                !this.$refs.menuTree.getNode(item.id).childNodes ||
+                !this.$refs.menuTree.getNode(item.id).childNodes.length
+              ) {
+                arr.push(item);
+              }
+            });
+            this.$refs.menuTree.setCheckedNodes(arr);
+          });
+        }
+      },
+      //树节点选择监听
+      handleMenuCheckChange(data, check, subCheck) {
+       this.checkedKeys=[...check.checkedKeys]
+      },
+      //规则树几点选中
+      handlePerCheckChange(data, check, subCheck) {
+       this.perCheckedKeys=[...check.checkedKeys]
+      },
+      //树节点点击
+     async treeClick(node){
+        // console.log(node)
+        this.clickMenuId=node.id
+        this.drawer=true
+        await this.getMessageList()
+        await this.getInsRolePermissionsDtoList()
+      },
+      handleClose(done) {
+        this.$confirm('确认关闭?')
+          .then(_ => {
+            done();
+          })
+          .catch(_ => {});
+      },
+      //获取菜单下的规则列表
+        async getMessageList(){
+            this.$api.sys.getMenuRelaPerqueryList({
+                menuId:this.clickMenuId,
+                status:1
+            }).then(res=>{
+                if(res.code===200){
+                    
+                    this.messageList=[...res.data]
+                }
+            })
+        },
+        //获取角色关联菜单 关联的规则数据
+        async getInsRolePermissionsDtoList(){
+            this.$api.sys.getInsRolePermissionsDtoList({
+                menuId:this.clickMenuId,
+                roleId:this.roleId
+            }).then(res=>{
+                if(res.code===200){
+                   
+                   console.log(res.data)
+                    if(res.data.length>0){
+                        this.perCheckedKeys=res.data.map((v)=>{
+                            return v.permissionsId
+                        })
+                    }else{
+                        this.$refs.perMisseionTree.setCheckedKeys([],false);
+                    }
+                    // this.messageList=[...res.data]
+                }
+            })
+        },
+      // 重置选择
+      resetSelection() {
+        this.checkAll = false;
+        this.$refs.menuTree.setCheckedNodes([]);
+      },
+      // 全选操作
+      handleCheckAll() {
+        if (this.checkAll) {
+          let allMenus = [];
+          this.checkAllMenu(this.menuData, allMenus);
+          this.$refs.menuTree.setCheckedNodes(allMenus);
+        } else {
+          this.$refs.menuTree.setCheckedNodes([]);
+        }
+      },
+      // 递归全选
+      checkAllMenu(menuData, allMenus) {
+        menuData.forEach((menu) => {
+          allMenus.push(menu);
+          if (menu.children) {
+            this.checkAllMenu(menu.children, allMenus);
+          }
+        });
+      },
+      // 角色菜单授权提交
+      submitAuthForm() {
+        let roleId = this.selectRole.id;
+        if ("admin" == this.selectRole.name) {
+          this.$message({
+            message: "超级管理员拥有所有菜单权限,不允许修改!",
+            type: "error",
+          });
+          return;
+        }
+        this.authLoading = true;
+        let checkedNodes = this.$refs.menuTree.getCheckedNodes(false, true);
+        let roleMenus = [];
+        for (let i = 0, len = checkedNodes.length; i < len; i++) {
+          let roleMenu = { roleId: roleId, menuId: checkedNodes[i].id };
+          roleMenus.push(roleMenu);
+        }
+        this.$api.role.saveRoleMenus(roleMenus).then((res) => {
+          if (res.code == 200) {
+            this.$message({ message: "操作成功", type: "success" });
+          } else {
+            this.$message({ message: "操作失败, " + res.msg, type: "error" });
+          }
+          this.authLoading = false;
+        });
+      },
+    //   renderContent(h, { node, data, store }) {
+    //     return (
+    //       <div class="column-container">
+    //         <div style="text-algin:center;margin-right:80px;">{data.name}</div>
+            
+           
+    //       </div>
+    //     );
+    //   },
+      // 时间格式化
+      dateFormat: function (row, column, cellValue, index) {
+        return format(row[column.property]);
+      },
+    },
+    mounted() {},
+  };
+  </script>
+  <style scoped lang="less">
+  .menu-container {
+    margin-top: 10px;
+  }
+  .menu-header {
+    padding-left: 8px;
+    padding-bottom: 5px;
+    text-align: left;
+    font-size: 16px;
+    color: rgb(20, 89, 121);
+  }
+  .conent-box{
+    width: 100%;
+    display: flex;
+    /* justify-content: space-around */
+    >div{
+        width: 100%;
+    }
+  }
+  /deep/ .el-table {
+    max-height: 500px !important;
+  }
+  .el-tree {
+   // width: 800px;
+    height: 500px;
+    overflow-x: auto;
+  }
+  /deep/ .el-tree > .el-tree-node {
+   // display: inline-block !important;
+  }
+  .btn-box {
+    padding-right: 100px;
+  }
+  /*定义滚动条高宽及背景
+   高宽分别对应横竖滚动条的尺寸*/
+  ::-webkit-scrollbar {
+    width: 8px;
+    height: 8px;
+    background-color: rgba(0, 0, 0, 0.2);
+  }
+  
+  /*定义滚动条轨道
+   内阴影+圆角*/
+  ::-webkit-scrollbar-track {
+    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
+    border-radius: 10px;
+    background-color: #f5f5f5;
+  }
+  /*定义滑块
+       内阴影+圆角*/
+  ::-webkit-scrollbar-thumb {
+    border-radius: 10px;
+    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
+    background-color: #b3b3b3;
+  }
+  </style>
+  

+ 47 - 26
src/views/Task/TaskPoolChannel/TaskPoolChannel3.vue

@@ -1,17 +1,16 @@
 <template>
   <div>
-    <retrievalForm :fields="retrievalFields" @submit="handleFormSubmit" @toggleCollapse="toggleCollapse" :dateType="3"
-      @areaSelectChange="areaSelectChange"></retrievalForm>
-    <kt-common-table :data="pageResult" ref="commonTable" :columns="columns1" element-loading-text="加载中..." v-loading="loading"
-      :showBatchDelete="false" @findPage="findPage"
-      button3Name="转发" button3Type="text" @handleButton3="transmit" :stripe="false"
-      button2Name="报价轨迹" button2Type="text" @handleButton2="trajectory"
-      button6Name="批单" button6Type="text" @handleButton6="batchOrder"
-      button5Name="详情" button5Type="text" @handleButton5="detailFun"
-      button4Name="转发记录" button4Type="text" @handleButton4="forwardingRecords" :operationWidth="300"></kt-common-table>
+    <retrievalForm :fields="retrievalFields" @submit="handleFormSubmit" @exportSubmit="exportSubmit" :isExport="true"
+      @toggleCollapse="toggleCollapse" :dateType="3" @areaSelectChange="areaSelectChange"></retrievalForm>
+    <kt-common-table :data="pageResult" ref="commonTable" :columns="columns1" element-loading-text="加载中..."
+      v-loading="loading" :showBatchDelete="false" @findPage="findPage" button3Name="转发" button3Type="text"
+      @handleButton3="transmit" :stripe="false" button2Name="报价轨迹" button2Type="text" @handleButton2="trajectory"
+      button6Name="批单" button6Type="text" @handleButton6="batchOrder" button5Name="详情" button5Type="text"
+      @handleButton5="detailFun" button4Name="转发记录" button4Type="text" @handleButton4="forwardingRecords"
+      :operationWidth="300"></kt-common-table>
     <el-dialog title="转发" :visible.sync="dialogVisible" width="30%">
       转发人:
-      <el-select v-model="transmitValue" filterable clearable  placeholder="请选择">
+      <el-select v-model="transmitValue" filterable clearable placeholder="请选择">
         <el-option v-for="item in options" :key="item.userId" :label="item.name" :value="item.userId"></el-option>
       </el-select>
       <span slot="footer" class="dialog-footer">
@@ -19,7 +18,8 @@
         <el-button type="primary" size="small" @click="transmitSumit">确 定</el-button>
       </span>
     </el-dialog>
-    <detailsDialog ref="detailsDialog"  :isTaskPool="true" :orderInfo="queryOrders" :isAuditing="isAuditing" :feeOrderNewVoList="feeOrderNewVoList"></detailsDialog>
+    <detailsDialog ref="detailsDialog" :isTaskPool="true" :orderInfo="queryOrders" :isAuditing="isAuditing"
+      :feeOrderNewVoList="feeOrderNewVoList"></detailsDialog>
     <el-dialog :visible.sync="ddgjdialogVisible" width="500px">
       <div slot="title" class=" dialog-title">
         <span>订单轨迹</span>
@@ -33,7 +33,7 @@
                 <div>车牌号:{{ item.licenseNo }}</div>
                 <div>被保人:{{ item.insuredname }}</div>
                 <div>
-                  <span >操作人:{{ item.operator }}</span>
+                  <span>操作人:{{ item.operator }}</span>
                   <span style="margin-left: 10px">操作人工号:{{ item.audituser }}</span>
                 </div>
                 <span v-if="item.operatorTime">
@@ -45,17 +45,16 @@
         </el-steps>
       </div>
     </el-dialog>
-    <el-dialog :visible.sync="forwardingRecordsdialogVisible"  title="转发记录" width="70%">
-      <el-table :data="gridData"  height="400" border  v-loading="loading" highlight-current-row stripe
-        :header-cell-style="{
-          background: '#F2F7FC',
-          fontWeight: '700',
-          color: '#606266',
-        }">
+    <el-dialog :visible.sync="forwardingRecordsdialogVisible" title="转发记录" width="70%">
+      <el-table :data="gridData" height="400" border v-loading="loading" highlight-current-row stripe :header-cell-style="{
+        background: '#F2F7FC',
+        fontWeight: '700',
+        color: '#606266',
+      }">
         <el-table-column property="subOrderId" align="center" label="订单号" width="200"></el-table-column>
         <el-table-column property="oldOperatorId" align="center" label="转发人" width="200"></el-table-column>
         <el-table-column property="newOperatorId" align="center" label="接收人"></el-table-column>
-        <el-table-column property="remark"  align="center" label="转发信息"></el-table-column>
+        <el-table-column property="remark" align="center" label="转发信息"></el-table-column>
         <el-table-column property="createTime" align="center" label="转发时间"></el-table-column>
       </el-table>
     </el-dialog>
@@ -105,7 +104,7 @@ export default {
         { prop: "jypremium", label: "驾意险保费", minWidth: 160 },
         // { prop: "isExternal", label: "外部订单", formatter: this.isExternalFormatter},
         { prop: "insuredname", label: "投保人姓名", minWidth: 120 },
-        {prop: "underwritingStatus", label: "核保通过方式", minWidth: 180, formatter: this.underwritingMethodFormatter },
+        { prop: "underwritingStatus", label: "核保通过方式", minWidth: 180, formatter: this.underwritingMethodFormatter },
         { prop: "userid", label: "业务员工号", minWidth: 180 },
         { prop: "createtime", label: "报价时间", minWidth: 160 },
       ],
@@ -127,6 +126,12 @@ export default {
     getStatusText(code) {
       return this.optionsStatus.find(val => val.dictValue == code).dictTag;;
     },
+    //导出
+    exportSubmit(data) {
+      let obj = Object.assign(this.pageRequest, data)
+      this.pageRequest = obj;
+      this.exportRecords();
+    },
     handleFormSubmit(data) {
       let obj = Object.assign(this.pageRequest, data)
       this.pageRequest = obj;
@@ -154,13 +159,31 @@ export default {
           if (res.code == 200) {
             this.loading = false;
             this.pageResult = res.data;
-            this.$refs.commonTable.taskPool=true
+            this.$refs.commonTable.taskPool = true
           } else {
             this.loading = false;
             this.$message.error(res.msg);
           }
         });
     },
+    //导出
+    exportRecords() {
+      this.$api.task.exportHospitalityByChannel(this.pageRequest).then((res) => {
+        if (res.code == '200') {
+          let url = process.env.BASE_URL + res.data; // 3.创建一个临时的url指向blob对象
+          let a = document.createElement("a");
+          a.href = url;
+          a.download = "导出文件.xlsx";
+          a.click();
+          window.URL.revokeObjectURL(url);
+        } else {
+          this.$message({
+            type: 'error',
+            message: res.msg,
+          });
+        }
+      });
+    },
     trajectory(row) {
       this.$api.letter.queryBySuborderDetails(row.row.subOrderId).then((res) => {
         if (res.code == 200 && res.data.length > 0) {
@@ -237,7 +260,7 @@ export default {
         this.queryFrom.endDate = e[1];
       }
     },
-    batchOrder(row){
+    batchOrder(row) {
 
     },
     // detailFun(row) {
@@ -282,7 +305,6 @@ export default {
 </script>
 
 <style scoped lang="scss">
-
 /deep/ {
 
   .el-step__description.is-finish,
@@ -290,6 +312,7 @@ export default {
     color: #333;
     border: none;
   }
+
   .el-step__title,
   .el-step__icon-inner {
     color: var(--themeColor)
@@ -316,6 +339,4 @@ export default {
     box-shadow: 0px 2px 2px 0px rgba(0, 0, 0, 0.1);
   }
 }
-
-
 </style>

Datei-Diff unterdrückt, da er zu groß ist
+ 283 - 162
src/views/Task/daikeComponents/KhgxKtLetter.vue


Datei-Diff unterdrückt, da er zu groß ist
+ 400 - 1313
src/views/Task/daikeComponents/KtLetter.vue


Datei-Diff unterdrückt, da er zu groß ist
+ 435 - 103
src/views/Task/daikeComponents/KtLetter1.vue


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.