作者 xiaoqiu

完成部分修改

# 页面标题
VITE_APP_TITLE = 车险登记平台
VITE_APP_TITLE = 广西车险登记平台
# 开发环境配置
VITE_APP_ENV = 'development'
... ...
# 页面标题
VITE_APP_TITLE = 车险登记平台
VITE_APP_TITLE = 广西车险登记平台
# 生产环境配置
VITE_APP_ENV = 'production'
... ...
... ... @@ -63,7 +63,7 @@ export function queryResult(params) {
})
}
// 查询作废备注
// 查询备注
export function queryDefeatContent(params) {
return request({
url: '/registration/monitor/getComment',
... ... @@ -123,3 +123,19 @@ export function getCarDetail(id) {
method: 'get'
})
}
// 获取流转下一家公司
export function getCompanyTip() {
return request({
url: `/registration/getNext`,
method: 'post'
})
}
// 获取轮次
export function getCount() {
return request({
url: `/system/rule/getCounting`,
method: 'post'
})
}
... ...
... ... @@ -9,7 +9,7 @@
<div class="card-panel-text">未承接</div>
<count-to
:start-val="0"
:end-val="102400"
:end-val="totalList[0]"
:duration="2600"
class="card-panel-num"
/>
... ... @@ -25,7 +25,7 @@
<div class="card-panel-text">已承接</div>
<count-to
:start-val="0"
:end-val="81212"
:end-val="totalList[1]"
:duration="3000"
class="card-panel-num"
/>
... ... @@ -41,7 +41,7 @@
<div class="card-panel-text">未完成</div>
<count-to
:start-val="0"
:end-val="9280"
:end-val="totalList[2]"
:duration="3200"
class="card-panel-num"
/>
... ... @@ -57,7 +57,7 @@
<div class="card-panel-text">已完成</div>
<count-to
:start-val="0"
:end-val="13600"
:end-val="totalList[3]"
:duration="3600"
class="card-panel-num"
/>
... ... @@ -69,6 +69,13 @@
<script setup>
import { CountTo } from "vue3-count-to";
defineProps({
totalList: {
type: Object,
default: () => {},
},
});
const $emit = defineEmits(["handleSetLineChartData"]);
const handleSetLineChartData = (type) => {
$emit("handleSetLineChartData", type);
... ...
//计算两个时间之间的时间差 多少天时分秒
export function intervalTime(timestamp1, timestamp2) {
// 将时间戳转换为毫秒
const diffInMilliseconds = Math.abs(timestamp2 - timestamp1);
// 1 小时等于 3600000 毫秒
return (diffInMilliseconds / 3600000).toFixed(2) + '时';
}
\ No newline at end of file
... ...
... ... @@ -26,7 +26,22 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" prop="id" align="center" />
<el-table-column label="保险公司名称" prop="deptName" align="center" />
<el-table-column label="周分配订单" width="240" align="center" prop="num">
<el-table-column label="状态" align="center" key="status">
<template #default="scope">
<el-switch
v-model="scope.row.status"
active-value="0"
inactive-value="1"
@change="handleUpdate(scope.row)"
/>
</template>
</el-table-column>
<el-table-column
label="周期分配订单"
width="240"
align="center"
prop="num"
>
<template #default="{ row }">
<el-input v-model="row.num" type="num" />
</template>
... ... @@ -125,8 +140,9 @@ onMounted(() => {
// 获取规则列表
const getList = async () => {
const { data } = await queryRules();
rulesList.value = data;
const { data } = await queryRules(queryParams);
rulesList.value = data.records || data;
total.value = data.total || 0;
};
/** 查询部门列表 */
const getDeptList = () => {
... ...
... ... @@ -17,7 +17,7 @@
</div>
<ul class="list-group list-group-striped">
<li class="list-group-item">
<svg-icon icon-class="user" />用户昵称
<svg-icon icon-class="user" />用户姓名
<div class="pull-right">{{ state.user.nickName }}</div>
</li>
<li class="list-group-item">
... ... @@ -47,7 +47,7 @@
</el-card>
</el-col>
<el-col :span="18" :xs="24">
<PanelGroup :listData="listData" />
<PanelGroup :totalList="totalList" />
<!-- 统计柱状图 -->
<div class="echarts_box">
<div
... ... @@ -87,6 +87,12 @@ const { proxy } = getCurrentInstance();
const userStore = useUserStore();
const chartRef = ref(null);
const listData = ref([]);
const totalList = ref({
0: 0,
1: 0,
2: 0,
3: 0,
});
const xList = ref([]);
const company = ref("");
const option = ref({});
... ... @@ -107,7 +113,7 @@ const state = reactive({
onMounted(() => {
getList();
if (proxy.$auth.hasRoleOr(["admin", "common"])) {
if (proxy.$auth.hasRoleOr(["admin", "associationemployee"])) {
getDeptList();
}
});
... ... @@ -151,6 +157,7 @@ const getList = async () => {
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 13; j++) {
arrList[i]?.push(newArr[j][i]);
totalList.value[i] += newArr[j][i];
}
}
listData.value = arrList.map((child, index) => {
... ...
... ... @@ -8,7 +8,7 @@
:inline="true"
label-width="68px"
>
<el-form-item label="用户姓名" prop="name">
<el-form-item label="车主姓名" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入名称"
... ... @@ -62,7 +62,6 @@
<el-table-column
label="车架号"
prop="frameNumber"
width="180"
align="center"
:show-overflow-tooltip="true"
/>
... ... @@ -90,7 +89,7 @@
prop="associationEmployeeUserName"
width="120"
/>
<el-table-column label="作废备注" fixed="right" width="120" prop="remark">
<el-table-column label="作废备注" width="120" fixed="right" prop="remark">
<template #default>
<el-button type="primary">查阅</el-button>
</template>
... ... @@ -129,18 +128,6 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="发动机号" prop="engineNumber">
<el-input v-model="form.engineNumber" placeholder="无" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上年承保公司" prop="sysDeptName">
<el-input v-model="form.sysDeptName" disabled placeholder="无" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车主姓名" prop="name">
<el-input
v-model="form.name"
... ... @@ -161,80 +148,16 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车辆类型" prop="vehicleType">
<el-input
v-model="form.vehicleType"
disabled
placeholder="请输入登记时间"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车辆使用性质" prop="vehicleNature">
<el-input
v-model="form.vehicleNature"
disabled
placeholder="请输入办理人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="核定载客数" prop="passengersNumber">
<el-input
v-model="form.passengersNumber"
disabled
placeholder="请输入办理人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="核定载质量" prop="passengerCapacity">
<el-input
v-model="form.passengerCapacity"
disabled
placeholder="请输入承保公司"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="排量毫升" prop="emissions">
<el-input
v-model="form.emissions"
disabled
placeholder="请输入办理人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="中文品牌" prop="vehicleBrand">
<el-input
v-model="form.vehicleBrand"
disabled
placeholder="请输入办理人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车辆型号" prop="vehicleModel">
<el-input
v-model="form.vehicleModel"
disabled
placeholder="请输入办理人"
/>
<el-form-item label="发动机号" prop="engineNumber">
<el-input v-model="form.engineNumber" placeholder="无" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="准牵引准质量" prop="tractionMass">
<el-form-item label="上年承保公司" prop="sysDeptName">
<el-input
v-model="form.tractionMass"
v-model="form.sysDeptName"
disabled
placeholder="请输入办理人"
placeholder="请输入上年承保公司"
/>
</el-form-item>
</el-col>
... ... @@ -242,17 +165,13 @@
<el-row>
<el-col :span="12">
<el-form-item label="保险需求" prop="requirements">
<el-input
v-model="form.requirements"
disabled
placeholder="请输入办理人"
/>
<el-input v-model="form.requirements" disabled placeholder="无" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="号牌种类" prop="lincensePlateType">
<el-form-item label="使用性质" prop="vehicleNature">
<el-input
v-model="form.lincensePlateType"
v-model="form.vehicleNature"
disabled
placeholder="无"
/>
... ... @@ -290,12 +209,13 @@ function reset() {
proxy.resetForm("policyRef");
}
/** 修改按钮操作 */
/** 查阅操作 */
const handleUpdate = async (row) => {
reset();
form.value = row;
const { data } = await queryDefeatContent({
processInstanceId: row.processInstanceId,
type: 2,
});
form.value.deprecatedReason = data.message;
open.value = true;
... ...
... ... @@ -86,7 +86,7 @@
<el-table-column
label="办理人"
prop="companyEmployeeUserName"
width="100"
width="150"
align="center"
/>
<el-table-column label="保单状态" width="100" prop="statue">
... ... @@ -142,22 +142,6 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="发动机号" prop="engineNumber">
<el-input v-model="form.engineNumber" placeholder="无" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="号牌种类" prop="lincensePlateType">
<el-input
v-model="form.lincensePlateType"
disabled
placeholder="无"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车主姓名" prop="name">
<el-input
v-model="form.name"
... ... @@ -178,98 +162,73 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车辆类型" prop="vehicleType">
<el-input
v-model="form.vehicleType"
disabled
placeholder="请输入登记时间"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车辆使用性质" prop="vehicleNature">
<el-input
v-model="form.vehicleNature"
disabled
placeholder="请输入办理人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="核定载客数" prop="passengersNumber">
<el-input
v-model="form.passengersNumber"
disabled
placeholder="请输入办理人"
/>
<el-form-item label="发动机号" prop="engineNumber">
<el-input v-model="form.engineNumber" placeholder="无" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="核定载质量" prop="passengerCapacity">
<el-form-item label="上年承保公司" prop="sysDeptName">
<el-input
v-model="form.passengerCapacity"
v-model="form.sysDeptName"
disabled
placeholder="请输入承保公司"
placeholder="请输入上年承保公司"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="排量毫升" prop="emissions">
<el-form-item label="分配机制" prop="distributionMechanism">
<el-input
v-model="form.emissions"
v-model="form.distributionMechanism"
disabled
placeholder="请输入办理人"
placeholder=""
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="中文品牌" prop="vehicleBrand">
<el-input
v-model="form.vehicleBrand"
disabled
placeholder="请输入办理人"
/>
<el-form-item label="承保公司" prop="companyName">
<el-input v-model="form.companyName" disabled placeholder="无" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车辆型号" prop="vehicleModel">
<el-form-item label="保险需求" prop="requirements">
<el-input
v-model="form.vehicleModel"
v-model="form.requirements"
disabled
placeholder="请输入办理人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="准牵引准质量" prop="tractionMass">
<el-form-item label="使用性质" prop="vehicleNature">
<el-input
v-model="form.tractionMass"
v-model="form.vehicleNature"
disabled
placeholder="请输入办理人"
placeholder=""
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="保险需求" prop="requirements">
<el-form-item label="强险单号" prop="strongInsurancePolicyNumber">
<el-input
v-model="form.requirements"
v-model="form.strongInsurancePolicyNumber"
disabled
placeholder="请输入办理人"
placeholder="请输入承保单号"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="承保单号" prop="policyNumber">
<el-form-item
label="商险单号"
prop="commercialInsurancePolicyNumber"
>
<el-input
v-model="form.policyNumber"
v-model="form.commercialInsurancePolicyNumber"
disabled
placeholder="请输入承保单号"
/>
... ... @@ -335,7 +294,10 @@ function lookRemark(row) {
reset();
queryResult({ processInstanceId: row.processInstanceId }).then((res) => {
form.value = row;
form.value.policyNumber = res?.data?.policyNumber;
form.value.strongInsurancePolicyNumber =
res?.data?.strongInsurancePolicyNumber;
form.value.commercialInsurancePolicyNumber =
res?.data?.commercialInsurancePolicyNumber;
form.value.message = res?.data?.message;
open.value = true;
});
... ...
... ... @@ -3,7 +3,12 @@
<!-- 表格数据 -->
<el-table v-loading="loading" :data="policyList" @row-click="handleUpdate">
<el-table-column label="序号" width="55" type="index" />
<el-table-column label="登记时间" prop="createTime" align="center" />
<el-table-column
label="登记时间"
width="160"
prop="createTime"
align="center"
/>
<el-table-column
label="车牌号"
prop="licensePlateNumber"
... ... @@ -15,24 +20,18 @@
align="center"
:show-overflow-tooltip="true"
/>
<el-table-column
label="发动机号"
prop="engineNumber"
align="center"
:show-overflow-tooltip="true"
/>
<el-table-column label="车主姓名" prop="name" align="center" />
<el-table-column label="联系电话" prop="phone" align="center" />
<el-table-column label="是否新能源" prop="isNewEnergy" align="center" />
<el-table-column label="上年承保公司" prop="sysDeptName" align="center" />
<el-table-column
label="操作"
align="center"
min-width="120"
fixed="right"
>
<template #default="{ row }">
<el-button
type="primary"
v-hasRole="['companyadmin']"
@click.stop="handleSharing(row.taskId)"
>分配</el-button
>
</template>
</el-table-column>
<el-table-column label="保单进度" prop="orderProgress" align="center" />
<el-table-column label="保单状态" prop="policyStatus" align="center" />
</el-table>
<pagination
... ... @@ -71,14 +70,14 @@
<!-- 编辑对话框 -->
<el-dialog v-model="open" :title="title" width="700" append-to-body>
<el-form :model="form" :rules="rules" ref="policyRef" label-width="100px">
<el-form :model="form" ref="policyRef" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="车牌号" prop="licensePlateNumber">
<el-input
v-model="form.licensePlateNumber"
placeholder="请输入车牌号"
maxlength="30"
disabled
/>
</el-form-item>
</el-col>
... ... @@ -86,8 +85,8 @@
<el-form-item label="车架号" prop="frameNumber">
<el-input
v-model="form.frameNumber"
disabled
placeholder="请输入车架号"
maxlength="30"
/>
</el-form-item>
</el-col>
... ... @@ -97,8 +96,8 @@
<el-form-item label="车主姓名" prop="name">
<el-input
v-model="form.name"
disabled
placeholder="请输入车主姓名"
maxlength="11"
/>
</el-form-item>
</el-col>
... ... @@ -106,27 +105,40 @@
<el-form-item label="联系电话" prop="phone">
<el-input
v-model="form.phone"
disabled
placeholder="请输入联系电话"
maxlength="50"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="登记时间" prop="createTime">
<el-input
v-model="form.createTime"
placeholder="请输入登记时间"
/>
<el-form-item label="发动机号" prop="engineNumber">
<el-input v-model="form.engineNumber" placeholder="无" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上年承保公司" prop="sysDeptName">
<el-input
v-model="form.sysDeptName"
disabled
placeholder="请输入上年承保公司"
maxlength="50"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="保险需求" prop="requirements">
<el-input v-model="form.requirements" disabled placeholder="无" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="使用性质" prop="vehicleNature">
<el-input
v-model="form.vehicleNature"
disabled
placeholder="无"
/>
</el-form-item>
</el-col>
... ...
... ... @@ -89,12 +89,7 @@
</el-form>
<!-- 表格数据 -->
<el-table
v-loading="loading"
:data="policyList"
@selection-change="handleSelectionChange"
@row-click="handleUpdate"
>
<el-table v-loading="loading" :data="policyList" @row-click="handleUpdate">
<el-table-column label="序号" type="index" width="55" />
<el-table-column
label="登记时间"
... ... @@ -155,7 +150,7 @@
<el-table-column
label="办理人"
prop="companyEmployeeUserName"
width="100"
width="150"
align="center"
/>
<el-table-column
... ... @@ -164,6 +159,22 @@
prop="orderProgress"
align="center"
/>
<el-table-column
label="操作"
v-hasRole="['companyadmin']"
align="center"
min-width="120"
fixed="right"
>
<template #default="{ row }">
<el-button
type="primary"
v-show="row.orderProgress !== '已承接'"
@click.stop="handleTransfer(row.taskId)"
>分配/转办</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
... ... @@ -174,6 +185,32 @@
@pagination="getList"
/>
<!-- 转办分配对话框 -->
<el-dialog
v-model="transferShow"
title="请选择人员:"
width="500"
append-to-body
>
<div class="company_box">
<el-radio-group v-model="transferForm.username">
<el-radio
v-for="item in transferOptions"
:key="item.userName"
:label="item.userName"
>{{ item.nickName }}</el-radio
>
</el-radio-group>
<div v-show="transferOptions.length === 0">暂无其他员工</div>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="transferShow = false">取消</el-button>
<el-button type="primary" @click="submitTransfer">确定</el-button>
</div>
</template>
</el-dialog>
<!-- 编辑对话框 -->
<el-dialog v-model="open" title="保单信息" width="700" append-to-body>
<el-form :model="form" ref="policyRef" label-width="100px">
... ... @@ -199,22 +236,6 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="发动机号" prop="engineNumber">
<el-input v-model="form.engineNumber" placeholder="无" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="排放毫升量" prop="emissions">
<el-input
v-model="form.emissions"
disabled
placeholder="请输入车架号"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车主姓名" prop="name">
<el-input
v-model="form.name"
... ... @@ -235,12 +256,8 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="登记时间" prop="createTime">
<el-input
v-model="form.createTime"
disabled
placeholder="请输入登记时间"
/>
<el-form-item label="发动机号" prop="engineNumber">
<el-input v-model="form.engineNumber" placeholder="无" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
... ... @@ -255,22 +272,6 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="核定载质量" prop="passengerCapacity">
<el-input
v-model="form.passengerCapacity"
disabled
placeholder="无"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="核定载人数" prop="passengersNumber">
<el-input v-model="form.passengersNumber" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="分配机制" prop="distributionMechanism">
<el-input
v-model="form.distributionMechanism"
... ... @@ -287,38 +288,11 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车辆品牌" prop="vehicleBrand">
<el-input
v-model="form.vehicleBrand"
disabled
placeholder="车辆品牌"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车辆型号" prop="vehicleModel">
<el-input v-model="form.vehicleModel" disabled placeholder="无" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="保险需求" prop="requirements">
<el-input v-model="form.requirements" disabled placeholder="无" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="号牌种类" prop="lincensePlateType">
<el-input
v-model="form.lincensePlateType"
disabled
placeholder="无"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="使用性质" prop="vehicleNature">
<el-input
v-model="form.vehicleNature"
... ... @@ -327,11 +301,6 @@
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车辆类型" prop="vehicleType">
<el-input v-model="form.vehicleType" disabled placeholder="无" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-dialog>
... ... @@ -339,13 +308,15 @@
</template>
<script setup>
import { queryOngoingList } from "@/api/policy";
import { get } from "@vueuse/core";
import { queryOngoingList, getUserList, transfer } from "@/api/policy";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const total = ref(5);
const open = ref(false);
const form = ref({});
const transferForm = ref({});
const transferShow = ref(false);
const transferOptions = ref([]);
const showSearch = ref(true);
const queryParams = reactive({
pageNum: 1,
... ... @@ -395,14 +366,19 @@ const statusOption = ref([
]);
const policyList = ref([]);
/** 多选框选中数据 */
function handleSelectionChange(selection) {
// ids.value = selection.map(item => item.roleId);
// single.value = selection.length != 1;
// multiple.value = !selection.length;
console.log(selection);
}
// 获取人员列表
const getUser = async () => {
const { data } = await getUserList();
transferOptions.value = data;
};
// 分配人员
const handleTransfer = (id) => {
transferForm.value.taskId = id;
getUser();
transferShow.value = true;
};
// 获取进行中列表
const getList = async () => {
loading.value = true;
const res = await queryOngoingList(queryParams);
... ... @@ -433,6 +409,19 @@ function resetQuery() {
proxy.resetForm("queryRef");
handleQuery();
}
/** 提交通过分配转办人员 */
function submitTransfer() {
const data = {
username: transferForm.value.username,
};
const taskId = transferForm.value.taskId;
transfer(data, taskId).then((res) => {
transferShow.value = false;
getList();
proxy.$modal.msgSuccess("保单已分配成功");
});
}
getList();
</script>
... ...
<template>
<div class="app-container">
<!-- 表格数据 -->
<el-table v-loading="loading" :data="policyList">
<el-table v-loading="loading" :data="policyList" @row-click="handleTask">
<el-table-column label="序号" width="55" type="index" />
<el-table-column label="登记时间" width="160" align="center">
<template #default="{ row }">
<span>{{ row.initialRegistration || row.createTime }}</span>
</template>
</el-table-column>
<el-table-column
label="登记时间"
prop="createTime"
width="160"
align="center"
/>
<el-table-column
label="车牌号"
prop="licensePlateNumber"
... ... @@ -16,80 +16,64 @@
align="center"
/>
<el-table-column
label="车号"
label="车辆识别代号"
width="180"
prop="frameNumber"
align="center"
:show-overflow-tooltip="true"
/>
<el-table-column
label="车主姓名"
prop="name"
width="100"
align="center"
/>
<el-table-column
label="联系电话"
prop="phone"
label="发动机号"
width="180"
prop="engineNumber"
align="center"
:show-overflow-tooltip="true"
/>
<el-table-column
label="上年承保公司"
prop="sysDeptName"
width="150"
align="center"
/>
<el-table-column
v-show="hasCompanyadmin"
label="分配机制"
prop="distributionMechanism"
label="是否新能源"
prop="isNewEnergy"
width="150"
align="center"
/>
<el-table-column
label="订单分配时间"
prop="distributionTime"
width="160"
align="center"
/>
<el-table-column
label="保单进度"
prop="orderProgress"
width="150"
label="车主姓名"
prop="name"
width="100"
align="center"
/>
<el-table-column
label="承接时间"
prop="companyEmployeeUndertakeTime"
width="160"
label="联系电话"
prop="phone"
width="180"
align="center"
/>
<el-table-column
v-show="hasCompanyadmin"
label="分配人"
prop="associationEmployeeUserName"
label="上年承保公司"
prop="sysDeptName"
width="150"
align="center"
/>
<el-table-column
v-show="hasCompanyadmin"
label="承接人"
prop="companyEmployeeUserName"
width="150"
align="center"
/>
v-hasRole="['associationemployee']"
label="保单状态"
width="100"
prop="statue"
>
<template #default="{ row }">
{{ row.policyStatus || "待处理" }}
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
min-width="380"
min-width="280"
fixed="right"
>
<template #default="{ row }">
<el-button
type="primary"
v-hasPermi="['policy:pending:continue']"
@click.stop="handleContinue(row)"
@click="handleContinue(row)"
>{{
row.orderProgress === "已承接" ? "承接回馈" : "承接"
}}</el-button
... ... @@ -97,53 +81,59 @@
<el-button
type="primary"
v-show="
row.policyStatus !== '疑难件' && row.orderProgress === '已承接'
row.policyStatus !== '问题件' && row.orderProgress === '已承接'
"
v-hasPermi="['policy:pending:troubleshooting']"
@click.stop="handleTroubleshooting(row.taskId)"
>疑难件</el-button
@click="handleTroubleshooting(row.taskId)"
>问题件</el-button
>
<el-button
type="primary"
v-hasPermi="['policy:pending:sharing']"
@click.stop="handleSharing(row.taskId)"
v-hasRole="['companyadmin']"
@click="handleSharing(row.taskId)"
>分配</el-button
>
<el-button
type="primary"
v-show="row.orderProgress !== '已承接'"
v-hasPermi="['policy:pending:transfer']"
@click.stop="handleSharing(row.taskId)"
@click="handleSharing(row.taskId)"
>转办</el-button
>
<el-button
type="primary"
v-show="hasRole"
@click.stop="handleSuccess('0', row.taskId)"
>通过</el-button
>
<el-button
type="primary"
v-show="hasRole"
@click.stop="handleFallback('1', row.taskId)"
>退回</el-button
v-show="
row.policyStatus !== '问题件' &&
checkRole(['associationemployee'])
"
@click="handleUpdate(row)"
>审核</el-button
>
<el-button
type="primary"
v-show="hasRole"
@click.stop="handleUpdate(row)"
>修改</el-button
v-show="
row.policyStatus === '问题件' &&
checkRole(['associationemployee'])
"
@click="lookReason(row)"
>查询</el-button
>
<el-button
type="primary"
v-show="hasRole"
@click.stop="handleVoid('2', row.taskId)"
v-show="
row.policyStatus === '问题件' &&
checkRole(['associationemployee'])
"
@click="handleVoid('2')"
>作废</el-button
>
<el-button
type="primary"
v-show="hasRole"
@click.stop="handleAuthCompany('0', row.taskId)"
v-show="
row.policyStatus === '问题件' &&
checkRole(['associationemployee'])
"
@click="handleAuthCompany('0')"
>分配</el-button
>
</template>
... ... @@ -159,10 +149,10 @@
@pagination="getList"
/>
<!-- 表单作废对话框 -->
<!-- 表单作废,退回。问题件对话框 -->
<el-dialog
v-model="deprecatedShow"
title="温馨提示:该保单作废后车牌号、车架号在本自然年度无法重新提交"
:title="activeTitle"
width="500"
append-to-body
>
... ... @@ -195,14 +185,16 @@
/>
<el-button type="primary" @click="getDeptList">查询</el-button>
</div>
<el-radio-group v-model="companyForm.deptId">
<el-radio
v-for="item in deptOptions"
:key="item.deptId"
:label="item.deptId"
>{{ item.deptName }}</el-radio
>
</el-radio-group>
<div class="company_content">
<el-radio-group v-model="companyForm.deptId">
<el-radio
v-for="item in deptOptions"
:key="item.deptId"
:label="item.deptId"
>{{ item.deptName }}</el-radio
>
</el-radio-group>
</div>
</div>
<template #footer>
<div class="dialog-footer">
... ... @@ -225,14 +217,14 @@
v-for="item in transferOptions"
:key="item.userName"
:label="item.userName"
>{{ item.userName }}</el-radio
>{{ item.nickName }}</el-radio
>
</el-radio-group>
<div v-show="transferOptions.length === 0">暂无其他员工</div>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="companyShow = false">取消</el-button>
<el-button @click="transferShow = false">取消</el-button>
<el-button type="primary" @click="submitTransfer">确定</el-button>
</div>
</template>
... ... @@ -248,14 +240,14 @@
<el-form :model="FeedbackForm" ref="policyRef" label-width="100px">
<el-form-item label="商险单号" prop="progress">
<el-input
v-model="FeedbackForm.shoppolicynumber"
v-model="FeedbackForm.commercialinsurancepolicynumber"
placeholder="请输入保单号"
:disabled="hasRole"
/>
</el-form-item>
<el-form-item label="强险单号" prop="progress">
<el-form-item label="强险单号" prop="progress">
<el-input
v-model="FeedbackForm.policynumber"
v-model="FeedbackForm.stronginsurancepolicynumber"
placeholder="请输入保单号"
:disabled="hasRole"
/>
... ... @@ -272,6 +264,15 @@
</template>
</el-dialog>
<!-- 查询问题件弹出框 -->
<el-dialog v-model="showIssue" title="保单信息" width="700" append-to-body>
<el-form :model="IssueForm" ref="policyRef" label-width="100px">
<el-form-item label="问题件原因" prop="progress">
<QuillEditor :value="IssueForm.deprecatedReason" />
</el-form-item>
</el-form>
</el-dialog>
<!-- 编辑对话框 -->
<el-dialog v-model="open" title="保单信息" width="700" append-to-body>
<el-form :model="form" ref="policyRef" label-width="100px">
... ... @@ -286,7 +287,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车号" prop="frameNumber">
<el-form-item label="车辆识别号" prop="frameNumber">
<el-input
v-model="form.frameNumber"
:disabled="!hasRole"
... ... @@ -317,17 +318,17 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车辆类型" prop="vehicleType">
<el-form-item label="上年承保公司" prop="sysDeptId">
<el-select
v-model="form.vehicleTypeId"
v-model="form.sysDeptId"
:disabled="!hasRole"
style="width: 230px"
>
<el-option
v-for="item in carTypeOption"
:key="item.id"
:label="item.name"
:value="item.id"
v-for="item in deptOptions"
:key="item.deptId"
:label="item.deptName"
:value="item.deptId"
/>
</el-select>
</el-form-item>
... ... @@ -351,43 +352,23 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="核定载客数" prop="passengersNumber">
<el-form-item label="发动机号" prop="engineNumber">
<el-input
v-model="form.passengersNumber"
v-model="form.engineNumber"
:disabled="!hasRole"
placeholder="请输入核定载客数"
placeholder="请输入发动机号"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="核定载质量" prop="passengerCapacity">
<el-input
v-model="form.passengerCapacity"
:disabled="!hasRole"
placeholder="请输入核定载质量"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="排量毫升" prop="emissions">
<el-input
v-model="form.emissions"
:disabled="!hasRole"
placeholder="请输入排量毫升"
/>
</el-form-item>
</el-col>
<el-col v-if="isCustom" :span="12">
<el-form-item label="中文品牌" prop="vehicleBrand">
<el-form-item label="是否新能源" prop="isNewEnergy">
<el-select
v-model="form.vehicleBrandId"
v-model="form.isNewEnergy"
:disabled="!hasRole"
style="width: 230px"
>
<el-option
v-for="item in carBrandOption"
v-for="item in NewEnergyOption"
:key="item.id"
:label="item.name"
:value="item.id"
... ... @@ -395,54 +376,9 @@
</el-select>
</el-form-item>
</el-col>
<el-col v-else :span="12">
<el-form-item label="中文品牌" prop="vehicleBrand">
<el-input
v-model="form.customizeVehicleBrand"
:disabled="!hasRole"
placeholder="中文品牌"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车辆型号" prop="customizeVehicleModel">
<el-input
v-model="form.customizeVehicleModel"
:disabled="!hasRole"
placeholder="请输入车辆型号"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="准牵引准质量" prop="tractionMass">
<el-input
v-model="form.tractionMass"
:disabled="!hasRole"
placeholder="请输入准牵引准质量"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="号牌种类" prop="customizeVehicleModel">
<el-select
v-model="form.lincensePlateTypeId"
:disabled="!hasRole"
style="width: 230px"
>
<el-option
v-for="item in carNumOption"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="保险需求" prop="requirements">
<el-select
v-model="form.requirementsId"
... ... @@ -459,11 +395,55 @@
</el-form-item>
</el-col>
</el-row>
<!-- 流转提示 -->
<div class="transferTip">
<span>本次订单流转:{{ transferTip }}</span>
<el-button :loading="loadingBtn" @click="getTransferTip"
>刷新</el-button
>
</div>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="open = false">取消</el-button>
<el-button type="primary" @click="submitUpdate">提交修改</el-button>
<div
class="dialog-footer"
style="
display: flex;
justify-content: space-around;
width: 65%;
margin-left: auto;
"
>
<el-button
type="primary"
v-hasRole="['associationemployee']"
@click.stop="handleSuccess('0')"
>
通过
</el-button>
<el-button
type="primary"
v-hasRole="['associationemployee']"
@click="submitUpdate"
>保存</el-button
>
<el-button
type="primary"
v-hasRole="['associationemployee']"
@click="handleVoid('2')"
>作废</el-button
>
<el-button
type="primary"
v-hasRole="['associationemployee']"
@click="handleFallback('1')"
>退回</el-button
>
<el-button
type="primary"
v-hasRole="['associationemployee']"
@click.stop="handleAuthCompany('0')"
>分配</el-button
>
</div>
</template>
</el-dialog>
... ... @@ -478,18 +458,23 @@ import {
getUserList,
updateCarInfo,
getCarDetail,
getCompanyTip,
queryDefeatContent,
} from "@/api/policy/index";
import { checkRole } from "@/utils/permission"; // 权限判断函数
import { queryCarType } from "@/api/configurationCenter/carType.js";
import { queryCarNature } from "@/api/configurationCenter/carNature.js";
import { queryCarBrand } from "@/api/configurationCenter/carBrand.js";
import { queryCarNum } from "@/api/configurationCenter/carNum.js";
import { queryNeed } from "@/api/configurationCenter/need.js";
import { listDept } from "@/api/system/dept";
import { ref } from "vue";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const activeTitle = ref("");
const loadingBtn = ref(false);
const showIssue = ref(false);
const total = ref(0);
const isCustom = ref(false);
const typeId = ref(0); // 判断类型 0 问题件 1 退回 2 作废
const transferTip = ref(""); //流转下一家名称
const transferDeptId = ref(""); // 流转的部门公司ID
const open = ref(false);
const timer = ref(null);
const timerReason = ref(null);
... ... @@ -497,9 +482,13 @@ const form = ref({});
const showFeedback = ref(false);
const transferShow = ref(false);
const transferForm = ref({});
const taskId = ref("");
const IssueForm = ref({
deprecatedReason: "",
});
const FeedbackForm = ref({
shoppolicynumber: "",
policynumber: "",
stronginsurancepolicynumber: "",
commercialinsurancepolicynumber: "",
message: "",
});
const getParams = reactive({
... ... @@ -510,7 +499,10 @@ const companyShow = ref(false);
const deptOptions = ref([]);
const transferOptions = ref([]);
const deprecatedShow = ref(false);
const deprecatedForm = ref({});
const deprecatedForm = ref({
deprecatedReason: "",
associationapprove: "",
});
const companyForm = ref({});
const queryParams = reactive({
pageNum: 1,
... ... @@ -527,17 +519,18 @@ const hasRole = computed(() => {
return proxy.$auth.hasRole("associationemployee");
});
const hasCompanyadmin = computed(() => {
return proxy.$auth.hasRole("companyadmin");
});
// 新能源
const NewEnergyOption = ref([
{
id: "0",
name: "否",
},
{
id: "1",
name: "是",
},
]);
// 号牌种类
const carNumOption = ref([]);
const getCarNumOption = async () => {
const { data } = await queryCarNum(getParams);
carNumOption.value = data.records;
};
getCarNumOption();
// 车辆类型
const carTypeOption = ref([]);
const getCarTypeOption = async () => {
... ... @@ -552,13 +545,6 @@ const getcarNatureOption = async () => {
carNatureOption.value = data.records;
};
getcarNatureOption();
// 中文品牌
const carBrandOption = ref([]);
const getCarBrandOption = async () => {
const { data } = await queryCarBrand(getParams);
carBrandOption.value = data.records;
};
getCarBrandOption();
// 保险需求
const needOption = ref([]);
... ... @@ -568,6 +554,11 @@ const getNeedOption = async () => {
};
getNeedOption();
// 赋值taskId
const handleTask = (row) => {
taskId.value = row.taskId;
};
const getList = async () => {
loading.value = true;
const { data } = await queryMyList(queryParams);
... ... @@ -596,76 +587,100 @@ const handleContinue = (row) => {
showFeedback.value = true;
}
};
// 疑难
// 问题
const handleTroubleshooting = (taskId) => {
const data = {
policystatus: "1",
};
disposeUser(data, taskId).then((res) => {
getList();
proxy.$modal.msgSuccess("处理成功");
});
deprecatedForm.value.taskId = taskId;
activeTitle.value = "问题件退回至协会";
typeId.value = 0;
deprecatedShow.value = true;
};
// 通过保单
const handleSuccess = (associationapprove, taskId) => {
const handleSuccess = (associationapprove) => {
proxy.$modal
.confirm("是否通过该保单")
.then(function () {})
.then(() => {
disposeUser({ associationapprove }, taskId).then((res) => {
proxy.$modal.msgSuccess("保单已通过");
getList();
});
.then(async () => {
await updateCarInfo(form.value);
await disposeUser(
{
associationapprove,
associationapprovetype: "0",
deptid: transferDeptId.value,
},
taskId.value
);
proxy.$modal.msgSuccess("保单已通过");
open.value = false;
getList();
})
.catch(() => {
proxy.$modal.msg("取消通过");
});
};
// 退回保单
const handleFallback = (associationapprove, taskId) => {
proxy.$modal
.confirm("是否退回该保单")
.then(function () {})
.then(() => {
disposeUser({ associationapprove }, taskId).then((res) => {
proxy.$modal.msgSuccess("保单已退回");
getList();
});
})
.catch(() => {
proxy.$modal.msg("已取消");
});
const handleFallback = (associationapprove) => {
clearTimeout(timerReason.value);
deprecatedForm.value = {
associationapprove,
taskId: taskId.value,
};
deprecatedForm.value.deprecatedReason = "";
typeId.value = 1;
activeTitle.value = "退回后用户需修改后重新提交";
deprecatedShow.value = true;
};
// 作废保单
const handleVoid = (associationapprove, taskId) => {
const handleVoid = (associationapprove) => {
clearTimeout(timerReason.value);
deprecatedForm.value = {
associationapprove,
taskId,
taskId: taskId.value,
};
deprecatedForm.value.deprecatedReason = "";
typeId.value = 2;
activeTitle.value =
"温馨提示:该保单作废后车牌号、车架号在本自然年度无法重新提交";
deprecatedShow.value = true;
};
// 提交方法
// 提交作废表单
// 查询问题件原因
const lookReason = async (row) => {
const { data } = await queryDefeatContent({
processInstanceId: row.processInstanceId,
type: 0,
});
IssueForm.value.deprecatedReason = data.message;
showIssue.value = true;
};
// 提交作废,退回,问题件表单
const sunmitDeprecated = () => {
const data = {
associationapprove: deprecatedForm.value.associationapprove,
comment: deprecatedForm.value.deprecatedReason,
};
let data = {};
if (typeId.value === 0) {
data = {
policystatus: "1",
comment: deprecatedForm.value.deprecatedReason,
};
} else {
data = {
associationapprove: deprecatedForm.value.associationapprove,
comment: deprecatedForm.value.deprecatedReason,
};
}
const taskId = deprecatedForm.value.taskId;
disposeUser(data, taskId).then((res) => {
getList();
deprecatedShow.value = false;
proxy.$modal.msgSuccess("保单已作废");
proxy.$modal.msgSuccess("操作成功");
});
};
// 分配承保公司
const handleAuthCompany = (associationapprove, taskId) => {
const handleAuthCompany = (associationapprove) => {
companyForm.value = {
associationapprove,
taskId,
taskId: taskId.value,
};
companyShow.value = true;
getDeptList();
};
// 获取人员列表
... ... @@ -683,22 +698,19 @@ const handleSharing = (id) => {
const getDeptList = () => {
loading.value = true;
listDept(companyQueryParams).then((response) => {
deptOptions.value = response.data.filter((item) => item.parentId === 100);
let newArr = [];
newArr = response.data.filter((item) => item.parentId === 100);
deptOptions.value = newArr.map((child) => {
return {
deptId: child.deptId.toString(),
deptName: child.deptName,
};
});
loading.value = false;
});
};
/** 重置操作表单 */
function reset() {
form.value = {
policyId: undefined,
createTime: undefined,
carNum: undefined,
frameNum: undefined,
name: undefined,
phone: undefined,
company: undefined,
};
proxy.resetForm("policyRef");
}
... ... @@ -706,14 +718,15 @@ function reset() {
const handleUpdate = async (row) => {
reset();
const { data } = await getCarDetail(row.businessKey);
getTransferTip();
form.value = data;
isCustom.value = data.isCustomizeBrandAndModel == "0";
open.value = true;
};
/** 提交通过分配承保公司 */
function submitForm() {
const data = {
associationapprove: companyForm.value.associationapprove,
associationapprovetype: "1",
deptid: companyForm.value.deptId.toString(),
};
const taskId = companyForm.value.taskId;
... ... @@ -742,7 +755,9 @@ const submit = () => {
const data = {
policystatus: "2",
message: FeedbackForm.value.comment,
policynumber: FeedbackForm.value.policynumber,
commercialinsurancepolicynumber:
FeedbackForm.value.commercialinsurancepolicynumber,
stronginsurancepolicynumber: FeedbackForm.value.stronginsurancepolicynumber,
};
disposeUser(data, FeedbackForm.value.taskId).then((res) => {
getList();
... ... @@ -758,11 +773,20 @@ const getMsg = (val) => {
}, 1000);
};
// 获取作废原因
// 获取流转下一家分配公司
const getTransferTip = async () => {
loadingBtn.value = true;
const { data } = await getCompanyTip();
transferTip.value = data.deptName;
transferDeptId.value = data.deptId;
loadingBtn.value = false;
};
// 填写作废原因
const getReason = (val) => {
clearTimeout(timerReason.value);
timerReason.value = setTimeout(() => {
deprecatedForm.value.deprecatedReaso = val;
deprecatedForm.value.deprecatedReason = val;
}, 1000);
};
// 提交修改
... ... @@ -775,6 +799,9 @@ const submitUpdate = () => {
};
getList();
if (checkRole(["associationemployee"])) {
getDeptList();
}
</script>
<style lang="scss" scoped>
... ... @@ -788,4 +815,16 @@ getList();
gap: 30px;
margin-bottom: 20px;
}
.transferTip {
display: flex;
align-items: center;
gap: 20px;
font-size: 14px;
color: #666;
}
.company_content {
width: 100%;
height: 200px;
overflow-y: scroll;
}
</style>
... ...
... ... @@ -78,12 +78,7 @@
</el-form>
<!-- 表格数据 -->
<el-table
v-loading="loading"
:data="policyList"
@selection-change="handleSelectionChange"
@row-click="handleUpdate"
>
<el-table v-loading="loading" :data="policyList" @row-click="handleUpdate">
<el-table-column label="序号" type="index" width="55" />
<el-table-column label="登记时间" prop="createTime" width="160" />
<el-table-column label="车牌号" prop="licensePlateNumber" width="150" />
... ... @@ -161,22 +156,6 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="发动机号" prop="engineNumber">
<el-input v-model="form.engineNumber" placeholder="无" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="排放毫升量" prop="emissions">
<el-input
v-model="form.emissions"
disabled
placeholder="请输入车架号"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车主姓名" prop="name">
<el-input
v-model="form.name"
... ... @@ -197,12 +176,8 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="登记时间" prop="createTime">
<el-input
v-model="form.createTime"
disabled
placeholder="请输入登记时间"
/>
<el-form-item label="发动机号" prop="engineNumber">
<el-input v-model="form.engineNumber" placeholder="无" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
... ... @@ -217,22 +192,6 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="核定载质量" prop="passengerCapacity">
<el-input
v-model="form.passengerCapacity"
disabled
placeholder="无"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="核定载人数" prop="passengersNumber">
<el-input v-model="form.passengersNumber" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="分配机制" prop="distributionMechanism">
<el-input
v-model="form.distributionMechanism"
... ... @@ -249,38 +208,11 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车辆品牌" prop="vehicleBrand">
<el-input
v-model="form.vehicleBrand"
disabled
placeholder="车辆品牌"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车辆型号" prop="vehicleModel">
<el-input v-model="form.vehicleModel" disabled placeholder="无" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="保险需求" prop="requirements">
<el-input v-model="form.requirements" disabled placeholder="无" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="号牌种类" prop="lincensePlateType">
<el-input
v-model="form.lincensePlateType"
disabled
placeholder="无"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="使用性质" prop="vehicleNature">
<el-input
v-model="form.vehicleNature"
... ... @@ -289,11 +221,6 @@
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车辆类型" prop="vehicleType">
<el-input v-model="form.vehicleType" disabled placeholder="无" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-dialog>
... ... @@ -342,14 +269,6 @@ const associationapproveOptions = [
const policyList = ref([]);
/** 多选框选中数据 */
function handleSelectionChange(selection) {
// ids.value = selection.map(item => item.roleId);
// single.value = selection.length != 1;
// multiple.value = !selection.length;
console.log(selection);
}
const getList = async () => {
loading.value = true;
const res = await queryProcessedList(queryParams);
... ...
... ... @@ -116,6 +116,19 @@
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Download"
@click="handleExport"
v-hasPermi="['system:registrationmonitor:export']"
>导出</el-button
>
</el-col>
</el-row>
<!-- 表格数据 -->
<el-table v-loading="loading" :data="policyList">
<el-table-column label="序号" width="55" type="index" />
... ... @@ -138,6 +151,18 @@
align="center"
/>
<el-table-column
label="发动机号"
width="180"
prop="engineNumber"
align="center"
:show-overflow-tooltip="true"
/>
<el-table-column label="是否新能源" width="150" align="center">
<template #default="{ row }">
{{ row.isNewEnergy === "1" ? "是" : "否" }}
</template>
</el-table-column>
<el-table-column
label="车主姓名"
prop="name"
width="100"
... ... @@ -156,18 +181,29 @@
prop="distributionMechanism"
/>
<el-table-column
label="承保公司"
prop="companyName"
width="150"
align="center"
/>
<el-table-column label="办理人" width="100" align="center">
label="操作人"
width="120"
prop="distributionMechanism"
>
<template #default="{ row }">
<span>{{
row.associationEmployeeUserName ?? row.companyEmployeeUserName
row.companyEmployeeUserName || row.associationEmployeeUserName
}}</span>
</template>
</el-table-column>
<el-table-column
align="center"
label="操作时间"
width="160"
prop="distributionTime"
/>
<el-table-column
label="承保公司"
prop="companyName"
width="150"
align="center"
/>
<el-table-column label="保单进度" width="100" prop="orderProgress" />
<el-table-column
label="保单状态"
... ... @@ -175,6 +211,16 @@
prop="policyStatus"
:show-overflow-tooltip="true"
/>
<el-table-column label="时效" width="100">
<template #default="{ row }">
<span>{{
row.policyStatus === "已作废" ||
row.policyStatus === "退回后用户取消登记"
? "无"
: timeDifference(row)
}}</span>
</template>
</el-table-column>
<el-table-column
label="查询回馈"
fixed="right"
... ... @@ -247,22 +293,6 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车辆类型" prop="vehicleType">
<el-select
v-model="form.vehicleTypeId"
disabled
style="width: 230px"
>
<el-option
v-for="item in carTypeOption"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车辆使用性质" prop="vehicleNature">
<el-select
v-model="form.vehicleNatureId"
... ... @@ -278,100 +308,6 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="核定载客数" prop="passengersNumber">
<el-input
v-model="form.passengersNumber"
disabled
placeholder="请输入核定载客数"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="核定载质量" prop="passengerCapacity">
<el-input
v-model="form.passengerCapacity"
disabled
placeholder="请输入核定载质量"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="排量毫升" prop="emissions">
<el-input
v-model="form.emissions"
disabled
placeholder="请输入办理人"
/>
</el-form-item>
</el-col>
<el-col v-if="isCustom" :span="12">
<el-form-item label="中文品牌" prop="vehicleBrand">
<el-select
v-model="form.vehicleBrandId"
disabled
style="width: 230px"
>
<el-option
v-for="item in carBrandOption"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col v-else :span="12">
<el-form-item label="中文品牌" prop="vehicleBrand">
<el-input
v-model="form.customizeVehicleBrand"
disabled
placeholder="中文品牌"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车辆型号" prop="customizeVehicleModel">
<el-input
v-model="form.customizeVehicleModel"
disabled
placeholder="请输入车辆型号"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="准牵引准质量" prop="tractionMass">
<el-input
v-model="form.tractionMass"
disabled
placeholder="请输入办理人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="号牌种类" prop="customizeVehicleModel">
<el-select
v-model="form.lincensePlateTypeId"
disabled
style="width: 230px"
>
<el-option
v-for="item in carNumOption"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="保险需求" prop="requirements">
<el-select
... ... @@ -427,18 +363,17 @@ import {
queryDefeatContent,
getCarDetail,
} from "@/api/policy";
import { queryCarType } from "@/api/configurationCenter/carType.js";
import { queryCarNature } from "@/api/configurationCenter/carNature.js";
import { queryCarBrand } from "@/api/configurationCenter/carBrand.js";
import { queryCarNum } from "@/api/configurationCenter/carNum.js";
import { queryNeed } from "@/api/configurationCenter/need.js";
import { reactive } from "vue";
import { computed, reactive } from "vue";
import { intervalTime } from "@/utils/intervalTime";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const total = ref(0);
const open = ref(false);
const isCustom = ref(false);
const labelTitle = ref("保单回馈");
// 表单
const form = ref({
name: "",
identificationNumber: "",
... ... @@ -461,10 +396,12 @@ const form = ref({
requirementsId: "",
});
const showSearch = ref(true);
// 请求选项参数
const getParams = reactive({
pageNum: 1,
pageSize: 100,
});
// 查询参数
const queryParams = reactive({
pageNum: 1,
pageSize: 10,
... ... @@ -479,9 +416,6 @@ const queryParams = reactive({
startTime: "",
endTime: "",
});
const hasRole = computed(() => {
return !proxy.$auth.hasRole("associationemployee");
});
const timeFrame = ref(null);
const statusOption = ref([
{
... ... @@ -527,22 +461,29 @@ const options = [
label: "人工分配",
},
];
// 保单列表
const policyList = ref([]);
// 号牌种类
const carNumOption = ref([]);
const getCarNumOption = async () => {
const { data } = await queryCarNum(getParams);
carNumOption.value = data.records;
};
getCarNumOption();
// 车辆类型
const carTypeOption = ref([]);
const getCarTypeOption = async () => {
const { data } = await queryCarType(getParams);
carTypeOption.value = data.records;
};
getCarTypeOption();
// 计算时效
const timeDifference = computed(() => (row) => {
let startTime = "";
let endTime = "";
// 判断协会是否处理了,如果没有则不计算时效
if (row.distributionTime !== null) {
startTime = new Date(row.distributionTime);
} else {
return "无";
}
// 判断结束时间,已办结时间为最后时间,如果没有则使用员工承接时间
if (row.policyTime !== null) {
endTime = new Date(row.policyTime);
} else if (row.companyEmployeeUndertakeTime !== null) {
endTime = new Date(row.companyEmployeeUndertakeTime);
} else {
endTime = Date.now();
}
return intervalTime(startTime, endTime);
});
// 车辆使用性质
const carNatureOption = ref([]);
const getcarNatureOption = async () => {
... ... @@ -550,13 +491,6 @@ const getcarNatureOption = async () => {
carNatureOption.value = data.records;
};
getcarNatureOption();
// 中文品牌
const carBrandOption = ref([]);
const getCarBrandOption = async () => {
const { data } = await queryCarBrand(getParams);
carBrandOption.value = data.records;
};
getCarBrandOption();
// 保险需求
const needOption = ref([]);
... ... @@ -566,10 +500,23 @@ const getNeedOption = async () => {
};
getNeedOption();
/** 导出按钮操作 */
function handleExport() {
proxy.download(
"registration/monitor/export",
{
...queryParams,
},
`user_${new Date().getTime()}.xlsx`
);
}
// 选择时间范围
const handleTime = (valu) => {
queryParams.startTime = proxy.parseTime(valu[0]);
queryParams.endTime = proxy.parseTime(valu[1]);
};
// 获取保单列表
const getList = async () => {
loading.value = true;
const res = await queryList(queryParams);
... ... @@ -592,6 +539,7 @@ const queryRemark = async (row) => {
labelTitle.value = "作废备注";
const { data } = await queryDefeatContent({
processInstanceId: row.processInstanceId,
type: 2,
});
form.value.comment = data.message;
open.value = true;
... ... @@ -616,6 +564,8 @@ function handleQuery() {
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef");
queryParams.startTime = "";
queryParams.endTime = "";
handleQuery();
}
const submit = async () => {
... ...
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true">
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input
v-model="queryParams.phonenumber"
placeholder="请输入手机号码"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="openSelectUser"
v-hasPermi="['system:role:add']"
>添加用户</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="CircleClose"
:disabled="multiple"
@click="cancelAuthUserAll"
v-hasPermi="['system:role:remove']"
>批量取消授权</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Close"
@click="handleClose"
>关闭</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryRef"
v-show="showSearch"
:inline="true"
>
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input
v-model="queryParams.phonenumber"
placeholder="请输入手机号码"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="CircleClose" @click="cancelAuthUser(scope.row)" v-hasPermi="['system:role:remove']">取消授权</el-button>
</template>
</el-table-column>
</el-table>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="openSelectUser"
v-hasPermi="['system:role:add']"
>添加用户</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="CircleClose"
:disabled="multiple"
@click="cancelAuthUserAll"
v-hasPermi="['system:role:remove']"
>批量取消授权</el-button
>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Close" @click="handleClose"
>关闭</el-button
>
</el-col>
<right-toolbar
v-model:showSearch="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
<el-table
v-loading="loading"
:data="userList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="用户名称"
prop="userName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="用户姓名"
prop="nickName"
:show-overflow-tooltip="true"
/>
<select-user ref="selectRef" :roleId="queryParams.roleId" @ok="handleQuery" />
</div>
<el-table-column
label="邮箱"
prop="email"
:show-overflow-tooltip="true"
/>
<el-table-column
label="手机"
prop="phonenumber"
:show-overflow-tooltip="true"
/>
<el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
>
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<el-button
link
type="primary"
icon="CircleClose"
@click="cancelAuthUser(scope.row)"
v-hasPermi="['system:role:remove']"
>取消授权</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<select-user
ref="selectRef"
:roleId="queryParams.roleId"
@ok="handleQuery"
/>
</div>
</template>
<script setup name="AuthUser">
import selectUser from "./selectUser";
import { allocatedUserList, authUserCancel, authUserCancelAll } from "@/api/system/role";
import {
allocatedUserList,
authUserCancel,
authUserCancelAll,
} from "@/api/system/role";
const route = useRoute();
const { proxy } = getCurrentInstance();
... ... @@ -117,7 +169,7 @@ const queryParams = reactive({
/** 查询授权用户列表 */
function getList() {
loading.value = true;
allocatedUserList(queryParams).then(response => {
allocatedUserList(queryParams).then((response) => {
userList.value = response.rows;
total.value = response.total;
loading.value = false;
... ... @@ -140,7 +192,7 @@ function resetQuery() {
}
// 多选框选中数据
function handleSelectionChange(selection) {
userIds.value = selection.map(item => item.userId);
userIds.value = selection.map((item) => item.userId);
multiple.value = !selection.length;
}
/** 打开授权用户表弹窗 */
... ... @@ -149,23 +201,31 @@ function openSelectUser() {
}
/** 取消授权按钮操作 */
function cancelAuthUser(row) {
proxy.$modal.confirm('确认要取消该用户"' + row.userName + '"角色吗?').then(function () {
return authUserCancel({ userId: row.userId, roleId: queryParams.roleId });
}).then(() => {
getList();
proxy.$modal.msgSuccess("取消授权成功");
}).catch(() => {});
proxy.$modal
.confirm('确认要取消该用户"' + row.userName + '"角色吗?')
.then(function () {
return authUserCancel({ userId: row.userId, roleId: queryParams.roleId });
})
.then(() => {
getList();
proxy.$modal.msgSuccess("取消授权成功");
})
.catch(() => {});
}
/** 批量取消授权按钮操作 */
function cancelAuthUserAll(row) {
const roleId = queryParams.roleId;
const uIds = userIds.value.join(",");
proxy.$modal.confirm("是否取消选中用户授权数据项?").then(function () {
return authUserCancelAll({ roleId: roleId, userIds: uIds });
}).then(() => {
getList();
proxy.$modal.msgSuccess("取消授权成功");
}).catch(() => {});
proxy.$modal
.confirm("是否取消选中用户授权数据项?")
.then(function () {
return authUserCancelAll({ roleId: roleId, userIds: uIds });
})
.then(() => {
getList();
proxy.$modal.msgSuccess("取消授权成功");
})
.catch(() => {});
}
getList();
... ...
<template>
<!-- 授权用户 -->
<el-dialog title="选择用户" v-model="visible" width="800px" top="5vh" append-to-body>
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
style="width: 200px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input
v-model="queryParams.phonenumber"
placeholder="请输入手机号码"
clearable
style="width: 200px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row>
<el-table @row-click="clickRow" ref="refTable" :data="userList" @selection-change="handleSelectionChange" height="260px">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</el-row>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="handleSelectUser">确 定</el-button>
<el-button @click="visible = false">取 消</el-button>
</div>
</template>
</el-dialog>
<!-- 授权用户 -->
<el-dialog
title="选择用户"
v-model="visible"
width="800px"
top="5vh"
append-to-body
>
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
style="width: 200px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input
v-model="queryParams.phonenumber"
placeholder="请输入手机号码"
clearable
style="width: 200px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row>
<el-table
@row-click="clickRow"
ref="refTable"
:data="userList"
@selection-change="handleSelectionChange"
height="260px"
>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column
label="用户名称"
prop="userName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="用户姓名"
prop="nickName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="邮箱"
prop="email"
:show-overflow-tooltip="true"
/>
<el-table-column
label="手机"
prop="phonenumber"
:show-overflow-tooltip="true"
/>
<el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
>
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</el-row>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="handleSelectUser">确 定</el-button>
<el-button @click="visible = false">取 消</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup name="SelectUser">
... ... @@ -65,8 +100,8 @@ import { authUserSelectAll, unallocatedUserList } from "@/api/system/role";
const props = defineProps({
roleId: {
type: [Number, String]
}
type: [Number, String],
},
});
const { proxy } = getCurrentInstance();
... ... @@ -82,7 +117,7 @@ const queryParams = reactive({
pageSize: 10,
roleId: undefined,
userName: undefined,
phonenumber: undefined
phonenumber: undefined,
});
// 显示弹框
... ... @@ -97,11 +132,11 @@ function clickRow(row) {
}
// 多选框选中数据
function handleSelectionChange(selection) {
userIds.value = selection.map(item => item.userId);
userIds.value = selection.map((item) => item.userId);
}
// 查询表数据
function getList() {
unallocatedUserList(queryParams).then(res => {
unallocatedUserList(queryParams).then((res) => {
userList.value = res.rows;
total.value = res.total;
});
... ... @@ -125,7 +160,7 @@ function handleSelectUser() {
proxy.$modal.msgError("请选择要分配的用户");
return;
}
authUserSelectAll({ roleId: roleId, userIds: uIds }).then(res => {
authUserSelectAll({ roleId: roleId, userIds: uIds }).then((res) => {
proxy.$modal.msgSuccess(res.msg);
if (res.code === 200) {
visible.value = false;
... ...
<template>
<div class="app-container">
<h4 class="form-header h4">基本信息</h4>
<el-form :model="form" label-width="80px">
<el-row>
<el-col :span="8" :offset="2">
<el-form-item label="用户昵称" prop="nickName">
<el-input v-model="form.nickName" disabled />
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="登录账号" prop="userName">
<el-input v-model="form.userName" disabled />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="app-container">
<h4 class="form-header h4">基本信息</h4>
<el-form :model="form" label-width="80px">
<el-row>
<el-col :span="8" :offset="2">
<el-form-item label="用户姓名" prop="nickName">
<el-input v-model="form.nickName" disabled />
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="登录账号" prop="userName">
<el-input v-model="form.userName" disabled />
</el-form-item>
</el-col>
</el-row>
</el-form>
<h4 class="form-header h4">角色信息</h4>
<el-table v-loading="loading" :row-key="getRowKey" @row-click="clickRow" ref="roleRef" @selection-change="handleSelectionChange" :data="roles.slice((pageNum - 1) * pageSize, pageNum * pageSize)">
<el-table-column label="序号" width="55" type="index" align="center">
<template #default="scope">
<span>{{ (pageNum - 1) * pageSize + scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column type="selection" :reserve-selection="true" width="55"></el-table-column>
<el-table-column label="角色编号" align="center" prop="roleId" />
<el-table-column label="角色名称" align="center" prop="roleName" />
<el-table-column label="权限字符" align="center" prop="roleKey" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
<h4 class="form-header h4">角色信息</h4>
<el-table
v-loading="loading"
:row-key="getRowKey"
@row-click="clickRow"
ref="roleRef"
@selection-change="handleSelectionChange"
:data="roles.slice((pageNum - 1) * pageSize, pageNum * pageSize)"
>
<el-table-column label="序号" width="55" type="index" align="center">
<template #default="scope">
<span>{{ (pageNum - 1) * pageSize + scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column
type="selection"
:reserve-selection="true"
width="55"
></el-table-column>
<el-table-column label="角色编号" align="center" prop="roleId" />
<el-table-column label="角色名称" align="center" prop="roleName" />
<el-table-column label="权限字符" align="center" prop="roleKey" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
>
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="pageNum" v-model:limit="pageSize" />
<pagination
v-show="total > 0"
:total="total"
v-model:page="pageNum"
v-model:limit="pageSize"
/>
<el-form label-width="100px">
<div style="text-align: center;margin-left:-120px;margin-top:30px;">
<el-button type="primary" @click="submitForm()">提交</el-button>
<el-button @click="close()">返回</el-button>
</div>
</el-form>
</div>
<el-form label-width="100px">
<div style="text-align: center; margin-left: -120px; margin-top: 30px">
<el-button type="primary" @click="submitForm()">提交</el-button>
<el-button @click="close()">返回</el-button>
</div>
</el-form>
</div>
</template>
<script setup name="AuthRole">
... ... @@ -60,46 +81,46 @@ const roles = ref([]);
const form = ref({
nickName: undefined,
userName: undefined,
userId: undefined
userId: undefined,
});
/** 单击选中行数据 */
function clickRow(row) {
proxy.$refs["roleRef"].toggleRowSelection(row);
};
}
/** 多选框选中数据 */
function handleSelectionChange(selection) {
roleIds.value = selection.map(item => item.roleId);
};
roleIds.value = selection.map((item) => item.roleId);
}
/** 保存选中的数据编号 */
function getRowKey(row) {
return row.roleId;
};
}
/** 关闭按钮 */
function close() {
const obj = { path: "/system/user" };
proxy.$tab.closeOpenPage(obj);
};
}
/** 提交按钮 */
function submitForm() {
const userId = form.value.userId;
const rIds = roleIds.value.join(",");
updateAuthRole({ userId: userId, roleIds: rIds }).then(response => {
updateAuthRole({ userId: userId, roleIds: rIds }).then((response) => {
proxy.$modal.msgSuccess("授权成功");
close();
});
};
}
(() => {
const userId = route.params && route.params.userId;
if (userId) {
loading.value = true;
getAuthRole(userId).then(response => {
getAuthRole(userId).then((response) => {
form.value = response.user;
roles.value = response.roles;
total.value = roles.value.length;
nextTick(() => {
roles.value.forEach(row => {
roles.value.forEach((row) => {
if (row.flag) {
proxy.$refs["roleRef"].toggleRowSelection(row);
}
... ...
... ... @@ -168,7 +168,7 @@
:show-overflow-tooltip="true"
/>
<el-table-column
label="用户昵称"
label="用户姓名"
align="center"
key="nickName"
prop="nickName"
... ... @@ -294,10 +294,10 @@
<el-form :model="form" :rules="rules" ref="userRef" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="用户昵称" prop="nickName">
<el-form-item label="用户姓名" prop="nickName">
<el-input
v-model="form.nickName"
placeholder="请输入用户昵称"
placeholder="请输入用户姓名"
maxlength="30"
/>
</el-form-item>
... ... @@ -542,7 +542,7 @@ const upload = reactive({
const columns = ref([
{ key: 0, label: `用户编号`, visible: true },
{ key: 1, label: `用户名称`, visible: true },
{ key: 2, label: `用户昵称`, visible: true },
{ key: 2, label: `用户姓名`, visible: true },
{ key: 3, label: `部门`, visible: true },
{ key: 4, label: `手机号码`, visible: true },
{ key: 5, label: `状态`, visible: true },
... ... @@ -570,7 +570,7 @@ const data = reactive({
},
],
nickName: [
{ required: true, message: "用户昵称不能为空", trigger: "blur" },
{ required: true, message: "用户姓名不能为空", trigger: "blur" },
],
password: [
{ required: true, message: "用户密码不能为空", trigger: "blur" },
... ...
<template>
<el-form ref="userRef" :model="user" :rules="rules" label-width="80px">
<el-form-item label="用户昵称" prop="nickName">
<el-form-item label="用户姓名" prop="nickName">
<el-input v-model="user.nickName" maxlength="30" />
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
... ... @@ -40,7 +40,7 @@ const props = defineProps({
const { proxy } = getCurrentInstance();
const rules = ref({
nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
nickName: [{ required: true, message: "用户姓名不能为空", trigger: "blur" }],
email: [
{ required: true, message: "邮箱地址不能为空", trigger: "blur" },
{
... ...