深海科学与工程研究所安全巡检系统
祖安之光
2025-09-15 9fe04f4d9567a4de97f5f25d36557ab70b833782
src/views/components/formDialog.vue
@@ -97,6 +97,22 @@
            />
          </el-select>
          <!-- 级联选择组件 -->
          <el-cascader
              v-else-if="item.type === 'cascader'"
              v-model="state.formData[item.prop]"
              :options="getCascaderOptions(item)"
              :props="item.props || {}"
              :placeholder="item.placeholder || '请选择'"
              :disabled="state.title === '查看' || item.disabled"
              :clearable="item.clearable !== false"
              :filterable="item.filterable"
              :show-all-levels="item.showAllLevels !== false"
              :style="item.style || 'width: 100%'"
              @change="item.changeEvent ? handleEvent(item.changeEvent, state.formData[item.prop]) : null"
          />
          <!-- 日期选择器组件 -->
          <el-date-picker
              v-else-if="item.type === 'date'"
@@ -279,6 +295,27 @@
  return []
}
const getCascaderOptions = (item) => {
  if (!item.options) return []
  // 如果是函数,执行函数获取选项
  if (typeof item.options === 'function') {
    return item.options()
  }
  // 如果是数组,直接返回
  if (Array.isArray(item.options)) {
    return item.options
  }
  // 如果是响应式引用
  if (item.options && typeof item.options === 'object' && 'value' in item.options) {
    return item.options.value
  }
  return []
}
// 文件上传前的校验
const beforeUpload = (rawFile, item) => {
  const maxSize = item.maxSize || 5
@@ -341,7 +378,7 @@
      if (userItem) {
        userItem.options = () => userList.map(user => ({
          value: user.userId,
          label: user.userName
          label: user.nickName
        }))
        state.formData.reformUserId = null
        await nextTick()