From 39868da3de6192d19dfd316c8be1c080b2d3ebe7 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: Fri, 18 Apr 2025 14:35:46 +0800
Subject: [PATCH] 修改
---
.env.development | 2
src/views/homePage.vue | 4
src/store/modules/user.js | 6 +
src/views/hazardousChemicals/systemManage/config/components/mapLocation.vue | 169 ++++++++++++++++++++++++++++
src/views/hazardousChemicals/systemManage/user/components/userDialog.vue | 7
src/views/hazardousChemicals/systemManage/company/index.vue | 5
src/assets/images/map.png | 0
src/views/hazardousChemicals/systemManage/user/index.vue | 2
src/views/hazardousChemicals/systemManage/config/components/configDialog.vue | 58 ++++++++-
src/views/hazardousChemicals/systemManage/config/index.vue | 2
src/views/components/flowDetail.vue | 21 ++-
src/views/hazardousChemicals/systemManage/company/components/companyDialog.vue | 29 ++++
12 files changed, 286 insertions(+), 19 deletions(-)
diff --git a/.env.development b/.env.development
index 855a986..243b591 100644
--- a/.env.development
+++ b/.env.development
@@ -11,7 +11,7 @@
VITE_APP_RESOURCE_API = 'http://192.168.2.16:9000/trainexam/'
#董
-VITE_APP_BASE_API = 'http://192.168.2.24:8083/api'
+VITE_APP_BASE_API = 'http://192.168.2.37:8083/api'
#贺
#VITE_APP_BASE_API = 'http://192.168.2.11:5812/api'
diff --git a/src/assets/images/map.png b/src/assets/images/map.png
new file mode 100644
index 0000000..aa27924
--- /dev/null
+++ b/src/assets/images/map.png
Binary files differ
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 8461d2e..7fdf5a5 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -4,6 +4,7 @@
import Cookies from "js-cookie";
import {getUserById} from "@/api/hazardousChemicals/user";
import {getConfigById} from "@/api/hazardousChemicals/config";
+import {ElMessage} from "element-plus";
const useUserStore = defineStore(
'user',
{
@@ -31,6 +32,11 @@
if(info.code === 200){
Cookies.set('userInfo',JSON.stringify(info.data))
}
+ if(info.data.userType == 3){
+ ElMessage.warning('监管部门账号不可登录')
+ loading.value = false
+ return
+ }
if(info.data.userType != 0){
const con = await getConfigById(res.data.companyId);
if(con.code === 200){
diff --git a/src/views/components/flowDetail.vue b/src/views/components/flowDetail.vue
index 00b2bce..a20c893 100644
--- a/src/views/components/flowDetail.vue
+++ b/src/views/components/flowDetail.vue
@@ -36,6 +36,7 @@
import {ElMessage} from "element-plus";
import {getAllProFlow, getFlowByCode} from "@/api/hazardousChemicals/productRecord";
import { MoreFilled } from '@element-plus/icons-vue'
+import Cookies from "js-cookie";
const busRef = ref();
const length = ref()
const title = ref('')
@@ -49,17 +50,16 @@
dataList: [],
active: null
})
-
+const userInfo = ref()
const openDialog = async (type, value) => {
+ userInfo.value = JSON.parse(Cookies.get('userInfo'))
title.value = type;
if(type === 'code'){
state.form.code = value
}else {
-
state.form = JSON.parse(JSON.stringify(value))
}
-
await getAllFlow()
}
@@ -68,11 +68,13 @@
let param = {}
if(title.value == 'pro'){
param = {
- productId: state.form.id
+ productId: state.form.id,
+ companyId: userInfo.value.companyId
}
}else {
param = {
- productId: state.form.productId
+ productId: state.form.productId,
+ companyId: userInfo.value.companyId
}
}
const res = await getAllProFlow(param)
@@ -103,11 +105,13 @@
let param = {}
if(title.value == 'raw'){
param = {
- hazmatId: state.form.id
+ hazmatId: state.form.id,
+ companyId: userInfo.value.companyId
}
}else {
param = {
- hazmatId: state.form.hazmatId
+ hazmatId: state.form.hazmatId,
+ companyId: userInfo.value.companyId
}
}
const res = await getAllRawFlow(param)
@@ -136,7 +140,8 @@
}
}else if(title.value == 'code'){
const param = {
- code: state.form.code
+ code: state.form.code,
+ companyId: userInfo.value.companyId
}
const res = await getFlowByCode(param)
if(res.code == 200){
diff --git a/src/views/hazardousChemicals/systemManage/company/components/companyDialog.vue b/src/views/hazardousChemicals/systemManage/company/components/companyDialog.vue
index afc3789..f12a4ea 100644
--- a/src/views/hazardousChemicals/systemManage/company/components/companyDialog.vue
+++ b/src/views/hazardousChemicals/systemManage/company/components/companyDialog.vue
@@ -18,6 +18,20 @@
<el-form-item label="企业名称:" prop="name" >
<el-input v-model.trim="state.form.name" placeholder="请输入企业名称"></el-input>
</el-form-item>
+ <el-form-item label="企业类型:" prop="type" >
+ <el-select
+ v-model="state.form.type"
+ placeholder="请选择企业类型"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in state.typeList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ />
+ </el-select>
+ </el-form-item>
<el-form-item label="负责人:" prop="major" >
<el-input v-model.trim="state.form.major" placeholder="请输入负责人"></el-input>
</el-form-item>
@@ -114,7 +128,22 @@
name: [{ required: true, trigger: "blur", validator: validateName }],
phone:[{ required: true, trigger: "blur", validator: validatePhone }],
code:[{ required: true, validator: validateCode, trigger: 'blur' }],
+ type: [{ required: true, message: '请选择企业类型', trigger: 'blur' }],
},
+ typeList: [
+ {
+ id: 0,
+ name: '研发类'
+ },
+ {
+ id: 1,
+ name: '生产类'
+ },
+ {
+ id: 2,
+ name: '中试类'
+ },
+ ]
})
diff --git a/src/views/hazardousChemicals/systemManage/company/index.vue b/src/views/hazardousChemicals/systemManage/company/index.vue
index c0a6397..619acf0 100644
--- a/src/views/hazardousChemicals/systemManage/company/index.vue
+++ b/src/views/hazardousChemicals/systemManage/company/index.vue
@@ -32,6 +32,11 @@
<el-table-column label="企业信用代码" prop="creditCode" align="center" />
<el-table-column label="企业编码" prop="code" align="center" />
<el-table-column label="企业名称" prop="name" align="center" />
+ <el-table-column label="企业类型" prop="type" align="center" >
+ <template #default="scope">
+ <span>{{scope.row.type == 0 ? '研发类' : scope.row.type == 1 ? '生产类' : scope.row.type == 2?'中试类':'' }}</span>
+ </template>
+ </el-table-column>
<el-table-column label="负责人" prop="major" align="center" />
<el-table-column label="联系电话" prop="phone" align="center"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200" >
diff --git a/src/views/hazardousChemicals/systemManage/config/components/configDialog.vue b/src/views/hazardousChemicals/systemManage/config/components/configDialog.vue
index 8082c6f..d765c2c 100644
--- a/src/views/hazardousChemicals/systemManage/config/components/configDialog.vue
+++ b/src/views/hazardousChemicals/systemManage/config/components/configDialog.vue
@@ -3,7 +3,7 @@
<el-dialog
v-model="dialogVisible"
:title="title"
- width="500px"
+ width="600px"
:before-close="handleClose"
:close-on-press-escape="false"
:close-on-click-modal="false"
@@ -44,7 +44,21 @@
</template>
</el-upload>
</el-form-item>
-
+ <el-row :gutter="24">
+ <el-col :span="12">
+ <el-form-item label="经度:" prop="longitude" label-width="90px">
+ <el-input v-model="state.form.longitude" style="width:165px" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="11">
+ <el-form-item label="纬度:" prop="latitude" label-width="60px">
+ <el-input v-model="state.form.latitude" style="width:165px"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="1">
+ <img :src="mapPng" class="enterpriseBasicInformation_image" @click="showMapLocation" />
+ </el-col>
+ </el-row>
</el-form>
<template #footer>
<span class="dialog-footer">
@@ -53,14 +67,18 @@
</span>
</template>
</el-dialog>
+ <mapLo ref="mapLocationRef" @giveLatLng="achieveLatLng"></mapLo>
</div>
</template>
<script setup>
import {reactive, ref, toRefs} from 'vue'
import {ElMessage} from "element-plus";
+import mapLo from './mapLocation.vue'
import {addWarehouse, checkName, editWarehouse} from "@/api/hazardousChemicals/warehouse";
import {verifyPhone} from "@/utils/validate";
import {checkBasicName} from "@/api/hazardousChemicals/basicInfo";
+import mapPng from '@/assets/images/map.png'
+const mapLocationRef = ref()
import {addConfig, editConfig} from "@/api/hazardousChemicals/config";
import {getCompany} from "@/api/hazardousChemicals/company";
import {getToken} from "@/utils/auth";
@@ -77,13 +95,16 @@
companyId: null,
companyName: '',
logoPath: '',
- useProd: 0
-
+ useProd: 0,
+ longitude:'',
+ latitude: ''
},
companyList: [],
formRules:{
companyName: [{ required: true, message: '请选择企业', trigger: 'blur' }],
useProd: [{ required: true, message: '请选择是否使用成品', trigger: 'blur' }],
+ longitude:[{ required: true, message: '请填写经度', trigger: 'blur' }],
+ latitude:[{ required: true, message: '请填写纬度', trigger: 'blur' }],
},
uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
header: {
@@ -214,6 +235,9 @@
})
}
}
+const showMapLocation = () => {
+ mapLocationRef.value.openMapLocation(state.form.longitude,state.form.latitude)
+}
const handleRemove = async (file, uploadFiles) => {
let path = state.form.logoPath;
await delPic({path: path}).then(res => {
@@ -233,11 +257,24 @@
state.form.logoPath = ''
});
}
+const achieveLatLng=(lng,lat)=>{
+ if(lng && lat){
+ state.form.longitude = lng
+ state.form.latitude = lat
+ }else {
+ ElMessage.warning('请选择公司经纬度')
+ }
+
+}
const reset = () => {
state.form = {
id: '',
- name: '',
- remark: '',
+ companyId: null,
+ companyName: '',
+ logoPath: '',
+ useProd: 0,
+ longitude:'',
+ latitude: ''
}
}
defineExpose({
@@ -256,5 +293,14 @@
flex-direction: column;
align-items: flex-start;
}
+ .enterpriseBasicInformation_image{
+ cursor: pointer;
+ width:30px;
+ height:30px;
+ margin-left: -35px;
+ }
+ .enterpriseBasicInformation_input{
+ width:100%;
+ }
}
</style>
diff --git a/src/views/hazardousChemicals/systemManage/config/components/mapLocation.vue b/src/views/hazardousChemicals/systemManage/config/components/mapLocation.vue
new file mode 100644
index 0000000..115c24a
--- /dev/null
+++ b/src/views/hazardousChemicals/systemManage/config/components/mapLocation.vue
@@ -0,0 +1,169 @@
+<template>
+ <el-dialog
+ v-model="state.mapLocationVisible"
+ v-if="state.mapLocationVisible"
+ append-to-body
+ :close-on-click-modal="false"
+ width="75%"
+ :title="state.title"
+ @close="handleClose"
+ >
+ <div class="mapLocation_head">
+ <div>
+ <el-alert
+ title="点击地点获取经纬度信息"
+ type="info"
+ :closable="false"
+ >
+ </el-alert>
+ </div>
+ <div class="mapLocation_latlng">
+ <span>经度:</span>
+ <el-input class="mapLocation_latlng_input" id="lng" v-model.trim="state.longitude" @change="getAdress"></el-input>
+ </div>
+ <div class="mapLocation_latlng">
+ <span>纬度:</span>
+ <el-input class="mapLocation_latlng_input" id="lat" v-model.trim="state.latitude" @change="getAdress"></el-input>
+ </div>
+ <div class="mapLocation_latlng">
+ <span>地址:</span>
+ <el-input class="mapLocation_latlng_input" id="lat" v-model.trim="state.BAddress"></el-input>
+ </div>
+
+ </div>
+ <div class="mapLocation_body">
+ <baidu-map class="map" @ready="getAdress" ak="BkZdiHBj9aGrMdVFM48r2njNiMzsekga" v="3.0" type="API" :center="state.center" :zoom="state.zoom" scroll-wheel-zoom @click="getPosition">
+<!-- <div style="position: absolute;z-index: 999;margin-top: -495px">-->
+<!-- <label>搜索:<input v-model="state.keyword"></label>-->
+<!-- <bm-local-search-->
+<!-- :keyword="state.keyword"-->
+<!-- :auto-viewport="true"-->
+<!-- location="新疆"-->
+<!-- :pageCapacity="3"-->
+<!-- ></bm-local-search>-->
+<!-- </div>-->
+ <bm-marker :position="{lng: state.longitude, lat: state.latitude}" :dragging="true" animation="BMAP_ANIMATION_BOUNCE">
+<!-- <bm-label :labelStyle="{color: 'red'}" :offset="{width: -35, height: 30}"/>-->
+ </bm-marker>
+ </baidu-map>
+ </div>
+ <div align="right" style="margin-top: 10px">
+ <el-button @click="handleClose()">取消</el-button>
+ <el-button type="primary" @click="submitLatLng()">确认</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script setup>
+import {ref, onMounted, reactive, toRefs, defineComponent, defineExpose, defineEmits, watch} from 'vue';
+import { BaiduMap,BmMarker,BmLocalSearch,BmLabel } from 'vue-baidu-map-3x'
+const state = reactive({
+ title: '',
+ longitude: '',
+ latitude: '',
+ mapLocationVisible: false,
+ zoom: 7,
+ center: {
+ lng: '120.622500',
+ lat: '31.305800'
+ },
+ keyword:'',
+ location: '',
+ BAddress: ''
+})
+
+const emit = defineEmits(['giveLatLng'])
+
+onMounted(() => {
+ // ...(mounted钩子中的代码不变)
+});
+const map = reactive({})
+
+const getPosition = ({type, target, point, pixel, overlay})=>{
+ state.longitude = point.lng
+ state.latitude = point.lat
+ getAdress()
+}
+
+const openMapLocation=(longitude,latitude)=>{
+
+ if(longitude){
+ state.longitude = longitude
+ state.latitude = latitude
+ state.zoom = 10
+ state.center = {
+ lng: longitude,
+ lat: latitude
+ }
+ }else {
+ state.zoom = 10
+ state.center = {
+ lng: '120.622500',
+ lat: '31.305800'
+ }
+ }
+
+ state.mapLocationVisible = true
+}
+
+const submitLatLng=()=>{
+ emit('giveLatLng',state.longitude,state.latitude);
+ handleClose()
+}
+
+const initMap=()=>{
+
+}
+const myGeo = ref(null)
+const getAdress = () => {
+ myGeo.value = new BMap.Geocoder();
+ const pt = new BMap.Point(state.longitude, state.latitude);
+ myGeo.value.getLocation(pt,function(result){
+ state.BAddress = result.address; //获取到当前定位的详细地址信息
+ },
+ { enableHighAccuracy: true }
+ );
+}
+const handleClose = () => {
+ state.longitude = ''
+ state.latitude = ''
+ state.BAddress = ''
+ state.mapLocationVisible = false
+}
+defineExpose({
+ openMapLocation
+})
+</script>
+
+<style lang="scss" scoped>
+.map {
+ width: 100%;
+ height: 500px;
+
+ :deep(.BMap_cpyCtrl){
+ display: none!important;
+ visibility: hidden!important;
+ }
+
+ :deep(.anchorBL) {
+ display: none!important;
+ visibility: hidden!important;
+ }
+}
+.mapLocation_head{
+ width:100%;
+ height:100px;
+}
+.mapLocation_body{
+ width:100%;
+ height:500px
+}
+.mapLocation_latlng{
+ padding-top:10px;
+ display:inline-block;
+ margin-right: 20px;
+}
+.mapLocation_latlng_input{
+ width:250px;
+}
+</style>
diff --git a/src/views/hazardousChemicals/systemManage/config/index.vue b/src/views/hazardousChemicals/systemManage/config/index.vue
index a381fb3..b7b29be 100644
--- a/src/views/hazardousChemicals/systemManage/config/index.vue
+++ b/src/views/hazardousChemicals/systemManage/config/index.vue
@@ -52,6 +52,8 @@
<span>{{scope.row.useProd == 0 ? '不使用' : '使用' }}</span>
</template>
</el-table-column>
+ <el-table-column label="经度" prop="longitude" align="center" />
+ <el-table-column label="纬度" prop="latitude" align="center" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200" >
<template #default="scope">
<el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
diff --git a/src/views/hazardousChemicals/systemManage/user/components/userDialog.vue b/src/views/hazardousChemicals/systemManage/user/components/userDialog.vue
index 9492f5a..52d9de5 100644
--- a/src/views/hazardousChemicals/systemManage/user/components/userDialog.vue
+++ b/src/views/hazardousChemicals/systemManage/user/components/userDialog.vue
@@ -34,12 +34,13 @@
<el-form-item label="用户类型:" v-if="state.title !== '修改密码'" prop="userType" >
<el-radio-group v-model="state.form.userType" @change="changeType" v-if="state.title == '新增用户'" >
<el-radio :label="0" v-if="state.isAdmin">管理员</el-radio>
+ <el-radio :label="3" v-if="state.isAdmin">监管部门</el-radio>
<el-radio :label="1" v-if="state.isAdmin">企业用户</el-radio>
<el-radio :label="2" v-if="!state.isAdmin">普通用户</el-radio>
</el-radio-group>
- <span v-else>{{state.form.userType ==0 ? '管理员':state.form.userType ==1 ? '企业用户' : '普通用户'}}</span>
+ <span v-else>{{state.form.userType ==0 ? '管理员':state.form.userType ==1 ? '企业用户' : state.form.userType ==2?'普通用户':'监管用户'}}</span>
</el-form-item>
- <el-form-item label="所属企业:" prop="companyName" v-if="state.title !== '修改密码' && state.form.userType !=0">
+ <el-form-item label="所属企业:" prop="companyName" v-if="state.title !== '修改密码' && state.form.userType !=0 && state.form.userType !=3">
<el-select
v-if="state.isAdmin"
clearable
@@ -64,7 +65,7 @@
</el-select>
<el-input v-else disabled style="width: 100%" v-model="state.form.companyName"></el-input>
</el-form-item>
- <el-form-item label="所属部门:" prop="departId" v-if="state.form.userType !=0 && state.title !== '修改密码'" >
+ <el-form-item label="所属部门:" prop="departId" v-if="state.form.userType !=3 && state.form.userType !=0 && state.title !== '修改密码'" >
<el-cascader
v-if="state.title == '新增用户' || state.title == '编辑用户'"
style="width: 100%"
diff --git a/src/views/hazardousChemicals/systemManage/user/index.vue b/src/views/hazardousChemicals/systemManage/user/index.vue
index f845f60..79afaf4 100644
--- a/src/views/hazardousChemicals/systemManage/user/index.vue
+++ b/src/views/hazardousChemicals/systemManage/user/index.vue
@@ -40,7 +40,7 @@
</el-table-column>
<el-table-column label="用户类型" prop="userType" align="center">
<template #default="scope">
- <span>{{scope.row.userType == 0 ?'管理员':scope.row.userType == 1 ? '企业用户':'普通用户'}}</span>
+ <span>{{scope.row.userType == 0 ?'管理员':scope.row.userType == 1 ? '企业用户':scope.row.userType ==2 ? '普通用户' : '监管用户'}}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
diff --git a/src/views/homePage.vue b/src/views/homePage.vue
index cb2c2a8..f136db4 100644
--- a/src/views/homePage.vue
+++ b/src/views/homePage.vue
@@ -293,6 +293,10 @@
sidebarRouters.value = menu.commonMenu
}
Cookies.set('routers',JSON.stringify(sidebarRouters.value))
+ }else {
+ ElMessage.warning('监管部门账号不可登录')
+ loading.value = false
+ return
}
let path = ""
if(sidebarRouters.value[0].children && sidebarRouters.value[0].children.length > 0){
--
Gitblit v1.9.2