黄伟杰 1 month ago
commit 6da4bae9c3

@ -2,6 +2,9 @@ server {
listen 8088;
server_name localhost;
# 关键允许上传最大100MB
client_max_body_size 100m;
location /admin-api/ {
proxy_pass http://besure_server:48081;
proxy_set_header Host $host;

@ -151,6 +151,10 @@ export const DeviceApi = {
getDeviceAttributePage: async (params) => {
return await request.get({ url: `/iot/device/device-attribute/page`, params })
},
// 获得设备属性列表
getDeviceAttributeList: async (deviceId: number) => {
return await request.get({ url: `/iot/device/device-attribute/list?deviceId=` + deviceId })
},
getDeviceContactModelPage: async () => {
return await request.get({ url: `/iot/device-contact-model/page` })

@ -178,7 +178,6 @@ export const RecipeConfigApi = {
getRecipePointDetailPage: async (params: any) => {
return await request.get({ url: `/iot/recipe-device-attribute/page`, params })
},
updateRecipeDeviceAttribute: async (data: { recipeId: string | number; ids: number[] }) => {
return await request.put({ url: `/iot/recipe-device-attribute/update`, data })
},

@ -23,6 +23,10 @@ export const DvSubjectApi = {
return await request.get({ url: `/mes/mold-subject/page`, params })
},
getMoldSubjectAllList: async () => {
return await request.get({ url: `/mes/mold-subject/getAllList` })
},
// 查询维保项目详情
getDvSubject: async (id: number) => {
return await request.get({ url: `/mes/mold-subject/get?id=` + id })

@ -1104,6 +1104,7 @@ export default {
operate: 'Operate',
index: 'No.',
deviceList: 'Device List',
moldList: 'Mold List',
dateRange: 'Date Range',
operableUsers: 'Operable Users',
createWorkOrder: 'Create Work Order',
@ -1111,6 +1112,7 @@ export default {
placeholderTaskType: 'Please select type',
placeholderProjectForm: 'Please select project form',
placeholderDeviceList: 'Please select device list',
placeholderMoldList: 'Please select mold list',
placeholderStartDate: 'Please select start date',
placeholderEndDate: 'Please select end date',
placeholderDateRange: 'Please select date range',

@ -1098,6 +1098,7 @@ export default {
operate: '操作',
index: '序号',
deviceList: '设备列表',
moldList: '模具列表',
dateRange: '起止日期',
operableUsers: '可操作人',
createWorkOrder: '新增工单管理',
@ -1105,6 +1106,7 @@ export default {
placeholderTaskType: '请选择类型',
placeholderProjectForm: '请选择项目表单',
placeholderDeviceList: '请选择设备列表',
placeholderMoldList: '请选择模具列表',
placeholderStartDate: '请选择开始日期',
placeholderEndDate: '请选择结束日期',
placeholderDateRange: '请选择起止日期',

@ -10,16 +10,15 @@
>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item :label="t('SparePartsManagement.SpareInfo.name')" prop="name">
<el-input v-model="formData.name" :placeholder="t('SparePartsManagement.SpareInfo.placeholderName')" />
<el-form-item :label="t('SparePartsManagement.SpareInfo.code')" prop="barCode">
<el-input v-model="formData.barCode" :placeholder="t('SparePartsManagement.SpareInfo.placeholderCode')" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="t('SparePartsManagement.SpareInfo.code')" prop="barCode">
<el-input v-model="formData.barCode" :placeholder="t('SparePartsManagement.SpareInfo.placeholderCode')" />
<el-form-item :label="t('SparePartsManagement.SpareInfo.name')" prop="name">
<el-input v-model="formData.name" :placeholder="t('SparePartsManagement.SpareInfo.placeholderName')" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="t('SparePartsManagement.SpareInfo.unit')" prop="unitId">
<el-select v-model="formData.unitId" clearable :placeholder="t('SparePartsManagement.SpareInfo.placeholderUnit')" class="w-1/1">
@ -32,25 +31,12 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="t('SparePartsManagement.SpareInfo.status')" prop="status">
<el-radio-group v-model="formData.status">
<el-radio
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
:key="dict.value"
:label="dict.value"
>
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="t('SparePartsManagement.SpareInfo.standard')" prop="standard">
<el-input v-model="formData.standard" :placeholder="t('SparePartsManagement.SpareInfo.placeholderStandard')" />
</el-form-item>
</el-col>
<el-col :span="12">
<!-- <el-col :span="12">
<el-form-item :label="t('SparePartsManagement.SpareInfo.expiryDay')" prop="expiryDay">
<el-input-number
v-model="formData.expiryDay"
@ -60,7 +46,7 @@
class="!w-1/1"
/>
</el-form-item>
</el-col>
</el-col> -->
<!-- <el-col :span="12">
<el-form-item label="采购价格" prop="purchasePrice">
<el-input-number
@ -83,6 +69,19 @@
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="t('SparePartsManagement.SpareInfo.status')" prop="status">
<el-radio-group v-model="formData.status">
<el-radio
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
:key="dict.value"
:label="dict.value"
>
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="t('SparePartsManagement.SpareInfo.remark')" prop="remark">
<el-input type="textarea" v-model="formData.remark" :placeholder="t('SparePartsManagement.SpareInfo.placeholderRemark')"/>

@ -207,7 +207,7 @@ const resetQuery = () => {
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
if (!queryParams.brand) {
if (type == 'create' && !queryParams.brand) {
message.error('请选择一个模具型号')
return
}

@ -68,7 +68,7 @@
@selection-change="handleSelectionChange"
@row-click="handleRowClick"
>
<el-table-column type="selection" width="55" reserve-selection />
<!-- <el-table-column type="selection" width="55" reserve-selection /> -->
<el-table-column
:label="t('RecipeManagement.RecipeConfig.tableRecipeCodeColumn')"
align="center"
@ -146,6 +146,7 @@ ref="detailRef" :visible="detailVisible"
v-model="dialogForm.recipeCode"
:placeholder="t('RecipeManagement.RecipeConfig.dialogRecipeCodePlaceholder')"
clearable
:disabled="dialogMode == 'update'"
/>
</el-form-item>
<el-form-item :label="t('RecipeManagement.RecipeConfig.dialogNameLabel')" prop="name">
@ -187,6 +188,7 @@ ref="detailRef" :visible="detailVisible"
filterable
class="!w-full"
:loading="deviceLoading"
:disabled="dialogMode == 'update'"
>
<el-option v-for="item in deviceOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
@ -660,7 +662,7 @@ const buildTransferLabel = (item: any) => {
}
const loadConfigCandidatesByDevice = async (deviceId: number) => {
const data = await DeviceApi.getDeviceAttributePage({ pageNo: 1, pageSize: 100, deviceId })
const data = await DeviceApi.getDeviceAttributeList(deviceId)
const list = (data?.list ?? data?.data ?? []) as any[]
const deviceItems = (list ?? [])
.map((item: any) => {

@ -99,12 +99,12 @@
<span>{{ scope.row.recipeName ?? '-' }}</span>
</template>
</el-table-column>
<el-table-column
<!-- <el-table-column
:label="t('RecipeManagement.RecipeLibrary.tableCreatorColumn')"
align="center"
prop="creator"
width="120"
/>
/> -->
<el-table-column
:label="t('RecipeManagement.RecipeLibrary.tableCreateTimeColumn')"
align="center"
@ -166,6 +166,7 @@
v-model="dialogForm.code"
:placeholder="t('RecipeManagement.RecipeLibrary.dialogCodePlaceholder')"
clearable
:disabled="dialogType == 'update'"
/>
</el-form-item>
<el-form-item :label="t('RecipeManagement.RecipeLibrary.dialogNameLabel')" prop="name">
@ -182,11 +183,12 @@
clearable
filterable
class="!w-full"
:disabled="dialogType == 'update'"
>
<el-option v-for="opt in recipeOptions" :key="String(opt.value)" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
<el-form-item :label="t('RecipeManagement.RecipeLibrary.dialogSourceLabel')" prop="source">
<!-- <el-form-item :label="t('RecipeManagement.RecipeLibrary.dialogSourceLabel')" prop="source">
<el-select
v-model="dialogForm.source"
:placeholder="t('RecipeManagement.RecipeLibrary.dialogSourcePlaceholder')"
@ -200,7 +202,7 @@
:value="opt.value"
/>
</el-select>
</el-form-item>
</el-form-item> -->
</el-form>
<template #footer>
<el-button @click="dialogVisible = false">

@ -62,13 +62,14 @@
</el-select>
</el-form-item>
<el-form-item :label="t('DataCollection.Device.ratio')" prop="ratio">
<el-input
<el-input-number
v-model="formData.ratio"
:placeholder="t('DataCollection.Device.placeholderRatio')"
:min="0.00"
:decision="2"
:step="0.01"
class="!w-full"
:disabled = "!ratioEnabled"
/>
</el-form-item>
<el-form-item :label="t('DataCollection.Device.remark')" prop="remark">
@ -123,7 +124,7 @@ const formData = ref({
dataType: undefined as string | undefined,
address: undefined as string | undefined,
dataUnit: undefined as string | undefined,
ratio: undefined as string | undefined,
ratio: undefined as number | undefined,
remark: undefined as string | undefined,
deviceId: undefined as number | undefined
})

@ -5,7 +5,7 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="120px"
label-width="68px"
>
<el-form-item :label="t('DataCollection.Device.attributeCode')" prop="attributeCode">
<el-input

@ -1,7 +1,7 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
<el-form-item :label="t('DataCollection.Device.deviceCode')" prop="deviceCode">
<el-input
v-model="queryParams.deviceCode"

@ -63,7 +63,8 @@
:min="0.00"
:decision="2"
:step="0.01"
class="!w-full"/>
class="!w-full"
:disabled = "!ratioEnabled"/>
</el-form-item>
<el-form-item :label="t('DataCollection.DeviceModel.remark')" prop="remark">
<el-input
@ -130,6 +131,57 @@ const formRules = reactive({
const formRef = ref() // Ref
const unitList = ref<ProductUnitVO[]>([]) //
const ratioEnabledTypes = new Set([
'uint8',
'uint16',
'uint32',
'uint64',
'int8',
'int16',
'int32',
'float32',
'float64'
])
const ratioEnabled = computed(() => {
const v = formData.value.dataType
if (!v) return false
return ratioEnabledTypes.has(v)
})
const buildSubmitData = () => {
const {
id,
attributeCode,
attributeName,
attributeType,
typeName,
dataType,
address,
dataUnit,
ratio,
remark,
deviceModelId
} = formData.value
const data: any = {
attributeCode,
attributeName,
attributeType,
typeName,
dataType,
address,
dataUnit,
ratio: ratioEnabled.value ? ratio : undefined,
remark,
deviceModelId
}
if (formType.value === 'update') {
data.id = id
}
return data
}
/** 打开弹窗 */
const open = async (type: string, id: number, modelId: number) => {
dialogVisible.value = true
@ -174,7 +226,7 @@ const submitForm = async () => {
//
formLoading.value = true
try {
const data = formData.value
const data = buildSubmitData()
if (formType.value === 'create') {
await DeviceModelAttributeApi.createDeviceModelAttribute(data)
message.success(t('common.createSuccess'))

@ -5,7 +5,6 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="auto"
>
<el-form-item :label="t('DataCollection.RunReport.searchDeviceCodeLabel')" prop="deviceCode">
<el-input
@ -193,6 +192,6 @@ onMounted(() => {
<style scoped lang="scss">
.run-report-form :deep(.el-form-item__label) {
min-width: 120px;
min-width: 100px;
}
</style>

@ -72,7 +72,7 @@ const formType = ref<'create' | 'update'>('create')
const subjectOptions = ref<DvSubjectVO[]>([])
const ensureSubjectOptionsLoaded = async () => {
if (subjectOptions.value.length) return
const res = await DvSubjectApi.getDvSubjectPage({})
const res = await DvSubjectApi.getMoldSubjectAllList()
const list = Array.isArray(res) ? res : res?.list
subjectOptions.value = (list ?? []) as DvSubjectVO[]
}

@ -1,6 +1,6 @@
<template>
<ContentWrap>
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="110px">
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
<el-form-item :label="t('MoldManagement.MoldInspectionPlan.planName')" prop="planName">
<el-input
v-model="queryParams.planName"

@ -10,13 +10,13 @@
<el-radio :label="2">{{ t('EquipmentManagement.TaskManagement.taskTypeMaintain') }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="t('EquipmentManagement.TaskManagement.deviceList')" prop="moldList">
<el-form-item :label="t('EquipmentManagement.TaskManagement.moldList')" prop="moldList">
<el-select
v-model="formData.moldList"
multiple
filterable
clearable
:placeholder="t('EquipmentManagement.TaskManagement.placeholderDeviceList')"
:placeholder="t('EquipmentManagement.TaskManagement.placeholderMoldList')"
class="!w-full"
>
<el-option v-for="item in deviceOptions" :key="String(item.id)" :label="item.name" :value="String(item.id)" />
@ -124,11 +124,11 @@ const toCommaSeparatedIds = (value: any): string | undefined => {
const ensureOptionsLoaded = async () => {
const [deviceRes, planRes, userRes] = await Promise.all([
MoldBrandApi.getMoldPage({}),
MoldBrandApi.getMoldAllList(),
PlanMaintenanceApi.getPlanMaintenancePage({}),
getSimpleUserList()
])
deviceOptions.value = (deviceRes?.list ?? []) as DeviceOption[]
deviceOptions.value = (deviceRes ?? []) as DeviceOption[]
planOptions.value = (planRes?.list ?? []) as PlanOption[]
users.value = userRes ?? []
}

@ -5,7 +5,7 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="110px"
label-width="68px"
>
<el-form-item :label="t('EquipmentManagement.TaskManagement.name')" prop="name">
<el-input
@ -67,7 +67,7 @@
:show-overflow-tooltip="true"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" />
<!-- <el-table-column type="selection" width="55" /> -->
<el-table-column :label="t('EquipmentManagement.TaskManagement.index')" type="index" align="center" width="70" />
<el-table-column :label="t('EquipmentManagement.TaskManagement.name')" align="center" prop="name" min-width="140" />
<el-table-column :label="t('EquipmentManagement.TaskManagement.taskType')" align="center" prop="taskType" width="90">

Loading…
Cancel
Save