2024年10月10日 1.0.4 增加解除绑定页面

main
gaoshuguang 1 year ago
parent f7c022e549
commit a3e9708645

@ -34,6 +34,7 @@ public class CorsConfig implements WebMvcConfigurer {
// 是否允许证书 // 是否允许证书
.excludePathPatterns( .excludePathPatterns(
"/WxVehicleBind/**", "/WxVehicleBind/**",
"/WXUnBind/**",
"/404/**", "/404/**",
"/MenuIndex/**", "/MenuIndex/**",
"/index.html", "/index.html",

@ -0,0 +1,56 @@
package com.nmgs.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nmgs.mapper.UnBindMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
@RequestMapping("/UnBind")
public class UnBindController {
@Resource
private UnBindMapper unBindMapper;
@PostMapping("getPage")
@ResponseBody
public Object getPage(@RequestBody Map<String, Object> params) {
Integer pageNum = (Integer) params.get("pageNum");
Integer pageSize = (Integer) params.get("pageSize");
Page<Map<String, Object>> page = new Page<>(pageNum, pageSize);
page = unBindMapper.getPage(page, params);
return page;
}
@PostMapping("deleteData")
@ResponseBody
public Object deleteData(@RequestBody List<Map<String, Object>> params) {
int a=0;
for (Map<String, Object> param : params) {
a+=unBindMapper.deleteData(param);
}
return a;
}
@PostMapping("getWXCarColorList")
@ResponseBody
public Object getWXCarColorList(@RequestBody Map<String, Object> params) {
Map<String,Object> map = new HashMap<>();
map.put("CarType",unBindMapper.getWXCarTypeList());
map.put("CarColor",unBindMapper.getWXCarColorList());
return map;
}
@PostMapping("crossData")
@ResponseBody
public Object crossData(@RequestBody Map<String, Object> params) {
return unBindMapper.crossData(params);
}
}

@ -0,0 +1,23 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
@Repository
@Mapper
public interface UnBindMapper{
Page<Map<String, Object>> getPage(Page<Map<String, Object>> page,@Param("params") Map<String, Object> params);
int deleteData(Map<String, Object> params);
List<Map<String, Object>> getWXCarColorList();
List<Map<String, Object>> getWXCarTypeList();
int crossData(Map<String, Object> params);
}

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmgs.mapper.UnBindMapper">
<select id="getPage" resultType="java.util.Map">
SELECT a.vehicleid,
a.vehiclecolor,
a.wxid,
c.wxname,
a.ismanager,
b.vehicletype,
b.phoneNumber,
b.freetype,
b.freeStartTime,
b.freeEndTime,
b.freeTimes
FROM wx_vehiclewx_bind a
LEFT JOIN wx_vehiclebind b ON a.vehicleid = b.vehicleid
AND a.vehiclecolor = b.vehiclecolor
LEFT JOIN wx_vehiclewxdata c ON a.wxid = c.wxid
<where>
<if test="params.wxname!=null and params.wxname!=''">
<bind name="wxname" value="'%'+params.wxname+'%'"/>
and c.wxname like #{wxname}
</if>
<if test="params.vehicleid!=null and params.vehicleid!=''">
<bind name="vehicleid" value="'%'+params.vehicleid+'%'"/>
and a.vehicleid like #{vehicleid}
</if>
<if test="params.vehiclecolor!=null and params.vehiclecolor!=''">
and a.vehiclecolor = #{params.vehiclecolor}
</if>
<if test="params.ismanager!=null and params.ismanager!=''">
and a.ismanager = #{params.ismanager}
</if>
</where>
</select>
<select id="getWXCarColorList" resultType="java.util.Map">
SELECT *
FROM atype_text
</select>
<select id="getWXCarTypeList" resultType="java.util.Map">
SELECT *
FROM type_text
</select>
<delete id="deleteData">
DELETE
FROM wx_vehiclewx_bind
WHERE vehicleid = #{vehicleid}
AND vehiclecolor = #{vehiclecolor}
AND ismanager = #{ismanager}
AND wxid = #{wxid}
</delete>
<update id="crossData">
update wx_vehiclewx_bind set ismanager= 0
WHERE vehicleid = #{vehicleid}
AND vehiclecolor = #{vehiclecolor}
AND ismanager = #{ismanager}
AND wxid = #{wxid}
</update>
</mapper>

@ -3,3 +3,4 @@
2 2023年11月29日 1.0.1 增加微信解绑申请操作 2 2023年11月29日 1.0.1 增加微信解绑申请操作
3 2024年04月16日 1.0.2 增加使用次数及剩余次数 3 2024年04月16日 1.0.2 增加使用次数及剩余次数
4 2024年07月02日 1.0.3 优化查询语句 4 2024年07月02日 1.0.3 优化查询语句
5 2024年10月10日 1.0.4 增加解除绑定页面

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmgs.mapper.UnBindMapper">
<select id="getPage" resultType="java.util.Map">
SELECT a.vehicleid,
a.vehiclecolor,
a.wxid,
c.wxname,
a.ismanager,
b.vehicletype,
b.phoneNumber,
b.freetype,
b.freeStartTime,
b.freeEndTime,
b.freeTimes
FROM wx_vehiclewx_bind a
LEFT JOIN wx_vehiclebind b ON a.vehicleid = b.vehicleid
AND a.vehiclecolor = b.vehiclecolor
LEFT JOIN wx_vehiclewxdata c ON a.wxid = c.wxid
<where>
<if test="params.wxname!=null and params.wxname!=''">
<bind name="wxname" value="'%'+params.wxname+'%'"/>
and c.wxname like #{wxname}
</if>
<if test="params.vehicleid!=null and params.vehicleid!=''">
<bind name="vehicleid" value="'%'+params.vehicleid+'%'"/>
and a.vehicleid like #{vehicleid}
</if>
<if test="params.vehiclecolor!=null and params.vehiclecolor!=''">
and a.vehiclecolor = #{params.vehiclecolor}
</if>
<if test="params.ismanager!=null and params.ismanager!=''">
and a.ismanager = #{params.ismanager}
</if>
</where>
</select>
<select id="getWXCarColorList" resultType="java.util.Map">
SELECT *
FROM atype_text
</select>
<select id="getWXCarTypeList" resultType="java.util.Map">
SELECT *
FROM type_text
</select>
<delete id="deleteData">
DELETE
FROM wx_vehiclewx_bind
WHERE vehicleid = #{vehicleid}
AND vehiclecolor = #{vehiclecolor}
AND ismanager = #{ismanager}
AND wxid = #{wxid}
</delete>
<update id="crossData">
update wx_vehiclewx_bind set ismanager= 0
WHERE vehicleid = #{vehicleid}
AND vehiclecolor = #{vehiclecolor}
AND ismanager = #{ismanager}
AND wxid = #{wxid}
</update>
</mapper>

@ -1,5 +0,0 @@
序号 日期 版本号 说明
1 2023年11月27日 1.0.0 初始版本号
2 2023年11月29日 1.0.1 增加微信解绑申请操作
3 2024年04月16日 1.0.2 增加使用次数及剩余次数
4 2024年07月02日 1.0.3 优化查询语句

@ -3,3 +3,4 @@
2 2023年11月29日 1.0.1 增加微信解绑申请操作 2 2023年11月29日 1.0.1 增加微信解绑申请操作
3 2024年04月16日 1.0.2 增加使用次数及剩余次数 3 2024年04月16日 1.0.2 增加使用次数及剩余次数
4 2024年07月02日 1.0.3 优化查询语句 4 2024年07月02日 1.0.3 优化查询语句
5 2024年10月10日 1.0.4 增加解除绑定页面

@ -10,6 +10,7 @@ com\nmgs\config\ErrorConfig.class
com\nmgs\util\PathUtil.class com\nmgs\util\PathUtil.class
com\nmgs\mapper\VehicleWxBindMapper.class com\nmgs\mapper\VehicleWxBindMapper.class
com\nmgs\entity\WxChatCarUser.class com\nmgs\entity\WxChatCarUser.class
com\nmgs\controller\UnBindController.class
com\nmgs\util\PagesUtils.class com\nmgs\util\PagesUtils.class
com\nmgs\mapper\FreeTypeTextMapper.class com\nmgs\mapper\FreeTypeTextMapper.class
com\nmgs\config\FilterConfig.class com\nmgs\config\FilterConfig.class
@ -19,6 +20,7 @@ com\nmgs\mapper\ATtypeTextMapper.class
com\nmgs\config\ThreadPoolConfig.class com\nmgs\config\ThreadPoolConfig.class
com\nmgs\mapper\WxOutPortMapper.class com\nmgs\mapper\WxOutPortMapper.class
com\nmgs\entity\VehicleImages.class com\nmgs\entity\VehicleImages.class
com\nmgs\mapper\UnBindMapper.class
com\nmgs\util\TokenUtil.class com\nmgs\util\TokenUtil.class
com\nmgs\FreeCarRegistrationApplication.class com\nmgs\FreeCarRegistrationApplication.class
com\nmgs\mapper\WxVehicleWxDataMapper.class com\nmgs\mapper\WxVehicleWxDataMapper.class

@ -7,6 +7,7 @@ D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\n
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\config\CorsConfig.java D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\config\CorsConfig.java
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\entity\VehicleWxBind.java D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\entity\VehicleWxBind.java
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\service\WxVehicleBindService.java D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\service\WxVehicleBindService.java
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\mapper\UnBindMapper.java
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\config\ErrorConfig.java D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\config\ErrorConfig.java
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\config\ThreadPoolConfig.java D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\config\ThreadPoolConfig.java
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\MyEnvironmentPostProcessor.java D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\MyEnvironmentPostProcessor.java
@ -41,5 +42,6 @@ D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\n
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\config\RedisSessionConfig.java D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\config\RedisSessionConfig.java
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\util\main.java D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\util\main.java
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\util\PlateRegexutil.java D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\util\PlateRegexutil.java
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\controller\UnBindController.java
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\entity\WxUnBindApply.java D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\entity\WxUnBindApply.java
D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\mapper\TypeTextMapper.java D:\myproject\git\GLT-FreeCarRegistration\FreeCarRegistration\src\main\java\com\nmgs\mapper\TypeTextMapper.java

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,32 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<link rel="icon" href="/favicon.ico"/>
<title></title>
<script type="module" crossorigin src="./assets/index.e4d9b69f.js"></script>
<link rel="stylesheet" href="./assets/index.c4ceb410.css">
</head>
<body>
<div id="app">
<div class="loading">
<div class="loading-wrap">
<div class="loading-dots">
<span class="dot dot-spin">
<i></i>
<i></i>
<i></i>
<i></i>
</span>
</div>
<div class="loading-title">
正在缓冲...
</div>
</div>
</div>
</div>
<script type="text/javascript" src="../static/bmapOffline/map_load.js"></script>
</body>
</html>

@ -1,5 +1,5 @@
{ {
"name": "whitelistmanagersysview", "name": "freecarregistrationview",
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"scripts": { "scripts": {

@ -17,3 +17,8 @@ export const queryWxName = data => post("/FreeCarRegistration/WxVehicleBind/quer
export const updateApproved = data => post("/FreeCarRegistration/WxVehicleBind/updateApproved", data) export const updateApproved = data => post("/FreeCarRegistration/WxVehicleBind/updateApproved", data)
export const exportFreeExcel = data => downLoad("/FreeCarRegistration/WxVehicleBind/exportFreeExcel", data) export const exportFreeExcel = data => downLoad("/FreeCarRegistration/WxVehicleBind/exportFreeExcel", data)
//解除绑定
export const getUnPage = data => post("/FreeCarRegistration/UnBind/getPage", data)
export const deleteData = data => post("/FreeCarRegistration/UnBind/deleteData", data)
export const getWXCarColorList = data => post("/FreeCarRegistration/UnBind/getWXCarColorList", data)
export const crossData = data => post("/FreeCarRegistration/UnBind/crossData", data)

@ -2,6 +2,7 @@ import * as vueRouter from "vue-router";
import NotFound from '../../views/ErrorPage/404.vue'; import NotFound from '../../views/ErrorPage/404.vue';
import gpy from '../../views/wxCharCarUser/gpy.vue'; import gpy from '../../views/wxCharCarUser/gpy.vue';
import WxVehicleBind from '../../views/wxCharCarUser/WxVehicleBind.vue'; import WxVehicleBind from '../../views/wxCharCarUser/WxVehicleBind.vue';
import WXUnBind from '../../views/wxCharCarUser/WXUnBind.vue';
const routes = [ const routes = [
{ {
@ -12,6 +13,10 @@ const routes = [
path: '/FreeCarRegistration/WxVehicleBind', path: '/FreeCarRegistration/WxVehicleBind',
component: WxVehicleBind component: WxVehicleBind
}, },
{
path: '/FreeCarRegistration/WXUnBind',
component: WXUnBind
},
{ {
path: '/FreeCarRegistration/404', path: '/FreeCarRegistration/404',
component: NotFound component: NotFound

@ -0,0 +1,276 @@
<template>
<el-row>
<el-col :span="24">
<div style="padding: 10px 0">
<el-input style="width: 150px;margin-left: 0.5%" placeholder="绑定人" v-model="searchForm.wxname"></el-input>
<el-input style="width: 150px;margin-left: 0.5%" placeholder="车牌号" v-model="searchForm.vehicleid"></el-input>
<el-select v-model="searchForm.vehiclecolor" class="m-2" :clearable="true" placeholder="车牌颜色"
style="width: 150px;margin-left: 0.5%">
<el-option
v-for="item in CarColorList"
:label="item.text"
:value="item.value"
/>
</el-select>
<el-select v-model="searchForm.ismanager" class="m-2" :clearable="true" placeholder="审核状态"
style="width: 150px;margin-left: 0.5%">
<el-option
label="非车主用户"
:value="0"
/>
<el-option
label="车主"
:value="1"
/>
<el-option
label="已拒绝"
:value="2"
/>
<el-option
label="待审核"
:value="3"
/>
</el-select>
<el-button type="primary" style="margin-left: 0.5%;margin-top: 0;" @click="network">
<el-icon style="vertical-align: middle;">
<search/>
</el-icon>
<span style="vertical-align: middle;"> 搜索 </span>
</el-button>
<el-button type="primary" style="margin-left: 0.5%;margin-top: 0;" @click="reNetwork">
<el-icon>
<Refresh/>
</el-icon>
<span style="vertical-align: middle;"> 重置 </span>
</el-button>
<el-button type="danger" style="margin-top: 0;" @click="deleteSelect(null)">
<el-icon>
<Delete/>
</el-icon>
<span style="vertical-align: middle;"> 删除 </span>
</el-button>
</div>
<el-table :data="tableData" border
:highlight-current-row="true"
style="width: 100%;"
:height=myHeight
@selection-change="handleSelectionChange"
v-loading="tableLoading"
>
<el-table-column :resizable="false" :fixed="true" type="selection" width="50" align="center"></el-table-column>
<el-table-column prop="wxname" label="绑定人" align="center"></el-table-column>
<el-table-column prop="vehicleid" label="车牌号码" align="center"></el-table-column>
<el-table-column prop="vehiclecolor" label="车牌颜色" align="center" :formatter="carColor"></el-table-column>
<el-table-column prop="ismanager" label="状态" align="center" :formatter="statusType"></el-table-column>
<el-table-column prop="vehicletype" label="车型" align="center" :formatter="carType"></el-table-column>
<el-table-column prop="phoneNumber" label="备注" align="center"></el-table-column>
<el-table-column :resizable="false" prop="right" label="操作" width="130" align="center">
<template v-slot="scope">
<el-button style="width: 48%;margin-left: 2%;margin-top: 2%" @click="deleteSelect(scope.row)" type="danger"
size="default" :icon="Delete">
</el-button>
<el-button style="width: 48%;margin-left: 2%;margin-top: 2%" @click="toCrossData(scope.row)" type="success"
size="default" :icon="Select" :disabled="scope.row.ismanager!==3">
</el-button>
</template>
</el-table-column>
</el-table>
<el-config-provider :locale="locale">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchForm.pageNum"
:page-sizes="[ 10, 50, 100]"
:page-size="searchForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="searchForm.total">
</el-pagination>
</el-config-provider>
</el-col>
</el-row>
</template>
<script>
import zhCn from 'element-plus/lib/locale/lang/zh-cn'
import { getUnPage, deleteData, getWXCarColorList, crossData} from "../../util/api/api.js";
import pro from '../../util/tool.js';
import {Delete, Edit, Reading, ZoomIn, Search,Select} from '@element-plus/icons-vue'
import {ElMessage} from "element-plus/es";
import {ElMessageBox} from "element-plus";
export default {
name: "WXUnBind",
components: {},
data() {
return {
Select,
Delete,
Edit,
Reading,
ZoomIn,
locale: zhCn,
tableData: [],
CarColorList: [],
CarColorMap: {},
CarTypeList: [],
CarTypeMap: {},
multipleSelection: [],
searchForm: {
total: 0,
pageNum: 1,
pageSize: 10,
},
formLabelWidth: '130px',
myHeight: 500,
tableLoading: false,
}
},
methods: {
deleteSelect(row) {
let carNoList = [];
if (row != null) {
carNoList[0] = row;
} else {
carNoList = this.multipleSelection;
}
if (carNoList.length === 0) {
ElMessage({
showClose: true,
message: '请选择要删除的数据!',
type: 'warning',
})
return;
}
ElMessageBox.confirm(
'是否批量删除' + carNoList.length + '条数据?',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {
deleteData(carNoList).then((res) => {
if (res) {
ElMessage({
message: res + '条删除成功!',
type: 'success',
})
this.network()
} else {
ElMessage.error('删除失败!')
}
})
}).catch(() => {
ElMessage({
type: 'info',
message: '已取消!',
})
})
},
toCrossData(row) {
ElMessageBox.confirm(
'是否确认通过该条数据?',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {
crossData(row).then((res) => {
if (res) {
ElMessage({
message: '修改状态成功!',
type: 'success',
})
this.network()
} else {
ElMessage.error('修改状态失败!')
}
})
}).catch(() => {
ElMessage({
type: 'info',
message: '已取消!',
})
})
},
handleSelectionChange(row) { //
this.multipleSelection = row
},
reNetwork() {
this.searchForm = {
total: 0,
pageNum: 1,
pageSize: 10,
};
this.network()
},
network() {
this.tableLoading = true;
getUnPage(this.searchForm).then((res) => {
if (res.records != null) {
this.tableData = res.records;
this.searchForm.total = res.total;
this.searchForm.pageNum = res.current;
this.searchForm.pageSize = res.size;
} else {
ElMessage.error('查询失败!')
}
this.tableLoading = false;
})
},
carColor(row, column) {
if (row[column.property] != null) {
return this.CarColorMap[row[column.property]]
}
},
carType(row, column) {
if (row[column.property] != null) {
return this.CarTypeMap[row[column.property]]
}
},
statusType(row, column) {
if (row[column.property] === 1) {
return '车主'
} else if (row[column.property] === 2) {
return '已拒绝'
} else if (row[column.property] === 3) {
return '待审核'
} else if (row[column.property] === 0) {
return '非车主用户'
}
},
dateFormat(row, column) {
return pro.dateFormat(row[column.property]);
},
handleSizeChange(val) { //
this.searchForm.pageSize = val
this.network()
},
handleCurrentChange(val) { //
this.searchForm.pageNum = val
this.network()
},
},
mounted() {
getWXCarColorList().then((res) => {
this.CarColorList = res.CarColor;
for (let i = 0; i < res.CarColor.length; i++) {
this.CarColorMap[res.CarColor[i].value] = res.CarColor[i].text
}
this.CarTypeList = res.CarType;
for (let i = 0; i < res.CarType.length; i++) {
this.CarTypeMap[res.CarType[i].VALUE] = res.CarType[i].TEXT
}
this.network();
})
this.myHeight = (document.documentElement.clientHeight) * 0.81;
}
}
</script>
<style scoped>
</style>
Loading…
Cancel
Save