houzhongjian
2024-11-27 9e876a11f6f0b384d4b1f0a60e066944dbcdeaa5
src/views/data/plan/item/ItemForm.vue
@@ -22,14 +22,14 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="计划分类" prop="itemCategory">
            <el-select v-model="formData.itemCategory" clearable placeholder="请选择计划分类">
              <el-option
                v-for="item in dataCategoryList"
                :key="item.id"
                :label="item.label"
                :value="item.id + ''"
              />
            </el-select>
            <el-tree-select
              v-model="formData.itemCategory"
              :data="categoryTree"
              :default-expanded-keys="[0]"
              :props="defaultProps"
              check-strictly
              node-key="id"
            />
          </el-form-item>
        </el-col>
        <el-col :span="12">
@@ -46,9 +46,11 @@
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="6">
        <el-col :span="12">
          <el-form-item label="数据集" prop="dataSet">
            <el-select v-model="formData.dataSet" clearable placeholder="请选择数据集" @change="handleDataSetChange($event)">
            <el-select v-model="formData.dataSet" clearable placeholder="请选择数据集"
                       filterable
                       @change="handleDataSetChange($event)">
              <el-option
                v-for="item in dataSetList"
                :key="item.id"
@@ -73,13 +75,15 @@
<script lang="ts" setup>
import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from '@/utils/dict'
import * as ItemApi from '@/api/data/plan/item'
import { CommonStatusEnum } from '@/utils/constants'
import {CommonStatusEnum} from '@/utils/constants'
import * as DataSetApi from "@/api/data/plan/data";
import * as CategoryApi from "@/api/data/plan/category";
import {defaultProps} from "@/api/data/plan/category";
import {handleTree} from "@/utils/tree";
defineOptions({ name: 'PlanItemForm' })
defineOptions({name: 'PlanItemForm'})
const { t } = useI18n() // 国际化
const {t} = useI18n() // 国际化
const message = useMessage() // 消息弹窗
const dialogVisible = ref(false) // 弹窗的是否展示
@@ -97,13 +101,21 @@
  status: undefined,
})
const formRules = reactive({
  itemName: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
  itemCategory: [{ required: true, message: '分类不能为空', trigger: 'blur' }],
  dataSet: [{ required: true, message: '数据集不能为空', trigger: 'change' }]
  itemName: [{required: true, message: '名称不能为空', trigger: 'blur'}],
  itemCategory: [{required: true, message: '分类不能为空', trigger: 'blur'}],
  dataSet: [{required: true, message: '数据集不能为空', trigger: 'change'}]
})
const formRef = ref() // 表单 Ref
const dataSetList = ref([] as DataSetApi.DataSetVO[])
const dataCategoryList = ref([])
const categoryTree = ref<Tree[]>([])
const getCategoryTree = async () => {
  categoryTree.value = []
  const res = await CategoryApi.getCategoryListAllSimple()
  let category: Tree = {id: 0, label: '主类目', children: []}
  category.children = handleTree(res, 'id', 'pid')
  categoryTree.value.push(category)
}
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
@@ -113,8 +125,8 @@
  resetForm()
  // 加载数据源列表
  dataSetList.value = await DataSetApi.getDataSetList()
  dataCategoryList.value = await CategoryApi.getCategoryListAllSimple()
  // 加载类别
  await getCategoryTree()
  // 修改时,设置数据
  if (id) {
    formLoading.value = true
@@ -125,7 +137,7 @@
    }
  }
}
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
defineExpose({open}) // 提供 open 方法,用于打开弹窗
/** 提交表单 */
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调