فهرست منبع

对接报价管理、报价次数配置、报价明细和增次明细相关功能接口

wuguojie 1 سال پیش
والد
کامیت
c11290424a

+ 79 - 0
src/http/moudules/quote.js

@@ -1,5 +1,6 @@
 import axios from '../axios'
 
+// 获取保险公司
 export const getCompany  = () => {
   return axios({
     url: '/esmInsCompany/liveCompanyList',
@@ -7,6 +8,7 @@ export const getCompany  = () => {
   })
 }
 
+// 获取代理人
 export const getAgentUser = (data) => {
   return axios({
     url: '/user/queryPage',
@@ -15,6 +17,7 @@ export const getAgentUser = (data) => {
   })
 }
 
+// 报价配置
 export const setQuoteInfo = (data) => {
   return axios({
     url: '/quoteConfig/setQuoteInfo',
@@ -23,3 +26,79 @@ export const setQuoteInfo = (data) => {
   })
 }
 
+// 报价明细
+export const getQuoteDetails = (data) => {
+  return axios({
+    url: '/quoteConfig/quoteDetails',
+    method: 'post',
+    data
+  })
+}
+
+// 动作
+export const getQuoteAction = () => {
+  return axios({
+    url: '/quoteConfig/getQuoteAction',
+    method: 'get'
+  })
+}
+
+// 结果
+export const getQuoteResult = () => {
+  return axios({
+    url: '/quoteConfig/getQuoteResult',
+    method: 'get'
+  })
+}
+
+// 获取报价配置详情
+export const getQuoteConfigInfo = (data) => {
+  return axios({
+    url: `/quoteConfig/getQuoteConfigInfo?companyId=${data}`,
+    method: 'get'
+  })
+}
+
+// 报价管理
+export const quoteUserDetails = (data) => {
+  return axios({
+    url: '/quoteConfig/quoteUserDetails',
+    method: 'post',
+    data
+  })
+}
+
+// 报价次数配置
+export const quoteRequestDetail = () => {
+  return axios({
+    url: '/quoteConfig/quoteRequestDetail',
+    method: 'post'
+  })
+}
+
+// 同步配置
+export const syncQuoteInfo = (data) => {
+  return axios({
+    url: '/quoteConfig/syncQuoteInfo',
+    method: 'post',
+    data
+  })
+}
+
+// 增加次数
+export const appendUserConfig = (data) => {
+  return axios({
+    url: '/quoteConfig/appendUserConfig',
+    method: 'post',
+    data
+  })
+}
+
+// 增次明细
+export const getAppendUserQuotePage = (data) => {
+  return axios({
+    url: '/quoteConfig/getAppendUserQuotePage',
+    method: 'post',
+    data
+  })
+}

+ 82 - 45
src/views/PeopleManage/Agent/AddCountDetail.vue

@@ -1,52 +1,50 @@
 <template>
   <div class="quoteDetail">
     <el-form ref="QuoteDetailForm" v-model="quoteDetailForm" :inline="true" label-width="130px">
-      <el-form-item style="width: 30%;" label="代理人信息">
+<!--      <el-form-item style="width: 30%;" label="代理人信息">
         <el-input size="small" v-model="quoteDetailForm.orderNumber" placeholder="请输入订单号"></el-input>
-      </el-form-item>
+      </el-form-item>-->
       <el-form-item style="width: 30%;" label="保险公司">
-        <el-select style="width: 100%" size="small" v-model="quoteDetailForm.action">
-          <el-option label="动作1" value="1"></el-option>
-          <el-option label="动作2" value="2"></el-option>
+        <el-select style="width: 100%" size="small" filterable v-model="quoteDetailForm.companyId">
+          <el-option :label="item.namesimple" :value="item.id" v-for="(item, index) in leftTree" :key="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item style="width: 30%;" label="操作时间">
-        <el-date-picker size="small" v-model="quoteDetailForm.rangeDate" type="daterange" range-separator="至"
+        <el-date-picker size="small" v-model="quoteDetailForm.rangeDate" value-format="yyyy-MM-dd" type="daterange" range-separator="至"
           start-placeholder="开始日期" end-placeholder="结束日期">
         </el-date-picker>
       </el-form-item>
+      <el-form-item style="width: 30%;" label="用户信息">
+        <el-input size="small" v-model="quoteDetailForm.agent" placeholder="请输入工号、姓名查找"></el-input>
+      </el-form-item>
       <el-form-item style="width: 30%;" label="操作人信息">
-        <el-input size="small" v-model="quoteDetailForm.agentPeoeple" placeholder="请输入工号、姓名查找"></el-input>
+        <el-input size="small" v-model="quoteDetailForm.createBy" placeholder="请输入工号查找"></el-input>
       </el-form-item>
       <el-form-item style="width: 30%;">
-        <el-button type="primary" size="small" style="margin-left: 150px;">查询</el-button>
-        <el-button size="small">重置</el-button>
+        <el-button type="primary" size="small" style="margin-left: 150px;" @click="initData()">查询</el-button>
+        <el-button size="small" @click="reset()">重置</el-button>
       </el-form-item>
     </el-form>
     <el-table :data="tableData">
-      <el-table-column prop="code" label="部门编码" width="150"></el-table-column>
-      <el-table-column prop="organization" label="机构名称" width="150"></el-table-column>
-      <el-table-column prop="department" label="部门名称" width="150"></el-table-column>
-      <el-table-column prop="number" label="工号" width="200">
-        <template slot-scope="scope">
-          <a>{{ scope.row.orderNumber }}</a>
-        </template>
-      </el-table-column>
+      <el-table-column prop="deptId" label="部门编码" width="150"></el-table-column>
+<!--      <el-table-column prop="organization" label="机构名称" width="150"></el-table-column>-->
+      <el-table-column prop="deptName" label="部门名称" width="150"></el-table-column>
+      <el-table-column prop="userId" label="工号" width="200"></el-table-column>
       <el-table-column prop="name" label="姓名" width="150"></el-table-column>
-      <el-table-column prop="phone" label="联系电话" width="150"></el-table-column>
+      <el-table-column prop="mobile" label="联系电话" width="150"></el-table-column>
       <el-table-column prop="company" label="保险公司" width="150"></el-table-column>
-      <el-table-column prop="count" label="增加次数" width="150"></el-table-column>
-      <el-table-column prop="time" label="操作时间" width="150"></el-table-column>
-      <el-table-column prop="people" label="操作人" width="150"></el-table-column>
+      <el-table-column prop="dayMaxQuoteNum" label="增加次数" width="150"></el-table-column>
+      <el-table-column prop="createTime" label="操作时间" width="150"></el-table-column>
+      <el-table-column prop="createBy" label="操作人" width="150"></el-table-column>
       <el-table-column label="操作" fixed="right" width="200">
         <template slot-scope="scope">
-          <kt-button label="详情" @click="dialogVisible = true" size="small" type="text" perms="agreement:input:update"
+          <kt-button label="详情" @click="handleDetail(scope.row)" size="small" type="text" perms="agreement:input:update"
             style="color: #D42426 !important " />
         </template>
       </el-table-column>
     </el-table>
     <div class="flex-box">
-      <el-pagination @size-change="handleSizeChange" :current-page="pageNum" :page-sizes="[10, 20, 30, 40]"
+      <el-pagination @size-change="handleSizeChange" @current-change="handlePageChange" :current-page="pageNum" :page-sizes="[10, 20, 30, 40]"
         :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total">
       </el-pagination>
     </div>
@@ -59,25 +57,24 @@
           <el-input v-model="addCountForm.company"></el-input>
         </el-form-item>
         <el-form-item label="今日已报价" style="width: 80%">
-          <el-input v-model="addCountForm.hadQuote"></el-input>
+          <el-input v-model="addCountForm.dayAllOrder"></el-input>
         </el-form-item>
         <el-form-item label="今日已承保" style="width: 80%">
-          <el-input v-model="addCountForm.had"></el-input>
+          <el-input v-model="addCountForm.dayCoverOrder"></el-input>
         </el-form-item>
         <el-form-item label="报价出单比" style="width: 80%">
-          <el-input v-model="addCountForm.assign"></el-input>
+          <el-input v-model="addCountForm.rate"></el-input>
           <span style="font-size: 12px; color: #999;">报价出单比=承保单数/报价单数*100%(四舍五入到小数点后两位)</span>
         </el-form-item>
         <el-form-item label="增加次数" style="width: 80%">
-          <el-input v-model="addCountForm.count"></el-input>
+          <el-input v-model="addCountForm.quoteNumber"></el-input>
         </el-form-item>
         <el-form-item label="备注" style="width: 80%">
-          <el-input type="textarea" v-model="addCountForm.tips"></el-input>
+          <el-input type="textarea" v-model="addCountForm.remark"></el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
+        <el-button @click="dialogVisible = false">关 闭</el-button>
       </span>
     </el-dialog>
   </div>
@@ -91,29 +88,69 @@ export default {
   data() {
     return {
       quoteDetailForm: {},
-      tableData: [{
-        code: 1,
-        organization: 1,
-        department: 1,
-        number: 1,
-        name: 1,
-        phone: 1,
-        company: 1,
-        count: 1,
-        time: 1,
-        people: 1
-      }],
+      tableData: [],
       pageNum: 1,
       pageSize: 10,
       total: 0,
       dialogVisible: false,
-      addCountForm: {}
+      addCountForm: {},
+      leftTree: []
     }
   },
   methods: {
-    handleSizeChange() {
-
+    // 获取列表数据
+    initData() {
+      this.$api.quote.getAppendUserQuotePage({
+        companyId: this.quoteDetailForm.companyId,
+        agent: this.quoteDetailForm.agent,
+        createBy: this.quoteDetailForm.createBy,
+        startTime: this.quoteDetailForm.rangeDate&&this.quoteDetailForm.rangeDate.length>0?this.quoteDetailForm.rangeDate[0]:'',
+        endTime: this.quoteDetailForm.rangeDate&&this.quoteDetailForm.rangeDate.length>1?this.quoteDetailForm.rangeDate[1]:'',
+      }).then(res => {
+        if(res.code === 200) {
+          this.tableData = res.data.records
+          this.total = res.data.total
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    // 重置
+    reset() {
+      this.quoteDetailForm = {}
+      this.initData();
+    },
+    // 获取保险公司
+    initCompany() {
+      this.$api.quote.getCompany().then(res => {
+        if(res.code == 200) {
+          this.leftTree = res.data
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    // 分页(每页条数变化)
+    handleSizeChange(size) {
+      this.pageSize = size
+      this.quoteDetailForm = {}
+      this.initData();
+    },
+    // 分页(页码改变)
+    handlePageChange(page) {
+      this.pageNum = page
+      this.quoteDetailForm = {}
+      this.initData();
+    },
+    handleDetail(row) {
+      this.dialogVisible = true
+      row.agent = `${row.name}-${row.userId}`
+      this.addCountForm = {...row}
     }
+  },
+  mounted() {
+    this.initCompany();
+    this.initData();
   }
 }
 </script>

+ 117 - 28
src/views/PeopleManage/Agent/QuoteCountManagement.vue

@@ -8,27 +8,27 @@
         <el-row :gutter="20" align="middle" style="display: flex; align-items: center; width: 100%; overflow: hidden; margin: 0">
           <el-col :span="18" style="padding-left: 20px">报价限制</el-col>
           <el-col :span="6">
-            <el-button type="primary" @click="handleSync" :disabled="!quoteForm.isEnabled">同步配置到其他保司</el-button>
-            <el-button type="primary" @click="handleEdit" :disabled="!quoteForm.isEnabled" v-if="!quoteForm.isEnabled">编辑</el-button>
+            <el-button type="primary" @click="handleSync" :disabled="!isEdit">同步配置到其他保司</el-button>
+            <el-button type="primary" @click="handleEdit" v-if="!isEdit">编辑</el-button>
             <el-button type="primary" @click="handleSave" v-else>保存</el-button>
           </el-col>
         </el-row>
         <el-divider></el-divider>
         <el-form :model="quoteForm" ref="QuoteFormRef" :rules="quoteRules" style="padding-left: 30px;" label-width="120px">
           <el-form-item prop="count" label="报价次数限制">
-            <el-switch v-model="quoteForm.isEnabled"></el-switch>
+            <el-switch v-model="quoteForm.isEnabled" :disabled="!isEdit"></el-switch>
             <p class="tips">开启后,代理人的报价次数将受到限制,超出设置的报价次数后将停止代理人的报价功能</p>
           </el-form-item>
           <el-form-item prop="agentLimit" label="代理人限制">
             <div>
-              <el-radio-group v-model="quoteForm.authorize" :disabled="!quoteForm.isEnabled">
+              <el-radio-group v-model="quoteForm.authorize" :disabled="!isEdit">
                 <el-radio :label="0">限制全部代理人</el-radio>
                 <el-radio :label="1">限制部分代理人</el-radio>
               </el-radio-group>
-              <kt-button v-if="quoteForm.authorize" type="text" label="选择代理人" icon="el-icon-plus" style="color: #2D4D89; margin-left: 30px" @click="selectAgent" />
+              <kt-button v-if="quoteForm.authorize" type="text" label="选择代理人" :disabled="!isEdit" icon="el-icon-plus" style="color: #2D4D89; margin-left: 30px" @click="selectAgent" />
             </div>
             <el-table
-              :data="selectedList"
+              :data="selectList"
             >
               <el-table-column prop="deptId" label="部门编码"></el-table-column>
               <el-table-column prop="organization" label="机构名称"></el-table-column>
@@ -38,37 +38,47 @@
               <el-table-column prop="mobile" label="联系电话"></el-table-column>
               <el-table-column label="操作">
                 <template slot-scope="scope">
-                  <kt-button :disabled="!quoteForm.isEnabled" type="text" label="删除" style="color: #2D4D89;" />
+                  <el-popconfirm
+                    confirm-button-text='确定'
+                    cancel-button-text='取消'
+                    icon="el-icon-info"
+                    icon-color="red"
+                    :ref="`popconfirm-${scope.row.id}`"
+                    title="确定删除吗?"
+                    @confirm="handleDelete(scope.row)"
+                  >
+                    <kt-button slot="reference" :disabled="!isEdit" type="text" label="删除" style="color: #2D4D89;" />
+                  </el-popconfirm>
                 </template>
               </el-table-column>
             </el-table>
           </el-form-item>
           <el-form-item prop="quoteLimit" label="报价限制">
-            <el-checkbox-group v-model="quoteForm.quoteLimit" :disabled="!quoteForm.isEnabled">
+            <el-checkbox-group v-model="quoteForm.quoteLimit">
               <div>
-                <el-checkbox :label="1">
+                <el-checkbox label="1" :disabled="!isEdit">
                   <div style="display: flex; align-items: center">
-                    单日报价,出单比不满<el-input size="small" v-model="quoteForm.orderRatio" :disabled="!quoteForm.isEnabled" style="width: 100px; margin: 0 20px;">
+                    单日报价,出单比不满<el-input size="small" v-model="quoteForm.orderRatio" :disabled="!isEdit" style="width: 100px; margin: 0 20px;">
                     <template slot="append">%</template>
                   </el-input>后,锁定代理人报价次数
                   </div>
                 </el-checkbox>
               </div>
               <div>
-                <el-checkbox :label="2">
+                <el-checkbox label="2" :disabled="!isEdit">
                   <div>单日最大报价次数</div>
                   <div style="display: flex; align-items: center">
-                    单日代理人报价满<el-input size="small" v-model="quoteForm.dayMaxQuoteNum" :disabled="!quoteForm.isEnabled" style="width: 100px; margin: 0 20px;">
+                    单日代理人报价满<el-input size="small" v-model="quoteForm.dayMaxQuoteNum" :disabled="!isEdit" style="width: 100px; margin: 0 20px;">
                     <template slot="append">次</template>
                   </el-input>后,锁定代理人报价次数
                   </div>
                 </el-checkbox>
               </div>
               <div>
-                <el-checkbox :label="3">
+                <el-checkbox label="3" :disabled="!isEdit">
                   <div>单日单车限制</div>
                   <div style="display: flex; align-items: center">
-                    单日代理人单车最多报价<el-input size="small" :disabled="!quoteForm.isEnabled" v-model="quoteForm.carMaxQuoteNum" style="width: 100px; margin: 0 20px;">
+                    单日代理人单车最多报价<el-input size="small" :disabled="!isEdit" v-model="quoteForm.carMaxQuoteNum" style="width: 100px; margin: 0 20px;">
                     <template slot="append">次</template>
                   </el-input>后,锁定代理人报价次数
                   </div>
@@ -150,8 +160,8 @@
         </el-pagination>
       </div>
       <template slot="footer">
-        <kt-button label="取消" size="small" type="text" @click="agentTableShow = false" />
-        <kt-button label="确认" size="small" type="primary" @click="agentTableShow = false" />
+        <kt-button label="取消" size="small" type="text" @click="handleCancel" />
+        <kt-button label="确认" size="small" type="primary" @click="handleOk" />
       </template>
     </el-dialog>
   </div>
@@ -159,7 +169,7 @@
 
 <script>
 import KtButton from "../../Core/KtButton.vue";
-import {getAgentUser, setQuoteInfo} from "../../../http/moudules/quote";
+import {getAgentUser, getQuoteConfigInfo, setQuoteInfo, syncQuoteInfo} from "../../../http/moudules/quote";
 import {findTree} from "../../../http/moudules/insCompany";
 
 export default {
@@ -172,6 +182,7 @@ export default {
       menuIndex: 0, // 保险公司item下标
       syncShow: false, // 同步设置弹框
       quoteForm: {
+        id: '',
         isEnabled: false,
         authorize: '',
         quoteLimit: []
@@ -193,11 +204,12 @@ export default {
           }
         ]
       }, // 报价form规则
-      isCheckedAll: false,
-      checkType: '',
-      agentTableShow: false,
+      isEdit: false, // 是否可编辑
+      checkType: '', // 全选类型
+      agentTableShow: false, // 控制选择代理人弹框
       agentDataList: [],
-      selectList: [], // 勾选的数据(格式为每页勾选的为一个数组并作为数组元素保存)
+      myList: [], // 记录每个保险公司接口返回的已经选好的代理人
+      selectList: [], // 勾选的数据
       selectedList: [], // 勾选的数据(格式为平铺后)
       pageList: [1], // 记录点击了的页码
       selectedLength: 0, // 选择(包括全选后)的数据数量
@@ -213,6 +225,7 @@ export default {
       this.$api.quote.getCompany().then(res => {
         if(res.code == 200) {
           this.leftTree = res.data
+          this.initQuoteDetails(res.data[0].id)
         } else {
           this.$message.error(res.msg)
         }
@@ -235,7 +248,7 @@ export default {
             value: that.countDetailForm.orderNumber?that.countDetailForm.orderNumber: ''
           },
           deptId: {
-            value: that.countDetailForm.organization?that.countDetailForm.organization: ''
+            value: that.countDetailForm.organization?that.countDetailForm.organization[that.countDetailForm.organization.length-1]: ''
           }
         }
       }).then(res => {
@@ -269,12 +282,28 @@ export default {
     reset() {
       this.countDetailForm = {}
       this.pageNum = 1
+      this.initAgentUser()
     },
     // 代理人分页页数变化函数
     handlePageNumChange(page) {
       this.pageNum = page
       this.initAgentUser()
     },
+    // 选择代理人确认
+    handleOk() {
+      if(this.checkType === 'all') {
+        this.quoteForm.authorize = 0
+        this.selectList = []
+      } else {
+        this.selectList = [...this.selectedList]
+      }
+      this.agentTableShow = false
+    },
+    // 选择代理人取消
+    handleCancel() {
+      this.selectList = [...this.myList]
+      this.agentTableShow = false
+    },
     // 代理选择
     handleSelectChange(rows) {
       if(this.checkType === 'all') {
@@ -313,7 +342,40 @@ export default {
     // 保险公司切换
     handleSelect(item, index) {
       this.menuIndex = index
-      this.quoteForm = {}
+      this.quoteForm = {
+        id: '',
+        isEnabled: false,
+        authorize: '',
+        quoteLimit: []
+      }
+      this.initQuoteDetails(item.id)
+    },
+    // 获取详情
+    initQuoteDetails(id) {
+      this.selectList = []
+      this.selectedList = []
+      this.myList = []
+      this.$api.quote.getQuoteConfigInfo(id).then(res => {
+        if(res.code === 200) {
+          this.quoteForm = {...res.data}
+          this.quoteForm.isEnabled = res.data.isEnabled?true:false
+          this.quoteForm.quoteLimit = []
+          if(res.data.orderRatio){
+            this.quoteForm.quoteLimit.push('1')
+          }
+          if(res.data.dayMaxQuoteNum){
+            this.quoteForm.quoteLimit.push('2')
+          }
+          if(res.data.carMaxQuoteNum){
+            this.quoteForm.quoteLimit.push('3')
+          }
+          this.selectedList = res.data.proxyList
+          this.selectList = [...res.data.proxyList]
+          this.myList = [...res.data.proxyList]
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
     },
     // 同步到其他
     handleSync() {
@@ -321,7 +383,7 @@ export default {
     },
     // 编辑
     handleEdit() {
-
+      this.isEdit = true
     },
     // 保存
     handleSave() {
@@ -330,16 +392,16 @@ export default {
           this.$api.quote.setQuoteInfo({
             companyId: this.leftTree[this.menuIndex].id,
             isEnabled: this.quoteForm.isEnabled?1:0,
-            id: null,
+            id: this.quoteForm.id,
             authorize: this.quoteForm.authorize,
             proxyList: this.selectedList,
             orderRatio: this.quoteForm.orderRatio,
             dayMaxQuoteNum: this.quoteForm.dayMaxQuoteNum,
             carMaxQuoteNum: this.quoteForm.carMaxQuoteNum
           }).then(res => {
-            console.log('保存', res)
             if(res.code == 200) {
               this.$message.success(res.msg)
+              this.initQuoteDetails(this.leftTree[this.menuIndex].id)
               this.quoteForm = {}
             } else {
               this.$message.error(res.msg)
@@ -348,11 +410,28 @@ export default {
         } else {
           this.$message.error('请填写或选择必要数据!')
         }
+        this.isEdit = false
       })
     },
     // 同步到其他确定
     handleSubmit() {
-
+      this.$api.quote.syncQuoteInfo({
+        companyId: this.leftTree[this.menuIndex].id,
+        isEnabled: this.quoteForm.isEnabled?1:0,
+        id: this.quoteForm.id,
+        authorize: this.quoteForm.authorize,
+        proxyList: this.selectedList,
+        orderRatio: this.quoteForm.orderRatio,
+        dayMaxQuoteNum: this.quoteForm.dayMaxQuoteNum,
+        carMaxQuoteNum: this.quoteForm.carMaxQuoteNum
+      }).then(res => {
+        if(res.code === 200) {
+          this.$message.success(res.msg)
+        } else {
+          this.$message.error(res.msg)
+        }
+        this.syncShow = false
+      })
     },
     // 选择代理人
     selectAgent() {
@@ -365,7 +444,7 @@ export default {
     selectTypeChange() {
       if(this.agentDataList.length>0) {
         this.agentDataList.forEach(item => {
-          this.$refs.multipleTable.toggleRowSelection(item)
+          this.$refs.multipleTable.toggleRowSelection(item, true)
         })
       }
       if(this.checkType === 'all') {
@@ -382,6 +461,16 @@ export default {
     handleBeforeUnload(event) {
       event.preventDefault();
       event.returnValue = '';
+    },
+    // 删除选择的代理人
+    handleDelete(row) {
+      let list = []
+      list = this.selectList.filter((item) => {
+        return item.id != row.id
+      })
+      this.selectList = [...list]
+      this.selectedList = [...list]
+      this.myList = [...list]
     }
   },
   mounted() {

+ 141 - 24
src/views/PeopleManage/Agent/QuoteDetail.vue

@@ -5,6 +5,7 @@
         <el-date-picker
           size="small"
           v-model="quoteDetailForm.rangeDate"
+          value-format="yyyy-MM-dd"
           type="daterange"
           range-separator="至"
           start-placeholder="开始日期"
@@ -12,53 +13,59 @@
         </el-date-picker>
       </el-form-item>
       <el-form-item style="width: 30%;" label="订单号">
-        <el-input size="small" v-model="quoteDetailForm.orderNumber" placeholder="请输入订单号"></el-input>
+        <el-input size="small" v-model="quoteDetailForm.subOrderNo" placeholder="请输入订单号"></el-input>
       </el-form-item>
       <el-form-item style="width: 30%;" label="动作">
         <el-select style="width: 100%" size="small" v-model="quoteDetailForm.action">
-          <el-option label="动作1" value="1"></el-option>
-          <el-option label="动作2" value="2"></el-option>
+          <el-option :label="item.desc" :value="item.code" v-for="(item, index) in actionList" :key="item.code"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item style="width: 30%;" label="代理人">
-        <el-input size="small" v-model="quoteDetailForm.agentPeoeple" placeholder="请输入工号、姓名查找"></el-input>
+        <el-input size="small" v-model="quoteDetailForm.agent" placeholder="请输入工号、姓名查找"></el-input>
       </el-form-item>
       <el-form-item style="width: 30%;" label="车牌号">
-        <el-input size="small" v-model="quoteDetailForm.carNumber" placeholder="请输入车牌号"></el-input>
+        <el-input size="small" v-model="quoteDetailForm.licenseNo" placeholder="请输入车牌号"></el-input>
       </el-form-item>
       <el-form-item style="width: 30%;" label="结果">
-        <el-select style="width: 100%" size="small" v-model="quoteDetailForm.action">
-          <el-option label="结果1" value="1"></el-option>
-          <el-option label="结果2" value="2"></el-option>
+        <el-select style="width: 100%" size="small" v-model="quoteDetailForm.result">
+          <el-option :label="item.desc" :value="item.code" v-for="(item, index) in resultList" :key="item.code"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item style="width: 30%;" label="操作人">
-        <el-input size="small" v-model="quoteDetailForm.person" placeholder="请输入操作人"></el-input>
+        <el-input size="small" v-model="quoteDetailForm.operator" placeholder="请输入操作人"></el-input>
       </el-form-item>
       <el-form-item style="width: 30%;">
-        <el-button type="primary" size="small" style="margin-left: 150px;">查询</el-button>
-        <el-button size="small">重置</el-button>
+        <el-button type="primary" size="small" style="margin-left: 150px;" @click="initData">查询</el-button>
+        <el-button size="small" @click="reset">重置</el-button>
       </el-form-item>
     </el-form>
     <el-table
       :data="tableData"
     >
-      <el-table-column prop="" label="报价时间"></el-table-column>
-      <el-table-column prop="" label="动作"></el-table-column>
-      <el-table-column prop="" label="保险公司"></el-table-column>
-      <el-table-column prop="" label="订单号">
+      <el-table-column prop="createTime" label="报价时间"></el-table-column>
+      <el-table-column prop="action" label="动作"></el-table-column>
+      <el-table-column prop="companyId" label="保险公司">
         <template slot-scope="scope">
-          <a>{{ scope.row.orderNumber }}</a>
+          {{ leftTree.find(item => item.id === scope.row.companyId)?leftTree.find(item => item.id === scope.row.companyId).namesimple:'' }}
         </template>
       </el-table-column>
-      <el-table-column prop="" label="车牌号"></el-table-column>
-      <el-table-column prop="" label="工号"></el-table-column>
-      <el-table-column prop="" label="姓名"></el-table-column>
-      <el-table-column prop="" label="联系电话"></el-table-column>
-      <el-table-column prop="" label="结果"></el-table-column>
+      <el-table-column prop="subOrderNo" label="订单号">
+        <template slot-scope="scope">
+          <a class="link" @click="getQuoteDetail(scope.row)">{{ scope.row.subOrderNo }}</a>
+        </template>
+      </el-table-column>
+      <el-table-column prop="licenseNo" label="车牌号"></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="mobile" label="联系电话"></el-table-column>
+      <el-table-column prop="result" label="结果"
+        :filters="resultList"
+        :filter-method="filterResult"
+      ></el-table-column>
     </el-table>
     <div class="flex-box">
       <el-pagination
+        @current-change="handlePageChange"
         @size-change="handleSizeChange"
         :current-page="pageNum"
         :page-sizes="[10, 20, 30, 40]"
@@ -67,24 +74,130 @@
         :total="total">
       </el-pagination>
     </div>
+    <detailsDialog
+      ref="detailsDialog"
+      :orderInfo.sync="orderInfo"
+      :Feepermissions="false"
+    ></detailsDialog>
   </div>
 </template>
 
 <script>
+import detailsDialog from "@/views/Core/components/detailsDialog.vue";
+
 export default {
+  components: {
+    detailsDialog
+  },
   data() {
     return {
       quoteDetailForm: {},
       tableData: [],
       pageNum: 1,
       pageSize: 10,
-      total: 0
+      total: 0,
+      orderInfo: {
+        //选中的订单
+        carinfo: {},
+        applyinfo: {},
+        insureinfo: {},
+        kindinfo: [],
+        riskinfo: [],
+        ownerinfo: {},
+        orderCommissionVo: {},
+        extendInfo: {},
+      },
+      actionList: [],
+      resultList: [],
+      leftTree: []
     }
   },
   methods: {
-    handleSizeChange() {
-
+    filterResult(value,row) {
+      return row.result === value
+    },
+    // 获取保险公司
+    initCompany() {
+      this.$api.quote.getCompany().then(res => {
+        if(res.code == 200) {
+          this.leftTree = res.data
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    // 分页(每页条数变化)
+    handleSizeChange(size) {
+      this.pageSize = size
+      this.quoteDetailForm = {}
+      this.initData();
+    },
+    // 分页(页码改变)
+    handlePageChange(page) {
+      this.pageNum = page
+      this.quoteDetailForm = {}
+      this.initData();
+    },
+    // 获取列表数据
+    initData() {
+      this.$api.quote.getQuoteDetails({
+        startTime: this.quoteDetailForm.rangeDate&&this.quoteDetailForm.rangeDate[0]?this.quoteDetailForm.rangeDate[0]:'',
+        endTime: this.quoteDetailForm.rangeDate&&this.quoteDetailForm.rangeDate[1]?this.quoteDetailForm.rangeDate[1]:'',
+        subOrderNo: this.quoteDetailForm.subOrderNo?this.quoteDetailForm.subOrderNo:'',
+        action: this.quoteDetailForm.action?this.quoteDetailForm.action: this.quoteDetailForm.action==0?0:'',
+        licenseNo: this.quoteDetailForm.licenseNo?this.quoteDetailForm.licenseNo:'',
+        result: this.quoteDetailForm.result?this.quoteDetailForm.result: this.quoteDetailForm.result==0?0:'',
+        agent: this.quoteDetailForm.agent?this.quoteDetailForm.agent:'',
+        operator: this.quoteDetailForm.operator?this.quoteDetailForm.operator:'',
+        pageNum: this.pageNum,
+        pageSize: this.pageSize
+      }).then(res => {
+        if(res.code === 200) {
+          this.tableData = res.data.records
+          this.total = res.data.total
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    // 重置
+    reset() {
+      this.quoteDetailForm = {}
+      this.pageNum = 1
+      this.pageSize = 10
+      this.initData();
+    },
+    // 获取详情
+    getQuoteDetail(row) {
+      this.$api.letter.getByCompanyId({
+        companyId: row.subOrderNo
+      }).then(res => {
+        this.orderInfo = {...res.data}
+        this.$refs.detailsDialog.setBackupVisible(true);
+      })
+    },
+    initAction() {
+      this.$api.quote.getQuoteAction().then(res => {
+        console.log('动作', res)
+        if(res.code === 200) {
+          this.actionList = res.data
+        }
+      })
+    },
+    initResult() {
+      this.$api.quote.getQuoteResult().then(res => {
+        console.log('结果', res)
+        if(res.code === 200) {
+          this.resultList = res.data
+        }
+      })
     }
+  },
+  mounted() {
+    this.initData();
+    this.initAction();
+    this.initResult();
+    this.initCompany();
   }
 }
 </script>
@@ -96,6 +209,10 @@ export default {
   justify-content: flex-end;
   margin: 10px 0;
 }
+.link{
+  color: rgb(64, 158, 255);
+  cursor: pointer;
+}
 /deep/ {
   .el-form-item__content {
     width: calc(100% - 150px);

+ 91 - 42
src/views/PeopleManage/Agent/QuoteManagement.vue

@@ -2,35 +2,35 @@
   <div class="quoteManagement">
     <el-form ref="QuoteForm" :model="quoteForm" :inline="true" label-width="130px">
       <el-form-item style="width: 20%" label="代理人信息" prop="people">
-        <el-input v-model="quoteForm.people" size="small" placeholder="请输入姓名和手机号查找"></el-input>
+        <el-input v-model="quoteForm.agent" size="small" placeholder="请输入姓名和手机号查找"></el-input>
       </el-form-item>
       <el-form-item style="width: 20%" label="工号" prop="number">
-        <el-input v-model="quoteForm.number" size="small" placeholder="请输入工号查找"></el-input>
+        <el-input v-model="quoteForm.agentId" size="small" placeholder="请输入工号查找"></el-input>
       </el-form-item>
       <el-form-item style="width: 20%" label="保险公司" prop="company">
-        <el-select v-model="quoteForm.company" filterable size="small">
+        <el-select v-model="quoteForm.companyId" filterable size="small">
           <el-option v-for="(item, index) in quoteCompany" :key="item.id" :label="item.namesimple" :value="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item style="width: 20%">
-        <el-button size="small">重置</el-button>
-        <el-button type="primary" size="small">查询</el-button>
+        <el-button size="small" @click="reset()">重置</el-button>
+        <el-button type="primary" size="small" @click="initData()">查询</el-button>
       </el-form-item>
     </el-form>
     <el-table
       :data="quoteData"
     >
-      <el-table-column prop="" label="部门编码" width="150"></el-table-column>
-      <el-table-column prop="" label="机构名称" width="150"></el-table-column>
-      <el-table-column prop="" label="部门名称" width="150"></el-table-column>
-      <el-table-column prop="" label="工号" width="150"></el-table-column>
-      <el-table-column prop="" label="姓名" width="150"></el-table-column>
-      <el-table-column prop="" label="联系电话" width="150"></el-table-column>
-      <el-table-column prop="" label="保险公司" width="150"></el-table-column>
-      <el-table-column prop="" label="今日报价(次)" width="150"></el-table-column>
-      <el-table-column prop="" label="今日报价(单)" width="150"></el-table-column>
-      <el-table-column prop="" label="今日承保(单)" width="150"></el-table-column>
-      <el-table-column width="150">
+      <el-table-column prop="deptId" label="部门编码" width="150"></el-table-column>
+<!--      <el-table-column prop="" label="机构名称" width="150"></el-table-column>-->
+      <el-table-column prop="deptName" label="部门名称" width="150"></el-table-column>
+      <el-table-column prop="userId" label="工号" width="150"></el-table-column>
+      <el-table-column prop="name" label="姓名" width="150"></el-table-column>
+      <el-table-column prop="mobile" label="联系电话" width="150"></el-table-column>
+      <el-table-column prop="company" label="保险公司" width="150"></el-table-column>
+      <el-table-column prop="numCount" label="今日报价(次)" width="150"></el-table-column>
+      <el-table-column prop="dayAllOrder" label="今日报价(单)" width="150"></el-table-column>
+      <el-table-column prop="dayCoverOrder" label="今日承保(单)" width="150"></el-table-column>
+      <el-table-column prop="rate" width="150">
         <template slot="header" slot-scope="scope">
           <div>
             <span>报价出单比</span>
@@ -47,9 +47,9 @@
             </el-popover>
           </div>
         </template>
-      </el-table-column>
-      <el-table-column prop="" label="累计报价(次)" width="150"></el-table-column>
-      <el-table-column prop="" label="累计承保(单)" width="150"></el-table-column>
+      </el-table-column> <!--报价出单比-->
+      <el-table-column prop="wholeAllOrder" label="累计报价(次)" width="150"></el-table-column>
+      <el-table-column prop="wholeCoverOrder" label="累计承保(单)" width="150"></el-table-column>
       <el-table-column label="操作" width="200" fixed="right">
         <template slot-scope="scope">
           <kt-button label="增加次数" size="small" type="text" perms="agreement:input:delete"
@@ -59,6 +59,7 @@
     </el-table>
     <div class="flex-box">
       <el-pagination
+        @current-change="handlePageChange"
         @size-change="handleSizeChange"
         :current-page="pageNum"
         :page-sizes="[10, 20, 30, 40]"
@@ -79,25 +80,25 @@
           <el-input v-model="addForm.company" disabled></el-input>
         </el-form-item>
         <el-form-item label="今日已报价" style="width: 80%">
-          <el-input v-model="addForm.hadQuote" disabled></el-input>
+          <el-input v-model="addForm.dayAllOrder" disabled></el-input>
         </el-form-item>
         <el-form-item label="今日已承保" style="width: 80%">
-          <el-input v-model="addForm.had" disabled></el-input>
+          <el-input v-model="addForm.dayCoverOrder" disabled></el-input>
         </el-form-item>
         <el-form-item label="报价出单比" style="width: 80%">
-          <el-input v-model="addForm.assign" disabled></el-input>
+          <el-input v-model="addForm.rate" disabled></el-input>
           <span style="font-size: 12px; color: #999;">报价出单比=承保单数/报价单数*100%(四舍五入到小数点后两位)</span>
         </el-form-item>
         <el-form-item label="增加次数" style="width: 80%">
-          <el-input v-model="addForm.count"></el-input>
+          <el-input v-model="addForm.quoteNumber"></el-input>
         </el-form-item>
         <el-form-item label="备注" style="width: 80%">
-          <el-input type="textarea" v-model="addForm.tips"></el-input>
+          <el-input type="textarea" v-model="addForm.remark"></el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
+        <el-button type="primary" @click="addCountSubmit">确 定</el-button>
       </span>
     </el-dialog>
   </div>
@@ -105,6 +106,7 @@
 
 <script>
 import KtButton from "@/views/Core/KtButton";
+import {appendUserConfig, quoteUserDetails} from "../../../http/moudules/quote";
 export default {
   components: {
     KtButton
@@ -113,8 +115,8 @@ export default {
     return {
       quoteForm: {
         people: '',
-        number: '',
-        company: ''
+        agentId: '',
+        companyId: ''
       },
       quoteData: [{}],
       pageNum: 1,
@@ -122,7 +124,8 @@ export default {
       total: 0,
       dialogVisible: false,
       addForm: {
-
+        quoteNumber: 0,
+        remark: ''
       },
 
       quoteCompany:[], // 保险公司list
@@ -131,6 +134,7 @@ export default {
   },
   created() {
     this.initCompany();
+    this.initData();
   },
   methods: {
     // 获取保险公司
@@ -141,19 +145,74 @@ export default {
         }
       })
     },
+    // 列表
+    initData() {
+      this.$api.quote.quoteUserDetails({...this.quoteForm}).then(res => {
+        console.log(123, res.data)
+        if(res.code === 200) {
+          this.quoteData = res.data.records
+          this.total = res.data.total
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    // 重置
+    reset() {
+      this.quoteForm = {}
+      this.pageNum = 1
+      this.initData()
+    },
     addCount(index, row) {
       this.dialogVisible = true
+      row.agent = `${row.name}-${row.userId}`
+      this.addForm = {...row}
+    },
+    // 分页(每页条数变化)
+    handleSizeChange(size) {
+      this.pageSize = size
+      this.quoteForm = {}
+      this.initData();
+    },
+    // 分页(页码改变)
+    handlePageChange(page) {
+      this.pageNum = page
+      this.quoteForm = {}
+      this.initData();
+    },
+    addCountSubmit() {
+      this.$api.quote.appendUserConfig({
+        userId: this.addForm.userId,
+        companyId: this.addForm.companyId,
+        quoteNumber: this.addForm.quoteNumber,
+        remark: this.addForm.remark
+      }).then(res => {
+        if(res.code === 200) {
+          this.$message.success(res.msg)
+        } else {
+          this.$message.error(res.msg)
+        }
+        this.dialogVisible = false
+      })
     },
-    handleSizeChange() {
-
-    }
   },
   mounted() {
 
   }
 }
 </script>
-
+<style>
+.popover-box.el-popover {
+  background: rgba(0, 0, 0, .5) !important;
+  color: #fff !important;
+}
+.popover-box .popper__arrow {
+  border-top-color: rgba(0, 0, 0, .4) !important;
+}
+.popover-box .popper__arrow::after {
+  border-top-color: rgba(0, 0, 0, 0) !important;
+}
+</style>
 <style lang="scss" scoped>
 /deep/ {
   .el-form-item__content {
@@ -166,14 +225,4 @@ export default {
   justify-content: flex-end;
 }
 
-.popover-box{
-  background: rgba(0,0,0,.5) !important;
-  color: #fff !important;
-}
-.popper__arrow{
-  border-top-color: rgba(0,0,0,.4) !important;
-}
-.popper__arrow::after{
-  border-top-color: rgba(0,0,0,0) !important;
-}
 </style>

+ 2 - 1
src/views/Task/DaikeLetter.vue

@@ -288,7 +288,8 @@ export default {
                 item.areaNewCode = item.liveAddress.split(',')
               }
             })
-            console.log(123123123, this.salespersonData)
+          } else {
+            this.$refs.Ktletter.userId = this.salespersonForm.userId
           }
           loading.close();
           this.dialogVisible = true;

+ 1 - 0
src/views/Task/daikeComponents/KtLetter1.vue

@@ -9766,6 +9766,7 @@ export default {
           };
 
           return this.$api.letter[this.apiInterfaceName](param).then((res) => {
+
             this.yangguang(num, id);
           });
         } else if (res.code == "200") {