Merge remote-tracking branch 'origin/master'
# Conflicts: # frontend/src/api/device/device/index.ts
This commit is contained in:
@@ -37,6 +37,11 @@ export const importPqDev=(params: Device.ReqPqDevParams)=>{
|
||||
return http.upload(`/pqDev/import`, params)
|
||||
}
|
||||
|
||||
//根据设备类型决定(电源、icd、模板、通道数、额定电压、额定电流);
|
||||
export const getPqDev = () => {
|
||||
return http.post(`/devType/list`)
|
||||
}
|
||||
|
||||
|
||||
//被检设备归档
|
||||
export const documentedPqDev=(ids:string[])=>{
|
||||
|
||||
@@ -25,7 +25,7 @@ export namespace Device {
|
||||
devChns: number; //设备通道数
|
||||
devVolt: number; //额定电压(V)
|
||||
devCurr: number; //额定电流(A)
|
||||
manufacturer: string;//生产厂家
|
||||
manufacturer?: string | null;//生产厂家
|
||||
createDate: string; //生产日期
|
||||
createId: string; //出厂编号
|
||||
hardwareVersion: string; //固件版本
|
||||
@@ -56,7 +56,8 @@ export namespace Device {
|
||||
createTime?: string| null; //创建时间
|
||||
updateBy?: string| null; //更新用户
|
||||
updateTime?: string| null; //更新时间
|
||||
|
||||
icd: string;
|
||||
power: string;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -37,6 +37,7 @@ const init = () => {
|
||||
isLabelLine: true, //是否显示引导线
|
||||
titleFontSize: '14px', //标题字体大小
|
||||
...props.customData,
|
||||
|
||||
};
|
||||
legendData.value = {
|
||||
icon: "roundRect", // 图例项的icon,类型包括 circle(圆形),rect(正方形),//roundRect(圆角正方形),triangle(三角形),diamond(菱形),//pin(大头针行),arrow(箭头形),none(无图例项的icon)
|
||||
@@ -86,7 +87,7 @@ const init = () => {
|
||||
if(item)
|
||||
return item[0].value;
|
||||
},
|
||||
center: ["55%", "50%"], // 设置饼图的中心位置
|
||||
center: ["55%", "55%"], // 设置饼图的中心位置
|
||||
// padAngle: 2,
|
||||
minAngle: 15, //最小角度
|
||||
startAngle: 270, //起始角度
|
||||
|
||||
@@ -13,11 +13,11 @@ const auth: Directive = {
|
||||
// console.log('1234',authStore.routeName)
|
||||
// console.log('123',currentPageRoles)
|
||||
if (value instanceof Array && value.length) {
|
||||
console.log('123456',value)
|
||||
//console.log('123456',value)
|
||||
const hasPermission = value.every(item => currentPageRoles.includes(item))
|
||||
if (!hasPermission) el.remove()
|
||||
} else {
|
||||
console.log('12345',value)
|
||||
//console.log('12345',value)
|
||||
if (!currentPageRoles.includes(value)) el.remove()
|
||||
}
|
||||
},
|
||||
|
||||
@@ -66,6 +66,7 @@ onMounted(() => {
|
||||
const handelOpen = async (item: string) => {
|
||||
await authStore.setShowMenu();
|
||||
modeStore.setCurrentMode(item); // 将模式code存入 store
|
||||
|
||||
if (router.currentRoute.value.path === '/home/index') {
|
||||
// 强制刷新页面
|
||||
window.location.reload();
|
||||
|
||||
@@ -56,14 +56,14 @@ import Message from "./components/Message.vue";
|
||||
import Fullscreen from "./components/Fullscreen.vue";
|
||||
import { useAuthStore } from "@/stores/modules/auth";
|
||||
import {useDictStore} from "@/stores/modules/dict";
|
||||
import { useModeStore } from "@/stores/modules/mode";
|
||||
import { useModeStore,useAppSceneStore } from "@/stores/modules/mode";
|
||||
const userStore = useUserStore();
|
||||
const dictStore = useDictStore();
|
||||
const username = computed(() => userStore.userInfo.name);
|
||||
const router = useRouter();
|
||||
const authStore = useAuthStore();
|
||||
const modeStore = useModeStore();
|
||||
|
||||
const AppSceneStore = useAppSceneStore();
|
||||
// 退出登录
|
||||
const logout = () => {
|
||||
ElMessageBox.confirm("您是否确认退出登录?", "温馨提示", {
|
||||
@@ -78,6 +78,7 @@ const logout = () => {
|
||||
userStore.setUserInfo({name: ""});
|
||||
dictStore.setDictData([]);
|
||||
modeStore.setCurrentMode('');
|
||||
AppSceneStore.setCurrentMode('');
|
||||
// 3.重定向到登陆页
|
||||
router.replace(LOGIN_URL);
|
||||
ElMessage.success("退出登录成功!");
|
||||
|
||||
@@ -24,3 +24,15 @@ export const useModeStore = defineStore('mode', {
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export const useAppSceneStore = defineStore('scene', {
|
||||
state: () => ({
|
||||
currentScene: localStorage.getItem('currentScene') || '' as string,
|
||||
}),
|
||||
actions: {
|
||||
setCurrentMode(sceneName: string) {
|
||||
this.currentScene = sceneName;
|
||||
localStorage.setItem('currentScene', sceneName); // 保存到 localStorage
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -240,7 +240,7 @@ watch(webMsgSend,function (newValue,oldValue){
|
||||
item.desc === newValue.data.desc &&
|
||||
item.devName === newValue.data.devName);
|
||||
if (firstCoefficientVO) { // 检查 firstCoefficientVO 是否存在
|
||||
firstCoefficientVO.aVuData = parseFloat(newValue.data.aVuData).toFixed(4);;
|
||||
firstCoefficientVO.aVuData = parseFloat(newValue.data.aVuData).toFixed(4);
|
||||
firstCoefficientVO.aVuXi = newValue.data.aVuXi;
|
||||
firstCoefficientVO.bVuData = parseFloat(newValue.data.bVuData).toFixed(4);
|
||||
firstCoefficientVO.bVuXi = newValue.data.bVuXi;
|
||||
@@ -555,7 +555,7 @@ const handleSubmit = async () => {
|
||||
tableLoading('big','系数下装')
|
||||
await getCoefficientCheck({
|
||||
userPageId: "cdf",
|
||||
devIds: devIdArray.value,
|
||||
devIds:devIdArray.value,
|
||||
planId:planId.value,
|
||||
errorSysId: select_Plan.value?.errorSysId,
|
||||
scriptId: select_Plan.value?.scriptId,
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
<script lang="tsx" setup>
|
||||
import {CheckData} from "@/api/check/interface";
|
||||
import { computed } from "vue";
|
||||
import {useDownload} from "@/hooks/useDownload";
|
||||
import {exportRawData} from "@/api/check/test"
|
||||
|
||||
|
||||
@@ -928,7 +928,11 @@ const handleTest = async (val:string) => {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
// 检查 socketClient.Instance 是否存在
|
||||
if (!socketClient.Instance) {
|
||||
console.error('WebSocket 客户端实例不存在');
|
||||
return;
|
||||
}
|
||||
|
||||
//开始创建webSocket客户端
|
||||
const data = reactive({
|
||||
|
||||
@@ -37,7 +37,7 @@ import { useAuthStore } from "@/stores/modules/auth";
|
||||
|
||||
import model from "./tabs/model.vue";
|
||||
import dashboard from "./tabs/dashboard.vue";
|
||||
import { onMounted } from "vue";
|
||||
import { onMounted, ref } from "vue";
|
||||
const authStore = useAuthStore();
|
||||
|
||||
const activeIndex = ref("1-1");
|
||||
|
||||
@@ -300,22 +300,31 @@ const getPieData = async (id: string) => {
|
||||
})
|
||||
}
|
||||
|
||||
chartsData1.value = [
|
||||
{ value: checkStateCount[0], name: '未检', itemStyle: { color: '#fac858' } },
|
||||
{ value: checkStateCount[1], name: '检测中', itemStyle: { color: '#ee6666' } },
|
||||
{ value: checkStateCount[2], name: '检测完成', itemStyle: { color: '#91cc75' } },
|
||||
{ value: checkStateCount[3], name: '归档', itemStyle: { color: '#5470c6' } },
|
||||
]
|
||||
chartsData2.value = [
|
||||
{ value: checkResultCount[2], name: '未检', itemStyle: { color: '#fac858' } },
|
||||
{ value: checkResultCount[0], name: '不符合', itemStyle: { color: '#ee6666' } },
|
||||
{ value: checkResultCount[1], name: '符合', itemStyle: { color: '#91cc75' } },
|
||||
]
|
||||
chartsData3.value = [
|
||||
{ value: reportStateCount[2], name: '未检', itemStyle: { color: '#fac858' } },
|
||||
{ value: reportStateCount[0], name: '未生成', itemStyle: { color: '#ee6666' } },
|
||||
{ value: reportStateCount[1], name: '已生成', itemStyle: { color: '#91cc75' } },
|
||||
]
|
||||
// 检查 checkStateCount 是否全为 0
|
||||
const allZero = Object.values(checkStateCount).every(count => count === 0);
|
||||
chartsData1.value = [
|
||||
{ value: allZero ? 0 : checkStateCount[0] === 0 ? null : checkStateCount[0], name: '未检', itemStyle: { color: '#fac858' } },
|
||||
{ value: allZero ? 0 : checkStateCount[1] === 0 ? null : checkStateCount[1], name: '检测中', itemStyle: { color: '#ee6666' } },
|
||||
{ value: allZero ? 0 : checkStateCount[2] === 0 ? null : checkStateCount[2], name: '检测完成', itemStyle: { color: '#91cc75' } },
|
||||
{ value: allZero ? 0 : checkStateCount[3] === 0 ? null : checkStateCount[3], name: '归档', itemStyle: { color: '#5470c6' } },
|
||||
];
|
||||
|
||||
// 同样处理 chartsData2 和 chartsData3
|
||||
const allZeroResult = Object.values(checkResultCount).every(count => count === 0);
|
||||
chartsData2.value = [
|
||||
{ value: allZeroResult ? 0 : checkResultCount[2] === 0 ? null : checkResultCount[2], name: '未检', itemStyle: { color: '#fac858' } },
|
||||
{ value: allZeroResult ? 0 : checkResultCount[0] === 0 ? null : checkResultCount[0], name: '不符合', itemStyle: { color: '#ee6666' } },
|
||||
{ value: allZeroResult ? 0 : checkResultCount[1] === 0 ? null : checkResultCount[1], name: '符合', itemStyle: { color: '#91cc75' } },
|
||||
];
|
||||
|
||||
|
||||
// 检查 reportStateCount 是否全为 0
|
||||
const allZeroReport = Object.values(reportStateCount).every(count => count === 0);
|
||||
chartsData3.value = [
|
||||
{ value: allZeroReport ? 0 : reportStateCount[2] === 0 ? null : reportStateCount[2], name: '未检', itemStyle: { color: '#fac858' } },
|
||||
{ value: allZeroReport ? 0 : reportStateCount[0] === 0 ? null : reportStateCount[0], name: '未生成', itemStyle: { color: '#ee6666' } },
|
||||
{ value: allZeroReport ? 0 : reportStateCount[1] === 0 ? null : reportStateCount[1], name: '已生成', itemStyle: { color: '#91cc75' } },
|
||||
];
|
||||
|
||||
pieRef1.value.init()
|
||||
pieRef2.value.init()
|
||||
|
||||
@@ -33,9 +33,11 @@
|
||||
import { useRouter } from "vue-router";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { useAuthStore } from "@/stores/modules/auth";
|
||||
import { useModeStore } from "@/stores/modules/mode"; // 引入模式 store
|
||||
import { useModeStore ,useAppSceneStore} from "@/stores/modules/mode"; // 引入模式 store
|
||||
import { ref } from "vue";
|
||||
const authStore = useAuthStore();
|
||||
const modeStore = useModeStore(); // 使用模式 store
|
||||
const AppSceneStore = useAppSceneStore();
|
||||
const activeIndex = ref("1-1");
|
||||
const router = useRouter();
|
||||
const modeList = [
|
||||
@@ -63,6 +65,7 @@ const modeList = [
|
||||
];
|
||||
const handelOpen = async (item: any) => {
|
||||
modeStore.setCurrentMode(item.code); // 将模式code存入 store
|
||||
AppSceneStore.setCurrentMode('1');//0:省级平台,1:设备出厂,2:研发自测
|
||||
await authStore.setShowMenu();
|
||||
return;
|
||||
// if (isActive) {
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
<div >
|
||||
<el-form :model='formContent' ref='dialogFormRef' :rules='rules' :disabled="false" label-width="auto" class="form-three">
|
||||
<el-divider >设备信息</el-divider>
|
||||
<el-form-item label="设备名称" prop="name" >
|
||||
<el-form-item label="设备名称" prop="name" v-if="scene != '1'">
|
||||
<el-input v-model='formContent.name' placeholder="请输入设备名称"/>
|
||||
</el-form-item>
|
||||
<el-form-item label='设备类型' prop='devType' >
|
||||
<el-select v-model="formContent.devType" filterable clearable placeholder="请选择设备类型">
|
||||
<el-select v-model="formContent.devType" filterable clearable placeholder="请选择设备类型" @change="handleDevTypeChange">
|
||||
<el-option
|
||||
v-for="item in dictStore.getDictData('Dev_Type')"
|
||||
v-for="item in devTypeOptions"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
@@ -28,8 +28,8 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label='设备厂家' prop='manufacturer' >
|
||||
<el-select v-model="formContent.manufacturer" clearable placeholder="请选择生产厂商">
|
||||
<el-form-item label='设备厂家' prop='manufacturer' v-if="scene != '1'">
|
||||
<el-select v-model="formContent.manufacturer" clearable placeholder="请选择设备厂家">
|
||||
<el-option
|
||||
v-for="item in dictStore.getDictData('Dev_Manufacturers')"
|
||||
:key="item.id"
|
||||
@@ -48,10 +48,10 @@
|
||||
<el-form-item label="设备序列号" prop="createId" >
|
||||
<el-input v-model="formContent.createId" placeholder="请输入设备序列号"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="固件版本" prop="hardwareVersion" >
|
||||
<el-form-item label="固件版本" prop="hardwareVersion" v-if="scene === '0'">
|
||||
<el-input v-model="formContent.hardwareVersion" placeholder="请输入固件版本"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="软件版本" prop="softwareVersion" >
|
||||
<el-form-item label="软件版本" prop="softwareVersion" v-if="scene === '0'">
|
||||
<el-input v-model="formContent.softwareVersion" placeholder="请输入软件版本"/>
|
||||
</el-form-item>
|
||||
<el-divider >参数信息</el-divider>
|
||||
@@ -113,10 +113,10 @@
|
||||
<el-form-item label='密钥' prop='devKey' clearable v-if="formContent.encryptionFlag">
|
||||
<el-input v-model='formContent.devKey' placeholder="请输入密钥" show-password/>
|
||||
</el-form-item>
|
||||
<el-form-item label='样品编号' prop='sampleID' clearable v-if="DevIsShow">
|
||||
<el-form-item label='样品编号' prop='sampleID' clearable v-if="DevIsShow && scene === '0'">
|
||||
<el-input v-model='formContent.sampleID' placeholder="请输入样品编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label='送样日期' prop='arrivedDate' >
|
||||
<el-form-item label='送样日期' prop='arrivedDate' v-if="scene === '0'">
|
||||
<el-date-picker
|
||||
v-model="formContent.arrivedDate"
|
||||
placeholder="请选择送样日期"
|
||||
@@ -160,7 +160,7 @@ import IPAddress from '@/components/IpAddress/index.vue'
|
||||
import { dialogBig } from '@/utils/elementBind'
|
||||
import { type Device } from '@/api/device/interface/device'
|
||||
import { ElMessage, type FormItemRule } from 'element-plus'
|
||||
import { addPqDev, updatePqDev } from '@/api/device/device'
|
||||
import { addPqDev, updatePqDev,getPqDev } from '@/api/device/device'
|
||||
import { computed, reactive, type Ref, ref } from 'vue'
|
||||
import { useDictStore } from '@/stores/modules/dict'
|
||||
import { CirclePlus, Delete, EditPen } from '@element-plus/icons-vue'
|
||||
@@ -170,15 +170,44 @@ import MonitorTable from '@/views/machine/device/components/monitorTab.vue';
|
||||
|
||||
const MonIsShow = ref(false)
|
||||
const DevIsShow = ref(false)
|
||||
// 存储设备类型选项
|
||||
const devTypeOptions = ref<{
|
||||
id: string;
|
||||
name: string ,
|
||||
icd:string ,
|
||||
power:string,
|
||||
devVolt:number,
|
||||
devCurr:number,
|
||||
devChns:number,
|
||||
}[]>([])
|
||||
// const IsPasswordShow = ref(false)
|
||||
const dictStore = useDictStore()
|
||||
const mode = ref()
|
||||
const scene = ref('')
|
||||
// 定义弹出组件元信息
|
||||
const dialogFormRef = ref()
|
||||
const disabledDate = (time: Date) => {
|
||||
return time.getTime() > Date.now()
|
||||
}
|
||||
|
||||
// 获取设备类型选项
|
||||
const fetchDevTypeOptions = async () => {
|
||||
try {
|
||||
const response = await getPqDev()
|
||||
devTypeOptions.value = response.data.map(item => ({
|
||||
id: item.id,
|
||||
name: item.name,
|
||||
icd: item.icd,
|
||||
power: item.power,
|
||||
devVolt: item.devVolt,
|
||||
devCurr: item.devCurr,
|
||||
devChns: item.devChns
|
||||
}))
|
||||
} catch (error) {
|
||||
console.error('获取设备类型选项失败', error)
|
||||
}
|
||||
}
|
||||
|
||||
function useMetaInfo() {
|
||||
const dialogVisible = ref(false)
|
||||
const titleType = ref('add')
|
||||
@@ -189,8 +218,8 @@ const disabledDate = (time: Date) => {
|
||||
devType:'',
|
||||
devChns:1,
|
||||
devVolt:57.74,
|
||||
devCurr:1,
|
||||
manufacturer: '',
|
||||
devCurr:5,
|
||||
manufacturer:'',
|
||||
createDate: dayjs().format('YYYY-MM-DD'),
|
||||
createId: '',
|
||||
hardwareVersion: '',
|
||||
@@ -202,6 +231,8 @@ const disabledDate = (time: Date) => {
|
||||
reCheckNum:0,
|
||||
state: 1,
|
||||
factorFlag:0,
|
||||
icd:'',
|
||||
power:''
|
||||
})
|
||||
return { dialogVisible, titleType, formContent }
|
||||
}
|
||||
@@ -216,7 +247,7 @@ const disabledDate = (time: Date) => {
|
||||
devType:'',
|
||||
devChns:1,
|
||||
devVolt:57.74,
|
||||
devCurr:1,
|
||||
devCurr:5,
|
||||
manufacturer: '',
|
||||
createDate: dayjs().format('YYYY-MM-DD'),
|
||||
createId: '',
|
||||
@@ -229,6 +260,8 @@ const disabledDate = (time: Date) => {
|
||||
reCheckNum:0,
|
||||
state: 1,
|
||||
factorFlag:0,
|
||||
icd:'',
|
||||
power:''
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,38 +271,56 @@ const disabledDate = (time: Date) => {
|
||||
})
|
||||
|
||||
|
||||
// 定义表单校验规则
|
||||
const rules: Ref<Record<string, Array<FormItemRule>>> = ref({
|
||||
// 定义表单校验规则
|
||||
const baseRules: Record<string, Array<FormItemRule>> = {
|
||||
devType: [{ required: true, message: '设备类型必选!', trigger: 'change' }],
|
||||
pattern: [{ required: true, message: '设备模式必填!', trigger: 'blur' }],
|
||||
name: [{ required: true, message: '设备名称必填!', trigger: 'blur' }],
|
||||
devChns: [{ required: true, message: '设备通道数必填!', trigger: 'blur' },
|
||||
// 指定正则,此处是数字正则
|
||||
{ pattern: /^[1-9]\d*$/, message: '设备通道数为大于1的整数', trigger: 'blur' }],
|
||||
devVolt: [{ required: true, message: '额定电压必填!', trigger: 'blur' },
|
||||
{ pattern: /^\d+(\.\d+)?$/, message: '额定电压格式错误', trigger: 'blur' }],
|
||||
devCurr: [{ required: true, message: '额定电流必填!', trigger: 'blur' },
|
||||
{ pattern: /^\d+(\.\d+)?$/, message: '额定电流格式错误', trigger: 'blur' }],
|
||||
devChns: [
|
||||
{ required: true, message: '设备通道数必填!', trigger: 'blur' },
|
||||
{ pattern: /^[1-9]\d*$/, message: '设备通道数为大于1的整数', trigger: 'blur' }
|
||||
],
|
||||
devVolt: [
|
||||
{ required: true, message: '额定电压必填!', trigger: 'blur' },
|
||||
{ pattern: /^\d+(\.\d+)?$/, message: '额定电压格式错误', trigger: 'blur' }
|
||||
],
|
||||
devCurr: [
|
||||
{ required: true, message: '额定电流必填!', trigger: 'blur' },
|
||||
{ pattern: /^\d+(\.\d+)?$/, message: '额定电流格式错误', trigger: 'blur' }
|
||||
],
|
||||
createDate: [{ required: true, message: '生产日期必填!', trigger: 'blur' }],
|
||||
createId: [{ required: true, message: '出厂编号必填!', trigger: 'blur' }],
|
||||
hardwareVersion: [{ required: true, message: '固件版本必填!', trigger: 'blur' }],
|
||||
softwareVersion: [{ required: true, message: '软件版本必填!', trigger: 'blur' }],
|
||||
ip:[{ required: true, message: 'IP地址必填!', trigger: 'blur' } ,
|
||||
{ pattern: /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/, message: 'IP地址格式错误', trigger: 'blur' }],
|
||||
port:[{ required: true, message: '端口号必填!', trigger: 'blur' },
|
||||
{ pattern: /^(6553[0-5]|655[0-2][0-9]|64[0-9]{3}|[1-5]?[0-9]{1,4})$/, message: '端口号范围0到65535的整数', trigger: 'blur' }],
|
||||
manufacturer: [{ required: true, message: '生产厂家必选!', trigger: 'change' }],
|
||||
ip: [
|
||||
{ required: true, message: 'IP地址必填!', trigger: 'blur' },
|
||||
{ pattern: /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/, message: 'IP地址格式错误', trigger: 'blur' }
|
||||
],
|
||||
port: [
|
||||
{ required: true, message: '端口号必填!', trigger: 'blur' },
|
||||
{ pattern: /^(6553[0-5]|655[0-2][0-9]|64[0-9]{3}|[1-5]?[0-9]{1,4})$/, message: '端口号范围0到65535的整数', trigger: 'blur' }
|
||||
],
|
||||
encryptionFlag: [{ required: true, message: '是否加密必选!', trigger: 'change' }],
|
||||
protocol: [{ required: true, message: '通讯协议必选!', trigger: 'change' }],
|
||||
// series: [],
|
||||
// devKey: []
|
||||
series : [
|
||||
{ required: true, message: '请输入识别码', trigger: 'blur' }
|
||||
],
|
||||
devKey : [
|
||||
{ required: true, message: '请输入密钥', trigger: 'blur' }
|
||||
],
|
||||
})
|
||||
series: [{ required: true, message: '请输入识别码', trigger: 'blur' }],
|
||||
devKey: [{ required: true, message: '请输入密钥', trigger: 'blur' }]
|
||||
};
|
||||
|
||||
// 使用计算属性根据 scene 动态生成规则
|
||||
const rules = computed(() => {
|
||||
const dynamicRules = { ...baseRules };
|
||||
|
||||
if (scene.value !== '0') {
|
||||
dynamicRules.name = [{ required: true, message: '设备名称必填!', trigger: 'blur' }];
|
||||
dynamicRules.hardwareVersion = [{ required: true, message: '固件版本必填!', trigger: 'blur' }];
|
||||
dynamicRules.softwareVersion = [{ required: true, message: '软件版本必填!', trigger: 'blur' }];
|
||||
dynamicRules.manufacturer = [{ required: true, message: '生产厂家必选!', trigger: 'change' }];
|
||||
}
|
||||
|
||||
if (scene.value !== '2') {
|
||||
dynamicRules.name = [{ required: true, message: '设备名称必填!', trigger: 'blur' }];
|
||||
dynamicRules.manufacturer = [{ required: true, message: '生产厂家必选!', trigger: 'change' }];
|
||||
}
|
||||
|
||||
return dynamicRules;
|
||||
});
|
||||
|
||||
// 关闭弹窗
|
||||
const close = () => {
|
||||
@@ -327,8 +378,10 @@ const disabledDate = (time: Date) => {
|
||||
|
||||
|
||||
// 打开弹窗,可能是新增,也可能是编辑
|
||||
const open = (sign: string, data: Device.ResPqDev,currentMode: string) => {
|
||||
const open = async (sign: string, data: Device.ResPqDev,currentMode: string,currentScene: string ) => {
|
||||
fetchDevTypeOptions()
|
||||
mode.value = currentMode
|
||||
scene.value = currentScene
|
||||
titleType.value = sign
|
||||
dialogVisible.value = true
|
||||
|
||||
@@ -349,6 +402,14 @@ const open = (sign: string, data: Device.ResPqDev,currentMode: string) => {
|
||||
formContent.value = { ...data }
|
||||
} else {
|
||||
resetFormContent()
|
||||
if(scene.value === '2'){
|
||||
const manufacturers = dictStore.getDictData('Dev_Manufacturers');
|
||||
const nanjingCanxuan = manufacturers.find(item => item.name === '南京灿能');
|
||||
if(nanjingCanxuan){
|
||||
formContent.value.manufacturer = nanjingCanxuan.id;
|
||||
}
|
||||
}
|
||||
|
||||
//handleEncryptionChange(1)
|
||||
}
|
||||
|
||||
@@ -370,6 +431,24 @@ const open = (sign: string, data: Device.ResPqDev,currentMode: string) => {
|
||||
// }
|
||||
// }
|
||||
|
||||
const handleDevTypeChange = (value: string) => {
|
||||
// 在这里处理选中事件的逻辑
|
||||
const dev = devTypeOptions.value.find(t =>t.id === value)
|
||||
if (dev) {
|
||||
formContent.value.devChns = dev.devChns; // 默认值为1
|
||||
formContent.value.devCurr = dev.devCurr; // 默认值为1
|
||||
formContent.value.devVolt = dev.devVolt; // 默认值为1
|
||||
formContent.value.icd = dev.icd
|
||||
formContent.value.power = dev.power
|
||||
} else {
|
||||
formContent.value.devChns = 1; // 默认值为1
|
||||
formContent.value.devCurr = 1; // 默认值为1
|
||||
formContent.value.devVolt = 57.74; // 默认值为1
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 对外映射
|
||||
defineExpose({ open })
|
||||
const props = defineProps<{
|
||||
|
||||
@@ -42,15 +42,15 @@ import { useDictStore } from '@/stores/modules/dict'
|
||||
import { getPqDevList, deletePqDev, exportPqDev, downloadTemplate, importPqDev } from '@/api/device/device/index.ts'
|
||||
import { ElMessageBox } from 'element-plus'
|
||||
import { computed, reactive, ref } from 'vue'
|
||||
import { useModeStore } from '@/stores/modules/mode'; // 引入模式 store
|
||||
import { useModeStore , useAppSceneStore} from '@/stores/modules/mode'; // 引入模式 store
|
||||
|
||||
const modeStore = useModeStore();
|
||||
const dictStore = useDictStore()
|
||||
const appSceneStore = useAppSceneStore()
|
||||
// ProTable 实例
|
||||
const proTable = ref<ProTableInstance>()
|
||||
const devicePopup = ref()
|
||||
// 定义包含和排除的单位
|
||||
|
||||
const ConditionsIsShow = ref(false)
|
||||
|
||||
const boundPqDevList=ref<Device.ReqPqDevParams[]>([])//根据检测计划id查询出所有已绑定的设备
|
||||
|
||||
@@ -71,7 +71,11 @@ const columns = reactive<ColumnProps<Device.ResPqDev>[]>([
|
||||
{
|
||||
prop: 'name',
|
||||
label: '名称',
|
||||
isShow: appSceneStore.currentScene != '1',
|
||||
...(appSceneStore.currentScene != '1' ? {
|
||||
search: { el: 'input' },
|
||||
} : {}),
|
||||
|
||||
minWidth: 200,
|
||||
},
|
||||
{
|
||||
@@ -121,8 +125,11 @@ const columns = reactive<ColumnProps<Device.ResPqDev>[]>([
|
||||
prop: 'manufacturer',
|
||||
label: '设备厂家',
|
||||
enum: dictStore.getDictData('Dev_Manufacturers'),
|
||||
isShow: appSceneStore.currentScene != '1',
|
||||
...(appSceneStore.currentScene != '1' ? {
|
||||
search: { el: 'select', props: { filterable: true }, order: 1 },
|
||||
fieldNames: { label: 'name', value: 'id' },
|
||||
} : {}),
|
||||
minWidth: 200,
|
||||
},
|
||||
{ prop: 'operation', label: '操作', fixed: 'right', width: 200 },
|
||||
@@ -138,7 +145,7 @@ const handleDateChange = (startDateTemp: string, endDateTemp: string) => {
|
||||
}
|
||||
// 打开 drawer(新增、编辑)
|
||||
const openDialog = (titleType: string, row: Partial<Device.ResPqDev> = {}) => {
|
||||
devicePopup.value?.open(titleType, row,modeStore.currentMode)
|
||||
devicePopup.value?.open(titleType, row,modeStore.currentMode,appSceneStore.currentScene)
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user