作者 xiaoqiu

已完成接口内容,待处理需筛选

@@ -136,6 +136,6 @@ export function getCompanyTip() { @@ -136,6 +136,6 @@ export function getCompanyTip() {
136 export function getCount() { 136 export function getCount() {
137 return request({ 137 return request({
138 url: `/system/rule/getCounting`, 138 url: `/system/rule/getCounting`,
139 - method: 'post' 139 + method: 'get'
140 }) 140 })
141 } 141 }
  1 +<template>
  2 + <div class="app-container">
  3 + <!-- 筛选条件 -->
  4 + <el-form
  5 + :model="queryParams"
  6 + ref="queryRef"
  7 + v-show="showSearch"
  8 + :inline="true"
  9 + label-width="68px"
  10 + >
  11 + <el-form-item label="车主姓名" prop="name">
  12 + <el-input
  13 + v-model="queryParams.name"
  14 + placeholder="请输入名称"
  15 + clearable
  16 + style="width: 200px"
  17 + @keyup.enter="handleQuery"
  18 + />
  19 + </el-form-item>
  20 + <el-form-item label="车牌号" prop="licensePlate">
  21 + <el-input
  22 + v-model="queryParams.licensePlate"
  23 + placeholder="请输入车牌号"
  24 + clearable
  25 + style="width: 200px"
  26 + @keyup.enter="handleQuery"
  27 + />
  28 + </el-form-item>
  29 + <el-form-item label="操作人员" prop="association">
  30 + <el-input
  31 + v-model="queryParams.association"
  32 + placeholder="填写操作人员"
  33 + clearable
  34 + style="width: 200px"
  35 + @keyup.enter="handleQuery"
  36 + />
  37 + </el-form-item>
  38 + <el-form-item>
  39 + <el-button type="primary" icon="Search" @click="handleQuery"
  40 + >查询</el-button
  41 + >
  42 + <el-button icon="Refresh" @click="resetQuery">重置</el-button>
  43 + </el-form-item>
  44 + </el-form>
  45 +
  46 + <!-- 表格数据 -->
  47 + <el-table v-loading="loading" :data="policyList" @row-click="handleUpdate">
  48 + <el-table-column type="selection" width="55" align="center" />
  49 + <el-table-column label="序号" type="index" width="55" align="center" />
  50 + <el-table-column
  51 + label="登记时间"
  52 + prop="createTime"
  53 + width="160"
  54 + align="center"
  55 + />
  56 + <el-table-column
  57 + label="车牌号"
  58 + prop="licensePlateNumber"
  59 + width="150"
  60 + align="center"
  61 + />
  62 + <el-table-column
  63 + label="车架号"
  64 + prop="frameNumber"
  65 + align="center"
  66 + :show-overflow-tooltip="true"
  67 + />
  68 + <el-table-column
  69 + label="企业名称"
  70 + prop="businessName"
  71 + width="100"
  72 + align="center"
  73 + />
  74 + <el-table-column
  75 + label="统一信用代码"
  76 + prop="uniformCreditCode"
  77 + width="180"
  78 + align="center"
  79 + />
  80 + <el-table-column
  81 + label="联系电话"
  82 + prop="businessPhone"
  83 + width="150"
  84 + align="center"
  85 + />
  86 + <el-table-column
  87 + label="作废时间"
  88 + align="center"
  89 + prop="distributionTime"
  90 + width="160"
  91 + />
  92 + <el-table-column
  93 + label="操作人员"
  94 + align="center"
  95 + prop="associationEmployeeUserName"
  96 + width="120"
  97 + />
  98 + <el-table-column label="作废备注" width="120" fixed="right" prop="remark">
  99 + <template #default>
  100 + <el-button type="primary">查阅</el-button>
  101 + </template>
  102 + </el-table-column>
  103 + </el-table>
  104 +
  105 + <pagination
  106 + v-show="total > 0"
  107 + :total="total"
  108 + v-model:page="queryParams.pageNum"
  109 + v-model:limit="queryParams.pageSize"
  110 + @pagination="getList"
  111 + />
  112 +
  113 + <el-dialog v-model="open" title="保单信息" width="700" append-to-body>
  114 + <el-form :model="form" ref="policyRef" label-width="100px">
  115 + <el-row>
  116 + <el-col :span="12">
  117 + <el-form-item label="车牌号" prop="licensePlateNumber">
  118 + <el-input
  119 + v-model="form.licensePlateNumber"
  120 + placeholder="请输入车牌号"
  121 + disabled
  122 + />
  123 + </el-form-item>
  124 + </el-col>
  125 + <el-col :span="12">
  126 + <el-form-item label="车架号" prop="frameNumber">
  127 + <el-input
  128 + v-model="form.frameNumber"
  129 + disabled
  130 + placeholder="请输入车架号"
  131 + />
  132 + </el-form-item>
  133 + </el-col>
  134 + </el-row>
  135 + <el-row>
  136 + <el-col :span="12">
  137 + <el-form-item label="企业名称" prop="businessName">
  138 + <el-input
  139 + v-model="form.businessName"
  140 + :disabled="!hasRole"
  141 + placeholder="请输入企业名称"
  142 + />
  143 + </el-form-item>
  144 + </el-col>
  145 + <el-col :span="12">
  146 + <el-form-item label="联系电话" prop="businessPhone">
  147 + <el-input
  148 + v-model="form.businessPhone"
  149 + :disabled="!hasRole"
  150 + placeholder="请输入联系电话"
  151 + />
  152 + </el-form-item>
  153 + </el-col>
  154 + </el-row>
  155 + <el-row>
  156 + <el-col :span="12">
  157 + <el-form-item label="发动机号" prop="engineNumber">
  158 + <el-input v-model="form.engineNumber" placeholder="无" disabled />
  159 + </el-form-item>
  160 + </el-col>
  161 + <el-col :span="12">
  162 + <el-form-item label="上年承保公司" prop="sysDeptName">
  163 + <el-input
  164 + v-model="form.sysDeptName"
  165 + disabled
  166 + placeholder="请输入上年承保公司"
  167 + />
  168 + </el-form-item>
  169 + </el-col>
  170 + </el-row>
  171 + <el-row>
  172 + <el-col :span="12">
  173 + <el-form-item label="信用代码" prop="uniformCreditCode">
  174 + <el-input
  175 + v-model="form.uniformCreditCode"
  176 + :disabled="!hasRole"
  177 + placeholder="请输入信用代码"
  178 + />
  179 + </el-form-item>
  180 + </el-col>
  181 + <el-col :span="12">
  182 + <el-form-item label="保险需求" prop="requirements">
  183 + <el-input v-model="form.requirements" disabled placeholder="无" />
  184 + </el-form-item>
  185 + </el-col>
  186 + <el-col :span="12">
  187 + <el-form-item label="使用性质" prop="vehicleNature">
  188 + <el-input
  189 + v-model="form.vehicleNature"
  190 + disabled
  191 + placeholder="无"
  192 + />
  193 + </el-form-item>
  194 + </el-col>
  195 + </el-row>
  196 + <el-form-item label="作废原因" prop="progress">
  197 + <QuillEditor :value="form.deprecatedReason" @updateValue="getMsg" />
  198 + </el-form-item>
  199 + </el-form>
  200 + </el-dialog>
  201 + </div>
  202 +</template>
  203 +
  204 +<script setup>
  205 +import { queryDeprecatedList, queryDefeatContent } from "@/api/policy";
  206 +const { proxy } = getCurrentInstance();
  207 +const loading = ref(false);
  208 +const total = ref(5);
  209 +const open = ref(false);
  210 +const form = ref({});
  211 +const showSearch = ref(true);
  212 +const queryParams = reactive({
  213 + pageNum: 1,
  214 + pageSize: 10,
  215 + name: "",
  216 + type: 1,
  217 + licensePlate: "",
  218 + association: "",
  219 +});
  220 +
  221 +const policyList = ref([]);
  222 +
  223 +/** 重置操作表单 */
  224 +function reset() {
  225 + proxy.resetForm("policyRef");
  226 +}
  227 +
  228 +/** 查阅操作 */
  229 +const handleUpdate = async (row) => {
  230 + reset();
  231 + form.value = row;
  232 + const { data } = await queryDefeatContent({
  233 + processInstanceId: row.processInstanceId,
  234 + type: 2,
  235 + });
  236 + form.value.deprecatedReason = data.message;
  237 + open.value = true;
  238 +};
  239 +const getList = async () => {
  240 + loading.value = true;
  241 + const res = await queryDeprecatedList(queryParams);
  242 + policyList.value = res.rows;
  243 + total.value = res.total;
  244 + loading.value = false;
  245 +};
  246 +
  247 +/** 搜索按钮操作 */
  248 +function handleQuery() {
  249 + queryParams.pageNum = 1;
  250 + getList();
  251 +}
  252 +/** 重置按钮操作 */
  253 +function resetQuery() {
  254 + proxy.resetForm("queryRef");
  255 + handleQuery();
  256 +}
  257 +const getMsg = (val) => {
  258 + console.log(val);
  259 +};
  260 +
  261 +getList();
  262 +</script>
  263 +
  264 +<style></style>
  1 +<template>
  2 + <div class="app-container">
  3 + <!-- 筛选条件 -->
  4 + <el-form
  5 + :model="queryParams"
  6 + ref="queryRef"
  7 + v-show="showSearch"
  8 + :inline="true"
  9 + label-width="68px"
  10 + >
  11 + <el-form-item label="用户姓名" prop="name">
  12 + <el-input
  13 + v-model="queryParams.name"
  14 + placeholder="请输入名称"
  15 + clearable
  16 + style="width: 200px"
  17 + @keyup.enter="handleQuery"
  18 + />
  19 + </el-form-item>
  20 + <el-form-item label="车牌号" prop="licensePlate">
  21 + <el-input
  22 + v-model="queryParams.licensePlate"
  23 + placeholder="请输入车牌号"
  24 + clearable
  25 + style="width: 200px"
  26 + @keyup.enter="handleQuery"
  27 + />
  28 + </el-form-item>
  29 + <el-form-item label="操作人员" prop="association">
  30 + <el-input
  31 + v-model="queryParams.association"
  32 + placeholder="填写操作人员"
  33 + clearable
  34 + style="width: 200px"
  35 + @keyup.enter="handleQuery"
  36 + />
  37 + </el-form-item>
  38 + <el-form-item label="分配机制" prop="associationapprovetype">
  39 + <el-select
  40 + v-model="queryParams.associationapprovetype"
  41 + placeholder="系统分配"
  42 + clearable
  43 + style="width: 200px"
  44 + >
  45 + <el-option
  46 + v-for="dict in options"
  47 + :key="dict.value"
  48 + :label="dict.label"
  49 + :value="dict.value"
  50 + />
  51 + </el-select>
  52 + </el-form-item>
  53 + <el-form-item>
  54 + <el-button type="primary" icon="Search" @click="handleQuery"
  55 + >查询</el-button
  56 + >
  57 + <el-button icon="Refresh" @click="resetQuery">重置</el-button>
  58 + </el-form-item>
  59 + </el-form>
  60 +
  61 + <!-- 表格数据 -->
  62 + <el-table v-loading="loading" :data="policyList">
  63 + <el-table-column label="登记时间" width="160" align="center">
  64 + <template #default="{ row }">
  65 + <span>{{ row.initialRegistration || row.createTime }}</span>
  66 + </template>
  67 + </el-table-column>
  68 + <el-table-column
  69 + label="车牌号"
  70 + prop="licensePlateNumber"
  71 + width="150"
  72 + align="center"
  73 + />
  74 + <el-table-column
  75 + label="车架号"
  76 + prop="frameNumber"
  77 + width="240"
  78 + align="center"
  79 + />
  80 + <el-table-column
  81 + label="企业名称"
  82 + prop="businessName"
  83 + width="100"
  84 + align="center"
  85 + />
  86 + <el-table-column
  87 + label="统一信用代码"
  88 + prop="uniformCreditCode"
  89 + width="180"
  90 + align="center"
  91 + />
  92 + <el-table-column
  93 + label="联系电话"
  94 + prop="businessPhone"
  95 + width="150"
  96 + align="center"
  97 + />
  98 + <el-table-column
  99 + label="分配机制"
  100 + width="120"
  101 + prop="distributionMechanism"
  102 + align="center"
  103 + />
  104 + <el-table-column
  105 + label="承保公司"
  106 + prop="companyName"
  107 + width="150"
  108 + align="center"
  109 + />
  110 + <el-table-column label="操作人员" width="150" align="center">
  111 + <template #default="{ row }">
  112 + <span>{{
  113 + row.associationEmployeeUserName || row.companyEmployeeUserName
  114 + }}</span>
  115 + </template>
  116 + </el-table-column>
  117 + <el-table-column
  118 + label="办结时间"
  119 + prop="policyTime"
  120 + width="160"
  121 + align="center"
  122 + />
  123 + <el-table-column
  124 + label="办理人"
  125 + prop="companyEmployeeUserName"
  126 + width="150"
  127 + align="center"
  128 + />
  129 + <el-table-column
  130 + label="保单状态"
  131 + width="100"
  132 + prop="statue"
  133 + align="center"
  134 + >
  135 + <template #default="{ row }">
  136 + <span
  137 + :style="{ color: row.status === '进行中' ? '#409EFF' : '#67C23A' }"
  138 + >{{ row.policyStatus }}</span
  139 + >
  140 + </template>
  141 + </el-table-column>
  142 + <el-table-column
  143 + label="保单回馈"
  144 + fixed="right"
  145 + width="100"
  146 + show-overflow-tooltip
  147 + prop="Feedback"
  148 + >
  149 + <template #default="{ row }">
  150 + <el-button type="primary" @click="lookRemark(row)">查阅</el-button>
  151 + </template>
  152 + </el-table-column>
  153 + </el-table>
  154 +
  155 + <pagination
  156 + v-show="total > 0"
  157 + :total="total"
  158 + v-model:page="queryParams.pageNum"
  159 + v-model:limit="queryParams.pageSize"
  160 + @pagination="getList"
  161 + />
  162 + <!-- 查看回馈弹出框 -->
  163 + <el-dialog v-model="open" title="保单信息" width="700" append-to-body>
  164 + <el-form :model="form" ref="policyRef" label-width="100px">
  165 + <el-row>
  166 + <el-col :span="12">
  167 + <el-form-item label="车牌号" prop="licensePlateNumber">
  168 + <el-input
  169 + v-model="form.licensePlateNumber"
  170 + placeholder="请输入车牌号"
  171 + disabled
  172 + />
  173 + </el-form-item>
  174 + </el-col>
  175 + <el-col :span="12">
  176 + <el-form-item label="车架号" prop="frameNumber">
  177 + <el-input
  178 + v-model="form.frameNumber"
  179 + disabled
  180 + placeholder="请输入车架号"
  181 + />
  182 + </el-form-item>
  183 + </el-col>
  184 + </el-row>
  185 + <el-row>
  186 + <el-col :span="12">
  187 + <el-form-item label="企业名称" prop="businessName">
  188 + <el-input
  189 + v-model="form.businessName"
  190 + :disabled="!hasRole"
  191 + placeholder="请输入企业名称"
  192 + />
  193 + </el-form-item>
  194 + </el-col>
  195 + <el-col :span="12">
  196 + <el-form-item label="联系电话" prop="businessPhone">
  197 + <el-input
  198 + v-model="form.businessPhone"
  199 + :disabled="!hasRole"
  200 + placeholder="请输入联系电话"
  201 + />
  202 + </el-form-item>
  203 + </el-col>
  204 + </el-row>
  205 + <el-row>
  206 + <el-col :span="12">
  207 + <el-form-item label="发动机号" prop="engineNumber">
  208 + <el-input v-model="form.engineNumber" placeholder="无" disabled />
  209 + </el-form-item>
  210 + </el-col>
  211 + <el-col :span="12">
  212 + <el-form-item label="上年承保公司" prop="sysDeptName">
  213 + <el-input
  214 + v-model="form.sysDeptName"
  215 + disabled
  216 + placeholder="请输入上年承保公司"
  217 + />
  218 + </el-form-item>
  219 + </el-col>
  220 + </el-row>
  221 + <el-row>
  222 + <el-col :span="12">
  223 + <el-form-item label="分配机制" prop="distributionMechanism">
  224 + <el-input
  225 + v-model="form.distributionMechanism"
  226 + disabled
  227 + placeholder="无"
  228 + />
  229 + </el-form-item>
  230 + </el-col>
  231 + <el-col :span="12">
  232 + <el-form-item label="信用代码" prop="uniformCreditCode">
  233 + <el-input
  234 + v-model="form.uniformCreditCode"
  235 + :disabled="!hasRole"
  236 + placeholder="请输入信用代码"
  237 + />
  238 + </el-form-item>
  239 + </el-col>
  240 + </el-row>
  241 + <el-row>
  242 + <el-col :span="12">
  243 + <el-form-item label="保险需求" prop="requirements">
  244 + <el-input
  245 + v-model="form.requirements"
  246 + disabled
  247 + placeholder="请输入办理人"
  248 + />
  249 + </el-form-item>
  250 + </el-col>
  251 + <el-col :span="12">
  252 + <el-form-item label="使用性质" prop="vehicleNature">
  253 + <el-input
  254 + v-model="form.vehicleNature"
  255 + disabled
  256 + placeholder="无"
  257 + />
  258 + </el-form-item>
  259 + </el-col>
  260 + </el-row>
  261 + <el-row>
  262 + <el-col :span="12">
  263 + <el-form-item label="强险单号" prop="strongInsurancePolicyNumber">
  264 + <el-input
  265 + v-model="form.strongInsurancePolicyNumber"
  266 + disabled
  267 + placeholder="请输入承保单号"
  268 + />
  269 + </el-form-item>
  270 + </el-col>
  271 + <el-col :span="12">
  272 + <el-form-item
  273 + label="商险单号"
  274 + prop="commercialInsurancePolicyNumber"
  275 + >
  276 + <el-input
  277 + v-model="form.commercialInsurancePolicyNumber"
  278 + disabled
  279 + placeholder="请输入承保单号"
  280 + />
  281 + </el-form-item>
  282 + </el-col>
  283 + </el-row>
  284 + <el-form-item label="保单回馈" prop="progress">
  285 + <QuillEditor :value="form.message" @updateValue="getMsg" />
  286 + </el-form-item>
  287 + </el-form>
  288 + </el-dialog>
  289 + </div>
  290 +</template>
  291 +
  292 +<script setup>
  293 +import { queryEndedList, queryResult } from "@/api/policy";
  294 +const { proxy } = getCurrentInstance();
  295 +const loading = ref(false);
  296 +const total = ref(5);
  297 +const open = ref(false);
  298 +const form = ref({});
  299 +const timer = ref(null);
  300 +const showSearch = ref(true);
  301 +const hasRole = computed(() => {
  302 + return !proxy.$auth.hasRole("associationemployee");
  303 +});
  304 +const queryParams = reactive({
  305 + pageNum: 1,
  306 + pageSize: 10,
  307 + name: "",
  308 + type: 1,
  309 + licensePlate: "",
  310 + association: "",
  311 + associationapprovetype: "",
  312 +});
  313 +
  314 +const options = [
  315 + {
  316 + value: 0,
  317 + label: "系统分配",
  318 + },
  319 + {
  320 + value: 1,
  321 + label: "人工分配",
  322 + },
  323 +];
  324 +
  325 +const policyList = ref([]);
  326 +
  327 +/** 多选框选中数据 */
  328 +function handleSelectionChange(selection) {
  329 + // ids.value = selection.map(item => item.roleId);
  330 + // single.value = selection.length != 1;
  331 + // multiple.value = !selection.length;
  332 + console.log(selection);
  333 +}
  334 +/** 重置操作表单 */
  335 +function reset() {
  336 + proxy.resetForm("policyRef");
  337 +}
  338 +
  339 +/**查看保单回馈 */
  340 +function lookRemark(row) {
  341 + reset();
  342 + queryResult({ processInstanceId: row.processInstanceId }).then((res) => {
  343 + form.value = row;
  344 + form.value.strongInsurancePolicyNumber =
  345 + res?.data?.strongInsurancePolicyNumber;
  346 + form.value.commercialInsurancePolicyNumber =
  347 + res?.data?.commercialInsurancePolicyNumber;
  348 + form.value.message = res?.data?.message;
  349 + open.value = true;
  350 + });
  351 +}
  352 +const getList = async () => {
  353 + loading.value = true;
  354 + const res = await queryEndedList(queryParams);
  355 + policyList.value = res.rows;
  356 + total.value = res.total;
  357 + loading.value = false;
  358 +};
  359 +
  360 +/** 搜索按钮操作 */
  361 +function handleQuery() {
  362 + queryParams.pageNum = 1;
  363 + getList();
  364 +}
  365 +/** 重置按钮操作 */
  366 +function resetQuery() {
  367 + proxy.resetForm("queryRef");
  368 + handleQuery();
  369 +}
  370 +const getMsg = (val) => {
  371 + clearTimeout(timer.value);
  372 + timer.value = setTimeout(() => {
  373 + form.value.message = val;
  374 + }, 1000);
  375 +};
  376 +getList();
  377 +</script>
  378 +
  379 +<style></style>
  1 +<template>
  2 + <div class="app-container">
  3 + <!-- 表格数据 -->
  4 + <el-table v-loading="loading" :data="policyList" @row-click="handleUpdate">
  5 + <el-table-column label="序号" width="55" type="index" />
  6 + <el-table-column
  7 + label="登记时间"
  8 + width="160"
  9 + prop="createTime"
  10 + align="center"
  11 + />
  12 + <el-table-column
  13 + label="车牌号"
  14 + prop="licensePlateNumber"
  15 + align="center"
  16 + />
  17 + <el-table-column
  18 + label="车架号"
  19 + prop="frameNumber"
  20 + align="center"
  21 + :show-overflow-tooltip="true"
  22 + />
  23 + <el-table-column
  24 + label="发动机号"
  25 + prop="engineNumber"
  26 + align="center"
  27 + :show-overflow-tooltip="true"
  28 + />
  29 + <el-table-column label="车主姓名" prop="name" align="center" />
  30 + <el-table-column label="联系电话" prop="phone" align="center" />
  31 + <el-table-column label="是否新能源" prop="isNewEnergy" align="center" />
  32 + <el-table-column label="上年承保公司" prop="sysDeptName" align="center" />
  33 + <el-table-column label="保单进度" prop="orderProgress" align="center" />
  34 + <el-table-column label="保单状态" prop="policyStatus" align="center" />
  35 + </el-table>
  36 +
  37 + <pagination
  38 + v-show="total > 0"
  39 + :total="total"
  40 + v-model:page="queryParams.pageNum"
  41 + v-model:limit="queryParams.pageSize"
  42 + @pagination="getList"
  43 + />
  44 +
  45 + <!-- 转办分配对话框 -->
  46 + <el-dialog
  47 + v-model="transferShow"
  48 + title="请选择人员:"
  49 + width="500"
  50 + append-to-body
  51 + >
  52 + <div class="company_box">
  53 + <el-radio-group v-model="transferForm.username">
  54 + <el-radio
  55 + v-for="item in transferOptions"
  56 + :key="item.userName"
  57 + :label="item.userName"
  58 + >{{ item.userName }}</el-radio
  59 + >
  60 + </el-radio-group>
  61 + <div v-show="transferOptions.length === 0">暂无其他员工</div>
  62 + </div>
  63 + <template #footer>
  64 + <div class="dialog-footer">
  65 + <el-button @click="companyShow = false">取消</el-button>
  66 + <el-button type="primary" @click="submitTransfer">确定</el-button>
  67 + </div>
  68 + </template>
  69 + </el-dialog>
  70 +
  71 + <!-- 编辑对话框 -->
  72 + <el-dialog v-model="open" :title="title" width="700" append-to-body>
  73 + <el-form :model="form" ref="policyRef" label-width="100px">
  74 + <el-row>
  75 + <el-col :span="12">
  76 + <el-form-item label="车牌号" prop="licensePlateNumber">
  77 + <el-input
  78 + v-model="form.licensePlateNumber"
  79 + placeholder="请输入车牌号"
  80 + disabled
  81 + />
  82 + </el-form-item>
  83 + </el-col>
  84 + <el-col :span="12">
  85 + <el-form-item label="车架号" prop="frameNumber">
  86 + <el-input
  87 + v-model="form.frameNumber"
  88 + disabled
  89 + placeholder="请输入车架号"
  90 + />
  91 + </el-form-item>
  92 + </el-col>
  93 + </el-row>
  94 + <el-row>
  95 + <el-col :span="12">
  96 + <el-form-item label="车主姓名" prop="name">
  97 + <el-input
  98 + v-model="form.name"
  99 + disabled
  100 + placeholder="请输入车主姓名"
  101 + />
  102 + </el-form-item>
  103 + </el-col>
  104 + <el-col :span="12">
  105 + <el-form-item label="联系电话" prop="phone">
  106 + <el-input
  107 + v-model="form.phone"
  108 + disabled
  109 + placeholder="请输入联系电话"
  110 + />
  111 + </el-form-item>
  112 + </el-col>
  113 + </el-row>
  114 + <el-row>
  115 + <el-col :span="12">
  116 + <el-form-item label="发动机号" prop="engineNumber">
  117 + <el-input v-model="form.engineNumber" placeholder="无" disabled />
  118 + </el-form-item>
  119 + </el-col>
  120 + <el-col :span="12">
  121 + <el-form-item label="上年承保公司" prop="sysDeptName">
  122 + <el-input
  123 + v-model="form.sysDeptName"
  124 + disabled
  125 + placeholder="请输入上年承保公司"
  126 + />
  127 + </el-form-item>
  128 + </el-col>
  129 + </el-row>
  130 + <el-row>
  131 + <el-col :span="12">
  132 + <el-form-item label="保险需求" prop="requirements">
  133 + <el-input v-model="form.requirements" disabled placeholder="无" />
  134 + </el-form-item>
  135 + </el-col>
  136 + <el-col :span="12">
  137 + <el-form-item label="使用性质" prop="vehicleNature">
  138 + <el-input
  139 + v-model="form.vehicleNature"
  140 + disabled
  141 + placeholder="无"
  142 + />
  143 + </el-form-item>
  144 + </el-col>
  145 + </el-row>
  146 + </el-form>
  147 + </el-dialog>
  148 + </div>
  149 +</template>
  150 +
  151 +<script setup>
  152 +import { queryPengdingList, getUserList } from "@/api/policy/index";
  153 +const loading = ref(false);
  154 +const { proxy } = getCurrentInstance();
  155 +const total = ref(0);
  156 +const title = ref("保单信息");
  157 +const open = ref(false);
  158 +const transferShow = ref(false);
  159 +const form = ref({});
  160 +const transferForm = ref({});
  161 +const transferOptions = ref([]);
  162 +const rules = ref({
  163 + carNum: [{ required: true, message: "车牌号不能为空", trigger: "blur" }],
  164 + frameNum: [{ required: true, message: "车架号不能为空", trigger: "blur" }],
  165 + name: [{ required: true, message: "车主姓名不能为空", trigger: "blur" }],
  166 + createTime: [{ required: true, message: "日期不能为空", trigger: "blur" }],
  167 + phone: [
  168 + {
  169 + pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
  170 + message: "请输入正确的手机号码",
  171 + trigger: "blur",
  172 + },
  173 + ],
  174 +});
  175 +const companyShow = ref(false);
  176 +const queryParams = reactive({
  177 + pageNum: 1,
  178 + pageSize: 10,
  179 + type: 1,
  180 +});
  181 +const policyList = ref([]);
  182 +
  183 +/** 重置操作表单 */
  184 +function reset() {
  185 + proxy.resetForm("policyRef");
  186 +}
  187 +
  188 +// 获取处理的列表
  189 +const getList = async () => {
  190 + loading.value = true;
  191 + const { rows, total: all } = await queryPengdingList(queryParams);
  192 + policyList.value = rows;
  193 + total.value = all;
  194 + loading.value = false;
  195 +};
  196 +
  197 +// 转办或分配
  198 +const handleSharing = (id) => {
  199 + transferForm.value.taskId = id;
  200 + getUser();
  201 + transferShow.value = true;
  202 +};
  203 +
  204 +// 获取人员列表
  205 +const getUser = async () => {
  206 + const { data } = await getUserList();
  207 + transferOptions.value = data;
  208 +};
  209 +
  210 +/** 提交通过分配转办人员 */
  211 +function submitTransfer() {
  212 + const data = {
  213 + username: transferForm.value.username,
  214 + };
  215 + const taskId = transferForm.value.taskId;
  216 + transfer(data, taskId).then((res) => {
  217 + transferShow.value = false;
  218 + getList();
  219 + proxy.$modal.msgSuccess("保单已分配成功");
  220 + });
  221 +}
  222 +const handleUpdate = (row) => {
  223 + reset();
  224 + form.value = row;
  225 + // isCustom.value = data.isCustomizeBrandAndModel == "0";
  226 + open.value = true;
  227 +};
  228 +getList();
  229 +</script>
  230 +
  231 +<style lang="scss" scoped>
  232 +::v-deep(.el-radio-group) {
  233 + align-items: start;
  234 + flex-direction: column;
  235 +}
  236 +.header_top {
  237 + display: flex;
  238 + align-items: center;
  239 + gap: 30px;
  240 + margin-bottom: 20px;
  241 +}
  242 +</style>
  1 +<template>
  2 + <div class="app-container">
  3 + <!-- 筛选条件 -->
  4 + <el-form
  5 + :model="queryParams"
  6 + ref="queryRef"
  7 + v-show="showSearch"
  8 + :inline="true"
  9 + label-width="68px"
  10 + >
  11 + <el-form-item label="用户姓名" prop="name">
  12 + <el-input
  13 + v-model="queryParams.name"
  14 + placeholder="请输入名称"
  15 + clearable
  16 + style="width: 200px"
  17 + @keyup.enter="handleQuery"
  18 + />
  19 + </el-form-item>
  20 + <el-form-item label="车牌号" prop="licensePlate">
  21 + <el-input
  22 + v-model="queryParams.licensePlate"
  23 + placeholder="请输入车牌号"
  24 + clearable
  25 + style="width: 200px"
  26 + @keyup.enter="handleQuery"
  27 + />
  28 + </el-form-item>
  29 + <el-form-item label="操作人员" prop="association">
  30 + <el-input
  31 + v-model="queryParams.association"
  32 + placeholder="填写操作人员"
  33 + clearable
  34 + style="width: 200px"
  35 + @keyup.enter="handleQuery"
  36 + />
  37 + </el-form-item>
  38 + <el-form-item label="分配机制" prop="associationapprovetype">
  39 + <el-select
  40 + v-model="queryParams.associationapprovetype"
  41 + placeholder="系统分配"
  42 + clearable
  43 + style="width: 200px"
  44 + >
  45 + <el-option
  46 + v-for="dict in options"
  47 + :key="dict.value"
  48 + :label="dict.label"
  49 + :value="dict.value"
  50 + />
  51 + </el-select>
  52 + </el-form-item>
  53 + <el-form-item label="保单进度" prop="orderprogress">
  54 + <el-select
  55 + v-model="queryParams.orderprogress"
  56 + placeholder="选择进度"
  57 + clearable
  58 + style="width: 200px"
  59 + >
  60 + <el-option
  61 + v-for="dict in progressOption"
  62 + :key="dict.value"
  63 + :label="dict.label"
  64 + :value="dict.value"
  65 + />
  66 + </el-select>
  67 + </el-form-item>
  68 + <el-form-item label="保单状态" prop="status">
  69 + <el-select
  70 + v-model="queryParams.status"
  71 + placeholder="选择进度"
  72 + clearable
  73 + style="width: 200px"
  74 + >
  75 + <el-option
  76 + v-for="dict in statusOption"
  77 + :key="dict.value"
  78 + :label="dict.label"
  79 + :value="dict.value"
  80 + />
  81 + </el-select>
  82 + </el-form-item>
  83 + <el-form-item>
  84 + <el-button type="primary" icon="Search" @click="handleQuery"
  85 + >查询</el-button
  86 + >
  87 + <el-button icon="Refresh" @click="resetQuery">重置</el-button>
  88 + </el-form-item>
  89 + </el-form>
  90 +
  91 + <!-- 表格数据 -->
  92 + <el-table v-loading="loading" :data="policyList" @row-click="handleUpdate">
  93 + <el-table-column label="序号" type="index" width="55" />
  94 + <el-table-column
  95 + label="登记时间"
  96 + prop="createTime"
  97 + width="160"
  98 + align="center"
  99 + />
  100 + <el-table-column
  101 + label="车牌号"
  102 + prop="licensePlateNumber"
  103 + width="150"
  104 + align="center"
  105 + />
  106 + <el-table-column
  107 + label="车架号"
  108 + prop="frameNumber"
  109 + width="240"
  110 + align="center"
  111 + />
  112 + <el-table-column
  113 + label="企业名称"
  114 + prop="businessName"
  115 + width="100"
  116 + align="center"
  117 + />
  118 + <el-table-column
  119 + label="统一信用代码"
  120 + prop="uniformCreditCode"
  121 + width="180"
  122 + align="center"
  123 + />
  124 + <el-table-column
  125 + label="联系电话"
  126 + prop="businessPhone"
  127 + width="150"
  128 + align="center"
  129 + />
  130 + <el-table-column
  131 + label="分配机制"
  132 + width="120"
  133 + prop="distributionMechanism"
  134 + align="center"
  135 + />
  136 + <el-table-column
  137 + label="承保公司"
  138 + prop="companyName"
  139 + width="180"
  140 + align="center"
  141 + />
  142 + <el-table-column label="操作人员" width="150" align="center">
  143 + <template #default="{ row }">
  144 + <span>{{
  145 + row.associationEmployeeUserName || row.companyEmployeeUserName
  146 + }}</span>
  147 + </template>
  148 + </el-table-column>
  149 + <el-table-column label="操作时间" width="160" align="center">
  150 + <template #default="{ row }">
  151 + <span>{{
  152 + row.companyEmployeeUndertakeTime || row.distributionTime
  153 + }}</span>
  154 + </template>
  155 + </el-table-column>
  156 +
  157 + <el-table-column
  158 + label="办理人"
  159 + prop="companyEmployeeUserName"
  160 + width="150"
  161 + align="center"
  162 + />
  163 + <el-table-column
  164 + label="保单进度"
  165 + width="100"
  166 + prop="orderProgress"
  167 + align="center"
  168 + />
  169 + <el-table-column
  170 + label="操作"
  171 + v-hasRole="['companyadmin']"
  172 + align="center"
  173 + min-width="120"
  174 + fixed="right"
  175 + >
  176 + <template #default="{ row }">
  177 + <el-button
  178 + type="primary"
  179 + v-show="row.orderProgress !== '已承接'"
  180 + @click.stop="handleTransfer(row.taskId)"
  181 + >分配/转办</el-button
  182 + >
  183 + </template>
  184 + </el-table-column>
  185 + </el-table>
  186 +
  187 + <pagination
  188 + v-show="total > 0"
  189 + :total="total"
  190 + v-model:page="queryParams.pageNum"
  191 + v-model:limit="queryParams.pageSize"
  192 + @pagination="getList"
  193 + />
  194 +
  195 + <!-- 转办分配对话框 -->
  196 + <el-dialog
  197 + v-model="transferShow"
  198 + title="请选择人员:"
  199 + width="500"
  200 + append-to-body
  201 + >
  202 + <div class="company_box">
  203 + <el-radio-group v-model="transferForm.username">
  204 + <el-radio
  205 + v-for="item in transferOptions"
  206 + :key="item.userName"
  207 + :label="item.userName"
  208 + >{{ item.nickName }}</el-radio
  209 + >
  210 + </el-radio-group>
  211 + <div v-show="transferOptions.length === 0">暂无其他员工</div>
  212 + </div>
  213 + <template #footer>
  214 + <div class="dialog-footer">
  215 + <el-button @click="transferShow = false">取消</el-button>
  216 + <el-button type="primary" @click="submitTransfer">确定</el-button>
  217 + </div>
  218 + </template>
  219 + </el-dialog>
  220 +
  221 + <!-- 编辑对话框 -->
  222 + <el-dialog v-model="open" title="保单信息" width="700" append-to-body>
  223 + <el-form :model="form" ref="policyRef" label-width="100px">
  224 + <el-row>
  225 + <el-col :span="12">
  226 + <el-form-item label="车牌号" prop="licensePlateNumber">
  227 + <el-input
  228 + v-model="form.licensePlateNumber"
  229 + placeholder="请输入车牌号"
  230 + disabled
  231 + />
  232 + </el-form-item>
  233 + </el-col>
  234 + <el-col :span="12">
  235 + <el-form-item label="车架号" prop="frameNumber">
  236 + <el-input
  237 + v-model="form.frameNumber"
  238 + disabled
  239 + placeholder="请输入车架号"
  240 + />
  241 + </el-form-item>
  242 + </el-col>
  243 + </el-row>
  244 + <el-row>
  245 + <el-col :span="12">
  246 + <el-form-item label="企业名称" prop="businessName">
  247 + <el-input
  248 + v-model="form.businessName"
  249 + :disabled="!hasRole"
  250 + placeholder="请输入企业名称"
  251 + />
  252 + </el-form-item>
  253 + </el-col>
  254 + <el-col :span="12">
  255 + <el-form-item label="联系电话" prop="businessPhone">
  256 + <el-input
  257 + v-model="form.businessPhone"
  258 + :disabled="!hasRole"
  259 + placeholder="请输入联系电话"
  260 + />
  261 + </el-form-item>
  262 + </el-col>
  263 + </el-row>
  264 + <el-row>
  265 + <el-col :span="12">
  266 + <el-form-item label="发动机号" prop="engineNumber">
  267 + <el-input v-model="form.engineNumber" placeholder="无" disabled />
  268 + </el-form-item>
  269 + </el-col>
  270 + <el-col :span="12">
  271 + <el-form-item label="上年承保公司" prop="sysDeptName">
  272 + <el-input
  273 + v-model="form.sysDeptName"
  274 + disabled
  275 + placeholder="请输入上年承保公司"
  276 + />
  277 + </el-form-item>
  278 + </el-col>
  279 + </el-row>
  280 + <el-row>
  281 + <el-col :span="12">
  282 + <el-form-item label="分配机制" prop="distributionMechanism">
  283 + <el-input
  284 + v-model="form.distributionMechanism"
  285 + disabled
  286 + placeholder="无"
  287 + />
  288 + </el-form-item>
  289 + </el-col>
  290 + <el-col :span="12">
  291 + <el-form-item label="信用代码" prop="uniformCreditCode">
  292 + <el-input
  293 + v-model="form.uniformCreditCode"
  294 + :disabled="!hasRole"
  295 + placeholder="请输入信用代码"
  296 + />
  297 + </el-form-item>
  298 + </el-col>
  299 + </el-row>
  300 + <el-row>
  301 + <el-col :span="12">
  302 + <el-form-item label="保险需求" prop="requirements">
  303 + <el-input v-model="form.requirements" disabled placeholder="无" />
  304 + </el-form-item>
  305 + </el-col>
  306 + <el-col :span="12">
  307 + <el-form-item label="使用性质" prop="vehicleNature">
  308 + <el-input
  309 + v-model="form.vehicleNature"
  310 + disabled
  311 + placeholder="无"
  312 + />
  313 + </el-form-item>
  314 + </el-col>
  315 + </el-row>
  316 + </el-form>
  317 + </el-dialog>
  318 + </div>
  319 +</template>
  320 +
  321 +<script setup>
  322 +import { queryOngoingList, getUserList, transfer } from "@/api/policy";
  323 +const { proxy } = getCurrentInstance();
  324 +const loading = ref(false);
  325 +const total = ref(5);
  326 +const open = ref(false);
  327 +const form = ref({});
  328 +const transferForm = ref({});
  329 +const transferShow = ref(false);
  330 +const transferOptions = ref([]);
  331 +const showSearch = ref(true);
  332 +const queryParams = reactive({
  333 + pageNum: 1,
  334 + pageSize: 10,
  335 + name: "",
  336 + licensePlate: "",
  337 + association: "",
  338 + associationapprovetype: "",
  339 + orderprogress: "",
  340 + policystatus: "",
  341 + type: 1,
  342 +});
  343 +
  344 +const progressOption = ref([
  345 + {
  346 + value: 0,
  347 + label: "待承接",
  348 + },
  349 + {
  350 + value: 1,
  351 + label: "已承接",
  352 + },
  353 +]);
  354 +
  355 +const options = [
  356 + {
  357 + value: 0,
  358 + label: "系统分配",
  359 + },
  360 + {
  361 + value: 1,
  362 + label: "人工分配",
  363 + },
  364 +];
  365 +const statusOption = ref([
  366 + {
  367 + value: 0,
  368 + label: "进行中",
  369 + },
  370 + {
  371 + value: 1,
  372 + label: "疑难件",
  373 + },
  374 + {
  375 + value: 2,
  376 + label: "已办结",
  377 + },
  378 +]);
  379 +const policyList = ref([]);
  380 +
  381 +// 获取人员列表
  382 +const getUser = async () => {
  383 + const { data } = await getUserList();
  384 + transferOptions.value = data;
  385 +};
  386 +// 分配人员
  387 +const handleTransfer = (id) => {
  388 + transferForm.value.taskId = id;
  389 + getUser();
  390 + transferShow.value = true;
  391 +};
  392 +
  393 +// 获取进行中列表
  394 +const getList = async () => {
  395 + loading.value = true;
  396 + const res = await queryOngoingList(queryParams);
  397 + policyList.value = res.rows;
  398 + total.value = res.total;
  399 + loading.value = false;
  400 +};
  401 +
  402 +/** 重置操作表单 */
  403 +function reset() {
  404 + proxy.resetForm("policyRef");
  405 +}
  406 +
  407 +/** 修改按钮操作 */
  408 +function handleUpdate(row) {
  409 + reset();
  410 + form.value = row;
  411 + open.value = true;
  412 +}
  413 +
  414 +/** 搜索按钮操作 */
  415 +function handleQuery() {
  416 + queryParams.value.pageNum = 1;
  417 + getList();
  418 +}
  419 +/** 重置按钮操作 */
  420 +function resetQuery() {
  421 + proxy.resetForm("queryRef");
  422 + handleQuery();
  423 +}
  424 +
  425 +/** 提交通过分配转办人员 */
  426 +function submitTransfer() {
  427 + const data = {
  428 + username: transferForm.value.username,
  429 + };
  430 + const taskId = transferForm.value.taskId;
  431 + transfer(data, taskId).then((res) => {
  432 + transferShow.value = false;
  433 + getList();
  434 + proxy.$modal.msgSuccess("保单已分配成功");
  435 + });
  436 +}
  437 +getList();
  438 +</script>
  439 +
  440 +<style></style>
  1 +<template>
  2 + <div class="app-container">
  3 + <!-- 表格数据 -->
  4 + <el-table v-loading="loading" :data="policyList" @row-click="handleTask">
  5 + <el-table-column label="序号" width="55" type="index" />
  6 + <el-table-column
  7 + label="登记时间"
  8 + prop="createTime"
  9 + width="160"
  10 + align="center"
  11 + />
  12 + <el-table-column
  13 + label="车牌号"
  14 + prop="licensePlateNumber"
  15 + width="150"
  16 + align="center"
  17 + />
  18 + <el-table-column
  19 + label="车辆识别代号"
  20 + width="180"
  21 + prop="frameNumber"
  22 + align="center"
  23 + :show-overflow-tooltip="true"
  24 + />
  25 + <el-table-column
  26 + label="发动机号"
  27 + width="180"
  28 + prop="engineNumber"
  29 + align="center"
  30 + :show-overflow-tooltip="true"
  31 + />
  32 + <el-table-column
  33 + label="是否新能源"
  34 + prop="isNewEnergy"
  35 + width="150"
  36 + align="center"
  37 + />
  38 + <el-table-column
  39 + label="企业名称"
  40 + prop="businessName"
  41 + width="100"
  42 + align="center"
  43 + />
  44 + <el-table-column
  45 + label="统一信用代码"
  46 + prop="uniformCreditCode"
  47 + width="180"
  48 + align="center"
  49 + />
  50 + <el-table-column
  51 + label="联系电话"
  52 + prop="businessPhone"
  53 + width="150"
  54 + align="center"
  55 + />
  56 + <el-table-column
  57 + label="上年承保公司"
  58 + prop="sysDeptName"
  59 + width="150"
  60 + align="center"
  61 + />
  62 + <el-table-column
  63 + v-hasRole="['associationemployee']"
  64 + label="保单状态"
  65 + width="100"
  66 + prop="statue"
  67 + >
  68 + <template #default="{ row }">
  69 + {{ row.policyStatus || "待处理" }}
  70 + </template>
  71 + </el-table-column>
  72 + <el-table-column
  73 + label="操作"
  74 + align="center"
  75 + min-width="280"
  76 + fixed="right"
  77 + >
  78 + <template #default="{ row }">
  79 + <el-button
  80 + type="primary"
  81 + v-hasPermi="['policy:pending:continue']"
  82 + @click="handleContinue(row)"
  83 + >{{
  84 + row.orderProgress === "已承接" ? "承接回馈" : "承接"
  85 + }}</el-button
  86 + >
  87 + <el-button
  88 + type="primary"
  89 + v-show="
  90 + row.policyStatus !== '问题件' && row.orderProgress === '已承接'
  91 + "
  92 + v-hasPermi="['policy:pending:troubleshooting']"
  93 + @click="handleTroubleshooting(row.taskId)"
  94 + >问题件</el-button
  95 + >
  96 + <el-button
  97 + type="primary"
  98 + v-hasRole="['companyadmin']"
  99 + @click="handleSharing(row.taskId)"
  100 + >分配</el-button
  101 + >
  102 + <el-button
  103 + type="primary"
  104 + v-show="row.orderProgress !== '已承接'"
  105 + v-hasPermi="['policy:pending:transfer']"
  106 + @click="handleSharing(row.taskId)"
  107 + >转办</el-button
  108 + >
  109 + <el-button
  110 + type="primary"
  111 + v-show="
  112 + row.policyStatus !== '问题件' &&
  113 + checkRole(['associationemployee'])
  114 + "
  115 + @click="handleUpdate(row)"
  116 + >审核</el-button
  117 + >
  118 + <el-button
  119 + type="primary"
  120 + v-show="
  121 + row.policyStatus === '问题件' &&
  122 + checkRole(['associationemployee'])
  123 + "
  124 + @click="lookReason(row)"
  125 + >查询</el-button
  126 + >
  127 + <el-button
  128 + type="primary"
  129 + v-show="
  130 + row.policyStatus === '问题件' &&
  131 + checkRole(['associationemployee'])
  132 + "
  133 + @click="handleVoid('2')"
  134 + >作废</el-button
  135 + >
  136 + <el-button
  137 + type="primary"
  138 + v-show="
  139 + row.policyStatus === '问题件' &&
  140 + checkRole(['associationemployee'])
  141 + "
  142 + @click="handleAuthCompany('0')"
  143 + >分配</el-button
  144 + >
  145 + </template>
  146 + </el-table-column>
  147 + </el-table>
  148 +
  149 + <!-- 页码 -->
  150 + <pagination
  151 + v-show="total > 0"
  152 + :total="total"
  153 + v-model:page="queryParams.pageNum"
  154 + v-model:limit="queryParams.pageSize"
  155 + @pagination="getList"
  156 + />
  157 +
  158 + <!-- 表单作废,退回。问题件对话框 -->
  159 + <el-dialog
  160 + v-model="deprecatedShow"
  161 + :title="activeTitle"
  162 + width="500"
  163 + append-to-body
  164 + >
  165 + <QuillEditor
  166 + :value="deprecatedForm.deprecatedReason"
  167 + @updateValue="getReason"
  168 + />
  169 + <template #footer>
  170 + <div class="dialog-footer">
  171 + <el-button @click="deprecatedShow = false">取消</el-button>
  172 + <el-button type="primary" @click="sunmitDeprecated">确定</el-button>
  173 + </div>
  174 + </template>
  175 + </el-dialog>
  176 +
  177 + <!-- 分配承保公司对话框 -->
  178 + <el-dialog
  179 + v-model="companyShow"
  180 + title="分配承保公司:"
  181 + width="500"
  182 + append-to-body
  183 + >
  184 + <div class="company_box">
  185 + <div class="header_top">
  186 + <el-input
  187 + v-model="companyQueryParams.deptName"
  188 + style="width: 380px"
  189 + placeholder="请输入承保公司名称(支持模糊查询)"
  190 + prefix-icon="Search"
  191 + />
  192 + <el-button type="primary" @click="getDeptList">查询</el-button>
  193 + </div>
  194 + <div class="company_content">
  195 + <el-radio-group v-model="companyForm.deptId">
  196 + <el-radio
  197 + v-for="item in deptOptions"
  198 + :key="item.deptId"
  199 + :label="item.deptId"
  200 + >{{ item.deptName }}</el-radio
  201 + >
  202 + </el-radio-group>
  203 + </div>
  204 + </div>
  205 + <template #footer>
  206 + <div class="dialog-footer">
  207 + <el-button @click="companyShow = false">取消</el-button>
  208 + <el-button type="primary" @click="submitForm">确定</el-button>
  209 + </div>
  210 + </template>
  211 + </el-dialog>
  212 +
  213 + <!-- 转办分配对话框 -->
  214 + <el-dialog
  215 + v-model="transferShow"
  216 + title="请选择人员:"
  217 + width="500"
  218 + append-to-body
  219 + >
  220 + <div class="company_box">
  221 + <el-radio-group v-model="transferForm.username">
  222 + <el-radio
  223 + v-for="item in transferOptions"
  224 + :key="item.userName"
  225 + :label="item.userName"
  226 + >{{ item.nickName }}</el-radio
  227 + >
  228 + </el-radio-group>
  229 + <div v-show="transferOptions.length === 0">暂无其他员工</div>
  230 + </div>
  231 + <template #footer>
  232 + <div class="dialog-footer">
  233 + <el-button @click="transferShow = false">取消</el-button>
  234 + <el-button type="primary" @click="submitTransfer">确定</el-button>
  235 + </div>
  236 + </template>
  237 + </el-dialog>
  238 +
  239 + <!-- 承接回馈对话框 -->
  240 + <el-dialog
  241 + v-model="showFeedback"
  242 + title="填写承接回馈"
  243 + width="500"
  244 + append-to-body
  245 + >
  246 + <el-form :model="FeedbackForm" ref="policyRef" label-width="100px">
  247 + <el-form-item label="商险单号" prop="progress">
  248 + <el-input
  249 + v-model="FeedbackForm.commercialinsurancepolicynumber"
  250 + placeholder="请输入保单号"
  251 + :disabled="hasRole"
  252 + />
  253 + </el-form-item>
  254 + <el-form-item label="强险单号" prop="progress">
  255 + <el-input
  256 + v-model="FeedbackForm.stronginsurancepolicynumber"
  257 + placeholder="请输入保单号"
  258 + :disabled="hasRole"
  259 + />
  260 + </el-form-item>
  261 + <el-form-item label="保单回馈" prop="progress">
  262 + <QuillEditor :value="FeedbackForm.message" @updateValue="getMsg" />
  263 + </el-form-item>
  264 + </el-form>
  265 + <template #footer>
  266 + <div class="dialog-footer">
  267 + <el-button @click="showFeedback = false">取消</el-button>
  268 + <el-button type="primary" @click="submit">提交回馈</el-button>
  269 + </div>
  270 + </template>
  271 + </el-dialog>
  272 +
  273 + <!-- 查询问题件弹出框 -->
  274 + <el-dialog v-model="showIssue" title="保单信息" width="700" append-to-body>
  275 + <el-form :model="IssueForm" ref="policyRef" label-width="100px">
  276 + <el-form-item label="问题件原因" prop="progress">
  277 + <QuillEditor :value="IssueForm.deprecatedReason" />
  278 + </el-form-item>
  279 + </el-form>
  280 + </el-dialog>
  281 +
  282 + <!-- 编辑对话框 -->
  283 + <el-dialog v-model="open" title="保单信息" width="700" append-to-body>
  284 + <el-form :model="form" ref="policyRef" label-width="100px">
  285 + <el-row>
  286 + <el-col :span="12">
  287 + <el-form-item label="车牌号" prop="licensePlateNumber">
  288 + <el-input
  289 + v-model="form.licensePlateNumber"
  290 + placeholder="请输入车牌号"
  291 + :disabled="!hasRole"
  292 + />
  293 + </el-form-item>
  294 + </el-col>
  295 + <el-col :span="12">
  296 + <el-form-item label="车辆识别号" prop="frameNumber">
  297 + <el-input
  298 + v-model="form.frameNumber"
  299 + :disabled="!hasRole"
  300 + placeholder="请输入车架号"
  301 + />
  302 + </el-form-item>
  303 + </el-col>
  304 + </el-row>
  305 + <el-row>
  306 + <el-col :span="12">
  307 + <el-form-item label="企业名称" prop="businessName">
  308 + <el-input
  309 + v-model="form.businessName"
  310 + :disabled="!hasRole"
  311 + placeholder="请输入企业名称"
  312 + />
  313 + </el-form-item>
  314 + </el-col>
  315 + <el-col :span="12">
  316 + <el-form-item label="联系电话" prop="businessPhone">
  317 + <el-input
  318 + v-model="form.businessPhone"
  319 + :disabled="!hasRole"
  320 + placeholder="请输入联系电话"
  321 + />
  322 + </el-form-item>
  323 + </el-col>
  324 + </el-row>
  325 + <el-row>
  326 + <el-col :span="12">
  327 + <el-form-item label="上年承保公司" prop="sysDeptId">
  328 + <el-select
  329 + v-model="form.sysDeptId"
  330 + :disabled="!hasRole"
  331 + style="width: 230px"
  332 + >
  333 + <el-option
  334 + v-for="item in deptOptions"
  335 + :key="item.deptId"
  336 + :label="item.deptName"
  337 + :value="item.deptId"
  338 + />
  339 + </el-select>
  340 + </el-form-item>
  341 + </el-col>
  342 + <el-col :span="12">
  343 + <el-form-item label="车辆使用性质" prop="vehicleNature">
  344 + <el-select
  345 + v-model="form.vehicleNatureId"
  346 + :disabled="!hasRole"
  347 + style="width: 230px"
  348 + >
  349 + <el-option
  350 + v-for="item in carNatureOption"
  351 + :key="item.id"
  352 + :label="item.name"
  353 + :value="item.id"
  354 + />
  355 + </el-select>
  356 + </el-form-item>
  357 + </el-col>
  358 + </el-row>
  359 + <el-row>
  360 + <el-col :span="12">
  361 + <el-form-item label="发动机号" prop="engineNumber">
  362 + <el-input
  363 + v-model="form.engineNumber"
  364 + :disabled="!hasRole"
  365 + placeholder="请输入发动机号"
  366 + />
  367 + </el-form-item>
  368 + </el-col>
  369 + <el-col :span="12">
  370 + <el-form-item label="是否新能源" prop="isNewEnergy">
  371 + <el-select
  372 + v-model="form.isNewEnergy"
  373 + :disabled="!hasRole"
  374 + style="width: 230px"
  375 + >
  376 + <el-option
  377 + v-for="item in NewEnergyOption"
  378 + :key="item.id"
  379 + :label="item.name"
  380 + :value="item.id"
  381 + />
  382 + </el-select>
  383 + </el-form-item>
  384 + </el-col>
  385 + </el-row>
  386 + <el-row>
  387 + <el-col :span="12">
  388 + <el-form-item label="信用代码" prop="uniformCreditCode">
  389 + <el-input
  390 + v-model="form.uniformCreditCode"
  391 + :disabled="!hasRole"
  392 + placeholder="请输入信用代码"
  393 + />
  394 + </el-form-item>
  395 + </el-col>
  396 + <el-col :span="12">
  397 + <el-form-item label="保险需求" prop="requirements">
  398 + <el-select
  399 + v-model="form.requirementsId"
  400 + :disabled="!hasRole"
  401 + style="width: 230px"
  402 + >
  403 + <el-option
  404 + v-for="item in needOption"
  405 + :key="item.id"
  406 + :label="item.name"
  407 + :value="item.id"
  408 + />
  409 + </el-select>
  410 + </el-form-item>
  411 + </el-col>
  412 + </el-row>
  413 + <!-- 流转提示 -->
  414 + <div class="transferTip">
  415 + <span>本次订单流转:{{ transferTip }}</span>
  416 + <el-button :loading="loadingBtn" @click="getTransferTip"
  417 + >刷新</el-button
  418 + >
  419 + </div>
  420 + </el-form>
  421 + <template #footer>
  422 + <div
  423 + class="dialog-footer"
  424 + style="
  425 + display: flex;
  426 + justify-content: space-around;
  427 + width: 65%;
  428 + margin-left: auto;
  429 + "
  430 + >
  431 + <el-button
  432 + type="primary"
  433 + v-hasRole="['associationemployee']"
  434 + @click.stop="handleSuccess('0')"
  435 + >
  436 + 通过
  437 + </el-button>
  438 + <el-button
  439 + type="primary"
  440 + v-hasRole="['associationemployee']"
  441 + @click="submitUpdate"
  442 + >保存</el-button
  443 + >
  444 + <el-button
  445 + type="primary"
  446 + v-hasRole="['associationemployee']"
  447 + @click="handleVoid('2')"
  448 + >作废</el-button
  449 + >
  450 + <el-button
  451 + type="primary"
  452 + v-hasRole="['associationemployee']"
  453 + @click="handleFallback('1')"
  454 + >退回</el-button
  455 + >
  456 + <el-button
  457 + type="primary"
  458 + v-hasRole="['associationemployee']"
  459 + @click.stop="handleAuthCompany('0')"
  460 + >分配</el-button
  461 + >
  462 + </div>
  463 + </template>
  464 + </el-dialog>
  465 + </div>
  466 +</template>
  467 +
  468 +<script setup>
  469 +import {
  470 + queryMyList,
  471 + disposeUser,
  472 + transfer,
  473 + getUserList,
  474 + updateCarInfo,
  475 + getCarDetail,
  476 + getCompanyTip,
  477 + queryDefeatContent,
  478 +} from "@/api/policy/index";
  479 +import { checkRole } from "@/utils/permission"; // 权限判断函数
  480 +import { queryCarType } from "@/api/configurationCenter/carType.js";
  481 +import { queryCarNature } from "@/api/configurationCenter/carNature.js";
  482 +import { queryNeed } from "@/api/configurationCenter/need.js";
  483 +import { listDept } from "@/api/system/dept";
  484 +const { proxy } = getCurrentInstance();
  485 +const loading = ref(false);
  486 +const activeTitle = ref("");
  487 +const loadingBtn = ref(false);
  488 +const showIssue = ref(false);
  489 +const total = ref(0);
  490 +const typeId = ref(0); // 判断类型 0 问题件 1 退回 2 作废
  491 +const transferTip = ref(""); //流转下一家名称
  492 +const transferDeptId = ref(""); // 流转的部门公司ID
  493 +const open = ref(false);
  494 +const timer = ref(null);
  495 +const timerReason = ref(null);
  496 +const form = ref({});
  497 +const showFeedback = ref(false);
  498 +const transferShow = ref(false);
  499 +const transferForm = ref({});
  500 +const taskId = ref("");
  501 +const IssueForm = ref({
  502 + deprecatedReason: "",
  503 +});
  504 +const FeedbackForm = ref({
  505 + stronginsurancepolicynumber: "",
  506 + commercialinsurancepolicynumber: "",
  507 + message: "",
  508 +});
  509 +const getParams = reactive({
  510 + pageNum: 1,
  511 + pageSize: 100,
  512 +});
  513 +const companyShow = ref(false);
  514 +const deptOptions = ref([]);
  515 +const transferOptions = ref([]);
  516 +const deprecatedShow = ref(false);
  517 +const deprecatedForm = ref({
  518 + deprecatedReason: "",
  519 + associationapprove: "",
  520 +});
  521 +const companyForm = ref({});
  522 +const queryParams = reactive({
  523 + pageNum: 1,
  524 + pageSize: 10,
  525 + type: 1,
  526 +});
  527 +const companyQueryParams = reactive({
  528 + deptName: undefined,
  529 + status: undefined,
  530 +});
  531 +const policyList = ref([]);
  532 +
  533 +// 判断是否有权限
  534 +const hasRole = computed(() => {
  535 + return proxy.$auth.hasRole("associationemployee");
  536 +});
  537 +
  538 +// 新能源
  539 +const NewEnergyOption = ref([
  540 + {
  541 + id: "0",
  542 + name: "否",
  543 + },
  544 + {
  545 + id: "1",
  546 + name: "是",
  547 + },
  548 +]);
  549 +
  550 +// 车辆类型
  551 +const carTypeOption = ref([]);
  552 +const getCarTypeOption = async () => {
  553 + const { data } = await queryCarType(getParams);
  554 + carTypeOption.value = data.records;
  555 +};
  556 +getCarTypeOption();
  557 +// 车辆使用性质
  558 +const carNatureOption = ref([]);
  559 +const getcarNatureOption = async () => {
  560 + const { data } = await queryCarNature(getParams);
  561 + carNatureOption.value = data.records;
  562 +};
  563 +getcarNatureOption();
  564 +
  565 +// 保险需求
  566 +const needOption = ref([]);
  567 +const getNeedOption = async () => {
  568 + const { data } = await queryNeed(getParams);
  569 + needOption.value = data.records;
  570 +};
  571 +getNeedOption();
  572 +
  573 +// 赋值taskId
  574 +const handleTask = (row) => {
  575 + taskId.value = row.taskId;
  576 +};
  577 +
  578 +const getList = async () => {
  579 + loading.value = true;
  580 + const { data } = await queryMyList(queryParams);
  581 + policyList.value = data.rows;
  582 + total.value = data.total;
  583 + loading.value = false;
  584 +};
  585 +// 承接
  586 +const handleContinue = (row) => {
  587 + if (row.orderProgress === "待承接") {
  588 + proxy.$modal
  589 + .confirm("是否要承接该保单")
  590 + .then(function () {})
  591 + .then(() => {
  592 + disposeUser({}, row.taskId).then((res) => {
  593 + proxy.$modal.msgSuccess("承接成功");
  594 + getList();
  595 + });
  596 + })
  597 + .catch(() => {
  598 + proxy.$modal.msg("已取消");
  599 + });
  600 + } else {
  601 + reset();
  602 + FeedbackForm.value.taskId = row.taskId;
  603 + showFeedback.value = true;
  604 + }
  605 +};
  606 +// 问题件
  607 +const handleTroubleshooting = (taskId) => {
  608 + deprecatedForm.value.taskId = taskId;
  609 + activeTitle.value = "问题件退回至协会";
  610 + typeId.value = 0;
  611 + deprecatedShow.value = true;
  612 +};
  613 +// 通过保单
  614 +const handleSuccess = (associationapprove) => {
  615 + proxy.$modal
  616 + .confirm("是否通过该保单")
  617 + .then(function () {})
  618 + .then(async () => {
  619 + await updateCarInfo(form.value);
  620 + await disposeUser(
  621 + {
  622 + associationapprove,
  623 + associationapprovetype: "0",
  624 + deptid: transferDeptId.value,
  625 + },
  626 + taskId.value
  627 + );
  628 + proxy.$modal.msgSuccess("保单已通过");
  629 + open.value = false;
  630 + getList();
  631 + })
  632 + .catch(() => {
  633 + proxy.$modal.msg("取消通过");
  634 + });
  635 +};
  636 +// 退回保单
  637 +const handleFallback = (associationapprove) => {
  638 + clearTimeout(timerReason.value);
  639 + deprecatedForm.value = {
  640 + associationapprove,
  641 + taskId: taskId.value,
  642 + };
  643 + deprecatedForm.value.deprecatedReason = "";
  644 + typeId.value = 1;
  645 + activeTitle.value = "退回后用户需修改后重新提交";
  646 + deprecatedShow.value = true;
  647 +};
  648 +// 作废保单
  649 +const handleVoid = (associationapprove) => {
  650 + clearTimeout(timerReason.value);
  651 + deprecatedForm.value = {
  652 + associationapprove,
  653 + taskId: taskId.value,
  654 + };
  655 + deprecatedForm.value.deprecatedReason = "";
  656 + typeId.value = 2;
  657 + activeTitle.value =
  658 + "温馨提示:该保单作废后车牌号、车架号在本自然年度无法重新提交";
  659 + deprecatedShow.value = true;
  660 +};
  661 +// 提交方法
  662 +
  663 +// 查询问题件原因
  664 +const lookReason = async (row) => {
  665 + const { data } = await queryDefeatContent({
  666 + processInstanceId: row.processInstanceId,
  667 + type: 0,
  668 + });
  669 + IssueForm.value.deprecatedReason = data.message;
  670 + showIssue.value = true;
  671 +};
  672 +// 提交作废,退回,问题件表单
  673 +const sunmitDeprecated = () => {
  674 + let data = {};
  675 + if (typeId.value === 0) {
  676 + data = {
  677 + policystatus: "1",
  678 + comment: deprecatedForm.value.deprecatedReason,
  679 + };
  680 + } else {
  681 + data = {
  682 + associationapprove: deprecatedForm.value.associationapprove,
  683 + comment: deprecatedForm.value.deprecatedReason,
  684 + };
  685 + }
  686 + const taskId = deprecatedForm.value.taskId;
  687 + disposeUser(data, taskId).then((res) => {
  688 + getList();
  689 + deprecatedShow.value = false;
  690 + proxy.$modal.msgSuccess("操作成功");
  691 + });
  692 +};
  693 +// 分配承保公司
  694 +const handleAuthCompany = (associationapprove) => {
  695 + companyForm.value = {
  696 + associationapprove,
  697 + taskId: taskId.value,
  698 + };
  699 + companyShow.value = true;
  700 +};
  701 +
  702 +// 获取人员列表
  703 +const getUser = async () => {
  704 + const { data } = await getUserList();
  705 + transferOptions.value = data;
  706 +};
  707 +// 转办或分配
  708 +const handleSharing = (id) => {
  709 + transferForm.value.taskId = id;
  710 + getUser();
  711 + transferShow.value = true;
  712 +};
  713 +/** 查询部门列表 */
  714 +const getDeptList = () => {
  715 + loading.value = true;
  716 + listDept(companyQueryParams).then((response) => {
  717 + let newArr = [];
  718 + newArr = response.data.filter((item) => item.parentId === 100);
  719 + deptOptions.value = newArr.map((child) => {
  720 + return {
  721 + deptId: child.deptId.toString(),
  722 + deptName: child.deptName,
  723 + };
  724 + });
  725 + loading.value = false;
  726 + });
  727 +};
  728 +/** 重置操作表单 */
  729 +function reset() {
  730 + proxy.resetForm("policyRef");
  731 +}
  732 +
  733 +/** 修改按钮操作 */
  734 +const handleUpdate = async (row) => {
  735 + reset();
  736 + const { data } = await getCarDetail(row.businessKey);
  737 + getTransferTip();
  738 + form.value = data;
  739 + open.value = true;
  740 +};
  741 +/** 提交通过分配承保公司 */
  742 +function submitForm() {
  743 + const data = {
  744 + associationapprove: companyForm.value.associationapprove,
  745 + associationapprovetype: "1",
  746 + deptid: companyForm.value.deptId.toString(),
  747 + };
  748 + const taskId = companyForm.value.taskId;
  749 + disposeUser(data, taskId).then((res) => {
  750 + companyShow.value = false;
  751 + getList();
  752 + proxy.$modal.msgSuccess("保单已分配成功");
  753 + });
  754 +}
  755 +
  756 +/** 提交通过分配转办人员 */
  757 +function submitTransfer() {
  758 + const data = {
  759 + username: transferForm.value.username,
  760 + };
  761 + const taskId = transferForm.value.taskId;
  762 + transfer(data, taskId).then((res) => {
  763 + transferShow.value = false;
  764 + getList();
  765 + proxy.$modal.msgSuccess("保单已分配成功");
  766 + });
  767 +}
  768 +
  769 +// 提交承接回馈
  770 +const submit = () => {
  771 + const data = {
  772 + policystatus: "2",
  773 + message: FeedbackForm.value.comment,
  774 + commercialinsurancepolicynumber:
  775 + FeedbackForm.value.commercialinsurancepolicynumber,
  776 + stronginsurancepolicynumber: FeedbackForm.value.stronginsurancepolicynumber,
  777 + };
  778 + disposeUser(data, FeedbackForm.value.taskId).then((res) => {
  779 + getList();
  780 + proxy.$modal.msgSuccess("回馈成功");
  781 + showFeedback.value = false;
  782 + });
  783 +};
  784 +
  785 +const getMsg = (val) => {
  786 + clearTimeout(timer.value);
  787 + timer.value = setTimeout(() => {
  788 + FeedbackForm.value.comment = val;
  789 + }, 1000);
  790 +};
  791 +
  792 +// 获取流转下一家分配公司
  793 +const getTransferTip = async () => {
  794 + loadingBtn.value = true;
  795 + const { data } = await getCompanyTip();
  796 + transferTip.value = data.deptName;
  797 + transferDeptId.value = data.deptId;
  798 + loadingBtn.value = false;
  799 +};
  800 +
  801 +// 填写作废原因
  802 +const getReason = (val) => {
  803 + clearTimeout(timerReason.value);
  804 + timerReason.value = setTimeout(() => {
  805 + deprecatedForm.value.deprecatedReason = val;
  806 + }, 1000);
  807 +};
  808 +// 提交修改
  809 +const submitUpdate = () => {
  810 + updateCarInfo(form.value).then((response) => {
  811 + proxy.$modal.msgSuccess("修改成功");
  812 + open.value = false;
  813 + getList();
  814 + });
  815 +};
  816 +
  817 +getList();
  818 +if (checkRole(["associationemployee"])) {
  819 + getDeptList();
  820 +}
  821 +</script>
  822 +
  823 +<style lang="scss" scoped>
  824 +::v-deep(.el-radio-group) {
  825 + align-items: start;
  826 + flex-direction: column;
  827 +}
  828 +.header_top {
  829 + display: flex;
  830 + align-items: center;
  831 + gap: 30px;
  832 + margin-bottom: 20px;
  833 +}
  834 +.transferTip {
  835 + display: flex;
  836 + align-items: center;
  837 + gap: 20px;
  838 + font-size: 14px;
  839 + color: #666;
  840 +}
  841 +.company_content {
  842 + width: 100%;
  843 + height: 200px;
  844 + overflow-y: scroll;
  845 +}
  846 +</style>
  1 +<template>
  2 + <div class="app-container">
  3 + <!-- 筛选条件 -->
  4 + <el-form
  5 + :model="queryParams"
  6 + ref="queryRef"
  7 + v-show="showSearch"
  8 + :inline="true"
  9 + label-width="68px"
  10 + >
  11 + <el-form-item label="用户姓名" prop="name">
  12 + <el-input
  13 + v-model="queryParams.name"
  14 + placeholder="请输入名称"
  15 + clearable
  16 + style="width: 200px"
  17 + @keyup.enter="handleQuery"
  18 + />
  19 + </el-form-item>
  20 + <el-form-item label="车牌号" prop="licensePlate">
  21 + <el-input
  22 + v-model="queryParams.licensePlate"
  23 + placeholder="请输入车牌号"
  24 + clearable
  25 + style="width: 200px"
  26 + @keyup.enter="handleQuery"
  27 + />
  28 + </el-form-item>
  29 + <el-form-item label="操作人员" prop="association">
  30 + <el-input
  31 + v-model="queryParams.association"
  32 + placeholder="填写操作人员"
  33 + clearable
  34 + style="width: 200px"
  35 + @keyup.enter="handleQuery"
  36 + />
  37 + </el-form-item>
  38 + <el-form-item label="分配机制" prop="associationapprovetype">
  39 + <el-select
  40 + v-model="queryParams.associationapprovetype"
  41 + placeholder="选择分配机制"
  42 + clearable
  43 + style="width: 200px"
  44 + >
  45 + <el-option
  46 + v-for="dict in options"
  47 + :key="dict.value"
  48 + :label="dict.label"
  49 + :value="dict.value"
  50 + />
  51 + </el-select>
  52 + </el-form-item>
  53 + <el-form-item label="处理状态" prop="associationapprove">
  54 + <el-select
  55 + v-model="queryParams.associationapprove"
  56 + placeholder="选择处理状态"
  57 + clearable
  58 + style="width: 200px"
  59 + >
  60 + <el-option
  61 + v-for="dict in associationapproveOptions"
  62 + :key="dict.value"
  63 + :label="dict.label"
  64 + :value="dict.value"
  65 + />
  66 + </el-select>
  67 + </el-form-item>
  68 + <el-form-item>
  69 + <el-button
  70 + type="primary"
  71 + icon="Search"
  72 + v-hasPermi="['system:registrationmonitor:listProcessed']"
  73 + @click="handleQuery"
  74 + >查询</el-button
  75 + >
  76 + <el-button icon="Refresh" @click="resetQuery">重置</el-button>
  77 + </el-form-item>
  78 + </el-form>
  79 +
  80 + <!-- 表格数据 -->
  81 + <el-table v-loading="loading" :data="policyList" @row-click="handleUpdate">
  82 + <el-table-column label="序号" type="index" width="55" align="center" />
  83 + <el-table-column
  84 + label="登记时间"
  85 + prop="createTime"
  86 + width="160"
  87 + align="center"
  88 + />
  89 + <el-table-column
  90 + label="车牌号"
  91 + prop="licensePlateNumber"
  92 + width="150"
  93 + align="center"
  94 + />
  95 + <el-table-column
  96 + label="车架号"
  97 + prop="frameNumber"
  98 + width="240"
  99 + align="center"
  100 + />
  101 + <el-table-column
  102 + label="企业名称"
  103 + prop="businessName"
  104 + width="100"
  105 + align="center"
  106 + />
  107 + <el-table-column
  108 + label="统一信用代码"
  109 + prop="uniformCreditCode"
  110 + width="180"
  111 + align="center"
  112 + />
  113 + <el-table-column
  114 + label="联系电话"
  115 + prop="businessPhone"
  116 + width="150"
  117 + align="center"
  118 + />
  119 + <el-table-column
  120 + label="处理状态"
  121 + prop="policyStatus"
  122 + show-overflow-tooltip
  123 + width="150"
  124 + />
  125 + <el-table-column
  126 + label="上年承保公司"
  127 + prop="sysDeptName"
  128 + width="150"
  129 + align="center"
  130 + />
  131 + <el-table-column label="操作人员" width="150" align="center">
  132 + <template #default="{ row }">
  133 + <span>{{
  134 + row.associationEmployeeUserName || row.companyEmployeeUserName
  135 + }}</span>
  136 + </template>
  137 + </el-table-column>
  138 + <el-table-column label="操作时间" width="160">
  139 + <template #default="{ row }">
  140 + <span>{{
  141 + row.companyEmployeeUndertakeTime || row.distributionTime
  142 + }}</span>
  143 + </template>
  144 + </el-table-column>
  145 + <el-table-column
  146 + label="分配机制"
  147 + width="120"
  148 + prop="distributionMechanism"
  149 + align="center"
  150 + />
  151 + <el-table-column
  152 + label="承保公司"
  153 + prop="companyName"
  154 + show-overflow-tooltip
  155 + width="150"
  156 + align="center"
  157 + >
  158 + <template #default="{ row }">
  159 + <span>{{ row.companyName || "无" }}</span>
  160 + </template>
  161 + </el-table-column>
  162 + </el-table>
  163 +
  164 + <pagination
  165 + v-show="total > 0"
  166 + :total="total"
  167 + v-model:page="queryParams.pageNum"
  168 + v-model:limit="queryParams.pageSize"
  169 + @pagination="getList"
  170 + />
  171 +
  172 + <!-- 查阅对话框 -->
  173 + <el-dialog v-model="open" title="保单信息" width="700" append-to-body>
  174 + <el-form :model="form" ref="policyRef" label-width="100px">
  175 + <el-row>
  176 + <el-col :span="12">
  177 + <el-form-item label="车牌号" prop="licensePlateNumber">
  178 + <el-input
  179 + v-model="form.licensePlateNumber"
  180 + placeholder="请输入车牌号"
  181 + disabled
  182 + />
  183 + </el-form-item>
  184 + </el-col>
  185 + <el-col :span="12">
  186 + <el-form-item label="车架号" prop="frameNumber">
  187 + <el-input
  188 + v-model="form.frameNumber"
  189 + disabled
  190 + placeholder="请输入车架号"
  191 + />
  192 + </el-form-item>
  193 + </el-col>
  194 + </el-row>
  195 + <el-row>
  196 + <el-col :span="12">
  197 + <el-form-item label="企业名称" prop="businessName">
  198 + <el-input
  199 + v-model="form.businessName"
  200 + :disabled="!hasRole"
  201 + placeholder="请输入企业名称"
  202 + />
  203 + </el-form-item>
  204 + </el-col>
  205 + <el-col :span="12">
  206 + <el-form-item label="联系电话" prop="businessPhone">
  207 + <el-input
  208 + v-model="form.businessPhone"
  209 + :disabled="!hasRole"
  210 + placeholder="请输入联系电话"
  211 + />
  212 + </el-form-item>
  213 + </el-col>
  214 + </el-row>
  215 + <el-row>
  216 + <el-col :span="12">
  217 + <el-form-item label="发动机号" prop="engineNumber">
  218 + <el-input v-model="form.engineNumber" placeholder="无" disabled />
  219 + </el-form-item>
  220 + </el-col>
  221 + <el-col :span="12">
  222 + <el-form-item label="上年承保公司" prop="sysDeptName">
  223 + <el-input
  224 + v-model="form.sysDeptName"
  225 + disabled
  226 + placeholder="请输入上年承保公司"
  227 + />
  228 + </el-form-item>
  229 + </el-col>
  230 + </el-row>
  231 + <el-row>
  232 + <el-col :span="12">
  233 + <el-form-item label="分配机制" prop="distributionMechanism">
  234 + <el-input
  235 + v-model="form.distributionMechanism"
  236 + disabled
  237 + placeholder="无"
  238 + />
  239 + </el-form-item>
  240 + </el-col>
  241 + <el-col :span="12">
  242 + <el-form-item label="信用代码" prop="uniformCreditCode">
  243 + <el-input
  244 + v-model="form.uniformCreditCode"
  245 + :disabled="!hasRole"
  246 + placeholder="请输入信用代码"
  247 + />
  248 + </el-form-item>
  249 + </el-col>
  250 + </el-row>
  251 + <el-row>
  252 + <el-col :span="12">
  253 + <el-form-item label="保险需求" prop="requirements">
  254 + <el-input v-model="form.requirements" disabled placeholder="无" />
  255 + </el-form-item>
  256 + </el-col>
  257 + <el-col :span="12">
  258 + <el-form-item label="使用性质" prop="vehicleNature">
  259 + <el-input
  260 + v-model="form.vehicleNature"
  261 + disabled
  262 + placeholder="无"
  263 + />
  264 + </el-form-item>
  265 + </el-col>
  266 + </el-row>
  267 + </el-form>
  268 + </el-dialog>
  269 + </div>
  270 +</template>
  271 +
  272 +<script setup>
  273 +import { queryProcessedList } from "@/api/policy/index";
  274 +const { proxy } = getCurrentInstance();
  275 +const loading = ref(false);
  276 +const total = ref(0);
  277 +const open = ref(false);
  278 +const form = ref({});
  279 +const showSearch = ref(true);
  280 +const queryParams = reactive({
  281 + pageNum: 1,
  282 + pageSize: 10,
  283 + name: "",
  284 + type: 1,
  285 + licensePlate: "",
  286 + association: "",
  287 + associationapprovetype: "",
  288 + associationapprove: "",
  289 +});
  290 +
  291 +const options = [
  292 + {
  293 + value: 0,
  294 + label: "系统分配",
  295 + },
  296 + {
  297 + value: 1,
  298 + label: "人工分配",
  299 + },
  300 +];
  301 +
  302 +const associationapproveOptions = [
  303 + {
  304 + value: 0,
  305 + label: "通过",
  306 + },
  307 + {
  308 + value: 1,
  309 + label: "退回",
  310 + },
  311 +];
  312 +
  313 +const policyList = ref([]);
  314 +
  315 +const getList = async () => {
  316 + loading.value = true;
  317 + const res = await queryProcessedList(queryParams);
  318 + policyList.value = res.rows;
  319 + total.value = res.total;
  320 + loading.value = false;
  321 +};
  322 +
  323 +/** 重置操作表单 */
  324 +function reset() {
  325 + proxy.resetForm("policyRef");
  326 +}
  327 +
  328 +/** 修改按钮操作 */
  329 +function handleUpdate(row) {
  330 + reset();
  331 + form.value = row;
  332 + open.value = true;
  333 +}
  334 +
  335 +/** 搜索按钮操作 */
  336 +function handleQuery() {
  337 + queryParams.pageNum = 1;
  338 + getList();
  339 +}
  340 +/** 重置按钮操作 */
  341 +function resetQuery() {
  342 + proxy.resetForm("queryRef");
  343 + handleQuery();
  344 +}
  345 +
  346 +getList();
  347 +</script>
  348 +
  349 +<style></style>
1 <template> 1 <template>
2 <div class="app-container"> 2 <div class="app-container">
3 <div class="tip"> 3 <div class="tip">
  4 + <p>
4 提示:订单分配不以保险公司顺序进行分配,系统随机分配;重新添加或修改订单后,系统重新开始计算;分配颜度满了以后,系统重新计算 5 提示:订单分配不以保险公司顺序进行分配,系统随机分配;重新添加或修改订单后,系统重新开始计算;分配颜度满了以后,系统重新计算
  6 + </p>
  7 + <p style="display: flex; align-items: center; gap: 20px">
  8 + <span>轮次:{{ countData.rounds }}</span>
  9 + <span>笔数:{{ countData.strokesNum }}</span>
  10 + <span>每轮总数:{{ countData.countRounds }}</span>
  11 + <span>实际总笔数:{{ countData.actualStrokesNum }}</span>
  12 + </p>
5 </div> 13 </div>
6 14
7 <el-row :gutter="10" class="mb8"> 15 <el-row :gutter="10" class="mb8">
@@ -112,12 +120,14 @@ import { @@ -112,12 +120,14 @@ import {
112 queryRules, 120 queryRules,
113 delRules, 121 delRules,
114 } from "@/api/configurationCenter/rules.js"; 122 } from "@/api/configurationCenter/rules.js";
  123 +import { getCount } from "@/api/policy/index";
115 import { listDept } from "@/api/system/dept"; 124 import { listDept } from "@/api/system/dept";
116 const { proxy } = getCurrentInstance(); 125 const { proxy } = getCurrentInstance();
117 const loading = ref(false); 126 const loading = ref(false);
118 const multiple = ref(true); 127 const multiple = ref(true);
119 const ids = ref([]); 128 const ids = ref([]);
120 const total = ref(0); 129 const total = ref(0);
  130 +const countData = ref({});
121 const deptOptions = ref([]); 131 const deptOptions = ref([]);
122 const title = ref("添加分配规则"); 132 const title = ref("添加分配规则");
123 const open = ref(false); 133 const open = ref(false);
@@ -136,6 +146,7 @@ const rulesList = ref([]); @@ -136,6 +146,7 @@ const rulesList = ref([]);
136 onMounted(() => { 146 onMounted(() => {
137 getList(); 147 getList();
138 getDeptList(); 148 getDeptList();
  149 + getNumber();
139 }); 150 });
140 151
141 // 获取规则列表 152 // 获取规则列表
@@ -179,6 +190,12 @@ function handleDelete(row) { @@ -179,6 +190,12 @@ function handleDelete(row) {
179 }); 190 });
180 } 191 }
181 192
  193 +// 获取轮次轮数
  194 +const getNumber = async () => {
  195 + const { data } = await getCount();
  196 + countData.value = data[0];
  197 +};
  198 +
182 /** 重置操作表单 */ 199 /** 重置操作表单 */
183 function reset() { 200 function reset() {
184 form.value = { 201 form.value = {
@@ -198,6 +198,7 @@ const queryParams = reactive({ @@ -198,6 +198,7 @@ const queryParams = reactive({
198 pageNum: 1, 198 pageNum: 1,
199 pageSize: 10, 199 pageSize: 10,
200 name: "", 200 name: "",
  201 + type: 0,
201 licensePlate: "", 202 licensePlate: "",
202 association: "", 203 association: "",
203 }); 204 });
@@ -259,6 +259,7 @@ const queryParams = reactive({ @@ -259,6 +259,7 @@ const queryParams = reactive({
259 pageNum: 1, 259 pageNum: 1,
260 pageSize: 10, 260 pageSize: 10,
261 name: "", 261 name: "",
  262 + type: 0,
262 licensePlate: "", 263 licensePlate: "",
263 association: "", 264 association: "",
264 associationapprovetype: "", 265 associationapprovetype: "",
@@ -176,6 +176,7 @@ const companyShow = ref(false); @@ -176,6 +176,7 @@ const companyShow = ref(false);
176 const queryParams = reactive({ 176 const queryParams = reactive({
177 pageNum: 1, 177 pageNum: 1,
178 pageSize: 10, 178 pageSize: 10,
  179 + type: 0,
179 }); 180 });
180 const policyList = ref([]); 181 const policyList = ref([]);
181 182
@@ -327,6 +327,7 @@ const queryParams = reactive({ @@ -327,6 +327,7 @@ const queryParams = reactive({
327 associationapprovetype: "", 327 associationapprovetype: "",
328 orderprogress: "", 328 orderprogress: "",
329 policystatus: "", 329 policystatus: "",
  330 + type: 0,
330 }); 331 });
331 332
332 const progressOption = ref([ 333 const progressOption = ref([
@@ -507,6 +507,7 @@ const companyForm = ref({}); @@ -507,6 +507,7 @@ const companyForm = ref({});
507 const queryParams = reactive({ 507 const queryParams = reactive({
508 pageNum: 1, 508 pageNum: 1,
509 pageSize: 10, 509 pageSize: 10,
  510 + type: 0,
510 }); 511 });
511 const companyQueryParams = reactive({ 512 const companyQueryParams = reactive({
512 deptName: undefined, 513 deptName: undefined,
@@ -239,6 +239,7 @@ const queryParams = reactive({ @@ -239,6 +239,7 @@ const queryParams = reactive({
239 pageNum: 1, 239 pageNum: 1,
240 pageSize: 10, 240 pageSize: 10,
241 name: "", 241 name: "",
  242 + type: 0,
242 licensePlate: "", 243 licensePlate: "",
243 association: "", 244 association: "",
244 associationapprovetype: "", 245 associationapprovetype: "",
  1 +<template>
  2 + <div class="app-container">
  3 + <!-- 筛选条件 -->
  4 + <el-form
  5 + :model="queryParams"
  6 + ref="queryRef"
  7 + v-show="showSearch"
  8 + :inline="true"
  9 + label-width="68px"
  10 + >
  11 + <el-form-item label="分配机制" prop="associationapprovetype">
  12 + <el-select
  13 + v-model="queryParams.associationapprovetype"
  14 + placeholder="系统分配"
  15 + clearable
  16 + style="width: 220px"
  17 + >
  18 + <el-option
  19 + v-for="dict in options"
  20 + :key="dict.value"
  21 + :label="dict.label"
  22 + :value="dict.value"
  23 + />
  24 + </el-select>
  25 + </el-form-item>
  26 + <el-form-item label="操作人员" prop="association">
  27 + <el-input
  28 + v-model="queryParams.association"
  29 + placeholder="填写操作人员"
  30 + clearable
  31 + style="width: 220px"
  32 + @keyup.enter="handleQuery"
  33 + />
  34 + </el-form-item>
  35 + <el-form-item label="承保公司" prop="company">
  36 + <el-input
  37 + v-model="queryParams.company"
  38 + placeholder="请输入承保公司"
  39 + clearable
  40 + style="width: 220px"
  41 + @keyup.enter="handleQuery"
  42 + />
  43 + </el-form-item>
  44 + <el-form-item label="承接人" prop="companyEmployeeUserName">
  45 + <el-input
  46 + v-model="queryParams.companyEmployeeUserName"
  47 + placeholder="请输入承接人"
  48 + clearable
  49 + style="width: 220px"
  50 + @keyup.enter="handleQuery"
  51 + />
  52 + </el-form-item>
  53 + <el-form-item label="保单状态" prop="policystatus">
  54 + <el-select
  55 + v-model="queryParams.policystatus"
  56 + placeholder="选择进度"
  57 + clearable
  58 + style="width: 220px"
  59 + >
  60 + <el-option
  61 + v-for="dict in statusOption"
  62 + :key="dict.value"
  63 + :label="dict.label"
  64 + :value="dict.value"
  65 + />
  66 + </el-select>
  67 + </el-form-item>
  68 + <el-form-item label="保单进度" prop="orderprogress">
  69 + <el-select
  70 + v-model="queryParams.orderprogress"
  71 + placeholder="选择进度"
  72 + clearable
  73 + style="width: 220px"
  74 + >
  75 + <el-option
  76 + v-for="dict in progressOption"
  77 + :key="dict.value"
  78 + :label="dict.label"
  79 + :value="dict.value"
  80 + />
  81 + </el-select>
  82 + </el-form-item>
  83 + <el-form-item label="车主" prop="name">
  84 + <el-input
  85 + v-model="queryParams.name"
  86 + placeholder="请输入车主"
  87 + clearable
  88 + style="width: 220px"
  89 + @keyup.enter="handleQuery"
  90 + />
  91 + </el-form-item>
  92 + <el-form-item label="车牌号" prop="licensePlate">
  93 + <el-input
  94 + v-model="queryParams.licensePlate"
  95 + placeholder="请输入车牌号"
  96 + clearable
  97 + style="width: 220px"
  98 + @keyup.enter="handleQuery"
  99 + />
  100 + </el-form-item>
  101 + <el-form-item label="时间范围" prop="timeFrame">
  102 + <el-date-picker
  103 + v-model="timeFrame"
  104 + type="datetimerange"
  105 + range-separator="To"
  106 + start-placeholder="开始时间"
  107 + end-placeholder="结束时间"
  108 + @change="handleTime"
  109 + />
  110 + </el-form-item>
  111 + <el-form-item>
  112 + <el-button type="primary" icon="Search" @click="handleQuery"
  113 + >查询</el-button
  114 + >
  115 + <el-button icon="Refresh" @click="resetQuery">重置</el-button>
  116 + </el-form-item>
  117 + </el-form>
  118 +
  119 + <el-row :gutter="10" class="mb8">
  120 + <el-col :span="1.5">
  121 + <el-button
  122 + type="warning"
  123 + plain
  124 + icon="Download"
  125 + @click="handleExport"
  126 + v-hasPermi="['system:registrationmonitor:export']"
  127 + >导出</el-button
  128 + >
  129 + </el-col>
  130 + </el-row>
  131 +
  132 + <!-- 表格数据 -->
  133 + <el-table v-loading="loading" :data="policyList">
  134 + <el-table-column label="序号" width="55" type="index" />
  135 + <el-table-column
  136 + label="登记时间"
  137 + prop="createTime"
  138 + width="160"
  139 + align="center"
  140 + />
  141 + <el-table-column
  142 + label="车牌号"
  143 + prop="licensePlateNumber"
  144 + width="150"
  145 + align="center"
  146 + />
  147 + <el-table-column
  148 + label="车架号"
  149 + prop="frameNumber"
  150 + width="240"
  151 + align="center"
  152 + />
  153 + <el-table-column
  154 + label="发动机号"
  155 + width="180"
  156 + prop="engineNumber"
  157 + align="center"
  158 + :show-overflow-tooltip="true"
  159 + />
  160 + <el-table-column label="是否新能源" width="150" align="center">
  161 + <template #default="{ row }">
  162 + {{ row.isNewEnergy === "1" ? "是" : "否" }}
  163 + </template>
  164 + </el-table-column>
  165 + <el-table-column
  166 + label="企业名称"
  167 + prop="businessName"
  168 + width="100"
  169 + align="center"
  170 + />
  171 + <el-table-column
  172 + label="统一信用代码"
  173 + prop="uniformCreditCode"
  174 + width="180"
  175 + align="center"
  176 + />
  177 + <el-table-column
  178 + label="联系电话"
  179 + prop="businessPhone"
  180 + width="150"
  181 + align="center"
  182 + />
  183 + <el-table-column
  184 + align="center"
  185 + label="分配机制"
  186 + width="120"
  187 + prop="distributionMechanism"
  188 + />
  189 + <el-table-column
  190 + align="center"
  191 + label="操作人"
  192 + width="120"
  193 + prop="distributionMechanism"
  194 + >
  195 + <template #default="{ row }">
  196 + <span>{{
  197 + row.companyEmployeeUserName || row.associationEmployeeUserName
  198 + }}</span>
  199 + </template>
  200 + </el-table-column>
  201 + <el-table-column
  202 + align="center"
  203 + label="操作时间"
  204 + width="160"
  205 + prop="distributionTime"
  206 + />
  207 + <el-table-column
  208 + label="承保公司"
  209 + prop="companyName"
  210 + width="150"
  211 + align="center"
  212 + />
  213 + <el-table-column label="保单进度" width="100" prop="orderProgress" />
  214 + <el-table-column
  215 + label="保单状态"
  216 + width="100"
  217 + prop="policyStatus"
  218 + :show-overflow-tooltip="true"
  219 + />
  220 + <el-table-column label="时效" width="100">
  221 + <template #default="{ row }">
  222 + <span>{{
  223 + row.policyStatus === "已作废" ||
  224 + row.policyStatus === "退回后用户取消登记"
  225 + ? "无"
  226 + : timeDifference(row)
  227 + }}</span>
  228 + </template>
  229 + </el-table-column>
  230 + <el-table-column
  231 + label="查询回馈"
  232 + fixed="right"
  233 + width="100"
  234 + prop="Feedback"
  235 + >
  236 + <template #default="{ row }">
  237 + <el-button
  238 + v-show="
  239 + row.policyStatus === '已作废' || row.policyStatus === '已办结'
  240 + "
  241 + type="primary"
  242 + @click="queryRemark(row)"
  243 + >查阅</el-button
  244 + >
  245 + </template>
  246 + </el-table-column>
  247 + </el-table>
  248 +
  249 + <pagination
  250 + v-show="total > 0"
  251 + :total="total"
  252 + v-model:page="queryParams.pageNum"
  253 + v-model:limit="queryParams.pageSize"
  254 + @pagination="getList"
  255 + />
  256 +
  257 + <!-- 查阅信息弹出框 -->
  258 + <el-dialog v-model="open" title="保单信息" width="700" append-to-body>
  259 + <el-form :model="form" ref="policyRef" label-width="100px">
  260 + <el-row>
  261 + <el-col :span="12">
  262 + <el-form-item label="车牌号" prop="licensePlateNumber">
  263 + <el-input
  264 + v-model="form.licensePlateNumber"
  265 + placeholder="请输入车牌号"
  266 + disabled
  267 + />
  268 + </el-form-item>
  269 + </el-col>
  270 + <el-col :span="12">
  271 + <el-form-item label="车架号" prop="frameNumber">
  272 + <el-input
  273 + v-model="form.frameNumber"
  274 + disabled
  275 + placeholder="请输入车架号"
  276 + />
  277 + </el-form-item>
  278 + </el-col>
  279 + </el-row>
  280 + <el-row>
  281 + <el-col :span="12">
  282 + <el-form-item label="企业名称" prop="businessName">
  283 + <el-input
  284 + v-model="form.businessName"
  285 + :disabled="!hasRole"
  286 + placeholder="请输入企业名称"
  287 + />
  288 + </el-form-item>
  289 + </el-col>
  290 + <el-col :span="12">
  291 + <el-form-item label="联系电话" prop="businessPhone">
  292 + <el-input
  293 + v-model="form.businessPhone"
  294 + :disabled="!hasRole"
  295 + placeholder="请输入联系电话"
  296 + />
  297 + </el-form-item>
  298 + </el-col>
  299 + </el-row>
  300 + <el-row>
  301 + <el-col :span="12">
  302 + <el-form-item label="车辆使用性质" prop="vehicleNature">
  303 + <el-select
  304 + v-model="form.vehicleNatureId"
  305 + disabled
  306 + style="width: 230px"
  307 + >
  308 + <el-option
  309 + v-for="item in carNatureOption"
  310 + :key="item.id"
  311 + :label="item.name"
  312 + :value="item.id"
  313 + />
  314 + </el-select>
  315 + </el-form-item>
  316 + </el-col>
  317 + <el-col :span="12">
  318 + <el-form-item label="保险需求" prop="requirements">
  319 + <el-select
  320 + v-model="form.requirementsId"
  321 + disabled
  322 + style="width: 230px"
  323 + >
  324 + <el-option
  325 + v-for="item in needOption"
  326 + :key="item.id"
  327 + :label="item.name"
  328 + :value="item.id"
  329 + />
  330 + </el-select>
  331 + </el-form-item>
  332 + </el-col>
  333 + </el-row>
  334 + <el-row
  335 + v-if="
  336 + form.commercialInsurancePolicyNumber ||
  337 + form.strongInsurancePolicyNumber
  338 + "
  339 + >
  340 + <el-col :span="12">
  341 + <el-form-item
  342 + label="商险单号"
  343 + prop="commercialInsurancePolicyNumber"
  344 + >
  345 + <el-input
  346 + v-model="form.commercialInsurancePolicyNumber"
  347 + disabled
  348 + placeholder="请输入承保单号"
  349 + />
  350 + </el-form-item>
  351 + </el-col>
  352 + <el-col :span="12">
  353 + <el-form-item label="强险单号" prop="strongInsurancePolicyNumber">
  354 + <el-input
  355 + v-model="form.strongInsurancePolicyNumber"
  356 + disabled
  357 + placeholder="请输入承保单号"
  358 + />
  359 + </el-form-item>
  360 + </el-col>
  361 + </el-row>
  362 + <el-form-item :label="labelTitle" prop="progress">
  363 + <QuillEditor :value="form.comment" @updateValue="getMsg" />
  364 + </el-form-item>
  365 + </el-form>
  366 + <template #footer>
  367 + <div class="dialog-footer">
  368 + <el-button @click="open = false">取消</el-button>
  369 + <el-button
  370 + type="primary"
  371 + v-hasPermi="['policy:info:edit']"
  372 + @click="open = false"
  373 + >确认</el-button
  374 + >
  375 + </div>
  376 + </template>
  377 + </el-dialog>
  378 + </div>
  379 +</template>
  380 +
  381 +<script setup>
  382 +import {
  383 + queryList,
  384 + queryResult,
  385 + queryDefeatContent,
  386 + getCarDetail,
  387 +} from "@/api/policy";
  388 +import { queryCarNature } from "@/api/configurationCenter/carNature.js";
  389 +import { queryNeed } from "@/api/configurationCenter/need.js";
  390 +import { computed, reactive } from "vue";
  391 +import { intervalTime } from "@/utils/intervalTime";
  392 +const { proxy } = getCurrentInstance();
  393 +const loading = ref(false);
  394 +const total = ref(0);
  395 +const open = ref(false);
  396 +const isCustom = ref(false);
  397 +const labelTitle = ref("保单回馈");
  398 +// 表单
  399 +const form = ref({
  400 + name: "",
  401 + identificationNumber: "",
  402 + sysDeptId: "",
  403 + customizeVehicleBrand: "",
  404 + customizeVehicleModel: "",
  405 + licensePlateNumber: "",
  406 + lincensePlateTypeId: "",
  407 + isCustomizeBrandAndModel: "1",
  408 + frameNumber: "",
  409 + engineNumber: "",
  410 + vehicleTypeId: "",
  411 + vehicleNatureId: "",
  412 + passengersNumber: "",
  413 + passengerCapacity: "",
  414 + emissions: "",
  415 + vehicleModelId: "",
  416 + vehicleBrandId: "",
  417 + tractionMass: "",
  418 + requirementsId: "",
  419 +});
  420 +const showSearch = ref(true);
  421 +// 请求选项参数
  422 +const getParams = reactive({
  423 + pageNum: 1,
  424 + pageSize: 100,
  425 +});
  426 +// 查询参数
  427 +const queryParams = reactive({
  428 + pageNum: 1,
  429 + pageSize: 10,
  430 + name: "",
  431 + licensePlate: "",
  432 + association: "",
  433 + company: "",
  434 + type: 1,
  435 + associationapprovetype: "",
  436 + companyEmployeeUserName: "",
  437 + orderprogress: "",
  438 + policystatus: "",
  439 + startTime: "",
  440 + endTime: "",
  441 +});
  442 +const timeFrame = ref(null);
  443 +const statusOption = ref([
  444 + {
  445 + value: 0,
  446 + label: "进行中",
  447 + },
  448 + {
  449 + value: 1,
  450 + label: "疑难件",
  451 + },
  452 + {
  453 + value: 2,
  454 + label: "已办结",
  455 + },
  456 + {
  457 + value: 6,
  458 + label: "协会退回",
  459 + },
  460 + {
  461 + value: 7,
  462 + label: "放弃登记",
  463 + },
  464 +]);
  465 +
  466 +const progressOption = ref([
  467 + {
  468 + value: 0,
  469 + label: "待承接",
  470 + },
  471 + {
  472 + value: 1,
  473 + label: "已承接",
  474 + },
  475 +]);
  476 +
  477 +const options = [
  478 + {
  479 + value: 0,
  480 + label: "系统分配",
  481 + },
  482 + {
  483 + value: 1,
  484 + label: "人工分配",
  485 + },
  486 +];
  487 +// 保单列表
  488 +const policyList = ref([]);
  489 +
  490 +// 计算时效
  491 +const timeDifference = computed(() => (row) => {
  492 + let startTime = "";
  493 + let endTime = "";
  494 + // 判断协会是否处理了,如果没有则不计算时效
  495 + if (row.distributionTime !== null) {
  496 + startTime = new Date(row.distributionTime);
  497 + } else {
  498 + return "无";
  499 + }
  500 + // 判断结束时间,已办结时间为最后时间,如果没有则使用员工承接时间
  501 + if (row.policyTime !== null) {
  502 + endTime = new Date(row.policyTime);
  503 + } else if (row.companyEmployeeUndertakeTime !== null) {
  504 + endTime = new Date(row.companyEmployeeUndertakeTime);
  505 + } else {
  506 + endTime = Date.now();
  507 + }
  508 + return intervalTime(startTime, endTime);
  509 +});
  510 +// 车辆使用性质
  511 +const carNatureOption = ref([]);
  512 +const getcarNatureOption = async () => {
  513 + const { data } = await queryCarNature(getParams);
  514 + carNatureOption.value = data.records;
  515 +};
  516 +getcarNatureOption();
  517 +
  518 +// 保险需求
  519 +const needOption = ref([]);
  520 +const getNeedOption = async () => {
  521 + const { data } = await queryNeed(getParams);
  522 + needOption.value = data.records;
  523 +};
  524 +getNeedOption();
  525 +
  526 +/** 导出按钮操作 */
  527 +function handleExport() {
  528 + proxy.download(
  529 + "registration/monitor/export",
  530 + {
  531 + ...queryParams,
  532 + },
  533 + `user_${new Date().getTime()}.xlsx`
  534 + );
  535 +}
  536 +
  537 +// 选择时间范围
  538 +const handleTime = (valu) => {
  539 + queryParams.startTime = proxy.parseTime(valu[0]);
  540 + queryParams.endTime = proxy.parseTime(valu[1]);
  541 +};
  542 +// 获取保单列表
  543 +const getList = async () => {
  544 + loading.value = true;
  545 + const res = await queryList(queryParams);
  546 + policyList.value = res.rows;
  547 + total.value = res.total;
  548 + loading.value = false;
  549 +};
  550 +
  551 +/** 重置操作表单 */
  552 +function reset() {
  553 + proxy.resetForm("policyRef");
  554 +}
  555 +
  556 +/** 查询备注或回馈 */
  557 +const queryRemark = async (row) => {
  558 + const { data } = await getCarDetail(row.businessKey);
  559 + form.value = data;
  560 + isCustom.value = data.isCustomizeBrandAndModel == "0";
  561 + if (row.policyStatus === "已作废") {
  562 + labelTitle.value = "作废备注";
  563 + const { data } = await queryDefeatContent({
  564 + processInstanceId: row.processInstanceId,
  565 + type: 2,
  566 + });
  567 + form.value.comment = data.message;
  568 + open.value = true;
  569 + } else {
  570 + queryResult({ processInstanceId: row.processInstanceId }).then((res) => {
  571 + form.value.commercialInsurancePolicyNumber =
  572 + res?.data?.commercialInsurancePolicyNumber;
  573 + form.value.strongInsurancePolicyNumber =
  574 + res?.data?.strongInsurancePolicyNumber;
  575 + form.value.comment = res?.data?.message;
  576 + open.value = true;
  577 + });
  578 + }
  579 +};
  580 +
  581 +const getMsg = (val) => {
  582 + form.value.comment = val;
  583 +};
  584 +
  585 +/** 搜索按钮操作 */
  586 +function handleQuery() {
  587 + queryParams.pageNum = 1;
  588 + getList();
  589 +}
  590 +/** 重置按钮操作 */
  591 +function resetQuery() {
  592 + proxy.resetForm("queryRef");
  593 + queryParams.startTime = "";
  594 + queryParams.endTime = "";
  595 + handleQuery();
  596 +}
  597 +getList();
  598 +</script>
  599 +
  600 +<style>
  601 +.total_line {
  602 + display: flex;
  603 + align-items: center;
  604 + gap: 10px;
  605 + margin-bottom: 20px;
  606 + font-size: 14px;
  607 + color: #666;
  608 +}
  609 +</style>
@@ -325,11 +325,28 @@ @@ -325,11 +325,28 @@
325 </el-form-item> 325 </el-form-item>
326 </el-col> 326 </el-col>
327 </el-row> 327 </el-row>
328 - <el-row>  
329 - <el-col v-if="form.policyNumber" :span="12">  
330 - <el-form-item label="承保单号" prop="policyNumber"> 328 + <el-row
  329 + v-if="
  330 + form.commercialInsurancePolicyNumber ||
  331 + form.strongInsurancePolicyNumber
  332 + "
  333 + >
  334 + <el-col :span="12">
  335 + <el-form-item
  336 + label="商险单号"
  337 + prop="commercialInsurancePolicyNumber"
  338 + >
331 <el-input 339 <el-input
332 - v-model="form.policyNumber" 340 + v-model="form.commercialInsurancePolicyNumber"
  341 + disabled
  342 + placeholder="请输入承保单号"
  343 + />
  344 + </el-form-item>
  345 + </el-col>
  346 + <el-col :span="12">
  347 + <el-form-item label="强险单号" prop="strongInsurancePolicyNumber">
  348 + <el-input
  349 + v-model="form.strongInsurancePolicyNumber"
333 disabled 350 disabled
334 placeholder="请输入承保单号" 351 placeholder="请输入承保单号"
335 /> 352 />
@@ -359,7 +376,6 @@ @@ -359,7 +376,6 @@
359 import { 376 import {
360 queryList, 377 queryList,
361 queryResult, 378 queryResult,
362 - updateCarInfo,  
363 queryDefeatContent, 379 queryDefeatContent,
364 getCarDetail, 380 getCarDetail,
365 } from "@/api/policy"; 381 } from "@/api/policy";
@@ -409,6 +425,7 @@ const queryParams = reactive({ @@ -409,6 +425,7 @@ const queryParams = reactive({
409 licensePlate: "", 425 licensePlate: "",
410 association: "", 426 association: "",
411 company: "", 427 company: "",
  428 + type: 0,
412 associationapprovetype: "", 429 associationapprovetype: "",
413 companyEmployeeUserName: "", 430 companyEmployeeUserName: "",
414 orderprogress: "", 431 orderprogress: "",
@@ -545,7 +562,10 @@ const queryRemark = async (row) => { @@ -545,7 +562,10 @@ const queryRemark = async (row) => {
545 open.value = true; 562 open.value = true;
546 } else { 563 } else {
547 queryResult({ processInstanceId: row.processInstanceId }).then((res) => { 564 queryResult({ processInstanceId: row.processInstanceId }).then((res) => {
548 - form.value.policyNumber = res?.data?.policyNumber; 565 + form.value.commercialInsurancePolicyNumber =
  566 + res?.data?.commercialInsurancePolicyNumber;
  567 + form.value.strongInsurancePolicyNumber =
  568 + res?.data?.strongInsurancePolicyNumber;
549 form.value.comment = res?.data?.message; 569 form.value.comment = res?.data?.message;
550 open.value = true; 570 open.value = true;
551 }); 571 });
@@ -568,13 +588,6 @@ function resetQuery() { @@ -568,13 +588,6 @@ function resetQuery() {
568 queryParams.endTime = ""; 588 queryParams.endTime = "";
569 handleQuery(); 589 handleQuery();
570 } 590 }
571 -const submit = async () => {  
572 - updateCarInfo(form.value).then((response) => {  
573 - proxy.$modal.msgSuccess("修改成功");  
574 - open.value = false;  
575 - getList();  
576 - });  
577 -};  
578 getList(); 591 getList();
579 </script> 592 </script>
580 593