正在显示
15 个修改的文件
包含
656 行增加
和
364 行删除
| @@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
| 7 | <meta name="renderer" content="webkit"> | 7 | <meta name="renderer" content="webkit"> |
| 8 | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> | 8 | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> |
| 9 | <link rel="icon" href="/favicon.ico"> | 9 | <link rel="icon" href="/favicon.ico"> |
| 10 | - <title>若依管理系统</title> | 10 | + <title>广西保险行业协会车险投保登记平台</title> |
| 11 | <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]--> | 11 | <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]--> |
| 12 | <style> | 12 | <style> |
| 13 | html, | 13 | html, |
| @@ -20,7 +20,7 @@ | @@ -20,7 +20,7 @@ | ||
| 20 | "@vueuse/core": "9.5.0", | 20 | "@vueuse/core": "9.5.0", |
| 21 | "axios": "0.27.2", | 21 | "axios": "0.27.2", |
| 22 | "compressorjs": "^1.2.1", | 22 | "compressorjs": "^1.2.1", |
| 23 | - "echarts": "5.4.0", | 23 | + "echarts": "^5.5.1", |
| 24 | "element-plus": "2.2.21", | 24 | "element-plus": "2.2.21", |
| 25 | "file-saver": "2.0.5", | 25 | "file-saver": "2.0.5", |
| 26 | "fuse.js": "6.6.2", | 26 | "fuse.js": "6.6.2", |
| @@ -30,7 +30,8 @@ | @@ -30,7 +30,8 @@ | ||
| 30 | "pinia": "2.0.22", | 30 | "pinia": "2.0.22", |
| 31 | "vue": "3.2.45", | 31 | "vue": "3.2.45", |
| 32 | "vue-cropper": "1.0.3", | 32 | "vue-cropper": "1.0.3", |
| 33 | - "vue-router": "4.1.4" | 33 | + "vue-router": "4.1.4", |
| 34 | + "vue3-count-to": "^1.1.2" | ||
| 34 | }, | 35 | }, |
| 35 | "devDependencies": { | 36 | "devDependencies": { |
| 36 | "@vitejs/plugin-vue": "3.1.0", | 37 | "@vitejs/plugin-vue": "3.1.0", |
src/api/index.js
0 → 100644
src/assets/icons/svg/incomplete.svg
0 → 100644
| 1 | +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1729153352026" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13540" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><path d="M625.728 57.472c16.512 0 30.208 4.992 42.24 14.848l5.888 5.312 208.96 207.04c12.224 11.2 19.328 24.96 21.12 41.024l0.448 8.256v232.32a287.104 287.104 0 0 0-76.8-39.424V374.016H687.36A96 96 0 0 1 592 287.36l-0.448-9.216V134.208l-339.328 0.064c-27.84 0-48.384 18.176-51.392 43.904l-0.384 6.528v653.824c0 27.136 18.624 47.616 44.992 50.56l6.784 0.384h210.048c9.024 27.712 22.144 53.568 38.656 76.864H252.16c-68.8 0-123.392-50.816-128.192-118.08l-0.384-9.728V184.704c0-68.48 51.2-122.112 118.784-126.912L252.16 57.472h373.568z m63.04 620.736l81.472 81.408 81.408-81.408a38.4 38.4 0 0 1 54.336 54.272l-81.408 81.408 81.408 81.536a38.4 38.4 0 0 1-54.336 54.272l-81.408-81.536-81.472 81.536a38.4 38.4 0 1 1-54.336-54.272l81.472-81.536-81.472-81.408a38.4 38.4 0 1 1 54.336-54.272zM393.088 704a38.4 38.4 0 0 1 0 76.8H294.4a38.4 38.4 0 0 1 0-76.8h98.688zM665.6 512a38.4 38.4 0 0 1 0 76.8H294.4a38.4 38.4 0 0 1 0-76.8h371.2z m-192-192a38.4 38.4 0 1 1 0 76.8H294.4a38.4 38.4 0 1 1 0-76.8h179.2z m325.76-9.984L655.36 167.488v110.592a32 32 0 0 0 26.24 31.488l5.76 0.512h111.872z" p-id="13541"></path></svg> |
src/assets/icons/svg/notaccepted.svg
0 → 100644
| 1 | +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1729153214328" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6614" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><path d="M544.65616 960A272 272 0 0 1 799.95216 491.968V128a64 64 0 0 0-64-64H159.95216a64 64 0 0 0-64 64v768a64 64 0 0 0 64 64h384.704zM863.95216 521.216a272 272 0 0 1-128 502.336V1024H159.95216a128 128 0 0 1-128-128V128a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v393.216zM719.95216 960a208 208 0 1 0 0-416 208 208 0 0 0 0 416zM255.95216 192h384a32 32 0 0 1 0 64H255.95216a32 32 0 0 1 0-64z m0 160h192a32 32 0 0 1 0 64H255.95216a32 32 0 0 1 0-64z m352 368h224a32 32 0 0 1 0 64h-224a32 32 0 0 1 0-64z" p-id="6615"></path></svg> |
src/assets/icons/svg/success.svg
0 → 100644
| 1 | +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1729149317544" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7294" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><path d="M384 896 160 896c-52.9 0-96-43.1-96-96L64 160c0-52.9 43.1-96 96-96l512 0c52.9 0 96 43.1 96 96l0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32L704 160c0-17.6-14.4-32-32-32L160 128c-17.6 0-32 14.4-32 32l0 640c0 17.6 14.4 32 32 32l224 0c17.7 0 32 14.3 32 32S401.7 896 384 896z" p-id="7295"></path><path d="M688 960c-72.7 0-141-28.3-192.3-79.7C444.3 829 416 760.7 416 688c0-72.7 28.3-141 79.7-192.3C547 444.3 615.3 416 688 416c72.7 0 141 28.3 192.3 79.7S960 615.4 960 688c0 72.7-28.3 141-79.7 192.3S760.7 960 688 960zM688 480c-114.7 0-208 93.3-208 208s93.3 208 208 208 208-93.3 208-208S802.7 480 688 480z" p-id="7296"></path><path d="M608 320 224 320c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32S625.7 320 608 320z" p-id="7297"></path><path d="M384 512 224 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32S401.7 512 384 512z" p-id="7298"></path><path d="M320 704l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32S337.7 704 320 704z" p-id="7299"></path><path d="M704 800c-6.3 0-12.5-1.8-17.8-5.4l-96-64c-14.7-9.8-18.7-29.7-8.9-44.4 9.8-14.7 29.7-18.7 44.4-8.9l68.1 45.4 78.7-131.2c9.1-15.2 28.8-20.1 43.9-11 15.2 9.1 20.1 28.7 11 43.9l-96 160c-4.5 7.5-11.9 12.8-20.4 14.8C708.7 799.8 706.3 800 704 800z" p-id="7300"></path></svg> |
src/assets/icons/svg/undertaken.svg
0 → 100644
| 1 | +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1729153319768" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12517" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><path d="M102.4 51.2a51.2 51.2 0 0 0-51.2 51.2v819.2a51.2 51.2 0 0 0 51.2 51.2h819.2a51.2 51.2 0 0 0 51.2-51.2V102.4a51.2 51.2 0 0 0-51.2-51.2H102.4z m0-51.2h819.2a102.4 102.4 0 0 1 102.4 102.4v819.2a102.4 102.4 0 0 1-102.4 102.4H102.4a102.4 102.4 0 0 1-102.4-102.4V102.4a102.4 102.4 0 0 1 102.4-102.4zM51.2 204.8h921.6v51.2H51.2V204.8z m392.192 525.4656L712.0384 481.28a25.6 25.6 0 0 1 34.816 37.5808l-286.464 265.4208a25.6 25.6 0 0 1-35.1744-0.3072l-158.1056-151.9616a25.6 25.6 0 1 1 35.4304-36.864l140.8 135.168z" p-id="12518"></path></svg> |
src/components/PanelGroup/index.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <el-row :gutter="40" class="panel-group"> | ||
| 3 | + <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> | ||
| 4 | + <div class="card-panel" @click="handleSetLineChartData('newVisitis')"> | ||
| 5 | + <div class="card-panel-icon-wrapper icon-people"> | ||
| 6 | + <svg-icon icon-class="notaccepted" class-name="card-panel-icon" /> | ||
| 7 | + </div> | ||
| 8 | + <div class="card-panel-description"> | ||
| 9 | + <div class="card-panel-text">未承接</div> | ||
| 10 | + <count-to | ||
| 11 | + :start-val="0" | ||
| 12 | + :end-val="102400" | ||
| 13 | + :duration="2600" | ||
| 14 | + class="card-panel-num" | ||
| 15 | + /> | ||
| 16 | + </div> | ||
| 17 | + </div> | ||
| 18 | + </el-col> | ||
| 19 | + <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> | ||
| 20 | + <div class="card-panel" @click="handleSetLineChartData('messages')"> | ||
| 21 | + <div class="card-panel-icon-wrapper icon-message"> | ||
| 22 | + <svg-icon icon-class="undertaken" class-name="card-panel-icon" /> | ||
| 23 | + </div> | ||
| 24 | + <div class="card-panel-description"> | ||
| 25 | + <div class="card-panel-text">已承接</div> | ||
| 26 | + <count-to | ||
| 27 | + :start-val="0" | ||
| 28 | + :end-val="81212" | ||
| 29 | + :duration="3000" | ||
| 30 | + class="card-panel-num" | ||
| 31 | + /> | ||
| 32 | + </div> | ||
| 33 | + </div> | ||
| 34 | + </el-col> | ||
| 35 | + <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> | ||
| 36 | + <div class="card-panel" @click="handleSetLineChartData('purchases')"> | ||
| 37 | + <div class="card-panel-icon-wrapper icon-money"> | ||
| 38 | + <svg-icon icon-class="incomplete" class-name="card-panel-icon" /> | ||
| 39 | + </div> | ||
| 40 | + <div class="card-panel-description"> | ||
| 41 | + <div class="card-panel-text">未完成</div> | ||
| 42 | + <count-to | ||
| 43 | + :start-val="0" | ||
| 44 | + :end-val="9280" | ||
| 45 | + :duration="3200" | ||
| 46 | + class="card-panel-num" | ||
| 47 | + /> | ||
| 48 | + </div> | ||
| 49 | + </div> | ||
| 50 | + </el-col> | ||
| 51 | + <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> | ||
| 52 | + <div class="card-panel" @click="handleSetLineChartData('shoppings')"> | ||
| 53 | + <div class="card-panel-icon-wrapper icon-shopping"> | ||
| 54 | + <svg-icon icon-class="success" class-name="card-panel-icon" /> | ||
| 55 | + </div> | ||
| 56 | + <div class="card-panel-description"> | ||
| 57 | + <div class="card-panel-text">已完成</div> | ||
| 58 | + <count-to | ||
| 59 | + :start-val="0" | ||
| 60 | + :end-val="13600" | ||
| 61 | + :duration="3600" | ||
| 62 | + class="card-panel-num" | ||
| 63 | + /> | ||
| 64 | + </div> | ||
| 65 | + </div> | ||
| 66 | + </el-col> | ||
| 67 | + </el-row> | ||
| 68 | +</template> | ||
| 69 | + | ||
| 70 | +<script setup> | ||
| 71 | +import { CountTo } from "vue3-count-to"; | ||
| 72 | +const $emit = defineEmits(["handleSetLineChartData"]); | ||
| 73 | +const handleSetLineChartData = (type) => { | ||
| 74 | + $emit("handleSetLineChartData", type); | ||
| 75 | +}; | ||
| 76 | +</script> | ||
| 77 | + | ||
| 78 | +<style lang="scss" scoped> | ||
| 79 | +.panel-group { | ||
| 80 | + margin-top: 18px; | ||
| 81 | + | ||
| 82 | + .card-panel-col { | ||
| 83 | + margin-bottom: 32px; | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + .card-panel { | ||
| 87 | + height: 108px; | ||
| 88 | + cursor: pointer; | ||
| 89 | + font-size: 12px; | ||
| 90 | + position: relative; | ||
| 91 | + overflow: hidden; | ||
| 92 | + color: #666; | ||
| 93 | + background: #fff; | ||
| 94 | + box-shadow: 4px 4px 40px rgba(0, 0, 0, 0.05); | ||
| 95 | + border-color: rgba(0, 0, 0, 0.05); | ||
| 96 | + | ||
| 97 | + &:hover { | ||
| 98 | + .card-panel-icon-wrapper { | ||
| 99 | + color: #fff; | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + .icon-people { | ||
| 103 | + background: #7f36fe; | ||
| 104 | + } | ||
| 105 | + | ||
| 106 | + .icon-message { | ||
| 107 | + background: #36a3f7; | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + .icon-money { | ||
| 111 | + background: #f4516c; | ||
| 112 | + } | ||
| 113 | + | ||
| 114 | + .icon-shopping { | ||
| 115 | + background: #34bfa3; | ||
| 116 | + } | ||
| 117 | + } | ||
| 118 | + | ||
| 119 | + .icon-people { | ||
| 120 | + color: #7f36fe; | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | + .icon-message { | ||
| 124 | + color: #36a3f7; | ||
| 125 | + } | ||
| 126 | + | ||
| 127 | + .icon-money { | ||
| 128 | + color: #f4516c; | ||
| 129 | + } | ||
| 130 | + | ||
| 131 | + .icon-shopping { | ||
| 132 | + color: #34bfa3; | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + .card-panel-icon-wrapper { | ||
| 136 | + float: left; | ||
| 137 | + margin: 14px 0 0 14px; | ||
| 138 | + padding: 16px; | ||
| 139 | + transition: all 0.38s ease-out; | ||
| 140 | + border-radius: 6px; | ||
| 141 | + } | ||
| 142 | + | ||
| 143 | + .card-panel-icon { | ||
| 144 | + float: left; | ||
| 145 | + font-size: 48px; | ||
| 146 | + } | ||
| 147 | + | ||
| 148 | + .card-panel-description { | ||
| 149 | + float: right; | ||
| 150 | + font-weight: bold; | ||
| 151 | + margin: 26px; | ||
| 152 | + margin-left: 0px; | ||
| 153 | + | ||
| 154 | + .card-panel-text { | ||
| 155 | + line-height: 18px; | ||
| 156 | + color: rgba(0, 0, 0, 0.45); | ||
| 157 | + font-size: 16px; | ||
| 158 | + margin-bottom: 12px; | ||
| 159 | + } | ||
| 160 | + | ||
| 161 | + .card-panel-num { | ||
| 162 | + font-size: 20px; | ||
| 163 | + } | ||
| 164 | + } | ||
| 165 | + } | ||
| 166 | +} | ||
| 167 | + | ||
| 168 | +@media (max-width: 550px) { | ||
| 169 | + .card-panel-description { | ||
| 170 | + display: none; | ||
| 171 | + } | ||
| 172 | + | ||
| 173 | + .card-panel-icon-wrapper { | ||
| 174 | + float: none !important; | ||
| 175 | + width: 100%; | ||
| 176 | + height: 100%; | ||
| 177 | + margin: 0 !important; | ||
| 178 | + | ||
| 179 | + .svg-icon { | ||
| 180 | + display: block; | ||
| 181 | + margin: 14px auto !important; | ||
| 182 | + float: none !important; | ||
| 183 | + } | ||
| 184 | + } | ||
| 185 | +} | ||
| 186 | +</style> |
| 1 | import { createApp } from 'vue' | 1 | import { createApp } from 'vue' |
| 2 | 2 | ||
| 3 | import Cookies from 'js-cookie' | 3 | import Cookies from 'js-cookie' |
| 4 | - | 4 | +import * as echarts from 'echarts' |
| 5 | import ElementPlus from 'element-plus' | 5 | import ElementPlus from 'element-plus' |
| 6 | import locale from 'element-plus/lib/locale/lang/zh-cn' // 中文语言 | 6 | import locale from 'element-plus/lib/locale/lang/zh-cn' // 中文语言 |
| 7 | 7 | ||
| @@ -55,6 +55,7 @@ app.config.globalProperties.handleTree = handleTree | @@ -55,6 +55,7 @@ app.config.globalProperties.handleTree = handleTree | ||
| 55 | app.config.globalProperties.addDateRange = addDateRange | 55 | app.config.globalProperties.addDateRange = addDateRange |
| 56 | app.config.globalProperties.selectDictLabel = selectDictLabel | 56 | app.config.globalProperties.selectDictLabel = selectDictLabel |
| 57 | app.config.globalProperties.selectDictLabels = selectDictLabels | 57 | app.config.globalProperties.selectDictLabels = selectDictLabels |
| 58 | +app.config.globalProperties.echarts = echarts | ||
| 58 | 59 | ||
| 59 | // 全局组件挂载 | 60 | // 全局组件挂载 |
| 60 | app.component('DictTag', DictTag) | 61 | app.component('DictTag', DictTag) |
| @@ -60,7 +60,15 @@ export const constantRoutes = [ | @@ -60,7 +60,15 @@ export const constantRoutes = [ | ||
| 60 | { | 60 | { |
| 61 | path: '', | 61 | path: '', |
| 62 | component: Layout, | 62 | component: Layout, |
| 63 | - redirect: '/policy/pending' | 63 | + redirect: '/index', |
| 64 | + children: [ | ||
| 65 | + { | ||
| 66 | + path: '/index', | ||
| 67 | + component: () => import('@/views/index'), | ||
| 68 | + name: 'Index', | ||
| 69 | + meta: { title: '首页', icon: 'dashboard', affix: true } | ||
| 70 | + } | ||
| 71 | + ] | ||
| 64 | }, | 72 | }, |
| 65 | { | 73 | { |
| 66 | path: '/user', | 74 | path: '/user', |
| 1 | <template> | 1 | <template> |
| 2 | - <div class="index-page"> | ||
| 3 | - <div class="card-list"> | 2 | + <div class="app-container"> |
| 3 | + <el-row :gutter="20"> | ||
| 4 | + <el-col :span="6" :xs="24"> | ||
| 4 | <el-card class="box-card"> | 5 | <el-card class="box-card"> |
| 5 | - <template #header> | ||
| 6 | - <span>流程</span> | ||
| 7 | - <el-tag style="float: right" size="small" effect="dark">月</el-tag> | 6 | + <template v-slot:header> |
| 7 | + <div class="clearfix"> | ||
| 8 | + <span>个人信息</span> | ||
| 9 | + </div> | ||
| 8 | </template> | 10 | </template> |
| 9 | - <h2>3</h2> | ||
| 10 | - <span>总流程数</span> | ||
| 11 | - <span style="color: #1890ff; float: right"> | ||
| 12 | - <span>98%</span> | ||
| 13 | - <span class="el-icon-top"></span> | ||
| 14 | - </span> | 11 | + <div> |
| 12 | + <div class="text-center"> | ||
| 13 | + <img | ||
| 14 | + :src="userStore.avatar" | ||
| 15 | + style="width: 120px; height: 120px; border-radius: 50%" | ||
| 16 | + /> | ||
| 17 | + </div> | ||
| 18 | + <ul class="list-group list-group-striped"> | ||
| 19 | + <li class="list-group-item"> | ||
| 20 | + <svg-icon icon-class="user" />用户昵称 | ||
| 21 | + <div class="pull-right">{{ state.user.nickName }}</div> | ||
| 22 | + </li> | ||
| 23 | + <li class="list-group-item"> | ||
| 24 | + <svg-icon icon-class="phone" />手机号码 | ||
| 25 | + <div class="pull-right">{{ state.user.phonenumber }}</div> | ||
| 26 | + </li> | ||
| 27 | + <li class="list-group-item"> | ||
| 28 | + <svg-icon icon-class="email" />用户邮箱 | ||
| 29 | + <div class="pull-right">{{ state.user.email }}</div> | ||
| 30 | + </li> | ||
| 31 | + <li class="list-group-item"> | ||
| 32 | + <svg-icon icon-class="tree" />所属部门 | ||
| 33 | + <div class="pull-right" v-if="state.user.dept"> | ||
| 34 | + {{ state.user.dept.deptName }} / {{ state.postGroup }} | ||
| 35 | + </div> | ||
| 36 | + </li> | ||
| 37 | + <li class="list-group-item"> | ||
| 38 | + <svg-icon icon-class="peoples" />所属角色 | ||
| 39 | + <div class="pull-right">{{ state.roleGroup }}</div> | ||
| 40 | + </li> | ||
| 41 | + <li class="list-group-item"> | ||
| 42 | + <svg-icon icon-class="date" />创建日期 | ||
| 43 | + <div class="pull-right">{{ state.user.createTime }}</div> | ||
| 44 | + </li> | ||
| 45 | + </ul> | ||
| 46 | + </div> | ||
| 15 | </el-card> | 47 | </el-card> |
| 16 | - <el-card class="box-card"> | ||
| 17 | - <template #header> | ||
| 18 | - <span>运行</span> | ||
| 19 | - <el-tag style="float: right" type="success" size="small" effect="dark" | ||
| 20 | - >全年</el-tag | 48 | + </el-col> |
| 49 | + <el-col :span="18" :xs="24"> | ||
| 50 | + <PanelGroup :listData="listData" /> | ||
| 51 | + <!-- 统计柱状图 --> | ||
| 52 | + <div class="echarts_box"> | ||
| 53 | + <div | ||
| 54 | + v-hasRole="['admin', 'associationemployee']" | ||
| 55 | + class="select_company" | ||
| 21 | > | 56 | > |
| 22 | - </template> | ||
| 23 | - <h2>89</h2> | ||
| 24 | - <span>流程实例数</span> | ||
| 25 | - <span style="color: #13ce66; float: right"> | ||
| 26 | - <span>20%</span> | ||
| 27 | - <span class="el-icon-top"></span> | ||
| 28 | - </span> | ||
| 29 | - </el-card> | ||
| 30 | - <el-card class="box-card"> | ||
| 31 | - <template #header> | ||
| 32 | - <span>执行</span> | ||
| 33 | - <el-tag style="float: right" type="success" size="small" effect="dark" | ||
| 34 | - >今天</el-tag | 57 | + <p>选择保险公司</p> |
| 58 | + <el-select | ||
| 59 | + v-model="queryParams.deptIds[0]" | ||
| 60 | + placeholder="请选择保险公司" | ||
| 61 | + style="width: 240px" | ||
| 62 | + @change="getList" | ||
| 35 | > | 63 | > |
| 36 | - </template> | ||
| 37 | - <h2>105</h2> | ||
| 38 | - <span>执行实例数</span> | ||
| 39 | - <span style="color: #13ce66; float: right"> | ||
| 40 | - <span>44%</span> | ||
| 41 | - <span class="el-icon-top"></span> | ||
| 42 | - </span> | ||
| 43 | - </el-card> | ||
| 44 | - <el-card class="box-card"> | ||
| 45 | - <template #header> | ||
| 46 | - <span>待办任务数</span> | ||
| 47 | - <el-tag style="float: right" type="danger" size="small" effect="dark" | ||
| 48 | - >历史记录</el-tag | ||
| 49 | - > | ||
| 50 | - </template> | ||
| 51 | - <h2>451</h2> | ||
| 52 | - <span>12月</span> | ||
| 53 | - <span style="color: red; float: right"> | ||
| 54 | - <span>38%</span> | ||
| 55 | - <span class="el-icon-bottom"></span> | ||
| 56 | - </span> | ||
| 57 | - </el-card> | 64 | + <el-option |
| 65 | + v-for="item in deptOptions" | ||
| 66 | + :key="item.deptId" | ||
| 67 | + :label="item.deptName" | ||
| 68 | + :value="item.deptId" | ||
| 69 | + /> | ||
| 70 | + </el-select> | ||
| 58 | </div> | 71 | </div> |
| 72 | + <div ref="chartRef" style="width: 100%; height: 400px"></div> | ||
| 73 | + </div> | ||
| 74 | + </el-col> | ||
| 75 | + </el-row> | ||
| 59 | </div> | 76 | </div> |
| 60 | </template> | 77 | </template> |
| 61 | 78 | ||
| 62 | -<script setup></script> | 79 | +<script setup> |
| 80 | +import useUserStore from "@/store/modules/user"; | ||
| 81 | +import { getUserProfile } from "@/api/system/user"; | ||
| 82 | +import { getStatistics } from "@/api/index"; | ||
| 83 | +import PanelGroup from "@/components/PanelGroup"; | ||
| 84 | +import { listDept } from "@/api/system/dept"; | ||
| 85 | +import { onMounted } from "vue"; | ||
| 86 | +const { proxy } = getCurrentInstance(); | ||
| 87 | +const userStore = useUserStore(); | ||
| 88 | +const chartRef = ref(null); | ||
| 89 | +const listData = ref([]); | ||
| 90 | +const xList = ref([]); | ||
| 91 | +const company = ref(""); | ||
| 92 | +const option = ref({}); | ||
| 93 | +const deptOptions = ref([]); | ||
| 94 | +const queryParams = reactive({ | ||
| 95 | + deptIds: [""], | ||
| 96 | + type: 1, | ||
| 97 | + startTime: proxy.parseTime( | ||
| 98 | + new Date().setFullYear(new Date().getFullYear() - 1) | ||
| 99 | + ), | ||
| 100 | + endTime: proxy.parseTime(new Date()), | ||
| 101 | +}); | ||
| 102 | +const state = reactive({ | ||
| 103 | + user: {}, | ||
| 104 | + roleGroup: {}, | ||
| 105 | + postGroup: {}, | ||
| 106 | +}); | ||
| 107 | + | ||
| 108 | +onMounted(() => { | ||
| 109 | + getList(); | ||
| 110 | + if (proxy.$auth.hasRoleOr(["admin", "common"])) { | ||
| 111 | + getDeptList(); | ||
| 112 | + } | ||
| 113 | +}); | ||
| 63 | 114 | ||
| 64 | -<style> | ||
| 65 | -.index-page { | ||
| 66 | - background-color: #f3f3f4; | ||
| 67 | - height: calc(100vh - 88px); | ||
| 68 | - padding: 20px; | 115 | +/** 查询部门列表 */ |
| 116 | +const getDeptList = () => { | ||
| 117 | + listDept().then((response) => { | ||
| 118 | + deptOptions.value = response.data.filter((item) => item.parentId === 100); | ||
| 119 | + }); | ||
| 120 | +}; | ||
| 121 | +function getUser() { | ||
| 122 | + getUserProfile().then((response) => { | ||
| 123 | + state.user = response.data; | ||
| 124 | + state.roleGroup = response.roleGroup; | ||
| 125 | + state.postGroup = response.postGroup; | ||
| 126 | + }); | ||
| 69 | } | 127 | } |
| 70 | -.card-list { | ||
| 71 | - font-size: 14px; | 128 | +const showText = (index) => { |
| 129 | + let obj = { | ||
| 130 | + 0: "未承接", | ||
| 131 | + 1: "已承接", | ||
| 132 | + 2: "未完成", | ||
| 133 | + 3: "已完成", | ||
| 134 | + }; | ||
| 135 | + return obj[index]; | ||
| 136 | +}; | ||
| 137 | +// 获取统计数据 | ||
| 138 | +const getList = async () => { | ||
| 139 | + const { data } = await getStatistics(queryParams); | ||
| 140 | + xList.value = data?.map((item) => item.month); | ||
| 141 | + let newData = data?.map((data) => data.statisticsVo[0]); | ||
| 142 | + let newArr = newData?.map((item) => { | ||
| 143 | + return [ | ||
| 144 | + item.toBeUndertaken, | ||
| 145 | + item.undertaken, | ||
| 146 | + item.notCompleted, | ||
| 147 | + item.completed, | ||
| 148 | + ]; | ||
| 149 | + }); | ||
| 150 | + const arrList = [[], [], [], []]; | ||
| 151 | + for (let i = 0; i < 4; i++) { | ||
| 152 | + for (let j = 0; j < 13; j++) { | ||
| 153 | + arrList[i]?.push(newArr[j][i]); | ||
| 154 | + } | ||
| 155 | + } | ||
| 156 | + listData.value = arrList.map((child, index) => { | ||
| 157 | + return { | ||
| 158 | + name: showText(index), | ||
| 159 | + type: "bar", | ||
| 160 | + emphasis: { | ||
| 161 | + focus: "series", | ||
| 162 | + }, | ||
| 163 | + data: child, | ||
| 164 | + }; | ||
| 165 | + }); | ||
| 166 | + company.value = data[0]?.statisticsVo[0]?.deptName; | ||
| 167 | + init(); | ||
| 168 | +}; | ||
| 169 | + | ||
| 170 | +const init = () => { | ||
| 171 | + const myChart = proxy.echarts.init(chartRef.value); | ||
| 172 | + option.value = { | ||
| 173 | + color: ["#7f36fe", "#36a3f7", "#f4516c", "#34bfa3"], | ||
| 174 | + title: { | ||
| 175 | + text: company.value + `一年内数据统计`, | ||
| 176 | + x: "center", | ||
| 177 | + }, | ||
| 178 | + tooltip: { | ||
| 179 | + trigger: "axis", | ||
| 180 | + axisPointer: { | ||
| 181 | + type: "shadow", | ||
| 182 | + }, | ||
| 183 | + }, | ||
| 184 | + legend: { | ||
| 185 | + x: "right", | ||
| 186 | + data: ["未承接", "已承接", "未完成", "已完成"], | ||
| 187 | + }, | ||
| 188 | + xAxis: [ | ||
| 189 | + { | ||
| 190 | + type: "category", | ||
| 191 | + axisTick: { show: false }, | ||
| 192 | + data: xList.value, | ||
| 193 | + }, | ||
| 194 | + ], | ||
| 195 | + yAxis: [ | ||
| 196 | + { | ||
| 197 | + type: "value", | ||
| 198 | + }, | ||
| 199 | + ], | ||
| 200 | + series: listData.value, | ||
| 201 | + }; | ||
| 202 | + myChart.setOption(option.value); | ||
| 203 | +}; | ||
| 204 | +getUser(); | ||
| 205 | +</script> | ||
| 206 | + | ||
| 207 | +<style lang="scss" scoped> | ||
| 208 | +.select_company { | ||
| 72 | display: flex; | 209 | display: flex; |
| 73 | - justify-content: space-between; | ||
| 74 | -} | ||
| 75 | -.card-list > * { | ||
| 76 | - width: 20%; | ||
| 77 | -} | ||
| 78 | -.chart, | ||
| 79 | -.table { | ||
| 80 | - margin-top: 20px; | ||
| 81 | -} | ||
| 82 | -.index-page table { | ||
| 83 | - width: 100% !important; | 210 | + align-items: center; |
| 211 | + gap: 20px; | ||
| 212 | + font-size: 18px; | ||
| 213 | + color: #666; | ||
| 84 | } | 214 | } |
| 85 | </style> | 215 | </style> |
| 1 | <template> | 1 | <template> |
| 2 | <div class="login"> | 2 | <div class="login"> |
| 3 | - <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form"> | ||
| 4 | - <h3 class="title">若依后台管理系统</h3> | 3 | + <el-form |
| 4 | + ref="loginRef" | ||
| 5 | + :model="loginForm" | ||
| 6 | + :rules="loginRules" | ||
| 7 | + class="login-form" | ||
| 8 | + > | ||
| 9 | + <h3 class="title">广西保险行业协会车险投保登记平台</h3> | ||
| 5 | <el-form-item prop="username"> | 10 | <el-form-item prop="username"> |
| 6 | <el-input | 11 | <el-input |
| 7 | v-model="loginForm.username" | 12 | v-model="loginForm.username" |
| @@ -10,7 +15,9 @@ | @@ -10,7 +15,9 @@ | ||
| 10 | auto-complete="off" | 15 | auto-complete="off" |
| 11 | placeholder="账号" | 16 | placeholder="账号" |
| 12 | > | 17 | > |
| 13 | - <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template> | 18 | + <template #prefix |
| 19 | + ><svg-icon icon-class="user" class="el-input__icon input-icon" | ||
| 20 | + /></template> | ||
| 14 | </el-input> | 21 | </el-input> |
| 15 | </el-form-item> | 22 | </el-form-item> |
| 16 | <el-form-item prop="password"> | 23 | <el-form-item prop="password"> |
| @@ -22,7 +29,9 @@ | @@ -22,7 +29,9 @@ | ||
| 22 | placeholder="密码" | 29 | placeholder="密码" |
| 23 | @keyup.enter="handleLogin" | 30 | @keyup.enter="handleLogin" |
| 24 | > | 31 | > |
| 25 | - <template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template> | 32 | + <template #prefix |
| 33 | + ><svg-icon icon-class="password" class="el-input__icon input-icon" | ||
| 34 | + /></template> | ||
| 26 | </el-input> | 35 | </el-input> |
| 27 | </el-form-item> | 36 | </el-form-item> |
| 28 | <el-form-item prop="code" v-if="captchaEnabled"> | 37 | <el-form-item prop="code" v-if="captchaEnabled"> |
| @@ -34,26 +43,34 @@ | @@ -34,26 +43,34 @@ | ||
| 34 | style="width: 63%" | 43 | style="width: 63%" |
| 35 | @keyup.enter="handleLogin" | 44 | @keyup.enter="handleLogin" |
| 36 | > | 45 | > |
| 37 | - <template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template> | 46 | + <template #prefix |
| 47 | + ><svg-icon icon-class="validCode" class="el-input__icon input-icon" | ||
| 48 | + /></template> | ||
| 38 | </el-input> | 49 | </el-input> |
| 39 | <div class="login-code"> | 50 | <div class="login-code"> |
| 40 | - <img :src="codeUrl" @click="getCode" class="login-code-img"/> | 51 | + <img :src="codeUrl" @click="getCode" class="login-code-img" /> |
| 41 | </div> | 52 | </div> |
| 42 | </el-form-item> | 53 | </el-form-item> |
| 43 | - <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> | ||
| 44 | - <el-form-item style="width:100%;"> | 54 | + <el-checkbox |
| 55 | + v-model="loginForm.rememberMe" | ||
| 56 | + style="margin: 0px 0px 25px 0px" | ||
| 57 | + >记住密码</el-checkbox | ||
| 58 | + > | ||
| 59 | + <el-form-item style="width: 100%"> | ||
| 45 | <el-button | 60 | <el-button |
| 46 | :loading="loading" | 61 | :loading="loading" |
| 47 | size="large" | 62 | size="large" |
| 48 | type="primary" | 63 | type="primary" |
| 49 | - style="width:100%;" | 64 | + style="width: 100%" |
| 50 | @click.prevent="handleLogin" | 65 | @click.prevent="handleLogin" |
| 51 | > | 66 | > |
| 52 | <span v-if="!loading">登 录</span> | 67 | <span v-if="!loading">登 录</span> |
| 53 | <span v-else>登 录 中...</span> | 68 | <span v-else>登 录 中...</span> |
| 54 | </el-button> | 69 | </el-button> |
| 55 | - <div style="float: right;" v-if="register"> | ||
| 56 | - <router-link class="link-type" :to="'/register'">立即注册</router-link> | 70 | + <div style="float: right" v-if="register"> |
| 71 | + <router-link class="link-type" :to="'/register'" | ||
| 72 | + >立即注册</router-link | ||
| 73 | + > | ||
| 57 | </div> | 74 | </div> |
| 58 | </el-form-item> | 75 | </el-form-item> |
| 59 | </el-form> | 76 | </el-form> |
| @@ -68,24 +85,24 @@ | @@ -68,24 +85,24 @@ | ||
| 68 | import { getCodeImg } from "@/api/login"; | 85 | import { getCodeImg } from "@/api/login"; |
| 69 | import Cookies from "js-cookie"; | 86 | import Cookies from "js-cookie"; |
| 70 | import { encrypt, decrypt } from "@/utils/jsencrypt"; | 87 | import { encrypt, decrypt } from "@/utils/jsencrypt"; |
| 71 | -import useUserStore from '@/store/modules/user' | 88 | +import useUserStore from "@/store/modules/user"; |
| 72 | 89 | ||
| 73 | -const userStore = useUserStore() | 90 | +const userStore = useUserStore(); |
| 74 | const router = useRouter(); | 91 | const router = useRouter(); |
| 75 | const { proxy } = getCurrentInstance(); | 92 | const { proxy } = getCurrentInstance(); |
| 76 | 93 | ||
| 77 | const loginForm = ref({ | 94 | const loginForm = ref({ |
| 78 | - username: "admin", | ||
| 79 | - password: "admin123", | 95 | + username: "", |
| 96 | + password: "", | ||
| 80 | rememberMe: false, | 97 | rememberMe: false, |
| 81 | code: "", | 98 | code: "", |
| 82 | - uuid: "" | 99 | + uuid: "", |
| 83 | }); | 100 | }); |
| 84 | 101 | ||
| 85 | const loginRules = { | 102 | const loginRules = { |
| 86 | username: [{ required: true, trigger: "blur", message: "请输入您的账号" }], | 103 | username: [{ required: true, trigger: "blur", message: "请输入您的账号" }], |
| 87 | password: [{ required: true, trigger: "blur", message: "请输入您的密码" }], | 104 | password: [{ required: true, trigger: "blur", message: "请输入您的密码" }], |
| 88 | - code: [{ required: true, trigger: "change", message: "请输入验证码" }] | 105 | + code: [{ required: true, trigger: "change", message: "请输入验证码" }], |
| 89 | }; | 106 | }; |
| 90 | 107 | ||
| 91 | const codeUrl = ref(""); | 108 | const codeUrl = ref(""); |
| @@ -97,13 +114,15 @@ const register = ref(false); | @@ -97,13 +114,15 @@ const register = ref(false); | ||
| 97 | const redirect = ref(undefined); | 114 | const redirect = ref(undefined); |
| 98 | 115 | ||
| 99 | function handleLogin() { | 116 | function handleLogin() { |
| 100 | - proxy.$refs.loginRef.validate(valid => { | 117 | + proxy.$refs.loginRef.validate((valid) => { |
| 101 | if (valid) { | 118 | if (valid) { |
| 102 | loading.value = true; | 119 | loading.value = true; |
| 103 | // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码 | 120 | // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码 |
| 104 | if (loginForm.value.rememberMe) { | 121 | if (loginForm.value.rememberMe) { |
| 105 | Cookies.set("username", loginForm.value.username, { expires: 30 }); | 122 | Cookies.set("username", loginForm.value.username, { expires: 30 }); |
| 106 | - Cookies.set("password", encrypt(loginForm.value.password), { expires: 30 }); | 123 | + Cookies.set("password", encrypt(loginForm.value.password), { |
| 124 | + expires: 30, | ||
| 125 | + }); | ||
| 107 | Cookies.set("rememberMe", loginForm.value.rememberMe, { expires: 30 }); | 126 | Cookies.set("rememberMe", loginForm.value.rememberMe, { expires: 30 }); |
| 108 | } else { | 127 | } else { |
| 109 | // 否则移除 | 128 | // 否则移除 |
| @@ -112,9 +131,12 @@ function handleLogin() { | @@ -112,9 +131,12 @@ function handleLogin() { | ||
| 112 | Cookies.remove("rememberMe"); | 131 | Cookies.remove("rememberMe"); |
| 113 | } | 132 | } |
| 114 | // 调用action的登录方法 | 133 | // 调用action的登录方法 |
| 115 | - userStore.login(loginForm.value).then(() => { | 134 | + userStore |
| 135 | + .login(loginForm.value) | ||
| 136 | + .then(() => { | ||
| 116 | router.push({ path: redirect.value || "/" }); | 137 | router.push({ path: redirect.value || "/" }); |
| 117 | - }).catch(() => { | 138 | + }) |
| 139 | + .catch(() => { | ||
| 118 | loading.value = false; | 140 | loading.value = false; |
| 119 | // 重新获取验证码 | 141 | // 重新获取验证码 |
| 120 | if (captchaEnabled.value) { | 142 | if (captchaEnabled.value) { |
| @@ -126,8 +148,9 @@ function handleLogin() { | @@ -126,8 +148,9 @@ function handleLogin() { | ||
| 126 | } | 148 | } |
| 127 | 149 | ||
| 128 | function getCode() { | 150 | function getCode() { |
| 129 | - getCodeImg().then(res => { | ||
| 130 | - captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled; | 151 | + getCodeImg().then((res) => { |
| 152 | + captchaEnabled.value = | ||
| 153 | + res.captchaEnabled === undefined ? true : res.captchaEnabled; | ||
| 131 | if (captchaEnabled.value) { | 154 | if (captchaEnabled.value) { |
| 132 | codeUrl.value = "data:image/gif;base64," + res.img; | 155 | codeUrl.value = "data:image/gif;base64," + res.img; |
| 133 | loginForm.value.uuid = res.uuid; | 156 | loginForm.value.uuid = res.uuid; |
| @@ -141,8 +164,9 @@ function getCookie() { | @@ -141,8 +164,9 @@ function getCookie() { | ||
| 141 | const rememberMe = Cookies.get("rememberMe"); | 164 | const rememberMe = Cookies.get("rememberMe"); |
| 142 | loginForm.value = { | 165 | loginForm.value = { |
| 143 | username: username === undefined ? loginForm.value.username : username, | 166 | username: username === undefined ? loginForm.value.username : username, |
| 144 | - password: password === undefined ? loginForm.value.password : decrypt(password), | ||
| 145 | - rememberMe: rememberMe === undefined ? false : Boolean(rememberMe) | 167 | + password: |
| 168 | + password === undefined ? loginForm.value.password : decrypt(password), | ||
| 169 | + rememberMe: rememberMe === undefined ? false : Boolean(rememberMe), | ||
| 146 | }; | 170 | }; |
| 147 | } | 171 | } |
| 148 | 172 | ||
| @@ -150,7 +174,7 @@ getCode(); | @@ -150,7 +174,7 @@ getCode(); | ||
| 150 | getCookie(); | 174 | getCookie(); |
| 151 | </script> | 175 | </script> |
| 152 | 176 | ||
| 153 | -<style lang='scss' scoped> | 177 | +<style lang="scss" scoped> |
| 154 | .login { | 178 | .login { |
| 155 | display: flex; | 179 | display: flex; |
| 156 | justify-content: center; | 180 | justify-content: center; |
| @@ -2,77 +2,37 @@ | @@ -2,77 +2,37 @@ | ||
| 2 | <div class="app-container"> | 2 | <div class="app-container"> |
| 3 | <!-- 表格数据 --> | 3 | <!-- 表格数据 --> |
| 4 | <el-table v-loading="loading" :data="policyList" @row-click="handleUpdate"> | 4 | <el-table v-loading="loading" :data="policyList" @row-click="handleUpdate"> |
| 5 | - <el-table-column type="selection" width="55" align="center" /> | ||
| 6 | <el-table-column label="序号" width="55" type="index" /> | 5 | <el-table-column label="序号" width="55" type="index" /> |
| 7 | - <el-table-column | ||
| 8 | - label="登记时间" | ||
| 9 | - prop="createTime" | ||
| 10 | - width="160" | ||
| 11 | - align="center" | ||
| 12 | - /> | 6 | + <el-table-column label="登记时间" prop="createTime" align="center" /> |
| 13 | <el-table-column | 7 | <el-table-column |
| 14 | label="车牌号" | 8 | label="车牌号" |
| 15 | prop="licensePlateNumber" | 9 | prop="licensePlateNumber" |
| 16 | - width="150" | ||
| 17 | align="center" | 10 | align="center" |
| 18 | /> | 11 | /> |
| 19 | <el-table-column | 12 | <el-table-column |
| 20 | label="车架号" | 13 | label="车架号" |
| 21 | - width="180" | ||
| 22 | prop="frameNumber" | 14 | prop="frameNumber" |
| 23 | align="center" | 15 | align="center" |
| 24 | :show-overflow-tooltip="true" | 16 | :show-overflow-tooltip="true" |
| 25 | /> | 17 | /> |
| 18 | + <el-table-column label="车主姓名" prop="name" align="center" /> | ||
| 19 | + <el-table-column label="联系电话" prop="phone" align="center" /> | ||
| 20 | + <el-table-column label="上年承保公司" prop="sysDeptName" align="center" /> | ||
| 26 | <el-table-column | 21 | <el-table-column |
| 27 | - label="车主姓名" | ||
| 28 | - prop="name" | ||
| 29 | - width="100" | ||
| 30 | - align="center" | ||
| 31 | - /> | ||
| 32 | - <el-table-column | ||
| 33 | - label="联系电话" | ||
| 34 | - prop="phone" | ||
| 35 | - width="180" | ||
| 36 | - align="center" | ||
| 37 | - /> | ||
| 38 | - <el-table-column | ||
| 39 | - label="上年承保公司" | ||
| 40 | - prop="sysDeptName" | ||
| 41 | - width="150" | ||
| 42 | - align="center" | ||
| 43 | - /> | ||
| 44 | - <el-table-column | ||
| 45 | - v-show="hasCompanyadmin" | ||
| 46 | - label="分配机制" | ||
| 47 | - prop="distributionMechanism" | ||
| 48 | - width="150" | ||
| 49 | - align="center" | ||
| 50 | - /> | ||
| 51 | - <el-table-column | ||
| 52 | - label="订单分配时间" | ||
| 53 | - prop="distributionTime" | ||
| 54 | - width="150" | ||
| 55 | - align="center" | ||
| 56 | - /> | ||
| 57 | - <el-table-column | ||
| 58 | - label="保单进度" | ||
| 59 | - prop="orderProgress" | ||
| 60 | - width="150" | ||
| 61 | - align="center" | ||
| 62 | - /> | ||
| 63 | - <el-table-column | ||
| 64 | - label="承接时间" | ||
| 65 | - prop="companyEmployeeUndertakeTime" | ||
| 66 | - width="150" | ||
| 67 | - align="center" | ||
| 68 | - /> | ||
| 69 | - <el-table-column | ||
| 70 | - v-show="hasCompanyadmin" | ||
| 71 | - label="承接人" | ||
| 72 | - prop="associationEmployeeUserName" | ||
| 73 | - width="150" | 22 | + label="操作" |
| 74 | align="center" | 23 | align="center" |
| 75 | - /> | 24 | + min-width="120" |
| 25 | + fixed="right" | ||
| 26 | + > | ||
| 27 | + <template #default="{ row }"> | ||
| 28 | + <el-button | ||
| 29 | + type="primary" | ||
| 30 | + v-hasRole="['companyadmin']" | ||
| 31 | + @click.stop="handleSharing(row.taskId)" | ||
| 32 | + >分配</el-button | ||
| 33 | + > | ||
| 34 | + </template> | ||
| 35 | + </el-table-column> | ||
| 76 | </el-table> | 36 | </el-table> |
| 77 | 37 | ||
| 78 | <pagination | 38 | <pagination |
| @@ -83,55 +43,28 @@ | @@ -83,55 +43,28 @@ | ||
| 83 | @pagination="getList" | 43 | @pagination="getList" |
| 84 | /> | 44 | /> |
| 85 | 45 | ||
| 86 | - <!-- 表单作废对话框 --> | ||
| 87 | - <el-dialog | ||
| 88 | - v-model="deprecatedShow" | ||
| 89 | - title="温馨提示:该保单作废后车牌号、车架号在本自然年度无法重新提交" | ||
| 90 | - width="500" | ||
| 91 | - append-to-body | ||
| 92 | - > | ||
| 93 | - <QuillEditor | ||
| 94 | - :value="deprecatedForm.deprecatedReason" | ||
| 95 | - @updateValue="getMsg" | ||
| 96 | - /> | ||
| 97 | - <template #footer> | ||
| 98 | - <div class="dialog-footer"> | ||
| 99 | - <el-button @click="deprecatedShow = false">取消</el-button> | ||
| 100 | - <el-button type="primary" @click="sunmitDeprecated">确定</el-button> | ||
| 101 | - </div> | ||
| 102 | - </template> | ||
| 103 | - </el-dialog> | ||
| 104 | - | ||
| 105 | - <!-- 分配承保公司对话框 --> | 46 | + <!-- 转办分配对话框 --> |
| 106 | <el-dialog | 47 | <el-dialog |
| 107 | - v-model="companyShow" | ||
| 108 | - title="分配承保公司:" | 48 | + v-model="transferShow" |
| 49 | + title="请选择人员:" | ||
| 109 | width="500" | 50 | width="500" |
| 110 | append-to-body | 51 | append-to-body |
| 111 | > | 52 | > |
| 112 | <div class="company_box"> | 53 | <div class="company_box"> |
| 113 | - <div class="header_top"> | ||
| 114 | - <el-input | ||
| 115 | - v-model="companyQueryParams.deptName" | ||
| 116 | - style="width: 380px" | ||
| 117 | - placeholder="请输入承保公司名称(支持模糊查询)" | ||
| 118 | - prefix-icon="Search" | ||
| 119 | - /> | ||
| 120 | - <el-button type="primary" @click="getDeptList">查询</el-button> | ||
| 121 | - </div> | ||
| 122 | - <el-radio-group v-model="companyForm.deptId" @change="handleDeptChange"> | 54 | + <el-radio-group v-model="transferForm.username"> |
| 123 | <el-radio | 55 | <el-radio |
| 124 | - v-for="item in deptOptions" | ||
| 125 | - :key="item.deptId" | ||
| 126 | - :label="item.deptId" | ||
| 127 | - >{{ item.deptName }}</el-radio | 56 | + v-for="item in transferOptions" |
| 57 | + :key="item.userName" | ||
| 58 | + :label="item.userName" | ||
| 59 | + >{{ item.userName }}</el-radio | ||
| 128 | > | 60 | > |
| 129 | </el-radio-group> | 61 | </el-radio-group> |
| 62 | + <div v-show="transferOptions.length === 0">暂无其他员工</div> | ||
| 130 | </div> | 63 | </div> |
| 131 | <template #footer> | 64 | <template #footer> |
| 132 | <div class="dialog-footer"> | 65 | <div class="dialog-footer"> |
| 133 | <el-button @click="companyShow = false">取消</el-button> | 66 | <el-button @click="companyShow = false">取消</el-button> |
| 134 | - <el-button type="primary" @click="submitForm">确定</el-button> | 67 | + <el-button type="primary" @click="submitTransfer">确定</el-button> |
| 135 | </div> | 68 | </div> |
| 136 | </template> | 69 | </template> |
| 137 | </el-dialog> | 70 | </el-dialog> |
| @@ -141,18 +74,18 @@ | @@ -141,18 +74,18 @@ | ||
| 141 | <el-form :model="form" :rules="rules" ref="policyRef" label-width="100px"> | 74 | <el-form :model="form" :rules="rules" ref="policyRef" label-width="100px"> |
| 142 | <el-row> | 75 | <el-row> |
| 143 | <el-col :span="12"> | 76 | <el-col :span="12"> |
| 144 | - <el-form-item label="车牌号" prop="carNum"> | 77 | + <el-form-item label="车牌号" prop="licensePlateNumber"> |
| 145 | <el-input | 78 | <el-input |
| 146 | - v-model="form.carNum" | 79 | + v-model="form.licensePlateNumber" |
| 147 | placeholder="请输入车牌号" | 80 | placeholder="请输入车牌号" |
| 148 | maxlength="30" | 81 | maxlength="30" |
| 149 | /> | 82 | /> |
| 150 | </el-form-item> | 83 | </el-form-item> |
| 151 | </el-col> | 84 | </el-col> |
| 152 | <el-col :span="12"> | 85 | <el-col :span="12"> |
| 153 | - <el-form-item label="车架号" prop="frameNum"> | 86 | + <el-form-item label="车架号" prop="frameNumber"> |
| 154 | <el-input | 87 | <el-input |
| 155 | - v-model="form.frameNum" | 88 | + v-model="form.frameNumber" |
| 156 | placeholder="请输入车架号" | 89 | placeholder="请输入车架号" |
| 157 | maxlength="30" | 90 | maxlength="30" |
| 158 | /> | 91 | /> |
| @@ -189,9 +122,9 @@ | @@ -189,9 +122,9 @@ | ||
| 189 | </el-form-item> | 122 | </el-form-item> |
| 190 | </el-col> | 123 | </el-col> |
| 191 | <el-col :span="12"> | 124 | <el-col :span="12"> |
| 192 | - <el-form-item label="上年承保公司" prop="company"> | 125 | + <el-form-item label="上年承保公司" prop="sysDeptName"> |
| 193 | <el-input | 126 | <el-input |
| 194 | - v-model="form.company" | 127 | + v-model="form.sysDeptName" |
| 195 | placeholder="请输入上年承保公司" | 128 | placeholder="请输入上年承保公司" |
| 196 | maxlength="50" | 129 | maxlength="50" |
| 197 | /> | 130 | /> |
| @@ -199,34 +132,21 @@ | @@ -199,34 +132,21 @@ | ||
| 199 | </el-col> | 132 | </el-col> |
| 200 | </el-row> | 133 | </el-row> |
| 201 | </el-form> | 134 | </el-form> |
| 202 | - <template #footer> | ||
| 203 | - <div class="dialog-footer"> | ||
| 204 | - <el-button @click="open = false">取消</el-button> | ||
| 205 | - <el-button type="primary" @click="open = false">确定</el-button> | ||
| 206 | - </div> | ||
| 207 | - </template> | ||
| 208 | </el-dialog> | 135 | </el-dialog> |
| 209 | </div> | 136 | </div> |
| 210 | </template> | 137 | </template> |
| 211 | 138 | ||
| 212 | <script setup> | 139 | <script setup> |
| 213 | -import { queryPengdingList, disposeUser } from "@/api/policy/index"; | ||
| 214 | -import { listDept } from "@/api/system/dept"; | ||
| 215 | -import { onMounted, ref } from "vue"; | ||
| 216 | -const { proxy } = getCurrentInstance(); | 140 | +import { queryPengdingList, getUserList } from "@/api/policy/index"; |
| 217 | const loading = ref(false); | 141 | const loading = ref(false); |
| 142 | +const { proxy } = getCurrentInstance(); | ||
| 218 | const total = ref(0); | 143 | const total = ref(0); |
| 219 | const title = ref("保单信息"); | 144 | const title = ref("保单信息"); |
| 220 | const open = ref(false); | 145 | const open = ref(false); |
| 221 | -const timerReason = ref(null); | 146 | +const transferShow = ref(false); |
| 222 | const form = ref({}); | 147 | const form = ref({}); |
| 223 | -const hasRole = computed(() => { | ||
| 224 | - return proxy.$auth.hasRole("associationemployee"); | ||
| 225 | -}); | ||
| 226 | - | ||
| 227 | -const hasCompanyadmin = computed(() => { | ||
| 228 | - return proxy.$auth.hasRole("companyadmin"); | ||
| 229 | -}); | 148 | +const transferForm = ref({}); |
| 149 | +const transferOptions = ref([]); | ||
| 230 | const rules = ref({ | 150 | const rules = ref({ |
| 231 | carNum: [{ required: true, message: "车牌号不能为空", trigger: "blur" }], | 151 | carNum: [{ required: true, message: "车牌号不能为空", trigger: "blur" }], |
| 232 | frameNum: [{ required: true, message: "车架号不能为空", trigger: "blur" }], | 152 | frameNum: [{ required: true, message: "车架号不能为空", trigger: "blur" }], |
| @@ -241,21 +161,18 @@ const rules = ref({ | @@ -241,21 +161,18 @@ const rules = ref({ | ||
| 241 | ], | 161 | ], |
| 242 | }); | 162 | }); |
| 243 | const companyShow = ref(false); | 163 | const companyShow = ref(false); |
| 244 | -const deptOptions = ref([]); | ||
| 245 | -const company = ref(2); | ||
| 246 | -const deprecatedShow = ref(false); | ||
| 247 | -const deprecatedForm = ref({}); | ||
| 248 | -const companyForm = ref({}); | ||
| 249 | const queryParams = reactive({ | 164 | const queryParams = reactive({ |
| 250 | pageNum: 1, | 165 | pageNum: 1, |
| 251 | pageSize: 10, | 166 | pageSize: 10, |
| 252 | }); | 167 | }); |
| 253 | -const companyQueryParams = reactive({ | ||
| 254 | - deptName: undefined, | ||
| 255 | - status: undefined, | ||
| 256 | -}); | ||
| 257 | const policyList = ref([]); | 168 | const policyList = ref([]); |
| 258 | 169 | ||
| 170 | +/** 重置操作表单 */ | ||
| 171 | +function reset() { | ||
| 172 | + proxy.resetForm("policyRef"); | ||
| 173 | +} | ||
| 174 | + | ||
| 175 | +// 获取处理的列表 | ||
| 259 | const getList = async () => { | 176 | const getList = async () => { |
| 260 | loading.value = true; | 177 | loading.value = true; |
| 261 | const { rows, total: all } = await queryPengdingList(queryParams); | 178 | const { rows, total: all } = await queryPengdingList(queryParams); |
| @@ -263,117 +180,38 @@ const getList = async () => { | @@ -263,117 +180,38 @@ const getList = async () => { | ||
| 263 | total.value = all; | 180 | total.value = all; |
| 264 | loading.value = false; | 181 | loading.value = false; |
| 265 | }; | 182 | }; |
| 266 | -// 通过保单 | ||
| 267 | -const handleSuccess = (associationapprove, taskId) => { | ||
| 268 | - ElMessageBox.confirm("是否通过该保单?", { | ||
| 269 | - confirmButtonText: "确认通过", | ||
| 270 | - cancelButtonText: "取消", | ||
| 271 | - type: "warning", | ||
| 272 | - }) | ||
| 273 | - .then(() => { | ||
| 274 | - disposeUser({ associationapprove }, taskId).then((res) => { | ||
| 275 | - proxy.$modal.msgSuccess("保单已通过"); | ||
| 276 | - }); | ||
| 277 | - }) | ||
| 278 | - .catch(() => { | ||
| 279 | - proxy.$modal.msg("取消通过"); | ||
| 280 | - }); | ||
| 281 | -}; | ||
| 282 | -// 退回保单 | ||
| 283 | -const handleFallback = (associationapprove, taskId) => { | ||
| 284 | - ElMessageBox.confirm("是否退回该保单?", { | ||
| 285 | - confirmButtonText: "确认退回", | ||
| 286 | - cancelButtonText: "取消", | ||
| 287 | - type: "warning", | ||
| 288 | - }) | ||
| 289 | - .then(() => { | ||
| 290 | - disposeUser({ associationapprove }, taskId).then((res) => { | ||
| 291 | - proxy.$modal.msgSuccess("保单已退回"); | ||
| 292 | - }); | ||
| 293 | - }) | ||
| 294 | - .catch(() => { | ||
| 295 | - proxy.$modal.msg("已取消"); | ||
| 296 | - }); | ||
| 297 | -}; | ||
| 298 | -// 作废保单 | ||
| 299 | -const handleVoid = (associationapprove, taskId) => { | ||
| 300 | - deprecatedForm.value = { | ||
| 301 | - associationapprove, | ||
| 302 | - taskId, | ||
| 303 | - }; | ||
| 304 | - deprecatedShow.value = true; | ||
| 305 | -}; | ||
| 306 | 183 | ||
| 307 | -// 提交作废表单 | ||
| 308 | -const sunmitDeprecated = () => { | ||
| 309 | - const data = { | ||
| 310 | - associationapprove: deprecatedForm.value.associationapprove, | ||
| 311 | - comment: deprecatedForm.value.deprecatedReason, | ||
| 312 | - }; | ||
| 313 | - const taskId = deprecatedForm.value.taskId; | ||
| 314 | - disposeUser(data, taskId).then((res) => { | ||
| 315 | - proxy.$modal.msgSuccess("保单已退回"); | ||
| 316 | - }); | ||
| 317 | -}; | ||
| 318 | -// 分配承保公司 | ||
| 319 | -const handleAuthCompany = (associationapprove, taskId) => { | ||
| 320 | - companyForm.value = { | ||
| 321 | - associationapprove, | ||
| 322 | - taskId, | ||
| 323 | - }; | ||
| 324 | - companyShow.value = true; | ||
| 325 | - getDeptList(); | 184 | +// 转办或分配 |
| 185 | +const handleSharing = (id) => { | ||
| 186 | + transferForm.value.taskId = id; | ||
| 187 | + getUser(); | ||
| 188 | + transferShow.value = true; | ||
| 326 | }; | 189 | }; |
| 327 | 190 | ||
| 328 | -/** 查询部门列表 */ | ||
| 329 | -const getDeptList = () => { | ||
| 330 | - loading.value = true; | ||
| 331 | - listDept(companyQueryParams).then((response) => { | ||
| 332 | - deptOptions.value = response.data.filter((item) => item.parentId === 100); | ||
| 333 | - loading.value = false; | ||
| 334 | - }); | 191 | +// 获取人员列表 |
| 192 | +const getUser = async () => { | ||
| 193 | + const { data } = await getUserList(); | ||
| 194 | + transferOptions.value = data; | ||
| 335 | }; | 195 | }; |
| 336 | 196 | ||
| 337 | -/** 重置操作表单 */ | ||
| 338 | -function reset() { | ||
| 339 | - form.value = { | ||
| 340 | - policyId: undefined, | ||
| 341 | - createTime: undefined, | ||
| 342 | - carNum: undefined, | ||
| 343 | - frameNum: undefined, | ||
| 344 | - name: undefined, | ||
| 345 | - phone: undefined, | ||
| 346 | - company: undefined, | ||
| 347 | - }; | ||
| 348 | - proxy.resetForm("policyRef"); | ||
| 349 | -} | ||
| 350 | - | ||
| 351 | -/** 修改按钮操作 */ | ||
| 352 | -function handleUpdate(row) { | ||
| 353 | - reset(); | ||
| 354 | - form.value = row; | ||
| 355 | - open.value = true; | ||
| 356 | -} | ||
| 357 | -/** 提交通过分配承保公司 */ | ||
| 358 | -function submitForm() { | 197 | +/** 提交通过分配转办人员 */ |
| 198 | +function submitTransfer() { | ||
| 359 | const data = { | 199 | const data = { |
| 360 | - associationapprove: companyForm.value.associationapprove, | ||
| 361 | - deptId: companyForm.value.deptId.toString(), | 200 | + username: transferForm.value.username, |
| 362 | }; | 201 | }; |
| 363 | - const taskId = companyForm.value.taskId; | ||
| 364 | - disposeUser(data, taskId).then((res) => { | ||
| 365 | - companyShow.value = true; | 202 | + const taskId = transferForm.value.taskId; |
| 203 | + transfer(data, taskId).then((res) => { | ||
| 204 | + transferShow.value = false; | ||
| 205 | + getList(); | ||
| 366 | proxy.$modal.msgSuccess("保单已分配成功"); | 206 | proxy.$modal.msgSuccess("保单已分配成功"); |
| 367 | }); | 207 | }); |
| 368 | } | 208 | } |
| 369 | - | ||
| 370 | -const getMsg = (val) => { | ||
| 371 | - clearTimeout(timerReason.value); | ||
| 372 | - timerReason.value = setTimeout(() => { | ||
| 373 | - deprecatedForm.value.deprecatedReaso = val; | ||
| 374 | - }, 1000); | 209 | +const handleUpdate = (row) => { |
| 210 | + reset(); | ||
| 211 | + form.value = row; | ||
| 212 | + // isCustom.value = data.isCustomizeBrandAndModel == "0"; | ||
| 213 | + open.value = true; | ||
| 375 | }; | 214 | }; |
| 376 | - | ||
| 377 | getList(); | 215 | getList(); |
| 378 | </script> | 216 | </script> |
| 379 | 217 |
| @@ -98,27 +98,53 @@ | @@ -98,27 +98,53 @@ | ||
| 98 | <el-table-column label="序号" type="index" width="55" /> | 98 | <el-table-column label="序号" type="index" width="55" /> |
| 99 | <el-table-column | 99 | <el-table-column |
| 100 | label="登记时间" | 100 | label="登记时间" |
| 101 | - prop="initialRegistrationTime" | 101 | + prop="createTime" |
| 102 | + width="160" | ||
| 103 | + align="center" | ||
| 104 | + /> | ||
| 105 | + <el-table-column | ||
| 106 | + label="车牌号" | ||
| 107 | + prop="licensePlateNumber" | ||
| 102 | width="150" | 108 | width="150" |
| 109 | + align="center" | ||
| 110 | + /> | ||
| 111 | + <el-table-column | ||
| 112 | + label="车架号" | ||
| 113 | + prop="frameNumber" | ||
| 114 | + width="240" | ||
| 115 | + align="center" | ||
| 116 | + /> | ||
| 117 | + <el-table-column | ||
| 118 | + label="车主姓名" | ||
| 119 | + prop="name" | ||
| 120 | + width="100" | ||
| 121 | + align="center" | ||
| 122 | + /> | ||
| 123 | + <el-table-column | ||
| 124 | + label="联系电话" | ||
| 125 | + prop="phone" | ||
| 126 | + width="180" | ||
| 127 | + align="center" | ||
| 103 | /> | 128 | /> |
| 104 | - <el-table-column label="车牌号" prop="licensePlateNumber" width="150" /> | ||
| 105 | - <el-table-column label="车架号" prop="frameNumber" width="240" /> | ||
| 106 | - <el-table-column label="车主姓名" prop="name" width="100" /> | ||
| 107 | - <el-table-column label="联系电话" prop="phone" width="180" /> | ||
| 108 | <el-table-column | 129 | <el-table-column |
| 109 | label="分配机制" | 130 | label="分配机制" |
| 110 | width="120" | 131 | width="120" |
| 111 | prop="distributionMechanism" | 132 | prop="distributionMechanism" |
| 112 | /> | 133 | /> |
| 113 | - <el-table-column label="承保公司" prop="companyName" width="150" /> | ||
| 114 | - <el-table-column label="操作人员" width="150"> | 134 | + <el-table-column |
| 135 | + label="承保公司" | ||
| 136 | + prop="companyName" | ||
| 137 | + width="180" | ||
| 138 | + align="center" | ||
| 139 | + /> | ||
| 140 | + <el-table-column label="操作人员" width="150" align="center"> | ||
| 115 | <template #default="{ row }"> | 141 | <template #default="{ row }"> |
| 116 | <span>{{ | 142 | <span>{{ |
| 117 | row.associationEmployeeUserName || row.companyEmployeeUserName | 143 | row.associationEmployeeUserName || row.companyEmployeeUserName |
| 118 | }}</span> | 144 | }}</span> |
| 119 | </template> | 145 | </template> |
| 120 | </el-table-column> | 146 | </el-table-column> |
| 121 | - <el-table-column label="操作时间" width="170"> | 147 | + <el-table-column label="操作时间" width="160" align="center"> |
| 122 | <template #default="{ row }"> | 148 | <template #default="{ row }"> |
| 123 | <span>{{ | 149 | <span>{{ |
| 124 | row.companyEmployeeUndertakeTime || row.distributionTime | 150 | row.companyEmployeeUndertakeTime || row.distributionTime |
| @@ -128,11 +154,16 @@ | @@ -128,11 +154,16 @@ | ||
| 128 | 154 | ||
| 129 | <el-table-column | 155 | <el-table-column |
| 130 | label="办理人" | 156 | label="办理人" |
| 131 | - prop="handler" | 157 | + prop="companyEmployeeUserName" |
| 132 | width="100" | 158 | width="100" |
| 133 | align="center" | 159 | align="center" |
| 134 | /> | 160 | /> |
| 135 | - <el-table-column label="保单进度" width="100" prop="orderProgress" /> | 161 | + <el-table-column |
| 162 | + label="保单进度" | ||
| 163 | + width="100" | ||
| 164 | + prop="orderProgress" | ||
| 165 | + align="center" | ||
| 166 | + /> | ||
| 136 | </el-table> | 167 | </el-table> |
| 137 | 168 | ||
| 138 | <pagination | 169 | <pagination |
| @@ -168,6 +199,22 @@ | @@ -168,6 +199,22 @@ | ||
| 168 | </el-row> | 199 | </el-row> |
| 169 | <el-row> | 200 | <el-row> |
| 170 | <el-col :span="12"> | 201 | <el-col :span="12"> |
| 202 | + <el-form-item label="发动机号" prop="engineNumber"> | ||
| 203 | + <el-input v-model="form.engineNumber" placeholder="无" disabled /> | ||
| 204 | + </el-form-item> | ||
| 205 | + </el-col> | ||
| 206 | + <el-col :span="12"> | ||
| 207 | + <el-form-item label="排放毫升量" prop="emissions"> | ||
| 208 | + <el-input | ||
| 209 | + v-model="form.emissions" | ||
| 210 | + disabled | ||
| 211 | + placeholder="请输入车架号" | ||
| 212 | + /> | ||
| 213 | + </el-form-item> | ||
| 214 | + </el-col> | ||
| 215 | + </el-row> | ||
| 216 | + <el-row> | ||
| 217 | + <el-col :span="12"> | ||
| 171 | <el-form-item label="车主姓名" prop="name"> | 218 | <el-form-item label="车主姓名" prop="name"> |
| 172 | <el-input | 219 | <el-input |
| 173 | v-model="form.name" | 220 | v-model="form.name" |
| @@ -188,9 +235,9 @@ | @@ -188,9 +235,9 @@ | ||
| 188 | </el-row> | 235 | </el-row> |
| 189 | <el-row> | 236 | <el-row> |
| 190 | <el-col :span="12"> | 237 | <el-col :span="12"> |
| 191 | - <el-form-item label="登记时间" prop="initialRegistrationTime"> | 238 | + <el-form-item label="登记时间" prop="createTime"> |
| 192 | <el-input | 239 | <el-input |
| 193 | - v-model="form.initialRegistrationTime" | 240 | + v-model="form.createTime" |
| 194 | disabled | 241 | disabled |
| 195 | placeholder="请输入登记时间" | 242 | placeholder="请输入登记时间" |
| 196 | /> | 243 | /> |
| @@ -208,25 +255,17 @@ | @@ -208,25 +255,17 @@ | ||
| 208 | </el-row> | 255 | </el-row> |
| 209 | <el-row> | 256 | <el-row> |
| 210 | <el-col :span="12"> | 257 | <el-col :span="12"> |
| 211 | - <el-form-item label="操作时间" prop="authTime"> | 258 | + <el-form-item label="核定载质量" prop="passengerCapacity"> |
| 212 | <el-input | 259 | <el-input |
| 213 | - v-model="form.authTime" | 260 | + v-model="form.passengerCapacity" |
| 214 | disabled | 261 | disabled |
| 215 | - :placeholder=" | ||
| 216 | - form.companyEmployeeUndertakeTime || form.distributionTime | ||
| 217 | - " | 262 | + placeholder="无" |
| 218 | /> | 263 | /> |
| 219 | </el-form-item> | 264 | </el-form-item> |
| 220 | </el-col> | 265 | </el-col> |
| 221 | <el-col :span="12"> | 266 | <el-col :span="12"> |
| 222 | - <el-form-item label="操作人员" prop="editAuth"> | ||
| 223 | - <el-input | ||
| 224 | - disabled | ||
| 225 | - :placeholder=" | ||
| 226 | - form.associationEmployeeUserName || | ||
| 227 | - form.companyEmployeeUserName | ||
| 228 | - " | ||
| 229 | - /> | 267 | + <el-form-item label="核定载人数" prop="passengersNumber"> |
| 268 | + <el-input v-model="form.passengersNumber" disabled /> | ||
| 230 | </el-form-item> | 269 | </el-form-item> |
| 231 | </el-col> | 270 | </el-col> |
| 232 | </el-row> | 271 | </el-row> |
| @@ -236,27 +275,65 @@ | @@ -236,27 +275,65 @@ | ||
| 236 | <el-input | 275 | <el-input |
| 237 | v-model="form.distributionMechanism" | 276 | v-model="form.distributionMechanism" |
| 238 | disabled | 277 | disabled |
| 239 | - placeholder="请输入登记时间" | 278 | + placeholder="无" |
| 240 | /> | 279 | /> |
| 241 | </el-form-item> | 280 | </el-form-item> |
| 242 | </el-col> | 281 | </el-col> |
| 243 | <el-col :span="12"> | 282 | <el-col :span="12"> |
| 244 | <el-form-item label="承保公司" prop="companyName"> | 283 | <el-form-item label="承保公司" prop="companyName"> |
| 284 | + <el-input v-model="form.companyName" disabled placeholder="无" /> | ||
| 285 | + </el-form-item> | ||
| 286 | + </el-col> | ||
| 287 | + </el-row> | ||
| 288 | + <el-row> | ||
| 289 | + <el-col :span="12"> | ||
| 290 | + <el-form-item label="车辆品牌" prop="vehicleBrand"> | ||
| 291 | + <el-input | ||
| 292 | + v-model="form.vehicleBrand" | ||
| 293 | + disabled | ||
| 294 | + placeholder="车辆品牌" | ||
| 295 | + /> | ||
| 296 | + </el-form-item> | ||
| 297 | + </el-col> | ||
| 298 | + <el-col :span="12"> | ||
| 299 | + <el-form-item label="车辆型号" prop="vehicleModel"> | ||
| 300 | + <el-input v-model="form.vehicleModel" disabled placeholder="无" /> | ||
| 301 | + </el-form-item> | ||
| 302 | + </el-col> | ||
| 303 | + </el-row> | ||
| 304 | + <el-row> | ||
| 305 | + <el-col :span="12"> | ||
| 306 | + <el-form-item label="保险需求" prop="requirements"> | ||
| 307 | + <el-input v-model="form.requirements" disabled placeholder="无" /> | ||
| 308 | + </el-form-item> | ||
| 309 | + </el-col> | ||
| 310 | + <el-col :span="12"> | ||
| 311 | + <el-form-item label="号牌种类" prop="lincensePlateType"> | ||
| 245 | <el-input | 312 | <el-input |
| 246 | - v-model="form.companyName" | 313 | + v-model="form.lincensePlateType" |
| 247 | disabled | 314 | disabled |
| 248 | - placeholder="请输入承保公司" | 315 | + placeholder="无" |
| 249 | /> | 316 | /> |
| 250 | </el-form-item> | 317 | </el-form-item> |
| 251 | </el-col> | 318 | </el-col> |
| 252 | </el-row> | 319 | </el-row> |
| 320 | + <el-row> | ||
| 321 | + <el-col :span="12"> | ||
| 322 | + <el-form-item label="使用性质" prop="vehicleNature"> | ||
| 323 | + <el-input | ||
| 324 | + v-model="form.vehicleNature" | ||
| 325 | + disabled | ||
| 326 | + placeholder="无" | ||
| 327 | + /> | ||
| 328 | + </el-form-item> | ||
| 329 | + </el-col> | ||
| 330 | + <el-col :span="12"> | ||
| 331 | + <el-form-item label="车辆类型" prop="vehicleType"> | ||
| 332 | + <el-input v-model="form.vehicleType" disabled placeholder="无" /> | ||
| 333 | + </el-form-item> | ||
| 334 | + </el-col> | ||
| 335 | + </el-row> | ||
| 253 | </el-form> | 336 | </el-form> |
| 254 | - <template #footer> | ||
| 255 | - <div class="dialog-footer"> | ||
| 256 | - <el-button @click="open = false">取消</el-button> | ||
| 257 | - <el-button type="primary" @click="open = false">确定</el-button> | ||
| 258 | - </div> | ||
| 259 | - </template> | ||
| 260 | </el-dialog> | 337 | </el-dialog> |
| 261 | </div> | 338 | </div> |
| 262 | </template> | 339 | </template> |
| @@ -150,6 +150,7 @@ | @@ -150,6 +150,7 @@ | ||
| 150 | </el-table-column> | 150 | </el-table-column> |
| 151 | </el-table> | 151 | </el-table> |
| 152 | 152 | ||
| 153 | + <!-- 页码 --> | ||
| 153 | <pagination | 154 | <pagination |
| 154 | v-show="total > 0" | 155 | v-show="total > 0" |
| 155 | :total="total" | 156 | :total="total" |
| @@ -227,6 +228,7 @@ | @@ -227,6 +228,7 @@ | ||
| 227 | >{{ item.userName }}</el-radio | 228 | >{{ item.userName }}</el-radio |
| 228 | > | 229 | > |
| 229 | </el-radio-group> | 230 | </el-radio-group> |
| 231 | + <div v-show="transferOptions.length === 0">暂无其他员工</div> | ||
| 230 | </div> | 232 | </div> |
| 231 | <template #footer> | 233 | <template #footer> |
| 232 | <div class="dialog-footer"> | 234 | <div class="dialog-footer"> |
| @@ -244,7 +246,14 @@ | @@ -244,7 +246,14 @@ | ||
| 244 | append-to-body | 246 | append-to-body |
| 245 | > | 247 | > |
| 246 | <el-form :model="FeedbackForm" ref="policyRef" label-width="100px"> | 248 | <el-form :model="FeedbackForm" ref="policyRef" label-width="100px"> |
| 247 | - <el-form-item label="保单回馈" prop="progress"> | 249 | + <el-form-item label="商险单号" prop="progress"> |
| 250 | + <el-input | ||
| 251 | + v-model="FeedbackForm.shoppolicynumber" | ||
| 252 | + placeholder="请输入保单号" | ||
| 253 | + :disabled="hasRole" | ||
| 254 | + /> | ||
| 255 | + </el-form-item> | ||
| 256 | + <el-form-item label="交强险单号" prop="progress"> | ||
| 248 | <el-input | 257 | <el-input |
| 249 | v-model="FeedbackForm.policynumber" | 258 | v-model="FeedbackForm.policynumber" |
| 250 | placeholder="请输入保单号" | 259 | placeholder="请输入保单号" |
| @@ -488,7 +497,11 @@ const form = ref({}); | @@ -488,7 +497,11 @@ const form = ref({}); | ||
| 488 | const showFeedback = ref(false); | 497 | const showFeedback = ref(false); |
| 489 | const transferShow = ref(false); | 498 | const transferShow = ref(false); |
| 490 | const transferForm = ref({}); | 499 | const transferForm = ref({}); |
| 491 | -const FeedbackForm = ref({}); | 500 | +const FeedbackForm = ref({ |
| 501 | + shoppolicynumber: "", | ||
| 502 | + policynumber: "", | ||
| 503 | + message: "", | ||
| 504 | +}); | ||
| 492 | const getParams = reactive({ | 505 | const getParams = reactive({ |
| 493 | pageNum: 1, | 506 | pageNum: 1, |
| 494 | pageSize: 100, | 507 | pageSize: 100, |
-
请 注册 或 登录 后发表评论