houzhongjian
2024-11-27 9e876a11f6f0b384d4b1f0a60e066944dbcdeaa5
提交 | 用户 | 时间
f87d4e 1 <template>
2   <ContentWrap>
3     <el-form
4       class="-mb-15px"
5       :model="queryParams"
6       ref="queryFormRef"
7       :inline="true"
8       label-width="68px"
9     >
10       <el-form-item label="字典名称" prop="dataSetId">
11         <el-select v-model="queryParams.dataSetId" class="!w-240px">
12           <el-option
13             v-for="item in dictSetList"
14             :key="item.id"
15             :label="item.name"
16             :value="item.id"
17           />
18         </el-select>
19       </el-form-item>
20       <el-form-item>
21         <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
22         <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
23         <el-button
24           type="primary"
25           plain
26           @click="openForm('create')"
27           v-hasPermi="['data:ind-data-set:create']"
28         >
29           <Icon icon="ep:plus" class="mr-5px" /> 新增
30         </el-button>
31       </el-form-item>
32     </el-form>
33   </ContentWrap>
34
35   <!-- 列表 -->
36   <ContentWrap>
37     <el-table v-loading="loading" :data="list">
38       <el-table-column label="英文名" header-align="center" align="left" prop="fieldCode" />
39       <el-table-column label="中文名" header-align="center" align="left" prop="fieldName" />
40       <el-table-column label="数据类型" align="center" prop="fieldType">
41         <template #default="scope">
42           <dict-tag :type="DICT_TYPE.DATA_FIELD_TYPE" :value="scope.row.fieldType" />
43         </template>
44       </el-table-column>
45       <el-table-column label="排序" align="center" prop="sort" />
46       <el-table-column label="操作" align="center">
47         <template #default="scope">
48           <el-button
49             link
50             type="primary"
51             @click="openForm('update', scope.row.id)"
52             v-hasPermi="['data:ind-data-set:update']"
53           >
54             修改
55           </el-button>
56           <el-button
57             link
58             type="danger"
59             @click="handleDelete(scope.row.id)"
60             v-hasPermi="['data:ind-data-set:delete']"
61           >
62             删除
63           </el-button>
64         </template>
65       </el-table-column>
66     </el-table>
67     <!-- 分页 -->
68     <Pagination
69       :total="total"
70       v-model:page="queryParams.pageNo"
71       v-model:limit="queryParams.pageSize"
72       @pagination="getList"
73     />
74   </ContentWrap>
75
76   <!-- 表单弹窗:添加/修改 -->
77   <DataSetFieldForm ref="formRef" @success="getList" />
78 </template>
79 <script lang="ts" setup>
80 import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
81 import { dateFormatter } from '@/utils/formatTime'
82 import download from '@/utils/download'
83 import * as DataSetApi from '@/api/data/ind/data/data.set'
84 import * as DataSetFieldApi from '@/api/data/ind/data/data.field'
85 import DataSetFieldForm from './DataSetFieldForm.vue'
86
87 defineOptions({ name: 'IndDataSetField' })
88
89 const message = useMessage() // 消息弹窗
90 const { t } = useI18n() // 国际化
91 const route = useRoute() // 路由
92
93 const loading = ref(true) // 列表的加载中
94 const total = ref(0) // 列表的总页数
95 const list = ref([]) // 列表的数据
96 const queryParams = reactive({
97   pageNo: 1,
98   pageSize: 10,
99   label: '',
100   dataSetId: route.params.dataSetId
101 })
102 const queryFormRef = ref() // 搜索的表单
103 const exportLoading = ref(false) // 导出的加载中
104 const dictSetList = ref<DataSetApi.DataSetVO[]>() // 字典类型的列表
105
106 /** 查询列表 */
107 const getList = async () => {
108   loading.value = true
109   try {
110     const data = await DataSetFieldApi.getDataSetFieldPage(queryParams)
111     list.value = data.list
112     total.value = data.total
113   } finally {
114     loading.value = false
115   }
116 }
117
118 /** 搜索按钮操作 */
119 const handleQuery = () => {
120   queryParams.pageNo = 1
121   getList()
122 }
123
124 /** 重置按钮操作 */
125 const resetQuery = () => {
126   queryFormRef.value.resetFields()
127   handleQuery()
128 }
129
130 /** 添加/修改操作 */
131 const formRef = ref()
132 const openForm = (type: string, id?: number) => {
133   formRef.value.open(type, id, queryParams.dataSetId)
134 }
135
136 /** 删除按钮操作 */
137 const handleDelete = async (id: number) => {
138   try {
139     // 删除的二次确认
140     await message.delConfirm()
141     // 发起删除
142     await DataSetFieldApi.deleteDataSetField(id)
143     message.success(t('common.delSuccess'))
144     // 刷新列表
145     await getList()
146   } catch {}
147 }
148
149 /** 初始化 **/
150 onMounted(async () => {
151   await getList()
152   // 查询字典(精简)列表
153   dictSetList.value = await DataSetApi.getDataSetList()
154 })
155 </script>