Browse Source

提交用户关联保险公司的业务逻辑

hxl13994548489 1 năm trước cách đây
mục cha
commit
741a6c792a

+ 4 - 1
src/http/api.js

@@ -66,6 +66,9 @@ import * as custInfo from './moudules/custInfo.js'
 //报价
 import * as quote from './moudules/quote'
 
+//用戶关联保险公司
+import * as linkCompany from './moudules/linkCompany.js'
+
 // 默认全部导出
 export default {
     login,
@@ -112,7 +115,7 @@ export default {
     agreement,
     contract,
     custInfo,
-
+    linkCompany,
     quote
 
 }

+ 47 - 0
src/http/moudules/linkCompany.js

@@ -0,0 +1,47 @@
+import axios from '../axios'
+
+
+// 用户关联保险公司列表
+export const findCompanyPageListByUserId = (data) => {
+  return axios({
+    url: "/sysUserLinkCompany/findCompanyPageListByUserId",
+    method: "post",
+    data,
+  })
+}
+
+// 用户信息列表
+export const findAllUserList = (data) => {
+  return axios({
+    url: "/sysUserLinkCompany/findAllUserList",
+    method: "post",
+    data,
+  })
+}
+//保存保险公司和用户关联数据
+export const addOrUpdate = (data) => {
+  return axios({
+    url: "/sysUserLinkCompany/addOrUpdate",
+    method: "post",
+    data,
+  })
+}
+
+//用户关联保险公司删除
+export const deleteByIds = (data) => {
+  return axios({
+    url: "/sysUserLinkCompany/delete",
+    method: "post",
+    data,
+  })
+}
+
+//查询用户关联的保险公司列表
+export const sysUserLinkCompanyPage = (data) => {
+  return axios({
+    url: "/sysUserLinkCompany/sysUserLinkCompanyPage",
+    method: "post",
+    data,
+  })
+}
+

+ 596 - 0
src/views/AgreementManage/CarInsurance/BacklineAllocationNew.vue

@@ -0,0 +1,596 @@
+<template>
+  <div>
+    <el-main ref="elMain" style="padding: 0px">
+      <Split :gutterSize="2" style="height: calc(100vh - 120px)">
+        <!-- 左侧树Start -->
+        <SplitArea :minSize="240">
+          <div>
+            <el-form
+              ref="queryFormRef"
+              :model="personnePageRequest"
+              label-width="60px"
+            >
+              <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>
+            <el-table
+              :data="personnePageReData"
+              border
+              ref="personneTable"
+              width="100%"
+              size="small"
+              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-column width="100" label="操作">
+                <template slot-scope="scope">
+                  <el-button
+                    type="text"
+                    @click="handleTableEdit(scope.row.userId)"
+                    size="small"
+                    >编辑</el-button
+                  >
+                </template>
+              </el-table-column>
+              <!-- 表格列 -->
+            </el-table>
+
+            <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>
+          </div>
+        </SplitArea>
+        <!-- 工具区域Start -->
+        <SplitArea>
+          <el-form ref="queryFormRef" :model="pageRequest" label-width="60px">
+            <el-row>
+              <el-col :span="7">
+                <el-form-item label="工号">
+                  <el-input
+                    clearable
+                    :size="overSize"
+                    placeholder="工号"
+                    v-model="pageRequest.userId"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="7">
+                <el-form-item label="姓名">
+                  <el-input
+                    clearable
+                    :size="overSize"
+                    placeholder="姓名"
+                    v-model="pageRequest.userName"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="7">
+                <el-form-item label="保险公司" label-width="80px">
+                  <el-select
+                    v-model="pageRequest.companyId"
+                    filterable
+                    clearable
+                    size="small"
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in ztreeNodes"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-button size="small" type="primary" @click="findQuery()"
+                  >查询</el-button
+                >
+                <kt-button
+                  label="添加"
+                  type="primary"
+                  @click="handleAddCompany"
+                />
+              </el-col>
+            </el-row>
+          </el-form>
+          <kt-common-table
+            style="margin-top: 10px"
+            :data="pageResult"
+            :columns="columns"
+            :showBatchDelete="true"
+            deleteButtonName="删除"
+            deleteName="批量删除"
+            @handleDelete="handleDelete"
+            @findPage="findPage"
+            @handleDeleteFlag="handleTableDeleteFlag"
+          ></kt-common-table>
+        </SplitArea>
+        <!-- 右侧列表页面End -->
+      </Split>
+    </el-main>
+
+    <!-- 新增对话框 -->
+    <el-dialog
+      :title="dialogTitle"
+      v-dialogDrag
+      :visible.sync="productDialogVisible"
+      width="800px"
+    >
+      <div style="margin-bottom: 15px">
+        保险公司:
+        <el-select
+          v-model="pagePagination.companyId"
+          filterable
+          clearable
+          @change="companyChange"
+          size="small"
+          placeholder="请选择"
+        >
+          <el-option
+            v-for="item in ztreeNodes"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          >
+          </el-option>
+        </el-select>
+        <el-button size="small" type="primary" @click="selectAll"
+          >全 选</el-button
+        >
+      </div>
+      <el-table
+        @selection-change="handleSelectionChange"
+        :data="tableData"
+        border
+        ref="multipleTable"
+        style="width: 100%"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column
+          prop="id"
+          label="保险公司编码"
+        ></el-table-column>
+        <el-table-column
+          prop="name"
+          label="保险公司名称"
+        ></el-table-column>
+      </el-table>
+      <el-pagination
+        @size-change="pagePaginationsize"
+        @current-change="pagePaginationcurrent"
+        :current-page="pagePagination.pageNum"
+        :page-sizes="[10, 20, 50, 100, 200]"
+        :page-size="pagePagination.pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="pagePagination.total"
+      >
+      </el-pagination>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="productDialogVisible = false"
+          >取 消</el-button
+        >
+        <el-button size="small" type="primary" @click="submitForm"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+  <script>
+import KtButton from "@/views/Core/KtButton"; //按钮权限组件
+import KtCommonTable from "@/views/Core/KtCommonTable.vue";
+
+export default {
+  components: {
+    KtButton,
+    KtCommonTable,
+  },
+  data() {
+    return {
+      ztreeNodes: [],
+      deptList: [],
+      optionProps: {
+        //公司下拉列表配置
+        checkStrictly: true,
+        value: "id",
+        label: "name"
+      },
+      overSize: "small",
+      agreementTypeoptions: [], //协议类型
+      leftSplitWidth: 20,
+      rightSplitWidth: 80,
+      // 右侧列表查询数据Start
+      pageResult: {},
+      personnePageReData: [],
+      pageRequest: {
+        //查询的默认条件
+        pageNum: 1,
+        pageSize: 10,
+      },
+      pagePagination: {
+        pageNum: 1,
+        pageSize: 10,
+        total: 0,
+      },
+      personnePageRequest: {
+        //查询的默认条件
+        pageNum: 1,
+        pageSize: 10,
+        total: 0,
+      },
+      columns: [
+        // 数据列
+        {
+          prop: "userId",
+          label: "工号 ",
+          sortable: false,
+        },
+        {
+          prop: "userName",
+          label: "姓名",
+          sortable: false,
+        },
+        {
+          prop: "companyId",
+          label: "保险公司编码",
+          sortable: false,
+        },
+        {
+          prop: "companyName",
+          label: "保险公司名称",
+          sortable: false,
+        },
+      ],
+      productDialogVisible: false, //控制产品对话框
+      dialogTitle: "新增",
+      userId: "",
+      tableData: [],
+      personnelValue: "", //工号搜索
+      companyIds:[],
+    };
+  },
+  created() {
+    this.$api.cost.gainTopList({ type: 1 }).then((res) => {
+      this.ztreeNodes = res.data;
+    });
+    this.getAllCompany();
+    this.personnelFindQuery();
+  },
+  watch: {},
+  methods: {
+    // 获取所有机构列表
+    getAllCompany() {
+      this.$api.task.findAllTree().then((res) => {
+        this.deptList = res.data;
+      });
+    },
+    // 编辑过的数据标红
+    tableRowClassName(row) {
+      if (row.row.flag) {
+        return "flagRow";
+      } else {
+        return "";
+      }
+    },
+    //全选
+    selectAll() {
+      let userId = this.userId
+      this.$confirm("确定选择全部?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.$api.linkCompany.addOrUpdate({
+            companyIds: this.companyIds,
+            userId: this.userId,
+            flag :true
+          }).then((res) => {
+           if(res.code==200){
+             this.findPage();
+             this.personnelFindQuery();
+            this.productDialogVisible = false
+             this.$message({
+              type: "success",
+              message: "操作成功",
+            });
+           }
+           else{
+            this.$message.error(res.msg);
+           }
+          });
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "已取消全选",
+          });
+        });
+    },
+
+    personnelFindQuery() {
+      this.personnePageRequest.pageNum = 1;
+      this.personnePageRequest.pageSize = 10;
+      this.personnelFindPage();
+    },
+    findQuery() {
+      (this.pageRequest.pageNum = 1), (this.pageRequest.pageSize = 10);
+      this.findPage();
+    },
+
+    pagePaginationsize(pageSize) {
+      this.pagePagination.pageSize = pageSize;
+      this.handleTableEdit(this.userId);
+    },
+    pagePaginationcurrent: function (pageNum) {
+      this.pagePagination.pageNum = pageNum;
+      this.handleTableEdit(this.userId);
+    },
+    handleSizeChange(pageSize) {
+      this.personnePageRequest.pageSize = pageSize;
+      this.personnelFindPage();
+    },
+    refreshPageRequest: function (pageNum) {
+      this.personnePageRequest.pageNum = pageNum;
+      this.personnelFindPage();
+    },
+    //查询用户列表
+    personnelFindPage() {
+      let deptId = "";
+      if (
+        this.personnePageRequest.deptId &&
+        this.personnePageRequest.deptId.length > 0
+      ) {
+        deptId =
+          this.personnePageRequest.deptId[
+            this.personnePageRequest.deptId.length - 1
+          ];
+      }
+      this.$api.linkCompany
+        .findAllUserList({ ...this.personnePageRequest, deptId })
+        .then((res) => {
+          if (res.code == 200) {
+            this.personnePageReData = res.data.content;
+            this.personnePageRequest.pageNum = res.data.pageNum;
+            this.personnePageRequest.pageSize = res.data.pageSize;
+            this.personnePageRequest.total = res.data.totalSize;
+          } else {
+            this.$message.error(res.msg);
+          }
+        });
+    },
+    companyChange(val) {
+      if (val) {
+        this.handleTableEdit(this.userId, val);
+      } else {
+        this.handleTableEdit(this.userId);
+      }
+    },
+    //--tree begin-------
+    handleTableEdit(userId, companyId) {
+      this.userId = userId;
+      this.$api.linkCompany.findCompanyPageListByUserId({
+          userId,
+          companyId,
+          ...this.pagePagination,
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.tableData = res.data.content;
+            this.pagePagination.pageNum = res.data.pageNum;
+            this.pagePagination.pageSize = res.data.pageSize;
+            this.pagePagination.total = res.data.totalSize;
+            this.$nextTick(() => {
+              this.tableData.forEach((val) => {
+                if (val.flag == "true") {
+                  this.$refs.multipleTable.toggleRowSelection(val);
+                }
+              });
+            });
+            this.dialogTitle = "修改";
+            this.productDialogVisible = true;
+          } else {
+            this.$message.error(res.msg);
+          }
+        });
+    },
+
+    //添加保险公司的id打开弹窗页面
+    handleAddCompany() {
+      this.tableData ={};
+      if (
+        this.$refs.personneTable.selection &&
+        this.$refs.personneTable.selection.length > 0
+      ) {
+        this.userId = this.$refs.personneTable.selection[0].userId;
+        this.$api.linkCompany.findCompanyPageListByUserId( {
+          userId: this.userId,
+          pageNum: 1,
+          pageSize: 10,
+        }).then((res) => {
+          if (res.code === 200) {
+            this.tableData = res.data.content;
+            this.pagePagination.pageNum = res.data.pageNum;
+            this.pagePagination.pageSize = res.data.pageSize;
+            this.pagePagination.total = res.data.totalSize;
+            this.dialogTitle = "新增";
+            this.productDialogVisible = true;
+          } else {
+            this.$message.error(res.msg);
+          }
+        });
+      } else {
+        this.$message.error("请选择人员!");
+      }
+    },
+    //添加保险公司保存按钮
+    submitForm() {
+      this.$api.linkCompany
+        .addOrUpdate({
+          companyIds: this.companyIds,
+          userId: this.userId,
+          flag : false
+        })
+        .then((res) => {
+          if (res.code == 200) {
+            this.$message({
+              message: "操作成功",
+              type: "success",
+            });
+            this.findPage();
+            this.personnelFindQuery();
+            this.productDialogVisible = false;
+          } else {
+            this.$message({
+              message: "操作失败",
+              type: "error",
+            });
+          }
+        });
+    },
+    //单个删除
+    handleDelete(val) {
+      this.handleTableDelete(val);
+    },
+    //单个删除
+    handleTableDeleteFlag(data) {
+      this.handleTableDelete([data.row.id]);
+    },
+    //单个删除
+    handleTableDelete(id) {
+      this.$api.linkCompany.deleteByIds({ ids: id }).then((res) => {
+        if (res.code === 200) {
+          this.$message({
+            message: "删除成功",
+            type: "success",
+          });
+          this.findPage();
+          this.personnelFindQuery();
+        } else {
+          this.$message({
+            message: "操作失败",
+            type: "error",
+          });
+        }
+      });
+    },
+    // 右侧列表查询方法
+    findPage(data) {
+      // 获取分页数据
+      if (data && data.pageRequest) {
+        this.pageRequest.pageNum = data.pageRequest.pageNum;
+        this.pageRequest.pageSize = data.pageRequest.pageSize;
+      }
+      this.$api.linkCompany
+        .sysUserLinkCompanyPage({
+          ...this.pageRequest
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.pageResult = res.data;
+          } else {
+            this.$message.error(res.msg);
+          }
+        })
+    },
+
+    handleSelectionChange(val) {
+      this.companyIds = [];
+      val.forEach((obj) => {
+        this.companyIds.push(obj.id); // 将每个对象的id添加到allIds数组中
+      });
+    },
+    personneSelectionChange(selection) {
+      if (selection.length > 1) {
+        this.$refs.personneTable.clearSelection(); // 清空所有选择
+        this.$refs.personneTable.toggleRowSelection(selection.pop()); // 设置选择项
+      }
+    },
+  },
+};
+</script>
+
+  <style scoped>
+/* 顶部查询条件样式Start */
+.queryFrom .el-row {
+  margin: 10px 0px;
+}
+>>> .el-table .flagRow {
+  background: rgba(212, 36, 38, 0.2) !important;
+}
+>>> .el-table__header-wrapper .el-table__header .el-checkbox {
+  display: none;
+}
+.queryFrom .el-form-item {
+  margin-bottom: 0px;
+}
+
+.queryFrom .queryButton .el-form-item__content {
+  margin-left: 40px !important;
+}
+
+/* 顶部查询条件样式End */
+</style>