项目管理相关BUG处理

dev_xd
lj7788@126.com 2025-07-16 17:10:01 +08:00
parent 23ea56e7a5
commit 6186598b52
6 changed files with 161 additions and 130 deletions

View File

@ -110,12 +110,12 @@ public class SysRole extends BaseEntity
public static boolean isGsAdmin(String roleKey) public static boolean isGsAdmin(String roleKey)
{ {
return Objects.equals(roleKey,"gsAdmin"); return roleKey!=null && roleKey.startsWith("gsAdmin");
} }
public static boolean isGsAdmin(List<String> roleKeys) public static boolean isGsAdmin(List<String> roleKeys)
{ {
return roleKeys.contains("gsAdmin"); return roleKeys.stream().filter(d->d!=null && d.startsWith("gsAdmin")).count()>0;
} }
@NotBlank(message = "角色名称不能为空") @NotBlank(message = "角色名称不能为空")

View File

@ -989,6 +989,24 @@ export default {
} }
} }
} }
.check-in-module,.exception-alert {
.elTable {
.el-table__empty-text {
font-size: 14px;
}
th {
.cell {
font-size:16px;
}
}
td {
.cell {
font-size: 14px;
}
}
}
}
.BMap_bubble_pop { .BMap_bubble_pop {
width: 440px !important; width: 440px !important;

View File

@ -12,6 +12,7 @@ import com.yanzhu.system.api.model.LoginUser;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
/** /**
* *
@ -101,7 +102,7 @@ public class SecurityUtils
*/ */
public static boolean isGSAdmin() public static boolean isGSAdmin()
{ {
Set<String> roles = getLoginUser().getRoles(); Set<String> roles = getLoginUser().getSysUser().getRoles().stream().map(role -> role.getRoleKey()).collect(Collectors.toSet());
if(Objects.nonNull(roles)){ if(Objects.nonNull(roles)){
for(String role:roles){ for(String role:roles){
if(role.startsWith("gsAdmin")){ if(role.startsWith("gsAdmin")){

View File

@ -142,7 +142,7 @@ public class ProProjectInfoController extends BaseController
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
if(!SecurityUtils.isAdmin(loginUser.getUserid())){ if(!SecurityUtils.isAdmin(loginUser.getUserid())){
if(SecurityUtils.isGSAdmin()){ if(SecurityUtils.isGSAdmin()){
proProjectInfo.setActiveComId(SecurityUtils.getLoginUser().getProjectDeptId()); proProjectInfo.setActiveComId(SecurityUtils.getLoginUser().getSysUser().getActiveComId());
}else{ }else{
proProjectInfo.setCurrentUserId(SecurityUtils.getUserId()); proProjectInfo.setCurrentUserId(SecurityUtils.getUserId());
} }

View File

@ -1,170 +1,180 @@
<template> <template>
<el-dialog :title="title" v-model="show" width="800px" append-to-body class="baidu-map-dialog" <el-dialog v-model="show" width="800px" append-to-body class="baidu-map-dialog" :close-on-click-modal="false" :close-on-press-escape="false">
:close-on-click-modal="false" :close-on-press-escape="false"> <template #header>
<div class="div-info"> <span>{{ title }}</span>
<div>经度纬度:{{ point ? (point.lng.toFixed(5) + "," + point.lat.toFixed(5)) : '' }}</div> <span style="display: inline-flex; width: 60%; margin-left: calc(40% - 80px)">
<div>详细地址:{{ getAddress() }}</div> <el-input v-model="data.txtAarea" placeholder="请输入地址" @keyup.enter="search" />
<div style="margin-top: 10px;text-align: center;" v-if="getAddress()"> <el-button type="primary" @click="search" style="margin-left: 10px">查询</el-button>
<el-button size="small" type="primary" @click="doOk"></el-button> </span>
</div> </template>
</div> <div class="div-info">
<div id="index-map" style="width: 100%;height:600px;"></div> <div>经度纬度:{{ point ? point.lng.toFixed(5) + "," + point.lat.toFixed(5) : "" }}</div>
</el-dialog> <div>详细地址:{{ getAddress() }}</div>
<div style="margin-top: 10px; text-align: center" v-if="getAddress()">
<el-button size="small" type="primary" @click="doOk"></el-button>
</div>
</div>
<div id="index-map" style="width: 100%; height: 600px"></div>
</el-dialog>
</template> </template>
<script setup> <script setup>
import { reactive, ref } from "vue";
const { proxy } = getCurrentInstance();
const show = ref(false); const show = ref(false);
const title = ref(""); const title = ref("");
const map = ref(""); const map = ref("");
const point = ref(""); const point = ref("");
const cityInfo = ref(""); const cityInfo = ref("");
const data = reactive({
txtAarea: "",
});
const emit = defineEmits(["docom"]); const emit = defineEmits(["docom"]);
function getCity(data, cb) {
let myPoint = new BMapGL.Point(+data.longitude, +data.latitude);
let myGeo = new BMapGL.Geocoder({ extensions_town: true });
myGeo.getLocation(myPoint, r => {
let cityInfo = {
address: r.content?.address || '',
poi_desc: r.content?.poi_desc || '',
district: r.content?.address_detail?.district || '',
city: r.content?.address_detail?.city || '',
province: r.content?.address_detail?.province || ''
}
cb && cb(myPoint, cityInfo);
});
}
function doOk() { function doOk() {
emit("docom", point.value, cityInfo.value); emit("docom", point.value, cityInfo.value);
show.value = false; show.value = false;
} }
function getAddress() { function getAddress() {
let addr = cityInfo.value?.address || ''; let addr = cityInfo.value?.address || "";
return addr; return addr;
} }
function showDlg(opt) { function showDlg(opt) {
title.value = opt?.title || '选择地址'; title.value = opt?.title || "选择地址";
show.value = true; show.value = true;
setTimeout(() => { setTimeout(() => {
initMap(opt); initMap(opt);
}, 400); }, 400);
} }
function currentPoint() { function currentPoint() {
let geolocation = new BMapGL.Geolocation(); let geolocation = new BMapGL.Geolocation();
geolocation.enableSDKLocation(); geolocation.enableSDKLocation();
geolocation.getCurrentPosition(e => { geolocation.getCurrentPosition((e) => {
if (e.point) { if (e && e.point) {
let point = e.point let pt = e.point;
let initMarker = new BMapGL.Marker(point); map.value.centerAndZoom(pt, 16);
map.value.centerAndZoom(point, 18); mapClick({ latlng: pt });
map.value.addOverlay(initMarker); }
} });
})
} }
function mapClick(e) { function mapClick(e) {
point.value = e.latlng; point.value = e.latlng;
let myGeo = new BMapGL.Geocoder({ extensions_town: true }); let myGeo = new BMapGL.Geocoder({ extensions_town: true });
myGeo.getLocation(e.latlng, r => { myGeo.getLocation(e.latlng, (r) => {
if (r) { if (r) {
cityInfo.value = { cityInfo.value = {
address: r.content?.address || '', address: r.content?.address || "",
poi_desc: r.content?.poi_desc || '', poi_desc: r.content?.poi_desc || "",
district: r.content?.address_detail?.district || '', district: r.content?.address_detail?.district || "",
city: r.content?.address_detail?.city || '', city: r.content?.address_detail?.city || "",
province: r.content?.address_detail?.province || '' province: r.content?.address_detail?.province || "",
} };
} else { if (cityInfo.value.address) {
cityInfo.value = {} map.value.clearOverlays();
} map.value.addOverlay(new BMapGL.Marker(e.latlng, { title: cityInfo.value.address }));
}); }
} else {
cityInfo.value = {};
}
});
} }
function initMap(opt) { function initMap(opt) {
let imap = new BMapGL.Map("index-map"); let imap = new BMapGL.Map("index-map");
map.value = imap; map.value = imap;
let point = new BMapGL.Point(116.404, 39.915); let point = new BMapGL.Point(116.404, 39.915);
// //
map.value.centerAndZoom(point, 15); map.value.centerAndZoom(point, 15);
map.value.setDefaultCursor("crosshair");// map.value.setDefaultCursor("crosshair"); //
map.value.enableScrollWheelZoom();// map.value.enableScrollWheelZoom(); //
// //
// //
let initMarker = new BMapGL.Marker(point); let initMarker = new BMapGL.Marker(point);
// //
map.value.addOverlay(initMarker); map.value.addOverlay(initMarker);
// //
//initMarker.enableDragging();
//
//
// map.value.addControl(new BMapGL.NavigationControl());
map.value.addControl(new BMapGL.NavigationControl()); //
// map.value.addEventListener("click", mapClick);
map.value.addEventListener("click", mapClick); var myGeo = new BMapGL.Geocoder();
var myGeo = new BMapGL.Geocoder(); if (opt && opt.address) {
// let myGeo = new BMapGL.Geocoder();
myGeo.getPoint('经河新城', function (point) { myGeo.getPoint(opt.address, function (pt) {
if (point) { if (pt) {
map.value.centerAndZoom(point, 16); map.value.centerAndZoom(pt, 16);
map.value.addOverlay(new BMapGL.Marker(point, { title: '经河新城' })) mapClick({ latlng: pt });
map.value.enableScrollWheelZoom(true); } else {
//map.value.setHeading(64.5); // currentPoint();
//map.value.setTilt(73); // }
} else { });
alert('您选择的地址没有解析到结果!'); } else {
}
initMapData(opt)
}, '陕西省')
currentPoint(); currentPoint();
}
} }
function initMapData(data) { function initMapData(opt) {
if (data.latitude && data.longitude) { if (opt.latitude && opt.longitude) {
point.value = {} point.value = {};
point.value.lng = data.longitude * 1.0; point.value.lng = opt.longitude * 1.0;
point.value.lat = data.latitude * 1.0; point.value.lat = opt.latitude * 1.0;
} }
cityInfo.value = {} cityInfo.value = {};
cityInfo.value.address = data.projectAddress || '' cityInfo.value.address = opt.projectAddress || "";
cityInfo.value.district = data.district || '' cityInfo.value.district = opt.district || "";
cityInfo.value.city = data.city || '' cityInfo.value.city = opt.city || "";
cityInfo.value.province = data.province || '' cityInfo.value.province = opt.province || "";
} }
/** 暴露组件 */ /** 暴露组件 */
defineExpose({ defineExpose({
showDlg, showDlg,
initMapData initMapData,
}); });
function search() {
if (!data.txtAarea) {
proxy.$modal.msgError("请输入要搜索的地址");
return;
}
let myGeo = new BMapGL.Geocoder();
myGeo.getPoint(data.txtAarea, function (pt) {
if (pt) {
map.value.centerAndZoom(pt, 16);
mapClick({ latlng: pt });
} else {
proxy.$modal.msgError("您输入的地址没有解析到结果!");
}
});
}
</script> </script>
<style lang="scss"> <style lang="scss">
.baidu-map-dialog { .baidu-map-dialog {
.el-dialog__body { .el-dialog__body {
position: relative; position: relative;
padding: 0px; padding: 0px;
.div-info { .div-info {
position: absolute; position: absolute;
top: 0px; top: 0px;
right: 10px; right: 10px;
width: 300px; width: 300px;
font-size: 12px; font-size: 12px;
background: rgba(255, 255, 255, 0.5); background: rgba(255, 255, 255, 0.5);
box-shadow: 6px 6px 6px rgba(0, 0, 0, 0.2); box-shadow: 6px 6px 6px rgba(0, 0, 0, 0.2);
z-index: 99999; z-index: 99999;
padding: 8px; padding: 8px;
border: solid 1px #ccc; border: solid 1px #ccc;
color: #51b5ff; color: #51b5ff;
line-height: 24px; line-height: 24px;
}
} }
}
} }
</style> </style>

View File

@ -194,7 +194,7 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="项目地址" prop="projectAddress" ref="fitemPrjAddr"> <el-form-item label="项目地址" prop="projectAddress" ref="fitemPrjAddr">
<el-input v-model="addressInfos" placeholder="请选择项目地址信息" @focus="getMapInfo"> <el-input v-model="addressInfos" placeholder="请选择项目地址信息" @click="getMapInfo">
<template #prefix> <template #prefix>
<el-icon class="el-input__icon"> <el-icon class="el-input__icon">
<Location /> <Location />
@ -449,6 +449,7 @@ function mapDocom(pt, city) {
form.value.latitude = pt.lat.toFixed(5); form.value.latitude = pt.lat.toFixed(5);
addressInfos.value = form.value.projectAddress + "," + form.value.longitude + "," + form.value.latitude; addressInfos.value = form.value.projectAddress + "," + form.value.longitude + "," + form.value.latitude;
fitemPrjAddr.value.clearValidate(); fitemPrjAddr.value.clearValidate();
console.log("--1---")
} }
function menuCommand(e, row) { function menuCommand(e, row) {
@ -765,6 +766,7 @@ function getDeptTree() {
/** 地图选择 */ /** 地图选择 */
function getMapInfo() { function getMapInfo() {
console.log("----2----")
mapRef.value.showDlg(form.value); mapRef.value.showDlg(form.value);
} }