沈丘营商办后台前端项目
346149741
2024-06-18 9fb6a0ff49c2af567be2e3adaf93c4c301b3f102
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<template>
  <div class="app-container">
    <el-row>
      <el-col :span="10">
        <el-tree :expand-on-click-node="false" :props="defaultProps" lazy :load="loadNode" @node-click="handleNodeClick" />
      </el-col>
      <el-col :span="12" v-if="formData.isOpenFormData">
        <el-form ref="formRef" :model="data" :rules="formData.rules">
          <el-form-item label="区划编号">
            <el-input v-model="data.code"></el-input>
          </el-form-item>
          <el-form-item label="区划名称">
            <el-input v-model="data.name"></el-input>
          </el-form-item>
          <el-form-item label="区划等级">
            <el-radio-group v-model="data.regionLevel">
              <el-radio :label="dict.value" v-for="dict in region_level" :key="dict.value">{{ dict.label }}</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="区划排序">
            <el-input-number v-model="data.sort" :min="0" :max="100" :step="1"></el-input-number>
          </el-form-item>
          <el-form-item label="备注">
            <el-input v-model="data.remark" placeholder="备注" style="width: 300px" />
          </el-form-item>
        </el-form>
      </el-col>
    </el-row>
  </div>
</template>
<script setup lang="ts">
import { getRegionThreeList, getRegionInfo, saveRegion, updateRegion, deleteRegion } from "@/api/system/region";
import { sysRegionDTO, TypesysRegionDTO } from "@/types/DTO/sysRegionDTO";
import type Node from "element-plus/es/components/tree/src/model/node";
import { TypeThreeDTO } from "@/types/commons/three";
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { region_level } = proxy.useDict("region_level");
//#region 树形查询 /配置
 
const queryParams = reactive({
  //查询配置参数
  id: "",
  parentId: "",
  title: "",
});
 
const defaultProps = {
  children: "zones",
  label: "title",
  isLeaf: "hasChildren",
};
 
const loadNode = async (node: Node, resolve: (data: TypeThreeDTO[]) => void) => {
  if (node.level > 0) {
    queryParams.parentId = node.data.id;
  }
  let list = await getDataList();
  return resolve(list);
};
const getDataList = async () => {
  let list: TypeThreeDTO[] = [];
  await getRegionThreeList(queryParams).then((res) => {
    if (res.code == 200) {
      for (const el of res.data) {
        el.hasChildren = !el.hasChildren;
      }
      list = res.data;
    }
  });
  return list;
};
 
//#endregion
 
//#region 操作
 
/**
 * 树形数据点击事件/获取详情
 */
const handleNodeClick = async (e: Node) => {
  // console.log("e=========>", e);
  await getRegionInfo(e.id).then((res) => {
    if (res.code == 200) {
      res.data.regionLevel = res.data.regionLevel.toString();
      formData.data = res.data;
      formData.isOpenFormData = true;
    }
  });
};
 
//#endregion
 
//#region 新增/修改
 
const formData = reactive<Common.formDataType<TypesysRegionDTO>>({
  data: {} as TypesysRegionDTO,
  isOpenFormData: false, //是否显示新增对话框
  dialogTitle: "", //弹窗标题
  handleStatus: 0,
  formRef: null,
  rules: {
    docTitle: [{ required: true, message: "请填写文档标题", trigger: "change" }],
    docContent: [{ required: true, message: "请填写文档内容", trigger: "change" }],
    docType: [{ required: true, message: "请选择文档类型", trigger: "change" }],
  },
});
const { data, formRef } = toRefs(formData);
 
//#endregion
</script>
 
<style lang="scss"></style>