Browse Source

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

liyizheng 1 year ago
parent
commit
1379c12524

+ 4 - 4
config/dev.env.js

@@ -5,7 +5,7 @@ const prodEnv = require('./prod.env')
 module.exports = merge(prodEnv, {
   NODE_ENV: '"development"',
   ENV_CONFIG: '"dev"',
-  BASE_URL: '"https://test.baoxianzhanggui.com/web-api"',//测试服务器
+  // BASE_URL: '"https://test.baoxianzhanggui.com/web-api"',//测试服务器
   // BASE_URL:'"https://sxzgkj.baoxianzhanggui.com/web-api"',//正式服务器
   // BASE_URL:'"https://sxzgkj.baoxianzhanggui.com/web-api"'//正式服务器
   // BASE_URL: '"http://192.168.0.115:8080/"', //凯森
@@ -17,13 +17,13 @@ module.exports = merge(prodEnv, {
   // BASE_URL: '"http://192.168.1.101:8080/"',
   // BASE_URL: '"http://192.168.0.250:8080/"',//
   //  BASE_URL: '"http:///192.168.0.103:8080/"',//霍续亮
-  // BASE_URL: '"http://192.168.0.52:8080/"',//贺礼霄
+  BASE_URL: '"http://192.168.0.52:8080/"',//贺礼霄
   // BASE_URL: '"http:///192.168.0.55:8080/"',// 董鑫
   CONSOLE_BASE_URL: '"http://localhost:8080/"', //控制台测试服务器
   // CONSOLE_BASE_URL: '"https://test.baoxianzhanggui.com/console-api"' //控制台正式服务器
   APP_BASE_URL: '"https://pre.baoxianzhanggui.com/web-api"',    // app打包上传地址
-  // SOCKET_Url: '"ws://192.168.0.52:8080/"',
-  SOCKET_Url: '"wss://sxzgkj.baoxianzhanggui.com/web-api/"',
+  SOCKET_Url: '"ws://192.168.0.52:8080/"',
+  // SOCKET_Url: '"wss://sxzgkj.baoxianzhanggui.com/web-api/"',
 
 
 })

+ 14 - 11
index.html

@@ -1,13 +1,16 @@
 <!DOCTYPE html>
 <html>
-  <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width,initial-scale=1.0">
-    <script src="//at.alicdn.com/t/c/font_4439599_dea56hl0hs4.js"></script>
-    <title>管理平台</title>
-  </head>
-  <body style="margin: 0;">
-    <div id="app"></div>
-    <!-- built files will be auto injected -->
-  </body>
-</html>
+
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width,initial-scale=1.0">
+  <script src="//at.alicdn.com/t/c/font_4439599_nyqfqqzask.js"></script>
+  <title>管理平台</title>
+</head>
+
+<body style="margin: 0;">
+  <div id="app"></div>
+  <!-- built files will be auto injected -->
+</body>
+
+</html>

+ 31 - 11
package-lock.json

@@ -93,17 +93,17 @@
       "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg=="
     },
     "@babel/runtime": {
-      "version": "7.15.3",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz",
-      "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==",
+      "version": "7.26.0",
+      "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.0.tgz",
+      "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
       "requires": {
-        "regenerator-runtime": "^0.13.4"
+        "regenerator-runtime": "^0.14.0"
       },
       "dependencies": {
         "regenerator-runtime": {
-          "version": "0.13.9",
-          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
-          "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
+          "version": "0.14.1",
+          "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+          "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
         }
       }
     },
@@ -182,7 +182,7 @@
     },
     "@riophae/vue-treeselect": {
       "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/@riophae/vue-treeselect/-/vue-treeselect-0.4.0.tgz",
+      "resolved": "https://registry.npmmirror.com/@riophae/vue-treeselect/-/vue-treeselect-0.4.0.tgz",
       "integrity": "sha512-J4atYmBqXQmiPFK/0B5sXKjtnGc21mBJEiyKIDZwk0Q9XuynVFX6IJ4EpaLmUgL5Tve7HAS7wkiGGSti6Uaxcg==",
       "requires": {
         "@babel/runtime": "^7.3.1",
@@ -203,6 +203,16 @@
         "vue": "^2.5.17"
       }
     },
+    "@vue-office/docx": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmmirror.com/@vue-office/docx/-/docx-1.6.2.tgz",
+      "integrity": "sha512-OHAoUHeY8nHjhWvwDhlPx+/rmRkxmqLpvPgtfCEOZ4H1c1LCdJ6eDbdV3152ww8dcdZ7fgGQu3fmSSaI7JwdpQ=="
+    },
+    "@vue-office/pdf": {
+      "version": "2.0.8",
+      "resolved": "https://registry.npmmirror.com/@vue-office/pdf/-/pdf-2.0.8.tgz",
+      "integrity": "sha512-birBaYIlZM4I7wLqf4pqiytM1Zf0xAZagE7zdsraGuCl0P4eRrb2HMzkDoOLghyeNT6xc7DL8o76cPNnMPdd1w=="
+    },
     "@vue/compiler-sfc": {
       "version": "2.7.16",
       "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
@@ -237,6 +247,11 @@
         }
       }
     },
+    "@vue/composition-api": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmmirror.com/@vue/composition-api/-/composition-api-1.7.2.tgz",
+      "integrity": "sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw=="
+    },
     "@ztree/ztree_v3": {
       "version": "3.5.46",
       "resolved": "https://registry.npmjs.org/@ztree/ztree_v3/-/ztree_v3-3.5.46.tgz",
@@ -3062,7 +3077,7 @@
     },
     "decimal.js": {
       "version": "10.4.3",
-      "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+      "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz",
       "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
     },
     "decode-uri-component": {
@@ -5090,8 +5105,8 @@
     },
     "fuzzysearch": {
       "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/fuzzysearch/-/fuzzysearch-1.0.3.tgz",
-      "integrity": "sha1-3/yA9tawQiPyImqnndGUIxCW0Ag="
+      "resolved": "https://registry.npmmirror.com/fuzzysearch/-/fuzzysearch-1.0.3.tgz",
+      "integrity": "sha512-s+kNWQuI3mo9OALw0HJ6YGmMbLqEufCh2nX/zzV5CrICQ/y4AwPxM+6TIiF9ItFCHXFCyM/BfCCmN57NTIJuPg=="
     },
     "gauge": {
       "version": "2.7.4",
@@ -13719,6 +13734,11 @@
         "clipboard": "^2.0.0"
       }
     },
+    "vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w=="
+    },
     "vue-dialog-drag": {
       "version": "0.1.29",
       "resolved": "https://registry.npmjs.org/vue-dialog-drag/-/vue-dialog-drag-0.1.29.tgz",

+ 4 - 0
package.json

@@ -16,6 +16,9 @@
     "@amap/amap-jsapi-loader": "^1.0.1",
     "@riophae/vue-treeselect": "^0.4.0",
     "@tinymce/tinymce-vue": "^2.0.1",
+    "@vue-office/docx": "^1.6.2",
+    "@vue-office/pdf": "^2.0.8",
+    "@vue/composition-api": "^1.7.2",
     "@ztree/ztree_v3": "^3.5.46",
     "axios": "^0.18.1",
     "base-64": "^1.0.0",
@@ -39,6 +42,7 @@
     "v-viewer": "^1.5.1",
     "vue": "^2.5.2",
     "vue-clipboard2": "^0.3.3",
+    "vue-demi": "^0.14.6",
     "vue-dialog-drag": "^0.1.29",
     "vue-directive-window": "^0.8.0",
     "vue-draggable-resizable-gorkys": "^2.4.8",

+ 210 - 0
src/components/TreeSelect/treeSelectCheck.vue

@@ -0,0 +1,210 @@
+<template>
+  <el-select
+    v-model="valueTitle"
+    @clear="clearHandle"
+    clearable
+    multiple
+    size="small"
+    style="width: 220px"
+  >
+    <el-input
+      class="selectInput"
+      :placeholder="placeholder"
+      v-model="filterText"
+    >
+    </el-input>
+
+    <el-option :value="valueTitle" :label="valueTitle" class="options">
+      <el-tree
+        id="tree-option"
+        ref="selectTree"
+        :accordion="accordion"
+        :data="options"
+        :props="props"
+        :node-key="props.value"
+        :default-expanded-keys="defaultExpandedKey"
+        :filter-node-method="filterNode"
+        show-checkbox
+        @check-change="handleNodeClick"
+      >
+      </el-tree>
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+export default {
+  name: "el-tree-select",
+  props: {
+    /* 配置项 */
+    props: {
+      type: Object,
+      default: () => {
+        return {
+          value: "id", // ID字段名
+          label: "name", // 显示名称
+          children: "children", // 子级字段名
+        };
+      },
+    },
+    /* 选项列表数据(树形结构的对象数组) */
+    options: {
+      type: Array,
+      default: () => {
+        return [];
+      },
+    },
+    /* 初始值 */
+    value: {
+      type: Number,
+      default: () => {
+        return null;
+      },
+    },
+    /* 可清空选项 */
+    clearable: {
+      type: Boolean,
+      default: () => {
+        return true;
+      },
+    },
+    /* 自动收起 */
+    accordion: {
+      type: Boolean,
+      default: () => {
+        return false;
+      },
+    },
+    placeholder: {
+      type: String,
+      default: () => {
+        return "检索关键字";
+      },
+    },
+  },
+  data() {
+    return {
+      filterText: "",
+      valueId: this.value, // 初始值
+      valueTitle: [],
+      defaultExpandedKey: [],
+      tree: [],
+      treeIds: [],
+      ids: [],
+    };
+  },
+  mounted() {
+    this.initHandle();
+  },
+  methods: {
+    // 初始化值
+    initHandle() {
+      if (this.valueId) {
+        this.valueTitle = this.$refs.selectTree.getNode(this.valueId).data[
+          this.props.label
+        ]; // 初始化显示
+        this.$refs.selectTree.setCurrentKey(this.valueId); // 设置默认选中
+        this.defaultExpandedKey = [this.valueId]; // 设置默认展开
+      }
+      this.initScroll();
+    },
+    // 初始化滚动条
+    initScroll() {
+      this.$nextTick(() => {
+        let scrollWrap = document.querySelectorAll(
+          ".el-scrollbar .el-select-dropdown__wrap"
+        )[0];
+        let scrollBar = document.querySelectorAll(
+          ".el-scrollbar .el-scrollbar__bar"
+        );
+        scrollWrap.style.cssText =
+          "margin: 0px; max-height: none; overflow: hidden;";
+        scrollBar.forEach((ele) => (ele.style.width = 0));
+      });
+    },
+    // 切换选项
+    handleNodeClick(node, check) {
+      console.log(node, check);
+      if (check) {
+        this.tree.push(node[this.props.label]);
+        this.ids.push(node[this.props.value]);
+        this.valueTitle = Array.from(new Set(this.tree));
+        this.treeIds = Array.from(new Set(this.ids));
+      } else {
+      }
+      this.$emit("getValue", this.treeIds);
+      // this.defaultExpandedKey = [];
+    },
+    // 清除选中
+    clearHandle() {
+      this.valueTitle = [];
+      this.valueId = null;
+      this.defaultExpandedKey = [];
+      this.clearSelected();
+      this.$emit("getValue", null);
+    },
+    /* 清空选中样式 */
+    clearSelected() {
+      let allNode = document.querySelectorAll("#tree-option .el-tree-node");
+      allNode.forEach((element) => element.classList.remove("is-current"));
+    },
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.name.indexOf(value) !== -1;
+    },
+  },
+  watch: {
+    value() {
+      this.valueId = this.value;
+      this.initHandle();
+    },
+    filterText(val) {
+      this.$refs.selectTree.filter(val);
+    },
+  },
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+.el-scrollbar .el-scrollbar__view .el-select-dropdown__item {
+  height: auto;
+  max-height: 274px;
+  padding: 0;
+  overflow: hidden;
+  overflow-y: auto;
+}
+.el-select-dropdown__item.selected {
+  font-weight: normal;
+}
+ul li >>> .el-tree .el-tree-node__content {
+  height: auto;
+  padding: 0 20px;
+}
+.el-tree-node__label {
+  font-weight: normal;
+}
+.el-tree >>> .is-current .el-tree-node__label {
+  color: #409eff;
+  font-weight: 700;
+}
+.el-tree >>> .is-current .el-tree-node__children .el-tree-node__label {
+  color: #606266;
+  font-weight: normal;
+}
+.selectInput {
+  padding: 0 5px;
+  box-sizing: border-box;
+}
+
+/* 开发禁用 */
+/* .el-tree-node:focus>.el-tree-node__content{
+    background-color:transparent;
+    background-color: #f5f7fa;
+    color: #c0c4cc;
+    cursor: not-allowed;
+  }
+  .el-tree-node__content:hover{
+    background-color: #f5f7fa;
+  } */
+</style>

+ 3 - 1
src/http/api.js

@@ -59,6 +59,7 @@ import * as readPdf from './moudules/readPdf.js'
 
 //协议组 
 import * as agreement from "./moudules/agreement.js"
+import * as contract from "./moudules/contract.js"
 // 默认全部导出
 export default {
     login,
@@ -102,5 +103,6 @@ export default {
     sys,
     bindUser,
     readPdf,
-    agreement
+    agreement,
+    contract
 }

+ 2 - 2
src/http/axios.js

@@ -90,7 +90,7 @@ export default function $axios(options) {
           Cookies.remove('user')
           router.push('/login')
         }
-        
+
         // switch (response.data.code) {
         //   case 400:
         //     Message({
@@ -242,4 +242,4 @@ export default function $axios(options) {
       reject(error)
     })
   })
-}
+}

+ 102 - 0
src/http/moudules/contract.js

@@ -0,0 +1,102 @@
+
+import axios from '../axios'
+
+// 获取甲乙方列表
+export const getInvAccountList = (data) => {
+    return axios({
+        url: '/invAccount/getInvAccountList',
+        method: 'post',
+        data
+    })
+}
+
+// 获取供应商树形
+export const getEsmInsCompany = (data) => {
+    return axios({
+        url: '/esmInsCompany/findTree',
+        method: 'post',
+        data
+    })
+    10
+}
+//获取数据权限字典
+export async function getContractType(data) {
+    return axios({ url: "/dict/findByLable?lable=" + data, method: 'get', })
+}
+//新增/修改合同
+export const constractSave = (data) => {
+    return axios({
+        url: '/fnc/contract/saveAndUpdate',
+        method: 'post',
+        data
+    })
+}
+//合同列表
+export const constractQueryPage = (data) => {
+    return axios({
+        url: '/fnc/contract/queryPage',
+        method: 'post',
+        data
+    })
+}
+//编辑回显
+export const editorShow = (data) => {
+    return axios({
+        url: '/fnc/contract/' + data.id,
+        method: 'get',
+        data
+    })
+}
+//下载附件
+export const downloadFile = (data) => {
+    return axios({
+        url: '/upload/file/' + data,
+        method: 'get',
+        data
+    })
+}
+//补充协议
+export const supplementContract = (data) => {
+    return axios({
+        url: '/fnc/contract/copyContract',
+        method: 'post',
+        data
+    })
+}
+
+//失效状态
+export const checkCopyContract = (data) => {
+    return axios({
+        url: '/fnc/contract/checkCopyContract',
+        method: 'post',
+        data
+    })
+}
+
+//关联合同列表
+export const copyContractList = (data) => {
+    return axios({
+        url: '/fnc/contract/copyContractList',
+        method: 'post',
+        data
+    })
+}
+//批量设置失效
+export const updateFileStatus = (data) => {
+    return axios({
+        url: '/fnc/contract/updateFileStatus',
+        method: 'put',
+        data
+    })
+}
+
+//报表列表
+export const supplierContractPage = (data) => {
+    return axios({
+        url: '/fnc/contract/supplierContractPage',
+        method: 'post',
+        data
+    })
+}
+
+

+ 12 - 4
src/http/moudules/insCompany.js

@@ -233,6 +233,14 @@ export const agreementPage = (data) => {
     data
   })
 }
+// 协议录入上传费用文件
+export const updateFeeFile = (data) => {
+  return axios({
+    url: '/plt/agreement/updateFeeFile',
+    method: 'post',
+    data
+  })
+}
 export const getAllAgreement = (id) => {
   return axios({
     url: '/plt/agreement/getAllAgreement?agreementId=' + id,
@@ -594,7 +602,7 @@ export const deleteDrivingInsurance = (data) => {
   })
 }
 //批量修改  弃用
-export const endDateBatch = (data) => { 
+export const endDateBatch = (data) => {
   return axios({
     url: '/plt/new/agreement/costs/endDateBatch',
     method: "post",
@@ -1164,7 +1172,7 @@ export const newGetAllAgreement = (params) => {
 }
 
 
-// 获取协议承保规则 
+// 获取协议承保规则
 export const rulesList = (data) => {
   return axios({
     url: 'plt/new/agreement/undwrt/rules/list',
@@ -1174,7 +1182,7 @@ export const rulesList = (data) => {
 }
 
 
-// 复制协议承保规则 
+// 复制协议承保规则
 export const copyRules = (data) => {
   return axios({
     url: '/plt/new/agreement/undwrt/copyRules',
@@ -1204,7 +1212,7 @@ export const getProportionConfig = (params) => {
   })
 }
 
-// 方案轨迹 
+// 方案轨迹
 export const ruleTrajectory = (data) => {
   return axios({
     url: '/plt/scheme/trajectory/ruleTrajectory',

+ 10 - 10
src/http/moudules/letter.js

@@ -1343,7 +1343,7 @@ export const getProductInfo = (data) => {
     data
    })
   }
-  
+
   // 获取方案信息
   export const getAllSchemeList = (data) => {
    return axios({
@@ -1352,7 +1352,7 @@ export const getProductInfo = (data) => {
     data
    })
   }
-  
+
   // 获取驾意险详情
   export const getDrivingSon = (params) => {
    return axios({
@@ -1361,8 +1361,8 @@ export const getProductInfo = (data) => {
     params
    })
   }
-  
-  
+
+
   // 获取添加驾意险弹窗详情
   export const getDriving = (params) => {
    return axios({
@@ -1372,8 +1372,8 @@ export const getProductInfo = (data) => {
     params
    })
   }
-  
-  
+
+
   // 过滤获取公司列表
   export const ruleFilterCompany = (data) => {
    return axios({
@@ -1389,7 +1389,7 @@ export const getProductInfo = (data) => {
     method: 'post',
    })
   }
-  
+
   // 获取驾意险详情
   export const licenseSearch = (params) => {
     return axios({
@@ -1414,8 +1414,8 @@ export const getProductInfo = (data) => {
      data
     })
    }
-   
-  // 获取交强出口费用  商业出口费用  非车出口费用  
+
+  // 获取交强出口费用  商业出口费用  非车出口费用
   export const externalOrderFee = (data) => {
     return axios({
      url: '/api/externalOrder/externalOrderFee',
@@ -1432,7 +1432,7 @@ export const queryBySuborderDetails = (suborder) => {
   })
 }
 
-  // 新获取特约 
+  // 新获取特约
   export const getClauseByCompanyId = (data) => {
     return axios({
      url: '/clause/getClauseByCompanyId',

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

@@ -1638,6 +1638,15 @@ export const stagePage = (data) => {
   })
 }
 
+// 暂存订单删除
+export const temporaryStorageOrder = (data) => {
+  return axios({
+    url: '/api/externalOrder/delExternalOrder',
+    method: 'post',
+    data
+  })
+}
+
 
 
 

+ 7 - 4
src/main.js

@@ -9,15 +9,15 @@ import ElementUI from 'element-ui'
 import '@/utils/directives.js'
 import VueSplit from 'vue-split-panel'
 import VueDirectiveWindow from 'vue-directive-window';
-import {dateFormat} from '@/utils/dataformat.js'
+import { dateFormat } from '@/utils/dataformat.js'
 import btnPermission from '@/utils/btnPermission'
 import dialogDrag from '@/utils/dialogDrag'
 import VueClipboard from 'vue-clipboard2'
- 
+
 
 import vdr from 'vue-draggable-resizable-gorkys';
 import 'vue-draggable-resizable-gorkys/dist/VueDraggableResizable.css';
- 
+
 
 import 'element-ui/lib/theme-chalk/index.css'
 // import 'element-ui/lib/'
@@ -51,7 +51,7 @@ Vue.directive('watermark', {
     ctx.textAlign = 'center';
     ctx.textBaseline = 'middle';
     ctx.translate(canvas.width / 2, canvas.height / 2);
-     ctx.rotate(-30*Math.PI/180);
+    ctx.rotate(-30 * Math.PI / 180);
     ctx.fillText(watermarkText, 0, 0);
     const base64 = canvas.toDataURL('image/png');
     const watermarkDiv = document.createElement('div');
@@ -83,6 +83,9 @@ Vue.use(dialogDrag)
 
 Vue.component('vdr', vdr);
 Vue.prototype.global = global
+import Treeselect from '@riophae/vue-treeselect'
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+Vue.component('treeselect', Treeselect)
 
 new Vue({
   el: '#app',

+ 12 - 4
src/utils/ipAndAddress.js

@@ -23,12 +23,20 @@ export async function getUserLocation(ipInfo, callback) {
 }
 // 获取当前登录的地理 信息
 export async function getAddressLocation(ipInfo, callback) {
-  await fetch(`https://qifu-api.baidubce.com/ip/geo/v1/district?ip=${ipInfo}`)
+  // await fetch(`https://qifu-api.baidubce.com/ip/geo/v1/district?ip=${ipInfo}`)
+  // await fetch(`http://ip-api.com/json/${ipInfo}?lang=zh-CN`)
+  await fetch(`http://demo.ip-api.com/json/${ipInfo}?fields=66842623&lang=zh-CN `)
+  // const headers = new Headers({
+  //   'Authorization': 'APPCODE 1408028eb249479cbeeb9d20f611db79'
+  // });
+  // await fetch(`https://c2ba.api.huachen.cn/ip?ip=${ipInfo}`,{
+  //   headers: headers, 
+  // })
     .then(response => response.json())
     .then(res => {
-      if (res.code === 'Success') {
-        callback({ ...res.data, ip: res.ip });
-      }
+       if (res.ret === 200) {
+        callback({ ...res.data, prov: res.data.region });
+        }
     })
     .catch(error => console.log(error));
 }

+ 43 - 2
src/views/AgreementManage/CarInsurance/AgreementEntry.vue

@@ -195,6 +195,11 @@
             </span>
           </template>
         </el-table-column> -->
+        <el-table-column prop="feeFileName" label="文件名" align="center">
+          <template slot-scope="scope">
+            <el-link @click="downloadFile(scope.row)">{{ scope.row.feeFileName }}</el-link>
+          </template>
+        </el-table-column>
         <el-table-column prop="updateTime" label="修改时间" align="center" :formatter="updatetimeFormatter"></el-table-column>
         <el-table-column prop="modifiedName" label="修改人" align="center" width="130"></el-table-column>
         <el-table-column label="操作" align="center" width="200" fixed="right">
@@ -205,8 +210,16 @@
               @click="agreementCopy(scope.$index, scope.row)" style="color: #2D4D89 !important " />
             <kt-button label="删除" :size="overSize" type="text" perms="agreement:input:delete"
               @click="deletequery(scope.$index, scope.row)" style="color: #D42426 !important " />
-              <kt-button label="协议轨迹" :size="overSize" type="text" perms="agreement:input:update"
-              @click="handleTrajectory(scope.$index, scope.row)" style="color: #2D4D89 !important " />
+            <kt-button label="协议轨迹" :size="overSize" type="text" perms="agreement:input:update"
+                       @click="handleTrajectory(scope.$index, scope.row)" style="color: #2D4D89 !important " />
+            <el-upload
+              action="#"
+              :show-file-list="false"
+              :auto-upload="false"
+              :on-change="(file) => handleUpload(file, scope.$index, scope.row)"
+            >
+              <kt-button label="上传费用文件" :size="overSize" type="text" perms="agreement:input:update" style="color: #2D4D89 !important " />
+            </el-upload>
 
             <!-- <el-button type="text" size="mini">
               <el-dropdown trigger="click">
@@ -1433,6 +1446,7 @@ import agreementProductFee from "./AgreementProductFee.vue"
 import agreementHistoryRecord from "./AgreementHistoryRecord.vue"
 import agreementUnderwritingRule from "./AgreementUnderwritingRule.vue"
 import agreementNonVehicleConfig from "./AgreementNonVehicleConfig.vue"
+import {updateFeeFile} from "../../../http/moudules/insCompany";
 export default {
   components: {
     tree,
@@ -2530,6 +2544,30 @@ export default {
     this.findLeftTreeData();
   },
   methods: {
+    downloadFile(row){
+      let url = process.env.BASE_URL  + row.feeFileUrl.substring(1,row.feeFileUrl.length); // 3.创建一个临时的url指向blob对象
+      let link = document.createElement("a");
+      link.target = '_blank'
+      link.href = url;
+      link.download = row.feeFileName;
+      document.body.appendChild(link)
+      link.click();
+      link.remove();
+    },
+    // 上传协议费用
+    handleUpload(file, index, row) {
+      const formData = new FormData()
+      formData.append('multipartFile', file.raw)
+      formData.append('agreementId', row.id)
+      this.$api.insCompany.updateFeeFile(formData).then(res => {
+        if(res.code == 200) {
+          this.$message.success(res.msg)
+          this.findPage();
+        } else {
+          this.$message.error((res.msg))
+        }
+      })
+    },
     // 协议轨迹
     handleTrajectory(index, row) {
       this.showTrajectoryDialog = true
@@ -4352,6 +4390,9 @@ export default {
 
 
 }
+.el-link.el-link--default{
+  color: #409eff;
+}
 
 .apistyle /deep/ .el-form-item__label {
   min-width: 180px;

+ 23 - 0
src/views/AgreementManage/CarInsurance/ProductCostExamine.vue

@@ -365,6 +365,12 @@ export default {
           minWidth: 160,
           formatter: this.agreementIdFormatter,
         },
+        {
+          prop: 'feeFileName',
+          label: '文件名',
+          minWidth: 160,
+          formatter: this.downloadRender
+        },
         { prop: "costsStartDate", label: "费用起期", minWidth: 160 },
         { prop: "costsEndDate", label: "费用止期", minWidth: 160 },
         { prop: "costsDescription", label: "费用描述", minWidth: 220 },
@@ -697,6 +703,20 @@ export default {
         return allAgreementItem.agreementName;
       }
     },
+    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'
+      link.href = url;
+      link.download = row.feeFileName;
+      document.body.appendChild(link)
+      link.click();
+      link.remove();
+    }
   },
   // 计算属性
   computed: {},
@@ -744,5 +764,8 @@ export default {
     justify-content: center;
     align-items: center;
   }
+  .el-link.el-link--default{
+    color: #409eff;
+  }
 }
 </style>

+ 2 - 2
src/views/Core/KtCommonTable.vue

@@ -1036,7 +1036,7 @@ export default {
       this.selections.map((item) => idlist.push(item.id));
       this.$emit("customTool", idlist);
     },
-    
+
     //自定义批量操作按钮1
     customToolMethod1() {
       let idlist = [];
@@ -1187,4 +1187,4 @@ export default {
   border-radius: 4px 4px 4px 4px;
   border: 1px solid #f2992f;
 }
-</style>
+</style>

+ 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>

+ 1526 - 0
src/views/FinancialManagement/ContractManagement/ContractManagement.vue

@@ -0,0 +1,1526 @@
+<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.user"
+              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,
+                value: 'id',
+                label: 'name',
+                children: 'children',
+              }"
+              clearable
+            ></el-cascader>
+            <!-- <el-select
+              v-model="formInline.user"
+              placeholder="供应商名称"
+              size="small"
+              filterable
+            >
+              <el-option>全部</el-option>
+            </el-select> -->
+          </el-form-item>
+        </el-col>
+        <el-col :span="6">
+          <el-form-item label="甲方">
+            <el-select
+              size="small"
+              v-model="formInline.externalCompaniesId"
+              filterable
+              clearable
+              style="width: 220px"
+            >
+              <el-option
+                v-for="item in accountList"
+                :key="item.accountId"
+                :value="item.accountId"
+                :label="item.accountName"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="6">
+          <el-form-item label="乙方">
+            <el-select
+              size="small"
+              v-model="formInline.internalCompanyId"
+              filterable
+              clearable
+              style="width: 220px"
+            >
+              <el-option
+                v-for="item in accountList"
+                :key="item.accountId"
+                :value="item.accountId"
+                :label="item.accountName"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="6">
+          <el-form-item label="合同类型">
+            <el-select
+              size="small"
+              v-model="formInline.contractType"
+              style="width: 220px"
+            >
+              <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="状态">
+            <el-select
+              v-model="formInline.contractStatus"
+              placeholder="状态"
+              size="small"
+              filterable
+              style="width: 220px"
+            >
+              <el-option value="all" label="全部">全部</el-option>
+              <el-option value="1" label="失效">失效</el-option>
+              <el-option value="0" 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>
+            <kt-button
+              type="primary"
+              size="small"
+              @click="addContract"
+              perms="fnc:contract:save"
+              label="新增"
+            ></kt-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="internalCompanyName" label="乙方">
+      </el-table-column>
+      <el-table-column prop="supplierName" 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="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="edit(scope.row)"
+            perms="fnc:contract:update"
+            label="编辑"
+          ></kt-button>
+          <el-dropdown>
+            <el-button type="primary" size="small">
+              更多<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item command="supplement">
+                <kt-button
+                  size="small"
+                  type="primary"
+                  @click.native="handleCommand('supplement', scope.row)"
+                  perms="fnc:contract:copyContract"
+                  label="补充协议"
+                ></kt-button>
+              </el-dropdown-item>
+              <el-dropdown-item command="watch">
+                <kt-button
+                  size="small"
+                  type="primary"
+                  @click.native="handleCommand('watch', scope.row)"
+                  perms="fnc:contract:seeFile"
+                  label="查看附件"
+                ></kt-button>
+              </el-dropdown-item>
+              <el-dropdown-item command="message">
+                <kt-button
+                  size="small"
+                  type="primary"
+                  @click.native="handleCommand('message', scope.row)"
+                  perms="fnc:contract:view"
+                  label="查看详情"
+                ></kt-button>
+              </el-dropdown-item>
+              <el-dropdown-item command="error">
+                <kt-button
+                  size="small"
+                  type="primary"
+                  @click.native="handleCommand('error', scope.row)"
+                  perms="fnc:contract:updateFileStatus"
+                  label="设置为失效"
+                ></kt-button>
+              </el-dropdown-item>
+              <!-- <el-dropdown-item>双皮奶</el-dropdown-item>
+            <el-dropdown-item>蚵仔煎</el-dropdown-item> -->
+            </el-dropdown-menu>
+          </el-dropdown>
+        </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="0"
+    >
+    </el-pagination>
+    <el-dialog
+      :title="title"
+      :visible.sync="dialogVisible"
+      width="50%"
+      :before-close="handleClose"
+    >
+      <el-row>
+        <el-form :model="form" :inline="true" :rules="rules" ref="ruleForm">
+          <el-col :span="12">
+            <el-form-item label="合同编号" label-width="130px">
+              <el-input
+                size="small"
+                v-model="form.contractCode"
+                autocomplete="off"
+                :disabled="true"
+                style="width: 220px"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              label="合同名称"
+              label-width="130px"
+              prop="contractName"
+            >
+              <el-input
+                v-model="form.contractName"
+                placeholder="请输入合同名称"
+                size="small"
+                style="width: 220px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              label="合同类型"
+              label-width="130px"
+              prop="contractType"
+            >
+              <!-- <treeSelect :options="data" /> -->
+              <el-select
+                size="small"
+                v-model="form.contractType"
+                style="width: 220px"
+              >
+                <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="12">
+            <el-form-item
+              label="甲方"
+              label-width="130px"
+              prop="externalCompaniesId"
+            >
+              <el-select
+                size="small"
+                v-model="form.externalCompaniesId"
+                filterable
+                clearable
+                @change="companyChange(form.externalCompaniesId, '1')"
+                style="width: 220px"
+              >
+                <el-option
+                  v-for="item in accountList"
+                  :key="item.accountId"
+                  :value="item.accountId"
+                  :label="item.accountName"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="甲方账户类型" label-width="130px">
+              <el-input
+                size="small"
+                v-model="form.externType"
+                autocomplete="off"
+                :disabled="true"
+                style="width: 220px"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              label="乙方"
+              label-width="130px"
+              prop="internalCompanyId"
+            >
+              <el-select
+                size="small"
+                v-model="form.internalCompanyId"
+                filterable
+                clearable
+                @change="companyChange(form.internalCompanyId, '2')"
+                style="width: 220px"
+              >
+                <el-option
+                  v-for="item in accountList"
+                  :key="item.accountId"
+                  :value="item.accountId"
+                  :label="item.accountName"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="乙方账户类型" label-width="130px">
+              <el-input
+                size="small"
+                v-model="form.internalType"
+                autocomplete="off"
+                :disabled="true"
+                style="width: 220px"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item
+              label="供应商"
+              label-width="130px"
+              class="supplier"
+              prop="supplierIdList"
+            >
+              <!-- <treeSelect :options="esmInsCompanyList" @getValue="getValue" /> -->
+              <treeselect
+                v-model="form.supplierIdList"
+                placeholder="请选择"
+                :options="esmInsCompanyList"
+                :normalizer="normalizer"
+                :multiple="true"
+                @select="handleSelect"
+                :children-as-objects="true"
+              ></treeselect>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              label="是否为开口合同"
+              label-width="130px"
+              prop="isOpenContract"
+            >
+              <!-- <treeSelect :options="data" /> -->
+              <!-- <el-switch
+                v-model="form.isOpenContract"
+                active-text="是"
+                inactive-text="否"
+              >
+              </el-switch> -->
+              <el-radio v-model="form.isOpenContract" label="0">是</el-radio>
+              <el-radio v-model="form.isOpenContract" label="1">否</el-radio>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              label="生效日期"
+              label-width="130px"
+              prop="effectiveDate"
+            >
+              <el-date-picker
+                size="small"
+                v-model="form.effectiveDate"
+                type="datetime"
+                placeholder="选择日期时间"
+                value-format="yyyy-MM-dd HH:mm:ss"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              label="失效日期"
+              label-width="130px"
+              :rules="isRequired('expiringDate')"
+            >
+              <el-date-picker
+                size="small"
+                v-model="form.expiringDate"
+                type="datetime"
+                :default-time="'23:59:59'"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                placeholder="选择失效日期时间"
+                :picker-options="pickerOptionsEnd"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="是否顺延" label-width="130px">
+              <el-radio v-model="form.shouldPostponed" label="0">是</el-radio>
+              <el-radio v-model="form.shouldPostponed" label="1">否</el-radio>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item
+              label="顺延时间"
+              label-width="180px"
+              style="width: 100%"
+            >
+              <div style="width: 100%; display: flex; align-items: center">
+                <el-radio
+                  :disabled="form.shouldPostponed != 0"
+                  v-model="date"
+                  label="year"
+                  >年</el-radio
+                >
+                <el-input
+                  :disabled="date != 'year'"
+                  size="small"
+                  style="width: 180px"
+                  v-model="year"
+                  @input="(value) => (year = value.replace(/[^\d]/g, ''))"
+                  placeholder="请输入年"
+                  @change="timeChange('year')"
+                ></el-input>
+              </div>
+              <div style="width: 100%; display: flex; align-items: center">
+                <el-radio
+                  :disabled="form.shouldPostponed != 0"
+                  v-model="date"
+                  label="month"
+                  >月</el-radio
+                >
+                <el-input
+                  :disabled="date != 'month'"
+                  size="small"
+                  style="width: 180px"
+                  v-model="month"
+                  @input="(value) => (month = value.replace(/[^\d]/g, ''))"
+                  placeholder="请输入月"
+                  @change="timeChange('month')"
+                ></el-input>
+              </div>
+              <div style="width: 100%; display: flex; align-items: center">
+                <el-radio
+                  :disabled="form.shouldPostponed != 0"
+                  v-model="date"
+                  label="day"
+                  >天</el-radio
+                >
+                <el-input
+                  :disabled="date != 'day'"
+                  size="small"
+                  style="width: 180px"
+                  v-model="days"
+                  @input="(value) => (days = value.replace(/[^\d]/g, ''))"
+                  placeholder="请输入天"
+                  @change="timeChange('days')"
+                ></el-input>
+              </div>
+            </el-form-item>
+            <el-col :span="24">
+              <el-form-item label="顺延后失效日期" label-width="160px">
+                <el-date-picker
+                  size="small"
+                  v-model="form.shouldPostponedEffectiveDate"
+                  type="datetime"
+                  disabled
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="合同附件" label-width="130px">
+              <el-upload
+                class="upload-demo"
+                action=""
+                multiple
+                :limit="10"
+                :file-list="form.filePathIdList"
+                :http-request="httpRequest"
+                :on-remove="handleRemove"
+                accept=".pdf,.doc,.docx"
+              >
+                <el-button size="small" type="primary">点击上传</el-button>
+                <!-- <div slot="tip" class="el-upload__tip">
+                  只能上传jpg/png文件,且不超过500kb
+                </div> -->
+              </el-upload>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="submit">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog title="附件" :visible.sync="fileDialog" width="50%">
+      <div class="block">
+        <el-carousel trigger="click" height="600px" :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:download"
+              ></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>
+
+    <el-dialog title="合同列表" :visible.sync="tableDialog" width="50%">
+      <el-table
+        ref="multipleTable"
+        :data="statusTable"
+        tooltip-effect="dark"
+        style="width: 100%"
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"> </el-table-column>
+        <el-table-column prop="contractCode" label="合同编码">
+        </el-table-column>
+        <el-table-column prop="contractName" 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="effectiveDate" label="生效日期">
+        </el-table-column>
+        <el-table-column prop="expiringDate" label="失效日期">
+        </el-table-column>
+      </el-table>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="tableDialog = false">取 消</el-button>
+        <el-button type="primary" @click="setContract"
+          >将选中的合同置为无效</el-button
+        >
+      </span>
+    </el-dialog>
+
+    <el-dialog title="详情" :visible.sync="messageDialog" width="50%">
+      <el-tabs type="border-card">
+        <el-tab-pane v-for="item in statusTable" :key="item.id">
+          <div
+            slot="label"
+            style="display: flex; align-items: center; flex-direction: column"
+          >
+            <div>{{ item.contractName }}</div>
+            <div>{{ item.contractCode }}</div>
+          </div>
+          <el-row>
+            <el-form
+              :model="form"
+              :inline="true"
+              :disabled="true"
+              ref="ruleForm"
+            >
+              <el-col :span="12">
+                <el-form-item label="合同编号" label-width="130px">
+                  <el-input
+                    size="small"
+                    v-model="item.contractCode"
+                    autocomplete="off"
+                    :disabled="true"
+                    style="width: 220px"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item
+                  label="合同名称"
+                  label-width="130px"
+                  prop="contractName"
+                >
+                  <el-input
+                    v-model="item.contractName"
+                    placeholder="请输入合同名称"
+                    size="small"
+                    style="width: 220px"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item
+                  label="合同类型"
+                  label-width="130px"
+                  prop="contractType"
+                >
+                  <!-- <treeSelect :options="data" /> -->
+                  <el-select
+                    size="small"
+                    v-model="item.contractType"
+                    style="width: 220px"
+                  >
+                    <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="12">
+                <el-form-item
+                  label="甲方"
+                  label-width="130px"
+                  prop="externalCompaniesId"
+                >
+                  <el-select
+                    size="small"
+                    v-model="item.externalCompaniesId"
+                    filterable
+                    clearable
+                    @change="companyChange(item.externalCompaniesId, '1')"
+                    style="width: 220px"
+                  >
+                    <el-option
+                      v-for="item in accountList"
+                      :key="item.accountId"
+                      :value="item.accountId"
+                      :label="item.accountName"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="甲方账户类型" label-width="130px">
+                  <el-input
+                    size="small"
+                    v-model="item.externType"
+                    autocomplete="off"
+                    :disabled="true"
+                    style="width: 220px"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item
+                  label="乙方"
+                  label-width="130px"
+                  prop="internalCompanyId"
+                >
+                  <el-select
+                    size="small"
+                    v-model="item.internalCompanyId"
+                    filterable
+                    clearable
+                    @change="companyChange(item.internalCompanyId, '2')"
+                    style="width: 220px"
+                  >
+                    <el-option
+                      v-for="item in accountList"
+                      :key="item.accountId"
+                      :value="item.accountId"
+                      :label="item.accountName"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="乙方账户类型" label-width="130px">
+                  <el-input
+                    size="small"
+                    v-model="item.internalType"
+                    autocomplete="off"
+                    :disabled="true"
+                    style="width: 220px"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item
+                  label="供应商"
+                  label-width="130px"
+                  class="supplier"
+                  prop="supplierIdList"
+                >
+                  <!-- <treeSelect :options="esmInsCompanyList" @getValue="getValue" /> -->
+                  <treeselect
+                    v-model="item.supplierIdList"
+                    placeholder="请选择"
+                    :options="esmInsCompanyList"
+                    :normalizer="normalizer"
+                    :multiple="true"
+                    @select="handleSelect"
+                    :children-as-objects="true"
+                    :disabled="true"
+                  ></treeselect>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item
+                  label="是否为开口合同"
+                  label-width="130px"
+                  prop="isOpenContract"
+                >
+                  <!-- <treeSelect :options="data" /> -->
+                  <!-- <el-switch
+                v-model="item.isOpenContract"
+                active-text="是"
+                inactive-text="否"
+              >
+              </el-switch> -->
+                  <el-radio v-model="item.isOpenContract" label="0"
+                    >是</el-radio
+                  >
+                  <el-radio v-model="item.isOpenContract" label="1"
+                    >否</el-radio
+                  >
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item
+                  label="生效日期"
+                  label-width="130px"
+                  prop="effectiveDate"
+                >
+                  <el-date-picker
+                    size="small"
+                    v-model="item.effectiveDate"
+                    type="datetime"
+                    placeholder="选择日期时间"
+                    value-format="yyyy-MM-dd HH:mm:ss"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item
+                  label="失效日期"
+                  label-width="130px"
+                  :rules="isRequired('expiringDate')"
+                >
+                  <el-date-picker
+                    size="small"
+                    v-model="item.expiringDate"
+                    type="datetime"
+                    :default-time="'23:59:59'"
+                    value-format="yyyy-MM-dd HH:mm:ss"
+                    placeholder="选择失效日期时间"
+                    :picker-options="pickerOptionsEnd"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item label="是否顺延" label-width="130px">
+                  <el-radio v-model="item.shouldPostponed" label="0"
+                    >是</el-radio
+                  >
+                  <el-radio v-model="item.shouldPostponed" label="1"
+                    >否</el-radio
+                  >
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item
+                  label="顺延时间"
+                  label-width="180px"
+                  style="width: 100%"
+                >
+                  <div style="width: 100%; display: flex; align-items: center">
+                    <el-radio
+                      :disabled="item.shouldPostponed != 0"
+                      v-model="date"
+                      label="year"
+                      >年</el-radio
+                    >
+                    <el-input
+                      :disabled="date != 'year'"
+                      size="small"
+                      style="width: 180px"
+                      v-model="year"
+                      @input="(value) => (year = value.replace(/[^\d]/g, ''))"
+                      placeholder="请输入年"
+                      @change="timeChange('year')"
+                    ></el-input>
+                  </div>
+                  <div style="width: 100%; display: flex; align-items: center">
+                    <el-radio
+                      :disabled="item.shouldPostponed != 0"
+                      v-model="date"
+                      label="month"
+                      >月</el-radio
+                    >
+                    <el-input
+                      :disabled="date != 'month'"
+                      size="small"
+                      style="width: 180px"
+                      v-model="month"
+                      @input="(value) => (month = value.replace(/[^\d]/g, ''))"
+                      placeholder="请输入月"
+                      @change="timeChange('month')"
+                    ></el-input>
+                  </div>
+                  <div style="width: 100%; display: flex; align-items: center">
+                    <el-radio
+                      :disabled="item.shouldPostponed != 0"
+                      v-model="date"
+                      label="day"
+                      >天</el-radio
+                    >
+                    <el-input
+                      :disabled="date != 'day'"
+                      size="small"
+                      style="width: 180px"
+                      v-model="days"
+                      @input="(value) => (days = value.replace(/[^\d]/g, ''))"
+                      placeholder="请输入天"
+                      @change="timeChange('days')"
+                    ></el-input>
+                  </div>
+                </el-form-item>
+                <el-col :span="24">
+                  <el-form-item label="顺延后失效日期" label-width="160px">
+                    <el-date-picker
+                      size="small"
+                      v-model="item.shouldPostponedEffectiveDate"
+                      type="datetime"
+                      disabled
+                    >
+                    </el-date-picker>
+                  </el-form-item>
+                </el-col>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item label="合同附件" label-width="130px">
+                  <el-upload
+                    class="upload-demo"
+                    action=""
+                    multiple
+                    :limit="10"
+                    :file-list="item.contractFileEntityList"
+                    :http-request="httpRequest"
+                    :on-remove="handleRemove"
+                    accept=".pdf,.doc,.docx"
+                  >
+                    <el-button size="small" type="primary">点击上传</el-button>
+                    <!-- <div slot="tip" class="el-upload__tip">
+                  只能上传jpg/png文件,且不超过500kb
+                </div> -->
+                  </el-upload>
+                </el-form-item>
+              </el-col>
+            </el-form>
+          </el-row>
+        </el-tab-pane>
+      </el-tabs>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="messageDialog = false">取 消</el-button>
+        <el-button type="primary" @click="messageDialog = false"
+          >确认</el-button
+        >
+      </span>
+    </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 KtButton from "@/views/Core/KtButton";
+
+export default {
+  components: {
+    treeSelect,
+    VueOfficeDocx,
+    VueOfficePdf,
+    KtButton,
+  },
+  data() {
+    return {
+      fileDialog: false,
+      showFileList: [],
+      formInline: {
+        contractCode: "",
+        contractName: "",
+        contractStatus: "",
+        contractType: "",
+        externalCompaniesId: "",
+        internalCompanyId: "",
+      },
+      messageDialog: false,
+      tableDialog: false,
+      multipleSelection: [],
+
+      base: process.env.BASE_URL,
+      form: {
+        contractCode: "",
+        contractType: "",
+        contractName: "",
+        externalCompaniesId: "",
+        internalCompanyId: "",
+        supplierIdList: [],
+        isOpenContract: "1",
+        effectiveDate: "",
+        expiringDate: "",
+        shouldPostponed: "1",
+        shouldPostponedEffectiveDate: "",
+        filePathIdList: [],
+      },
+      rules: {
+        contractName: [
+          {
+            required: true,
+            message: "请填写合同名称",
+            trigger: "blur",
+          },
+        ],
+        contractType: [
+          {
+            required: true,
+            message: "请选择合同类型",
+            trigger: "change",
+          },
+        ],
+        externalCompaniesId: [
+          {
+            required: true,
+            message: "请选择甲方",
+            trigger: "change",
+          },
+        ],
+        internalCompanyId: [
+          {
+            required: true,
+            message: "请选择乙方",
+            trigger: "change",
+          },
+        ],
+        supplierIdList: [
+          {
+            required: true,
+            message: "请选择供应商",
+            trigger: "change",
+          },
+        ],
+        isOpenContract: [
+          {
+            required: true,
+            message: "请选择是否为开口合同",
+            trigger: "change",
+          },
+        ],
+      },
+      pickerOptionsEnd: {
+        disabledDate: (time) => {
+          let beginDateVal = this.form.effectiveDate;
+          if (beginDateVal) {
+            return time.getTime() < new Date(beginDateVal).getTime();
+          }
+        },
+      },
+
+      title: "",
+      dialogVisible: false,
+      tableData: [],
+      statusTable: [],
+      data: [],
+      date: "",
+      time: "",
+
+      month: "",
+      year: "",
+      days: "",
+      accountList: [],
+      accountObj: {},
+      esmInsCompanyList: [],
+      contractTypeList: [],
+      supplierIdChildList: [],
+      pageInfo: {
+        pageNum: 1,
+        pageSize: 10,
+        total: 0,
+      },
+      resetForm: {},
+      operation: "",
+      fileIdList: [],
+      contractStatus: "",
+    };
+  },
+  computed: {},
+  created() {},
+  mounted() {
+    this.getInvAccountList();
+    this.getEsmInsCompany();
+    this.getContractType();
+    this.getList();
+    this.resetForm = { ...this.form };
+  },
+  methods: {
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+
+      this.pageInfo.pageSize = val;
+      this.getList();
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.pageInfo.pageNum = val;
+      this.getList();
+    },
+    //表格选中
+    handleSelectionChange(val) {
+      this.multipleSelection = val.map((v, i) => {
+        return v.id;
+      });
+    },
+    //批量无效合同
+    setContract() {
+      this.$api.contract
+        .updateFileStatus({
+          idList: this.multipleSelection,
+          contractStatus: this.contractStatus,
+        })
+        .then((res) => {
+          if (res.code == 200) {
+            this.tableDialog = false;
+            this.$message.success(res.msg);
+          } else {
+            this.$message.error(res.msg);
+          }
+        });
+    },
+    //更多操作
+    handleCommand(commad, row) {
+      this.contractStatus = row.contractStatus;
+      this.operation = commad;
+      if (commad != "error") {
+        this.$api.contract
+          .editorShow({
+            id: row.id,
+          })
+          .then((res) => {
+            if (res.code === 200) {
+              this.showFileList = [...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,
+                // 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;
+                    })
+                  : [];
+              if (commad == "supplement") {
+                this.$nextTick(() => {
+                  this.$refs.ruleForm.clearValidate();
+                });
+                this.dialogVisible = true;
+                this.title = "补充协议";
+              }
+              if (commad == "watch") {
+                this.fileDialog = true;
+              }
+            }
+          });
+      } else if (commad != "message") {
+        this.$api.contract
+          .checkCopyContract({
+            id: row.id,
+          })
+          .then((res) => {
+            // console.log(res);
+            if (res.code === 200) {
+              if (res.data.failStatus == "0") {
+                this.$confirm("确认将该合同置为失效状态吗?", "提示", {
+                  type: "warning",
+                }).then(() => {
+                  this.$api.contract
+                    .constractSave({ id: row.id, contractStatus: 1 })
+                    .then((res) => {
+                      if (res.code == 200) {
+                        this.$message.success(res.msg);
+                        this.getList();
+                      } else {
+                        this.$message.error(res.msg);
+                      }
+                    });
+                });
+              } else {
+                this.statusTable = [];
+                this.multipleSelection = [];
+                this.tableDialog = true;
+                this.$api.contract
+                  .copyContractList({
+                    id: row.id,
+                  })
+                  .then((res) => {
+                    if (res.code === 200) {
+                      this.statusTable = [...res.data];
+                    }
+                  });
+              }
+            }
+          });
+      }
+      if (commad == "message") {
+        this.messageDialog = true;
+
+        this.$api.contract
+          .copyContractList({
+            id: row.id,
+          })
+          .then((res) => {
+            if (res.code === 200) {
+              let arr = [];
+              res.data.forEach((v, i) => {
+                arr.push(v);
+                v.contractFileEntityList.forEach((item, index) => {
+                  arr[i].contractFileEntityList[index] = {
+                    name: item.fileName,
+                    url: item.url,
+                  };
+                });
+              });
+              // console.log(arr);
+              this.statusTable = [...arr];
+            }
+          });
+      }
+    },
+    //获取合同列表
+    getList() {
+      this.$api.contract
+        .constractQueryPage({
+          ...this.pageInfo,
+          ...this.formInline,
+        })
+        .then((res) => {
+          // console.log(res);
+          if (res.code === 200) {
+            this.tableData = [...res.data.records];
+            this.pageInfo.total = res.data.total;
+          }
+        });
+    },
+    //格式化tree数据
+    normalizer(node) {
+      if (node.children && !node.children.length) {
+        // 去掉children=[]的children属性
+        delete node.children;
+      }
+      return {
+        id: node.id, // ID字段名
+        label: node.name, // 显示名称
+        children: node.children, // 子级字段名
+      };
+    },
+    //treeSelect 选择时触发
+    handleSelect(node) {
+      if (node.children instanceof Array && node.children.length) {
+        this.chooseChild(node.children);
+      }
+    },
+    //递归
+    chooseChild(list) {
+      list.forEach((v, i) => {
+        this.supplierIdChildList.push(v.id);
+        if (v.children instanceof Array && v.children.length) {
+          this.chooseChild(v.children);
+        }
+      });
+    },
+    //新增
+    submit() {
+      // console.log(this.form.supplierIdList);
+      // console.log(this.fileIdList);
+
+      this.$refs["ruleForm"].validate((valid) => {
+        if (valid) {
+          if (this.operation != "supplement") {
+            this.$api.contract
+              .constractSave({
+                ...this.form,
+                supplierIdList: [
+                  ...this.form.supplierIdList,
+                  ...this.supplierIdChildList,
+                ],
+                filePathIdList: this.fileIdList,
+              })
+              .then((res) => {
+                if (res.code === 200) {
+                  this.$message.success(res.msg);
+                  this.dialogVisible = false;
+                  this.$nextTick(() => {
+                    this.$refs.ruleForm.clearValidate();
+                  });
+                }
+              });
+          } else {
+            this.$api.contract
+              .supplementContract({
+                ...this.form,
+                supplierIdList: [
+                  ...this.form.supplierIdList,
+                  ...this.supplierIdChildList,
+                ],
+                filePathIdList: this.fileIdList,
+              })
+              .then((res) => {
+                if (res.code === 200) {
+                  this.$message.success(res.msg);
+                  this.dialogVisible = false;
+                  this.$nextTick(() => {
+                    this.$refs.ruleForm.clearValidate();
+                  });
+                }
+              });
+          }
+        }
+      });
+    },
+    //供应商id
+    getValue(val) {
+      this.form.supplierIdList = [...val];
+    },
+    //获取合同类型
+    getContractType() {
+      this.$api.contract.getContractType("contract_type").then((res) => {
+        if (res.code === 200) {
+          this.contractTypeList = [...res.data];
+        }
+      });
+    },
+    //获取供应商树形
+    getEsmInsCompany() {
+      this.$api.contract.getEsmInsCompany({}).then((res) => {
+        if (res.code === 200) {
+          this.esmInsCompanyList = [...res.data];
+        }
+      });
+    },
+    //甲方/乙方选择
+    companyChange(id, type) {
+      if (type == "1") {
+        this.form.externType = this.accountObj[id] == "0" ? "内部" : "外部";
+      } else {
+        this.form.internalType = this.accountObj[id] == "0" ? "内部" : "外部";
+      }
+    },
+
+    //上传附件
+    httpRequest(options) {
+      let file = options.file;
+      let filename = options.filename;
+      let reader = new FileReader();
+      if (file) {
+        reader.readAsDataURL(file);
+      }
+      reader.onload = () => {
+        let base64Str = reader.result;
+        this.dataForm[options.filename] = base64Str;
+      };
+      const params = new FormData(); // 声明formData数据类型
+      params.append("multipartFile", file);
+      params.append("type", "personnel");
+      this.$api.letter.uploadFile(params).then((res) => {
+        if (res.code == "200") {
+          this.form.filePathIdList.push(res.data.id);
+          this.fileIdList.push(res.data.id);
+        }
+      });
+    },
+    //删除附件
+    handleRemove(file, fileList) {
+      // console.log(this.form.filePathIdList);
+      // console.log(this.fileIdList);
+      this.fileIdList = [];
+      this.form.filePathIdList = this.form.filePathIdList.filter(
+        (item) => item.uid !== file.uid
+      );
+
+      this.fileIdList = this.form.filePathIdList.map((v, i) => {
+        return v.id;
+      });
+    },
+    //获取甲乙方列表
+    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 };
+        }
+      });
+    },
+    //必填项
+    isRequired() {
+      if (this.form.isOpenContract == "0") {
+        return {
+          type: "date",
+          required: true,
+          message: "请选择失效日期",
+          trigger: "change",
+        };
+      } else {
+        return {};
+      }
+
+      // return true;
+    },
+    timeChange(type) {
+      if (type == "year") {
+        this.form.shouldPostponedEffectiveDate = moment(this.form.expiringDate)
+          .add(this[type], "year")
+          .format("YYYY-MM-DD HH:mm:ss");
+      } else if (type == "month") {
+        this.form.shouldPostponedEffectiveDate = moment(this.form.expiringDate)
+          .add(this[type], "month")
+          .format("YYYY-MM-DD HH:mm:ss");
+      } else {
+        this.form.shouldPostponedEffectiveDate = moment(this.form.expiringDate)
+          .add(this[type], "days")
+          .format("YYYY-MM-DD HH:mm:ss");
+      }
+      console.log();
+    },
+    handleClose(done) {
+      done();
+    },
+    addContract() {
+      this.dialogVisible = true;
+      this.title = "新增";
+      this.operation = "add";
+      this.form = { ...this.resetForm };
+
+      this.$nextTick(() => {
+        this.$refs.ruleForm.clearValidate();
+      });
+    },
+    edit(row) {
+      this.title = "编辑";
+      this.operation = "edit";
+      this.$api.contract
+        .editorShow({
+          id: row.id,
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.dialogVisible = true;
+            // this.form
+            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,
+              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
+                ? res.data.contractFileEntityList.map((v, i) => {
+                    return { name: v.fileName, url: v.url, id: v.fileId };
+                  })
+                : [],
+            };
+            this.fileIdList =
+              res.data.contractFileEntityList != null
+                ? res.data.contractFileEntityList.map((v, i) => {
+                    return v.fileId;
+                  })
+                : [];
+          }
+        });
+    },
+  },
+};
+</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>

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

@@ -0,0 +1,391 @@
+<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.user"
+              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,
+                value: 'id',
+                label: 'name',
+                children: 'children',
+              }"
+              clearable
+            ></el-cascader>
+            <!-- <el-select
+                v-model="formInline.user"
+                placeholder="供应商名称"
+                size="small"
+                filterable
+              >
+                <el-option>全部</el-option>
+              </el-select> -->
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="6">
+          <el-form-item label="合同类型">
+            <el-select
+              size="small"
+              v-model="formInline.contractType"
+              style="width: 220px"
+            >
+              <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="   ">
+            <el-button type="primary" size="small" @click="getList"
+              >查询</el-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">
+          <el-button size="small" type="primary" @click="watch(scope.row)"
+            >查看附件</el-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="0"
+    >
+    </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;
+              "
+            >
+              <el-button type="primary" icon="el-icon-download" size="small"
+                >下载</el-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";
+export default {
+  components: {
+    treeSelect,
+    VueOfficeDocx,
+    VueOfficePdf,
+  },
+  data() {
+    return {
+      formInline: {
+        contractCode: "",
+
+        contractStatus: "",
+        contractType: "",
+        externalCompaniesId: "",
+        internalCompanyId: "",
+      },
+      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: {
+    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];
+            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,
+              // 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;
+                  })
+                : [];
+            if (commad == "supplement") {
+              this.dialogVisible = true;
+            }
+            if (commad == "watch") {
+              this.fileDialog = true;
+            }
+          }
+        });
+    },
+    //获取供应商树形
+    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.$api.contract.getContractType("contract_type").then((res) => {
+        if (res.code === 200) {
+          this.contractTypeList = [...res.data];
+        }
+      });
+    },
+
+    //获取甲乙方列表
+    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>

+ 28 - 14
src/views/FinancialManagement/ExpenseManagement/ExpenseComponent.vue

@@ -111,22 +111,36 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-              <el-form-item label="暂估值" prop="tentativeEstimates"
-                :rules="[{
+            <el-form-item
+              label="暂估值"
+              prop="tentativeEstimates"
+              :rules="[
+                {
                   required: true,
                   message: '暂估值不能为空',
                   trigger: 'blur',
                 },
-               ]">
-                <!-- { pattern: /^[1-9]\d*$/ , message: '暂估值不能小于等于0', trigger: 'blur'} -->
-                <el-input-number
-                  v-model="formData.tentativeEstimates"
-                  :min="0"
-                  :max="99999999999999999"
-                  label=""
-                ></el-input-number>
-              </el-form-item>
-            </el-col>
+              ]"
+            >
+              <!-- { pattern: /^[1-9]\d*$/ , message: '暂估值不能小于等于0', trigger: 'blur'} -->
+              <el-input-number
+                v-model="formData.tentativeEstimates"
+                :min="0"
+                :max="99999999999999999"
+                label=""
+              ></el-input-number>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row v-if="type == 1">
+          <el-col :span="12">
+            <el-form-item label="账户简称" prop="ssd">
+              <el-input
+                v-model="formData.simpleName"
+                placeholder="请输入账户简称"
+              ></el-input>
+            </el-form-item>
+          </el-col>
         </el-row>
         <el-row v-if="type == 2">
           <el-col :span="12">
@@ -442,8 +456,8 @@ export default {
   },
   mounted() {},
   methods: {
-    cleanForm(){
-      this.$refs.formData.resetFields()
+    cleanForm() {
+      this.$refs.formData.resetFields();
     },
     //账户类别change事件
     outChange(e) {

+ 359 - 128
src/views/FinancialManagement/ExpenseManagement/ExpenseManagement.vue

@@ -5,140 +5,323 @@
     <el-row class="top">
       <el-form v-model="queryFrom" size="small" label-width="95px" class="form">
         <el-form-item label="账户类别" label-width="95px" prop="outerFlag">
-          <el-select v-model="queryFrom.outerFlag" placeholder="请选择账户类别" clearable>
+          <el-select
+            v-model="queryFrom.outerFlag"
+            placeholder="请选择账户类别"
+            clearable
+          >
             <el-option label="内部账户" value="0"></el-option>
             <el-option label="外部账户" value="1"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="户名" label-width="95px" prop="invCompanyName">
-          <el-input v-model="queryFrom.accountName" placeholder="请输入户名" class="widths" clearable></el-input>
+          <el-input
+            v-model="queryFrom.accountName"
+            placeholder="请输入户名"
+            class="widths"
+            clearable
+          ></el-input>
         </el-form-item>
         <el-form-item label="银行卡号" label-width="95px" prop="invCompanyName">
-          <el-input v-model="queryFrom.bankCardNum" placeholder="请输入银行卡号" class="widths" clearable></el-input>
+          <el-input
+            v-model="queryFrom.bankCardNum"
+            placeholder="请输入银行卡号"
+            class="widths"
+            clearable
+          ></el-input>
         </el-form-item>
         <el-form-item>
-          <kt-button label="查询" type="primary" perms="expenseManagement:accountInformation:query"
-            @click="queryStaffInfo" />
+          <kt-button
+            label="查询"
+            type="primary"
+            perms="expenseManagement:accountInformation:query"
+            @click="queryStaffInfo"
+          />
         </el-form-item>
       </el-form>
     </el-row>
     <!-- 新增 -->
-    <kt-button label="新增账户" type="primary" :plain="true" perms="expenseManagement:accountInformation:add"
-      @click="addAmount" />
-    <kt-button class="operation" label="费用支出明细导出" type="primary" :plain="true"
-      perms="expenseManagement:accountInformation:expenseDetailsImport" @click="expentData" />
-    <kt-button class="operation" label="账户信息导出" type="primary" :plain="true"
-      perms="expenseManagement:accountInformation:accountInformationImport" @click="userInfoExpentData" />
+    <kt-button
+      label="新增账户"
+      type="primary"
+      :plain="true"
+      perms="expenseManagement:accountInformation:add"
+      @click="addAmount"
+    />
+    <kt-button
+      class="operation"
+      label="费用支出明细导出"
+      type="primary"
+      :plain="true"
+      perms="expenseManagement:accountInformation:expenseDetailsImport"
+      @click="expentData"
+    />
+    <kt-button
+      class="operation"
+      label="账户信息导出"
+      type="primary"
+      :plain="true"
+      perms="expenseManagement:accountInformation:accountInformationImport"
+      @click="userInfoExpentData"
+    />
     <!-- 表格 -->
-    <el-table :data="accountData" border size="small" ref="account" :header-cell-style="{
-      background: '#F2F7FC',
-      fontWeight: '900',
-      color: '#606266',
-    }" height="600px" style="width: 100%; margin-top: 30px" @expand-change="handleRowChange">
+    <el-table
+      :data="accountData"
+      border
+      size="small"
+      ref="account"
+      :header-cell-style="{
+        background: '#F2F7FC',
+        fontWeight: '900',
+        color: '#606266',
+      }"
+      height="600px"
+      style="width: 100%; margin-top: 30px"
+      @expand-change="handleRowChange"
+    >
       <el-table-column type="expand">
         <template slot-scope="scope">
-          <el-table :data="scope.row.invAccountCardList" size="small" :header-cell-style="{
-            background: '#ccc',
-            fontWeight: '900',
-            color: '#606266',
-          }" style="width: 100%">
-            <el-table-column type="index" width="50" align="center" label="序号">
+          <el-table
+            :data="scope.row.invAccountCardList"
+            size="small"
+            :header-cell-style="{
+              background: '#ccc',
+              fontWeight: '900',
+              color: '#606266',
+            }"
+            style="width: 100%"
+          >
+            <el-table-column
+              type="index"
+              width="50"
+              align="center"
+              label="序号"
+            >
             </el-table-column>
-            <el-table-column v-for="(childItem, index) in childColums" :key="'child' + index" :prop="childItem.prop"
-              align="center" :label="childItem.label" :min-width="childItem.minWidth">
+            <el-table-column
+              v-for="(childItem, index) in childColums"
+              :key="'child' + index"
+              :prop="childItem.prop"
+              align="center"
+              :label="childItem.label"
+              :min-width="childItem.minWidth"
+            >
             </el-table-column>
-            <el-table-column fixed="right" label="操作" align="center" width="300">
+            <el-table-column
+              fixed="right"
+              label="操作"
+              align="center"
+              width="300"
+            >
               <template slot-scope="scopes">
-                <kt-button label="编辑" size="mini" perms="expenseManagement:accountInformation:bankCardUpdate"
-                  @click="childEdit(scopes.row)" />
-                <kt-button label="删除" type="danger" size="mini"
-                  perms="expenseManagement:accountInformation:bankCardDelete" @click="cardDelete(scopes.row)" />
-                <kt-button label="收入" type="success" size="mini"
+                <kt-button
+                  label="编辑"
+                  size="mini"
+                  perms="expenseManagement:accountInformation:bankCardUpdate"
+                  @click="childEdit(scopes.row)"
+                />
+                <kt-button
+                  label="删除"
+                  type="danger"
+                  size="mini"
+                  perms="expenseManagement:accountInformation:bankCardDelete"
+                  @click="cardDelete(scopes.row)"
+                />
+                <kt-button
+                  label="收入"
+                  type="success"
+                  size="mini"
                   perms="expenseManagement:accountInformation:bankCardIncome"
-                  @click="handleTableIncome(scope.row, scopes.row)" />
-                <kt-button label="支出" type="warning" size="mini"
-                  perms="expenseManagement:accountInformation:bankCardExpenses" @click="handleTableExpend(scopes.row)" />
+                  @click="handleTableIncome(scope.row, scopes.row)"
+                />
+                <kt-button
+                  label="支出"
+                  type="warning"
+                  size="mini"
+                  perms="expenseManagement:accountInformation:bankCardExpenses"
+                  @click="handleTableExpend(scopes.row)"
+                />
               </template>
             </el-table-column>
           </el-table>
         </template>
       </el-table-column>
-      <el-table-column v-for="(dataItem, dataIndex) in columns" :key="dataIndex" :label="dataItem.label"
-        :prop="dataItem.prop" :min-width="dataItem.minWidth" align="center">
+      <el-table-column
+        v-for="(dataItem, dataIndex) in columns"
+        :key="dataIndex"
+        :label="dataItem.label"
+        :prop="dataItem.prop"
+        :min-width="dataItem.minWidth"
+        align="center"
+      >
       </el-table-column>
       <el-table-column fixed="right" label="操作" align="center" width="240">
         <template slot-scope="scope">
-          <kt-button label="编辑" size="mini" perms="expenseManagement:accountInformation:update"
-            @click.native.prevent="handleTableEdit(scope.row, scope)" />
-          <kt-button label="删除" type="danger" size="mini" perms="expenseManagement:accountInformation:delete"
-            @click.native.prevent="handleTableDelete(scope.row)" />
-          <el-tooltip class="item" effect="dark" content="新增卡信息" placement="bottom-end">
-            <kt-button label="新增" type="success" size="mini" perms="expenseManagement:accountInformation:bankCardAdd"
-              @click.native.prevent="handleTableAdd(scope.row)" />
+          <kt-button
+            label="编辑"
+            size="mini"
+            perms="expenseManagement:accountInformation:update"
+            @click.native.prevent="handleTableEdit(scope.row, scope)"
+          />
+          <kt-button
+            label="删除"
+            type="danger"
+            size="mini"
+            perms="expenseManagement:accountInformation:delete"
+            @click.native.prevent="handleTableDelete(scope.row)"
+          />
+          <el-tooltip
+            class="item"
+            effect="dark"
+            content="新增卡信息"
+            placement="bottom-end"
+          >
+            <kt-button
+              label="新增"
+              type="success"
+              size="mini"
+              perms="expenseManagement:accountInformation:bankCardAdd"
+              @click.native.prevent="handleTableAdd(scope.row)"
+            />
           </el-tooltip>
         </template>
       </el-table-column>
     </el-table>
-    <el-pagination @size-change="handleSizeChange" layout="total, sizes, prev, pager, next, jumper"
-      @current-change="refreshPageRequest" :current-page="pageRequest.pageNo" :page-size="pageRequest.pageSize"
-      :page-sizes="[20, 50, 100, 200, 300, 400, 500]" :total="pageRequest.totalSize"
-      style="float: left; margin-left: 20px; margin-top: 20px">
+    <el-pagination
+      @size-change="handleSizeChange"
+      layout="total, sizes, prev, pager, next, jumper"
+      @current-change="refreshPageRequest"
+      :current-page="pageRequest.pageNo"
+      :page-size="pageRequest.pageSize"
+      :page-sizes="[20, 50, 100, 200, 300, 400, 500]"
+      :total="pageRequest.totalSize"
+      style="float: left; margin-left: 20px; margin-top: 20px"
+    >
     </el-pagination>
     <!-- 新增修改弹框 -->
-    <expense-component ref="expenseComponent" :type="type" :formData="type == 1 ? accountFormData : accountCardFormData"
-      :formDataId="formDataId" :title="title" :dialogFormVisible="dialogFormVisible"
-      :nature_businessData="nature_businessData" @resetForm="resetForm" @submitForm="submitForm"
-      @setDateInterval="setDateInterval"></expense-component>
+    <expense-component
+      ref="expenseComponent"
+      :type="type"
+      :formData="type == 1 ? accountFormData : accountCardFormData"
+      :formDataId="formDataId"
+      :title="title"
+      :dialogFormVisible="dialogFormVisible"
+      :nature_businessData="nature_businessData"
+      @resetForm="resetForm"
+      @submitForm="submitForm"
+      @setDateInterval="setDateInterval"
+    ></expense-component>
     <!-- 支出弹框 -->
-    <el-dialog class="dialog expendDialog" title="支出信息" :close-on-click-modal="false" :before-close="expendResetForm"
-      :visible.sync="expendDialogVisible" width="60%">
+    <el-dialog
+      class="dialog expendDialog"
+      title="支出信息"
+      :close-on-click-modal="false"
+      :before-close="expendResetForm"
+      :visible.sync="expendDialogVisible"
+      width="60%"
+    >
       <!-- 支出表格 -->
-      <kt-common-table :operationWidth="130" class="ktTable expendTable" ref="expendTable" :data="expendPageResult"
-        :columns="expendColumns" :showBatchDelete="false" :showOperation="true" :button1Name="expendButton1Name"
-        permsButton1="expenseManagement:accountInformation:changeStatus" button2Background="#92D050"
-        button3Background="#f56c6c" button1Icon="el-icon-s-finance" @handleButton1="handleTableConfirm($event)"
-        @findPage="getExpendData" :isshowpagination="true"></kt-common-table>
+      <kt-common-table
+        :operationWidth="130"
+        class="ktTable expendTable"
+        ref="expendTable"
+        :data="expendPageResult"
+        :columns="expendColumns"
+        :showBatchDelete="false"
+        :showOperation="true"
+        :button1Name="expendButton1Name"
+        permsButton1="expenseManagement:accountInformation:changeStatus"
+        button2Background="#92D050"
+        button3Background="#f56c6c"
+        button1Icon="el-icon-s-finance"
+        @handleButton1="handleTableConfirm($event)"
+        @findPage="getExpendData"
+        :isshowpagination="true"
+      ></kt-common-table>
     </el-dialog>
     <!-- 收入弹框 -->
-    <el-dialog class="dialog expendDialog" title="收入信息" :close-on-click-modal="false" :before-close="incomeResetForm"
-      :visible.sync="incomeDialogVisible" width="60%">
-      <el-form :model="inComeFormData" :rules="inComeFormRules" ref="inComeFormData" label-width="130px" size="small"
-        class="inComeForm">
+    <el-dialog
+      class="dialog expendDialog"
+      title="收入信息"
+      :close-on-click-modal="false"
+      :before-close="incomeResetForm"
+      :visible.sync="incomeDialogVisible"
+      width="60%"
+    >
+      <el-form
+        :model="inComeFormData"
+        :rules="inComeFormRules"
+        ref="inComeFormData"
+        label-width="130px"
+        size="small"
+        class="inComeForm"
+      >
         <el-row>
           <el-col :span="12">
             <el-form-item label="转账方" prop="company">
-              <el-select v-model="inComeFormData.company" filterable placeholder="" @change="companyChange">
-                <el-option v-for="item in collectionData" :key="item.bankCardNum" :label="item.name"
-                  :value="item.nameValue">
+              <el-select
+                v-model="inComeFormData.company"
+                filterable
+                placeholder=""
+                @change="companyChange"
+              >
+                <el-option
+                  v-for="item in collectionData"
+                  :key="item.bankCardNum"
+                  :label="item.name"
+                  :value="item.nameValue"
+                >
                 </el-option>
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="收款方" prop="collectionMessage">
-              <el-input disabled v-model="inComeFormData.collectionMessage" autocomplete="off"></el-input>
+              <el-input
+                disabled
+                v-model="inComeFormData.collectionMessage"
+                autocomplete="off"
+              ></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
             <el-form-item label="金额" prop="outerFlag">
-              <el-input-number v-model="inComeFormData.applyAmount" :min="0" :precision="2" @blur="chageAppl"
-                :max="99999999999999999" label=""></el-input-number>
+              <el-input-number
+                v-model="inComeFormData.applyAmount"
+                :min="0"
+                :precision="2"
+                @blur="chageAppl"
+                :max="99999999999999999"
+                label=""
+              ></el-input-number>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="大写金额" prop="bigApplyAmount">
-              <el-input v-model="inComeFormData.bigApplyAmount" disabled autocomplete="off"></el-input>
+              <el-input
+                v-model="inComeFormData.bigApplyAmount"
+                disabled
+                autocomplete="off"
+              ></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row class="collec">
           <el-col :span="24">
             <el-form-item label="资金流向" style="width: 100%">
-              <el-input v-model="inComeFormData.company" disabled autocomplete="off"></el-input>
+              <el-input
+                v-model="inComeFormData.company"
+                disabled
+                autocomplete="off"
+              ></el-input>
               <i class="el-icon-right"></i>
-              <el-input disabled v-model="inComeFormData.collectionMessage" autocomplete="off"></el-input>
+              <el-input
+                disabled
+                v-model="inComeFormData.collectionMessage"
+                autocomplete="off"
+              ></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12"> </el-col>
@@ -146,21 +329,39 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="支付方式" prop="payMethod">
-              <el-select v-model="inComeFormData.payMethod" multiple placeholder="">
-                <el-option v-for="item in payment_methodsData" :key="item.value" :label="item.label" :value="item.value">
+              <el-select
+                v-model="inComeFormData.payMethod"
+                multiple
+                placeholder=""
+              >
+                <el-option
+                  v-for="item in payment_methodsData"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                >
                 </el-option>
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="资金用途" prop="fundUse">
-              <el-cascader v-model="inComeFormData.fundUse" :show-all-levels="true" :clearable="true"
-                :checkStrictly="true" :emitPath="false" placeholder="" :options="fundFlowData" filterable :props="{
+              <el-cascader
+                v-model="inComeFormData.fundUse"
+                :show-all-levels="true"
+                :clearable="true"
+                :checkStrictly="true"
+                :emitPath="false"
+                placeholder=""
+                :options="fundFlowData"
+                filterable
+                :props="{
                   children: 'child',
                   label: 'category',
                   value: 'category',
                   checkStrictly: false,
-                }"></el-cascader>
+                }"
+              ></el-cascader>
             </el-form-item>
           </el-col>
         </el-row>
@@ -174,24 +375,44 @@
         </el-row>
         <el-row class="profit_box">
           <el-col :span="12">
-            <el-form-item v-for="item in affiliationData2" :key="item.profitId + 'sr'" :label="item.profitName"
-              prop="entProfit">
-              <el-input-number v-model="item.profit" :min="0" placeholder="请输入利润" :max="99999999999999"
-                label=""></el-input-number>
+            <el-form-item
+              v-for="item in affiliationData2"
+              :key="item.profitId + 'sr'"
+              :label="item.profitName"
+              prop="entProfit"
+            >
+              <el-input-number
+                v-model="item.profit"
+                :min="0"
+                placeholder="请输入利润"
+                :max="99999999999999"
+                label=""
+              ></el-input-number>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item v-for="item in affiliationData" :key="item.profitId + 'zc'" :label="item.profitName"
-              prop="entProfit">
-              <el-input-number v-model="item.profit" :min="0" placeholder="请输入利润" :max="99999999999999"
-                label=""></el-input-number>
+            <el-form-item
+              v-for="item in affiliationData"
+              :key="item.profitId + 'zc'"
+              :label="item.profitName"
+              prop="entProfit"
+            >
+              <el-input-number
+                v-model="item.profit"
+                :min="0"
+                placeholder="请输入利润"
+                :max="99999999999999"
+                label=""
+              ></el-input-number>
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="incomeResetForm()" size="small">取 消</el-button>
-        <el-button type="primary" @click="submitIncomeForm()" size="small">确 定</el-button>
+        <el-button type="primary" @click="submitIncomeForm()" size="small"
+          >确 定</el-button
+        >
       </div>
     </el-dialog>
     <el-dialog
@@ -206,7 +427,13 @@
           <el-radio :label="0">全部</el-radio>
           <el-radio :label="1">部分支出</el-radio>
         </el-radio-group>
-        <el-input v-show="expendRadio" v-model="payOutAmount" placeholder="请输入支出金额" style="width: 200px;margin-left: 20px;" size="small"></el-input>
+        <el-input
+          v-show="expendRadio"
+          v-model="payOutAmount"
+          placeholder="请输入支出金额"
+          style="width: 200px; margin-left: 20px"
+          size="small"
+        ></el-input>
       </div>
       <div slot="footer" class="dialog-footer">
         <el-button @click="closeExpenditure" size="small">取 消</el-button>
@@ -236,11 +463,11 @@ export default {
     this.business("nature_business"); //营业性质字典
     this.getTreeList(); //获取资金用途字典
   },
-  mounted() { },
+  mounted() {},
   data() {
     return {
       expenditureRow: {},
-      payOutAmount: 0,    // 已转金额
+      payOutAmount: 0, // 已转金额
       expendRadio: 0,
       expenditureVisible: false,
       type: 1, //1为账户信息,2为卡信息 账户和卡判断条件
@@ -510,6 +737,7 @@ export default {
         owned: "", //所属地
         biller: "", //开票员
         tentativeEstimates: "", //暂估值
+        simpleName: "", //账户简称
       },
       //账户卡信息form
       accountCardFormData: {
@@ -842,41 +1070,44 @@ export default {
     },
     // 确定支出
     submitFormExpend() {
-      const num = this.expenditureRow.applyAmount - this.expenditureRow.payoutAmount
+      const num =
+        this.expenditureRow.applyAmount - this.expenditureRow.payoutAmount;
       if (num == 0) {
-        this.$message.error('支出金额不足')
-        return
+        this.$message.error("支出金额不足");
+        return;
       }
       if (this.payOutAmount > num) {
-        this.$message.error('支出金额不足')
-        return
+        this.$message.error("支出金额不足");
+        return;
       }
       if (!this.expendRadio) {
-        this.payOutAmount = num
+        this.payOutAmount = num;
       }
-      this.$api.expense.updateExpenditure({
-        excelAccountOperateId: this.expenditureRow.excelAccountOperateId,
-        payOutAmount: this.payOutAmount
-      }).then((res) => {
-        if (res.code == 200) {
-          this.$message.success('支出成功')
-          this.queryStaffInfo()
-          this.closeExpenditure()
-        } else {
-          this.$message.error(res.msg)
-        }
-      })
+      this.$api.expense
+        .updateExpenditure({
+          excelAccountOperateId: this.expenditureRow.excelAccountOperateId,
+          payOutAmount: this.payOutAmount,
+        })
+        .then((res) => {
+          if (res.code == 200) {
+            this.$message.success("支出成功");
+            this.queryStaffInfo();
+            this.closeExpenditure();
+          } else {
+            this.$message.error(res.msg);
+          }
+        });
     },
     closeExpenditure() {
-      this.expenditureRow = {}
-      this.payOutAmount = 0
-      this.expendRadio = 0
-      this.expenditureVisible = false
+      this.expenditureRow = {};
+      this.payOutAmount = 0;
+      this.expendRadio = 0;
+      this.expenditureVisible = false;
     },
     //弹框确认支出按钮事件
     handleTableConfirm(e) {
-      this.expenditureRow = e.row
-      this.expenditureVisible = true
+      this.expenditureRow = e.row;
+      this.expenditureVisible = true;
       // this.$confirm("确认把该条数据设为已转账状态吗?", "提示", {
       //   type: "warning",
       // })
@@ -906,7 +1137,7 @@ export default {
       }
     },
     //获取支出页面列表数据
-    expendFindPage(data) { },
+    expendFindPage(data) {},
     //获取页面列表数据
     findPage(data) {
       if (data && data.pageRequest) {
@@ -997,7 +1228,7 @@ export default {
             }
           });
         })
-        .catch(() => { });
+        .catch(() => {});
     },
     //账户删除数据事件
     handleTableDelete(row) {
@@ -1014,7 +1245,7 @@ export default {
             }
           });
         })
-        .catch(() => { });
+        .catch(() => {});
     },
     //收入弹框取消重置
     incomeResetForm() {
@@ -1261,11 +1492,11 @@ export default {
     left: 0; */
 }
 
-.addremove-box>i {
+.addremove-box > i {
   cursor: pointer;
 }
 
-.frame>>>.el-date-editor {
+.frame >>> .el-date-editor {
   width: 100%;
 }
 
@@ -1273,40 +1504,40 @@ export default {
   width: 200px;
 }
 
-.ktTable>>>.el-button span {
+.ktTable >>> .el-button span {
   margin-left: 0;
 }
 
-.expendTable>>>.bottomFixed {
+.expendTable >>> .bottomFixed {
   position: static;
   margin-top: 20px;
 }
 
-.expendTable>>>.el-table {
+.expendTable >>> .el-table {
   height: 400px !important;
 }
 
-.expendDialog>>>.el-dialog__body {
+.expendDialog >>> .el-dialog__body {
   overflow-y: auto;
   height: 500px;
 }
 
-.collec>>>.el-form-item__content {
+.collec >>> .el-form-item__content {
   display: flex;
   align-items: center;
 }
 
-.inComeForm>>>.el-input-number__decrease,
-.inComeForm>>>.el-input-number__increase {
+.inComeForm >>> .el-input-number__decrease,
+.inComeForm >>> .el-input-number__increase {
   display: none;
 }
 
-.inComeForm>>>.el-input-number,
-.inComeForm>>>.el-cascader {
+.inComeForm >>> .el-input-number,
+.inComeForm >>> .el-cascader {
   width: 100%;
 }
 
-.inComeForm>>>.el-input.is-disabled .el-input__inner {
+.inComeForm >>> .el-input.is-disabled .el-input__inner {
   background-color: #fff;
   color: #606266;
 }
@@ -1316,11 +1547,11 @@ export default {
   font-size: 20px;
 }
 
-.ktTable>>>.cell .el-button {
+.ktTable >>> .cell .el-button {
   width: 80px;
 }
 
-.expendDialog>>>.cell .el-button {
+.expendDialog >>> .cell .el-button {
   width: auto;
 }
 

+ 3 - 3
src/views/Home.vue

@@ -32,16 +32,16 @@ export default {
         if (Cookies.get("token")) {
           let userId = sessionStorage.getItem("user");
           getUserIP((ip) => {
-            getAddressLocation(ip, (info) => {
+            // getAddressLocation(ip, (info) => {
               let data = {
-                ...info,
+                ip,
                 systemType: '1',
                 userId
               };
               websocketSend(
                 data
               );
-            });
+            // });
           })
         }
         else {

+ 9 - 5
src/views/Login.vue

@@ -198,6 +198,7 @@ export default {
       sysId: null,
       systemType: "1", //系统类型
       addressInfo: {}, //当前登录信息
+      locationIp:'',//当前ip
     };
   },
   created() {
@@ -311,7 +312,8 @@ export default {
                   setTimeout(() => {
                     let userId = sessionStorage.getItem("user");
                     let data = {
-                      ...this.addressInfo,
+                      // ...this.addressInfo,
+                      ip:this.locationIp,
                       userId,
                       systemType: this.systemType,
                     };
@@ -341,7 +343,8 @@ export default {
     submitLocation() {
       let location = {
         systemType: this.systemType,
-        ...this.addressInfo,
+        // ...this.addressInfo,
+        ip:this.locationIp,
       };
       this.$api.login.uploadLocationInfo(location).then((res) => {
         if (res.code !== 200) {
@@ -489,9 +492,10 @@ export default {
     this.refreshCaptcha();
     /**获取当前登录的ip地址 */
     getUserIP((ip) => {
-      getAddressLocation(ip, (info) => {
-        this.addressInfo = info;
-      });
+      this.locationIp=ip
+      // getAddressLocation(ip, (info) => {
+        // this.addressInfo = ip;
+      // });
     });
   },
   computed: {

+ 24 - 12
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>
@@ -39,7 +39,7 @@
                                 </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-input size="small" clearable placeholder="请输入联系电话" v-model="queryFrom.mobile"></el-input>
                                     </el-form-item>
                                 </el-col>
                                 <!-- <el-col :span="6">
@@ -89,18 +89,20 @@
                                             @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-form ref="queryFormRef" :inline="false" :model="settingDialog.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="settingDialog.queryFrom.userId"></el-input>
@@ -113,7 +115,7 @@
                     </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-input size="small" clearable placeholder="请输入联系电话" v-model="settingDialog.queryFrom.mobile"></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :lg="6" :md="8">
@@ -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>

+ 16 - 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="60px">
                                 <el-col :span="6">
                                     <el-form-item label="工号">
                                         <el-input size="small" clearable placeholder="请输入工号" v-model="queryFrom.userId"></el-input>
@@ -90,18 +90,19 @@
                                             @selectionChange="selectionChange">
                         </kt-common-table>
                     </div>
-                    
+
                 </SplitArea>
             </Split>
         </el-main>
-        <el-dialog  :title="settingDialog.title"  :visible.sync="settingDialog.visible"  
+        <el-dialog  :title="settingDialog.title"  :visible.sync="settingDialog.visible"
                     :close-on-press-escape="false"  :modal="true"
-                    :show-close="false" 
+                    :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-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>
@@ -180,6 +181,7 @@ export default {
             treeData: [],   //左侧树数据
             currentKey: '', //选中的左侧节点
             pageResult: {}, //表格数据
+            currentName:"",
             columns: [  //表格列
                 {   prop: "deptId", label: "部门编码", minWidth: 80, sortable: false },
                 {   prop: "pdeptName",  label: "机构名称",  minWidth: 120,  sortable: false },
@@ -313,6 +315,7 @@ export default {
         },
         handleNodeClick(node){  //点击左侧树节点,查询右侧列表
             this.currentKey = node.id;
+            this.currentName = node.name;
             this.pageData = {
                 pageNum: 1,
                 pageSize: 20,
@@ -436,7 +439,7 @@ export default {
             })
             let data = {
                 leaderId: this.currentKey,
-                leaderName: this.leaderName,
+                leaderName: this.currentName,
                 userIds: arr
             }
             this.$api.user.setManage(data).then(res =>{
@@ -446,6 +449,7 @@ export default {
                         type: "success",
                     });
                     this.reset();
+                    this.searchLeaderFun();
                     this.settingDialog.visible = false;
                 }else{
                     this.$message.error(res.msg);
@@ -453,7 +457,6 @@ export default {
             }).catch(e =>{
                 console.log(e);
             })
-            // console.log(this.selection);
         },
         BatchCancellation(){    //批量取消
             let arr = [];
@@ -465,7 +468,6 @@ export default {
                 leaderName: this.leaderName,
                 userIds: arr
             }
-            console.log(data);
             this.$api.user.cancleManage(data).then(res =>{
                 if(res.code == 200){
                     this.$message({
@@ -473,6 +475,7 @@ export default {
                         type: "success",
                     });
                     this.reset();
+                    this.searchLeaderFun();
                     this.selectionDialog.visible = false;
                 }else{
                     this.$message.error(res.msg);
@@ -517,6 +520,7 @@ export default {
     }
     .container_right{
         padding: 20px;
+      margin-bottom: 20px;
         .el-form-item{
             display: flex;
         }
@@ -594,5 +598,8 @@ export default {
             }
         }
     }
+  .split::-webkit-scrollbar {
+    width: 0px !important; /* 设置滚动条宽度 */
+  }
 }
 </style>

+ 24 - 3
src/views/Task/External/TemporaryOrder.vue

@@ -33,6 +33,7 @@
 <script>
 import templateTable from "@/components/TemplateTable/index.vue";
 import { mapState } from "vuex";
+import {temporaryStorageOrder} from "../../../http/moudules/task";
 
 export default {
   name: "baosi",
@@ -116,7 +117,13 @@ export default {
             click: (row, index) => {
               return this.haldNewDetail(row);
             },
-          },
+          },{
+            type: "danger",
+            label: "删除",
+            click: (row, index) => {
+              return this.handleDelete(row);
+            },
+          }
         ],
       },
       tableData: [],
@@ -182,9 +189,23 @@ export default {
       this.pageData.pageNum = val;
       this.findPage();
     },
+    handleDelete(row) {
+      this.$confirm("确认删除该条数据吗?", "提示", {
+        type: "warning",
+      }).then(() => {
+        this.$api.task.temporaryStorageOrder({orderno: row.orderno}).then((res) => {
+          if (res.code == 200) {
+            this.$message.success(res.msg)
+            this.findPage();
+          } else {
+            this.$message.error(res.msg);
+          }
+        });
+      });
+    }
   },
 };
 </script>
-      
+
 <style scoped lang="scss">
-</style>
+</style>