Просмотр исходного кода

驾意险配置, 协议轨迹

yaoyao 2 лет назад
Родитель
Сommit
9cf413f9c3

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

@@ -1069,3 +1069,12 @@ export const sysChannelGroup = (id) => {
     method: "get",
   })
 }
+
+// 协议轨迹
+export const agreementTrajectory = (data) => {
+  return axios({
+    url: "/plt/agreement/agreementTrajectory",
+    method: 'post',
+    data
+  })
+}

+ 36 - 0
src/views/AgreementManage/CarInsurance/AgreementEntry.vue

@@ -191,6 +191,8 @@
               @click="uplatequery(scope.$index, scope.row)" style="color: #2D4D89 !important " />
             <kt-button label="删除" :size="overSize" type="text" perms="agreement:input:delete"
               @click="deletequery(scope.$index, scope.row)" style="color: #D42426 !important " />
+              <kt-button label="协议轨迹" :size="overSize" type="text" perms="agreement:input:update"
+              @click="handleTrajectory(scope.$index, scope.row)" style="color: #2D4D89 !important " />
 
             <!-- <el-button type="text" size="mini">
               <el-dropdown trigger="click">
@@ -1346,6 +1348,24 @@
           @click="agreementSelectionSubmit">确 定</el-button>
       </span>
     </el-dialog>
+    <!-- 协议轨迹 -->
+    <el-dialog :visible.sync="ddgjdialogVisible1" width="430px">
+      <div slot="title">
+        <span>协议轨迹</span>
+      </div>
+      <div style="max-height: 500px; overflow-y: auto; padding: 20px;">
+        <el-steps direction="vertical" :active="trajectoryTable1.length - 1">
+          <el-step :title="item.readme" :key="item.id" v-for="item in trajectoryTable1">
+            <template slot="description">
+              <span>提交人:{{ item.createBy }}</span>
+              <div style="margin-bottom: 20px;">创建时间:{{ item.createTime }}</div>
+            </template>
+          </el-step>
+        </el-steps>
+        <div v-show="!trajectoryTable1.length">暂无轨迹</div>
+      </div>
+    </el-dialog>
+
   </div>
 </template>
 <script>
@@ -2337,6 +2357,9 @@ export default {
       auditType: "",
       agreementSelectionVisible: false,
 
+      showTrajectoryDialog: false,    // 协议轨迹
+      ddgjdialogVisible1: false,
+      trajectoryTable1: [],
     };
   },
   computed: {
@@ -2441,6 +2464,19 @@ export default {
     this.findLeftTreeData();
   },
   methods: {
+    // 协议轨迹
+    handleTrajectory(index, row) {
+      this.showTrajectoryDialog = true
+      console.log(index, row)
+      this.$api.insCompany.agreementTrajectory({
+        id: row.id
+      }).then((res) => {
+        if (res.code == 200) {
+          this.trajectoryTable1 = res.data
+          this.ddgjdialogVisible1 = true
+        }
+      })
+    },
     internalOrgTree(data, currentLevel = 1, maxLevel = 4) {
       return data.map(item => {
         const newItem = item; // 复制当前节点,使用对象扩展运算符

+ 425 - 0
src/views/ProductManage/OtherInsurance/DrivingConfig.vue

@@ -0,0 +1,425 @@
+<template>
+  <div>
+    <!-- 查询条件 -->
+    <el-form ref="queryPage" :model="queryPage" label-width="80px" inline>
+      <el-form-item label="保险公司">
+        <el-select v-model="queryPage.companyId" filterable clearable placeholder="请选择保险公司" size="small">
+          <el-option :label="item.name" :value="item.id" v-for="(item, index) in companyList" :key="index" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="产品名称">
+        <el-input size="small" clearable v-model="queryPage.projectName"></el-input>
+      </el-form-item>
+      <el-form-item label="座位数">
+        <el-input size="small" clearable type="number" v-model="queryPage.seatNum"></el-input>
+      </el-form-item>
+      <el-form-item>
+        <el-button @click="reset" size="small">重置</el-button>
+        <el-button type="primary" @click="getList('search')" size="small">查询</el-button>
+        <el-button type="primary" @click="handleClickAdd('add')" size="small">新增</el-button>
+      </el-form-item>
+    </el-form>
+    <!-- 列表 -->
+    <el-table :data="tableData" style="width: 100%;margin-bottom: 20px;" row-key="id" border :default-expand-all="false"
+      :tree-props="{children: 'insDrivingIntentionInsurances'}">
+      <el-table-column prop="companyName" label="保险公司" align="center" width="250px"></el-table-column>
+      <el-table-column prop="companyId" label="保险公司ID" align="center"></el-table-column>
+      <el-table-column prop="projectName" label="产品名称" align="center" width="250px"></el-table-column>
+      <el-table-column prop="projectCode" label="产品Code" align="center" width="150px"></el-table-column>
+      <el-table-column prop="riskCode" label="附加Code" align="center" width="150px"></el-table-column>
+      <el-table-column prop="seatNum" 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"></el-table-column>
+      <el-table-column prop="apiType" label="对接类型" align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.row.apiType == 1 ? 'API对接' : scope.row.apiType == 2 ? 'Python对接' : scope.row.apiType }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" width="250px">
+        <template slot-scope="scope">
+          <el-button @click="handleClickEdit(scope.row)" type="primary" size="small">编辑</el-button>
+          <el-button v-if="!scope.row.insDrivingIntentionInsuranceSon.length" @click="handleClickAdd(scope.row)" type="primary" size="small">添加子项</el-button>
+          <el-button v-if="scope.row.insDrivingIntentionInsuranceSon.length" @click="handleClickDetail(scope.row)" type="primary" size="small">详情</el-button>
+          <el-button @click="handleClickDelete(scope.row)" type="primary" size="small">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 分页 -->
+    <el-pagination @size-change="getList" @current-change="getList"
+      :current-page.sync="queryPage.pageNum" :page-sizes="[10, 20, 50, 100]" :page-size.sync="queryPage.pageSize"
+      layout="total, sizes, prev, pager, next, jumper" :total="total">
+    </el-pagination>
+
+    <!-- 新增 -->
+    <el-dialog :title="dialogType == 'edit' ? '编辑' : '新增'" :visible.sync="dialogVisibleAdd" width="50%" :before-close="handleCloseAdd">
+      <div>
+        <el-form ref="formAdd" :model="formDataAdd" label-width="80px" inline>
+          <el-form-item label="保险公司">
+            <el-select v-model="formDataAdd.companyId" filterable :disabled="companyDisabled" placeholder="请选择保险公司" size="small" style="width: 200px;">
+              <el-option :label="item.name" :value="item.id"  v-for="(item, index) in companyList" :key="index" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="父级产品">
+            <el-input size="small" v-model="parentName" disabled></el-input>
+          </el-form-item>
+          <el-form-item label="产品名称">
+            <el-input size="small" v-model="formDataAdd.projectName"></el-input>
+          </el-form-item>
+          <el-form-item label="产品Code">
+            <el-input size="small" v-model="formDataAdd.projectCode"></el-input>
+          </el-form-item>
+          <el-form-item label="附加Code">
+            <el-input size="small" v-model="formDataAdd.riskCode"></el-input>
+          </el-form-item>
+          <el-form-item label="座位数">
+            <el-input size="small" type="number" v-model="formDataAdd.seatNum"></el-input>
+          </el-form-item>
+          <el-form-item label="总保额">
+            <el-input size="small" v-model="formDataAdd.sumAmount"></el-input>
+          </el-form-item>
+          <el-form-item label="总保费">
+            <el-input size="small" v-model="formDataAdd.sumPremium"></el-input>
+          </el-form-item>
+          <el-form-item label="对接类型">
+            <!-- <el-input size="small" v-model="formDataAdd.apiType"></el-input> -->
+            <el-select v-model="formDataAdd.apiType" placeholder="请选择对接类型" size="small" style="width: 200px;">
+              <el-option label="API对接" :value="1" />
+              <el-option label="Python对接" :value="2" />
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="handleCloseAdd">取 消</el-button>
+        <el-button size="small" type="primary" @click="subAddDialog('formAdd')">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <!-- 二级详情 -->
+    <el-dialog title="详情" :visible.sync="dialogDetail" width="50%" :before-close="handleCloseDetail">
+      <div>
+        <el-table :data="tableDataSon" style="width: 100%;margin-bottom: 20px;" row-key="id" border :default-expand-all="false">
+          <el-table-column prop="name" label="保险责任名称" align="center" width="200"></el-table-column>
+          <el-table-column prop="code" label="保险责任code" align="center"></el-table-column>
+          <el-table-column prop="amount" label="保险责任保费额度" align="center"></el-table-column>
+          <el-table-column prop="premium" label="保险责任金额" align="center"></el-table-column>
+          <el-table-column label="操作" align="center">
+            <template slot-scope="scope">
+              <el-button @click="handleClickDetailEdit(scope.row)" type="primary" size="small">编辑</el-button>
+              <el-button @click="handleClickDeleteDetail(scope.row)" type="primary" size="small">删除</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" type="primary" @click="handleClickDetailEdit('add')">添 加</el-button>
+        <el-button size="small" @click="handleCloseDetail">关 闭</el-button>
+      </span>
+    </el-dialog>
+
+    <!-- 二级新增 -->
+    <el-dialog :title="dialogType == 'edit' ? '编辑' : '新增'" :visible.sync="dialogDetailAdd" width="50%" :before-close="handleCloseDetailAdd">
+      <div>
+        <el-form ref="detailData" :model="detailData" label-width="180px" inline>
+          <el-form-item label="保险公司">
+            <el-select v-model="detailData.companyId" filterable disabled placeholder="请选择保险公司" size="small" style="width: 200px;">
+              <el-option :label="item.name" :value="item.id"  v-for="(item, index) in companyList" :key="index" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="保险责任名称">
+            <el-input size="small" v-model="detailData.name"></el-input>
+          </el-form-item>
+          <el-form-item label="保险责任code">
+            <el-input size="small" v-model="detailData.code"></el-input>
+          </el-form-item>
+          <el-form-item label="保险责任保费额度">
+            <el-input size="small" v-model="detailData.amount"></el-input>
+          </el-form-item>
+          <el-form-item label="保险责任金额">
+            <el-input size="small" v-model="detailData.premium"></el-input>
+          </el-form-item>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="handleCloseDetailAdd">取 消</el-button>
+        <el-button size="small" type="primary" @click="subAddDetailDialog('detailData')">确 定</el-button>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      tableData: [],
+      // 查询参数
+      queryPage: {
+        pageNum: 1,
+        pageSize: 10,
+        companyId: undefined,
+        projectName: undefined,
+        seatNum: undefined,
+      },
+      total: 0,
+      editInfo: {},   // 编辑详情
+      showEditDialog: false,
+      dialogVisibleAdd: false,  // 新增弹窗
+      // 新增数据
+      formDataAdd: {
+        parentId: '0',
+        type: 2,    // 默认每次传2
+        companyId: '',
+        projectName: '',
+        projectCode: '',
+        riskCode: '',
+        seatNum: '',
+        sumAmount: '',
+        sumPremium: '',
+        requestData: '',
+        apiType: ''   // 1api对接 2python对接
+      },
+      // 保险公司列表
+      companyList: [],
+      companyDisabled: false,
+      parentName: '无父级',
+      dialogType: 'edit',
+      dialogDetail: false,    // 二级详情弹窗
+      tableDataSon: [],     // 二级详情列表
+      detailData: {
+        companyId: '',
+        drivingCodeId: '',
+        code: '',
+        name: '',
+        amount: '',
+        premium: ''
+      },       // 二级编辑详情
+      dialogDetailAdd: false,   // 二级详情编辑弹窗
+    }
+  },
+  created() {
+    this.getCompanyList()   // 保险公司列表
+    this.getList()
+  },
+  methods: {
+    handleClickDeleteDetail(row) {
+      this.$confirm('确定删除?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.$api.product.deleteDrivingSon({
+          sonId: row.sonId
+        }).then((res) => {
+          if (res.code == 200) {
+            this.$message.success(res.msg)
+            this.getList()
+            this.handleCloseDetail()
+          } else {
+            this.$message.error(res.msg)
+          }
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        });          
+      });
+    },
+    // 删除
+    handleClickDelete(row) {
+      this.$confirm('确定删除?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.$api.product.deleteDriving({
+          id: row.id,
+          projectCode: row.projectCode
+        }).then((res) => {
+          if (res.code == 200) {
+            this.getList()
+            this.$message.success(res.msg)
+          } else {
+            this.$message.error(res.msg)
+          }
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        });          
+      });
+    },
+    // 确定编辑详情
+    subAddDetailDialog() {
+      if (this.dialogType == 'add') {
+        // 新增
+        this.$api.product.addDrivingSon(this.detailData).then((res) => {
+          if (res.code == 200) {
+            this.$message.success(res.msg)
+            this.getList()
+            this.handleCloseDetailAdd()
+            this.handleCloseDetail()
+          }
+        })
+      } else {
+        // 编辑
+        this.$api.product.updateDrivingSon(this.detailData).then((res) => {
+          if (res.code == 200) {
+            this.$message.success(res.msg)
+            this.getList()
+            this.handleCloseDetailAdd()
+            this.handleCloseDetail()
+          }
+        })
+      }
+    },
+    // 编辑详情
+    handleClickDetailEdit(row) {
+      if (row != 'add') {
+        this.dialogType = 'edit'
+        this.detailData.sonId = row.sonId
+        this.detailData.name = row.name
+        this.detailData.code = row.code
+        this.detailData.amount = row.amount
+        this.detailData.premium = row.premium
+      } else {
+        this.dialogType = 'add'
+      }
+      this.dialogDetailAdd = true
+    },
+    // 关闭编辑详情
+    handleCloseDetailAdd() {
+      this.dialogDetailAdd = false
+      this.detailData.sonId = undefined
+      this.detailData.name = undefined
+      this.detailData.code = undefined
+      this.detailData.amount = undefined
+      this.detailData.premium = undefined
+    },
+    // 点击详情
+    handleClickDetail(row) {
+      this.tableDataSon = row.insDrivingIntentionInsuranceSon
+      this.detailData.companyId = row.companyId
+      this.detailData.drivingCodeId = row.projectCode
+      this.dialogDetail = true
+    },
+    handleCloseDetail() {
+      this.dialogDetail = false
+      this.tableDataSon = []
+    },
+    // 获取公司列表
+    getCompanyList() {
+      this.$api.product.getCompany({
+        name: '',
+        type: '',
+      }).then((res) => {
+        this.companyList = res.data
+      })
+    },
+    // 获取列表信息
+    getList(type) {
+      if (type == 'search') {
+        this.queryPage.pageNum = 1
+        this.queryPage.pageSize = 10
+      }
+      this.$api.product.getDrivingInfo(this.queryPage).then((res) => {
+        if (res.code == 200) {
+          this.tableData = res.data.records
+          this.total = res.data.total
+        }
+      })
+    },
+    // 重置
+    reset() {
+      this.queryPage = {
+        companyId: undefined,
+        projectName: undefined,
+        seatNum: undefined,
+      }
+      this.getList('search')
+    },
+    // 编辑
+    handleClickEdit(row) {
+      this.parentName = row.projectName
+      this.dialogType = 'edit'
+      this.formDataAdd = {
+        id: row.id,
+        parentId: row.parentId,
+        type: 2,    // 默认每次传2
+        companyId: row.companyId,
+        projectName: row.projectName,
+        projectCode: row.projectCode,
+        riskCode: row.riskCode,
+        seatNum: row.seatNum,
+        sumAmount: row.sumAmount,
+        sumPremium: row.sumPremium,
+        requestData: row.requestData || '',
+        apiType: row.apiType   // 1api对接 2python对接
+      }
+      this.dialogVisibleAdd = true
+    },
+    // 新增
+    handleClickAdd(row) {
+      this.dialogType = 'add'
+      if (row != 'add') {
+        this.formDataAdd.companyId = row.companyId
+        this.formDataAdd.parentId = row.id
+
+        this.companyDisabled = true
+        this.parentName = row.projectName
+      } else {
+        this.companyDisabled = false
+        this.parentName = '无父级'
+      }
+      this.dialogVisibleAdd = true
+    },
+    // 提交新增
+    subAddDialog(formName) {
+      if (this.dialogType == 'add') {
+        // 新增
+        this.$api.product.addDriving(this.formDataAdd).then((res) => {
+          if (res.code == 200) {
+            this.$message.success(res.msg)
+            this.getList()
+            this.handleCloseAdd()
+          }
+        })
+      } else {
+        // 编辑
+        this.$api.product.updateDriving(this.formDataAdd).then((res) => {
+          if (res.code == 200) {
+            this.$message.success(res.msg)
+            this.getList()
+            this.handleCloseAdd()
+          }
+        })
+      }
+      
+    },
+    // 关闭新增
+    handleCloseAdd() {
+      this.dialogVisibleAdd = false
+      this.formDataAdd = {
+        parentId: '0',
+        type: 2,    // 默认每次传2
+        companyId: '',
+        projectName: '',
+        projectCode: '',
+        riskCode: '',
+        seatNum: '',
+        sumAmount: '',
+        sumPremium: '',
+        requestData: '',
+        apiType: ''   // 1api对接 2python对接
+      }
+    },
+  },
+}
+</script>
+
+<style>
+
+</style>