Pārlūkot izejas kodu

Merge branch 'dev' of http://www.baoxianzhanggui.com:8090/sxzgd/vue-insagent-pc into dev

yaoyao 2 gadi atpakaļ
vecāks
revīzija
0a6a5dc9b7

+ 3 - 2
config/dev.env.js

@@ -8,10 +8,10 @@ module.exports = merge(prodEnv, {
 
   ENV_CONFIG:'"dev"',
   // 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:'"https://sxzgkj.baoxianzhanggui.com/web-api"'//正式服务器
   // BASE_URL: '"http://192.168.0.115:8080/"' //凯森
-  // BASE_URL: '"http:///192.168.0.106:8080/"',//屈晨
+  // BASE_URL: '"http://192.168.0.106:8080/"',//屈晨
   // BASE_URL: '"http://192.168.0.253:8080/"',//田智
   // BASE_URL: '"http:///192.168.0.42:8080/"',//武鸿鹏
   // BASE_URL: '"http:///192.168.0.253:8080/"',//田智
@@ -20,6 +20,7 @@ module.exports = merge(prodEnv, {
   // BASE_URL: '"http://192.168.0.250:8080/"',//
   BASE_URL: '"http:///192.168.0.103:8080/"',//霍续亮
   // BASE_URL: '"http:///192.168.0.52:8080/"',//贺礼霄
+  // BASE_URL: '"http:///192.168.0.55:8080/"',//蔡雅茹
 })
 
 

+ 5 - 0
package-lock.json

@@ -2686,6 +2686,11 @@
         "randomfill": "^1.0.3"
       }
     },
+    "crypto-js": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
+      "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
+    },
     "css-color-names": {
       "version": "0.0.4",
       "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",

+ 1 - 0
package.json

@@ -21,6 +21,7 @@
     "base-64": "^1.0.0",
     "bignumber.js": "^9.1.2",
     "cross-env": "^7.0.3",
+    "crypto-js": "^4.2.0",
     "echarts": "^4.9.0",
     "element-china-area-data": "^6.1.0",
     "element-ui": "^2.15.14",

+ 2 - 1
src/components/TemplateTable/index.vue

@@ -283,7 +283,7 @@
         >
           <template slot-scope="scope">
             <span>
-              {{ scope.row[item.prop] &&scope.row[item.prop].length>0?statMaps(item.options)[scope.row[item.prop]] : "-" }}</span
+              {{ statMaps(item.options)[scope.row[item.prop]] }}</span
             >
           </template>
         </el-table-column>
@@ -512,6 +512,7 @@ export default {
     statMaps(list) {
       if (!list) return;
       let obj = {};
+
       list.forEach((item) => {
         obj[item.value || item.id || item.dictValue] = item.label || item.value || item.dictTag;
       });

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

@@ -1148,4 +1148,33 @@ export const getProductId = (data) => {
     method: "post",
     data
   })
+}
+// 平安报价
+export const pinganquote = (data) => {
+  return axios({
+    url: '/order/pingAnApi/quote',
+    method: 'post',
+    data
+  })
+}
+export const pinganaudit = (data) => {
+  return axios({
+    url: '/order/pingAnApi/audit',
+    method: 'post',
+    data
+  })
+}
+export const pingansubmitImage = (data) => {
+  return axios({
+    url: '/order/pingAnApi/submitImage',
+    method: 'post',
+    data
+  })
+}
+export const getDocumentStatusList = (data) => {
+  return axios({
+    url: '/order/pingAnApi/getDocumentStatusList',
+    method: 'post',
+    data
+  })
 }

+ 64 - 6
src/http/moudules/sys.js

@@ -31,7 +31,7 @@ export const deleteSys = (data) => {
 *  系统分配管理
 */
 //系统分配列表
-export const getSysAllocationList=(data) => {
+export const getSysAllocationList = (data) => {
     return axios({
         url: '/sysUserLinkSys/queryPage',
         method: 'post',
@@ -39,7 +39,7 @@ export const getSysAllocationList=(data) => {
     })
 }
 //系统字典列表
-export const sysDictList=(data) => {
+export const sysDictList = (data) => {
     return axios({
         url: '/sysSys/sysList',
         method: 'post',
@@ -47,7 +47,7 @@ export const sysDictList=(data) => {
     })
 }
 //绑定关系系统人员
-export const bindSysUser=(data) => {
+export const bindSysUser = (data) => {
     return axios({
         url: '/sysUserLinkSys/addOrUpdate',
         method: 'post',
@@ -55,7 +55,7 @@ export const bindSysUser=(data) => {
     })
 }
 //解绑关系
-export const sysUserLinkSysDelete=(data) => {
+export const sysUserLinkSysDelete = (data) => {
     return axios({
         url: '/sysUserLinkSys/delete',
         method: 'post',
@@ -64,7 +64,7 @@ export const sysUserLinkSysDelete=(data) => {
 }
 
 // 获取费用配置
-export const getConfig=(data) => {
+export const getConfig = (data) => {
     return axios({
         url: '/fee/getConfig',
         method: 'get',
@@ -74,7 +74,7 @@ export const getConfig=(data) => {
 
 
 // 更新费用配置
-export const updateConfig=(data) => {
+export const updateConfig = (data) => {
     return axios({
         url: '/fee/updateConfig',
         method: 'post',
@@ -83,5 +83,63 @@ export const updateConfig=(data) => {
 }
 
 
+// 二维码配置
+// 列表
+export const qrCodeList = (data) => {
+    return axios({
+        url: '/qrCode/getList',
+        method: 'post',
+        data
+    })
+}
+// 新增
+export const qrCodeSave = (data) => {
+    return axios({
+        url: '/qrCode/save',
+        method: 'post',
+        data
+    })
+}
+// 编辑
+export const qrCodeEdit = (data) => {
+    return axios({
+        url: '/qrCode/edit',
+        method: 'post',
+        data
+    })
+}
+// 删除
+export const qrCodedelete = (params) => {
+    return axios({
+        url: '/qrCode/delete',
+        method: 'DELETE',
+        params
+    })
+}
+//获取成本利润表
+export const getLanorList = (data) => {
 
+    return axios({
+        url: '/insLaborCost/queryPage',
+        method: 'post',
+        data
+    })
 
+}
+//添加及编辑
+export const editorLanor = (data) => {
+
+    return axios({
+        url: '/insLaborCost/addOrUpdate',
+        method: 'post',
+        data
+    })
+}
+export const deleteLanor = (data) => {
+
+    return axios({
+        url: '/insLaborCost/delete',
+        method: 'post',
+        data
+    })
+}

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

@@ -209,7 +209,7 @@ export const saveUserRole = (data) => {
 // 修改用户密码
 export const updatePwd = (params) => {
   return axios({
-    url: '/user/updatePwd?id=' + params.id + '&password=' + params.password,
+    url: '/user/updatePwd?id=' + params.id + '&password=' + params.password+'&oldPassword=' + params.oldPassword,
     method: 'post'
   })
 }

+ 0 - 1
src/views/DistributionManage/DistributionManage.vue

@@ -356,7 +356,6 @@
       },
       onZTreeClick: function(evt, treeId, treeNode) {
         // 点击事件
-        console.log(evt.type, treeNode);
         this.currentTreeNode = treeNode;
         this.pageRequest.columnFilters.deptid.value = this.currentTreeNode.id;
         this.findPage();

+ 248 - 163
src/views/Login.vue

@@ -1,65 +1,133 @@
 <template>
   <div class="wavy-line">
-
-    <div id="content" style="height: 100%;">
+    <div id="content" style="height: 100%">
       <div id="Login">
-
         <div class="log_on">
           <div class="left_content"></div>
           <div class="right_content">
-            <img v-if="toggleQrCode" class="img1" src="../assets//image/log_code.png" alt="" @click="switchLogin">
-            <img v-else class="img1" src="../assets//image/QR_code.png" alt="" @click="switchCode">
-            <div style="padding:15% 20% ">
-              <img class="img2" src="../assets//image/logo_img.png" alt="">
-              <div v-show="toggleQrCode" style="text-align: center;">
-                <div class="img3" v-loading="loadingCode" id="qrcode" ref="qrcode">
+            <img
+              v-if="toggleQrCode"
+              class="img1"
+              src="../assets//image/log_code.png"
+              alt=""
+              @click="switchLogin"
+            />
+            <img
+              v-else
+              class="img1"
+              src="../assets//image/QR_code.png"
+              alt=""
+              @click="switchCode"
+            />
+            <div style="padding: 15% 20%">
+              <img class="img2" src="../assets//image/logo_img.png" alt="" />
+              <div v-show="toggleQrCode" style="text-align: center">
+                <div
+                  class="img3"
+                  v-loading="loadingCode"
+                  id="qrcode"
+                  ref="qrcode"
+                >
                   <transition name="el-fade-in">
-                    <el-result v-if="tipVisibility" class="scanSuccess" icon="success" title="扫码成功"></el-result>
+                    <el-result
+                      v-if="tipVisibility"
+                      class="scanSuccess"
+                      icon="success"
+                      title="扫码成功"
+                    ></el-result>
                   </transition>
                 </div>
-                <el-button icon="el-icon-refresh-right" size="small" style="margin-top: 10px;"
-                  @click="refresh">刷新二维码</el-button>
+                <el-button
+                  icon="el-icon-refresh-right"
+                  size="small"
+                  style="margin-top: 10px"
+                  @click="refresh"
+                  >刷新二维码</el-button
+                >
                 <p class="code_word">打开<b>客户端APP</b>扫描二维码</p>
               </div>
-              <el-form v-show="!toggleQrCode" size="medium" :model="loginForm" :rules="fieldRules" ref="loginForm"
-                label-position="left" label-width="0">
+              <el-form
+                v-show="!toggleQrCode"
+                size="medium"
+                :model="loginForm"
+                :rules="fieldRules"
+                ref="loginForm"
+                label-position="left"
+                label-width="0"
+              >
                 <el-form-item prop="account" label="">
-                  <el-input type="text" prefix-icon="el-icon-user" v-model="loginForm.account" auto-complete="off"
-                    placeholder="账号"></el-input>
+                  <el-input
+                    type="text"
+                    prefix-icon="el-icon-user"
+                    v-model="loginForm.account"
+                    auto-complete="off"
+                    placeholder="账号"
+                  ></el-input>
                 </el-form-item>
                 <el-form-item prop="password" label="">
-                  <el-input type="password" prefix-icon="el-icon-lock" v-model="loginForm.password" auto-complete="off"
-                    placeholder="密码"></el-input>
+                  <el-input
+                    type="password"
+                    prefix-icon="el-icon-lock"
+                    v-model="loginForm.password"
+                    auto-complete="off"
+                    placeholder="密码"
+                  ></el-input>
                 </el-form-item>
                 <el-row>
                   <el-col :span="14">
                     <el-form-item prop="captcha" label="">
-                      <el-input type="test" prefix-icon="el-icon-success" v-model="loginForm.captcha" auto-complete="off"
-                        placeholder="验证码">
+                      <el-input
+                        type="test"
+                        prefix-icon="el-icon-success"
+                        v-model="loginForm.captcha"
+                        auto-complete="off"
+                        placeholder="验证码"
+                      >
                       </el-input>
                     </el-form-item>
                   </el-col>
                   <el-col class="line" :span="1">&nbsp;</el-col>
                   <el-col :span="9">
-                    <img style="width: 100%;height: 32px;margin: 2px;" class="pointer" :src="loginForm.src"
-                      @click="refreshCaptcha">
+                    <img
+                      style="width: 100%; height: 32px; margin: 2px"
+                      class="pointer"
+                      :src="loginForm.src"
+                      @click="refreshCaptcha"
+                    />
                   </el-col>
                 </el-row>
-                <el-row style="width:100%;margin-top: 15px;">
-                  <el-button size="medium" type="primary" plain style="width:48%;float: left;"
-                    @click.native.prevent="reset">重
-                    置</el-button>
-                  <el-button size="medium" type="primary" style="width:48%;float: right;"
-                    @click.native.prevent="login('loginForm')" :loading="loading">登 录</el-button>
+                <el-row style="width: 100%; margin-top: 15px">
+                  <el-button
+                    size="medium"
+                    type="primary"
+                    plain
+                    style="width: 48%; float: left"
+                    @click.native.prevent="reset"
+                    >重 置</el-button
+                  >
+                  <el-button
+                    size="medium"
+                    type="primary"
+                    style="width: 48%; float: right"
+                    @click.native.prevent="login('loginForm')"
+                    :loading="loading"
+                    >登 录</el-button
+                  >
                 </el-row>
               </el-form>
             </div>
           </div>
         </div>
         <div class="L_footer">
-          <div class="w1100" style="padding-top: 15px;">
-            <p style="font-weight: bold;">版权所有©1994-2014山西掌柜科技有限公司 未经许可不得复制转载或者摘编</p>
-            <p style="font-weight: bold;">copyright 1994-2014 ZhangGui Property Insurance Co.Lid All rights reserved</p>
+          <div class="w1100" style="padding-top: 15px">
+            <p style="font-weight: bold">
+              版权所有©1994-2014山西掌柜科技有限公司
+              未经许可不得复制转载或者摘编
+            </p>
+            <p style="font-weight: bold">
+              copyright 1994-2014 ZhangGui Property Insurance Co.Lid All rights
+              reserved
+            </p>
           </div>
         </div>
       </div>
@@ -68,20 +136,20 @@
 </template>
 
 <script>
-import { mapState } from 'vuex'
-import Cookies from "js-cookie"
+import { mapState } from "vuex";
+import Cookies from "js-cookie";
 import QRCode from "qrcodejs2";
-import { md5 } from "@/utils/md5"
-import ThemePicker from "@/components/ThemePicker"
-import LangSelector from "@/components/LangSelector"
-import { login } from '@/api/user'
-
+import { md5 } from "@/utils/md5";
+import ThemePicker from "@/components/ThemePicker";
+import LangSelector from "@/components/LangSelector";
+import { login } from "@/api/user";
+import CryptoJS from "crypto-js";
 export default {
-  name: 'Login',
+  name: "Login",
   inject: ["reload"],
   components: {
     ThemePicker,
-    LangSelector
+    LangSelector,
   },
   data() {
     return {
@@ -90,107 +158,119 @@ export default {
       rememberPassword: false,
       loading: false,
       loginForm: {
-        account: '',
-        password: '',
-        captcha: '',
-        src: ''
+        account: "",
+        password: "",
+        captcha: "",
+        src: "",
       },
       fieldRules: {
-        account: [
-          { required: true, message: '请输入账号', trigger: 'blur' },
-        ],
-        password: [
-          { required: true, message: '请输入密码', trigger: 'blur' },
-        ],
-        captcha: [
-          { required: true, message: '请输入验证码', trigger: 'blur' }
-        ]
+        account: [{ required: true, message: "请输入账号", trigger: "blur" }],
+        password: [{ required: true, message: "请输入密码", trigger: "blur" }],
+        captcha: [{ required: true, message: "请输入验证码", trigger: "blur" }],
       },
       checked: true,
       toggleQrCode: false,
-      uuid: '',
+      uuid: "",
       polling: null,
       tipVisibility: false,
-    }
+    };
   },
   created() {
     // 记住密码
-    if (Cookies.get('accountInfo')) {
-      const accountInfo = JSON.parse(Cookies.get('accountInfo'));
-      this.loginForm.account = accountInfo.account
-      this.loginForm.password = accountInfo.password
-      this.rememberPassword = true
+    if (Cookies.get("accountInfo")) {
+      const accountInfo = JSON.parse(Cookies.get("accountInfo"));
+      this.loginForm.account = accountInfo.account;
+      this.loginForm.password = accountInfo.password;
+      this.rememberPassword = true;
     }
-    this.enterEvent()//初始化回车事件
+    this.enterEvent(); //初始化回车事件
   },
   methods: {
     enterEvent() {
-      if (this.$route.name === '登录') {
+      if (this.$route.name === "登录") {
         document.onkeydown = (e) => {
-          const url = e.target.baseURI.match(/login/)
-          if (e.keyCode == 13 && url.includes('login')) {
+          const url = e.target.baseURI.match(/login/);
+          if (e.keyCode == 13 && url.includes("login")) {
             this.login();
           }
-        }
+        };
       }
     },
     login(formName) {
+      // let token = CryptoJS.AES.encrypt(
+      //   "2856c49f-7b34-4e83-b3c8-2c37dba7cb3b",
+      //   "token"
+      // ).toString();
+      // console.log(token);
+      // window.location.href =
+      //   "http://localhost:8080/#/form/agreement?token=" + token;
       this.$refs[formName].validate((valid) => {
         if (valid) {
-          this.loading = true
+          this.loading = true;
           let userInfo = {
             account: this.loginForm.account,
             password: this.loginForm.password,
             captcha: this.loginForm.captcha.toLowerCase(),
-            captchaId: this.loginForm.captchaId
-          }
-
-          // this.$store.dispatch('login', userInfo)
-          //     .then(() => {
-          //       if (this.rememberPassword) { //是否保存密码
-          //       Cookies.set('accountInfo', { 'account': this.loginForm.account, 'password': this.loginForm.password, })
-          //     } else {
-          //       Cookies.remove('accountInfo')
-          //     }
-          //     Cookies.set('user', userInfo.account) /
-          //     sessionStorage.setItem('user', userInfo.account) // 保存用户到本地会话
-          //     this.$store.commit('menuRouteLoaded', false) // 要求重新加载导航菜单
-          //     this.$router.push('/')
-          //     this.loading = false
-          //   })
-          //   .catch(() => {
-          //     this.loading = false
-          //   })
+            captchaId: this.loginForm.captchaId,
+          };
 
-          this.$api.login.login2(userInfo).then((res) => {
-            if (res.code != 200) {
-              this.$message({
-                message: res.msg,
-                type: 'error',
-                duration: 2000
-              })
-              if (res.code == 500 && res.msg == '验证码不正确') {
-                this.refreshCaptcha()
+          this.$store
+            .dispatch("login", userInfo)
+            .then(() => {
+              if (this.rememberPassword) {
+                //是否保存密码
+                Cookies.set("accountInfo", {
+                  account: this.loginForm.account,
+                  password: this.loginForm.password,
+                });
+              } else {
+                Cookies.remove("accountInfo");
               }
-            }
-            else {
-              if (this.rememberPassword) { //是否保存密码
-                Cookies.set('accountInfo', { 'account': this.loginForm.account, 'password': this.loginForm.password, })
+              Cookies.set("user", userInfo.account) /
+                sessionStorage.setItem("user", userInfo.account); // 保存用户到本地会话
+              this.$store.commit("menuRouteLoaded", false); // 要求重新加载导航菜单
+              this.$router.push("/");
+              this.loading = false;
+            })
+            .catch(() => {
+              this.loading = false;
+            });
+
+          this.$api.login
+            .login2(userInfo)
+            .then((res) => {
+              if (res.code != 200) {
+                this.$message({
+                  message: res.msg,
+                  type: "error",
+                  duration: 2000,
+                });
+                if (res.code == 500 && res.msg == "验证码不正确") {
+                  this.refreshCaptcha();
+                }
               } else {
-                Cookies.remove('accountInfo')
+                if (this.rememberPassword) {
+                  //是否保存密码
+                  Cookies.set("accountInfo", {
+                    account: this.loginForm.account,
+                    password: this.loginForm.password,
+                  });
+                } else {
+                  Cookies.remove("accountInfo");
+                }
+                Cookies.set("token", res.data); // 放置token到Cookie
+                this.getDictItems();
+                this.getUser();
               }
-              Cookies.set('token', res.data) // 放置token到Cookie
-              this.getDictItems()
-              this.getUser();
-            }
-            this.loading = false
-          }).catch((res) => {
-            this.$message({
-              message: res.message,
-              type: 'error',
-              duration: 2000
+              this.loading = false;
             })
-          });
+            .catch((res) => {
+              this.$message({
+                message: res.message,
+                type: "error",
+                duration: 2000,
+              });
+            });
         } else {
           return false;
         }
@@ -199,75 +279,82 @@ export default {
     getDictItems() {
       //--数据字典--
       // 性别
-      this.$api.dict
-        .findByLableName('sex')
-        .then((response) => {
-          localStorage.setItem('sexOptions', JSON.stringify(response.data)) // 保存用户到本地会话
-        })
+      this.$api.dict.findByLableName("sex").then((response) => {
+        localStorage.setItem("sexOptions", JSON.stringify(response.data)); // 保存用户到本地会话
+      });
       // 状态
-      this.$api.dict
-        .findByLableName('user_status')
-        .then((response) => {
-          localStorage.setItem('user_statusoptions', JSON.stringify(response.data)) // 保存用户到本地会话
-        })
+      this.$api.dict.findByLableName("user_status").then((response) => {
+        localStorage.setItem(
+          "user_statusoptions",
+          JSON.stringify(response.data)
+        ); // 保存用户到本地会话
+      });
     },
     // 用户信息
     getUser() {
       this.$api.user.getLoginUser().then((response) => {
         if (response.code == 200) {
           //头像地址拼接
-          if (response.data.headSculpture != '' && response.data.headSculpture != null && response.data.headSculpture != undefined) {
-            response.data.headSculpture = process.env.BASE_URL + response.data.headSculpture
+          if (
+            response.data.headSculpture != "" &&
+            response.data.headSculpture != null &&
+            response.data.headSculpture != undefined
+          ) {
+            response.data.headSculpture =
+              process.env.BASE_URL + response.data.headSculpture;
           }
-          localStorage.setItem('user_data', JSON.stringify(response.data))
+          localStorage.setItem("user_data", JSON.stringify(response.data));
           this.$store.commit("SET_USER", response.data);
-          sessionStorage.setItem('user', response.data.id)
-          Cookies.set('user', response.data.id)
-          localStorage.setItem('routerId', '420');
-          this.$store.commit('menuRouteLoaded', false);
-          this.$router.push('/');
+          sessionStorage.setItem("user", response.data.id);
+          Cookies.set("user", response.data.id);
+          localStorage.setItem("routerId", "420");
+          this.$store.commit("menuRouteLoaded", false);
+          this.$router.push("/");
           this.loadingCode = false;
+        } else {
+          this.$message.error(response.msg);
         }
-        else {
-          this.$message.error(response.msg)
-        }
-      })
+      });
       this.$api.role.findAll().then((res) => {
-        localStorage.setItem('find_all', JSON.stringify(res.data))
-      })
+        localStorage.setItem("find_all", JSON.stringify(res.data));
+      });
     },
     refreshCaptcha() {
-      let randnum = Math.floor(Math.random() * (1000000 - 1 + 1)) + 1
-      this.loginForm.src = process.env.BASE_URL + "/captchaById?t=" + new Date().getTime() + '&captchaId=' + randnum;
-      this.loginForm.captchaId = randnum
-
+      let randnum = Math.floor(Math.random() * (1000000 - 1 + 1)) + 1;
+      this.loginForm.src =
+        process.env.BASE_URL +
+        "/captchaById?t=" +
+        new Date().getTime() +
+        "&captchaId=" +
+        randnum;
+      this.loginForm.captchaId = randnum;
     },
     reset() {
-      this.$refs.loginForm.resetFields()
+      this.$refs.loginForm.resetFields();
     },
     // 切换主题
     onThemeChange: function (themeColor) {
-      this.$store.commit('setThemeColor', themeColor)
+      this.$store.commit("setThemeColor", themeColor);
     },
     switchLogin() {
       this.toggleQrCode = !this.toggleQrCode;
-      this.stopPolling()
+      this.stopPolling();
     },
     switchCode() {
       this.toggleQrCode = !this.toggleQrCode;
-      this.generateQrCode();//获取二维码
+      this.generateQrCode(); //获取二维码
     },
     generateQrCode() {
       let randnum = new Date().getTime();
-      let uuid = md5(randnum)
-      let url = process.env.BASE_URL + '/scanQrCode?uuid=' + uuid;
+      let uuid = md5(randnum);
+      let url = process.env.BASE_URL + "/scanQrCode?uuid=" + uuid;
       this.$nextTick(() => {
-        this.creatQrCode(url)
+        this.creatQrCode(url);
         this.$api.login.getQRCode(uuid).then((res) => {
           this.uuid = res.data.uuid;
           this.startPolling();
         });
-      })
+      });
     },
     checkScanStatus() {
       this.$api.login.QrCodeStatusQuery(this.uuid).then((res) => {
@@ -275,8 +362,8 @@ export default {
           this.tipVisibility = true;
           this.loadingCode = true;
           setTimeout(() => {
-            this.CodeLoginSuccess(res.data.token)
-          }, 1500)
+            this.CodeLoginSuccess(res.data.token);
+          }, 1500);
         }
       });
     },
@@ -291,8 +378,8 @@ export default {
       this.polling = null;
     },
     CodeLoginSuccess(token) {
-      Cookies.set('token', token) // 放置token到Cookie
-      this.getDictItems()//获取字典
+      Cookies.set("token", token); // 放置token到Cookie
+      this.getDictItems(); //获取字典
       this.getUser();
     },
 
@@ -311,12 +398,10 @@ export default {
           height: 200,
           colorDark: "#000000",
           colorLight: "#ffffff",
-          correctLevel: QRCode.CorrectLevel.H
+          correctLevel: QRCode.CorrectLevel.H,
         });
       }
     },
-
-
   },
 
   beforeDestroy() {
@@ -324,18 +409,18 @@ export default {
     this.stopPolling();
   },
   mounted() {
-    this.refreshCaptcha()
+    this.refreshCaptcha();
   },
   computed: {
     ...mapState({
-      themeColor: state => state.app.themeColor
-    })
+      themeColor: (state) => state.app.themeColor,
+    }),
   },
   //销毁函数
   destroyed() {
     document.onkeydown = null;
-  }
-}
+  },
+};
 </script>
 
 <style lang="scss" scoped>
@@ -359,7 +444,7 @@ export default {
   padding: 30px;
   box-sizing: border-box;
 
-  &>div {
+  & > div {
     width: 176px;
     height: 176px;
     border: 1px solid var(--themeColor);
@@ -435,12 +520,12 @@ export default {
         display: block;
         margin-left: auto;
         margin-right: auto;
-        border: 1px solid #EAEDF1;
+        border: 1px solid #eaedf1;
         position: relative;
       }
 
       .el-form-item {
-        margin-bottom: 30px
+        margin-bottom: 30px;
       }
 
       .code_word {
@@ -449,7 +534,7 @@ export default {
         margin-top: 20px;
 
         b {
-          color: #B20404;
+          color: #b20404;
         }
       }
     }
@@ -458,7 +543,7 @@ export default {
   .L_footer {
     height: 64px;
     bottom: 0;
-    color: #EAEDF1;
+    color: #eaedf1;
     font-size: 12px;
 
     p {

+ 28 - 6
src/views/Psdreset/Psdreset.vue

@@ -3,16 +3,21 @@
 	<el-dialog title="修改密码" width="500px" :visible.sync="backupVisible" :close-on-click-modal="false" :modal=false>
     <el-form  size="mini" :model="psdForm" :rules="psdRules" ref="psdRef" label-width="130px">
       <el-row>
+        <el-col :span="20">
+          <el-form-item label="旧密码" prop="oldPassword">
+            <el-input v-model="psdForm.oldPassword" type="password" placeholder="请输入旧密码" style="width: 100%;" auto-complete="off" ></el-input>
+          </el-form-item>
+        </el-col>
         <el-col :span="20">
           <el-form-item label="新密码" prop="password">
-            <el-input v-model="psdForm.password" placeholder="请输入新密码" style="width: 100%;"></el-input>
+            <el-input v-model="psdForm.password" type="password" placeholder="请输入新密码" style="width: 100%;" ></el-input>
           </el-form-item>
         </el-col>
       </el-row>
       <el-row>
         <el-col :span="20">
           <el-form-item label="确认密码" prop="repassword">
-            <el-input v-model="psdForm.repassword" placeholder="请再次输入密码" style="width: 100%;"></el-input>
+            <el-input v-model="psdForm.repassword" type="password" placeholder="请再次输入密码" style="width: 100%;" auto-complete="off"></el-input>
           </el-form-item>
         </el-col>
       </el-row>
@@ -46,9 +51,11 @@ export default {
             backupVisible: false,
             psdForm:{
               password:"",
-              repassword:""
+              repassword:"",
+              oldPassword:''
             },
             psdRules:{
+              oldPassword: [{ required: true,message: '请设置旧密码',trigger: 'blur'}],
               password: [{ required: true,message: '请设置初始密码',trigger: 'blur'},{ min: 6, max: 10, message: '长度在 6 到 10 个字符', trigger: 'blur' }],
               repassword: [{ required: true,message: '请再次输入密码',trigger: 'blur'},{ validator: validaterPassword, trigger: 'blur'}],
             }
@@ -58,6 +65,10 @@ export default {
     // 设置可见性
     setBackupVisible: function (backupVisible) {
         this.backupVisible = backupVisible
+    },
+     // 删除cookie
+     deleteCookie: function (name) {
+      Cookies.remove(name)
     },
     handleReset:function (backupVisible) {
       let auditid = Cookies.get('user') // 放置token到Cookie
@@ -65,15 +76,26 @@ export default {
           if(valid1){
             let param = {
               id:auditid,
-              password:this.psdForm.password
+              password:this.psdForm.password,
+              oldPassword:this.psdForm.oldPassword,
             }
             this.$api.user.updatePwd(param).then((res) => {
               if(res.code ==200){
                 this.$refs['psdRef'].resetFields()
                 this.backupVisible = false;
-                this.$message({ message: '操作成功', type: 'success' })
+                this.$message({ message: res.msg ||'操作成功', type: 'success' })
+                localStorage.clear()
+                sessionStorage.removeItem("user")
+                this.deleteCookie("token")
+                this.deleteCookie("user")
+                this.deleteCookie("name")
+                this.$router.push("/login")
+                Cookies.removeAllCookie();
+                this.$api.login.logout().then((res) => {
+                }).catch(function (res) {
+                })
               } else {
-                  this.$message({message: '操作失败', type: 'error'})
+                  this.$message({message: res.msg ||'操作失败', type: 'error'})
               }
 
             })

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

@@ -313,8 +313,8 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="8"> </el-col>
         </el-row>
+
         <el-row>
           <el-col :span="8">
             <el-form-item label="机构类型" prop="comtype">
@@ -536,7 +536,16 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="12">
+          <el-col :span="16">
+            <el-form-item label="机构地址" prop="address">
+              <el-input
+                v-model="deptDataForm.address"
+                placeholder="机构地址"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="8">
             <el-form-item label="排序" prop="orderNum">
               <el-input-number
                 v-model="deptDataForm.orderNum"
@@ -977,6 +986,9 @@ export default {
       this.operType = "ADD";
       this.dialogTitle = "新增部门";
       this.deptDataForm.deptType = "D"; //类型是机构(C是机构,D是部门)
+      this.deptDataForm.address = ""; //
+      this.deptDataForm.name = ""; //
+      this.deptDataForm.orderNum = "0"; //
       this.deptDataForm.parentId = this.currentTreeNode.id;
       this.$api.dept.findMaxDeptId(this.currentTreeNode.id).then((res) => {
         let newId = parseInt(res.data) + 1;

+ 0 - 1
src/views/Sys/Dict.vue

@@ -281,7 +281,6 @@ export default {
       this.pageRequest.columnFilters = {
         label: { name: "label", value: this.filters.label },
       };
-      console.log(this.pageResult);
       this.$api.dict
         .findPage(this.pageRequest)
         .then((res) => {

+ 351 - 0
src/views/Sys/Profit.vue

@@ -0,0 +1,351 @@
+<template>
+  <div>
+    <el-form>
+      <el-row>
+        <el-col :span="4">
+          <el-form-item label="日期">
+            <el-date-picker
+              v-model="searchForm.yearAndMonth"
+              type="month"
+              placeholder="选择年月"
+              value-format="yyyy-MM"
+              clearable
+              @change="getList"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-button type="primary" @click="add">添加</el-button>
+        </el-col>
+      </el-row>
+    </el-form>
+
+    <templateTable
+      :searchData.sync="formData"
+      :tableConfig="tableConfig"
+      :data="tabelList"
+      @getList="getList"
+      :pagination="pageData"
+    >
+    </templateTable>
+    <el-dialog
+      :title="dialogTitle"
+      :visible.sync="dialogVisible"
+      width="50%"
+      :before-close="handleClose"
+    >
+      <el-form
+        :model="formData"
+        :rules="formDataRules"
+        ref="formData"
+        label-width="100px"
+        class="demo-formData"
+        :inline="true"
+      >
+        <el-form-item label="日期" prop="yearAndMonth">
+          <el-date-picker
+            v-model="formData.yearAndMonth"
+            type="month"
+            placeholder="选择年月"
+            value-format="yyyy-MM"
+            clearable
+            :disabled="formData.id != null ? true : false"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="人员成本" prop="laborCost">
+          <el-input
+            v-model="formData.laborCost"
+            clearable
+            placeholder="请输入人员成本"
+            @input="
+              formData.laborCost = formData.laborCost.replace(
+                /[^\d*\.\d+$]/g,
+                ''
+              )
+            "
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="固定成本" prop="fixedCost">
+          <el-input
+            v-model="formData.fixedCost"
+            clearable
+            placeholder="请输入固定成本"
+            @input="
+              formData.fixedCost = formData.fixedCost.replace(
+                /[^\d*\.\d+$]/g,
+                ''
+              )
+            "
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="变动成本" prop="variableCost">
+          <el-input
+            v-model="formData.variableCost"
+            clearable
+            placeholder="请输入变动成本"
+            @input="
+              formData.variableCost = formData.variableCost.replace(
+                /[^\d*\.\d+$]/g,
+                ''
+              )
+            "
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="净利润" prop="netProfit">
+          <el-input
+            v-model="formData.netProfit"
+            clearable
+            placeholder="请输入净利润成本"
+            @input="
+              formData.netProfit = formData.netProfit.replace(
+                /[^\d*\.\d+$]/g,
+                ''
+              )
+            "
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="经营利润" prop="operatingProfit">
+          <el-input
+            v-model="formData.operatingProfit"
+            clearable
+            placeholder="请输入经营利润"
+            @input="
+              formData.operatingProfit = formData.operatingProfit.replace(
+                /[^\d*\.\d+$]/g,
+                ''
+              )
+            "
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="税费" prop="taxation">
+          <el-input
+            v-model="formData.taxation"
+            clearable
+            placeholder="请输入税费"
+            @input="
+              formData.taxation = formData.taxation.replace(/[^\d*\.\d+$]/g, '')
+            "
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="cancel('formData')">取 消</el-button>
+        <el-button type="primary" @click="confirm('formData')">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import templateTable from "@/components/TemplateTable/index.vue";
+export default {
+  components: {
+    // KtButton,
+    // tree,
+    templateTable,
+    // peopleImage,
+  },
+  data() {
+    return {
+      formData: {
+        yearAndMonth: "",
+        fixedCost: "",
+        laborCost: "",
+        netProfit: "",
+        operatingProfit: "",
+        taxation: "",
+        variableCost: "",
+      },
+      searchForm: {
+        yearAndMonth: "",
+      },
+      formDataRules: {
+        yearAndMonth: [
+          { required: true, message: "请选择日期", trigger: "change" },
+        ],
+        fixedCost: [
+          { required: true, message: "请输入固定成本", trigger: "blur" },
+        ],
+        laborCost: [
+          { required: true, message: "请输入人力成本", trigger: "blur" },
+        ],
+        netProfit: [
+          { required: true, message: "请输入净利润", trigger: "blur" },
+        ],
+        operatingProfit: [
+          { required: true, message: "请输入经营利润", trigger: "blur" },
+        ],
+        taxation: [{ required: true, message: "请输入税费", trigger: "blur" }],
+        variableCost: [
+          { required: true, message: "请输入变动成本", trigger: "blur" },
+        ],
+        // fixedCost: [
+        //   { required: true, message: "请输入固定成本", trigger: "blur" },
+        // ],
+      },
+
+      pageData: {
+        pageNum: 1,
+        pageSize: 10,
+        totalSize: 0,
+      },
+      dialogVisible: false,
+      dialogTitle: "",
+      tableConfig: {
+        columns: [
+          // 数据列
+          { prop: "laborCost", label: "人员成本", type: "text" },
+          { prop: "fixedCost", label: "固定成本", type: "text" },
+          { prop: "variableCost", label: "变动成本", type: "text" },
+          {
+            prop: "operatingProfit",
+            label: "经营利润",
+            type: "text",
+          },
+          { prop: "taxation", label: "税费", type: "text" },
+          { prop: "netProfit", label: "净利润", type: "text" },
+          { prop: "createDate", label: "创建时间", type: "text" },
+        ],
+        loading: true,
+        isPaginationShow: true,
+        isShowIndex: true,
+        operationWidth: "100",
+        optBtns: [
+          {
+            type: "primary",
+            label: "编辑",
+            // type: "button",
+            // perm: "agreement:taxSource:config",
+            click: (row, index) => {
+              return this.updateProfit(row);
+            },
+          },
+          {
+            type: "danger",
+            label: "删除",
+            // type: "button",
+            // perm: "agreement:taxSource:config",
+            click: (row, index) => {
+              return this.deleteProfit(row);
+            },
+          },
+        ],
+      },
+      tabelList: [],
+      originalForm: {},
+    };
+  },
+  created() {
+    this.getList();
+    this.originalForm = { ...this.formData };
+  },
+  mounted() {},
+  methods: {
+    inputChange(value, type) {
+      //   console.log(value, type);
+      if (type === "1") {
+        if (!this.reg.test(value)) {
+          this.formData.value = "";
+        }
+      }
+    },
+    updateProfit(row) {
+      //   console.log(row);
+      this.dialogTitle = "编辑";
+      this.formData.id = row.id;
+      this.formData.yearAndMonth = row.yearAndMonth;
+      this.formData.fixedCost = row.fixedCost;
+      this.formData.laborCost = row.laborCost;
+      this.formData.netProfit = row.netProfit;
+      this.formData.operatingProfit = row.operatingProfit;
+      this.formData.taxation = row.taxation;
+      this.formData.variableCost = row.variableCost;
+      this.dialogVisible = true;
+
+      //   this.formData = { ...row };
+    },
+    deleteProfit(row) {
+      this.$api.sys
+        .deleteLanor({ ids: [row.id] })
+        .then((res) => {
+          if (res.code == 200) {
+            this.$message.success(res.msg);
+
+            this.getList();
+          } else {
+            this.$message.error(res.msg);
+          }
+        })
+        .catch((err) => {
+          //
+        });
+    },
+    getList() {
+      this.tableConfig.loading = true;
+      this.$api.sys
+        .getLanorList({ ...this.searchForm, ...this.pageData })
+        .then((res) => {
+          if (res.code == 200) {
+            this.tableConfig.loading = false;
+
+            this.tabelList = res.data.content;
+            this.pageData.pageNum = res.data.pageNum;
+            this.pageData.pageSize = res.data.pageSize;
+            this.pageData.totalSize = res.data.totalSize;
+          } else {
+            this.$message.error(res.msg);
+          }
+        })
+        .catch((err) => {
+          this.$message.error(err.message);
+          this.tableConfig.loading = false;
+        });
+    },
+    add() {
+      this.dialogVisible = true;
+      this.dialogTitle = "添加";
+      this.formData = { ...this.originalForm };
+    },
+    handleClose() {
+      this.dialogVisible = false;
+    },
+    confirm(formName) {
+      // this.dialogVisible = false
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          //   delete
+          this.$api.sys
+            .editorLanor({
+              ...this.formData,
+            })
+            .then((res) => {
+              // console.log(res,666)
+              if (res.code == 200) {
+                this.$message.success(res.msg);
+                this.dialogVisible = false;
+                this.getList();
+              } else {
+                this.$message.error(res.msg);
+              }
+            });
+        } else {
+          // console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    cancel(formName) {
+      this.$refs[formName].resetFields();
+      this.formData.yearAndMonth = "";
+      this.dialogVisible = false;
+    },
+  },
+};
+</script>
+<style lang='scss' scoped>
+</style>

+ 429 - 0
src/views/Sys/QrCode.vue

@@ -0,0 +1,429 @@
+<template>
+  <div>
+    <div>
+      
+          <templateTable
+            :formList="formList"
+            :searchData.sync="queryFrom"
+            :tableConfig="tableConfig"
+            :btnGroup="btnGroup"
+            :data="pageResult"
+            @getList="findPage"
+            @handleSearchList="handleSearchList"
+            :pagination="pageData"
+          >
+          <!-- <template slot="qrCodeType" slot-scope="scope">
+              <span>
+                    {{ statMaps(scope.row.qrCodeType) }}</span
+                  >
+            </template> -->
+          </templateTable>
+    </div>
+
+    <!-- 新增修改界面 -->
+    <el-dialog
+      :title="dialogTitle"
+      width="40%"
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+      :before-close="handleDialogBefore"
+      @close="closeDialog"
+      v-dialogDrag
+    >
+          <el-form
+            :model="formData"
+            :rules="rules"
+            ref="formData"
+            :inline="true"
+            label-width="110px"
+            size="small"
+          >
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="保险公司ID" prop="insCompanyId">
+                  <el-input v-model="formData.insCompanyId" disabled></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="保险公司名称" prop="insCompanyName">
+                  <el-select v-model="formData.insCompanyName" clearable filterable  placeholder="选择保险公司名称" @change="deptChange">
+                <el-option v-for="(item, index) in InsCompanyList" :key="index" :label="item.name"
+                  :value="item.name"></el-option>
+              </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="api类型" prop="apiType">
+                  <el-select v-model="formData.apiType"  clearable  placeholder="请选择二维码类型">
+                    <el-option
+                      v-for="val in apiTypeoptions"
+                      :key="val.value"
+                      :label="val.label"
+                      :value="val.value">
+                    </el-option>
+                  </el-select>
+                  
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="二维码类型" prop="qrCodeType">
+                  <el-select v-model="formData.qrCodeType"  clearable  placeholder="请选择二维码类型">
+                    <el-option
+                      v-for="val in qrCodeTypeoptions"
+                      :key="val.value"
+                      :label="val.label"
+                      :value="val.value">
+                    </el-option>
+                  </el-select>
+                  
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        <span slot="footer" class="dialog-footer">
+           <el-button size="small" @click="dialogVisible = false">取 消</el-button>
+          <el-button  type="primary" size="small" @click="submitForm">提交</el-button>
+        </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import KtButton from "@/views/Core/KtButton"; // 按钮权限组件
+import templateTable from "../../components/TemplateTable/index.vue";
+export default {
+  components: {
+    KtButton,
+    templateTable,
+  },
+  data() {
+    return {
+      formList: [
+        {
+          prop: "qrCodeType", 
+          label: "二维码类型",
+          type: "select",
+          options:[]
+        },
+        {
+          label: "保险公司名称",
+          prop: "insCompanyId",
+          type: "company",
+        },
+        // {
+        //   label: "业务来源",
+        //   prop: "source",
+        //   type: "select",
+        //   options:[]
+        // },
+      ],
+      btnGroup: [
+        {
+          name: "新增",
+          click: (row, index) => { return this.handleAddButton() },
+
+        },
+      ],
+      InsCompanyList:[],
+      qrCodeTypeoptions:[],
+      apiTypeoptions:[
+            {
+              label:'api对接',
+              value:'1'
+            },
+            {
+              label:'python对接',
+              value:'2'
+            }
+          ],
+      tableConfig: {
+        columns: [
+          // 数据列
+          {
+            prop: "insCompanyName",
+            label: "保险公司名称",
+            type: "text",
+          },
+          { prop: "apiType", label: "api类型", type: "statMap",options:[
+            {
+              label:'api对接',
+              value:'1'
+            },
+            {
+              label:'python对接',
+              value:'2'
+            }
+          ] },
+
+          { prop: "qrCodeType", label: "二维码类型", type: "statMap",options:[] },
+         
+          { prop: "createBy", label: "操作人", type: "text" },
+        ],
+        loading: true,
+        isPaginationShow: true,
+        isShowIndex: true,
+        optBtns: [
+          {
+            type: "primary",
+            label: "编辑",
+            perm: "sys:agent:edit",
+            icon: "fa fa-edit",
+            click: (row, index) => {
+              return this.handleTableEdit(row);
+            },
+          },
+          {
+            type: "primary",
+            label: "删除",
+            icon: "el-icon-delete",
+            click: (row, index) => {
+              return this.handleTableDeleteFlag(row);
+            },
+          },
+        ],
+      },
+      rules:{
+        proportional: [
+            { required: true, message: '请输入抽成比例', trigger: 'blur' },
+          ],
+          userName: [
+            { required: true, message: '请选择名称', trigger: 'change' }
+          ],
+          deptName: [
+            { required: true, message: '请选择机构名称', trigger: 'change' }
+          ],
+      },
+      pageData: {
+        pageNum: 1,
+        pageSize: 10,
+        totalSize: 0,
+      },
+      formData: {
+        roleId: "20",
+      },
+      queryFrom: {},
+      pageResult: [],
+      dialogTitle: "",
+      dialogVisible: false, // 新增编辑界面是否显示
+    };
+  },
+  created() {
+    this.findPage();
+    // this.$api.insCompany.getDeptInfo().then(res=>{
+    //   if(res.code==200){
+    //     this.formList.forEach(e=>{
+    //       if(e.prop=='deptId'){
+    //         e.options=res.data
+    //       }
+    //     })
+    //     this.deptoption=res.data
+    //   }
+    // })
+    this.$api.cost.gainTopList({ type: 1 }).then((res) => {
+        if (res.data) {
+          this.InsCompanyList = res.data;
+        }
+      });
+    this.$api.dict.findByLableName('QRCode').then((res) => {
+        if (res.code == 200) {
+          this.formList.forEach(e=>{
+          if(e.prop=='qrCodeType'){
+            e.options=res.data
+          }
+        })
+        this.tableConfig.columns.forEach(e=>{
+          if(e.prop=='qrCodeType'){
+            e.options=res.data
+          }
+        })
+          this.qrCodeTypeoptions = res.data;
+        }
+      });
+  },
+  methods: {
+    userChange(val){
+      if(val){
+        this.formData.userId= this.useroption.find(e=>e.name==val).id
+      }
+      else{
+        this.formData.userId=''
+      }
+    },
+    deptChange(val){
+      if(val){
+        this.formData.insCompanyId= this.InsCompanyList.find(e=>e.name==val).id
+      }
+      else{
+        this.formData.insCompanyId=''
+      }
+    },
+    // 查询Start
+    queryStaffInfo() {
+      this.findPage();
+    },
+
+    
+    // 右侧列表的方法Start
+    findPage(data) {
+      this.tableConfig.loading = true;
+      this.$api.sys
+        .qrCodeList({
+          ...this.pageData,
+          ...data,
+        })
+        .then((res) => {
+          this.tableConfig.loading = false;
+          this.pageResult = res.data.content;
+          this.pageData.pageNum = res.data.pageNum;
+          this.pageData.pageSize = res.data.pageSize;
+          this.pageData.totalSize = res.data.totalSize;
+        });
+    },
+    handleSearchList(data) {
+      this.findPage(data);
+    },
+    //编辑
+    async handleTableEdit(params) {
+      let paramsForm=JSON.parse(JSON.stringify(params))
+      paramsForm.qrCodeType+=''
+      paramsForm.apiType+=''
+      this.dialogTitle = "编辑";
+      this.dialogVisible= true
+      this.formData=paramsForm
+      // this.$api.insCompany
+      //   .agencyQueryById(params.id)
+      //   .then((res) => {
+      //     if(res.code==200){
+      //       this.dialogTitle = "编辑";
+      //       this.dialogVisible= true
+      //       this.formData=res.data
+      //     }
+      //   });
+    },
+    // 删除单个人员
+    handleTableDeleteFlag(data) {
+      this.$confirm("确认删除?")
+        .then(() => {
+          this.$api.sys.qrCodedelete({id:data.id} ).then((res) => {
+            if (res.code == 200) {
+              this.$message({
+                message: "删除成功",
+                type: "success",
+              });
+              this.findPage();
+            } else {
+              this.$message.error(res.msg);
+            }
+          });
+        })
+        .catch(() => {});
+    },
+    //添加人员
+    handleAddButton() {
+      this.dialogTitle = "新增";
+      this.formData={}
+      this.dialogVisible = true;
+      if(this.$refs["formData"]){
+        this.$refs["formData"].resetFields();
+      }
+    },
+    handleDialogBefore(done) {
+      // 退出对话框之前确认提示
+      this.$confirm("确认关闭?")
+        .then((_) => {
+          done();
+        })
+        .catch((_) => {});
+    },
+    closeDialog() {
+      // 清空数据
+      this.deptInfo = {};
+      this.dialogVisible = false;
+    },
+    // 提交
+    submitForm() {
+      this.$refs.formData.validate((valid) => {
+        if (valid) {
+          this.$confirm("确认提交吗?", "提示", {}).then(() => {
+            if (this.dialogTitle == "新增") {
+              this.$api.sys
+                .qrCodeSave(this.formData)
+                .then((res) => {
+                  if (res.code == 200) {
+                    this.$message({
+                      message: "保存成功",
+                      type: "success",
+                    });
+                    this.dialogVisible = false;
+                    this.$refs["formData"].resetFields();
+                    this.findPage();
+                  } else {
+                    this.$message({
+                      message: `保存失败,请重新添加,(${res.msg})`,
+                      type: "error",
+                    });
+                  }
+                });
+            } else {
+              this.$api.sys
+                .qrCodeEdit(this.formData)
+                .then((res) => {
+                  if (res.code == 200) {
+                    this.$message({
+                      message: "编辑成功",
+                      type: "success",
+                    });
+                    this.dialogVisible = false;
+                    this.$refs["formData"].resetFields();
+                    this.findPage();
+                  } else {
+                    this.$message({
+                      message: `编辑失败,请重新添加,(${res.msg})`,
+                      type: "error",
+                    });
+                  }
+                });
+            }
+          });
+        }
+      });
+    },
+    // 下一步
+    
+  },
+};
+</script>
+
+<style scoped>
+.el-divider--horizontal {
+  margin: 4px 0;
+}
+
+/* 顶部查询条件样式Start */
+.queryFrom .el-row {
+  margin: 10px 0px;
+}
+
+.queryFrom .el-form-item {
+  margin-bottom: 0px;
+}
+
+.queryFrom .queryButton .el-form-item__content {
+  margin-left: 0px !important;
+}
+.disc {
+  -webkit-text-security: disc;
+  position: relative;
+}
+.none {
+  -webkit-text-security: none;
+  position: relative;
+}
+.icon {
+  color: #ccc;
+  position: absolute;
+  right: 0;
+  top: 10px;
+  text-align: center;
+}
+</style>

+ 399 - 404
src/views/Sys/SysManage/SysAllocation.vue

@@ -1,323 +1,301 @@
 <template>
-    <div>
-        <el-row class="queryFrom">
-            <el-form
-              ref="queryFormRef"
-             
-              label-width="80px"
-              size="small"
-            >
-              <el-row>
-                <el-col :span="4">
-                  <el-form-item label="系统名称">
-                  
-                      <el-input placeholder="请输入系统名称"  clearable v-model="searchForm.systemName"></el-input>
-                    
-                  </el-form-item>
-                </el-col>
-                <el-col :span="4">
-                  <el-form-item label="系统编码">
-                    
-                      <el-input placeholder="请输入系统编码"  clearable v-model="searchForm.systemCode"></el-input>
-                    
-                  </el-form-item>
-                </el-col>
-                <el-col :span="4">
-                  <el-form-item label="姓名">
-                    
-                      <el-input placeholder="请输入姓名"  clearable v-model="searchForm.userName"></el-input>
-                    
-                  </el-form-item>
-                </el-col>
-                <el-col :span="4">
-                  <el-form-item label="工号">
-                    
-                      <el-input placeholder="请输入工号"  clearable v-model="searchForm.userId"></el-input>
-                    
-                  </el-form-item>
-                </el-col>
-                <!-- <el-col :span="4">
-                  <el-form-item label="系统状态">
-                    <el-select v-model="searchForm.systemCode" placeholder="请选择系统状态">
-                        <el-option
-                          
-                            :label="'开启'"
-                            :value="1">
-                        </el-option>
-                        <el-option
-                          
-                            :label="'关闭'"
-                            :value="0">
-                        </el-option>
-                    </el-select>
-                
-                    
-                  </el-form-item>
-                </el-col> -->
-                <el-col :span="4">
-                  <el-form-item label="">
-                    <el-button type="primary" @click="getList">查询</el-button >
-                    <el-button type="primary" @click="addSys">添加</el-button>
-                  </el-form-item>
-                </el-col>
-               
-                <el-col :span="4">
-                  <el-form-item label="">
-                   
-                  </el-form-item>
-                </el-col>
-              </el-row>
-            </el-form>
-          </el-row>
-        <templateTable :searchData.sync="formData" :tableConfig="tableConfig" :data="tabelList" @getList="getList"
-            :pagination="pageData">
-        </templateTable>
-        <el-dialog
-            :title="dialogTitle"
-            :visible.sync="dialogVisible"
-            width="70%"
-            :before-close="handleClose">
-            <el-form :model="formData" :rules="formDataRules" ref="formData" label-width="100px" class="demo-formData">
-                <el-form-item label="系统名称" prop="systemName">
-                    <el-select clearable v-model="formData.systemName">
-
-                        <el-option v-for="item in optionList" :key="item.id" :value="item.id" :label="item.systemName">
-
-                        </el-option>
-                    </el-select>
-                   
-                </el-form-item>
-                <el-form-item label="是否全部用户" prop="">
-                    <el-switch
-                        v-model="formData.flag"
-                      
-                        :active-value="1"
-                        :inactive-value="0"></el-switch>
-                   
-                </el-form-item>
-                
-                <el-row>
-                <el-col :span="7">
-                  <el-form-item label="工号">
-                    <el-input
-                      clearable
-                      :size="overSize"
-                      placeholder="工号"
-                      v-model="personnePageRequest.userId"
-                    ></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="7">
-                  <el-form-item label="姓名">
-                    <el-input
-                      clearable
-                      :size="overSize"
-                      placeholder="姓名"
-                      v-model="personnePageRequest.name"
-                    ></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="7">
-                  <el-form-item label="机构">
-                    <el-cascader
-                      v-model="personnePageRequest.deptId"
-                      :size="overSize"
-                      :show-all-levels="false"
-                      :options="deptList"
-                      :props="optionProps"
-                      clearable
-                      filterable
-                    ></el-cascader>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="2">
-                  <el-form-item label label-width="10px">
-                    <el-button
-                      :size="overSize"
-                      type="primary"
-                      @click="personnelFindQuery()"
-                      >查询</el-button
-                    >
-                  </el-form-item>
-                </el-col>
-              </el-row>
-                <el-form-item label="用户信息" prop="">
-                    <el-table
-                    :data="personnePageReData"
-                    border
-                    ref="personneTable"
-                    width="100%"
-                    size="small"
-                    height="350"
-                    align="center"
-                    :header-cell-style="{
-                        background: '#F2F7FC',
-                        fontWeight: '900',
-                        color: '#606266',
-                    }"
-                    @selection-change="personneSelectionChange"
-                    :row-class-name="tableRowClassName"
-                    >
-                    <el-table-column type="selection" width="55"> </el-table-column>
-                    <el-table-column prop="userId" label="工号"> </el-table-column>
-                    <el-table-column prop="name" label="姓名"> </el-table-column>
-                    <el-table-column prop="deptName" label="机构名称">
-                    </el-table-column>
-                    
-               
-                    </el-table>
-                </el-form-item>
+  <div>
+    <el-form ref="queryFormRef" label-width="80px" size="small">
+      <el-row :gutter="24">
+        <el-col :span="4">
+          <el-form-item label="系统名称">
+            <el-input
+              placeholder="请输入系统名称"
+              clearable
+              v-model="searchForm.systemName"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="系统编码">
+            <el-input
+              placeholder="请输入系统编码"
+              clearable
+              v-model="searchForm.systemCode"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="姓名">
+            <el-input
+              placeholder="请输入姓名"
+              clearable
+              v-model="searchForm.userName"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="工号">
+            <el-input
+              placeholder="请输入工号"
+              clearable
+              v-model="searchForm.userId"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4" class="operation">
+          <el-button type="primary" @click="getList">查询</el-button>
+          <el-button type="primary" @click="addSys">添加</el-button>
+        </el-col>
+      </el-row>
+    </el-form>
 
-                <el-pagination
-                @size-change="handleSizeChange"
-                @current-change="refreshPageRequest"
-                :current-page="personnePageRequest.pageNum"
-                :page-sizes="[10, 20, 50, 100, 200, 300, 400, 500]"
-                :page-size="personnePageRequest.pageSize"
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="personnePageRequest.total"
-                >
-                </el-pagination>
+    <templateTable
+      :searchData.sync="formData"
+      :tableConfig="tableConfig"
+      :data="tabelList"
+      @getList="getList"
+      :pagination="pageData"
+    >
+    </templateTable>
+    <el-dialog
+      :title="dialogTitle"
+      :visible.sync="dialogVisible"
+      width="70%"
+      :before-close="handleClose"
+    >
+      <el-form
+        :model="formData"
+        :rules="formDataRules"
+        ref="formData"
+        label-width="100px"
+        class="demo-formData"
+      >
+        <el-form-item label="系统名称" prop="systemName">
+          <el-select clearable v-model="formData.systemName">
+            <el-option
+              v-for="item in optionList"
+              :key="item.id"
+              :value="item.id"
+              :label="item.systemName"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否全部用户" prop="">
+          <el-switch
+            v-model="formData.flag"
+            :active-value="1"
+            :inactive-value="0"
+          ></el-switch>
+        </el-form-item>
 
-             
-               
-                
-            </el-form>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="cancel('formData')">取 消</el-button>
-                <el-button type="primary" @click="confirm('formData')">确 定</el-button>
-            </span>
-        </el-dialog>
+        <el-row>
+          <el-col :span="7">
+            <el-form-item label="工号">
+              <el-input
+                clearable
+                :size="overSize"
+                placeholder="工号"
+                v-model="personnePageRequest.userId"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="7">
+            <el-form-item label="姓名">
+              <el-input
+                clearable
+                :size="overSize"
+                placeholder="姓名"
+                v-model="personnePageRequest.name"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="7">
+            <el-form-item label="机构">
+              <el-cascader
+                v-model="personnePageRequest.deptId"
+                :size="overSize"
+                :show-all-levels="false"
+                :options="deptList"
+                :props="optionProps"
+                clearable
+                filterable
+              ></el-cascader>
+            </el-form-item>
+          </el-col>
+          <el-col :span="2">
+            <el-form-item label label-width="10px">
+              <el-button
+                :size="overSize"
+                type="primary"
+                @click="personnelFindQuery()"
+                >查询</el-button
+              >
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item label="用户信息" prop="">
+          <el-table
+            :data="personnePageReData"
+            border
+            ref="personneTable"
+            width="100%"
+            size="small"
+            height="350"
+            align="center"
+            :header-cell-style="{
+              background: '#F2F7FC',
+              fontWeight: '900',
+              color: '#606266',
+            }"
+            @selection-change="personneSelectionChange"
+            :row-class-name="tableRowClassName"
+          >
+            <el-table-column type="selection" width="55"> </el-table-column>
+            <el-table-column prop="userId" label="工号"> </el-table-column>
+            <el-table-column prop="name" label="姓名"> </el-table-column>
+            <el-table-column prop="deptName" label="机构名称">
+            </el-table-column>
+          </el-table>
+        </el-form-item>
 
-    </div>
+        <el-pagination
+          @size-change="handleSizeChange"
+          @current-change="refreshPageRequest"
+          :current-page="personnePageRequest.pageNum"
+          :page-sizes="[10, 20, 50, 100, 200, 300, 400, 500]"
+          :page-size="personnePageRequest.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="personnePageRequest.total"
+        >
+        </el-pagination>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="cancel('formData')">取 消</el-button>
+        <el-button type="primary" @click="confirm('formData')">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
 import templateTable from "@/components/TemplateTable/index.vue";
 
 export default {
-    components: {
+  components: {
     // KtButton,
     // tree,
     templateTable,
     // peopleImage,
   },
-//   mixins: [mixin],
+  //   mixins: [mixin],
   data() {
     return {
-      
-        dialogVisible:false,
-        dialogTitle: "",
-        pageData: {
-            pageNum: 1,
-            pageSize: 10,
-            totalSize:0
-        },
-        inactiveValue:0,
-        activeValue:1,
-        formData: {
-            systemName:'',
-            userName:'',
-            userId:'',
-            systemCode:'',
-            flag:0
-        },
-        searchForm: {
-            systemName:'',
-            userName:'',
-            userId:'',
-            systemCode:'',
-        },
-        formDataRules: {
-            systemName: [
-                { required: true, message: '请输入系统名称', trigger: 'blur' },
-            ],
-            systemCode: [
-                { required: true, message: '请输入系统编码', trigger: 'blur' },
-            ],
-        },
+      dialogVisible: false,
+      dialogTitle: "",
+      pageData: {
+        pageNum: 1,
+        pageSize: 10,
+        totalSize: 0,
+      },
+      inactiveValue: 0,
+      activeValue: 1,
+      formData: {
+        systemName: "",
+        userName: "",
+        userId: "",
+        systemCode: "",
+        flag: 0,
+      },
+      searchForm: {
+        systemName: "",
+        userName: "",
+        userId: "",
+        systemCode: "",
+      },
+      formDataRules: {
+        systemName: [
+          { required: true, message: "请输入系统名称", trigger: "blur" },
+        ],
+        systemCode: [
+          { required: true, message: "请输入系统编码", trigger: "blur" },
+        ],
+      },
 
-        tableConfig: {
-            columns: [
-                // 数据列
-                { prop: "systemName", label: "系统名称", type: "text" },
-                { prop: "userName", label: "姓名", type: "text" },
-                { prop: "userId", label: "员工工号", type: "text" },
-                { prop: "systemCode", label: "系统编码", type: "text",
-                // type: "statMap",
-                    // options: [
-                    // {
-                    //     label: "否",
-                    //     value: "0",
-                    // },
-                    // {
-                    //     label: "是",
-                    //     value: "1",
-                    // },
-                    // ],
-                 },
-                { prop: "createTime", label: "创建时间", type: "text" },
+      tableConfig: {
+        columns: [
+          // 数据列
+          { prop: "systemName", label: "系统名称", type: "text" },
+          { prop: "userName", label: "姓名", type: "text" },
+          { prop: "userId", label: "员工工号", type: "text" },
+          {
+            prop: "systemCode",
+            label: "系统编码",
+            type: "text",
+            // type: "statMap",
+            // options: [
+            // {
+            //     label: "否",
+            //     value: "0",
+            // },
+            // {
+            //     label: "是",
+            //     value: "1",
+            // },
+            // ],
+          },
+          { prop: "createTime", label: "创建时间", type: "text" },
+        ],
+        loading: true,
+        isPaginationShow: true,
+        isShowIndex: true,
+        operationWidth: "100",
+        optBtns: [
+          {
+            type: "danger",
+            label: "删除",
+            // type: "button",
+            // perm: "agreement:taxSource:config",
+            click: (row, index) => {
+              return this.deleteSys(row);
+            },
+          },
+        ],
+      },
+      tabelList: [],
+      originalForm: null,
+      operationId: undefined,
+      optionList: [],
+      personnePageReData: [],
 
-            ],
-            loading: true,
-            isPaginationShow: true,
-            isShowIndex: true,
-            operationWidth: "100",
-            optBtns: [
-              
-                {
-                    type: "danger",
-                    label: "删除",
-                    // type: "button",
-                    // perm: "agreement:taxSource:config",
-                    click: (row, index) => {
-                        return this.deleteSys(row);
-                    },
-                },
-            ],
-        },
-        tabelList:[],
-        originalForm: null,
-        operationId:undefined,
-        optionList:[],
-        personnePageReData: [],
-       
-        personnePageRequest: {
-            //查询的默认条件
-            pageNum: 1,
-            pageSize: 10,
-            total: 0,
-            deptId: [],
-            name:"",
-            userId:''
-        },
-        deptList: [],
-        overSize: "small",
-        optionProps: {
-            checkStrictly: true,
-            value: "id",
-            label: "name",
-            children: "children",
-        },
-        multipleSelection: []
+      personnePageRequest: {
+        //查询的默认条件
+        pageNum: 1,
+        pageSize: 10,
+        total: 0,
+        deptId: [],
+        name: "",
+        userId: "",
+      },
+      deptList: [],
+      overSize: "small",
+      optionProps: {
+        checkStrictly: true,
+        value: "id",
+        label: "name",
+        children: "children",
+      },
+      multipleSelection: [],
     };
   },
   created() {
-    this.getList()
-    this.getSysDictList()
-    this.getAllCompany()
+    this.getList();
+    this.getSysDictList();
+    this.getAllCompany();
     // this.personnelFindPage()
 
-    this.originalForm={...this.formData}
-  },
-  mounted() {
-    
+    this.originalForm = { ...this.formData };
   },
-  watch: {
-   
-  },
-  methods:{
-     // 获取所有机构列表
+  mounted() {},
+  watch: {},
+  methods: {
+    // 获取所有机构列表
     getAllCompany() {
       this.$api.task.findAllTree().then((res) => {
         this.deptList = res.data;
@@ -354,12 +332,12 @@ export default {
       this.personnelFindPage();
     },
     personneSelectionChange(selection) {
-        // console.log(selection)
-        this.multipleSelection=selection
-    //   if (selection.length > 1) {
-    //     this.$refs.personneTable.clearSelection(); // 清空所有选择
-    //     this.$refs.personneTable.toggleRowSelection(selection.pop()); // 设置选择项
-    //   }
+      // console.log(selection)
+      this.multipleSelection = selection;
+      //   if (selection.length > 1) {
+      //     this.$refs.personneTable.clearSelection(); // 清空所有选择
+      //     this.$refs.personneTable.toggleRowSelection(selection.pop()); // 设置选择项
+      //   }
     },
     tableRowClassName(row) {
       if (row.row.flag) {
@@ -376,124 +354,141 @@ export default {
       this.personnePageRequest.pageNum = pageNum;
       this.personnelFindPage();
     },
-    addSys(){
-        this.dialogVisible = true
-        this.dialogTitle = "系统分配人员信息"
-        this.formData={...this.originalForm}
-        this.personnePageRequest={
-            //查询的默认条件
-            pageNum: 1,
-            pageSize: 10,
-            total: 0,
-            deptId: [],
-            name:"",
-            userId:''
-        }
-        this.personnelFindPage()
-        
+    addSys() {
+      this.dialogVisible = true;
+      this.dialogTitle = "系统分配人员信息";
+      this.formData = { ...this.originalForm };
+      this.personnePageRequest = {
+        //查询的默认条件
+        pageNum: 1,
+        pageSize: 10,
+        total: 0,
+        deptId: [],
+        name: "",
+        userId: "",
+      };
+      this.personnelFindPage();
     },
-    
-    getSysDictList(){
-        this.$api.sys.sysDictList().then((res) => {
-           
-            if(res.code===200){
-                this.optionList = res.data
-            }
-        })
+
+    getSysDictList() {
+      this.$api.sys.sysDictList().then((res) => {
+        if (res.code === 200) {
+          this.optionList = res.data;
+        }
+      });
     },
-    getList(){
-        this.tableConfig.loading = true
-        this.$api.sys.getSysAllocationList({...this.searchForm,...this.pageData,}).then((res) => {
-          
-            if(res.code == 200){
-                this.tableConfig.loading = false
+    getList() {
+      this.tableConfig.loading = true;
+      this.$api.sys
+        .getSysAllocationList({ ...this.searchForm, ...this.pageData })
+        .then((res) => {
+          if (res.code == 200) {
+            this.tableConfig.loading = false;
 
-                this.tabelList = res.data.content
-                this.pageData.pageNum = res.data.pageNum;
-                this.pageData.pageSize = res.data.pageSize;
-                this.pageData.totalSize = res.data.totalSize;
-            }else{
-                    this.$message.error(res.msg)
-                }
-        }).catch(err=>{
-            this.$message.error(err.message)
-            this.tableConfig.loading = false
+            this.tabelList = res.data.content;
+            this.pageData.pageNum = res.data.pageNum;
+            this.pageData.pageSize = res.data.pageSize;
+            this.pageData.totalSize = res.data.totalSize;
+          } else {
+            this.$message.error(res.msg);
+          }
         })
+        .catch((err) => {
+          this.$message.error(err.message);
+          this.tableConfig.loading = false;
+        });
     },
     handleClose(done) {
-        done();
+      done();
     },
-    confirm(formName){
-        // this.dialogVisible = false
-        this.$refs[formName].validate((valid) => {
-          if (valid) {
-           let arr=this.multipleSelection.map((v,i)=>{return v.userId})
+    confirm(formName) {
+      // this.dialogVisible = false
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          let arr = this.multipleSelection.map((v, i) => {
+            return v.userId;
+          });
 
-        //    console.log(this.formData,arr)
-            if(this.formData.flag!=1){
-                if(this.multipleSelection.length==0){
-                    this.$message.error("请选择用户")
-                }else{
-                    this.$api.sys.bindSysUser({sysId:this.formData.systemName,flag:this.formData.flag,userIds:arr}).then((res) => {
-                    // console.log(res,666)
-                    if(res.code == 200){
-                        this.$message.success(res.msg)
-                        this.dialogVisible = false
-                        this.getList()
-                    }else{
-                        this.$message.error(res.msg)
-                    }
-                
-                })
-                }
-            }else{
-                this.$api.sys.bindSysUser({sysId:this.formData.systemName,flag:this.formData.flag}).then((res) => {
-                    // console.log(res,666)
-                    if(res.code == 200){
-                        this.$message.success(res.msg)
-                        this.dialogVisible = false
-                        this.getList()
-                    }else{
-                        this.$message.error(res.msg)
-                    }
-                
+          //    console.log(this.formData,arr)
+          if (this.formData.flag != 1) {
+            if (this.multipleSelection.length == 0) {
+              this.$message.error("请选择用户");
+            } else {
+              this.$api.sys
+                .bindSysUser({
+                  sysId: this.formData.systemName,
+                  flag: this.formData.flag,
+                  userIds: arr,
                 })
+                .then((res) => {
+                  // console.log(res,666)
+                  if (res.code == 200) {
+                    this.$message.success(res.msg);
+                    this.dialogVisible = false;
+                    this.getList();
+                  } else {
+                    this.$message.error(res.msg);
+                  }
+                });
             }
           } else {
-            // console.log('error submit!!');
-            return false;
+            this.$api.sys
+              .bindSysUser({
+                sysId: this.formData.systemName,
+                flag: this.formData.flag,
+              })
+              .then((res) => {
+                // console.log(res,666)
+                if (res.code == 200) {
+                  this.$message.success(res.msg);
+                  this.dialogVisible = false;
+                  this.getList();
+                } else {
+                  this.$message.error(res.msg);
+                }
+              });
           }
-        });
+        } else {
+          // console.log('error submit!!');
+          return false;
+        }
+      });
     },
-    cancel(formName){
-        this.$refs[formName].resetFields();
-        this.dialogVisible = false
+    cancel(formName) {
+      this.$refs[formName].resetFields();
+      this.dialogVisible = false;
     },
-    deleteSys(row){
-      
-        this.$confirm('确认删除该系统吗?', '提示', {
-            confirmButtonText: '提交',
-            cancelButtonText: '取消',
-            type: 'warning'
-        }).then(() => {
-            this.$api.sys.sysUserLinkSysDelete({ids:[row.id]}).then((res) => {
-                if(res.code == 200){
-                    this.$message.success(res.msg)
-                    this.getList()
-                }else{
-                    this.$message.error(res.msg)
-                }
-            })
-        }).catch(() => {
-
-        });
-        
-    }
+    deleteSys(row) {
+      this.$confirm("确认删除该系统吗?", "提示", {
+        confirmButtonText: "提交",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.$api.sys.sysUserLinkSysDelete({ ids: [row.id] }).then((res) => {
+            if (res.code == 200) {
+              this.$message.success(res.msg);
+              this.getList();
+            } else {
+              this.$message.error(res.msg);
+            }
+          });
+        })
+        .catch(() => {});
+    },
+  },
+};
+</script>
 
+<style scoped lang="scss">
+.operation {
+  // position: absolute;
+  position: relative;
+  // z-index: 999999;
+  > .el-button {
+    // position: absolute;
+    z-index: 99999999999999;
   }
+  right: 0;
 }
-</script>
-
-<style>
-
 </style>

+ 261 - 498
src/views/Task/daikeComponents/KtLetter.vue

@@ -1024,500 +1024,6 @@
     }}</span>
               <!-- </div> -->
             </template>
-            <template v-if="reslistitem.namesimple == '泰康财险' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div class="flex f-c Driving-risk">
-                <el-form :inline="true" :model="accidentFormTk" class="demo-form-inline" size="small"
-                  style="font-weight: bold; margin-top: 15px">
-                  <el-form-item label="意外险类型" style="margin-right: 30px">
-                    <el-select clearable v-model="taikangtemplateSelection" placeholder="未选择" @clear="clearAccidentFormTk"
-                      @change="taikangInsuranceChange">
-                      <el-option v-for="(item, index) in taikangaccidentDataList" :key="index" :label="item.projectName"
-                        :value="item.projectCode"></el-option>
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="选择份数" style="margin-right: 50px">
-                    <el-input-number v-model="accidentFormTk.quantity" @change="numberCopieschangeTk" :min="1"
-                      controls-position="right"></el-input-number>
-                    <!-- <span style="margin-left: 5px;">份</span> -->
-                  </el-form-item>
-                  <el-form-item label="保费:">
-                    <span>{{ accidentFormTk.sumPremium }}&ensp;元</span>
-                  </el-form-item>
-                </el-form>
-                <el-table v-if="taikangtemplateSelection" size="small" :data="taikangInsuranceDataTable" border
-                  ref="expandTable" highlight-current-row :header-cell-style="{
-                    background: '#F7F7F9',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column prop="name" label="保险责任" align="center"></el-table-column>
-                  <el-table-column prop="amount" label="每座保额 (元)/每份" align="center"></el-table-column>
-                  <el-table-column prop="sumAmount" label="每车保额 (元)/每份" align="center"></el-table-column>
-                  <el-table-column prop="premium" label="责任保费 (元)/每份" align="center"></el-table-column>
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '恒邦财险' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div class="flex f-c Driving-risk">
-                <div class="dis a-c" style="margin: 15px 0">
-                  <span style="margin-right: 15px; font-weight: bold">选择意外险</span>
-                  <el-select style="width: 250px; margin-right: 60px" filterable size="small" clearable
-                    v-model="hengbangtemplateSelection" placeholder="未选择" @clear="clearAccidentFormHB"
-                    @change="hengbangInsuranceChange">
-                    <el-option v-for="(item, index) in hengbangInsuranceData" :key="index" :label="item.projectName"
-                      :value="item.projectCode"></el-option>
-                  </el-select>
-                  保费:
-                  <b>{{
-                    hengbangaccidentalDrivingVo.sumPremium || 0
-                  }}&ensp;元</b>
-                </div>
-                <el-table size="small" :data="hengbangInsuranceDataTable" border v-if="hengbangtemplateSelection"
-                  ref="RsTable" highlight-current-row :header-cell-style="{
-                    background: '#F7F7F9 ',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column prop="name" label="险种名称" align="center"></el-table-column>
-                  <el-table-column prop="amount" label="险种金额" align="center"></el-table-column>
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '华农财险' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div class="flex f-c Driving-risk">
-                <el-form :inline="true" :model="accidentFormHN" class="demo-form-inline"
-                  style="font-weight: bold; margin-top: 15px" size="small">
-                  <el-form-item label="意外险类型:" style="margin-right: 30px">
-                    <el-select clearable v-model="accidentFormHN.accidentType" placeholder="未选择"
-                      @clear="clearAccidentFormHN" @change="huanongInsuranceChange">
-                      <el-option v-for="(item, index) in huanongInsuranceData" :key="index" :label="item.projectName"
-                        :value="item.projectCode"></el-option>
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="选择份数" style="margin-right: 30px">
-                    <el-input-number v-model="accidentFormHN.quantity" :min="1"
-                      controls-position="right"></el-input-number>
-                  </el-form-item>
-                </el-form>
-                <el-table v-if="accidentFormHN.accidentType" size="small" :data="huanongInsuranceDataTable" border
-                  ref="expandTable" highlight-current-row :header-cell-style="{
-                    background: '#F7F7F9 ',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column prop="name" label="保险责任" align="center"></el-table-column>
-                  <el-table-column prop="amount" label="保额" align="center">
-                    <template slot-scope="scope">
-                      <el-input v-model="scope.row.amount" placeholder="请输入内容" size="small" disabled></el-input>
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '太平财险' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div class="flex f-c Driving-risk">
-                <div class="dis a-c" style="margin: 15px 0">
-                  <span style="margin-right: 15px; font-weight: bold">选择意外险</span>
-                  <el-select style="width: 250px; margin-right: 60px" filterable size="small" clearable
-                    v-model="taipingtemplateSelection" placeholder="未选择" @clear="clearAccidentFormTP"
-                    @change="taipingInsuranceChange">
-                    <el-option v-for="(item, index) in taipingInsuranceData" :key="index" :label="item.projectName"
-                      :value="item.projectCode"></el-option>
-                  </el-select>
-                  每份价税合计:
-                  <b>{{ taipingaccidentalDrivingVo.sumPremium || 0 }}&ensp;元</b>
-                </div>
-                <el-table size="small" :data="taipingInsuranceDataTable" border v-if="taipingtemplateSelection"
-                  ref="RsTable" highlight-current-row :header-cell-style="{
-                    background: '#F7F7F9 ',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column prop="name" label="险种名称" align="center"></el-table-column>
-                  <el-table-column prop="amount" label="险种金额" align="center"></el-table-column>
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '安盛天平' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div class="flex f-c Driving-risk">
-                <div class="dis a-c" style="margin-top: 15px">
-                  <span style="margin-right: 15px; font-weight: bold">意外险类型</span>
-                  <el-select style="width: 250px" size="small" clearable v-model="anshengtemplateSelection"
-                    placeholder="未选择" @clear="clearAccidentFormAS" @change="anshengInsuranceChange">
-                    <el-option v-for="(item, index) in anshengInsuranceData" :key="index"
-                      :label="item.projectCode + '   ' + item.projectName" :value="item.projectCode"></el-option>
-                  </el-select>
-                </div>
-                <el-table style="margin-top: 20px" size="small" :data="anshengInsuranceDataTable" border
-                  v-if="anshengtemplateSelection" ref="RsTable" highlight-current-row :header-cell-style="{
-                    background: '#F7F7F9 ',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column align="center" width="55" label="选择">
-                    <template slot-scope="scope">
-                      <el-radio class="radio" v-model="anshengInsurancetype" :label="scope.row.projectCode"
-                        @click.native.stop.prevent="ASDrivingRadio(scope.row)">&nbsp;</el-radio>
-                    </template>
-                  </el-table-column>
-                  <el-table-column prop="projectName" label="方案名称" align="center"></el-table-column>
-                  <el-table-column prop="projectCode" label="方案代码" align="center"></el-table-column>
-                  <el-table-column prop="quantity" label="份数" align="center">
-                  </el-table-column>
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '中国人寿' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div style="margin: 15px 0 15px 100px">
-                <span>商业险折扣:</span>
-                <el-input style="width: 220px" :disabled="!lastCompanyId" size="small" v-model="reslistitem.discount"
-                  placeholder="请输入内容" @input="
-                    reslistitem.discount = reslistitem.discount.replace(
-                      /[^\d.]/g,
-                      ''
-                    )
-                    "></el-input>
-              </div>
-              <div class="flex f-c Driving-risk">
-                <div class="dis a-c">
-                  <span style="margin-right: 15px; font-weight: bold">选择意外险</span>
-                  <el-select style="width: 250px" filterable size="small" clearable v-model="renshoutemplateSelection"
-                    placeholder="未选择" @clear="clearAccidentFormRS" @change="renshouInsuranceChange">
-                    <el-option v-for="(item, index) in renshouInsuranceData" :key="index" :label="item.projectName"
-                      :value="item.projectCode"></el-option>
-                  </el-select>
-                </div>
-                <el-table size="small" style="margin-top: 20px" :data="renshouInsuranceDataTable" border
-                  v-if="renshoutemplateSelection" @row-click="RSDrivingChange" ref="RsTable" highlight-current-row
-                  :header-cell-style="{
-                    background: '#F7F7F9 ',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column prop="name" label="方案名称" align="center"></el-table-column>
-                  <el-table-column prop="premium" label="保费 (元)起" align="center">
-                    <template slot-scope="scope">
-                      <span>¥{{ scope.row.premium }}</span>
-                    </template>
-                  </el-table-column>
-                  <el-table-column label="份数" align="center">
-                    <template slot-scope="scope">
-                      <span>{{ scope.row.quantity }}</span>
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '众安财险' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div class="flex f-c Driving-risk">
-                <div class="dis a-c" style="margin: 15px 0">
-                  <span style="margin-right: 15px; font-weight: bold">选择意外险</span>
-                  <el-select style="width: 250px" filterable size="small" clearable v-model="zhongantemplateSelection"
-                    placeholder="未选择" @clear="clearAccidentFormZA" @change="zhonganInsuranceChange">
-                    <el-option v-for="(item, index) in zhonganInsuranceData" :key="index" :label="item.projectName"
-                      :value="item.projectCode"></el-option>
-                  </el-select>
-                  <!-- 保费: <b>{{ zhonganaccidentalDrivingVo.sumgrosspremium || 0}}&ensp;元</b> -->
-                </div>
-                <el-table size="small" :data="zhonganInsuranceDataTable" border v-if="zhongantemplateSelection"
-                  @row-click="ZADrivingChange" ref="RsTable" highlight-current-row :header-cell-style="{
-                    background: '#F7F7F9 ',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column prop="name" label="险种名称" align="center"></el-table-column>
-                  <el-table-column prop="amount" label="险种金额" align="center"></el-table-column>
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '紫金财险' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div style="margin: 15px 0 15px 100px">
-                <span>自主定价系数:</span>
-                <el-input style="width: 220px" size="small" v-model="reslistitem.coefficient"
-                  placeholder="请输入内容"></el-input>
-              </div>
-              <div class="flex f-c Driving-risk">
-                <div class="dis a-c" style="margin-bottom: 15px">
-                  <span style="margin-right: 15px; font-weight: bold">选择意外险</span>
-                  <el-select style="width: 250px" filterable multiple size="small" clearable
-                    v-model="zijintemplateSelection" placeholder="未选择" @clear="clearAccidentFormZJ"
-                    @change="zijinInsuranceChange">
-                    <el-option v-for="(item, index) in ziJinInsuranceData" :key="index" :label="item.projectName"
-                      :value="item.projectCode"></el-option>
-                  </el-select>
-                </div>
-                <el-table size="small" :data="zijinInsuranceDataTable" border v-if="zijintemplateSelection"
-                  @select="CheckboxChange" filterable ref="expandTable" highlight-current-row :header-cell-style="{
-                    background: '#F7F7F9 ',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column type="selection" width="55"></el-table-column>
-                  <el-table-column prop="projectName" label="方案名称" align="center"></el-table-column>
-                  <el-table-column prop="sumAmount" label="总保额 (元)/每份" align="center"></el-table-column>
-                  <el-table-column prop="sumPremium" label="保费 (元)/每份" align="center">
-                    <template slot-scope="scope">
-                      <span>¥{{ scope.row.sumPremium }}</span>
-                    </template>
-                  </el-table-column>
-                  <el-table-column prop="quantity" label="份数" align="center">
-                    <template slot-scope="scope">
-                      <el-input-number v-model="scope.row.quantity" :min="1" size="small"
-                        controls-position="right"></el-input-number>
-                    </template>
-                  </el-table-column>
-                  <el-table-column prop="Totalprice" label="总保费 (元)" align="center">
-                    <template slot-scope="scope">
-                      <span v-if="scope.row.quantity">{{
-                        scope.row.sumPremium * scope.row.quantity
-                      }}</span>
-                      <span v-else>{{ scope.row.sumPremium }}</span>
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '永诚财险' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div class="flex f-c Driving-risk">
-                <el-form :inline="true" :model="accidentForm" class="demo-form-inline" size="small"
-                  style="font-weight: bold; margin-top: 15px">
-                  <el-form-item label="意外险类型" style="margin-right: 30px">
-                    <el-select clearable v-model="yongchengtemplateSelection" placeholder="未选择" @clear="clearAccidentForm"
-                      @change="yongchengInsuranceChange">
-                      <el-option v-for="(item, index) in yongchengaccidentDataList" :key="index" :label="item.projectName"
-                        :value="item.projectCode"></el-option>
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="选择份数" style="margin-right: 50px">
-                    <el-input-number v-model="accidentForm.quantity" @change="numberCopieschange" :min="1"
-                      controls-position="right"></el-input-number>
-                    <!-- <span style="margin-left: 5px;">份</span> -->
-                  </el-form-item>
-                  <el-form-item label="保费:">
-                    <span>{{ accidentForm.sumPremium }}&ensp;元</span>
-                  </el-form-item>
-                </el-form>
-                <el-table v-if="yongchengtemplateSelection" size="small" :data="yongchengInsuranceDataTable" border
-                  ref="expandTable" highlight-current-row :header-cell-style="{
-                    background: '#F7F7F9',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column prop="name" label="保险责任" align="center"></el-table-column>
-                  <el-table-column prop="amount" label="每座保额 (元)/每份" align="center"></el-table-column>
-                  <el-table-column prop="sumAmount" label="每车保额 (元)/每份" align="center"></el-table-column>
-                  <el-table-column prop="premium" label="责任保费 (元)/每份" align="center"></el-table-column>
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '国任财险' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <!-- <div style="margin:10px 0 0 100px;">
-              <span style="margin-right:20px"> {{reslistitem.underwritingDescription}}</span>-->
-              <el-button type="text" style="margin: 10px 0 0 100px"
-                @click="contributingGuoRen(reslistitem.agreementId)">选择特约</el-button>
-              <!-- </div> -->
-              <div class="flex f-c Driving-risk">
-                <el-form :inline="true" :model="guoRenaccidentForm" class="demo-form-inline" size="small">
-                  <el-form-item label="意外险类型" style="margin-right: 30px">
-                    <el-select clearable placeholder="未选择" @clear="clearAccidentFormGr" @change="grcxchange"
-                      v-model="guoRenaccidentForm.goodsCode">
-                      <el-option v-for="(item, index) in guoRenaccidentDataList" :key="index" :label="item.projectName"
-                        :value="item.projectCode"></el-option>
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label=" ">
-                    <el-select clearable v-model="guoRenaccidentForm.prodCode" @change="grcxchangeChild">
-                      <el-option v-for="(item) in guoRenaccidentDataListChild" :key="item.projectCode"
-                        :label="item.projectName" :value="item.projectCode"></el-option>
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="选择份数" style="margin-right: 30px">
-                    <el-input-number v-model="guoRenaccidentForm.quantity" :min="1" controls-position="right"
-                      @change="numberCopieschangeGR"></el-input-number>
-                    <!-- <span style="margin-left: 5px;">份</span> -->
-                  </el-form-item>
-                  <el-form-item label="保费:">
-                    <span>{{ guoRenaccidentForm.sumPremium }}&ensp;元</span>
-                  </el-form-item>
-                </el-form>
-                <el-table v-if="guoRenaccidentForm.prodCode" size="small" :data="guoRenInsuranceDataTable" border
-                  ref="expandTable" highlight-current-row :header-cell-style="{
-                    background: '#F7F7F9 ',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column prop="name" label="保险责任" align="center"></el-table-column>
-                  <el-table-column prop="amount" label="保额 (元)" align="center"></el-table-column>
-                  <el-table-column prop="premium" label="保费 (元)" align="center">
-                    <template slot-scope="scope">¥{{ scope.row.premium }}</template>
-                  </el-table-column>
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '中煤财险' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div class="flex f-c Driving-risk accident-style zmDriving">
-                <el-form :inline="true" :model="accidentFormZM" class="demo-form-inline" size="small"
-                  style="font-weight: bold; margin-top: 15px">
-                  <el-form-item label="意外险类型" style="margin-right: 30px">
-                    <el-select style="width: 250px" size="small" clearable v-model="zhongmeitemplateSelection"
-                      placeholder="未选择" @clear="numberCopieschangeZM" @change="zhongmeiInsuranceChange">
-                      <el-option v-for="(item, index) in zhongmeiInsuranceData" :key="index" :label="item.projectName"
-                        :value="item.projectCode"></el-option>
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="选择份数" style="margin-right: 30px">
-                    <el-input-number v-model="accidentFormZM.quantity" @change="numberCopieschangeZM" :min="1"
-                      controls-position="right"></el-input-number>
-                    <!-- <span style="margin-left: 5px;">份</span> -->
-                  </el-form-item>
-                  <el-form-item label="保费:">
-                    <span>{{ accidentFormZM.sumPremium }}&ensp;元</span>
-                  </el-form-item>
-                </el-form>
-                <el-table size="small" :data="zhongmeiInsuranceDataTable" border ref="ZmMultipleTable"
-                  v-if="zhongmeitemplateSelection" :header-cell-style="{
-                    background: '#F7F7F9 ',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column prop="name" label="保险责任名称" align="center"></el-table-column>
-                  <el-table-column prop="amount" label="保险责任对应保额" align="center"></el-table-column>
-                  <!-- <el-table-column label="份数" align="center">
-                    <template slot-scope="scope">
-                      <div @click.stop>
-                        <el-input-number
-                          v-model="scope.row.quantity"
-                          @change="ZMhandleChange"
-                          :min="1"
-                          :max="Number(scope.row.insuredNumLimit)"
-                          controls-position="right"
-                        ></el-input-number>
-                      </div>
-                    </template>
-                  </el-table-column>-->
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '大家财险' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div class="flex f-c Driving-risk">
-                <div class="dis a-c" style="margin-top: 15px">
-                  <span style="margin-right: 15px; font-weight: bold">选择意外险</span>
-                  <el-select v-if="reslistitem.apiType == 1" style="width: 250px" filterable size="small" clearable
-                    v-model="dajiatemplateSelection" placeholder="未选择" @clear="clearAccidentFormDJ"
-                    @change="dajiaInsuranceChange">
-                    <el-option v-for="(item, index) in dajiaInsuranceData" :key="index" :label="item.projectName"
-                      :value="item.projectCode"></el-option>
-                  </el-select>
-                  <div v-else>
-                    <el-select clearable placeholder="未选择" @change="djcxchange" v-model="dajiaaccidentForm.parentCode"
-                      @clear="clearAccidentFormDJ">
-                      <el-option v-for="(item, index) in dajiaInsuranceData" :key="index" :label="item.projectName"
-                        :value="item.projectCode"></el-option>
-                    </el-select>
-                    <el-select clearable v-model="dajiaaccidentForm.projectCode" @change="djcxchangeChild">
-                      <el-option v-for="(item) in dajiaaccidentDataListChild" :key="item.projectCode"
-                        :label="item.projectName" :value="item.projectCode"></el-option>
-                    </el-select>
-                  </div>
-                </div>
-                <el-table size="small" :data="dajiaInsuranceDataTable" border ref="RsTable" highlight-current-row
-                  :header-cell-style="{
-                    background: '#F7F7F9 ',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column prop="cvrgName" label="保险责任名称" align="center"></el-table-column>
-                  <el-table-column prop="cvrgPrm" label="保费 (元)/每份" align="center">
-                    <template slot-scope="scope">¥{{ scope.row.cvrgPrm }}</template>
-                  </el-table-column>
-                </el-table>
-              </div>
-            </template>
-            <template v-if="reslistitem.namesimple == '渤海财险' &&
-              reslistitem.checked &&
-              reslistitem.agreementId &&
-              isLetter !== '3'
-              ">
-              <div class="flex f-c Driving-risk" style="margin-top: 15px">
-                <el-form :inline="true" :model="boHaiaccidentForm" class="demo-form-inline" size="small">
-                  <el-form-item label="意外险类型" style="margin-right: 30px">
-                    <el-select clearable placeholder="未选择" @clear="clearAccidentFormBh" @change="bohaiInsuranceChange"
-                      v-model="boHaiaccidentForm.packageCode">
-                      <el-option v-for="(item, index) in boHaiaccidentDataList" :key="index" :label="item.packageName"
-                        :value="item.packageCode"></el-option>
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="选择份数" style="margin-right: 30px">
-                    <el-input-number v-model="boHaiaccidentForm.copies" :min="1"
-                      controls-position="right"></el-input-number>
-                  </el-form-item>
-                  <el-form-item label="保费:">
-                    <span>{{
-                      boHaiaccidentForm.premium * boHaiaccidentForm.copies
-                    }}&ensp;元</span>
-                  </el-form-item>
-                </el-form>
-                <el-table v-if="boHaiaccidentForm.packageCode" size="small" :data="bohaiInsuranceDataTable" border
-                  v-loading="accidentLoadingbh" ref="expandTable" highlight-current-row :header-cell-style="{
-                    background: '#F7F7F9 ',
-                    fontWeight: '700',
-                    color: '#333333',
-                  }">
-                  <el-table-column prop="coverageName" label="保险责任名称" align="center"></el-table-column>
-                  <el-table-column prop="insuredAmount" label="保额 (元)" align="center">
-                    <template slot-scope="scope">¥{{ scope.row.insuredAmount }}</template>
-                  </el-table-column>
-                </el-table>
-              </div>
-            </template>
           </div>
         </div>
         <div class="coll" v-else>
@@ -1874,6 +1380,47 @@
   }}</span>
               <!-- </div> -->
             </template>
+            <template v-if="reslistitem.namesimple == '平安财险' &&
+              reslistitem.checked &&
+              reslistitem.agreementId
+              ">
+              <div class="flex f-c Driving-risk">
+                <el-form :inline="true" :model="accidentFormPA" class="demo-form-inline" size="small"
+                  style="font-weight: bold; margin-top: 15px">
+                  <el-form-item label="意外险类型" style="margin-right: 30px">
+                    <el-select clearable v-model="pingantemplateSelection" placeholder="未选择" @clear="clearAccidentFormPA"
+                      @change="pinganInsuranceChange">
+                      <el-option v-for="(item, index) in pinganInsuranceData" :key="index" :label="item.projectName"
+                        :value="item.projectCode"></el-option>
+                    </el-select>
+                  </el-form-item>
+                  <el-form-item label="选择份数" style="margin-right: 50px">
+                    <el-input-number v-model="accidentFormPA.quantity" @change="numberCopieschangePA" :min="1"
+                      controls-position="right"></el-input-number>
+                  </el-form-item>
+                  <el-form-item label="保费:">
+                    <span>{{ accidentFormPA.premium || 0 }}&ensp;元</span>
+                  </el-form-item>
+                </el-form>
+                <el-table style="margin-top: 20px" size="small" :data="pinganInsuranceDataTable" border
+                  v-if="pingantemplateSelection" ref="RsTable" highlight-current-row :header-cell-style="{
+                    background: '#F7F7F9 ',
+                    fontWeight: '700',
+                    color: '#333333',
+                  }">
+                  <el-table-column align="center" width="55" label="选择">
+                    <template slot-scope="scope">
+                      <el-radio class="radio" v-model="pinganInsurancetype" :label="scope.row.projectCode"
+                        @click.native.stop.prevent="PADrivingRadio(scope.row)">&nbsp;</el-radio>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="name" label="方案名称" align="center"></el-table-column>
+                  <el-table-column prop="code" label="方案代码" align="center"></el-table-column>
+                  <el-table-column prop="premium" label="保费 (元)/每份" align="center">
+                  </el-table-column>
+                </el-table>
+              </div>
+            </template>
             <template v-if="reslistitem.namesimple == '泰康财险' &&
               reslistitem.checked &&
               reslistitem.agreementId &&
@@ -1938,7 +1485,7 @@
                     color: '#333333',
                   }">
                   <el-table-column prop="name" label="险种名称" align="center"></el-table-column>
-                  <el-table-column prop="amount" label="险种金额" align="center"></el-table-column>
+                  <el-table-column prop="amount" label="保额" align="center"></el-table-column>
                   <!-- <el-table-column prop="sumgrosspremium" label="保费 (元)/每份" align="center">
                     <template slot-scope="scope">
                       <span>¥{{ scope.row.sumgrosspremium }}</span>
@@ -3308,10 +2855,15 @@ export default {
       taikangInsuranceDataTable: [],
       taikangaccidentDataList: [],
       accidentPremiumTk: "",
+      accidentPremiumPA:'',
       accidentFormTk: {
         quantity: "1",
         sumPremium: 0,
       },
+      accidentFormPA: {
+        quantity: "1",
+        premium: 0,
+      },
       taikangaccidentalDrivingVo: {},
       policyNumberForm: {
         jqpolicyno: "",
@@ -3373,6 +2925,10 @@ export default {
       zhongmeiInsuranceData: [], //中煤驾意险产品列表数据
       zhongmeiInsuranceDataTable: [], //中煤驾意险产品明细方案数据
       zhongmeiaccidentalDrivingVo: {}, //中煤驾意险最终选中字段
+      pinganInsuranceData: [], //平安驾意险产品列表数据
+      pingantemplateSelection:'',
+      pinganInsuranceDataTable:[],
+      pinganInsurancetype:'',
       currentCell: null,
       feeDetailInfo: [], //费用明细信息
       immediatelyValue: false,
@@ -5262,6 +4818,25 @@ export default {
         this.isBottom = false;
       }
     },
+    pinganInsuranceChange(index) {
+      if (!index) {
+        return;
+      }
+      this.taikangtemplateSelection = index;
+      // this.accidentFormPA = Object.assign(
+      //   this.accidentFormPA,
+      //   this.pinganInsuranceData.find((val) => val.projectCode == index)
+      // );
+      // this.pinganInsuranceData
+      //   .find((val) => val.projectCode == index)
+      //   .son.forEach((item) => {
+      //     item.sumAmount =
+      //       Number(item.amount) * Number(this.accidentFormPA.seatNum);
+      //   });
+      this.taikangInsuranceDataTable = this.pinganInsuranceData.find(
+        (val) => val.projectCode == index
+      ).son;
+    },
     taikangInsuranceChange(index) {
       if (index) {
         this.TkDrivingChange(
@@ -5286,7 +4861,7 @@ export default {
       this.taikangInsuranceDataTable = this.taikangaccidentDataList.find(
         (val) => val.projectCode == index
       ).son;
-      this.accidentPremiumTk = this.accidentFormTk.sumPremium;
+      this.accidentPremiumTk = this.accidentFormTk.premium;
     },
     anshengInsuranceChange(index) {
       this.anshengtemplateSelection = index;
@@ -5554,6 +5129,9 @@ export default {
     numberCopieschangeTk(index) {
       this.accidentFormTk.sumPremium = Number(this.accidentPremiumTk) * index;
     },
+    numberCopieschangePA(index) {
+      this.accidentFormPA.premium = Number(this.accidentPremiumPA) * index;
+    },
     numberCopieschangeZM(index) {
       this.accidentFormZM.sumPremium = Number(this.accidentPremiumZM) * index;
     },
@@ -5841,6 +5419,21 @@ export default {
             risk: this.riskList,
             kind: this.kindList,
             ruleThirdPartyInsurance: this.insureList[1].amount,
+            cimodelclass: ins == "平安财险" 
+                  ? this.carInfo.cimodelclass
+                  : "",
+              isUseCombine:ins == "平安财险" 
+              ? 'Y'
+              : "",
+              tonNumber:ins == "平安财险" 
+              ? this.carInfo.limitLoad
+              : "",
+              ownAttribute:ins == "平安财险" 
+              ? '03'
+              : "",
+              useAttribute: ins == "平安财险" 
+                  ? this.carInfo.carnature
+                  : "",
           })
           .then((res) => {
             if (res.code == 200) {
@@ -5856,6 +5449,7 @@ export default {
                   this.boHaiaccidentDataList = res.data;
                   break;
                 case "中煤财险":
+                case "平安财险":
                   this[item.cnName + +"InsuranceData"] = res.data;
                   break;
                 case "紫金财险":
@@ -6057,6 +5651,15 @@ export default {
       // this.anshengaccidentalDrivingVo.projectCode = row.projectCode;
       // this.anshengaccidentalDrivingVo.projectName = row.projectName;
     },
+    //平安驾意险选择
+    PADrivingRadio(row) {
+      this.accidentPremiumPA = row.premium;
+      this.pinganInsurancetype = row.code;
+      this.pinganaccidentalDrivingVo = Object.assign({
+        ...this.pinganaccidentalDrivingVo,
+        ...row,
+      });
+    },
     ZADrivingRadio(row) {
       this.ZADrivingChange(row);
     },
@@ -6159,7 +5762,7 @@ export default {
             .getDrivingInsuranceRule({
               agreementId: this.totalCompanyList[index].agreement[0].id,
               seatNum:
-                ins == "永诚财险" || ins == "中煤财险"
+                ins == "永诚财险" || ins == "中煤财险" 
                   ? Number(this.carInfo.seatCount)
                   : "",
               ruleUseNature: this.carInfo.carnature,
@@ -6167,6 +5770,21 @@ export default {
               risk: this.riskList,
               kind: this.kindList,
               ruleThirdPartyInsurance: this.insureList[1].amount,
+              cimodelclass: ins == "平安财险" 
+                  ? this.carInfo.cimodelclass
+                  : "",
+              isUseCombine:ins == "平安财险" 
+              ? 'Y'
+              : "",
+              tonNumber:ins == "平安财险" 
+              ? this.carInfo.limitLoad
+              : "",
+              ownAttribute:ins == "平安财险" 
+              ? '03'
+              : "",
+              useAttribute: ins == "平安财险" 
+                  ? this.carInfo.carnature
+                  : "",
             })
             .then((res) => {
               if (res.code == 200) {
@@ -6181,6 +5799,7 @@ export default {
                     this.boHaiaccidentDataList = res.data;
                     break;
                   case "中煤财险":
+                  case "平安财险":
                     this[name + "InsuranceData"] = res.data;
                     break;
                   case "紫金财险":
@@ -6353,7 +5972,13 @@ export default {
       this.accidentForm.fen = 1;
       this.accidentForm.premium = 0;
     },
-
+    clearAccidentFormPA() {
+      this.accidentFormPA = {};
+      this.accidentFormPA.quantity = 1;
+      this.accidentFormPA.premium = 0;
+      this.pinganaccidentalDrivingVo = {};
+      this.pinganInsuranceDataTable = [];
+    },
     clearAccidentFormTk() {
       this.taikangaccidentalDrivingVo = {};
       this.taikangInsuranceDataTable = [];
@@ -7415,6 +7040,80 @@ export default {
         this.totalCompanyList[num].apiType
       );
     },
+    // 平安报价
+    pingan(num, id) {
+      let isTaxSource = this.totalCompanyList[num].isTaxSource;
+      let params = {
+        accidentalDrivingVo: this.pinganaccidentalDrivingVo,
+        orderNo: this.orderno,
+        companyId: id,
+        agreementId: this.totalCompanyList[num].agreementId,
+        isTaxSource: isTaxSource == 1 ? isTaxSource : null,
+      };
+      this.$api.letter.pinganquote(params).then((res) => {
+        this.totalCompanyList[num].msg = res.msg;
+        if (!!res.msg && res.msg.indexOf("不存在有效协议") >= 0) {
+          this.totalCompanyList[num].quoteCode = "4";
+          this.totalCompanyList[num].msg = res.msg;
+          return;
+        } else if (
+          res.data == null &&
+          res.msg.indexOf("交强险平台返回") > -1 &&
+          res.msg.indexOf(";终保日期") > -1
+        ) {
+          this.totalCompanyList[num].lastYearMsg =
+            "<b>交强险</b><br>" +
+            res.msg.slice(
+              res.msg.indexOf("起保日期 "),
+              res.msg.indexOf("地区 山西。") + 6
+            );
+          let time =
+            res.msg.substr(res.msg.indexOf(";终保日期 ") + 6, 16) + ":00";
+          this.jqstartDate = time;
+          this.jqendDate = this.oneYearPast1(time);
+          if (this.riskList.length > 0) {
+            for (let i = 0; i < this.riskList.length; i++) {
+              if (this.riskList[i].riskCode == "0507") {
+                this.riskList[i].startDate = time;
+                this.riskList[i].endDate = this.oneYearPast1(time);
+              }
+            }
+          }
+          let param = {
+            userId: this.userId,
+            quoteno: this.quoteno,
+            orderNo: this.orderno,
+            carInfo: this.carInfo,
+            insuredPersonInfo: this.insuredPersonInfo,
+            ownerInfo: this.ownerInfo,
+            policyHolderInfo: this.policyHolderInfo,
+            kindList: this.kindList,
+            riskList: this.riskList,
+            vehicleAndVesselTax: this.vehicleAndVesselTaxForm,
+          };
+          return this.$api.letter[this.apiInterfaceName](param).then((res) => {
+            this.pingan(num, id);
+          });
+        } else if (!!res.data) {
+          if (res.data.warnMessageList && res.data.warnMessageList.length > 0) {
+            this.totalCompanyList[num].lastYearMsg = "";
+            let dat = res.data.warnMessageList;
+            dat.map((ele) => {
+              this.totalCompanyList[num].lastYearMsg += ele + "<br>";
+            });
+          }
+          this.totalCompanyList[num].quoteCode = 200;
+          this.totalCompanyList[num].result = res.data;
+          this.QuotationHistory();
+        } else {
+          this.totalCompanyList[num].quoteCode = "3";
+          this.totalCompanyList[num].msg = res.msg;
+          return;
+        }
+      });
+    },
+    
+    
     //永安报价
     yongan(num, id) {
       let isTaxSource = this.totalCompanyList[num].isTaxSource;
@@ -9177,6 +8876,70 @@ export default {
                   }
                 });
                 break;
+                case "平安财险":
+                await this.$api.letter
+                  .pingansubmitImage({
+                    companyId: this.companyId,
+                  })
+                  .then((res) => {
+                    if (res.code == "200") {
+                      var _this = this;
+                      _this.$api.letter
+                        .pinganaudit({
+                          companyId: this.companyId,
+                          jqappoint: "",
+                          syappoint: "",
+                        })
+                        .then((res) => {
+                          if (res.code == "200") {
+                            loading.close();
+                            _this.$message({
+                              message: "核保成功",
+                              type: "success",
+                            });
+                            this.QuotationHistory();
+                            _this.$api.letter
+                              .getByCompanyId({ companyId: this.companyId })
+                              .then((res) => {
+                                _this.orderstatus = res.data.orderstatus; //订单状态
+                                _this.underwritingdialogVisible = true;
+                                let indexid = this.totalCompanyList.findIndex(
+                                  (item) =>
+                                    item.namesimple ==
+                                    this.queryOrders.inscompany
+                                );
+                                this.totalCompanyList[indexid].orderstatus =
+                                  res.data.orderstatus;
+                              });
+                          } else {
+                            loading.close();
+                            _this.$message({
+                              showClose: true,
+                              message:
+                                this.queryOrders.inscompany +
+                                "提核--:" +
+                                res.msg,
+                              type: "error",
+                              duration: 0,
+                            });
+                            _this.$api.letter
+                              .getByCompanyId({ companyId: this.companyId })
+                              .then((res) => {
+                                _this.orderstatus = res.data.orderstatus; //订单状态
+                              });
+                          }
+                        });
+                    } else {
+                      this.$message({
+                        message:
+                          this.queryOrders.inscompany + "影像--:" + res.msg,
+                        type: "error",
+                        duration: 7000,
+                      });
+                      loading.close();
+                    }
+                  });
+                break;
             }
           }
         });

+ 16 - 13
src/views/Task/daikeComponents/KtOrder.vue

@@ -70,7 +70,7 @@
       </el-row>
     </el-form>
     <el-table size="small" :data="pageResult" border v-loading="orderLoaing" highlight-current-row stripe
-      @expand-change="handleRowChange" ref="expandTable" :header-cell-style="{
+      @expand-change="handleRowChange" ref="expandTable" height="550" :header-cell-style="{
         background: '#F2F7FC',
         fontWeight: '700',
         color: '#606266',
@@ -167,6 +167,7 @@
                   '中煤财险',
                   '渤海财险',
                   '泰康财险',
+                  '平安财险',
                 ].includes(item.inscompany)
                 " class="blue_color" @click="querystatus(item, index)">状态更新</el-button>
               <el-button v-if="item.orderstatus !== '2'" size="mini" type="text" class="blue_color"
@@ -195,33 +196,33 @@
           </div>
         </template>
       </el-table-column>
-      <el-table-column prop="orderno" label="订单号" align="center"></el-table-column>
-      <el-table-column prop="username" label="业务员" align="center">
+      <el-table-column prop="orderno" label="订单号" align="center" width="180"></el-table-column>
+      <el-table-column prop="username" label="业务员" align="center" width="180">
         <template slot-scope="scope">
           <span>{{ scope.row.username }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="username" label="业务员工号" align="center">
+      <el-table-column prop="username" label="业务员工号" align="center" width="180">
         <template slot-scope="scope">
           <span>{{ scope.row.userid }}</span>
         </template>
       </el-table-column>
-      
-      <el-table-column prop="insCompany" label="承保公司" width="180" align="center">
+
+      <el-table-column prop="insCompany" label="承保公司" width="100" align="center">
         <template slot-scope="scope">
           <span>{{ scope.row.insCompany ? scope.row.insCompany : "--" }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="partnerCompaniesName" label="合作公司" width="180" align="center">
+      <el-table-column prop="partnerCompaniesName" label="合作公司" width="100" align="center">
         <template slot-scope="scope">
           <span>{{ scope.row.partnerCompaniesName ? scope.row.partnerCompaniesName : "--" }}</span>
         </template>
       </el-table-column>
-      
-      <el-table-column prop="licenseno" label="车牌号" width="180" align="center"></el-table-column>
-      <el-table-column prop="insuredname" label="投保人姓名" align="center" width="150"></el-table-column>
-      <el-table-column prop="product" label="投保险种" align="center" width="200"></el-table-column>
-      <el-table-column prop="orderstatus" label="状态" align="center">
+
+      <el-table-column prop="licenseno" label="车牌号" width="100" align="center"></el-table-column>
+      <el-table-column prop="insuredname" label="投保人姓名" align="center" width="100"></el-table-column>
+      <el-table-column prop="product" label="投保险种" align="center" width="100"></el-table-column>
+      <el-table-column prop="orderstatus" label="状态" align="center" width="150">
         <template slot-scope="scope">
           <!-- <el-tag :type="capType(scope.row.orderstatus)" size="small">{{
               scope.row.orderstatus | cap
@@ -244,7 +245,7 @@
 
       <el-table-column prop="createtime" label="录单日期" align="center" width="200"></el-table-column>
       <el-table-column prop="insureTime" label="承保确认时间" align="center" width="200"></el-table-column>
-      
+
       <el-table-column label="操作" align="center"  fixed="right" min-width="200">
         <template slot-scope="scope">
           <el-button v-if="scope.row.orderstatus != '3'" size="mini" type="text" style="color: #2d4d89"
@@ -465,6 +466,7 @@
                   '中煤财险',
                   '渤海财险',
                   '泰康财险',
+                  '平安财险',
                 ].includes(scope.row.inscompany)
                 " @click="querystatus(scope.row, 'history')">状态更新</el-button>
             </template>
@@ -974,6 +976,7 @@ export default {
         紫金财险: "getOrderDetail",
         中煤财险: "paymentEnquiry",
         渤海财险: "getOrderDetailboHai",
+        平安财险: "getDocumentStatusList",
       };
       Object.keys(inscompany).forEach((val) => {
         if (val == item.inscompany) {