Explorar o código

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

lihongxiao hai 1 ano
pai
achega
28b20610d4
Modificáronse 34 ficheiros con 1942 adicións e 410 borrados
  1. 5 5
      package-lock.json
  2. 1 0
      package.json
  3. 3 0
      src/components/Form/ProductCostForm.vue
  4. 218 96
      src/components/PeopleImage/index.vue
  5. 6 18
      src/components/UserDetail/index.vue
  6. 4 1
      src/http/axios.js
  7. 13 2
      src/http/moudules/contract.js
  8. 18 0
      src/http/moudules/letter.js
  9. 52 9
      src/views/AgreementManage/CarInsurance/AgreementEntry.vue
  10. 3 3
      src/views/AgreementManage/CarInsurance/AgreementUnderwritingRule.vue
  11. 82 2
      src/views/AgreementManage/CarInsurance/ProductCostExamine.vue
  12. 152 0
      src/views/Core/KtCommonTable.vue
  13. 173 99
      src/views/Core/KtTable.vue
  14. 626 86
      src/views/FinancialManagement/ContractManagement/ContractManagement.vue
  15. 423 0
      src/views/FinancialManagement/ContractManagement/ContractStatement.vue
  16. 60 27
      src/views/Letter/Wallet/FundsWallet.vue
  17. 9 10
      src/views/OrderMsg/ReadPdf.vue
  18. 2 0
      src/views/PeopleManage/Agent/AgentExamine.vue
  19. 1 0
      src/views/PeopleManage/Agent/AgentManage.vue
  20. 31 19
      src/views/PeopleManage/Agent/SetupManager.vue
  21. 1 1
      src/views/PeopleManage/InsuranceCompany/InsuranceCompany.vue
  22. 2 0
      src/views/PeopleManage/InsuranceCompany/InsuranceCompanyExamine.vue
  23. 2 0
      src/views/PeopleManage/Player/PlayerExamineTeam.vue
  24. 1 0
      src/views/PeopleManage/Player/PlayerManageteam.vue
  25. 19 9
      src/views/PeopleManage/Player/SetChannelManager.vue
  26. 2 0
      src/views/PeopleManage/Sales/SalesExamine.vue
  27. 2 0
      src/views/PeopleManage/Sales/SalesExamineGroup.vue
  28. 1 0
      src/views/PeopleManage/Sales/SalesManage.vue
  29. 1 0
      src/views/PeopleManage/Sales/SalesManageGroup.vue
  30. 2 0
      src/views/PeopleManage/Staff/StaffExamine.vue
  31. 1 0
      src/views/PeopleManage/Staff/StaffManage.vue
  32. 2 0
      src/views/PeopleManage/TeamLeader/TeamLeaderExamine.vue
  33. 1 0
      src/views/PeopleManage/TeamLeader/TeamLeaderManage.vue
  34. 23 23
      src/views/Task/daikeComponents/KtLetter1.vue

+ 5 - 5
package-lock.json

@@ -182,7 +182,7 @@
     },
     "@riophae/vue-treeselect": {
       "version": "0.4.0",
-      "resolved": "https://registry.npmmirror.com/@riophae/vue-treeselect/-/vue-treeselect-0.4.0.tgz",
+      "resolved": "https://registry.npmjs.org/@riophae/vue-treeselect/-/vue-treeselect-0.4.0.tgz",
       "integrity": "sha512-J4atYmBqXQmiPFK/0B5sXKjtnGc21mBJEiyKIDZwk0Q9XuynVFX6IJ4EpaLmUgL5Tve7HAS7wkiGGSti6Uaxcg==",
       "requires": {
         "@babel/runtime": "^7.3.1",
@@ -2703,7 +2703,7 @@
     },
     "crypto-js": {
       "version": "4.2.0",
-      "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
+      "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
       "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
     },
     "css-color-names": {
@@ -3077,7 +3077,7 @@
     },
     "decimal.js": {
       "version": "10.4.3",
-      "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz",
+      "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
       "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
     },
     "decode-uri-component": {
@@ -13992,7 +13992,7 @@
     },
     "vue-tree-to-table": {
       "version": "1.0.4",
-      "resolved": "https://registry.npmmirror.com/vue-tree-to-table/-/vue-tree-to-table-1.0.4.tgz",
+      "resolved": "https://registry.npmjs.org/vue-tree-to-table/-/vue-tree-to-table-1.0.4.tgz",
       "integrity": "sha512-uHVjc8Vu45JkIZEYexZDnuONSn+1IjWknIhDlkk4Qoo2LpGUcR+DaYQROGcIziAXULcUS94ye8Fzooy2KKFH3w==",
       "requires": {
         "element-ui": "^2.15.1",
@@ -14001,7 +14001,7 @@
       "dependencies": {
         "vue": {
           "version": "2.7.16",
-          "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.16.tgz",
+          "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz",
           "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
           "requires": {
             "@vue/compiler-sfc": "2.7.16",

+ 1 - 0
package.json

@@ -45,6 +45,7 @@
     "vue-demi": "^0.14.6",
     "vue-dialog-drag": "^0.1.29",
     "vue-directive-window": "^0.8.0",
+    "vue-doc-preview": "^0.3.2",
     "vue-draggable-resizable-gorkys": "^2.4.8",
     "vue-i18n": "^8.22.3",
     "vue-multiselect": "^2.1.6",

+ 3 - 0
src/components/Form/ProductCostForm.vue

@@ -754,6 +754,9 @@ export default {
     };
   },
   created() {
+    console.log('form表单数据', this.form)
+    console.log('underwritingRulesForm表单数据', this.form)
+    console.log('operator', this.form)
   },
   computed: {
     CarAttr() {

+ 218 - 96
src/components/PeopleImage/index.vue

@@ -29,23 +29,39 @@
             :before-upload="beforeAvatarUpload"
             :on-preview="handlePictureCardPreview"
           >
-            <img v-if="dataForm.SFZ_01" :src="dataForm.SFZ_01" class="avatar"/>
+            <img v-if="dataForm.SFZ_01" :src="dataForm.SFZ_01" class="avatar" />
             <div v-else class="upload-icon">
-              <img src="@/assets/image/people/camera.svg" alt="">
+              <img src="@/assets/image/people/camera.svg" alt="" />
               <div class="el-upload__text">人像面</div>
             </div>
             <span class="slot" v-show="dataForm.SFZ_01">
-              <i class="preview" @click.stop="handlePictureCardPreview(dataForm.SFZ_01)"></i>
-              <img class="close" v-show="!isDisabled" src="@/assets/image/people/close.png" alt="" @click.stop="handlePictureCardDelete('SFZ_01')">
+              <i
+                class="preview"
+                @click.stop="handlePictureCardPreview(dataForm.SFZ_01)"
+              ></i>
+              <img
+                class="close"
+                v-show="!isDisabled"
+                src="@/assets/image/people/close.png"
+                alt=""
+                @click.stop="handlePictureCardDelete('SFZ_01')"
+              />
               <div v-show="!isDisabled" class="bottomHandle">
-                <img class="reset" src="@/assets/image/people/reset.png" alt="">
+                <img
+                  class="reset"
+                  src="@/assets/image/people/reset.png"
+                  alt=""
+                />
                 <span class="title">点击重新上传</span>
               </div>
-              
             </span>
           </el-upload>
-          <div class="avatar-uploader" v-else @click.stop="handlePictureCardPreview(dataForm.SFZ_01)">
-            <img v-if="dataForm.SFZ_01" :src="dataForm.SFZ_01" class="avatar"/>
+          <div
+            class="avatar-uploader"
+            v-else
+            @click.stop="handlePictureCardPreview(dataForm.SFZ_01)"
+          >
+            <img v-if="dataForm.SFZ_01" :src="dataForm.SFZ_01" class="avatar" />
           </div>
         </el-form-item>
         <el-form-item label="">
@@ -58,22 +74,39 @@
             :http-request="httpRequest"
             :before-upload="beforeAvatarUpload"
           >
-            <img v-if="dataForm.SFZ_02" :src="dataForm.SFZ_02" class="avatar"/>
+            <img v-if="dataForm.SFZ_02" :src="dataForm.SFZ_02" class="avatar" />
             <div v-else class="upload-icon">
-              <img src="@/assets/image/people/camera.svg" alt="">
+              <img src="@/assets/image/people/camera.svg" alt="" />
               <div class="el-upload__text">国徽面</div>
             </div>
             <span class="slot" v-show="dataForm.SFZ_02">
-              <i class="preview" @click.stop="handlePictureCardPreview(dataForm.SFZ_02)"></i>
-              <img class="close" v-show="!isDisabled" src="@/assets/image/people/close.png" alt="" @click.stop="handlePictureCardDelete('SFZ_02')">
+              <i
+                class="preview"
+                @click.stop="handlePictureCardPreview(dataForm.SFZ_02)"
+              ></i>
+              <img
+                class="close"
+                v-show="!isDisabled"
+                src="@/assets/image/people/close.png"
+                alt=""
+                @click.stop="handlePictureCardDelete('SFZ_02')"
+              />
               <div v-show="!isDisabled" class="bottomHandle">
-                <img class="reset" src="@/assets/image/people/reset.png" alt="">
+                <img
+                  class="reset"
+                  src="@/assets/image/people/reset.png"
+                  alt=""
+                />
                 <span class="title">点击重新上传</span>
               </div>
             </span>
           </el-upload>
-          <div class="avatar-uploader" v-else @click.stop="handlePictureCardPreview(dataForm.SFZ_02)">
-            <img v-if="dataForm.SFZ_02" :src="dataForm.SFZ_02" class="avatar"/>
+          <div
+            class="avatar-uploader"
+            v-else
+            @click.stop="handlePictureCardPreview(dataForm.SFZ_02)"
+          >
+            <img v-if="dataForm.SFZ_02" :src="dataForm.SFZ_02" class="avatar" />
           </div>
         </el-form-item>
       </div>
@@ -91,21 +124,38 @@
           >
             <img v-if="dataForm.Z6Z_00" :src="dataForm.Z6Z_00" class="avatar" />
             <div v-else class="upload-icon">
-              <img src="@/assets/image/people/camera.svg" alt="">
+              <img src="@/assets/image/people/camera.svg" alt="" />
               <div class="el-upload__text">上传资料</div>
             </div>
             <!-- <i v-else class="el-icon-plus avatar-uploader-icon"></i> -->
             <span class="slot" v-show="dataForm.Z6Z_00">
-              <i class="preview" @click.stop="handlePictureCardPreview(dataForm.Z6Z_00)"></i>
-              <img class="close" v-show="!isDisabled" src="@/assets/image/people/close.png" alt="" @click.stop="handlePictureCardDelete('Z6Z_00')">
+              <i
+                class="preview"
+                @click.stop="handlePictureCardPreview(dataForm.Z6Z_00)"
+              ></i>
+              <img
+                class="close"
+                v-show="!isDisabled"
+                src="@/assets/image/people/close.png"
+                alt=""
+                @click.stop="handlePictureCardDelete('Z6Z_00')"
+              />
               <div v-show="!isDisabled" class="bottomHandle">
-                <img class="reset" src="@/assets/image/people/reset.png" alt="">
+                <img
+                  class="reset"
+                  src="@/assets/image/people/reset.png"
+                  alt=""
+                />
                 <span class="title">点击重新上传</span>
               </div>
             </span>
           </el-upload>
-          <div class="avatar-uploader" v-else @click.stop="handlePictureCardPreview(dataForm.Z6Z_00)">
-            <img v-if="dataForm.Z6Z_00" :src="dataForm.Z6Z_00" class="avatar"/>
+          <div
+            class="avatar-uploader"
+            v-else
+            @click.stop="handlePictureCardPreview(dataForm.Z6Z_00)"
+          >
+            <img v-if="dataForm.Z6Z_00" :src="dataForm.Z6Z_00" class="avatar" />
           </div>
         </el-form-item>
       </div>
@@ -119,24 +169,40 @@
             name="LD_00"
             :show-file-list="false"
             :http-request="httpRequest"
-            :before-upload="beforeAvatarUpload"
           >
             <img v-if="dataForm.LD_00" :src="dataForm.LD_00" class="avatar" />
             <div v-else class="upload-icon">
-              <img src="@/assets/image/people/camera.svg" alt="">
+              <img src="@/assets/image/people/camera.svg" alt="" />
               <div class="el-upload__text">上传资料</div>
             </div>
             <span class="slot" v-show="dataForm.LD_00">
-              <i class="preview" @click.stop="handlePictureCardPreview(dataForm.LD_00)"></i>
-              <img class="close" v-show="!isDisabled" src="@/assets/image/people/close.png" alt="" @click.stop="handlePictureCardDelete('LD_00')">
+              <i
+                class="preview"
+                @click.stop="handlePictureCardPreview(dataForm.LD_00)"
+              ></i>
+              <img
+                class="close"
+                v-show="!isDisabled"
+                src="@/assets/image/people/close.png"
+                alt=""
+                @click.stop="handlePictureCardDelete('LD_00')"
+              />
               <div v-show="!isDisabled" class="bottomHandle">
-                <img class="reset" src="@/assets/image/people/reset.png" alt="">
+                <img
+                  class="reset"
+                  src="@/assets/image/people/reset.png"
+                  alt=""
+                />
                 <span class="title">点击重新上传</span>
               </div>
             </span>
           </el-upload>
-          <div class="avatar-uploader" v-else @click.stop="handlePictureCardPreview(dataForm.LD_00)">
-            <img v-if="dataForm.LD_00" :src="dataForm.LD_00" class="avatar"/>
+          <div
+            class="avatar-uploader"
+            v-else
+            @click.stop="handlePictureCardPreview(dataForm.LD_00)"
+          >
+            <img v-if="dataForm.LD_00" :src="dataForm.LD_00" class="avatar" />
           </div>
         </el-form-item>
       </div>
@@ -152,22 +218,39 @@
             :http-request="httpRequest"
             :before-upload="beforeAvatarUpload"
           >
-            <img v-if="dataForm.YP_00" :src="dataForm.YP_00" class="avatar"/>
+            <img v-if="dataForm.YP_00" :src="dataForm.YP_00" class="avatar" />
             <div v-else class="upload-icon">
-              <img src="@/assets/image/people/camera.svg" alt="">
+              <img src="@/assets/image/people/camera.svg" alt="" />
               <div class="el-upload__text">上传资料</div>
             </div>
             <span class="slot" v-show="dataForm.YP_00">
-              <i class="preview" @click.stop="handlePictureCardPreview(dataForm.YP_00)"></i>
-              <img class="close" v-show="!isDisabled" src="@/assets/image/people/close.png" alt="" @click.stop="handlePictureCardDelete('YP_00')">
+              <i
+                class="preview"
+                @click.stop="handlePictureCardPreview(dataForm.YP_00)"
+              ></i>
+              <img
+                class="close"
+                v-show="!isDisabled"
+                src="@/assets/image/people/close.png"
+                alt=""
+                @click.stop="handlePictureCardDelete('YP_00')"
+              />
               <div v-show="!isDisabled" class="bottomHandle">
-                <img class="reset" src="@/assets/image/people/reset.png" alt="">
+                <img
+                  class="reset"
+                  src="@/assets/image/people/reset.png"
+                  alt=""
+                />
                 <span class="title">点击重新上传</span>
               </div>
             </span>
           </el-upload>
-          <div class="avatar-uploader" v-else @click.stop="handlePictureCardPreview(dataForm.YP_00)">
-            <img v-if="dataForm.YP_00" :src="dataForm.YP_00" class="avatar"/>
+          <div
+            class="avatar-uploader"
+            v-else
+            @click.stop="handlePictureCardPreview(dataForm.YP_00)"
+          >
+            <img v-if="dataForm.YP_00" :src="dataForm.YP_00" class="avatar" />
           </div>
         </el-form-item>
       </div>
@@ -186,20 +269,37 @@
             <img v-if="dataForm.DX_00" :src="dataForm.DX_00" class="avatar" />
             <div v-else class="upload-icon">
               <!-- <i class="el-icon-camera" style="font-size: 30px;"></i> -->
-              <img src="@/assets/image/people/camera.svg" alt="">
+              <img src="@/assets/image/people/camera.svg" alt="" />
               <div class="el-upload__text">上传资料</div>
             </div>
             <span class="slot" v-show="dataForm.DX_00">
-              <i class="preview" @click.stop="handlePictureCardPreview(dataForm.DX_00)"></i>
-              <img class="close" v-show="!isDisabled" src="@/assets/image/people/close.png" alt="" @click.stop="handlePictureCardDelete('DX_00')">
+              <i
+                class="preview"
+                @click.stop="handlePictureCardPreview(dataForm.DX_00)"
+              ></i>
+              <img
+                class="close"
+                v-show="!isDisabled"
+                src="@/assets/image/people/close.png"
+                alt=""
+                @click.stop="handlePictureCardDelete('DX_00')"
+              />
               <div v-show="!isDisabled" class="bottomHandle">
-                <img class="reset" src="@/assets/image/people/reset.png" alt="">
+                <img
+                  class="reset"
+                  src="@/assets/image/people/reset.png"
+                  alt=""
+                />
                 <span class="title">点击重新上传</span>
               </div>
             </span>
           </el-upload>
-          <div class="avatar-uploader" v-else @click.stop="handlePictureCardPreview(dataForm.DX_00)">
-            <img v-if="dataForm.DX_00" :src="dataForm.DX_00" class="avatar"/>
+          <div
+            class="avatar-uploader"
+            v-else
+            @click.stop="handlePictureCardPreview(dataForm.DX_00)"
+          >
+            <img v-if="dataForm.DX_00" :src="dataForm.DX_00" class="avatar" />
           </div>
         </el-form-item>
       </div>
@@ -217,27 +317,43 @@
           >
             <img v-if="dataForm.LZ_01" :src="dataForm.LZ_01" class="avatar" />
             <div v-else class="upload-icon">
-              <img src="@/assets/image/people/camera.svg" alt="">
+              <img src="@/assets/image/people/camera.svg" alt="" />
               <div class="el-upload__text">上传资料</div>
             </div>
             <span class="slot" v-show="dataForm.LZ_01">
-              <i class="preview" @click.stop="handlePictureCardPreview(dataForm.LZ_01)"></i>
-              <img class="close" v-show="!isDisabled" src="@/assets/image/people/close.png" alt="" @click.stop="handlePictureCardDelete('LZ_01')">
+              <i
+                class="preview"
+                @click.stop="handlePictureCardPreview(dataForm.LZ_01)"
+              ></i>
+              <img
+                class="close"
+                v-show="!isDisabled"
+                src="@/assets/image/people/close.png"
+                alt=""
+                @click.stop="handlePictureCardDelete('LZ_01')"
+              />
               <div v-show="!isDisabled" class="bottomHandle">
-                <img class="reset" src="@/assets/image/people/reset.png" alt="">
+                <img
+                  class="reset"
+                  src="@/assets/image/people/reset.png"
+                  alt=""
+                />
                 <span class="title">点击重新上传</span>
               </div>
             </span>
           </el-upload>
-          <div class="avatar-uploader" v-else @click.stop="handlePictureCardPreview(dataForm.LZ_01)">
-            <img v-if="dataForm.LZ_01" :src="dataForm.LZ_01" class="avatar"/>
+          <div
+            class="avatar-uploader"
+            v-else
+            @click.stop="handlePictureCardPreview(dataForm.LZ_01)"
+          >
+            <img v-if="dataForm.LZ_01" :src="dataForm.LZ_01" class="avatar" />
           </div>
         </el-form-item>
       </div>
     </el-form>
 
-
-<!-- 
+    <!-- 
     <div class="imageLibraryItem">
       <el-row class="imageLibraryItemTitle">
         <label @click="pic1Control = !pic1Control"> 身份证照片 </label>
@@ -399,7 +515,12 @@
       </el-row>
     </div> -->
 
-    <el-image-viewer v-if="showViewer" :on-close="closeViewer" :z-index="9999" :url-list="[ProViewImg]" />
+    <el-image-viewer
+      v-if="showViewer"
+      :on-close="closeViewer"
+      :z-index="9999"
+      :url-list="[ProViewImg]"
+    />
   </div>
 </template>
 <script>
@@ -421,14 +542,14 @@ export default {
       },
     },
     //影像资料显示隐藏
-    dialogVisible:{
+    dialogVisible: {
       type: Boolean,
       default: () => {
         return false;
       },
     },
     //影像资料预览状态
-    carfrontImg:{
+    carfrontImg: {
       type: Boolean,
       default: () => {
         return false;
@@ -436,12 +557,12 @@ export default {
     },
     isDisabled: {
       type: Boolean,
-      default: false
-    }
+      default: false,
+    },
   },
   components: {
     "el-image-viewer": () =>
-      import("element-ui/packages/image/src/image-viewer")
+      import("element-ui/packages/image/src/image-viewer"),
   },
   data() {
     return {
@@ -455,41 +576,42 @@ export default {
       showViewer: false,
     };
   },
-  watch:{
-    dialogVisible(n,o){
-      this.pic1Control= o
-      this.pic3Control= o
-      this.pic4Control= o
-      this.pic5Control= o
-      this.pic6Control= o
-      this.pic7Control= o
-    }
-  },
-  created() {
+  watch: {
+    dialogVisible(n, o) {
+      this.pic1Control = o;
+      this.pic3Control = o;
+      this.pic4Control = o;
+      this.pic5Control = o;
+      this.pic6Control = o;
+      this.pic7Control = o;
+    },
   },
+  created() {},
   methods: {
     toItem(item) {
-      document.getElementById(item._props.name).scrollIntoView({ behavior: "smooth" });
+      document
+        .getElementById(item._props.name)
+        .scrollIntoView({ behavior: "smooth" });
     },
     // 删除
     handlePictureCardDelete(type) {
-      this.dataForm[type] = ''
+      this.dataForm[type] = "";
       //添加刪除图像集合中的数据
-      var img_index=-1;
+      var img_index = -1;
       this.imagesIdList.forEach((item, index) => {
-        if (item.type == type) {                    
-          img_index =index;                 
+        if (item.type == type) {
+          img_index = index;
         }
       });
-      if(img_index!=-1){
+      if (img_index != -1) {
         this.imagesIdList.splice(img_index, 1);
       }
     },
     //预览图片
     handlePictureCardPreview(img) {
-      if(!img){
-        this.$message.error('暂无照片')
-        return 
+      if (!img) {
+        this.$message.error("暂无照片");
+        return;
       }
       this.ProViewImg = img;
       this.showViewer = true;
@@ -501,7 +623,7 @@ export default {
     // 上传图片的方法Start
     beforeAvatarUpload(file) {
       if (this.isDisabled) {
-        return
+        return;
       }
       const isJPG = file.type === "image/jpeg" || file.type === "image/png";
       const isLt2M = file.size / 1024 / 1024 < 2;
@@ -516,7 +638,7 @@ export default {
     //上传影像
     httpRequest(options) {
       if (this.isDisabled) {
-        return
+        return;
       }
       let file = options.file;
       let filename = options.filename;
@@ -531,19 +653,19 @@ export default {
       const params = new FormData(); // 声明formData数据类型
       params.append("multipartFile", file);
       params.append("type", "personnel");
-      this.$api.letter.uploadFile(params).then(res => {
+      this.$api.letter.uploadFile(params).then((res) => {
         if (res.code == "200") {
-          if (this.imagesIdList.some(v => v.type == filename)) {
-            this.imagesIdList.map(val => {
+          if (this.imagesIdList.some((v) => v.type == filename)) {
+            this.imagesIdList.map((val) => {
               if (val.type == filename) {
                 val.imageId = res.data.id;
               }
-            })
+            });
           } else {
             this.imagesIdList.push({
               imageId: res.data.id,
               type: filename,
-            })
+            });
           }
         }
       });
@@ -590,12 +712,13 @@ export default {
   margin-top: 7px;
   color: #999;
 }
-.el-upload--picture-card:hover, .el-upload:focus{
+.el-upload--picture-card:hover,
+.el-upload:focus {
   color: #333;
 }
 .upload-icon:hover {
   /* border: 1px dashed #2D4D89; */
-  border-color: #D42426;
+  border-color: #d42426;
   /* color: #D42426; */
   transition: all ease 1s;
 }
@@ -650,7 +773,7 @@ export default {
   align-items: center;
 }
 
-.close{
+.close {
   width: 12px;
   height: 12px;
   position: absolute;
@@ -658,30 +781,30 @@ export default {
   right: 0;
   cursor: pointer;
 }
-.preview{
+.preview {
   width: 208px;
   height: calc(130px - 24px);
 }
-.bottomHandle{
+.bottomHandle {
   width: 208px;
   height: 24px;
   line-height: 20px;
-  background: url('~@/assets/image/people/bottomFrame.png') no-repeat;
+  background: url("~@/assets/image/people/bottomFrame.png") no-repeat;
   position: absolute;
   bottom: 0;
   left: -1px;
   cursor: pointer;
 }
-.reset{
+.reset {
   width: 10px;
-  height: 10px
+  height: 10px;
 }
-.bottomHandle>.title{
+.bottomHandle > .title {
   font-size: 12px;
   color: #fff;
   padding: 0;
 }
-.slot>i {
+.slot > i {
   /* margin: 10px; */
   /* color: #fff; */
   /* font-size: 25px; */
@@ -691,7 +814,7 @@ export default {
 .slot:hover {
   opacity: 1;
 }
-.title{
+.title {
   font-size: 16px;
   color: #333;
   padding-bottom: 10px;
@@ -699,7 +822,6 @@ export default {
 </style>
 
 <style lang="scss" scoped>
-
 </style>
 <style lang="scss" scoped>
 .contaner {
@@ -716,11 +838,11 @@ export default {
     padding: 0 !important;
     margin-right: 0 !important;
     max-height: 470px;
-    >>>.el-form-item{
+    >>> .el-form-item {
       margin-right: 20px;
       margin-bottom: 24px;
     }
-    >>>.el-form-item__content{
+    >>> .el-form-item__content {
       line-height: 0;
     }
   }

+ 6 - 18
src/components/UserDetail/index.vue

@@ -30,14 +30,13 @@
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item label="身份证有效日期" prop="identityTime">
+          <el-form-item label="身份证有效日期" prop="identityTimeArr">
             <el-date-picker
               :disabled="isDisabled"
-              v-model="formData.identityTime"
+              v-model="formData.identityTimeArr"
               type="daterange"
               range-separator="至"
               start-placeholder="开始日期"
-              @change="identityChangeTime"
               value-format="yyyy-MM-dd"
               end-placeholder="结束日期">
             </el-date-picker>
@@ -595,6 +594,7 @@ export default {
   mixins: [mixin],
   data() {
     return {
+      showMessage: false,
       recommenderOptions: [],
       dialogPassword: false, //密码是否显示明文
       isShow: true,
@@ -603,8 +603,8 @@ export default {
           { required: true, message: "请填写身份证号", trigger: "blur" },
           { validator: validateSfz },
         ],
-        identityTime: [
-          { required: true, message: "请填写身份证号有效日期", trigger: "blur" },
+        identityTimeArr: [
+          { required: true, message: "请填写身份证有效日期", trigger: "blur" },
         ],
         password: [{ required: true, message: "请输入密码", trigger: "blur" }],
       },
@@ -612,15 +612,6 @@ export default {
       regionalTree: []
     };
   },
-  watch: {
-    formData (val) {
-      if (typeof(this.formData.identityTime) === 'string') {
-        this.formData.identityTime = val.identityTime.split(',')
-      } else {
-        return
-      }
-    }
-  },
   created() {
     this.$api.user
       .selectfindByreferrerId({ deptId: '' })
@@ -632,16 +623,13 @@ export default {
   },
   methods: {
     submit() {
-      this.formData.identityTime = this.formData.identityTime.join(',')
+      this.formData.identityTime = this.formData.identityTimeArr ? this.formData.identityTimeArr.join(',') : []
       this.$refs.formData.validate((valid) => {
         let valids;
         valids = valid;
         this.$emit("valids", valids);
       });
     },
-    identityChangeTime (val) {
-      this.formData.identityTime = val
-    },
     isShowFun() {
       this.isShow = !this.isShow;
     },

+ 4 - 1
src/http/axios.js

@@ -21,7 +21,10 @@ export default function $axios(options) {
 		if((config.url.indexOf('/excel/v1/**')>=0) || (config.url.indexOf('excel/findOfflineExcel')>=0) ){
 			config.responseType='arraybuffer';
 		}
-        
+    // if(config.url.indexOf('/plt/agreement/updateFeeFile')>=0) {
+    //   config.headers['Content-type'] = 'multipart/form-data'
+    // }
+
         let token = Cookies.get('token')
         // 1. 请求开始的时候可以结合 vuex 开启全屏 loading 动画
         // console.log(store.state.loading)

+ 13 - 2
src/http/moudules/contract.js

@@ -17,6 +17,7 @@ export const getEsmInsCompany = (data) => {
         method: 'post',
         data
     })
+    10
 }
 //获取数据权限字典
 export async function getContractType(data) {
@@ -49,9 +50,9 @@ export const editorShow = (data) => {
 //下载附件
 export const downloadFile = (data) => {
     return axios({
-        url: '/upload/file/' + data,
+        url: '/upload/file' + data,
         method: 'get',
-        data
+        responseType: 'blob'
     })
 }
 //补充协议
@@ -89,3 +90,13 @@ export const updateFileStatus = (data) => {
     })
 }
 
+//报表列表
+export const supplierContractPage = (data) => {
+    return axios({
+        url: '/fnc/contract/supplierContractPage',
+        method: 'post',
+        data
+    })
+}
+
+

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

@@ -1440,3 +1440,21 @@ export const queryBySuborderDetails = (suborder) => {
      data
     })
    }
+
+// 验证签约状态
+export const signResult = (data) => {
+  return axios({
+    url: '/ttqf/queryPressing',
+    method: 'post',
+    data
+  })
+}
+
+// 获取第三方签约链接
+export const getSignSrc = (data) => {
+  return axios({
+    url: '/ttqf/signingAddress',
+    method: 'post',
+    data
+  })
+}

+ 52 - 9
src/views/AgreementManage/CarInsurance/AgreementEntry.vue

@@ -139,8 +139,8 @@
             @click="nonVehicleConfigButton1" />
         </div>
       </div>
-      <el-table :size="overSize" ref="table" :data="pageResult" height="580" border v-loading="loading"
-        @selection-change="agreementSelectionChange" @current-change="agreementCurrentChange" highlight-current-row stripe
+      <el-table :size="overSize" ref="multipleTable" :data="pageResult" height="580" border v-loading="loading"
+        @selection-change="agreementSelectionChange" @select="handleSelectChange" @current-change="agreementCurrentChange" highlight-current-row stripe
         :header-cell-style="{
           background: '#F2F7FC',
           fontWeight: '700',
@@ -247,10 +247,13 @@
           </template>
         </el-table-column>
       </el-table>
-      <el-pagination @size-change="handleSizeChange" background @current-change="handleCurrentChange"
-        :current-page="pageNum" :page-sizes="[20, 50, 100, 200]" :page-size="pageSize"
-        layout="total, sizes, prev, pager, next, jumper" :total="totalSize" style="float: right;margin-top: 5px; ">
-      </el-pagination>
+      <div class="paginationCustom">
+        <span class="selected">已选{{ selectedLength }}条 /</span>
+        <el-pagination @size-change="handleSizeChange" background @current-change="handleCurrentChange"
+                       :current-page="pageNum" :page-sizes="[20, 50, 100, 200]" :page-size="pageSize"
+                       layout="total, sizes, prev, pager, next, jumper" :total="totalSize" style="float: right;margin-top: 5px; ">
+        </el-pagination>
+      </div>
     </el-main>
     <!-- 新增协议的对话框 -->
     <el-dialog :title="dialogTitle" v-dialogDrag :visible.sync="agreementdialogVisible" width="60%" top="6vh"
@@ -2440,6 +2443,10 @@ export default {
       custodianIdData: '',
       custodianIdTree: '',
       custodianList: [],
+      selectedLength: 0, // 已选择的条数
+      selectedLengthList: [], // 保存每页已选择的的数据的条数,用与selectedLength计算
+      hasSelectedList: [], // 保存每页已选择的数据,用与回显
+      hadSelectedList: [], // 保存每页已选择的数据,用与回显(因切换分页时已选中的数据会清零,所以要单独再保存一次)
     };
   },
   computed: {
@@ -2625,6 +2632,18 @@ export default {
       });
       this.agreementSelectionList = list;
     },
+    handleSelectChange(rows) {
+      if(rows.length>0) {
+        this.$set(this.hasSelectedList, this.pageNum-1, rows)
+        this.hadSelectedList = [...this.hasSelectedList]
+        if(this.hadSelectedList.length> 0) {
+          this.selectedLength = 0
+          this.hadSelectedList.forEach(item => {
+            this.selectedLength += item.length
+          })
+        }
+      }
+    },
     agreementCurrentChange(val) {
       this.agreementActiveInfo = val;
     },
@@ -3875,6 +3894,20 @@ export default {
           this.pageNum = res.data.pageNum;
           this.pageSize = res.data.pageSize;
           this.totalSize = res.data.totalSize;
+          this.$nextTick(() => {
+            if(this.hadSelectedList[this.pageNum-1]) {
+              this.hadSelectedList[this.pageNum-1].forEach(item => {
+                let row = this.pageResult.find(sub => item.id === sub.id)
+                this.$refs.multipleTable.toggleRowSelection(row)
+              })
+              if(this.hadSelectedList.length> 0) {
+                this.selectedLength = 0
+                this.hadSelectedList.forEach(item => {
+                  this.selectedLength += item.length
+                })
+              }
+            }
+          })
         } else {
           this.$message.error(res.msg);
         }
@@ -4312,9 +4345,9 @@ export default {
     border-color: #2D4D89 !important;
   }
 
-  .el-button:hover {
-    color: #fff;
-  }
+  //.el-button:hover {
+  //  color: #fff;
+  //}
 
   .queryForm .el-form-item {
     width: 100%;
@@ -4427,4 +4460,14 @@ export default {
   padding: 4px 20px;
   font-weight: 400;
 }
+.paginationCustom{
+  display: flex;
+  justify-content: flex-end;
+  align-items: center;
+  .selected{
+    font-size: 13px;
+    margin-top: 5px;
+    color: #606266;
+  }
+}
 </style>

+ 3 - 3
src/views/AgreementManage/CarInsurance/AgreementUnderwritingRule.vue

@@ -13,9 +13,9 @@
           @click="underwritingRulesHistory">历史记录</el-button>
       </div>
     </div>
-    <kt-common-table :tableHeights="700" :SerialShow="false" :operationWidth="200" :showOperation="true"
+    <kt-common-table :tableHeights="700" :SerialShow="false" :operationWidth="200" :showOperation="true" :agreementUnderwritingRuleShow="true"
       :showBatchDelete="false" :showBatchSettled="false" :showBatchPrint="false" :data="underwritingRulesResult"
-      :columns="underwritingRulesColumns" @findPage="underwritingRulesFindPage" button2Name="编辑"  button2Type="text"  button3Type="text" :button2style="{ color: '#2D4D89' }"
+      :columns="underwritingRulesColumns" @findPage="underwritingRulesFindPage" button2Name="编辑"  button2Type="text"  button3Type="text" :button2style="{ color: '#2D4D89' }" :tableList="underwritingRulesResult.content"
       permsButton2="agreement:input:underwritingRules" permsButton3="agreement:input:underwritingRules"
       button2Background="#E6A23C" @handleButton2="underwritingRulesUpdate" button2Icon="" button3Name="删除"
       button3Background="#F56C6C" @handleButton3="underwritingRulesDelete" button3Icon="">
@@ -175,7 +175,7 @@ export default {
         { prop: "ruleDescription", label: "规则描述", minWidth: 160 },
         { prop: "desc", label: "规则因子描述", minWidth: 660 },
       ],
-      underwritingRulesResult: [], //承保规则集合
+      underwritingRulesResult: {}, //承保规则集合
       underwritingRulesHistoryCostFindForm: {},//规则历史记录检索数据
       insuranceCompanyId: "",
       underwritingRulesForm: {

+ 82 - 2
src/views/AgreementManage/CarInsurance/ProductCostExamine.vue

@@ -260,6 +260,48 @@
       <Product-Cost-Form v-if="productCostFactorDialogVisible" :form="dynamicFormArray" :operator="operatorlist"
         :disabled="true" over-size="small" @cancelForm="cancel"></Product-Cost-Form>
     </el-dialog>
+    <!--    -->
+    <el-dialog
+      title="承保规则"
+      :visible.sync="agreementListShow"
+      width="50%">
+      <el-table
+        :data="underwritingRulesResult"
+        style="width: 100%">
+        <el-table-column
+          prop="validInd"
+          label="是否启用"
+          width="180">
+          <template slot-scope="scope">
+            <span class="disused" :class="{'used': scope.row.validInd == 1}">{{ scope.row.validInd == 1? '启用':'禁用' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="rulesStartDate"
+          label="规则起期"
+          width="180">
+        </el-table-column>
+        <el-table-column
+          prop="rulesEndDate"
+          label="规则止期"
+          width="180">
+        </el-table-column>
+        <el-table-column
+          prop="ruleDescription"
+          label="规则描述"
+          width="180">
+        </el-table-column>
+        <el-table-column
+          prop="desc"
+          label="规则因子描述"
+          width="180">
+        </el-table-column>
+      </el-table>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="agreementListShow = false">关闭</el-button>
+      </span>
+    </el-dialog>
+
   </div>
 </template>
 <!-- 行为区域 -->
@@ -510,6 +552,8 @@ export default {
       batchSizeList: [],
       isBatch: false,
       allAgreementList: [],
+      agreementListShow: false,
+      underwritingRulesResult: [],
     };
   },
   // 生命周期函数
@@ -700,14 +744,13 @@ export default {
     agreementIdFormatter(row, column) {
       let allAgreementItem = this.allAgreementList.find((val) => val.id == row.agreementId)
       if(allAgreementItem) {
-        return allAgreementItem.agreementName;
+        return <a onClick={ this.handleAgreement.bind(null, row) } style={{color: '#409eff', cursor: 'pointer'}}>{ allAgreementItem.agreementName }</a>;
       }
     },
     downloadRender(row) {
       return <a onClick={ this.handleDownloadFile.bind(null, row) } style={{color: '#409eff', cursor: 'pointer'}}>{ row.feeFileName }</a>
     },
     handleDownloadFile(row) {
-      console.log('数据', row)
       let url = process.env.BASE_URL  + row.feeFileUrl.substring(1,row.feeFileUrl.length); // 3.创建一个临时的url指向blob对象
       let link = document.createElement("a");
       link.target = '_blank'
@@ -716,6 +759,19 @@ export default {
       document.body.appendChild(link)
       link.click();
       link.remove();
+    },
+    handleAgreement(row) {
+      let params = {
+        agreementId: row.agreementId,
+        pageNum: 1,
+        pageSize: 20
+      }
+      this.$api.insCompany
+        .getUndwrtRulesQuery(params)
+        .then((res) => {
+          this.underwritingRulesResult = res.content.filter(item => item.validInd == 1);
+          this.agreementListShow = true
+        });
     }
   },
   // 计算属性
@@ -745,6 +801,18 @@ export default {
   padding: 2px;
   font-size: 12px;
 }
+.disused{
+  background: #A6A6A6;
+  borderRadius: 4px;
+  padding: 4px 10px;
+  color: #fff;
+}
+.used{
+  background: linear-gradient( 180deg, #66CDBB 0%, #33A08D 100%);
+  borderRadius: 4px;
+  padding: 4px 10px;
+  color: #fff;
+}
 
 /deep/ {
   .el-button--warning {
@@ -767,5 +835,17 @@ export default {
   .el-link.el-link--default{
     color: #409eff;
   }
+
+  //.el-button--primary:hover {
+  //  color: #fff;
+  //  background-color: var(--themeColor);
+  //  border-color: var(--themeColor);
+  //}
+  //.el-button--danger:focus, .el-button--danger:hover{
+  //  background: #F56C6C;
+  //}
+  //.el-button:hover, .el-button:focus{
+  //  color: #ffffff;
+  //}
 }
 </style>

+ 152 - 0
src/views/Core/KtCommonTable.vue

@@ -24,7 +24,18 @@
       }"
       style="width: 100%"
       :row-class-name="tableRowClassName"
+      @expand-change="handleExpandChange"
     >
+
+      <el-table-column
+        type="expand"
+        v-if="agreementUnderwritingRuleShow"
+      >
+        <div class="tab-panestyle">
+          <Product-Cost-Form ref="ProductRef" v-if="underwritingRulesAddVehicleFactorVisible" :form="dynamicFormArray" :operator="operatorlist" over-size="small" :underwritingRulesForm="underwritingRulesForm"></Product-Cost-Form>
+        </div>
+      </el-table-column>
+
       <el-table-column
         type="expand"
         v-if="showSysUserAccountCardList"
@@ -414,6 +425,7 @@
           </el-button>
         </template>
       </el-table-column>
+
     </el-table>
     <!--分页栏-->
     <!-- 底部分页 -->
@@ -488,12 +500,19 @@
 <script>
 import KtButton from "@/views/Core/KtButton";
 import BigNumber from "bignumber.js";
+import ProductCostForm from '@/components/Form/ProductCostForm.vue';//表单组件
 export default {
   name: "KtCommonTable",
   components: {
     KtButton,
+    ProductCostForm
   },
   props: {
+    // 承保规则expend内容
+    agreementUnderwritingRuleShow: {
+      type: Boolean,
+      default: false
+    },
     select: {
       type: Boolean,
       default: false,
@@ -687,6 +706,12 @@ export default {
       type: Boolean,
       default: true,
     },
+    tableList: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    },
     showSummaryFieldList: Array, //自定义合计列配置
     keyName: String, //主键字段名
     columns: Array, // 表格列配置
@@ -764,9 +789,136 @@ export default {
         pageSize: 20,
       },
       taskPool: false,
+
+      underwritingRulesAddVehicleFactorVisible: false,
+      operator: { "pageNum": 1, "pageSize": 10, "columnFilters": { "label": { "name": "label", "value": "agreement_operator" } } },
+      dynamicFormArray: [],
+      operatorlist: [],
+      underwritingRulesForm: {
+        //承保因子表单项
+        agreementId: "", //协议id
+        ruleDescription: "", //规则描述
+        rulesStartDate: "",//规则起期
+        rulesEndDate: "",//规则止期
+        validInd: "1", //是否有效
+        rulesAttrList: [],//规则属性
+        carClassList: [],
+        areanumberplateList: [],
+        licenseAreaList: [],
+      },
     };
   },
+  created() {
+    this.licenseQuery();
+    this.getDicType('trafficManagementVehicleType')   // 车辆列表
+  },
+  watch: {
+    tableList(val, old) {
+      if(val.length> 0) {
+        let obj = val[0]
+        console.log(11111, obj)
+        this.underwritingRulesHistoryDetails(obj)
+      }
+    }
+  },
   methods: {
+    // 点击展开行
+    handleExpandChange(row,rows) {
+      if(rows.length>0) {
+        this.underwritingRulesHistoryDetails(row)
+      }
+    },
+    getDicType(type) {
+      this.$api.insCompany.dicType(type).then((res) => {
+        if (res.code == 200) {
+          if (type == 'trafficManagementVehicleType') {
+            let data = [];
+            res.data.ddList.map(val => {
+              data.push({
+                code: val.dictValue,
+                name: val.dictTag,
+              })
+              return val;
+            })
+            this.carClassList = data;
+          } else {
+            this[type + "options"] = res.data.ddList;
+          }
+        }
+      });
+    },
+    licenseQuery() {
+      this.$api.insCompany.getAreaLicense("14").then((res) => {
+        let data = [];
+        res.data.map(val => {
+          data.push({
+            code: val.areaNumber,
+            name: val.license,
+          })
+          return val;
+        })
+        this.areanumberplateList = data;
+      });
+      this.$api.insCompany.getAreaLicense("0").then((res) => {
+        let data = [];
+        res.data.map(val => {
+          data.push({
+            code: val.areaNumber,
+            name: val.license,
+          })
+          return val;
+        })
+        this.licenseAreaList = data;
+      });
+    },
+    // 承保规则历史记录详情
+    underwritingRulesHistoryDetails(row) {
+      let that = this
+      that.$api.dict.findPage(that.operator).then(res => {
+        that.operatorlist = res.data.content;
+      })
+      that.$api.insCompany.getUndwrtRulesFactorQuery(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;
+          })
+          that.dynamicFormArray = obj.costsAttrLinks;
+          that.underwritingRulesForm = {
+            id: obj.id,
+            agreementId: obj.agreementId, //协议id
+            ruleDescription: obj.ruleDescription, //规则描述
+            validInd: obj.validInd, //是否有效
+            rulesStartDate: obj.rulesStartDate,
+            rulesEndDate: obj.rulesEndDate,
+            rulesAttrList: [],//规则属性
+          };
+          that.underwritingRulesAddVehicleFactorVisible = true
+        } else {
+          that.$message({
+            type: 'error',
+            message: res.msg,
+          });
+        }
+      });
+    },
     tableRowClassName(row, rowIndex) {
       // if (!!row.fieldName24 && row.fieldName24.indexOf("未") >= 0) {
       //   return "warningRow";

+ 173 - 99
src/views/Core/KtTable.vue

@@ -1,163 +1,237 @@
 <template>
   <div>
     <!--表格栏-->
-    <el-table :data="data.content" :highlight-current-row="highlightCurrentRow" @selection-change="selectionChange"
-          @current-change="handleCurrentChange" v-loading="loading" :element-loading-text="$t('action.loading')" :border="border" :stripe="stripe"
-          :show-overflow-tooltip="showOverflowTooltip" :max-height="maxHeight" :height="height" :size="size" :align="align" style="width:100%;" >
-      <el-table-column type="selection" width="40" v-if="showBatchDelete & showOperation"></el-table-column>
-      <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
+      :data="data.content"
+      :highlight-current-row="highlightCurrentRow"
+      @selection-change="selectionChange"
+      @current-change="handleCurrentChange"
+      v-loading="loading"
+      :element-loading-text="$t('action.loading')"
+      :border="border"
+      :stripe="stripe"
+      :show-overflow-tooltip="showOverflowTooltip"
+      :max-height="maxHeight"
+      :height="height"
+      :size="size"
+      :align="align"
+      style="width: 100%"
+    >
+      <el-table-column
+        type="selection"
+        width="40"
+        v-if="showBatchDelete & showOperation"
+      ></el-table-column>
+      <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" v-if="showOperation" header-align="center" align="center">
+      <el-table-column
+        :label="$t('action.operation')"
+        width="185"
+        fixed="right"
+        v-if="showOperation"
+        header-align="center"
+        align="center"
+      >
         <template slot-scope="scope">
-          <kt-button icon="fa fa-edit" :label="$t('action.edit')" :perms="permsEdit" :size="size" @click="handleEdit(scope.$index, scope.row)" />
-          <kt-button icon="fa fa-trash" :label="$t('action.delete')" :perms="permsDelete" :size="size" type="danger" @click="handleDelete(scope.$index, scope.row)" />
+          <kt-button
+            icon="fa fa-edit"
+            :label="$t('action.edit')"
+            :perms="permsEdit"
+            :size="size"
+            @click="handleEdit(scope.$index, 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 class="toolbar" style="padding:10px;">
-      <kt-button :label="$t('action.batchDelete')" :perms="permsDelete" :size="size" type="danger" @click="handleBatchDelete()"
-        :disabled="this.selections.length===0" style="float:left;" v-if="showBatchDelete & showOperation"/>
-      <el-pagination layout="total, prev, pager, next, jumper" @current-change="refreshPageRequest"
-        :current-page="pageRequest.pageNum" :page-size="pageRequest.pageSize" :total="data.totalSize" style="float:right;">
+    <div class="toolbar" style="padding: 10px">
+      <kt-button
+        :label="$t('action.batchDelete')"
+        :perms="permsDelete"
+        :size="size"
+        type="danger"
+        @click="handleBatchDelete()"
+        :disabled="this.selections.length === 0"
+        style="float: left"
+        v-if="showBatchDelete & showOperation"
+      />
+      <el-pagination
+        layout="total, prev, pager, next, jumper"
+        @current-change="refreshPageRequest"
+        :current-page="pageRequest.pageNum"
+        :page-size="pageRequest.pageSize"
+        :total="data.totalSize"
+        style="float: right"
+      >
       </el-pagination>
     </div>
   </div>
 </template>
 <script>
-import KtButton from "@/views/Core/KtButton"
+import KtButton from "@/views/Core/KtButton";
 export default {
-  name: 'KtTable',
-  components:{
-			KtButton
-	},
+  name: "KtTable",
+  components: {
+    KtButton,
+  },
   props: {
     columns: Array, // 表格列配置
     data: Object, // 表格分页数据
-    permsEdit: String,  // 编辑权限标识
-    permsDelete: String,  // 删除权限标识
-    size: { // 尺寸样式
+    permsEdit: String, // 编辑权限标识
+    permsDelete: String, // 删除权限标识
+    size: {
+      // 尺寸样式
       type: String,
-      default: 'mini'
+      default: "mini",
     },
-    align: {  // 文本对齐方式
+    align: {
+      // 文本对齐方式
       type: String,
-      default: 'left'
+      default: "left",
     },
-    maxHeight: {  // 表格最大高度
+    maxHeight: {
+      // 表格最大高度
       type: Number,
-      default: 420
+      default: 420,
     },
-    height: {  // 表格最大高度
+    height: {
+      // 表格最大高度
       type: Number,
-      default: 250
+      default: 250,
     },
-    showOperation: {  // 是否显示操作组件
+    showOperation: {
+      // 是否显示操作组件
       type: Boolean,
-      default: true
+      default: true,
     },
-    border: {  // 是否显示边框
+    border: {
+      // 是否显示边框
       type: Boolean,
-      default: true
+      default: true,
     },
-    stripe: {  // 是否显示斑马线
+    stripe: {
+      // 是否显示斑马线
       type: Boolean,
-      default: true
+      default: true,
     },
-    highlightCurrentRow: {  // // 是否高亮当前行
+    highlightCurrentRow: {
+      // // 是否高亮当前行
       type: Boolean,
-      default: true
+      default: true,
     },
-    showOverflowTooltip: {  // 是否单行显示
+    showOverflowTooltip: {
+      // 是否单行显示
       type: Boolean,
-      default: true
+      default: true,
     },
-    showBatchDelete: {  // 是否显示操作组件
+    showBatchDelete: {
+      // 是否显示操作组件
       type: Boolean,
-      default: true
-    }
+      default: true,
+    },
   },
   data() {
     return {
       // 分页信息
-			pageRequest: {
-				pageNum: 1,
-        pageSize: 10
+      pageRequest: {
+        pageNum: 1,
+        pageSize: 10,
       },
-      loading: false,  // 加载标识
-      selections: []  // 列表选中列
-    }
+      loading: false, // 加载标识
+      selections: [], // 列表选中列
+    };
   },
   methods: {
     // 分页查询
     findPage: function () {
-        this.loading = true
-        let callback = res => {
-          this.loading = false
-        }
-      this.$emit('findPage', {pageRequest:this.pageRequest, callback:callback})
+      this.loading = true;
+      let callback = (res) => {
+        this.loading = false;
+      };
+      this.$emit("findPage", {
+        pageRequest: this.pageRequest,
+        callback: callback,
+      });
     },
     // 选择切换
     selectionChange: function (selections) {
-      this.selections = selections
-      this.$emit('selectionChange', {selections:selections})
+      this.selections = selections;
+      this.$emit("selectionChange", { selections: selections });
     },
     // 选择切换
     handleCurrentChange: function (val) {
-      this.$emit('handleCurrentChange', {val:val})
+      this.$emit("handleCurrentChange", { val: val });
     },
     // 换页刷新
-		refreshPageRequest: function (pageNum) {
-      this.pageRequest.pageNum = pageNum
-      this.findPage()
+    refreshPageRequest: function (pageNum) {
+      this.pageRequest.pageNum = pageNum;
+      this.findPage();
     },
     // 编辑
-		handleEdit: function (index, row) {
-      this.$emit('handleEdit', {index:index, row:row})
-		},
+    handleEdit: function (index, row) {
+      this.$emit("handleEdit", { index: index, row: row });
+    },
     // 删除
-		handleDelete: function (index, row) {
-			this.delete(row.id)
-		},
-		// 批量删除
-		handleBatchDelete: function () {
-			let ids = this.selections.map(item => item.id).toString()
-			this.delete(ids)
-		},
-		// 删除操作
-		delete: function (ids) {
-			this.$confirm('确认删除选中记录吗?', '提示', {
-				type: 'warning'
-			}).then(() => {
-				let params = []
-				let idArray = (ids+'').split(',')
-				for(var i=0; i<idArray.length; i++) {
-					params.push({'id':idArray[i]})
-        }
-        this.loading = true
-        let callback = res => {
-          if(res.code == 200) {
-            this.$message({message: '删除成功', type: 'success'})
-            this.findPage()
-          } else {
-            this.$message({message: '操作失败, ' + res.msg, type: 'error'})
+    handleDelete: function (index, row) {
+      this.delete(row.id);
+    },
+    // 批量删除
+    handleBatchDelete: function () {
+      let ids = this.selections.map((item) => item.id).toString();
+      this.delete(ids);
+    },
+    // 删除操作
+    delete: function (ids) {
+      this.$confirm("确认删除选中记录吗?", "提示", {
+        type: "warning",
+      })
+        .then(() => {
+          let params = [];
+          let idArray = (ids + "").split(",");
+          for (var i = 0; i < idArray.length; i++) {
+            params.push({ id: idArray[i] });
           }
-          this.loading = false
-        }
-        this.$emit('handleDelete', {params:params, callback:callback})
-			}).catch(() => {
-			})
-		}
+          this.loading = true;
+          let callback = (res) => {
+            if (res.code == 200) {
+              this.$message({ message: "删除成功", type: "success" });
+              this.findPage();
+            } else {
+              this.$message({ message: "操作失败, " + res.msg, type: "error" });
+            }
+            this.loading = false;
+          };
+          this.$emit("handleDelete", { params: params, callback: callback });
+        })
+        .catch(() => {});
+    },
   },
   mounted() {
-    this.refreshPageRequest(1)
-  }
-}
+    this.refreshPageRequest(1);
+  },
+};
 </script>
 
 <style scoped>
-
 </style>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 626 - 86
src/views/FinancialManagement/ContractManagement/ContractManagement.vue


+ 423 - 0
src/views/FinancialManagement/ContractManagement/ContractStatement.vue

@@ -0,0 +1,423 @@
+<template>
+  <div class="contract">
+    <el-row>
+      <el-form
+        :inline="true"
+        :model="formInline"
+        class="demo-form-inline"
+        label-width="130px"
+      >
+        <el-col :span="6">
+          <el-form-item label="合同信息">
+            <el-input
+              v-model="formInline.contractCode"
+              placeholder="请输入合同信息"
+              size="small"
+              style="width: 220px"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="6">
+          <el-form-item label="供应商名称">
+            <el-cascader
+              :options="esmInsCompanyList"
+              :props="{
+                checkStrictly: true,
+                multiple: true,
+                value: 'id',
+                label: 'name',
+                children: 'children',
+              }"
+              clearable
+              size="small"
+              v-model="formInline.supplierIdList"
+              filterable=""
+            ></el-cascader>
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="6">
+          <el-form-item label="合同类型">
+            <el-select
+              size="small"
+              v-model="formInline.contractType"
+              style="width: 220px"
+              clearable
+              filterable
+            >
+              <el-option
+                v-for="item in contractTypeList"
+                :key="item.id"
+                :value="item.value"
+                :label="item.label"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="6">
+          <el-form-item label="   ">
+            <kt-button type="primary" size="small" @click="getList" label="查询"
+              >查询</kt-button
+            >
+            <!-- <el-button type="primary" size="small" @click="addContract"
+              >新增</el-button
+            > -->
+          </el-form-item>
+        </el-col>
+      </el-form>
+    </el-row>
+    <el-table
+      size="small"
+      :data="tableData"
+      style="width: 100%"
+      border
+      :header-cell-style="{
+        background: '#F2F7FC',
+        fontWeight: '700',
+        color: '#606266',
+      }"
+      highlight-current-row
+    >
+      <el-table-column prop="contractCode" label="合同编码" width="180">
+      </el-table-column>
+      <el-table-column prop="contractName" label="合同名称" width="180">
+      </el-table-column>
+      <el-table-column prop="contractType" label="合同类型">
+        <template slot-scope="scope">
+          <div>
+            {{
+              contractTypeList
+                .map((v, i) => {
+                  // return scope.row.contractType == v.id ? v.label : "";
+                  if (scope.row.contractType == v.value) {
+                    return v.label;
+                  }
+                })
+                .join("")
+            }}
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column prop="externalCompaniesName" label="甲方">
+      </el-table-column>
+      <el-table-column prop="externType" label="甲方账户类型">
+      </el-table-column>
+      <el-table-column prop="internalCompanyName" label="乙方">
+      </el-table-column>
+      <el-table-column prop="internalType" label="已方账户类型">
+      </el-table-column>
+      <el-table-column prop="namesimple" label="供应商名称">
+        <!-- <template slot-scope="scope">
+          <div v-for="(item, index) in scope.row.namesimpleList" :key="index">
+            {{ index < 3 ? item : "" }}
+          </div>
+
+          <el-tooltip
+            class="item"
+            effect="dark"
+            :content="
+              scope.row.namesimpleList
+                .map((v, i) => {
+                  return v;
+                })
+                .join(',')
+            "
+            placement="top"
+          >
+            <span v-show="scope.row.namesimpleList.length > 3">...</span>
+          </el-tooltip>
+        </template> -->
+      </el-table-column>
+
+      <el-table-column prop="effectiveDate" label="生效日期"> </el-table-column>
+      <el-table-column prop="expiringDate" label="失效日期"> </el-table-column>
+      <el-table-column prop="isOpenContract" label="是否为开口合同">
+        <template slot-scope="scope">
+          <el-tag
+            :type="scope.row.isOpenContract == '0' ? 'success' : 'danger'"
+            effect="dark"
+          >
+            {{ scope.row.isOpenContract == "0" ? "是" : "否" }}
+          </el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column prop="shouldPostponed" label="是否顺延">
+        <template slot-scope="scope">
+          <el-tag
+            :type="scope.row.shouldPostponed == '0' ? 'success' : 'danger'"
+            effect="dark"
+          >
+            {{ scope.row.shouldPostponed == "0" ? "是" : "否" }}
+          </el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="shouldPostponedEffectiveDate"
+        label="顺延后失效日期"
+        width="180"
+      >
+      </el-table-column>
+      <el-table-column prop="operation" label="操作" width="180">
+        <template slot-scope="scope">
+          <kt-button
+            size="small"
+            type="primary"
+            @click="watch(scope.row)"
+            label="查看附件"
+            perms="fnc:contract:reportFile"
+          ></kt-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :current-page="pageInfo.pageNum"
+      :page-sizes="[10, 20, 30, 50]"
+      :page-size="pageInfo.pageSize"
+      layout=" sizes, prev, pager, next, jumper"
+      :total="pageInfo.total"
+    >
+    </el-pagination>
+    <el-dialog title="附件" :visible.sync="fileDialog" width="50%">
+      <div class="block">
+        <el-carousel trigger="click" height="1000px" :autoplay="false">
+          <el-carousel-item
+            v-for="item in showFileList"
+            :key="item.url"
+            style="height: 1400px; overflow-y: auto"
+          >
+            <div
+              style="
+                display: flex;
+                justify-content: center;
+                margin-bottom: 10px;
+              "
+            >
+              <kt-button
+                type="primary"
+                icon="el-icon-download"
+                size="small"
+                label="下载"
+                perms="fnc:contract:reportDownloadFile"
+                @click="downLoadFile(item)"
+                >下载</kt-button
+              >
+            </div>
+            <vue-office-docx
+              v-show="item.url != null ? item.url.includes('.docx') : false"
+              :src="base + item.url"
+            />
+            <vue-office-pdf
+              v-show="item.url != null ? item.url.includes('.pdf') : false"
+              :src="base + item.url"
+            />
+          </el-carousel-item>
+        </el-carousel>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+  
+  <script>
+import treeSelect from "../../../components/TreeSelect/treeSelectCheck.vue";
+import moment from "moment"; //引入js日期处理类库
+import VueOfficeDocx from "@vue-office/docx";
+import VueOfficePdf from "@vue-office/pdf";
+import "@vue-office/docx/lib/index.css";
+import { set } from "shelljs";
+import KtButton from "@/views/Core/KtButton";
+export default {
+  components: {
+    treeSelect,
+    VueOfficeDocx,
+    VueOfficePdf,
+    KtButton,
+  },
+  data() {
+    return {
+      formInline: {
+        contractCode: "",
+
+        contractStatus: "",
+        contractType: "",
+        externalCompaniesId: "",
+        internalCompanyId: "",
+        supplierIdList: [],
+      },
+      base: process.env.BASE_URL,
+
+      tableData: [],
+      fileDialog: false,
+
+      esmInsCompanyList: [],
+
+      pageInfo: {
+        pageNum: 1,
+        pageSize: 10,
+        total: 0,
+      },
+      contractTypeList: [],
+      showFileList: [],
+    };
+  },
+  computed: {},
+  created() {},
+  mounted() {
+    this.getList();
+    this.getEsmInsCompany();
+    this.getContractType();
+    this.getInvAccountList();
+  },
+  methods: {
+    downLoadFile(row) {
+      let name = row.fileName;
+      fetch(`${process.env.BASE_URL}${row.url}`)
+        .then((response) => response.blob())
+        .then((blob) => {
+          this.saveAs(blob, name);
+        })
+        .catch((error) => {});
+    },
+    saveAs(blob, filename) {
+      var link = document.createElement("a");
+      link.href = window.URL.createObjectURL(blob);
+      link.target = "_ blank";
+      link.download = filename;
+      link.click();
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+
+      this.pageInfo.pageSize = val;
+      this.getList();
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.pageInfo.pageNum = val;
+      this.getList();
+    },
+    //查看附件
+    watch(row) {
+      this.fileDialog = true;
+      this.$api.contract
+        .editorShow({
+          id: row.id,
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.showFileList =
+              res.data.contractFileEntityList != null
+                ? [...res.data.contractFileEntityList]
+                : [];
+            this.form = {
+              contractCode: res.data.contractCode,
+              contractType: res.data.contractType,
+              // contractName: res.data.contractName,
+              externalCompaniesId: res.data.externalCompaniesId,
+              internalCompanyId: res.data.internalCompanyId,
+              supplierIdList:
+                res.data.supplierIdList != null ? res.data.supplierIdList : [],
+              // isOpenContract: res.data.isOpenContract,
+              // effectiveDate: res.data.effectiveDate,
+              // expiringDate: res.data.expiringDate,
+              shouldPostponed: res.data.shouldPostponed,
+              shouldPostponedEffectiveDate:
+                res.data.shouldPostponedEffectiveDate,
+              externType: res.data.externType,
+              internalType: res.data.internalType,
+              id: res.data.id,
+
+              filePathIdList:
+                res.data.contractFileEntityList != null
+                  ? res.data.contractFileEntityList.map((v, i) => {
+                      return { name: v.fileName, url: v.url };
+                    })
+                  : [],
+            };
+            this.fileIdList =
+              res.data.contractFileEntityList != null
+                ? res.data.contractFileEntityList.map((v, i) => {
+                    return v.fileId;
+                  })
+                : [];
+          }
+        });
+    },
+    //获取供应商树形
+    getEsmInsCompany() {
+      this.$api.contract.getEsmInsCompany({}).then((res) => {
+        if (res.code === 200) {
+          this.esmInsCompanyList = [...res.data];
+        }
+      });
+    },
+    //获取合同列表
+    getList() {
+      this.$api.contract
+        .supplierContractPage({
+          ...this.pageInfo,
+          ...this.formInline,
+        })
+        .then((res) => {
+          // console.log(res);
+          if (res.code === 200) {
+            this.tableData = [...res.data.records];
+            this.pageInfo.total = res.data.total;
+          }
+        });
+    },
+
+    //获取合同类型
+    getContractType() {
+      this.contractTypeList = [];
+      this.$api.contract.getContractType("contract_type").then((res) => {
+        if (res.code === 200) {
+          res.data.map((v, i) => {
+            if (v.value == "1" || v.value == "2") {
+              this.contractTypeList.push(v);
+            }
+          });
+        }
+      });
+    },
+
+    //获取甲乙方列表
+    getInvAccountList() {
+      this.$api.contract.getInvAccountList({}).then((res) => {
+        if (res.code === 200) {
+          this.accountList = [...res.data];
+          const obj = {};
+          res.data.forEach((v, i) => {
+            obj[v.accountId] = v.outerFlag;
+          });
+          this.accountObj = { ...obj };
+        }
+      });
+    },
+  },
+};
+</script>
+  <style lang='less' scoped>
+.contract {
+  // display: ;
+  padding: 14px;
+  box-sizing: border-box;
+}
+.supplier {
+  display: flex;
+  /deep/ .el-form-item__content {
+    flex: 1;
+  }
+}
+/deep/.el-tabs__header .is-top {
+  height: 100px;
+  .el-tabs__nav-scroll {
+    height: 100px;
+    .el-tabs__nav .is-top > div {
+      height: 100px;
+    }
+  }
+}
+</style>

+ 60 - 27
src/views/Letter/Wallet/FundsWallet.vue

@@ -90,7 +90,7 @@ font-weight: 500;">{{ findMyAmountData.withdrawingAmount }}</span> </span>
         <span>¥ <span style="font-size: 36px;font-family: DIN, DIN;
 font-weight: 500;">{{ findMyAmountData.withdrawableAmount }}</span> </span>
       </div>
-      <el-button class="withdrawal-style" type="primary" @click="instantWithdrawal">提现</el-button>
+      <el-button class="withdrawal-style" type="primary" :loading="withdrawLoading" @click="instantWithdrawal">提现</el-button>
     </div>
     <div class="header flex  a-c">
       <div class="flex a-c advance-payment" @click="toBillDetails('autoInsuranceDetails')">
@@ -247,6 +247,7 @@ export default {
       is_out: false,
       is_post: false,
       findMyAmountData: {},
+      withdrawLoading: false  //提现按钮loading
     }
   },
   watch: {
@@ -341,35 +342,67 @@ export default {
       });
     },
     instantWithdrawal() {
-      this.extract = null
-      this.$api.letter.getUserBankList({
-        auditStatus: '1',
-        delFlag: '0'
-      }).then((res) => {
-        if (res.code == '200' && res.data.length) {
-          this.bankList.map(val => {
-            res.data.map(ele => {
-              if (val.bankName == ele.bankAccount) {
-                ele.logo = val.logo;
-                return ele;
+      let userInfo = JSON.parse(localStorage.getItem("user_data"))
+      let that = this
+      that.withdrawLoading = true
+      if(userInfo) {
+        that.$api.letter.signResult({
+          userId: userInfo.id
+        }).then(res => {
+          that.withdrawLoading = false
+          if(res.data.bizCode === '2') {
+            if(res.data.url) {
+              that.$message({
+                type: 'warning',
+                message: res.data.msg,
+              });
+              window.open(res.data.url)
+            }
+          } else if(res.data.bizCode === '1') {
+            that.$api.letter.getSignSrc({
+              userId: userInfo.id
+            }).then(res => {
+              if(res.data.url) {
+                that.$message({
+                  type: 'warning',
+                  message: res.data.msg,
+                });
+                window.open(res.data.url)
               }
             })
-          })
-          this.cardPackList = res.data;
-          let bankinfo = res.data.find(val => val.isDefault == 1)
-          if (bankinfo) {
-            this.bankCardInfo = bankinfo;
-          } else {
-            this.bankCardInfo = res.data[0]
+          } else if(res.data.bizCode === '3' || res.data.bizCode === '0') {
+            that.extract = null
+            that.$api.letter.getUserBankList({
+              auditStatus: '1',
+              delFlag: '0'
+            }).then((res) => {
+              if (res.code == '200' && res.data.length) {
+                this.bankList.map(val => {
+                  res.data.map(ele => {
+                    if (val.bankName == ele.bankAccount) {
+                      ele.logo = val.logo;
+                      return ele;
+                    }
+                  })
+                })
+                this.cardPackList = res.data;
+                let bankinfo = res.data.find(val => val.isDefault == 1)
+                if (bankinfo) {
+                  this.bankCardInfo = bankinfo;
+                } else {
+                  this.bankCardInfo = res.data[0]
+                }
+                this.withdrawalVisible = true;
+              } else {
+                that.$message({
+                  type: 'error',
+                  message: "暂无审核通过的银行卡,不可提现",
+                });
+              }
+            });
           }
-          this.withdrawalVisible = true;
-        } else {
-          this.$message({
-            type: 'error',
-            message: "暂无审核通过的银行卡,不可提现",
-          });
-        }
-      });
+        })
+      }
     },
     toBillDetails(type) {
       this.$router.push({

+ 9 - 10
src/views/OrderMsg/ReadPdf.vue

@@ -69,7 +69,7 @@
         });
       },
       logoFormatter(row) {
-        return <img src={row.logo} alt="logo" style={{ width: "50px", height: "50px" }} />;
+        return <img  src={row.logo} alt="logo" style={{ width: "50px", height: "50px" }} />;
       },
     }
   }
@@ -81,32 +81,32 @@
       font-weight: bold;
       border-bottom: 1px solid #D7DBE7;
     }
-  
+
     .el-dialog__body {
       padding: 0;
     }
-  
+
     .el-tabs__item.is-active {
       color: #fff;
       background: #2D4D89;
     }
-  
+
     .el-tabs--card>.el-tabs__header .el-tabs__nav,
     .el-tabs--card>.el-tabs__header,
     .el-tabs--card>.el-tabs__header .el-tabs__item {
       border: none;
       margin: 0;
     }
-  
+
     .el-tabs--card>.el-tabs__header .el-tabs__nav {
       padding-left: 20px;
     }
-  
+
     .el-dialog__footer {
       padding: 10px 20px 10px 10px;
     }
   }
-  
+
   .tab-panecent {
     background: #fff;
     border-radius: 4px;
@@ -115,11 +115,10 @@
     max-height: 600px;
     overflow-y: auto;
   }
-  
+
   .tab-panestyle {
     padding: 20px;
     background: #F2F2F2;
   }
   </style>
-  
-  
+

+ 2 - 0
src/views/PeopleManage/Agent/AgentExamine.vue

@@ -767,6 +767,7 @@ export default {
                             this.dataForm[item.type] = item.path;
             });
           }
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           this.formDataDetail = res.data.sysUserInfo
             ? res.data.sysUserInfo
@@ -789,6 +790,7 @@ export default {
       this.$api.user.getUserDatail(params.row.userId).then((res) => {
         if (res.code == 200) {
           res.data.sysUser.status += "";
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
         this.$api.user
           .selectfindByreferrerId({ deptId: res.data.sysUser.deptId })

+ 1 - 0
src/views/PeopleManage/Agent/AgentManage.vue

@@ -963,6 +963,7 @@ export default {
           });
         }
         res.data.sysUser.status += "";
+        res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
         this.formData = res.data.sysUser;
         if (this.formData.status == 0) {
           this.$set(this.formDataRules, "logoutTime", [

+ 31 - 19
src/views/PeopleManage/Agent/SetupManager.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="setupManager">
         <el-main ref="elMain" style="padding: 0px">
-            <Split :gutterSize="2" style="height: calc(100vh - 120px)">
+            <Split :gutterSize="2" style="height: calc(100vh - 160px)">
                 <SplitArea :size="leftSplitWidth" :minSize="240">
                     <div class="container_left">
                         <div class="search">
@@ -19,14 +19,14 @@
                                 <span>{{ data.name }}</span>
                                 <span class="totalNum">{{ data.totalNum }}</span>
                             </div>
-                            
+
                         </el-tree>
                     </div>
                 </SplitArea>
                 <SplitArea :size="rightSplitWidth">
                     <div class="container_right">
                         <el-row >
-                            <el-form ref="queryFormRef" :inline="false" :model="queryFrom" label-position="left" label-width="60px">                      
+                            <el-form ref="queryFormRef" :inline="false" :model="queryFrom" label-position="left" label-width="60px">
                                 <el-col :lg="6"  :md="8">
                                     <el-form-item label="工号">
                                         <el-input size="small" clearable placeholder="请输入工号" v-model="queryFrom.userId"></el-input>
@@ -38,8 +38,8 @@
                                     </el-form-item>
                                 </el-col>
                                 <el-col :lg="6" :md="8">
-                                    <el-form-item label="手机号">
-                                        <el-input size="small" clearable placeholder="请输入手机号" v-model="queryFrom.mobile"></el-input>
+                                    <el-form-item label="联系电话" label-width="70px">
+                                        <el-input size="small" clearable placeholder="请输入联系电话" v-model="queryFrom.mobile"></el-input>
                                     </el-form-item>
                                 </el-col>
                                 <!-- <el-col :span="6">
@@ -53,7 +53,7 @@
                                         </el-select>
                                     </el-form-item>
                                 </el-col> -->
-                                <el-col :lg="6" :md="8">
+                                <el-col :lg="6" :md="8" style="padding-left: 20px;">
                                     <el-form-item label>
                                         <el-button  size="small"
                                                     type="primary"
@@ -89,34 +89,36 @@
                                             @selectionChange="selectionChange">
                         </kt-common-table>
                     </div>
-                    
+
                 </SplitArea>
             </Split>
         </el-main>
-        <el-dialog  :title="settingDialog.title"  :visible.sync="settingDialog.visible"  
-                    :close-on-press-escape="false"  :modal="true"
-                    :show-close="false" 
+        <el-dialog  :title="settingDialog.title"  :visible.sync="settingDialog.visible"
+                    :close-on-press-escape="false"
+                    @close="resetForm"
+                    :show-close="false"
+                    style="overflow: hidden;"
                     custom-class="settingDialog"
                     v-dialogDrag
                     top="1vh">
             <el-row >
-                <el-form ref="queryFormRef" :inline="false" :model="settingDialog.queryFrom" label-position="left" label-width="60px">                      
-                    <el-col :lg="6" :md="8">
+                <el-form ref="queryFormRef" :inline="false" :model="settingDialog.queryFrom" label-position="left" label-width="60px">
+                    <el-col :span="6" >
                         <el-form-item label="工号">
                             <el-input size="small" clearable placeholder="请输入工号" v-model="settingDialog.queryFrom.userId"></el-input>
                         </el-form-item>
                     </el-col>
-                    <el-col :lg="6" :md="8">
+                    <el-col :span="6" >
                         <el-form-item label="姓名">
                             <el-input size="small" clearable placeholder="请输入姓名" v-model="settingDialog.queryFrom.name"></el-input>
                         </el-form-item>
                     </el-col>
-                    <el-col :lg="6" :md="8">
-                        <el-form-item label="手机号">
-                            <el-input size="small" clearable placeholder="请输入手机号" v-model="settingDialog.queryFrom.mobile"></el-input>
+                    <el-col :span="6" >
+                        <el-form-item label="联系电话" label-width="70px">
+                            <el-input size="small" clearable placeholder="请输入联系电话" v-model="settingDialog.queryFrom.mobile"></el-input>
                         </el-form-item>
                     </el-col>
-                    <el-col :lg="6" :md="8">
+                    <el-col :span="6" >
                         <el-form-item label>
                             <el-button  size="small"
                                         type="primary"
@@ -211,6 +213,7 @@ export default {
             selectionDialog: [],
             filterText: '',
             leaderName: '',
+            selectedName:'',
             settingDialog: {
                 title: '设置管理人',
                 visible: false,
@@ -312,6 +315,7 @@ export default {
         },
         handleNodeClick(node){  //点击左侧树节点,查询右侧列表
             this.currentKey = node.id;
+            this.selectedName = node.name
             this.pageData = {
                 pageNum: 1,
                 pageSize: 20,
@@ -377,6 +381,9 @@ export default {
         closeDialog(){  //关闭设置管理人弹窗
             this.settingDialog.visible = false;
         },
+        resetForm(){
+          this.resetDialog();
+        },
         async queryDialogList(data){
             // 获取分页数据
             if (data && data.pageRequest) {
@@ -435,7 +442,7 @@ export default {
             })
             let data = {
                 leaderId: this.currentKey,
-                leaderName: this.leaderName,
+                leaderName: this.selectedName,
                 userIds: arr
             }
             this.$api.user.setManage(data).then(res =>{
@@ -518,6 +525,7 @@ export default {
     }
     .container_right{
         padding: 20px;
+      margin-bottom: 20px;
         .el-form-item{
             display: flex;
         }
@@ -595,5 +603,9 @@ export default {
             }
         }
     }
+  .split::-webkit-scrollbar {
+    width: 0px !important; /* 设置滚动条宽度 */
+  }
+
 }
-</style>
+</style>

+ 1 - 1
src/views/PeopleManage/InsuranceCompany/InsuranceCompany.vue

@@ -998,8 +998,8 @@ export default {
         //     this.leaderOptions = res.data;
         //   });
         res.data.sysUser.status += "";
+        res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
         this.formData = res.data.sysUser;
-
         if (this.formData.status == 0) {
           this.$set(this.formDataRules, "logoutTime", [
             { required: true, message: "请选择日期", trigger: "change" },

+ 2 - 0
src/views/PeopleManage/InsuranceCompany/InsuranceCompanyExamine.vue

@@ -732,6 +732,7 @@ export default {
               this.dataForm[item.type] = item.path;
             });
           }
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           this.formDataDetail = res.data.sysUserInfo
             ? res.data.sysUserInfo
@@ -761,6 +762,7 @@ export default {
               this.dataForm[item.type] = item.path;
             });
           }
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           this.formDataDetail = res.data.sysUserInfo
             ? res.data.sysUserInfo

+ 2 - 0
src/views/PeopleManage/Player/PlayerExamineTeam.vue

@@ -763,6 +763,7 @@ export default {
             });
           }
           this.formData = res.data.sysUser;
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formDataDetail = res.data.sysUserInfo
             ? res.data.sysUserInfo
             : {};
@@ -783,6 +784,7 @@ export default {
       this.$api.user.getUserDatail(params.row.userId).then((res) => {
         if (res.code == 200) {
           res.data.sysUser.status += "";
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           if (res.data.esmUserImageVo.length > 0) {
             res.data.esmUserImageVo.forEach((item) => {

+ 1 - 0
src/views/PeopleManage/Player/PlayerManageteam.vue

@@ -932,6 +932,7 @@ export default {
             };
           });
         }
+        res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
         this.formData = res.data.sysUser;
         this.dialogTitle = "编辑渠道负责人";
         this.formDataDetail = res.data.sysUserInfo ? res.data.sysUserInfo : {};

+ 19 - 9
src/views/PeopleManage/Player/SetChannelManager.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="setupManager">
         <el-main ref="elMain" style="padding: 0px">
-            <Split :gutterSize="2" style="height: calc(100vh - 120px)">
+            <Split :gutterSize="2" style="height: calc(100vh - 160px)">
                 <SplitArea :size="leftSplitWidth" :minSize="240">
                     <div class="container_left">
                         <div class="search">
@@ -26,7 +26,7 @@
                 <SplitArea :size="rightSplitWidth">
                     <div class="container_right">
                         <el-row >
-                            <el-form ref="queryFormRef" :inline="false" :model="queryFrom" label-position="left" label-width="60px">
+                            <el-form ref="queryFormRef" :inline="false" :model="queryFrom" label-position="left" label-width="50px">
                                 <el-col :span="6">
                                     <el-form-item label="工号">
                                         <el-input size="small" clearable placeholder="请输入工号" v-model="queryFrom.userId"></el-input>
@@ -38,8 +38,8 @@
                                     </el-form-item>
                                 </el-col>
                                 <el-col :span="6">
-                                    <el-form-item label="手机号">
-                                        <el-input size="small" clearable placeholder="请输入手机号" v-model="queryFrom.mobile"></el-input>
+                                    <el-form-item label="联系电话" label-width="70px">
+                                        <el-input size="small" clearable placeholder="请输入联系电话" v-model="queryFrom.mobile"></el-input>
                                     </el-form-item>
                                 </el-col>
                                 <!-- <el-col :span="6">
@@ -53,7 +53,7 @@
                                         </el-select>
                                     </el-form-item>
                                 </el-col> -->
-                                <el-col :span="6">
+                                <el-col :span="6" style="padding-left: 20px;">
                                     <el-form-item label>
                                         <el-button  size="small"
                                                     type="primary"
@@ -97,6 +97,8 @@
         <el-dialog  :title="settingDialog.title"  :visible.sync="settingDialog.visible"
                     :close-on-press-escape="false"  :modal="true"
                     :show-close="false"
+                    @close="resetForm"
+                    style="overflow: hidden;"
                     custom-class="settingDialog"
                     v-dialogDrag
                     top="1vh">
@@ -112,9 +114,9 @@
                             <el-input size="small" clearable placeholder="请输入姓名" v-model="settingDialog.queryFrom.name"></el-input>
                         </el-form-item>
                     </el-col>
-                    <el-col :span="6">
-                        <el-form-item label="手机号">
-                            <el-input size="small" clearable placeholder="请输入手机号" v-model="settingDialog.queryFrom.mobile"></el-input>
+                    <el-col :span="6" >
+                        <el-form-item label="联系电话" label-width="70px">
+                            <el-input size="small" clearable placeholder="请输入联系电话" v-model="settingDialog.queryFrom.mobile"></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="6">
@@ -380,6 +382,9 @@ export default {
         closeDialog(){  //关闭设置管理人弹窗
             this.settingDialog.visible = false;
         },
+      resetForm(){
+        this.resetDialog();
+      },
         async queryDialogList(data){
             // 获取分页数据
             if (data && data.pageRequest) {
@@ -448,6 +453,7 @@ export default {
                         type: "success",
                     });
                     this.reset();
+                    this.searchLeaderFun();
                     this.settingDialog.visible = false;
                 }else{
                     this.$message.error(res.msg);
@@ -466,7 +472,6 @@ export default {
                 leaderName: this.leaderName,
                 userIds: arr
             }
-            console.log(data);
             this.$api.user.cancleManage(data).then(res =>{
                 if(res.code == 200){
                     this.$message({
@@ -474,6 +479,7 @@ export default {
                         type: "success",
                     });
                     this.reset();
+                    this.searchLeaderFun();
                     this.selectionDialog.visible = false;
                 }else{
                     this.$message.error(res.msg);
@@ -518,6 +524,7 @@ export default {
     }
     .container_right{
         padding: 20px;
+      margin-bottom: 20px;
         .el-form-item{
             display: flex;
         }
@@ -595,5 +602,8 @@ export default {
             }
         }
     }
+  .split::-webkit-scrollbar {
+    width: 0px !important; /* 设置滚动条宽度 */
+  }
 }
 </style>

+ 2 - 0
src/views/PeopleManage/Sales/SalesExamine.vue

@@ -790,6 +790,7 @@ export default {
       };
       this.$api.user.getUserDatail(params.row.userId).then((res) => {
         if (res.code == 200) {
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           res.data.sysUser.status += "";
           if (res.data.esmUserImageVo.length > 0) {
@@ -818,6 +819,7 @@ export default {
       this.$api.user.getUserDatail(params.row.userId).then((res) => {
         if (res.code == 200) {
           res.data.sysUser.status += "";
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           if (res.data.esmUserImageVo.length > 0) {
             res.data.esmUserImageVo.forEach((item) => {

+ 2 - 0
src/views/PeopleManage/Sales/SalesExamineGroup.vue

@@ -786,6 +786,7 @@ export default {
       };
       this.$api.user.getUserDatail(params.row.userId).then((res) => {
         if (res.code == 200) {
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           res.data.sysUser.status += "";
           if (res.data.esmUserImageVo.length > 0) {
@@ -814,6 +815,7 @@ export default {
       this.$api.user.getUserDatail(params.row.userId).then((res) => {
         if (res.code == 200) {
           res.data.sysUser.status += "";
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           if (res.data.esmUserImageVo.length > 0) {
             res.data.esmUserImageVo.forEach((item) => {

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

@@ -1018,6 +1018,7 @@ export default {
         //   .then((res) => {
         //     this.leaderOptions = res.data;
         //   });
+        res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
         res.data.sysUser.status += "";
         this.formData = res.data.sysUser;
         if (this.formData.status == 0) {

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

@@ -997,6 +997,7 @@ export default {
         //     this.leaderOptions = res.data;
         //   });
         res.data.sysUser.status += "";
+        res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
         this.formData = res.data.sysUser;
         if (this.formData.status == 0) {
           this.$set(this.formDataRules, "logoutTime", [

+ 2 - 0
src/views/PeopleManage/Staff/StaffExamine.vue

@@ -760,6 +760,7 @@ export default {
               this.dataForm[item.type] = item.path;
             });
           }
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           this.formDataDetail = res.data.sysUserInfo
             ? res.data.sysUserInfo
@@ -789,6 +790,7 @@ export default {
               this.dataForm[item.type] = item.path;
             });
           }
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           this.formDataDetail = res.data.sysUserInfo
             ? res.data.sysUserInfo

+ 1 - 0
src/views/PeopleManage/Staff/StaffManage.vue

@@ -946,6 +946,7 @@ export default {
         //   this.leaderOptions = res.data;
         // });
         res.data.sysUser.status += "";
+        res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
         this.formData = res.data.sysUser;
         if (this.formData.status == 0) {
           this.$set(this.formDataRules, "logoutTime", [

+ 2 - 0
src/views/PeopleManage/TeamLeader/TeamLeaderExamine.vue

@@ -731,6 +731,7 @@ export default {
               this.dataForm[item.type] = item.path;
             });
           }
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           this.formDataDetail = res.data.sysUserInfo
             ? res.data.sysUserInfo
@@ -760,6 +761,7 @@ export default {
               this.dataForm[item.type] = item.path;
             });
           }
+          res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
           this.formData = res.data.sysUser;
           this.formDataDetail = res.data.sysUserInfo
             ? res.data.sysUserInfo

+ 1 - 0
src/views/PeopleManage/TeamLeader/TeamLeaderManage.vue

@@ -949,6 +949,7 @@ export default {
         //     this.leaderOptions = res.data;
         //   });
         res.data.sysUser.status += "";
+        res.data.sysUser.identityTimeArr = res.data.sysUser.identityTime ? res.data.sysUser.identityTime.split(',') : []
         this.formData = res.data.sysUser;
         if (this.formData.status == 0) {
           this.$set(this.formDataRules, "logoutTime", [

+ 23 - 23
src/views/Task/daikeComponents/KtLetter1.vue

@@ -5927,27 +5927,27 @@ export default {
                 ];
                 if (res.data) {
                   res.data = res.data.filter(obj => {
-                  obj.agreement = obj.agreement.filter(agreementObj => {
-                    // 险种配置为空,则过滤掉该协议
-                    if (agreementObj.productsCodes == null) {
-                      return true;
-                    } else {
-                      // 检查是否包含 A 的特殊处理
-                      if (combinedArray.includes('A') && !agreementObj.productsCodes.includes(
-                          'A')) {
-                        return false;
+                    obj.agreement = obj.agreement.filter(agreementObj => {
+                      // 险种配置为空,则过滤掉该协议
+                      if (agreementObj.productsCodes == null) {
+                        return true;
+                      } else {
+                        // 检查是否包含 A 的特殊处理
+                        if (combinedArray.includes('A') && !agreementObj.productsCodes.includes(
+                            'A')) {
+                          return false;
+                        }
+                        return agreementObj.productsCodes.some(item => combinedArray.includes(
+                          item));
                       }
-                      return agreementObj.productsCodes.some(item => combinedArray.includes(
-                        item));
+                    });
+                    return obj.agreement.length > 0; // 返回true保留,返回false移除该保险公司
+                  });
+                  res.data.forEach((e) => {
+                    if (e.agreement) {
+                      e.agreement.forEach((el) => (el.disabled = false));
                     }
                   });
-                  return obj.agreement.length > 0; // 返回true保留,返回false移除该保险公司
-                });
-                res.data.forEach((e) => {
-                  if (e.agreement) {
-                    e.agreement.forEach((el) => (el.disabled = false));
-                  }
-                });
                 }
                 this.totalCompanyList = res.data;
                 this.showLoading = false
@@ -7696,8 +7696,6 @@ export default {
         isExternal: "1",
         vehicleAndVesselTax: this.vehicleAndVesselTaxForm,
       };
-      console.log(data,this.productId, this.totalCompanyList[index].id, '1111111111111111111111')
-      console.log(id, index)
       // this.typeDialogIndex = index
       // this.zijinengageListData = [];
       // this.contributingLoading = true;
@@ -7708,6 +7706,8 @@ export default {
         companyId: this.totalCompanyList[index].id,
         quoteInfoVo: data
       }).then((res) => {
+        console.log('11111111.');
+      console.log(res);
         this.contributingLoading = false;
         if (res.data) {
           // res.data.forEach((val) => {
@@ -7725,8 +7725,8 @@ export default {
       this.contributingLoading = true;
       this.contributingState = true;
       this.hbsubmitdialogVisible = true;
-      // this.getClauseData(id, index)
-      // return
+      this.getClauseData(id, index)
+      return
       this.$api.letter
         .guorenqueryClauseData({ agreementId: id })
         .then((res) => {
@@ -10879,7 +10879,7 @@ export default {
                   }
                 });
                 break;
-              
+
               case "华泰财险":
                 let HtApiImage = "";
                 HtApiImage =

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio