zhoujie 7 mesi fa
parent
commit
5fe199282a

+ 2
- 0
debug.log Vedi File

@@ -0,0 +1,2 @@
[0117/185843.375:ERROR:registration_protocol_win.cc(108)] CreateFile: 系统找不到指定的文件。 (0x2)
[0119/225829.539:ERROR:registration_protocol_win.cc(108)] CreateFile: 系统找不到指定的文件。 (0x2)

+ 91
- 59
src/views/optionalSystem/ETCprocessing/vehicleManagement/components/blacklistDialog.vue Vedi File

@@ -1,62 +1,43 @@
<template>
<el-dialog
v-model="isShow"
width="50%"
:title="conditionStatus === 1 ? '移入状态名单' : '移出状态名单'"
@closed="closedHandle"
>
<el-form
ref="ruleFormRef"
:model="ruleForm"
:rules="rules"
label-width="auto"
status-icon
>
<el-dialog v-model="isShow" width="50%" :title="conditionStatus === 1 ? '移入状态名单' : '移出状态名单'" @closed="closedHandle">
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="auto" status-icon>
<template v-if="conditionStatus === 1">
<el-form-item label="下黑原因" prop="businessType">
<el-select
clearable
v-model="ruleForm.businessType"
placeholder="请选择下黑原因"
filterable
>
<el-option
v-for="item in businessTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-form-item label="下黑原因" prop="reason">
<el-select clearable v-model="ruleForm.reason" placeholder="请选择下黑原因" filterable>
<el-option v-for="item in BLACKLIST_VEHICLE_RESON" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>

</template>
<template v-else>
<el-form-item label="反白原因" prop="businessType">
<el-select
clearable
v-model="ruleForm.businessType"
placeholder="请选择反白原因"
filterable
>
<el-option
v-for="item in businessTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-form-item label="反白原因" prop="reason">
<el-select clearable v-model="ruleForm.reason" placeholder="请选择反白原因" filterable>
<el-option v-for="item in BLACKLIST_VEHICLE_RESON" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="请上传佐证材料" prop="reason">
<div style="width: 100%">
<el-upload :file-list="fileList"
action="/uploadEtcFile?accountNum=xzxt&secretKey=15d217c-9c03-12ec-ca76-0242ac110321"
list-type="picture-card" :on-preview="handlePictureCardPreview" :limit="5" :multiple="true" :on-exceed="handleExceed"
:on-remove="(el) => onRemove(el)" @success="onSuccess">
<!-- <i class="el-icon-plus"></i> -->
<el-icon>
<Plus />
</el-icon>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</div>
</el-form-item>

</template>
<el-form-item label="备注" prop="category">
<el-input
maxlength="60"
v-trim
clearable
v-model="ruleForm.category"
placeholder="请输入备注"
/>
</el-form-item>
<el-form-item label="备注" prop="msg">
<el-input maxlength="60" v-trim clearable v-model="ruleForm.msg" placeholder="请输入备注" />
</el-form-item>

</el-form>
<template #footer>
@@ -69,23 +50,60 @@
</template>
<!-- web端信息推送 -->
<script setup lang="ts">
import { ElMessage } from 'element-plus'
import { UploadInstance, ElMessage, UploadProps, UploadRawFile, genFileId } from 'element-plus'

// 请求函数
// @ts-ignore
import BaseService from '@/utils/baseService'
import { computed, ref } from 'vue'
import { computed, ref, toRaw, nextTick } from 'vue'
import type { FormInstance } from 'element-plus'
import $storeinitData from '@/store/initData' //引入tab vuex
import { AnyAaaaRecord } from 'dns'
const crudRef = ref()
interface Props {
modelValue: any
conditionStatus: any //1表示当前正常 0下黑
dataList: any
businessTypeList: any
dataList: any,
form: []
}
const dialogImageUrl = ref('')
const dialogVisible = ref(false)
function handlePictureCardPreview(file) {
dialogImageUrl.value = file.url;
dialogVisible.value = true;
}
function handleExceed() {
ElMessage.error("目前限制最多上传5张图片")
}

const upload = ref<UploadInstance>()
const uploadImg = ref<UploadInstance>()
// 选装黑名单原因
const BLACKLIST_VEHICLE_RESON = computed(() => {
return $storeinitData.state.dictData['BLACKLIST_VEHICLE_RESON'] || []
})
//文件上传成功
const fileList = ref<any>([])
function onSuccess(response: any) {

// import.meta.env.VITE_APP_UPLOAD_URL +
// const url = '/default-bucket/' + response.data.ossFilePath
fileList.value.push(response.data.fileUrl)
// props.form[item.prop] = fileList.value.join(';')
// emit('uploadSuccess', response, item)
}
function onRemove(response) {
const index = fileList.value.indexOf(response.data.fileUrl)
if (index !== -1) {
fileList.value.splice(index, 1)
}
}

const ruleFormRef = ref()
const props = defineProps<Props>()
const isLoading = ref(false) //加载效果
const emit = defineEmits(['update:modelValue', 'handleSubmit'])
const emit = defineEmits(['update:modelValue', 'handleSubmit', 'uploadSuccess'])
const isShow = computed({
get: function () {
return props.modelValue
@@ -111,15 +129,21 @@ const rules = ref({
],
})
const ruleForm = ref<any>({
serviceType: '', //客服类别
key: '', //关键字
category: '', //类别
businessType: '', //业务类型
solution: '', //反馈内容
agentId: '', //渠道编号
vehicleId: '', //车辆编号
type: '', //状态名单类型
reason: '', //状态名单类型
operator: '', //操作人
msg: '', //备注
enclosureUrl: [], //反白图片附件
})
const closedHandle=()=>{
const closedHandle = () => {
ruleFormRef.value.resetFields()
}
const username = computed(() => {
return $storeinitData.getters.userName || ''
})

//编辑与添加提交
function submit(formEl: FormInstance | undefined) {
if (!formEl) return
@@ -135,8 +159,16 @@ function submit(formEl: FormInstance | undefined) {
}
// 提交
function toSubmit(data: any) {
BaseService.post('IF01001202502071286', data).then((res: any) => {
let datas = JSON.parse(JSON.stringify(toRaw(data)));
datas.operator = username.value
datas.agentId = '52010188931'
datas.type = props.conditionStatus == 1 ? 1 : 2
datas.vehicleId = props.dataList.vehicleId
datas.reason = parseInt(datas.reason)
datas.enclosureUrl = fileList.value;
BaseService.post('IF01001202502071286', datas).then((res: any) => {
if (res && res.statusCode === 0) {
isShow.value = false
ElMessage.success('操作成功')
emit('handleSubmit')
} else {

+ 89
- 93
src/views/optionalSystem/ETCprocessing/vehicleManagement/components/infoDialog.vue Vedi File

@@ -1,13 +1,17 @@
<template>
<el-dialog v-model="isShow" width="70%" title="详情">
<el-dialog v-model="isShow" width="50%">
<div class="title-header">车辆详情</div>
<div class="info-header">
<div class="status-con">
<div class="l-txt">
<span class="txt">状态名单:</span>
<div class="l-txt" style="display: flex;flex-direction: row;">
<span class="txt" style="margin-left: 5px;font-weight:bold">状态名单:</span>
<span class="info">
{{ conditionStatus === 1 ? '正常' : '已进入状态名单' }}
</span>
<div v-if="conditionStatus === 0" style="margin-left: 50px;">
<span style="font-weight:bold">原因:</span>
<span>{{ handleReson() }}</span>
</div>
</div>
<div class="r-btn">
<el-button type="primary" @click="changeStatus">
@@ -15,12 +19,6 @@
</el-button>
</div>
</div>
<div class="reson-con">
<div v-if="conditionStatus === 0">
<span>原因:</span>
<span>{{ handleReson() }}</span>
</div>
</div>
</div>
<div class="info-con">
<div class="item-box" v-for="item in userOptions">
@@ -30,7 +28,7 @@
<template v-else>
<div class="item-con border-br" v-for="ele in item.children">
<div class="item-title">{{ ele.label }}</div>
<div class="item-info">{{ handleData(ele, dataList) }}</div>
<div class="item-info">{{ handleData(ele, dataList.aflCenterUserInfoVo) }}</div>
</div>
</template>
</div>
@@ -81,12 +79,8 @@
</div>
</div>
</el-dialog>
<blacklistDialog
v-model="blackListShow"
:conditionStatus="conditionStatus"
:dataList="dataList"
@handleSubmit="emit('handleSubmit', dataList.id, false)"
/>
<blacklistDialog v-model="blackListShow" :conditionStatus="conditionStatus" :dataList="dataList"
@handleSubmit="emit('handleSubmit', dataList.id, false)" />
</template>
<!-- web端信息推送 -->
<script setup lang="ts">
@@ -98,6 +92,7 @@ import BaseService from '@/utils/baseService'
import blacklistDialog from './blacklistDialog.vue'
import { computed, ref } from 'vue'
import type { FormInstance } from 'element-plus'
import $storeinitData from '@/store/initData' //引入tab vuex
const crudRef = ref()
interface Props {
modelValue: any
@@ -105,6 +100,9 @@ interface Props {
VEHICLE_COLOR_TYPE: any
VEHICLE_MODEL_TYPE: any
REGISTRATION_TYPE: any
XZ_OBU_STATUS: any
XZ_INSTALL_TYPE: any
XZ_ACCOUNT_TYPE: any
useStatus: any
auditStatus: any
CARD_STATE_TYPE: any
@@ -144,14 +142,23 @@ const conditionStatus = computed(() => {
return txt
})
const handleData = (itemData, datasList = {}) => {
let datas = datasList[itemData.prop]
let datas: any = null
if (datasList) {
datas = datasList[itemData.prop]

if (itemData.type == 'select') {
datas = itemData.listData.find((item) => item.value == datas)?.label
}
if (itemData.isTime) {
datas = datas ? datas.replace('T', ' ') : ''
if (itemData.type == 'select') {
console.log(itemData.listData, itemData.label);

datas = itemData.listData.find((item) => item.value == datas)?.label
}
if (itemData.type == 'data' && datas && datas.length > 5) {
datas = datas.match(/\d{4}-\d{2}-\d{2}/)[0];
}
if (itemData.type == 'menu' && datas) {
datas = datas + ''.startsWith("1") ? '记账卡' : '储值卡'
}
}

return datas || '--'
}
const blackListShow = ref(false)
@@ -167,17 +174,38 @@ const userOptions = [
isinfo: true,
children: [
{
label: '用户编号',
prop: 'accountId',
label: '用户名称',
prop: 'name',
},
{
label: '用户名称',
prop: 'ownerName',
label: '用户类型',
prop: 'accountType',
type: 'select',
listData: props.XZ_ACCOUNT_TYPE,
},
{
label: '创建时间',
prop: 'insertTime',
isTime: true,
label: '证件类型',
prop: 'idType',
},
{
label: '证件号码',
prop: 'idNum',
},
{
label: '手机号码',
prop: 'mobile',
},
{
label: '经办人姓名',
prop: 'agentName',
},
{
label: '经办人证件类型',
prop: 'agentIdType',
},
{
label: '经办人证件号',
prop: 'agentIdNum',
},
],
},
@@ -218,10 +246,6 @@ const carOptions = [
label: '车主姓名',
prop: 'ownerName',
},
{
label: '注册日期',
prop: 'registerDate',
},
{
label: '发证日期',
prop: 'issueDate',
@@ -276,34 +300,7 @@ const carOptions = [
label: '轴距',
prop: 'axleDistance',
},
{
label: '变更后发动机号',
prop: 'newEngineNo',
},
{
label: '变更后发证日期',
prop: 'newIssueDate',
},
{
label: '变更后注册日期',
prop: 'newRegisterDate',
},
{
label: '变更后检测记录',
prop: 'newTestRecord',
},
{
label: '变更后轴型',
prop: 'newAxisType',
},
{
label: '变更后档案编号',
prop: 'newFileNum',
},
{
label: '变更后行驶证品牌型号',
prop: 'newVehicleModel',
},

],
},
]
@@ -321,32 +318,30 @@ const obuOptions = [
},
{
label: 'OBU状态',
prop: 'OBU编号',
},
{
label: '主机厂',
prop: 'OBU编号',
prop: 'status',
listData: props.XZ_OBU_STATUS,
type: 'select',
},
{
label: 'OBU厂家',
prop: 'OBU编号',
},
{
label: 'OBU一发时间',
prop: 'OBU编号',
prop: 'model',
},
{
label: 'OBU二发时间',
prop: 'OBU编号',
label: 'OBU安装方式',
prop: 'installType',
listData: props.XZ_INSTALL_TYPE,
type: 'select',
},
{
label: '开始日期',
prop: 'enableTime',
type: 'data',
isTime: true,
},
{
label: '结束日期',
prop: 'OBU编号',
prop: 'expireTime',
type: 'data'
},
],
},
@@ -370,31 +365,29 @@ const cpuOptions = [
listData: props.CARD_STATE_TYPE,
},
{
label: '主机厂',
prop: '主机厂',
label: 'CPU卡类型',
prop: 'cardType',
type: 'menu'
},
// {
// label: 'CPU卡品牌',
// prop: 'brand',
// },
{
label: '芯片厂家',
label: 'CPU卡型号',
prop: 'model',
},
{
label: 'CPU一发时间',
prop: 'OBU编号',
},
{
label: 'CPU二发时间',
prop: 'OBU编号',
},
{
label: '开始日期',
prop: 'enableTime',
isTime: true,
type: 'data'
},
{
label: '结束日期',
prop: 'expireTime',
isTime: true,
type: 'data'
},

],
},
]
@@ -404,16 +397,19 @@ const cpuOptions = [
margin-top: 20px;
border-left: 1px solid #ddd;
border-top: 1px solid #ddd;

.item-box {
display: flex;
align-items: center;
width: 100%;
align-items: stretch;
flex-wrap: wrap;

.border-br {
border-right: 1px solid #ddd;
border-bottom: 1px solid #ddd;
}

.con-title {
width: 100%;
text-align: center;
@@ -422,12 +418,14 @@ const cpuOptions = [
color: #666;
padding: 10px 0;
}

.item-con {
display: flex;
align-items: center;
min-width: 50%;
box-sizing: border-box;
flex-grow: 1;

.item-title {
width: 200px;
font-size: 15px;
@@ -440,6 +438,7 @@ const cpuOptions = [
display: flex;
align-items: center;
}

.item-info {
// flex: 1 1 auto;
width: calc(100% - 200px);
@@ -453,26 +452,23 @@ const cpuOptions = [
}
}
}

.title-header {
font-size: 22px;
text-align: center;
padding-bottom: 20px;
}

.info-header {
.status-con {
display: flex;
justify-content: space-between;
align-items: center;

.l-txt {
font-size: 14px;
color: #666;
}
}
}
.reson-con {
display: flex;
& > div {
margin-right: 10px;
}
}
</style>

+ 14
- 0
src/views/optionalSystem/ETCprocessing/vehicleManagement/index.vue Vedi File

@@ -153,6 +153,9 @@
:dataList="crudRef.form"
:VEHICLE_COLOR_TYPE="VEHICLE_COLOR_TYPE"
:REGISTRATION_TYPE="REGISTRATION_TYPE"
:XZ_INSTALL_TYPE="XZ_INSTALL_TYPE"
:XZ_OBU_STATUS="XZ_OBU_STATUS"
:XZ_ACCOUNT_TYPE="XZ_ACCOUNT_TYPE"
:VEHICLE_MODEL_TYPE="VEHICLE_MODEL_TYPE"
:useStatus="useStatus"
:auditStatus="auditStatus"
@@ -199,6 +202,17 @@ const VEHICLE_MODEL_TYPE = computed(() => {
const REGISTRATION_TYPE = computed(() => {
return $storeinitData.state.dictData['REGISTRATION_TYPE'] || []
})
// OBU安装方式原因
const XZ_INSTALL_TYPE = computed(() => {
return $storeinitData.state.dictData['XZ_INSTALL_TYPE'] || []
})
// 选装-OBU状态
const XZ_OBU_STATUS = computed(() => {
return $storeinitData.state.dictData['XZ_OBU_STATUS'] || []
})
const XZ_ACCOUNT_TYPE = computed(() => {
return $storeinitData.state.dictData['XZ_ACCOUNT_TYPE'] || []
})
const auditStatus = [
{
label: '待审核',

+ 4
- 0
vite.config.js Vedi File

@@ -94,6 +94,10 @@ export default defineConfig(({ command, mode }) => {
target: env.VITE_APP_UPLOAD_URL,
changeOrigin: true,
},
'/uploadEtcFile': {
target: 'http://100.65.11.2:8086',
changeOrigin: true,
},
'/sett-minio': {
target: env.VITE_APP_UPLOAD_URL,
changeOrigin: true,

Loading…
Annulla
Salva