QuoteManagement.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <template>
  2. <div class="quoteManagement">
  3. <el-form ref="QuoteForm" :model="quoteForm" :inline="true" label-width="130px">
  4. <el-form-item style="width: 20%" label="代理人信息" prop="people">
  5. <el-input v-model="quoteForm.agent" size="small" placeholder="请输入姓名和手机号查找"></el-input>
  6. </el-form-item>
  7. <el-form-item style="width: 20%" label="工号" prop="number">
  8. <el-input v-model="quoteForm.agentId" size="small" placeholder="请输入工号查找"></el-input>
  9. </el-form-item>
  10. <el-form-item style="width: 20%" label="保险公司" prop="company">
  11. <el-select v-model="quoteForm.companyId" filterable size="small">
  12. <el-option v-for="(item, index) in quoteCompany" :key="item.id" :label="item.namesimple" :value="item.id"></el-option>
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item style="width: 20%">
  16. <el-button size="small" @click="reset()">重置</el-button>
  17. <el-button type="primary" size="small" @click="search()">查询</el-button>
  18. </el-form-item>
  19. </el-form>
  20. <el-table
  21. :data="quoteData"
  22. >
  23. <el-table-column prop="deptId" label="部门编码" width="150"></el-table-column>
  24. <!-- <el-table-column prop="" label="机构名称" width="150"></el-table-column>-->
  25. <el-table-column prop="deptName" label="部门名称" width="150"></el-table-column>
  26. <el-table-column prop="userId" label="工号" width="150"></el-table-column>
  27. <el-table-column prop="name" label="姓名" width="150"></el-table-column>
  28. <el-table-column prop="mobile" label="联系电话" width="150"></el-table-column>
  29. <el-table-column prop="company" label="保险公司" width="150"></el-table-column>
  30. <el-table-column prop="numCount" label="今日报价(次)" width="150"></el-table-column>
  31. <el-table-column prop="dayAllOrder" label="今日报价(单)" width="150"></el-table-column>
  32. <el-table-column prop="dayCoverOrder" label="今日承保(单)" width="150"></el-table-column>
  33. <el-table-column prop="rate" width="150">
  34. <template slot="header" slot-scope="scope">
  35. <div>
  36. <span>报价出单比</span>
  37. <el-popover
  38. popper-class="popover-box"
  39. placement="top-end"
  40. title=""
  41. width="250"
  42. trigger="hover"
  43. content="报价出单比=承保单数/报价单数*100%
  44. (四舍五入到小数点后两位)"
  45. >
  46. <i slot="reference" class="el-icon-question"></i>
  47. </el-popover>
  48. </div>
  49. </template>
  50. </el-table-column> <!--报价出单比-->
  51. <el-table-column prop="wholeAllOrder" label="累计报价(次)" width="150"></el-table-column>
  52. <el-table-column prop="wholeCoverOrder" label="累计承保(单)" width="150"></el-table-column>
  53. <el-table-column label="操作" width="200" fixed="right">
  54. <template slot-scope="scope">
  55. <kt-button label="增加次数" size="small" type="text" perms="agreement:input:delete"
  56. @click="addCount(scope.$index, scope.row)" style="color: #D42426 !important " />
  57. </template>
  58. </el-table-column>
  59. </el-table>
  60. <div class="flex-box">
  61. <el-pagination
  62. @current-change="handlePageChange"
  63. @size-change="handleSizeChange"
  64. :current-page="pageNum"
  65. :page-sizes="[10, 20, 30, 40]"
  66. :page-size="pageSize"
  67. layout="total, sizes, prev, pager, next, jumper"
  68. :total="total">
  69. </el-pagination>
  70. </div>
  71. <el-dialog
  72. title="增加次数"
  73. :visible.sync="dialogVisible"
  74. width="40%">
  75. <el-form style="width: 100%" ref="AddForm" :model="addForm" :inline="true" label-width="130px">
  76. <el-form-item label="代理人" style="width: 80%">
  77. <el-input style="width: 100%" v-model="addForm.agent" disabled></el-input>
  78. </el-form-item>
  79. <el-form-item label="保险公司" style="width: 80%">
  80. <el-input v-model="addForm.company" disabled></el-input>
  81. </el-form-item>
  82. <el-form-item label="今日已报价" style="width: 80%">
  83. <el-input v-model="addForm.dayAllOrder" disabled></el-input>
  84. </el-form-item>
  85. <el-form-item label="今日已承保" style="width: 80%">
  86. <el-input v-model="addForm.dayCoverOrder" disabled></el-input>
  87. </el-form-item>
  88. <el-form-item label="报价出单比" style="width: 80%">
  89. <el-input v-model="addForm.rate" disabled></el-input>
  90. <span style="font-size: 12px; color: #999;">报价出单比=承保单数/报价单数*100%(四舍五入到小数点后两位)</span>
  91. </el-form-item>
  92. <el-form-item label="增加次数" style="width: 80%">
  93. <el-input v-model="addForm.quoteNumber"></el-input>
  94. </el-form-item>
  95. <el-form-item label="备注" style="width: 80%">
  96. <el-input type="textarea" v-model="addForm.remark"></el-input>
  97. </el-form-item>
  98. </el-form>
  99. <span slot="footer" class="dialog-footer">
  100. <el-button @click="dialogVisible = false">取 消</el-button>
  101. <el-button type="primary" @click="addCountSubmit">确 定</el-button>
  102. </span>
  103. </el-dialog>
  104. </div>
  105. </template>
  106. <script>
  107. import KtButton from "@/views/Core/KtButton";
  108. import {appendUserConfig, quoteUserDetails} from "../../../http/moudules/quote";
  109. export default {
  110. components: {
  111. KtButton
  112. },
  113. data() {
  114. return {
  115. quoteForm: {
  116. people: '',
  117. agentId: '',
  118. companyId: '',
  119. }, // 查询条件form
  120. quoteData: [], // 列表数据
  121. pageNum: 1,
  122. pageSize: 10,
  123. total: 0,
  124. dialogVisible: false, // 增加次数弹框
  125. addForm: {
  126. quoteNumber: 0,
  127. remark: ''
  128. }, // 增加次数form
  129. quoteCompany:[], // 保险公司list
  130. }
  131. },
  132. created() {
  133. this.initCompany();
  134. this.initData();
  135. },
  136. methods: {
  137. // 查询
  138. search() {
  139. this.pageNum = 1
  140. this.initData()
  141. },
  142. // 获取保险公司
  143. initCompany() {
  144. this.$api.quote.getCompany().then(res => {
  145. if(res.code == 200) {
  146. this.quoteCompany = res.data
  147. }
  148. })
  149. },
  150. // 列表
  151. initData() {
  152. this.$api.quote.quoteUserDetails({
  153. pageNum: this.pageNum,
  154. pageSize: this.pageSize,
  155. ...this.quoteForm
  156. }).then(res => {
  157. if(res.code === 200) {
  158. this.quoteData = res.data.records
  159. this.total = res.data.total
  160. } else {
  161. this.$message.error(res.msg)
  162. }
  163. })
  164. },
  165. // 重置
  166. reset() {
  167. this.quoteForm = {}
  168. this.pageNum = 1
  169. this.initData()
  170. },
  171. // 点击增加次数
  172. addCount(index, row) {
  173. this.dialogVisible = true
  174. row.agent = `${row.name}-${row.userId}`
  175. this.addForm = {...row}
  176. },
  177. // 分页(每页条数变化)
  178. handleSizeChange(size) {
  179. this.pageSize = size
  180. this.initData();
  181. },
  182. // 分页(页码改变)
  183. handlePageChange(page) {
  184. this.pageNum = page
  185. this.initData();
  186. },
  187. // 增加次数保存
  188. addCountSubmit() {
  189. this.$api.quote.appendUserConfig({
  190. userId: this.addForm.userId,
  191. companyId: this.addForm.companyId,
  192. quoteNumber: this.addForm.quoteNumber,
  193. remark: this.addForm.remark
  194. }).then(res => {
  195. if(res.code === 200) {
  196. this.$message.success(res.msg)
  197. } else {
  198. this.$message.error(res.msg)
  199. }
  200. this.dialogVisible = false
  201. })
  202. },
  203. },
  204. }
  205. </script>
  206. <style>
  207. .popover-box.el-popover {
  208. background: rgba(0, 0, 0, .5) !important;
  209. color: #fff !important;
  210. }
  211. .popover-box .popper__arrow {
  212. border-top-color: rgba(0, 0, 0, .4) !important;
  213. }
  214. .popover-box .popper__arrow::after {
  215. border-top-color: rgba(0, 0, 0, 0) !important;
  216. }
  217. </style>
  218. <style lang="scss" scoped>
  219. /deep/ {
  220. .el-form-item__content {
  221. width: calc(100% - 130px);
  222. }
  223. }
  224. .flex-box{
  225. display: flex;
  226. align-items: center;
  227. justify-content: flex-end;
  228. }
  229. </style>