|
|
@@ -2,7 +2,7 @@
|
|
|
<div class="QuoteCountManagement">
|
|
|
<el-row style="height: 100%">
|
|
|
<el-col :span="4" style="height: 100%; overflow-y: auto; background: rgba(244, 246, 248, 1);">
|
|
|
- <div class="menu-item" :class="{'active': menuIndex === index}" v-for="(item, index) in leftTree" :key="item.id" @click="handleSelect(item, index)">{{ item.label }}</div>
|
|
|
+ <div class="menu-item" :class="{'active': menuIndex === index}" v-for="(item, index) in leftTree" :key="item.id" @click="handleSelect(item, index)">{{ item.namesimple }}</div>
|
|
|
</el-col>
|
|
|
<el-col :span="20">
|
|
|
<el-row :gutter="20" align="middle" style="display: flex; align-items: center; width: 100%; overflow: hidden; margin: 0">
|
|
|
@@ -14,28 +14,28 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-divider></el-divider>
|
|
|
- <el-form :model="quoteForm" ref="QuoteForm" :rules="quoteRules" :disabled="quoteFormDisabled" style="padding-left: 30px;" label-width="100px">
|
|
|
+ <el-form :model="quoteForm" ref="QuoteFormRef" :rules="quoteRules" :disabled="quoteFormDisabled" style="padding-left: 30px;" label-width="120px">
|
|
|
<el-form-item prop="count" label="报价次数限制">
|
|
|
- <el-switch v-model="quoteForm.count"></el-switch>
|
|
|
+ <el-switch v-model="quoteForm.isEnabled"></el-switch>
|
|
|
<p class="tips">开启后,代理人的报价次数将受到限制,超出设置的报价次数后将停止代理人的报价功能</p>
|
|
|
</el-form-item>
|
|
|
<el-form-item prop="agentLimit" label="代理人限制">
|
|
|
<div>
|
|
|
- <el-radio-group v-model="quoteForm.agentLimit">
|
|
|
- <el-radio :label="3">限制全部代理人</el-radio>
|
|
|
- <el-radio :label="6">限制部分代理人</el-radio>
|
|
|
+ <el-radio-group v-model="quoteForm.authorize">
|
|
|
+ <el-radio :label="0">限制全部代理人</el-radio>
|
|
|
+ <el-radio :label="1">限制部分代理人</el-radio>
|
|
|
</el-radio-group>
|
|
|
- <kt-button v-if="quoteForm.agentLimit === 6" type="text" label="选择代理人" icon="el-icon-plus" style="color: #2D4D89; margin-left: 30px" @click="selectAgent" />
|
|
|
+ <kt-button v-if="quoteForm.authorize" type="text" label="选择代理人" icon="el-icon-plus" style="color: #2D4D89; margin-left: 30px" @click="selectAgent" />
|
|
|
</div>
|
|
|
<el-table
|
|
|
- :data="agentData"
|
|
|
+ :data="selectedList"
|
|
|
>
|
|
|
- <el-table-column prop="code" label="部门编码"></el-table-column>
|
|
|
+ <el-table-column prop="deptId" label="部门编码"></el-table-column>
|
|
|
<el-table-column prop="organization" label="机构名称"></el-table-column>
|
|
|
- <el-table-column prop="department" label="部门名称"></el-table-column>
|
|
|
- <el-table-column prop="number" label="工号"></el-table-column>
|
|
|
+ <el-table-column prop="deptName" label="部门名称"></el-table-column>
|
|
|
+ <el-table-column prop="id" label="工号"></el-table-column>
|
|
|
<el-table-column prop="name" label="姓名"></el-table-column>
|
|
|
- <el-table-column prop="phone" label="联系电话"></el-table-column>
|
|
|
+ <el-table-column prop="mobile" label="联系电话"></el-table-column>
|
|
|
<el-table-column label="操作">
|
|
|
<template slot-scope="scope">
|
|
|
<kt-button :disabled="quoteFormDisabled" type="text" label="删除" style="color: #2D4D89;" />
|
|
|
@@ -48,7 +48,7 @@
|
|
|
<div>
|
|
|
<el-checkbox :label="1">
|
|
|
<div style="display: flex; align-items: center">
|
|
|
- 单日报价,出单比不满<el-input size="small" v-model="quoteForm.limit1" style="width: 100px; margin: 0 20px;">
|
|
|
+ 单日报价,出单比不满<el-input size="small" v-model="quoteForm.orderRatio" style="width: 100px; margin: 0 20px;">
|
|
|
<template slot="append">%</template>
|
|
|
</el-input>后,锁定代理人报价次数
|
|
|
</div>
|
|
|
@@ -58,7 +58,7 @@
|
|
|
<el-checkbox :label="2">
|
|
|
<div>单日最大报价次数</div>
|
|
|
<div style="display: flex; align-items: center">
|
|
|
- 单日代理人报价满<el-input size="small" v-model="quoteForm.limit2" style="width: 100px; margin: 0 20px;">
|
|
|
+ 单日代理人报价满<el-input size="small" v-model="quoteForm.dayMaxQuoteNum" style="width: 100px; margin: 0 20px;">
|
|
|
<template slot="append">次</template>
|
|
|
</el-input>后,锁定代理人报价次数
|
|
|
</div>
|
|
|
@@ -68,7 +68,7 @@
|
|
|
<el-checkbox :label="3">
|
|
|
<div>单日单车限制</div>
|
|
|
<div style="display: flex; align-items: center">
|
|
|
- 单日代理人单车最多报价<el-input size="small" v-model="quoteForm.limit3" style="width: 100px; margin: 0 20px;">
|
|
|
+ 单日代理人单车最多报价<el-input size="small" v-model="quoteForm.carMaxQuoteNum" style="width: 100px; margin: 0 20px;">
|
|
|
<template slot="append">次</template>
|
|
|
</el-input>后,锁定代理人报价次数
|
|
|
</div>
|
|
|
@@ -99,21 +99,24 @@
|
|
|
>
|
|
|
<el-form ref="CountDetailForm" v-model="countDetailForm" :inline="true" label-width="130px">
|
|
|
<el-form-item style="width: 30%;" label="代理人">
|
|
|
- <el-input size="small" v-model="countDetailForm.orderNumber" placeholder="请输入订单号"></el-input>
|
|
|
+ <el-input size="small" v-model="countDetailForm.orderNumber" placeholder="请输入工号、姓名查找" @change="() => {
|
|
|
+ pageNum = 1
|
|
|
+ }"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item style="width: 30%;" label="所属机构">
|
|
|
- <el-select style="width: 100%" size="small" filterable v-model="countDetailForm.organization">
|
|
|
- <el-option label="机构1" value="1"></el-option>
|
|
|
- <el-option label="机构2" value="2"></el-option>
|
|
|
- </el-select>
|
|
|
+ <el-cascader size="small" v-model="countDetailForm.organization" :options="areaOptions" style="width: 100%;"
|
|
|
+ :props="{ label: 'name', value: 'id', children: 'children', checkStrictly: true, expandTrigger: 'hover' }" clearable
|
|
|
+ ref="area" @change="() => {
|
|
|
+ pageNum = 1
|
|
|
+ }"></el-cascader>
|
|
|
</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" @click="initAgentUser" style="margin-left: 150px;">查询</el-button>
|
|
|
+ <el-button size="small" @click="reset">重置</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div>
|
|
|
- <el-select class="select-box" size="small" v-model="checkType" placeholder="全选" style="width: 130px; border: none;">
|
|
|
+ <el-select class="select-box" size="small" v-model="checkType" placeholder="全选" style="width: 130px; border: none;" @change="selectTypeChange">
|
|
|
<el-option label="选中所有数据" value="all"></el-option>
|
|
|
<el-option label="选中本页数据" value="cur"></el-option>
|
|
|
</el-select>
|
|
|
@@ -122,28 +125,42 @@
|
|
|
</div>
|
|
|
<el-table
|
|
|
:data="agentDataList"
|
|
|
+ ref="multipleTable"
|
|
|
row-key="id"
|
|
|
- style="width: 100%">
|
|
|
+ :reserve-selection="true"
|
|
|
+ style="width: 100%"
|
|
|
+ @selection-change="handleSelectChange"
|
|
|
+ >
|
|
|
<el-table-column type="selection"></el-table-column>
|
|
|
+ <el-table-column prop="deptId" label="部门编码"></el-table-column>
|
|
|
<el-table-column prop="organization" label="机构名称"></el-table-column>
|
|
|
- <el-table-column prop="department" label="部门名称"></el-table-column>
|
|
|
- <el-table-column prop="number" label="工号"></el-table-column>
|
|
|
+ <el-table-column prop="deptName" label="部门名称"></el-table-column>
|
|
|
+ <el-table-column prop="id" label="工号"></el-table-column>
|
|
|
<el-table-column prop="name" label="姓名"></el-table-column>
|
|
|
- <el-table-column prop="phone" label="联系电话"></el-table-column>
|
|
|
+ <el-table-column prop="mobile" label="联系电话"></el-table-column>
|
|
|
</el-table>
|
|
|
<div class="pagination-box">
|
|
|
<el-pagination
|
|
|
+ @current-change="handlePageNumChange"
|
|
|
background
|
|
|
+ :page-size="5"
|
|
|
+ :current-page="pageNum"
|
|
|
layout="prev, pager, next"
|
|
|
:total="total">
|
|
|
</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" />
|
|
|
+ </template>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import KtButton from "../../Core/KtButton.vue";
|
|
|
+import {getAgentUser, setQuoteInfo} from "../../../http/moudules/quote";
|
|
|
+import {findTree} from "../../../http/moudules/insCompany";
|
|
|
|
|
|
export default {
|
|
|
components: {
|
|
|
@@ -151,30 +168,21 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- leftTree: [
|
|
|
- {
|
|
|
- id: 0,
|
|
|
- label: '保险1'
|
|
|
- },{
|
|
|
- id: 1,
|
|
|
- label: '保险2'
|
|
|
- },{
|
|
|
- id: 2,
|
|
|
- label: '保险3'
|
|
|
- },{
|
|
|
- id: 3,
|
|
|
- label: '保险4'
|
|
|
- },
|
|
|
- ],
|
|
|
- menuIndex: 0,
|
|
|
- syncShow: false,
|
|
|
+ leftTree: [], // 保险公司list
|
|
|
+ menuIndex: 0, // 保险公司item下标
|
|
|
+ syncShow: false, // 同步设置弹框
|
|
|
quoteForm: {
|
|
|
- count: false,
|
|
|
- agentLimit: '',
|
|
|
+ isEnabled: false,
|
|
|
+ authorize: '',
|
|
|
quoteLimit: []
|
|
|
- },
|
|
|
+ }, // 报价form
|
|
|
quoteRules: {
|
|
|
- agentLimit: [
|
|
|
+ isEnabled: [
|
|
|
+ {
|
|
|
+ required: true, message: '', trigger: 'change'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ authorize: [
|
|
|
{
|
|
|
required: true, message: '请选择代理人限制', trigger: 'change'
|
|
|
}
|
|
|
@@ -184,54 +192,200 @@ export default {
|
|
|
type: 'array',required: true, message: '请选择报价限制', triangle: 'change'
|
|
|
}
|
|
|
]
|
|
|
- },
|
|
|
- agentData: [{
|
|
|
- code: '',
|
|
|
- organization: '',
|
|
|
- department: '',
|
|
|
- number: '',
|
|
|
- name: '',
|
|
|
- phone: ''
|
|
|
- }],
|
|
|
+ }, // 报价form规则
|
|
|
isCheckedAll: false,
|
|
|
checkType: '',
|
|
|
agentTableShow: false,
|
|
|
- agentDataList: [{
|
|
|
- id: '1',
|
|
|
- code: '1',
|
|
|
- organization: '1',
|
|
|
- department: '1',
|
|
|
- number: '1',
|
|
|
- name: '1',
|
|
|
- phone: '1'
|
|
|
- }],
|
|
|
- selectedList: [],
|
|
|
- selectedLength: 0,
|
|
|
- total: 100,
|
|
|
+ agentDataList: [],
|
|
|
+ selectList: [], // 勾选的数据(格式为每页勾选的为一个数组并作为数组元素保存)
|
|
|
+ selectedList: [], // 勾选的数据(格式为平铺后)
|
|
|
+ pageList: [1], // 记录点击了的页码
|
|
|
+ selectedLength: 0, // 选择(包括全选后)的数据数量
|
|
|
+ total: 0,
|
|
|
countDetailForm: {},
|
|
|
- quoteFormDisabled: true
|
|
|
+ quoteFormDisabled: true,
|
|
|
+ pageNum: 1,
|
|
|
+ areaOptions: [], // 机构树
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 获取保险公司
|
|
|
+ initCompany() {
|
|
|
+ this.$api.quote.getCompany().then(res => {
|
|
|
+ if(res.code == 200) {
|
|
|
+ this.leftTree = res.data
|
|
|
+ } else {
|
|
|
+ this.$message.error(res.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 获取机构
|
|
|
+ initOrganization() {
|
|
|
+ this.$api.dept.findTree().then(res => {
|
|
|
+ this.areaOptions = res.data
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 获取代理人
|
|
|
+ initAgentUser() {
|
|
|
+ let that = this
|
|
|
+ that.$api.quote.getAgentUser({
|
|
|
+ pageNum: this.pageNum,
|
|
|
+ pageSize: 5,
|
|
|
+ columnFilters: {
|
|
|
+ name: {
|
|
|
+ value: that.countDetailForm.orderNumber?that.countDetailForm.orderNumber: ''
|
|
|
+ },
|
|
|
+ deptId: {
|
|
|
+ value: that.countDetailForm.organization?that.countDetailForm.organization: ''
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).then(res => {
|
|
|
+ if(res.code == 200) {
|
|
|
+ that.agentDataList = res.data.content
|
|
|
+ that.total = res.data.totalSize
|
|
|
+ that.$nextTick(() => {
|
|
|
+ if(that.checkType === 'all') {
|
|
|
+ that.selectedLength = res.data.totalSize
|
|
|
+ if(that.agentDataList.length>0) {
|
|
|
+ that.agentDataList.forEach(item => {
|
|
|
+ that.$refs.multipleTable.toggleRowSelection(item)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ let list = [...that.selectedList]
|
|
|
+ if(list&&list.length>0) {
|
|
|
+ list.forEach(item => {
|
|
|
+ let arrayItem = that.agentDataList.find(sub => sub.id === item.id)
|
|
|
+ if(arrayItem) {
|
|
|
+ that.$refs.multipleTable.toggleRowSelection(arrayItem)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 代理人搜索条件重置
|
|
|
+ reset() {
|
|
|
+ this.countDetailForm = {}
|
|
|
+ this.pageNum = 1
|
|
|
+ },
|
|
|
+ // 代理人分页页数变化函数
|
|
|
+ handlePageNumChange(page) {
|
|
|
+ this.pageNum = page
|
|
|
+ this.initAgentUser()
|
|
|
+ },
|
|
|
+ // 代理选择
|
|
|
+ handleSelectChange(rows) {
|
|
|
+ if(this.checkType === 'all') {
|
|
|
+ this.selectedLength = this.total
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(rows.length>0) {
|
|
|
+ let list = [...this.selectedList]
|
|
|
+ if(this.selectedList.length>0){
|
|
|
+ list.forEach((item, index) => {
|
|
|
+ this.agentDataList.forEach(sub => {
|
|
|
+ if(sub.id === item.id) {
|
|
|
+ list.splice(index,1)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ this.selectedList = this.uniqueItems([...list, ...rows])
|
|
|
+ this.selectedLength = this.selectedList.length
|
|
|
+ } else {
|
|
|
+ this.selectedList = [...rows]
|
|
|
+ this.selectedLength = this.selectedList.length
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 数组去重
|
|
|
+ uniqueItems(arr) {
|
|
|
+ const unique = [];
|
|
|
+ arr.forEach(item => {
|
|
|
+ const exists = unique.some(el => el.id === item.id);
|
|
|
+ if (!exists) {
|
|
|
+ unique.push(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return unique;
|
|
|
+ },
|
|
|
+ // 保险公司切换
|
|
|
handleSelect(item, index) {
|
|
|
this.menuIndex = index
|
|
|
this.quoteFormDisabled = true
|
|
|
},
|
|
|
+ // 同步到其他
|
|
|
handleSync() {
|
|
|
this.syncShow = true
|
|
|
},
|
|
|
+ // 编辑
|
|
|
handleEdit() {
|
|
|
this.quoteFormDisabled = false
|
|
|
},
|
|
|
+ // 保存
|
|
|
handleSave() {
|
|
|
this.quoteFormDisabled = true
|
|
|
+ this.$refs["QuoteFormRef"].validate((valid) => {
|
|
|
+ if(valid) {
|
|
|
+ this.$api.quote.setQuoteInfo({
|
|
|
+ companyId: this.leftTree[this.menuIndex].id,
|
|
|
+ isEnabled: this.quoteForm.isEnabled?1:0,
|
|
|
+ id: null,
|
|
|
+ authorize: this.quoteForm.authorize,
|
|
|
+ proxyList: this.selectedList,
|
|
|
+ orderRatio: this.quoteForm.orderRatio,
|
|
|
+ dayMaxQuoteNum: this.quoteForm.dayMaxQuoteNum,
|
|
|
+ carMaxQuoteNum: this.quoteForm.carMaxQuoteNum
|
|
|
+ }).then(res => {
|
|
|
+ console.log('保存', res)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message.error('请填写或选择必要数据!')
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
+ // 同步到其他确定
|
|
|
handleSubmit() {
|
|
|
|
|
|
},
|
|
|
+ // 选择代理人
|
|
|
selectAgent() {
|
|
|
this.agentTableShow = true
|
|
|
+ this.countDetailForm = {}
|
|
|
+ this.initAgentUser()
|
|
|
+ this.initOrganization()
|
|
|
+ },
|
|
|
+ // 全选类型切换
|
|
|
+ selectTypeChange() {
|
|
|
+ if(this.agentDataList.length>0) {
|
|
|
+ this.agentDataList.forEach(item => {
|
|
|
+ this.$refs.multipleTable.toggleRowSelection(item)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if(this.checkType === 'all') {
|
|
|
+ this.selectedLength = this.total
|
|
|
+ }
|
|
|
+ if(this.checkType === 'cur') {
|
|
|
+ this.selectedLength = 0
|
|
|
+ let list = [...this.selectedList, ...this.agentDataList]
|
|
|
+ this.selectedList = this.uniqueItems(list)
|
|
|
+ this.selectedLength = this.selectedList.length
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 监听浏览器刷新
|
|
|
+ handleBeforeUnload(event) {
|
|
|
+ event.preventDefault();
|
|
|
+ event.returnValue = '';
|
|
|
}
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.initCompany();
|
|
|
+ // window.addEventListener('beforeunload', this.handleBeforeUnload);
|
|
|
+ },
|
|
|
+ beforeDestroy() {
|
|
|
+ // window.removeEventListener('beforeunload', this.handleBeforeUnload)
|
|
|
}
|
|
|
}
|
|
|
</script>
|