修改测试问题

This commit is contained in:
guanj
2026-06-16 08:34:45 +08:00
parent 1c01fe5ae1
commit d9dfd804c5
63 changed files with 5289 additions and 3842 deletions

View File

@@ -22,13 +22,13 @@
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="治理类型" class="top">
<el-form-item label="治理类型" class="top">
<el-select v-model.trim="form.governType" filterable placeholder="请选择治理类型" clearable>
<el-option label="暂态" value="event"></el-option>
<el-option label="稳态" value="harmonic"></el-option>
</el-select>
</el-form-item>
<el-form-item label="敏感用户"class="top">
<el-form-item label="敏感用户" class="top">
<div style="display: flex;">
<el-select v-model.trim="form.monitorUser" style="width: 230px;" filterable placeholder="请选择敏感用户"
clearable>
@@ -38,7 +38,7 @@
<el-button type="primary" icon="el-icon-Plus" class="ml10" @click="addMonitorUser" />
</div>
</el-form-item>
<el-form-item label="治理方法" class="top">
<el-form-item label="治理方法" class="top">
<el-input maxlength="32" show-word-limit v-model="form.governMethod" autocomplete="off" clearable
placeholder="例: 250A APF 或 100kVar SVG"></el-input>
</el-form-item>
@@ -48,9 +48,12 @@
<el-option label="CLD" value="CLD"></el-option>
</el-select>
</el-form-item>
<el-form-item label="关联项目" class="top">
<el-cascader v-model.trim="form.association" filterable :options="engineeringList"
:props="cascaderProps" clearable placeholder="请选择关联项目" />
<el-form-item label="关联项目" class="top" prop="association" :required="isMonitorDeviceType">
<div style="display: flex;">
<el-cascader v-model.trim="form.association" filterable :options="engineeringList"
:props="cascaderProps" clearable placeholder="请选择关联项目" />
<el-button type="primary" icon="el-icon-Plus" class="ml10" @click="addProject" />
</div>
</el-form-item>
<el-form-item label="排序" class="top" prop="sort">
<el-input-number v-model.trim="form.sort" style="width: 100%;" :min="0" />
@@ -105,9 +108,40 @@ const rules = reactive({
devModel: [{ required: true, message: '请选择设备型号', trigger: 'change' }],
devAccessMethod: [{ required: true, message: '请输入接入方式', trigger: 'blur' }],
cntractNo: [{ required: true, message: '请输入合同号', trigger: 'blur' }],
sort: [{ required: true, message: '请输入排序', trigger: 'blur' }]
sort: [{ required: true, message: '请输入排序', trigger: 'blur' }],
association: [{
validator: (_rule: any, value: any, callback: (error?: Error) => void) => {
if (isMonitorDevType(form.devType)) {
if (!Array.isArray(value) || value.length < 2 || !value[0] || !value[1]) {
callback(new Error('请选择关联项目'))
return
}
}
callback()
},
trigger: 'change'
}]
})
const getDevTypeOptions = () => {
if (form.devAccessMethod === 'CLD') {
return Array.isArray(props.devTypeOptions2)
? props.devTypeOptions2
: props.devTypeOptions2
? [props.devTypeOptions2]
: []
}
return props.devTypeOptions
}
const isMonitorDevType = (devType: unknown) => {
if (!devType) return false
const selected = getDevTypeOptions().find((item: any) => (item.value || item.id) == devType)
return selected?.name === '监测设备' || selected?.label === '监测设备' || selected?.code === 'DEV_CLD'
}
const isMonitorDeviceType = computed(() => isMonitorDevType(form.devType))
function getDefaultForm() {
return {
cntractNo: '',
@@ -170,6 +204,12 @@ const formDevTypeOptions = computed(() => {
const formDevTypeChange = (e: any) => {
if (!e) return
form.devModel = ''
nextTick(() => {
ruleFormRef.value?.clearValidate('association')
if (isMonitorDevType(e)) {
ruleFormRef.value?.validateField('association')
}
})
}
const openAdd = () => {
@@ -219,6 +259,12 @@ const addMonitorUser = () => {
name: 'govern/sensitiveLoadMange/index',
})
}
const addProject = () => {
sessionStorage.setItem('factoryNeedRefreshEngineeringList', '1')
router.push({
name: 'govern/manage/engineering',
})
}
const onSubmit = () => {
ruleFormRef.value.validate((valid: boolean) => {
if (!valid) return

View File

@@ -1,5 +1,5 @@
<template>
<div class="default-main" v-loading="loading">
<div v-loading="loading">
<TableHeader>
<template v-slot:select>
<el-form-item label="关键字筛选">
@@ -214,6 +214,7 @@ const tableStore = new TableStore({
url: '/cs-device-boot/EquipmentDelivery/list',
method: 'POST',
isWebPaging: true,
publicHeight: 60,
column: [
{
width: '60',
@@ -837,20 +838,8 @@ const getUserList = () => {
})
}
// 页面被 keep-alive 缓存后,从敏感用户页返回时刷新下拉列表
onActivated(() => {
if (sessionStorage.getItem('factoryNeedRefreshUserList')) {
sessionStorage.removeItem('factoryNeedRefreshUserList')
getUserList()
}
})
provide('tableStore', tableStore)
onMounted(() => {
getUserList()
queryTheDictionary()
engineeringProject().then(res => {
const getEngineeringList = () => {
return engineeringProject().then(res => {
engineeringList.value = res.data.filter(item => {
item.projectName = item.engineeringName
item.projectId = item.engineeringId
@@ -858,6 +847,27 @@ onMounted(() => {
return item
})
})
}
// 页面被 keep-alive 缓存后,从敏感用户/工程页返回时刷新下拉列表
onActivated(() => {
// if (sessionStorage.getItem('factoryNeedRefreshUserList')) {
// sessionStorage.removeItem('factoryNeedRefreshUserList')
getUserList()
// }
// if (sessionStorage.getItem('factoryNeedRefreshEngineeringList')) {
// sessionStorage.removeItem('factoryNeedRefreshEngineeringList')
getEngineeringList()
// }
})
provide('tableStore', tableStore)
onMounted(() => {
queryTheDictionary()
// getUserList()
// getEngineeringList()
setTimeout(() => { }, 100)
})

View File

@@ -30,6 +30,7 @@ import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue'
import { queryByCode, queryByid, queryCsDictTree } from '@/api/system-boot/dictTree'
import { buildExportBaseName } from '@/utils/echartMethod'
defineOptions({
name: 'manage/monthly'
})
@@ -180,7 +181,7 @@ tableStore.table.params.name = ''
const tableRef = ref()
const exportTab = () => {
tableRef.value.getRef()?.exportData({
filename: '半月报功能', // 文件名字
filename: buildExportBaseName({ feature: '半月报功能' }), // 文件名字
sheetName: 'Sheet1',
type: 'xlsx', //导出文件类型 xlsx 和 csv
useStyle: true,