设备类型接口

This commit is contained in:
sjl
2025-01-13 19:28:51 +08:00
parent e54cbfbc0a
commit 4dec1392f7
3 changed files with 80 additions and 17 deletions

View File

@@ -263,7 +263,7 @@ import { useAuthStore } from "@/stores/modules/auth";
import { useDownload } from '@/hooks/useDownload'
import {downloadDevData} from '@/api/plan/plan.ts'
import {documentedPqDev} from "@/api/device/device";
import { getPqDev } from '@/api/device/device/index.ts'
const dictStore = useDictStore()
const checkStore = useCheckStore()
const webMsgSend = ref();//webSocket推送的数据
@@ -331,6 +331,18 @@ isTimeCheck: {
}
})
// 存储设备类型选项
const devTypeOptions = ref<{
id: string;
name: string ,
icd:string ,
power:string,
devVolt:number,
devCurr:number,
devChns:number,
}[]>([])
//下拉框数据
interface Dict {
id: string;
@@ -454,8 +466,11 @@ const columns = reactive<ColumnProps<Device.ResPqDev>[]>([
prop: 'devType',
label: '设备类型',
minWidth: 100,
enum: dictStore.getDictData('Dev_Type'),
fieldNames: { label: 'name', value: 'id' },
render: (scope) => {
// 查找设备类型名称
const name = devTypeOptions.value.find(option => option.id === scope.row.devType);
return <span>{name?.name}</span>
},
},
{
prop: 'devChns',
@@ -952,6 +967,7 @@ const handleTest = async (val:string) => {
webMsgSend.value = res
}
});
channelsTest.value?.open(channelsSelection.value,props.plan);
return;
}
@@ -1059,7 +1075,18 @@ watch(
{ immediate: true } // 立即执行一次
);
onBeforeMount(async () => {
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
}))
})
defineExpose({ changeActiveTabs });
</script>
<style lang="scss" scoped>

View File

@@ -5,8 +5,11 @@
<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" v-if="scene != '1'">
<el-input v-model='formContent.name' placeholder="请输入设备名称"/>
<el-form-item label="设备序列号" prop="createId" >
<el-input v-model="formContent.createId" placeholder="请输入设备序列号" @input="handleInput" />
</el-form-item>
<el-form-item label="设备名称" prop="name" >
<el-input v-model='formContent.name' placeholder="请输入设备名称" :disabled="scene === '1'"/>
</el-form-item>
<el-form-item label='设备类型' prop='devType' >
<el-select v-model="formContent.devType" filterable clearable placeholder="请选择设备类型" @change="handleDevTypeChange">
@@ -45,9 +48,7 @@
:disabled-date="disabledDate"
/>
</el-form-item>
<el-form-item label="设备序列号" prop="createId" >
<el-input v-model="formContent.createId" placeholder="请输入设备序列号"/>
</el-form-item>
<el-form-item label="固件版本" prop="hardwareVersion" v-if="scene === '0'">
<el-input v-model="formContent.hardwareVersion" placeholder="请输入固件版本"/>
</el-form-item>
@@ -336,13 +337,14 @@ const rules = computed(() => {
const save = () => {
try {
dialogFormRef.value?.validate(async (valid: boolean) => {
if (formContent.value.encryptionFlag === 0) {
formContent.value.series = ''
formContent.value.devKey = ''
}
if (valid) {
formContent.value.createDate = dayjs(formContent.value.createDate).format('YYYY-MM-DD');
formContent.value.name = formContent.value.createId
if (formContent.value.arrivedDate)
{
formContent.value.arrivedDate = dayjs(formContent.value.arrivedDate).format('YYYY-MM-DD');
@@ -365,6 +367,7 @@ const rules = computed(() => {
ElMessage.success({ message: `${dialogTitle.value}成功!` })
}
close()
// 刷新表格
await props.refreshTable!()
@@ -449,6 +452,15 @@ const handleDevTypeChange = (value: string) => {
}
const handleInput = (value: string) => {
// 在这里处理选中事件的逻辑
formContent.value.name = value
}
// 对外映射
defineExpose({ open })
const props = defineProps<{

View File

@@ -39,10 +39,11 @@ import { type ProTableInstance, type ColumnProps } from '@/components/ProTable/i
import DevicePopup from '@/views/machine/device/components/devicePopup.vue'
import { CirclePlus, Delete, EditPen, Download, Upload } from '@element-plus/icons-vue'
import { useDictStore } from '@/stores/modules/dict'
import { getPqDevList, deletePqDev, exportPqDev, downloadTemplate, importPqDev } from '@/api/device/device/index.ts'
import { getPqDevList, deletePqDev, exportPqDev, downloadTemplate, importPqDev,getPqDev } from '@/api/device/device/index.ts'
import { ElMessageBox } from 'element-plus'
import { computed, reactive, ref } from 'vue'
import { computed, onBeforeMount, onMounted, reactive, ref } from 'vue'
import { useModeStore , useAppSceneStore} from '@/stores/modules/mode'; // 引入模式 store
import { forEach } from 'lodash'
const modeStore = useModeStore();
const dictStore = useDictStore()
@@ -53,7 +54,17 @@ const devicePopup = ref()
const ConditionsIsShow = ref(false)
const boundPqDevList=ref<Device.ReqPqDevParams[]>([])//根据检测计划id查询出所有已绑定的设备
// 存储设备类型选项
const devTypeOptions = ref<{
id: string;
name: string ,
icd:string ,
power:string,
devVolt:number,
devCurr:number,
devChns:number,
}[]>([])
const getTableList = async (params: any) => {
let newParams = JSON.parse(JSON.stringify(params))
newParams.searchEndTime = endDate.value
@@ -75,15 +86,17 @@ const columns = reactive<ColumnProps<Device.ResPqDev>[]>([
...(appSceneStore.currentScene != '1' ? {
search: { el: 'input' },
} : {}),
minWidth: 200,
},
{
prop: 'devType',
label: '设备类型',
minWidth: 200,
enum: dictStore.getDictData('Dev_Type'),
fieldNames: { label: 'name', value: 'id' },
render: (scope) => {
// 查找设备类型名称
const name = devTypeOptions.value.find(option => option.id === scope.row.devType);
return <span>{name?.name}</span>
},
},
{
prop: 'createDate',
@@ -194,6 +207,17 @@ const importFile = async () => {
deviceImportExcel.value?.acceptParams(params)
}
onBeforeMount(async () => {
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
}))
})
</script>